huang_an 2 years ago
parent
commit
bd1e92e4e7

+ 533 - 511
src/views/bpm/handleTask/components/purchaseOrder/outSourceSend/inventoryTable.vue

@@ -11,7 +11,7 @@
     >
       <!-- 表头工具栏 -->
       <template v-slot:toolbar>
-        <div class="headbox" v-if="!contractId&&isShowAdd">
+        <div class="headbox" v-if="!contractId && isShowAdd">
           <el-button
             size="small"
             type="primary"
@@ -37,8 +37,7 @@
               @click="downloadFile(link)"
             >
               {{ link.name }}
-            </el-link
-            >
+            </el-link>
           </div>
         </el-form-item>
       </template>
@@ -56,8 +55,7 @@
               @click="downloadFile(link)"
             >
               {{ link.name }}
-            </el-link
-            >
+            </el-link>
           </div>
         </el-form-item>
       </template>
@@ -75,8 +73,7 @@
               @click="downloadFile(link)"
             >
               {{ link.name }}
-            </el-link
-            >
+            </el-link>
           </div>
         </el-form-item>
       </template>
@@ -94,8 +91,7 @@
               @click="downloadFile(link)"
             >
               {{ link.name }}
-            </el-link
-            >
+            </el-link>
           </div>
         </el-form-item>
       </template>
@@ -117,15 +113,12 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.totalCount'"
-          :rules="[
-            { required: true, message: '请输入数字', trigger: 'blur' },
-
-          ]"
+          :rules="[{ required: true, message: '请输入数字', trigger: 'blur' }]"
         >
           <!--           { validator: validateTotalCount(scope.row), trigger: 'blur' }-->
           <el-input
             v-model="scope.row.totalCount"
-            @input="(val) => changeNum(val,scope.row, scope.$index)"
+            @input="(val) => changeNum(val, scope.row, scope.$index)"
           ></el-input>
         </el-form-item>
       </template>
@@ -184,533 +177,562 @@
   </el-form>
 </template>
 <script>
-import {emailReg, phoneReg, numberReg} from 'ele-admin';
-import dictMixins from '@/mixins/dictMixins';
-import productList from './product-list.vue';
-import {
-  getWarehouseList,
-  getWarehouseOutStock
-} from '@/api/bpm/components/saleManage/saleorder';
+  import { emailReg, phoneReg, numberReg } from 'ele-admin';
+  import dictMixins from '@/mixins/dictMixins';
+  import productList from './product-list.vue';
+  import {
+    getWarehouseList,
+    getWarehouseOutStock
+  } from '@/api/bpm/components/saleManage/saleorder';
 
-import {copyObj} from '@/utils/util';
-import {getFile} from "@/api/system/file";
+  import { copyObj } from '@/utils/util';
+  import { getFile } from '@/api/system/file';
 
