Ver Fonte

销售订单页面修改

zhangqing há 1 ano atrás
pai
commit
7b2b46b197

+ 15 - 0
src/api/saleOrder/index.js

@@ -296,3 +296,18 @@ export async function getFactoryList(params) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+/**
+ * 获取产品所有库存
+ */
+export async function getInventoryTotalAPI(data) {
+  if (data.length == 0) {
+    return []
+  }
+  const res = await request.post(`wms/stocktwo/getInventoryTotal`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+  

+ 61 - 19
src/views/saleOrder/components/create-order.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <ele-modal :visible.sync="visible" :title="title" width="80vw" append-to-body>
+    <ele-modal :visible.sync="visible" :title="title" width="80vw" append-to-body :maxable="true">
       <el-form ref="form" :model="form" :rules="rules" label-width="90px" class="create-form" :maxable="true">
         <el-row :gutter="24">
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
@@ -9,14 +9,16 @@
             </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="form.deliveryRequirements">
-              </DictSelection>
+            <el-form-item label="订单类型:" prop="orderType">
+              <el-select v-model="form.orderType" style="width: 100%;">
+                <el-option v-for="item of orderTypeList" :key="item.id" :label="item.label"
+                  :value="item.id"></el-option>
+              </el-select>
             </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="form.orderType">
+            <el-form-item label="销售类型:">
+              <DictSelection dictName="订单类型" clearable v-model="form.saleType">
               </DictSelection>
             </el-form-item>
           </el-col>
@@ -28,19 +30,19 @@
           </el-col>
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
             <el-form-item label="客户名称:">
-              <el-input clearable v-model="form.customerName" :disabled="form.orderType == 3" />
+              <el-input clearable v-model="form.customerName" :disabled="form.saleType == 3" />
             </el-form-item>
           </el-col>
 
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
             <el-form-item label="客户简称:">
-              <el-input clearable v-model="form.simpleName" :disabled="form.orderType == 3" />
+              <el-input clearable v-model="form.simpleName" :disabled="form.saleType == 3" />
             </el-form-item>
           </el-col>
 
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
             <el-form-item label="客户代号:">
-              <el-input clearable v-model="form.serialNo" :disabled="form.orderType == 3" />
+              <el-input clearable v-model="form.serialNo" :disabled="form.saleType == 3" />
             </el-form-item>
           </el-col>
 
@@ -57,20 +59,25 @@
               </el-date-picker>
             </el-form-item>
           </el-col>
-          <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+          <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
             <el-form-item label="齐套状态:" prop="completeState">
               <el-select v-model="form.completeState" style="width: 100%">
                 <el-option v-for="item of completeList" :key="item.code" :label="item.name"
                   :value="item.code"></el-option>
               </el-select>
-
             </el-form-item>
-          </el-col>
+          </el-col> -->
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
             <el-form-item label="备注:">
               <el-input clearable v-model="form.notes" />
             </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="form.deliveryRequirements">
+              </DictSelection>
+            </el-form-item>
+          </el-col>
         </el-row>
 
         <el-table :data="form.productInfoList" border height="40vh" key="id">
@@ -81,9 +88,9 @@
           </el-table-column>
           <el-table-column label="行号" align="center" prop="lineNumber">
           </el-table-column>
-          <el-table-column label="产品名称" align="center" prop="productName">
+          <el-table-column label="名称" align="center" prop="productName">
           </el-table-column>
-          <el-table-column label="物料编码" align="center" prop="productCode">
+          <el-table-column label="编码" align="center" prop="productCode">
           </el-table-column>
           <el-table-column label="牌号" align="center" prop="brandNo">
           </el-table-column>
@@ -95,6 +102,22 @@
           </el-table-column>
           <el-table-column label="重量单位" align="center" prop="weightUnit">
           </el-table-column>
+          <el-table-column label="生产编号" align="center" prop="productionCodes" width="140">
+            <template slot-scope="scope">
+              <el-form-item label-width="0px" :prop="'productInfoList.' + scope.$index + '.productionCodes'">
+                <el-input style="width: 100%" size="small" v-model="scope.row.productionCodes" placeholder="请输入">
+              </el-input>
+            </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column label="批次号" align="center" prop="batchNo" width="140">
+            <template slot-scope="scope">
+              <el-form-item label-width="0px" :prop="'productInfoList.' + scope.$index + '.batchNo'">
+                <el-input style="width: 100%" size="small" v-model="scope.row.batchNo" placeholder="请输入">
+              </el-input>
+            </el-form-item>
+            </template>
+          </el-table-column>
           <el-table-column label="订单数量" width="140" align="center" prop="contractNum">
             <template slot-scope="scope">
               <el-form-item label-width="0px" :prop="'productInfoList.' + scope.$index + '.contractNum'" :rules="{
@@ -273,7 +296,7 @@ export default {
       form: {
         productInfoList: [],
         deliveryRequirements: 1,
-        orderType: 1,
+        saleType: 1,
         orderLibraryType: 2,
         productType: 2,
         bomCategoryId: '',
@@ -281,13 +304,18 @@ export default {
         factoriesId: '',
         deliveryTime: dayjs(
           new Date().getTime() + 3600 * 1000 * 24 * 10
-        ).format('YYYY-MM-DD')
+        ).format('YYYY-MM-DD'),
+        orderType: 0
       },
       // 表单验证规则
       rules: {
         deliveryTime: [
           { required: true, message: '请选择交付日期', trigger: 'change' }
+        ],
+        orderType: [
+          { required: true, message: '请选择订单类型', trigger: 'blur' }
         ]
+
       },
       typeList: [
         { id: 1, label: '内销订单' },
@@ -318,7 +346,22 @@ export default {
           nowData = new Date(nowData.setDate(nowData.getDate() - 1));
           return time < nowData;
         }
-      }
+      },
+      // 订单类型
+      orderTypeList: [ 
+        {
+          id: 0, label: '库存性订单'
+        },
+        {
+          id: 1, label: '生产性订单'
+        },
+        {
+          id: 2, label: '无客户生产性订单'
+        },
+        {
+          id: 4, label: '不定向订单'
+        },
+      ],
     };
   },
   watch: {
@@ -381,7 +424,7 @@ export default {
       this.form = {
         productInfoList: [],
         deliveryRequirements: 1,
-        orderType: 1,
+        saleType: 1,
         orderLibraryType: 2,
         deliveryTime: dayjs(
           new Date().getTime() + 3600 * 1000 * 24 * 10
@@ -499,7 +542,6 @@ export default {
         }
         this.loading = true;
         console.log(this.form);
-
         createOrUpdate(this.form)
           .then((res) => {
             this.loading = false;

+ 44 - 8
src/views/saleOrder/components/order-search.vue

@@ -120,15 +120,15 @@
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
-        <el-form-item label="按单按库:">
+        <el-form-item label="订单类型:">
           <el-select
-            v-model="where.orderLibraryType"
+            v-model="where.orderType"
             placeholder="请选择"
             class="w100"
             size="mini"
           >
             <el-option
-              v-for="item in orderTypeList"
+              v-for="item in orderList"
               :key="item.value"
               :label="item.label"
               :value="item.value"
@@ -255,12 +255,12 @@
                 </el-row>
 
                 <el-row>
-                  <el-form-item label="订单类型:">
+                  <el-form-item label="销售类型:">
                     <DictSelection
                       dictName="订单类型"
                       clearable
                       size="mini"
-                      v-model="where.orderType"
+                      v-model="where.saleType"
                     >
                     </DictSelection>
                   </el-form-item>
@@ -297,6 +297,25 @@
                   </el-form-item>
                 </el-row>
 
+                <el-row>
+                  <el-form-item label="按单按库:">
+                    <el-select
+                      v-model="where.orderLibraryType"
+                      placeholder="请选择"
+                      class="w100"
+                      size="mini"
+                    >
+                      <el-option
+                        v-for="item in orderTypeList"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-row>
+
               </div>
             </el-dropdown-menu>
           </el-dropdown>
@@ -322,13 +341,13 @@
       <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
         <el-form-item label-width="0px">
           <div class="btn-wrapper">
-            <el-button
+            <!-- <el-button
               @click="payBudget"
               size="mini"
               type="danger"
             >
               交期预估</el-button
-            >
+            > -->
             <el-button
               @click="homogeneityInspect"
               size="mini"
@@ -434,7 +453,7 @@
         model: '',
         brandNo: '',
         orderSource: 0,
-        orderType: 0,
+        saleType: 0,
         proStu: '',
         orderLibraryType: 0,
         salesman: '',
@@ -462,6 +481,19 @@
           { value: 1, label: '按单' },
           { value: 2, label: '按库' }
         ],
+         
+        orderList: [{
+          value: 0, label: '库存性订单'
+        },
+        {
+          value: 1, label: '生产性订单'
+        },
+        {
+          value: 2, label: '无客户生产性订单'
+        },
+        {
+          value: 4, label: '不定向订单'
+        },],
         loading: false
       };
     },
@@ -531,6 +563,7 @@
         const measuringUnit = this.selection[0].measuringUnit;
         const factoriesId = this.selection[0].factoriesId;
         const bomCategoryId = this.selection[0].bomCategoryId
+        const saleType = this.selection[0].saleType;
 
         // if(!factoriesId){
         //   this.$message.warning('工厂未选择!');
@@ -544,6 +577,9 @@
           if (orderType != this.selection[i].orderType) {
             return this.$message.warning('订单类型不一致!');
           }
+          if (saleType != this.selection[i].saleType) {
+            return this.$message.warning('销售类型不一致!');
+          }
           if (produceRoutingId != this.selection[i].produceRoutingId) {
             return this.$message.warning('工艺路线不一致!');
           }

+ 12 - 4
src/views/saleOrder/components/plan-submit.vue

@@ -6,7 +6,7 @@
     append-to-body
   >
     <div class="main_container">
-      <el-descriptions title="" :column="3" size="medium" border>
+      <el-descriptions title="" :column="3" size="medium" border label-class-name="title-col"  content-class-name="title-col">
         <el-descriptions-item>
           <template slot="label"> 计划编号 </template>
           {{ info.code }}
@@ -32,7 +32,7 @@
           {{ info.codeNum }}
         </el-descriptions-item>
         <el-descriptions-item>
-          <template slot="label"> 工艺类型 </template>
+          <template slot="label"> 加工方式 </template>
           {{ info.produceVersionName }}
         </el-descriptions-item>
 
@@ -66,7 +66,10 @@
           <template slot="label"> 批次号 </template>
           {{ info.batchNo }}
         </el-descriptions-item>
-
+        <el-descriptions-item>
+          <template slot="label"> 所属工厂 </template>
+          {{ info.factoriesIdName }}
+        </el-descriptions-item>
         <el-descriptions-item :span="3">
           <template slot="label"> </template>
         </el-descriptions-item>
@@ -137,8 +140,13 @@
     }
   };
 </script>
-<style lang="scss" scoped>
+<style lang="scss">
   .basic-details-title {
     margin: 10px 0;
   }
+
+  .title-col {
+    color: #000000 !important;
+    background-color: #fff;
+  }
 </style>

+ 46 - 7
src/views/saleOrder/index.vue

@@ -149,7 +149,22 @@
 
         newColumns: [],
         cacheKeyUrl: 'c32a9c7d-aps-saleOrder',
-        columnsVersion: 1
+        columnsVersion: 1,
+        // 订单类型
+        orderTypeList: [ 
+          {
+            id: 0, label: '库存性订单'
+          },
+          {
+            id: 1, label: '生产性订单'
+          },
+          {
+            id: 2, label: '无客户生产性订单'
+          },
+          {
+            id: 4, label: '不定向订单'
+          },
+        ],
       };
     },
 
