ysy 2 yıl önce
ebeveyn
işleme
0c155e23ed

+ 231 - 286
src/views/saleOrder/components/order-search.vue

@@ -1,11 +1,6 @@
 <!-- 搜索表单 -->
 <template>
-  <el-form
-    label-width="90px"
-    class="ele-form-search"
-    @keyup.enter.native="search"
-    @submit.native.prevent
-  >
+  <el-form label-width="90px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
     <el-row :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="销售订单号:">
@@ -34,67 +29,37 @@
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="订单来源:">
-          <DictSelection
-            dictName="订单来源"
-            clearable
-            v-model="where.orderSource"
-          >
+          <DictSelection dictName="订单来源" clearable v-model="where.orderSource">
           </DictSelection>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="客户名称:">
-          <el-input
-            v-model="where.customerName"
-            placeholder="请输入"
-          ></el-input>
+          <el-input v-model="where.customerName" placeholder="请输入"></el-input>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="订单类型:">
-          <DictSelection
-            dictName="订单类型"
-            clearable
-            v-model="where.orderType"
-          >
+          <DictSelection dictName="订单类型" clearable v-model="where.orderType">
           </DictSelection>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="生产状态:">
           <el-select v-model="where.proStu" placeholder="请选择" class="w100">
-            <el-option
-              v-if="activeName == 'first'"
-              v-for="item in awaitProcuct"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+            <el-option v-if="activeName == 'first'" v-for="item in awaitProcuct" :key="item.value" :label="item.label"
+              :value="item.value">
             </el-option>
-            <el-option
-              v-if="activeName == 'second'"
-              v-for="item in alreadyProcuct"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+            <el-option v-if="activeName == 'second'" v-for="item in alreadyProcuct" :key="item.value" :label="item.label"
+              :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="按单按库:">
-          <el-select
-            v-model="where.orderLibraryType"
-            placeholder="请选择"
-            class="w100"
-          >
-            <el-option
-              v-for="item in orderTypeList"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+          <el-select v-model="where.orderLibraryType" placeholder="请选择" class="w100">
+            <el-option v-for="item in orderTypeList" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
@@ -108,60 +73,31 @@
     <el-row :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
         <el-form-item label="交货日期:">
-          <el-date-picker
-            style="width: 100%"
-            v-model="time"
-            type="daterange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            :default-time="['00:00:00', '23:59:59']"
-          >
+          <el-date-picker style="width: 100%" v-model="time" type="daterange" range-separator="至" start-placeholder="开始日期"
+            end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss" :default-time="['00:00:00', '23:59:59']">
           </el-date-picker>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
         <div class="ele-form-actions">
-          <el-button
-            type="primary"
-            icon="el-icon-search"
-            class="ele-btn-icon"
-            @click="search"
-          >
+          <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
             查询
           </el-button>
-          <el-button @click="reset" icon="el-icon-refresh-left" type="primary"
-            >重置</el-button
-          >
+          <el-button @click="reset" icon="el-icon-refresh-left" type="primary">重置</el-button>
         </div>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
         <el-form-item label-width="0px">
           <div class="btn-wrapper">
             <el-button @click="goProduct">转生产计划</el-button>
-            <el-button type="primary" @click="orderRefresh" :loading="loading"
-              >订单刷新</el-button
-            >
+            <el-button type="primary" @click="orderRefresh" :loading="loading">订单刷新</el-button>
             <el-button type="success" @click="toCreate">创建订单</el-button>
-            <el-upload
-              class="avatar-uploader"
-              action="#"
-              :show-file-list="false"
-              :http-request="uploadFile"
-              :before-upload="beforeUpload"
-              :on-change="handleChange"
-              ref="uploadFile"
-            >
+            <el-upload class="avatar-uploader" action="#" :show-file-list="false" :http-request="uploadFile"
+              :before-upload="beforeUpload" :on-change="handleChange" ref="uploadFile">
               <el-button type="warning">批量导入</el-button>
             </el-upload>
             <el-button type="info">
-              <a
-                :href="fileUrl"
-                download="销售订单导入模板.xls"
-                class="button-link"
-                >下载模板</a
-              >
+              <a :href="fileUrl" download="销售订单导入模板.xls" class="button-link">下载模板</a>
             </el-button>
             <el-button type="danger" @click="batchDelete">批量删除</el-button>
           </div>
@@ -179,228 +115,237 @@
 </template>
 
 <script>
