Z 1 سال پیش
والد
کامیت
b2b2106edf

+ 10 - 0
src/api/bpm/components/purchasingManage/purchasePlanManage.js

@@ -33,6 +33,16 @@ export async function assign(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+/**
+ * 更新信息
+ */
+export async function UpdateInformation(data) {
+  const res = await request.put(`/eom/purchaseplan/update`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 /**
  * 通过合同ID获取采购计划
  */

+ 1 - 1
src/api/bpm/components/wms/index.js

@@ -4,7 +4,7 @@ import request from '@/utils/request';
  * 获取产品所有库存
  */
 export async function getInventoryTotalAPI(data) {
-  const res = await request.post(`wms/stock/getInventoryTotal`, data);
+  const res = await request.post(`wms/stocktwo/getInventoryTotal`, data);
   if (res.data.code == 0) {
     return res.data.data;
   }

+ 204 - 158
src/views/bpm/handleTask/components/purchasePlanManage/detailDialog.vue

@@ -33,7 +33,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="负责人:" prop="responsibleName">
-            {{ detailData.responsibleName }}
+            {{ form.responsibleName }}
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -44,7 +44,7 @@
 
         <el-col :span="12">
           <el-form-item label="需求部门:" prop="requireDeptName">
-            {{ detailData.requireDeptName }}
+            {{ form.requireDeptName }}
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -54,14 +54,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item prop="remark" label="是否接受拆单:">
-            {{
-              form.acceptUnpack === 1
-                ? '接受'
-                : form.acceptUnpack === 1
-                ? '不接受'
-                : ''
-            }}
+            {{form.acceptUnpack === 1 ? '接受' : '不接受'}}
           </el-form-item>
+
+        </el-col>
+        <el-col :span="12">
+          <el-form-item prop="remark" label="是否需要核价:">
+            {{form.acceptUnpack === 1 ? '是' : '否'}}
+          </el-form-item>
+
         </el-col>
         <!-- <el-col :span="12">
           <el-form-item
@@ -91,180 +92,225 @@
               :underline="false"
               @click="downloadFile(form.files)"
             >
-              {{ form.files.name }}</el-link
+              {{ form.files.name }}
+            </el-link
             >
           </el-form-item>
         </el-col>
       </el-row>
+      <headerTitle title="计划清单" style="margin-top: 15px"></headerTitle>
+      <ele-pro-table
+        ref="table"
+        :needPage="false"
+        :columns="columns"
+        :toolkit="[]"
+        :datasource="form.detailList"
+        row-key="id"
+      >
+        <template v-slot:totalCount="scope">
+          <el-input-number :controls='false' :min="1" style="width: 100%" v-model="scope.row.totalCount"></el-input-number>
+        </template>
+      </ele-pro-table>
     </el-form>
 
-    <headerTitle title="计划清单" style="margin-top: 15px"></headerTitle>
-    <ele-pro-table
-      ref="table"
-      :needPage="false"
-      :columns="columns"
-      :toolkit="[]"
-      :datasource="detailData.detailList"
-      row-key="id"
-    >
-    </ele-pro-table>
+
   </div>
 </template>
 
 <script>
-  import { getplanDetail } from '@/api/bpm/components/purchasingManage/purchasePlanManage';
+import {getplanDetail} from '@/api/bpm/components/purchasingManage/purchasePlanManage';
 
-  import { getFile } from '@/api/system/file';
-  import dictMixins from '@/mixins/dictMixins';
-  import { copyObj } from '@/utils/util';
+import {getFile} from '@/api/system/file';
+import dictMixins from '@/mixins/dictMixins';
+import {getInventoryTotalAPI} from "@/api/bpm/components/wms";
 
-  export default {
-    mixins: [dictMixins],
-    components: {},
-    props: {
-      businessId: {
-        default: ''
-      }
+export default {
+  mixins: [dictMixins],
+  components: {},
+  props: {
+    taskDefinitionKey: {
+      type: String,
+      default: 'starter',
     },
-    data() {
-      return {
-        visible: false,
-        detailId: '',
-        title: '详情',
-        row: {},
-        form: {},
-        detailData: {},
-        columns: [
-          {
-            width: 45,
-            type: 'index',
-            columnKey: 'index',
-            align: 'center',
-            fixed: 'left'
-          },
-          {
-            width: 150,
-            prop: 'productCategoryName',
-            label: '分类',
-            slot: 'productCategoryName'
-          },
-          {
-            width: 140,
-            prop: 'productCode',
-            label: '编码',
-            slot: 'productCode'
-          },
-          {
-            width: 240,
-            prop: 'productName',
-            label: '名称',
-            slot: 'productName'
-          },
+    businessId: {
+      default: ''
+    }
+  },
+  data() {
+    return {
+      visible: false,
+      detailId: '',
+      title: '详情',
+      row: {},
+      form: {},
+      columns: [
+        {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          width: 150,
+          prop: 'productCategoryName',
+          label: '分类',
+          align: 'center',
+          slot: 'productCategoryName'
+        },
+        {
+          width: 140,
+          prop: 'productCode',
+          label: '编码',
+          align: 'center',
+          slot: 'productCode'
+        },
+        {
+          width: 240,
+          prop: 'productName',
+          label: '名称',
+          align: 'center',
+          slot: 'productName'
+        },
 
-          {
-            width: 150,
-            prop: 'productBrand',
-            label: '牌号',
-            slot: 'productBrand'
-          },
-          {
-            width: 80,
-            prop: 'totalCount',
-            label: '数量',
-            slot: 'totalCount'
-          },
-          {
-            width: 100,
-            prop: 'measuringUnit',
-            label: '单位',
-            slot: 'measuringUnit'
-          },
-          {
-            width: 130,
-            prop: 'modelType',
-            label: '型号',
-            slot: 'modelType'
-          },
+        {
+          width: 150,
+          prop: 'productBrand',
+          label: '牌号',
+          align: 'center',
+          slot: 'productBrand'
+        },
+        {
+          width: 100,
+          prop: 'totalCount',
+          label: '数量',
+          align: 'center',
+          slot: 'totalCount'
+        },
+        {
+          width: 80,
+          prop: 'availableCountBase',
+          label: '库存数量',
+          align: 'center',
+          slot: 'availableCountBase'
+        },
+        {
+          width: 100,
+          prop: 'measuringUnit',
+          label: '单位',
+          align: 'center',
+          slot: 'measuringUnit'
+        },
+        {
+          width: 130,
+          prop: 'modelType',
+          label: '型号',
+          align: 'center',
+          slot: 'modelType'
+        },
 
-          {
-            width: 120,
-            prop: 'specification',
-            label: '规格',
-            slot: 'specification'
-          },
-          // {
-          //   width: 130,
-          //   prop: 'modelType',
-          //   label: '品牌',
-          //   slot: 'modelType'
-          // },
-          {
-            width: 170,
-            prop: 'receiveDate',
-            label: '到货日期',
-            slot: 'receiveDate'
-          },
-          {
-            width: 140,
-            prop: 'files',
-            label: '附件',
-            slot: 'files'
-          },
-          {
-            width: 220,
-            prop: 'remark',
-            label: '备注',
-            slot: 'remark'
-          }
-        ]
-      };
+        {
+          width: 120,
+          prop: 'specification',
+          label: '规格',
+          align: 'center',
+          slot: 'specification'
+        },
+        // {
+        //   width: 130,
+        //   prop: 'modelType',
+        //   label: '品牌',
+        //   slot: 'modelType'
+        // },
+        {
+          width: 170,
+          prop: 'receiveDate',
+          label: '到货日期',
+          align: 'center',
+          slot: 'receiveDate'
+        },
+        {
+          width: 140,
+          prop: 'files',
+          label: '附件',
+          align: 'center',
+          slot: 'files'
+        },
+        {
+          width: 220,
+          prop: 'remark',
+          label: '备注',
+          align: 'center',
+          slot: 'remark'
+        }
+      ]
+    };
+  },
+  created() {
+    this.getPlanData(this.businessId);
+  },
+  methods: {
+    downloadFile(file) {
+      getFile({objectName: file.storePath}, file.name);
     },
-    created() {
-      this.getPlanData(this.businessId);
+    async getPlanData(id) {
+      this.loading = true;
+      const data = await getplanDetail(id);
+      this.loading = false;
+      if (data) {
+        let codeList = data.detailList.map((item) => item.productCode);
+        let inventoryTotalList = await getInventoryTotalAPI(codeList);
+        data.detailList.forEach((item) => {
+          let find = inventoryTotalList.find((key) => key.code == item.productCode) || {};
+          item.availableCountBase = find.availableCountBase;
+        });
+        this.form = data;
+        if (data.files && data.files.length > 0) {
+          this.form.files = data.files[0];
+        } else {
+          this.form.files = null;
+        }
+
+      }
     },
-    methods: {
-      downloadFile(file) {
-        getFile({ objectName: file.storePath }, file.name);
-      },
-      async getPlanData(id) {
-        this.loading = true;
-        const data = await getplanDetail(id);
-        this.loading = false;
-        if (data) {
-          this.detailData = data;
-          this.form = data;
 
-          if (data.files && data.files.length > 0) {
-            this.form.files = data.files[0];
-          } else {
-            this.form.files = null;
-          }
+    //查看详情
+    openDetail(row) {
+      this.$refs.contactDetailDialogRef.open(row);
+    },
+    async getTableValue() {
+      try {
+        if( this.form.detailList.some(item => !!item.totalCount == '')){
+          this.$message.warning('数量不能为空')
+          return  ''
         }
-      },
-
-      //查看详情
-      openDetail(row) {
-        console.log(row);
-        this.$refs.contactDetailDialogRef.open(row);
+        // 表单验证通过,执行保存操作
+        this.loading = true;
+        return Object.assign({}, this.form);
+      } catch (error) {
+        console.log(error);
+        // 表单验证未通过,不执行保存操作
       }
     }
-  };
+  }
+};
 </script>
 
 <style scoped lang="scss">
-  .ele-dialog-form {
-    .el-form-item {
-      margin-bottom: 10px;
-    }
+.ele-dialog-form {
+  .el-form-item {
+    margin-bottom: 10px;
   }
+}
 
-  .headbox {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    .amount {
-      font-size: 14px;
-      font-weight: bold;
-    }
+.headbox {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+
+  .amount {
+    font-size: 14px;
+    font-weight: bold;
   }
+}
 </style>

+ 33 - 29
src/views/bpm/handleTask/components/purchasePlanManage/submit.vue

@@ -99,7 +99,8 @@
 <script>
   import { approveTaskWithVariables } from '@/api/bpm/task';
   import { listAllUserBind } from '@/api/system/organization';
-  import { assign, cancel } from '@/api/bpm/components/purchasingManage/purchasePlanManage';
+  import { assign, cancel,UpdateInformation } from '@/api/bpm/components/purchasingManage/purchasePlanManage';
+
 
   // 流程实例的详情页,可用于审批
   export default {
@@ -147,15 +148,15 @@
       },
 
       async handleAudit(status) {
-        //生产主管审批选择技术员
+        let userInfo = this.userOptions.find(
+          (item) => item.id == this.form.userId
+        );
+        //主管指派采购员
         if (this.taskDefinitionKey === 'deptLeaderAssign') {
           if (!this.form.userId) {
             this.$message.warning(`请选择负责人!`);
             return;
           }
-          let userInfo = this.userOptions.find(
-            (item) => item.id == this.form.userId
-          );
           await assign({
             userId: userInfo.id,
             userName: userInfo.name,
@@ -163,32 +164,35 @@
             reason: this.form.reason,
             businessId: this.businessId
           });
-          approveTaskWithVariables({
-            id: this.taskId,
-            reason: this.form.reason,
-            variables:{
-              pass:!!status
-            }
-          });
-          this.$emit('handleAudit', {
-            status,
-            title: status === 0 ? '驳回' : ''
-          });
-        }else {
-          approveTaskWithVariables({
-            id: this.taskId,
-            reason: this.form.reason,
-            variables:{
-              pass:!!status
-            }
-          });
-          this.$emit('handleAudit', {
-            status,
-            title: status === 0 ? '驳回' : ''
-          });
         }
+        //采购员核对
+        if (this.taskDefinitionKey === 'purchaserCheck') {
+          let arr = await this.getTableValue();
+          if (!arr) {
+            return;
+          }
+          await UpdateInformation(arr);
+        }
+        approveTaskWithVariables({
+          id: this.taskId,
+          reason: this.form.reason,
+          variables:{
+            userId: userInfo?.id,
+            pass:!!status
+          }
+        });
+        this.$emit('handleAudit', {
+          status,
+          title: status === 0 ? '驳回' : ''
+        });
+      },
+      getTableValue() {
+        return new Promise((resolve, reject) => {
+          this.$emit('getTableValue', async (data) => {
+            resolve(await data);
+          });
+        });
       },
-
       //更多
       handleCommand(command) {
         if (command === 'cancel') {