@@ -202,7 +217,12 @@
             minWidth: 140,
             sortable: true
           },
-
+          {
+            prop: 'batchNo',
+            label: '批次号',
+            align: 'center',
+            showOverflowTooltip: true,
+          },
           {
             prop: 'productName',
             label: '名称',
@@ -212,7 +232,7 @@
 
           {
             prop: 'produceRoutingName',
-            label: '路线',
+            label: '工艺路线',
             align: 'center',
             minWidth: 120
           },
@@ -250,7 +270,7 @@
             slot: 'priority',
             sortable: 'custom'
           },
-
+          
           {
             prop: 'productSumWeight',
             label: '订单重量',
@@ -308,6 +328,15 @@
               return this.getDictValue('交付要求', _row.deliveryRequirements);
             }
           },
+          {
+            prop: 'saleType',
+            label: '销售类型',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return this.getDictValue('订单类型', _row.saleType);
+            }
+          },
           {
             prop: 'orderType',
             label: '订单类型',
@@ -367,12 +396,21 @@
             align: 'center',
             showOverflowTooltip: true
           },
-
           {
             prop: 'salesman',
             label: '业务员',
             showOverflowTooltip: true
-          }
+          },
+          {
+            prop: 'hostCode',
+            label:'主机编码',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'hostDescription',
+            label:'主机描述',
+            showOverflowTooltip: true
+          },
         ];
       }
     },