-export default {
-  mixins: [dictMixins],
-  props: {
-    orderId: String,
-    isShowAdd: {
-      type: Boolean,
-      default: true
-    },
-    pricingWay: [String, Number]
-  },
-  components: {
-    productList
-  },
-  data() {
-    const defaultForm = {
-      key: null,
-      endTime: '',
-      isFirst: 0,
-      name: '',
-      startTime: '',
-      workHour: '',
-      technicalDrawings: []
-      // warehouseCode:"",
-      // warehouseId:'',
-      // warehouseName:'',
-    };
-    return {
-      discountTotalPrice: 0.0,
-      allPrice: 0.0,
-      numberReg,
-      defaultForm,
-      warehouseList: [],
-      form: {
-        datasource: []
+  export default {
+    mixins: [dictMixins],
+    props: {
+      orderId: String,
+      isShowAdd: {
+        type: Boolean,
+        default: true
       },
-      rules: {},
-
-      columns: [
-        {
-          width: 45,
-          type: 'index',
-          columnKey: 'index',
-          align: 'center',
-          fixed: 'left'
-        },
-        {
-          minWidth: 200,
-          prop: 'productName',
-          label: '名称',
-          slot: 'productName',
-          align: "center"
-        },
-        {
-          minWidth: 120,
-          prop: 'productCode',
-          label: '编码',
-          slot: 'productCode',
-          align: "center"
-        },
-        {
-          minWidth: 150,
-          prop: 'productCategoryName',
-          label: '类型',
-          slot: 'productCategoryName',
-          align: "center"
-        },
-        {
-          minWidth: 100,
-          prop: 'productBrand',
-          label: '牌号',
-          slot: 'productBrand',
-          align: "center"
-        },
-        {
-          minWidth: 120,
-          prop: 'modelType',
-          label: '型号',
-          slot: 'modelType',
-          align: "center"
-        },
-        {
-          minWidth: 120,
-          prop: 'specification',
-          label: '规格',
-          slot: 'specification',
-          align: "center"
-        },
-        {
-          minWidth: 150,
-          prop: 'customerMark',
-          label: '客户代号',
-          slot: 'customerMark',
-          align: "center"
-        },
-        {
-          minWidth: 200,
-          prop: 'warehouseId',
-          label: '仓库名称',
-          slot: 'warehouseId',
-          headerSlot: 'headerWarehouseId',
-          align: "center"
-        },
-        {
-          minWidth: 80,
-          prop: 'warehouseNum',
-          label: '库存',
-          slot: 'warehouseNum',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'totalCount',
-          label: '发货数量',
-          slot: 'totalCount',
-          headerSlot: 'headerTotalCount',
-          align: "center"
-        },
-        // {
-        //   width: 120,
-        //   prop: 'orderTotalCount',
-        //   label: '总数量',
-        //   slot: 'orderTotalCount'
-        // },
-        {
-          minWidth: 100,
-          prop: 'measuringUnit',
-          label: '计量单位',
-          slot: 'measuringUnit',
-          align: "center"
-        },
-        {
-          width: 120,
-          prop: 'singleWeight',
-          label: '单重',
-          slot: 'singleWeight',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'sendTotalWeight',
-          label: '发货总重',
-          slot: 'sendTotalWeight',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'weightUnit',
-          label: '重量单位',
-          slot: 'weightUnit',
-          align: "center"
-        },
-        {
-          width: 80,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'discountSinglePrice',
-          label: '折让单价',
-          slot: 'discountSinglePrice',
-          align: "center"
-        },
-        {
-          width: 80,
-          prop: 'totalPrice',
-          label: '合计',
-          slot: 'totalPrice',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'discountTotalPrice',
-          label: '折让合计',
-          slot: 'discountTotalPrice',
-          align: "center"
+      pricingWay: [String, Number]
+    },
+    components: {
+      productList
+    },
+    data() {
+      const defaultForm = {
+        key: null,
+        endTime: '',
+        isFirst: 0,
+        name: '',
+        startTime: '',
+        workHour: '',
+        technicalDrawings: []
+        // warehouseCode:"",
+        // warehouseId:'',
+        // warehouseName:'',
+      };
+      return {
+        discountTotalPrice: 0.0,
+        allPrice: 0.0,
+        numberReg,
+        defaultForm,
+        warehouseList: [],
+        form: {
+          datasource: []
         },
+        rules: {},
 
-        // {
-        //   width: 80,
-        //   prop: 'deliveryDays',
-        //   label: '交期(天)',
-        //   slot: 'deliveryDays'
-        // },
-        // {
-        //   width: 160,
-        //   prop: 'deliveryDeadline',
-        //   label: '交期截止日期',
-        //   slot: 'deliveryDeadline',
-        //   show: this.isDeliveryDeadline
-        // },
-        {
-          minWidth: 140,
-          prop: 'customerExpectDeliveryDeadline',
-          label: '客户期望交期',
-          slot: 'customerExpectDeliveryDeadline',
-          headerSlot: 'headerCustomerExpectDeliveryDeadline',
-          align: "center"
-        },
-        {
-          minWidth: 140,
-          prop: 'produceDeliveryDeadline',
-          label: '生产交付交期',
-          slot: 'produceDeliveryDeadline',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'guaranteePeriod',
-          label: '质保期',
-          slot: 'guaranteePeriod',
-          formatter: (_row, _column, cellValue) => {
-            return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
+        columns: [
+          {
+            width: 45,
+            type: 'index',
+            columnKey: 'index',
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            minWidth: 200,
+            prop: 'productName',
+            label: '名称',
+            slot: 'productName',
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'productCode',
+            label: '编码',
+            slot: 'productCode',
+            align: 'center'
+          },
+          {
+            minWidth: 150,
+            prop: 'productCategoryName',
+            label: '类型',
+            slot: 'productCategoryName',
+            align: 'center'
+          },
+          {
+            minWidth: 100,
+            prop: 'productBrand',
+            label: '牌号',
+            slot: 'productBrand',
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'modelType',
+            label: '型号',
+            slot: 'modelType',
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'specification',
+            label: '规格',
+            slot: 'specification',
+            align: 'center'
+          },
+          {
+            minWidth: 150,
+            prop: 'customerMark',
+            label: '客户代号',
+            slot: 'customerMark',
+            align: 'center'
+          },
+          {
+            minWidth: 200,
+            prop: 'warehouseId',
+            label: '仓库名称',
+            slot: 'warehouseId',
+            headerSlot: 'headerWarehouseId',
+            align: 'center'
+          },
+          {
+            minWidth: 80,
+            prop: 'warehouseNum',
+            label: '库存',
+            slot: 'warehouseNum',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'totalCount',
+            label: '发货数量',
+            slot: 'totalCount',
+            headerSlot: 'headerTotalCount',
+            align: 'center'
+          },
+          // {
+          //   width: 120,
+          //   prop: 'orderTotalCount',
+          //   label: '总数量',
+          //   slot: 'orderTotalCount'
+          // },
+          {
+            minWidth: 100,
+            prop: 'measuringUnit',
+            label: '计量单位',
+            slot: 'measuringUnit',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'singleWeight',
+            label: '单重',
+            slot: 'singleWeight',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'sendTotalWeight',
+            label: '发货总重',
+            slot: 'sendTotalWeight',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'weightUnit',
+            label: '重量单位',
+            slot: 'weightUnit',
+            align: 'center'
+          },
+          {
+            width: 80,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'discountSinglePrice',
+            label: '折让单价',
+            slot: 'discountSinglePrice',
+            align: 'center'
+          },
+          {
+            width: 80,
+            prop: 'totalPrice',
+            label: '合计',
+            slot: 'totalPrice',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'discountTotalPrice',
+            label: '折让合计',
+            slot: 'discountTotalPrice',
+            align: 'center'
           },
-          align: "center"
-        },
-        {
-          minWidth: 120,
-          prop: 'guaranteePeriodDeadline',
-          label: '质保截止日期',
-          align: "center"
-        },
-        {
-          minWidth: 200,
-          prop: 'customerReqFiles',
-          label: '客户需求',
-          slot: 'customerReqFiles',
-          align: "center"
-        },
-        {
-          width: 130,
-          prop: 'technicalAnswerName',
-          label: '技术答疑人',
-          slot: 'technicalAnswerName',
-          align: "center"
-        },
-        {
-          width: 220,
-          prop: 'technicalParams',
-          label: '技术参数',
-          slot: 'technicalParams',
-          align: "center"
-        },
-        {
-          width: 240,
-          prop: 'technicalDrawings',
-          label: '技术图纸',
-          slot: 'technicalDrawings',
-          align: "center"
-        },
-        {
-          width: 240,
-          prop: 'industryArtFiles',
-          label: '工艺附件',
-          slot: 'industryArtFiles',
-          align: "center"
-        },
-        {
-          width: 240,
-          prop: 'otherFiles',
-          label: '其他附件',
-          slot: 'otherFiles',
-          align: "center"
-        },
-        {
-          width: 220,
-          prop: 'remark',
-          label: '备注',
-          slot: 'remark',
-          align: "center"
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 120,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          fixed: 'right',
-          showOverflowTooltip: true
-        }
-      ]
-    };
-  },
-  created() {
-    getWarehouseList().then((res) => {
-      this.warehouseList = res;
-    });
-  },
-  computed: {
-    canHandl() {
-      return this.form.datasource.length;
-    },
-    contractId() {
-      return this.$store.state.order.contractId;
-    }
-  },
-  methods: {
-    downloadFile(file) {
-      getFile({objectName: file.storePath}, file.name);
-    },
-    async warehouseChange(index, row) {
-      let warehouseIds =
-        this.form.datasource
-          .filter(
-            (item, i) => row.productCode == item.productCode && index != i
-          )
-          .map((item) => item.warehouseId) || [];
-      const data = this.warehouseList.find(
-        (item) => item.id == row.warehouseId
-      );
-      if (warehouseIds.length > 0 && warehouseIds.includes(row.warehouseId)) {
-        row.warehouseId = '';
-        return this.$message.error('同一个产品不能选择相同的仓库');
-      }
 
-      this.$set(this.form.datasource[index], 'warehouseName', data.name);
-      this.$set(this.form.datasource[index], 'warehouseCode', data.code);
-      const warehouseOutStock = await getWarehouseOutStock({
-        warehouseId: data.id,
-        code: row.productCode
-      });
-      this.$set(
-        this.form.datasource[index],
-        'warehouseNum',
-        warehouseOutStock
-      );
-    },
-//修改数量更新合计
-    changeNum(val, row, index) {
-      this.$set(this.form.datasource[index], 'sendTotalWeight', val ? val * row.singleWeight : '');
-      this.$set(this.form.datasource[index], 'totalPrice', this.getTotalPrice(row).toFixed(2));
-      this.$set(this.form.datasource[index], 'discountTotalPrice', this.getDiscountTotalPrice(row).toFixed(2));
-    },
-    getTotalPrice(row) {
-      let num = 0
-      switch (this.pricingWay) {
-        case 1: //按数量计价计算总金额
-          num = Number(row.singlePrice) * Number(row.totalCount)
-          break;
-        case 2 ://按重量计价计算总金额
-          num = Number(row.singlePrice) * Number(row.totalCount) * Number(row.singleWeight)
-      }
-      return num
-    },
-    getDiscountTotalPrice(row) {
-      let num = 0
-      switch (this.pricingWay) {
-        case 1: //按数量计价计算总金额
-          num = Number(row.discountSinglePrice) * Number(row.totalCount)
-          break;
-        case 2 ://按重量计价计算总金额
-          num = Number(row.discountSinglePrice) * Number(row.totalCount) * Number(row.singleWeight)
-      }
-      return num
-    },
-    //选择产品回调
-    changeParent(obj, idx) {
-      obj.orderTotalCount = obj.totalCount;
-      obj.id = '';
-      this.$set(
-        this.form.datasource,
-        this.form.datasource.length,
-        copyObj(obj)
-      );
-    },
-    validateTotalCount(row) {
-      return (rule, value, callback) => {
-        if (isNaN(value) || Number(value) <= 0) {
-          this.$message.error('请输入大于0的数');
-          callback(new Error('请输入大于0的数字'));
-        } else if (Number(value) > row.warehouseNum) {
-          // this.$message.error('输入的数字不能大于仓库物品数');
-          // callback(new Error('输入的数字不能大于仓库物品数'));
-          callback();
-        } else if (Number(value) > row.orderTotalCount) {
-          this.$message.error('输入的数字不能大于最大发货值');
-          callback(new Error('输入的数字不能大于最大发货值'));
-        } else {
-          callback();
-        }
+          // {
+          //   width: 80,
+          //   prop: 'deliveryDays',
+          //   label: '交期(天)',
+          //   slot: 'deliveryDays'
+          // },
+          // {
+          //   width: 160,
+          //   prop: 'deliveryDeadline',
+          //   label: '交期截止日期',
+          //   slot: 'deliveryDeadline',
+          //   show: this.isDeliveryDeadline
+          // },
+          {
+            minWidth: 140,
+            prop: 'customerExpectDeliveryDeadline',
+            label: '客户期望交期',
+            slot: 'customerExpectDeliveryDeadline',
+            headerSlot: 'headerCustomerExpectDeliveryDeadline',
+            align: 'center'
+          },
+          {
+            minWidth: 140,
+            prop: 'produceDeliveryDeadline',
+            label: '生产交付交期',
+            slot: 'produceDeliveryDeadline',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'guaranteePeriod',
+            label: '质保期',
+            slot: 'guaranteePeriod',
+            formatter: (_row, _column, cellValue) => {
+              return (
+                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
+              );
+            },
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'guaranteePeriodDeadline',
+            label: '质保截止日期',
+            align: 'center'
+          },
+          {
+            minWidth: 200,
+            prop: 'customerReqFiles',
+            label: '客户需求',
+            slot: 'customerReqFiles',
+            align: 'center'
+          },
+          {
+            width: 130,
+            prop: 'technicalAnswerName',
+            label: '技术答疑人',
+            slot: 'technicalAnswerName',
+            align: 'center'
+          },
+          {
+            width: 220,
+            prop: 'technicalParams',
+            label: '技术参数',
+            slot: 'technicalParams',
+            align: 'center'
+          },
+          {
+            width: 240,
+            prop: 'technicalDrawings',
+            label: '技术图纸',
+            slot: 'technicalDrawings',
+            align: 'center'
+          },
+          {
+            width: 240,
+            prop: 'industryArtFiles',
+            label: '工艺附件',
+            slot: 'industryArtFiles',
+            align: 'center'
+          },
+          {
+            width: 240,
+            prop: 'otherFiles',
+            label: '其他附件',
+            slot: 'otherFiles',
+            align: 'center'
+          },
+          {
+            width: 220,
+            prop: 'remark',
+            label: '备注',
+            slot: 'remark',
+            align: 'center'
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 120,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            fixed: 'right',
+            showOverflowTooltip: true
+          }
+        ]
       };
     },
-    // 返回列表数据
-    getTableValue() {
-      let comitDatasource = this.form.datasource;
-      if (comitDatasource.length === 0) return [];
-      comitDatasource.forEach(async (v) => {
-        v.totalCount = Number(v.totalCount);
-        v.technicalDrawings = Array.isArray(v.technicalDrawings) ? v.technicalDrawings : [];
-        v.customerReqFiles = Array.isArray(v.customerReqFiles) ? v.customerReqFiles : [];
-        v.industryArtFiles = v.industryArtFiles || [];
-        v.otherFiles = v.otherFiles || [];
+    created() {
+      getWarehouseList().then((res) => {
+        this.warehouseList = res;
       });
-      return comitDatasource;
     },
-    getPrice() {
-      return [this.allPrice];
+    computed: {
+      canHandl() {
+        return this.form.datasource.length;
+      },
+      contractId() {
+        return this.$store.state.order.contractId;
+      }
     },
+    methods: {
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+      async warehouseChange(index, row) {
+        let warehouseIds =
+          this.form.datasource
+            .filter(
+              (item, i) => row.productCode == item.productCode && index != i
+            )
+            .map((item) => item.warehouseId) || [];
+        const data = this.warehouseList.find(
+          (item) => item.id == row.warehouseId
+        );
+        if (warehouseIds.length > 0 && warehouseIds.includes(row.warehouseId)) {
+          row.warehouseId = '';
+          return this.$message.error('同一个产品不能选择相同的仓库');
+        }
 
-    //修改回显
-    putTableValue(data) {
-      if (data) {
-        this.form.datasource = data;
-        data.forEach(async (item, index) => {
-          if (item.warehouseId) {
-            this.$set(
-              this.form.datasource[index],
-              'warehouseNum',
-              await getWarehouseOutStock({
-                warehouseId: item.warehouseId,
-                code: item.productCode
-              })
-            );
+        this.$set(this.form.datasource[index], 'warehouseName', data.name);
+        this.$set(this.form.datasource[index], 'warehouseCode', data.code);
+        const warehouseOutStock = await getWarehouseOutStock({
+          warehouseId: data.id,
+          code: row.productCode
+        });
+        this.$set(
+          this.form.datasource[index],
+          'warehouseNum',
+          warehouseOutStock
+        );
+      },
+      //修改数量更新合计
+      changeNum(val, row, index) {
+        this.$set(
+          this.form.datasource[index],
+          'sendTotalWeight',
+          val ? val * row.singleWeight : ''
+        );
+        this.$set(
+          this.form.datasource[index],
+          'totalPrice',
+          this.getTotalPrice(row).toFixed(2)
+        );
+        this.$set(
+          this.form.datasource[index],
+          'discountTotalPrice',
+          this.getDiscountTotalPrice(row).toFixed(2)
+        );
+      },
+      getTotalPrice(row) {
+        let num = 0;
+        switch (this.pricingWay) {
+          case 1: //按数量计价计算总金额
+            num = Number(row.singlePrice) * Number(row.totalCount);
+            break;
+          case 2: //按重量计价计算总金额
+            num =
+              Number(row.singlePrice) *
+              Number(row.totalCount) *
+              Number(row.singleWeight);
+        }
+        return num;
+      },
+      getDiscountTotalPrice(row) {
+        let num = 0;
+        switch (this.pricingWay) {
+          case 1: //按数量计价计算总金额
+            num = Number(row.discountSinglePrice) * Number(row.totalCount);
+            break;
+          case 2: //按重量计价计算总金额
+            num =
+              Number(row.discountSinglePrice) *
+              Number(row.totalCount) *
+              Number(row.singleWeight);
+        }
+        return num;
+      },
+      //选择产品回调
+      changeParent(obj, idx) {
+        obj.orderTotalCount = obj.totalCount;
+        obj.id = '';
+        this.$set(
+          this.form.datasource,
+          this.form.datasource.length,
+          copyObj(obj)
+        );
+      },
+      validateTotalCount(row) {
+        return (rule, value, callback) => {
+          if (isNaN(value) || Number(value) <= 0) {
+            this.$message.error('请输入大于0的数');
+            callback(new Error('请输入大于0的数字'));
+          } else if (Number(value) > row.warehouseNum) {
+            // this.$message.error('输入的数字不能大于仓库物品数');
+            // callback(new Error('输入的数字不能大于仓库物品数'));
+            callback();
+          } else if (Number(value) > row.orderTotalCount) {
+            this.$message.error('输入的数字不能大于最大发货值');
+            callback(new Error('输入的数字不能大于最大发货值'));
+          } else {
+            callback();
           }
-          if(!item.sendTotalWeight)this.$set(item, 'sendTotalWeight', Number(item.totalCount) * Number(item.singleWeight) );
+        };
+      },
+      // 返回列表数据
+      getTableValue() {
+        let comitDatasource = this.form.datasource;
+        if (comitDatasource.length === 0) return [];
+        comitDatasource.forEach(async (v) => {
+          v.totalCount = Number(v.totalCount);
+          v.technicalDrawings = Array.isArray(v.technicalDrawings)
+            ? v.technicalDrawings
+            : [];
+          v.customerReqFiles = Array.isArray(v.customerReqFiles)
+            ? v.customerReqFiles
+            : [];
+          v.industryArtFiles = v.industryArtFiles || [];
+          v.otherFiles = v.otherFiles || [];
         });
-      }
-    },
-    //选择产品
-    handParent(row, index) {
-      let item = {
-        id: row.productCode
-      };
-      this.$refs.productListRef.open(item, index);
-    },
-    //选择技术人回调
-    changeAnswer(obj, idx) {
-      this.$set(this.form.datasource[idx], 'technicalAnswerId', obj.id);
-      this.$set(this.form.datasource[idx], 'technicalAnswerName', obj.name);
-    },
-    handHead(row, index) {
-      let item = {
-        id: row.technicalAnswerId
-      };
-      this.$refs.headRef.open(item, index);
-    },
+        return comitDatasource;
+      },
+      getPrice() {
+        return [this.allPrice];
+      },
 
-    remove(i) {
-      this.form.datasource.splice(i, 1);
-      this.setSort();
-    },
-    // 清空表格
-    restTable() {
-      this.form.datasource = [];
-    },
-    // 重新排序
-    setSort() {
-      this.form.datasource.forEach((n, index) => {
-        n.key = index + 1;
-      });
-    },
-    // 添加
-    handlAdd() {
-      if (!this.orderId) return this.$message.error('请先选择订单');
-      this.$refs.productListRef.open(this.form.datasource);
-    },
+      //修改回显
+      putTableValue(data) {
+        if (data) {
+          this.form.datasource = data;
+          data.forEach(async (item, index) => {
+            if (item.warehouseId) {
+              this.$set(
+                this.form.datasource[index],
+                'warehouseNum',
+                await getWarehouseOutStock({
+                  warehouseId: item.warehouseId,
+                  code: item.productCode
+                })
+              );
+            }
+            if (!item.sendTotalWeight)
+              this.$set(
+                item,
+                'sendTotalWeight',
+                Number(item.totalCount) * Number(item.singleWeight)
+              );
+          });
+        }
+      },
+      //选择产品
+      handParent(row, index) {
+        let item = {
+          id: row.productCode
+        };
+        this.$refs.productListRef.open(item, index);
+      },
+      //选择技术人回调
+      changeAnswer(obj, idx) {
+        this.$set(this.form.datasource[idx], 'technicalAnswerId', obj.id);
+        this.$set(this.form.datasource[idx], 'technicalAnswerName', obj.name);
+      },
+      handHead(row, index) {
+        let item = {
+          id: row.technicalAnswerId
+        };
+        this.$refs.headRef.open(item, index);
+      },
 
-    validateForm(callback) {
-      //开始表单校验
-      this.$refs.form.validate((valid) => {
-        callback(valid);
-      });
+      remove(i) {
+        this.form.datasource.splice(i, 1);
+        this.setSort();
+      },
+      // 清空表格
+      restTable() {
+        this.form.datasource = [];
+      },
+      // 重新排序
+      setSort() {
+        this.form.datasource.forEach((n, index) => {
+          n.key = index + 1;
+        });
+      },
+      // 添加
+      handlAdd() {
+        if (!this.orderId) return this.$message.error('请先选择订单');
+        this.$refs.productListRef.open(this.form.datasource);
+      },
+
+      validateForm(callback) {
+        //开始表单校验
+        this.$refs.form.validate((valid) => {
+          callback(valid);
+        });
+      }
     }
-  }
-};
+  };
 </script>
 <style lang="scss" scoped>
-.headbox {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
+  .headbox {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
 
-  .amount {
-    font-size: 14px;
-    font-weight: bold;
-    padding-right: 30px;
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      padding-right: 30px;
+    }
   }
-}
 
-.time-form .el-form-item {
-  margin-bottom: 0 !important;
-}
+  .time-form .el-form-item {
+    margin-bottom: 0 !important;
+  }
 
-::v-deep .period {
-  display: flex;
+  ::v-deep .period {
+    display: flex;
 
-  .borderleftnone {
-    .el-input--medium .el-input__inner {
-      border-top-right-radius: 0;
-      border-bottom-right-radius: 0;
+    .borderleftnone {
+      .el-input--medium .el-input__inner {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0;
+      }
     }
-  }
 
-  .borderrightnone {
-    .el-input--medium .el-input__inner {
-      border-top-left-radius: 0;
-      border-bottom-left-radius: 0;
+    .borderrightnone {
+      .el-input--medium .el-input__inner {
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0;
+      }
     }
   }
-}
 
-::v-deep .time-form tbody > tr:hover > td {
-  background-color: transparent !important;
-}
+  ::v-deep .time-form tbody > tr:hover > td {
+    background-color: transparent !important;
+  }
 
-::v-deep .time-form .el-table tr {
-  background-color: #ffffff;
-}
+  ::v-deep .time-form .el-table tr {
+    background-color: #ffffff;
+  }
 
-.pricebox {
-  display: flex;
-  justify-content: flex-start;
-  align-items: center;
-  font-weight: bold;
-}
+  .pricebox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    font-weight: bold;
+  }
 </style>

+ 1 - 1
src/views/bpm/handleTask/components/purchaseOrder/outSourceSend/submit.vue

@@ -145,7 +145,7 @@
             ','
           );
         }
-        if (this.taskDefinitionKey === 'storeman') {
+        if (this.taskDefinitionKey === 'storeman' && !!status) {
           let data = await this.getTableValue();
           let storageData = data.returnStorageData;
           // 入库来源storageSource 0-正常  1-外部(外部跳过内部审核流程)

+ 1 - 1
src/views/bpm/handleTask/components/purchaseOrder/outSourceSendCk/submit.vue

@@ -103,7 +103,7 @@
           this.$message.error('请输入审批意见');
           return false;
         }
-        if (this.taskDefinitionKey === 'storeman') {
+        if (this.taskDefinitionKey === 'storeman' && !!status) {
           let data = await this.getTableValue();
           let storageData = data.returnStorageData;
           // 入库来源storageSource 0-正常  1-外部(外部跳过内部审核流程)