-  import ImportException from '../components/import-exception.vue';
-  import CreateOrder from '../components/create-order.vue';
-  import GroupOrder from '../components/group-order.vue';
-  import { importFile } from '@/api/saleOrder';
-  import fileUrl from '@/assets/file/销售订单导入模板.xls';
-  import { pullSalesOrder, deleteOrder } from '@/api/saleOrder';
-  export default {
-    props: {
-      selection: Array,
-      activeName: String
+import ImportException from '../components/import-exception.vue';
+import CreateOrder from '../components/create-order.vue';
+import GroupOrder from '../components/group-order.vue';
+import { importFile } from '@/api/saleOrder';
+import fileUrl from '@/assets/file/销售订单导入模板.xls';
+import { pullSalesOrder, deleteOrder } from '@/api/saleOrder';
+export default {
+  props: {
+    selection: Array,
+    activeName: String
+  },
+  components: {
+    ImportException,
+    CreateOrder,
+    GroupOrder
+  },
+  data() {
+    // 默认表单数据
+    const defaultWhere = {
+      code: '',
+      productCode: '',
+      customerName: '',
+      lineNumber: '',
+      model: '',
+      brandNo: '',
+      orderSource: 0,
+      orderType: 0,
+      proStu: '',
+      orderLibraryType: 0,
+      salesman: ''
+    };
+    return {
+      fileUrl,
+      // 表单数据
+      defaultWhere,
+      where: { ...defaultWhere },
+      time: [],
+      fileList: [],
+      awaitProcuct: [{ value: 1, label: '待排产' }],
+      alreadyProcuct: [
+        { value: 0, label: '所有状态' },
+        { value: 2, label: '待发布' },
+        { value: 3, label: '发布失败' },
+        { value: 4, label: '待生产' },
+        { value: 5, label: '生产中' },
+        { value: 6, label: '已完成' },
+        { value: 7, label: '已延期' }
+      ],
+      orderTypeList: [
+        { value: 0, label: '所有' },
+        { value: 1, label: '按单' },
+        { value: 2, label: '按库' }
+      ],
+      loading: false
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  watch: {
+    activeName: {
+      handler() {
+        if (this.activeName == 'first') {
+          this.where.proStu = 1;
+        } else {
+          this.where.proStu = 0;
+        }
+
+        this.reset();
+      },
+      immediate: true
+    }
+  },
+  created() { },
+  methods: {
+    /* 搜索 */
+    search() {
+      if (this.time.length) {
+        this.where.startTime = this.time[0];
+        this.where.endTime = this.time[1];
+      }
+      this.$emit('search', this.where);
     },
-    components: {
-      ImportException,
-      CreateOrder,
-      GroupOrder
+    /*  重置 */
+    reset() {
+      this.time = [];
+      this.where = { ...this.defaultWhere };
+      if (this.activeName == 'first') {
+        this.where.proStu = 1;
+      } else {
+        this.where.proStu = 0;
+      }
+      this.search();
     },
-    data() {
-      // 默认表单数据
-      const defaultWhere = {
-        code: '',
-        productCode: '',
-        customerName: '',
-        lineNumber: '',
-        model: '',
-        brandNo: '',
-        orderSource: 0,
-        orderType: 0,
-        proStu: '',
-        orderLibraryType: 0,
-        salesman: ''
-      };
-      return {
-        fileUrl,
-        // 表单数据
-        defaultWhere,
-        where: { ...defaultWhere },
-        time: [],
-        fileList: [],
-        awaitProcuct: [{ value: 1, label: '待排产' }],
-        alreadyProcuct: [
-          { value: 0, label: '所有状态' },
-          { value: 2, label: '待发布' },
-          { value: 3, label: '发布失败' },
-          { value: 4, label: '待生产' },
-          { value: 5, label: '生产中' },
-          { value: 6, label: '已完成' },
-          { value: 7, label: '已延期' }
-        ],
-        orderTypeList: [
-          { value: 0, label: '所有' },
-          { value: 1, label: '按单' },
-          { value: 2, label: '按库' }
-        ],
-        loading: false
-      };
+    toImport() {
+      this.$refs.importDialog.open();
     },
-    computed: {
-      // 是否开启响应式布局
-      styleResponsive() {
-        return this.$store.state.theme.styleResponsive;
-      }
+    toCreate() {
+      this.$refs.createDialog.open();
     },
-    watch: {
-      activeName: {
-        handler() {
-          if (this.activeName == 'first') {
-            this.where.proStu = 1;
-          } else {
-            this.where.proStu = 0;
-          }
-
-          this.reset();
-        },
-        immediate: true
-      }
+    toGroup() {
+      this.$refs.groupDialog.open();
     },
-    created() {},
-    methods: {
-      /* 搜索 */
-      search() {
-        if (this.time.length) {
-          this.where.startTime = this.time[0];
-          this.where.endTime = this.time[1];
+    goProduct() {
+      if (!this.selection.length) {
+        return this.$message.warning('请先勾选一个或多个订单!');
+      }
+      const productCode = this.selection[0].productCode;
+      const orderType = this.selection[0].orderType;
+      const produceRoutingId = this.selection[0].produceRoutingId
+
+      for (var i = 0; i < this.selection.length; i++) {
+        if (productCode != this.selection[i].productCode) {
+          return this.$message.warning('物料编码不一致!');
         }
-        this.$emit('search', this.where);
-      },
-      /*  重置 */
-      reset() {
-        this.time = [];
-        this.where = { ...this.defaultWhere };
-        if (this.activeName == 'first') {
-          this.where.proStu = 1;
-        } else {
-          this.where.proStu = 0;
+        if (orderType != this.selection[i].orderType) {
+          return this.$message.warning('订单类型不一致!');
         }
-        this.search();
-      },
-      toImport() {
-        this.$refs.importDialog.open();
-      },
-      toCreate() {
-        this.$refs.createDialog.open();
-      },
-      toGroup() {
-        this.$refs.groupDialog.open();
-      },
-      goProduct() {
-        if (!this.selection.length) {
-          return this.$message.warning('请先勾选一个或多个订单!');
+        if (produceRoutingId != this.selection[i].produceRoutingId) {
+          return this.$message.warning('工艺路线不一致!');
         }
-        const productCode = this.selection[0].productCode;
-        const orderType = this.selection[0].orderType;
-        for (var i = 0; i < this.selection.length; i++) {
-          if (productCode != this.selection[i].productCode) {
-            return this.$message.warning('物料编码不一致!');
-          }
-          if (orderType != this.selection[i].orderType) {
-            return this.$message.warning('订单类型不一致!');
-          }
+      }
+      const list = [];
+      this.selection.map((item) => {
+        list.push(item.id);
+      });
+      this.$router.push({
+        path: '/saleOrder/salesToProduction',
+        query: {
+          selection: JSON.stringify(list),
+          produceRoutingId: produceRoutingId,
+          produceRoutingName: this.selection[0].produceRoutingName
         }
-        const list = [];
-        this.selection.map((item) => {
-          list.push(item.id);
-        });
-        this.$router.push({
-          path: '/saleOrder/salesToProduction',
-          query: {
-            selection: JSON.stringify(list)
-          }
+      });
+    },
+
+    // 刷新订单
+    orderRefresh() {
+      this.loading = true;
+      pullSalesOrder()
+        .then((res) => {
+          this.$message.success('刷新成功!');
+          this.loading = false;
+        })
+        .catch(() => {
+          this.loading = false;
         });
-      },
+    },
 
-      // 刷新订单
-      orderRefresh() {
-        this.loading = true;
-        pullSalesOrder()
-          .then((res) => {
-            this.$message.success('刷新成功!');
-            this.loading = false;
-          })
-          .catch(() => {
-            this.loading = false;
+    // 点击批量删除
+    batchDelete() {
+      if (!this.selection.length) {
+        return this.$message.warning('请先勾选一个或多个订单!');
+      }
+      let ids = [];
+      this.selection.map((item) => {
+        ids.push(item.id);
+      });
+      this.$confirm('此操作将永久删除所选择的订单, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          deleteOrder(ids).then((res) => {
+            this.$message.success(res);
+            this.search();
           });
-      },
-
-      // 点击批量删除
-      batchDelete() {
-        if (!this.selection.length) {
-          return this.$message.warning('请先勾选一个或多个订单!');
-        }
-        let ids = [];
-        this.selection.map((item) => {
-          ids.push(item.id);
-        });
-        this.$confirm('此操作将永久删除所选择的订单, 是否继续?', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
         })
-          .then(() => {
-            deleteOrder(ids).then((res) => {
-              this.$message.success(res);
-              this.search();
-            });
-          })
-          .catch(() => {});
-      },
+        .catch(() => { });
+    },
 
-      handleChange(file, fileList) {
-        this.fileList = fileList;
-        console.log(fileList);
-      },
+    handleChange(file, fileList) {
+      this.fileList = fileList;
+      console.log(fileList);
+    },
 
-      //上传限制
-      beforeUpload(file) {
-        const isLt10M = file.size / 1024 / 1024 < 10;
-        if (!isLt10M) {
-          this.$message.error('上传文件大小不能超过 10MB!');
-        }
-        return isLt10M;
-      },
-      //文件上传
-      uploadFile(param) {
-        let fd = new FormData();
-        this.fileList.forEach((item) => {
-          fd.append('importExcel', item.raw);
-        });
-        importFile(fd)
-          .then((res) => {
-            this.$emit('search', this.where);
-            this.$refs.uploadFile.clearFiles();
-          })
-          .catch((data) => {
-            if (data.code != -1) {
-              this.$message.error(data.message);
-            }
-          })
-          .finally(() => {
-            this.$refs.uploadFile.clearFiles();
-          });
+    //上传限制
+    beforeUpload(file) {
+      const isLt10M = file.size / 1024 / 1024 < 10;
+      if (!isLt10M) {
+        this.$message.error('上传文件大小不能超过 10MB!');
       }
+      return isLt10M;
+    },
+    //文件上传
+    uploadFile(param) {
+      let fd = new FormData();
+      this.fileList.forEach((item) => {
+        fd.append('importExcel', item.raw);
+      });
+      importFile(fd)
+        .then((res) => {
+          this.$emit('search', this.where);
+          this.$refs.uploadFile.clearFiles();
+        })
+        .catch((data) => {
+          if (data.code != -1) {
+            this.$message.error(data.message);
+          }
+        })
+        .finally(() => {
+          this.$refs.uploadFile.clearFiles();
+        });
     }
-  };
+  }
+};
 </script>
 <style lang="scss" scoped>
-  .ele-form-actions {
-    display: flex;
-    align-items: center;
-    justify-content: flex-end;
-  }
+.ele-form-actions {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
 
-  .btn-wrapper {
-    display: flex;
-    align-items: center;
-    justify-content: flex-start;
-    flex-wrap: wrap;
-  }
-  .avatar-uploader {
-    display: inline-block;
-    margin: 0 10px;
-  }
-  .button-link {
-    color: #fff;
-  }
+.btn-wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+}
+
+.avatar-uploader {
+  display: inline-block;
+  margin: 0 10px;
+}
+
+.button-link {
+  color: #fff;
+}
 </style>

+ 9 - 2
src/views/saleOrder/index.vue

@@ -153,6 +153,13 @@
             minWidth: 120
           },
 
+          {
+            prop: 'produceRoutingName',
+            label: '工艺路线',
+            align: 'center',
+            minWidth: 120
+          },
+
           {
             prop: 'brandNo',
             label: '牌号',
@@ -246,14 +253,14 @@
 
 
           {
-            prop: '',
+            prop: 'serialNo',
             label: '客户代号',
             align: 'center',
             showOverflowTooltip: true
           },
 
           {
-            prop: '',
+            prop: 'simpleName',
             label: '客户简称',
             align: 'center',
             showOverflowTooltip: true

+ 12 - 0
src/views/saleOrder/salesToProduction.vue

@@ -244,6 +244,10 @@ export default {
     }
   },
   created() {
+ 
+
+  
+
     this.requestDict('按单按库');
     this.requestDict('订单类型');
     this.requestDict('交付要求');
@@ -253,10 +257,14 @@ export default {
 
       this.getSaleInfo();
     }
+
+
   },
   methods: {
     async getPlanInfo(id) {
       const data = await getUpdateInfoById(id);
+
+
       this.form = data;
 
     },
@@ -269,9 +277,13 @@ export default {
       this.form.stockCountBase = res;
     },
     getSaleInfo() {
+      
       let params = JSON.parse(this.$route.query.selection)
       productionToPlan(params).then((res) => {
+  
         this.form = deepClone(res);
+        this.form.produceRoutingName = res.produceRoutingName ||  this.$route.query.produceRoutingName
+         this.form.produceRoutingId =  res.produceRoutingId ||  this.$route.query.produceRoutingId
         this.form.salesOrders.map((item, index) => {
           item.priority = index + 1;
           item.planProductNum = item.lackNum;