@@ -484,7 +522,8 @@
           });
 
           this.newColumns = [...this.columns, ...newRes, ...privateColumn];
-
+          // console.log(this.newColumns, 'productCode')
+          this.getTabColumns();
           this.$forceUpdate();
         });
       },

+ 24 - 18
src/views/saleOrder/salesToProductionNewTwo.vue

@@ -19,7 +19,7 @@
                         </el-form-item>
                     </el-col>
 
-                    <el-col v-bind="styleResponsive ? { lg: 4, md: 8 } : { span: 4 }">
+                    <el-col v-bind="styleResponsive ? { lg: 5, md: 8 } : { span: 4 }">
                         <el-form-item label="加工方式:" prop="produceType">
                             <el-select v-model="form.produceType" style="width: 100%" @change="changeProduceType">
                                 <el-option v-for="item of producedList" :key="item.code" :label="item.name"
@@ -82,12 +82,6 @@
                         </el-form-item>
                     </el-col>
 
-                    <el-col v-bind="styleResponsive ? { lg: 4, md: 8 } : { span: 4 }">
-                        <el-form-item label="批次号:" prop="batchNo">
-                            <el-input placeholder="请输入批次号" v-model="form.batchNo"></el-input>
-                        </el-form-item>
-                    </el-col>
-
 
                     <el-col v-bind="styleResponsive ? { lg: 5, md: 10 } : { span: 5 }">
                         <el-form-item label="计划开始日期:" prop="startTime">
@@ -173,12 +167,11 @@
                     <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 3 }">
                         <el-form-item label="规格:">{{ form.specification }}</el-form-item>
                     </el-col>
-                    <!--
-            <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
-              <el-form-item label="库存数量:">{{
-                form.stockCountBase
-              }}</el-form-item>
-            </el-col> -->
+                    <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
+                    <el-form-item label="库存数量:">{{
+                        form.stockCountBase
+                    }}</el-form-item>
+                    </el-col>
                 </el-row>
                 <el-table :data="form.salesOrders" border>
                     <el-table-column label="序号" align="center" width="60">
@@ -212,7 +205,8 @@
                     <el-table-column :label="'欠交数量' + (clientEnvironmentId == '4' ? '(方)' : '')" align="center"
                         prop="lackNum">
                     </el-table-column>
-
+                    <el-table-column label="批次号" align="center" prop="batchNo">
+                    </el-table-column>
                     <el-table-column :label="'计划生产数量' + (clientEnvironmentId == '4' ? '(方)' : '')" align="center"
                         prop="planProductNum" width="140">
                         <template slot-scope="scope">
@@ -442,6 +436,7 @@ import {
     bomRoutingList,
     bomListByPlan,
     getFactoryList,
+    getInventoryTotalAPI
 } from '@/api/saleOrder';
 
 import { getByCode } from '@/api/system/dictionary-data';
@@ -595,9 +590,9 @@ export default {
 
         },
         async _getInventory() {
-            const res = await getInventory(this.form.productCode, this.form.planType);
-
-            this.form.stockCountBase = res;
+            let code = [this.form.productCode]
+            const res = await getInventoryTotalAPI(code);
+            this.form.stockCountBase = res[0].stockCountBase;
         },
 
         getByCodeFn() {
@@ -803,7 +798,6 @@ export default {
         },
         toSubmit() {
             if (!this.form.factoriesId) return this.$message.warning('请选择所属工厂');
-
             console.log(this.form.salesOrders);
             this.form.salesOrders.map(v=>{
                 let arrTime = v.deliveryTime&&v.deliveryTime.split(' ');
@@ -815,6 +809,18 @@ export default {
 
                 // if(v.salesOrders)
             })
+            if (this.form.produceType) { //查询加工方式
+                this.form.produceVersionName = this.producedList.find((v) => v.code == this.form.produceType).name;
+            }
+            if (this.form.produceRoutingId) {//查询工艺路线
+                this.form.produceRoutingName = this.routingList.find((v) => v.id == this.form.produceRoutingId).name;
+            }
+            if (this.form.factoriesId) {//查询工厂名称
+                this.form.factoriesIdName = this.factoryList.find((v) => v.id == this.form.factoriesId).name;
+            }
+            // if (this.form.salesOrders.length > 0) { //多条订单时,拼接批次号(订单数量)
+            //     this.form.batchNo = this.form.salesOrders.map((v) => v.batchNo + `(${measuringUnit})`).join(',');
+            // } 
             console.log(this.form.salesOrders,'123666');
 
             this.$refs.form.validate((valid) => {