Răsfoiți Sursa

feat(warehouse): 添加物料需求清单出库类型和审批。修复会计科目验证触发问题。 统一表单标签样式
在采购订单和销售订单的详情对话框中统一表单标签的冒号样式

liujt 4 luni în urmă
părinte
comite
308f3e73f2

+ 1 - 0
src/utils/dict/warehouse.js

@@ -68,6 +68,7 @@ export const outputSceneState = [
   { code: 11, label: '自选领用出库' },
   { code: 12, label: '配料出库' },
   { code: 13, label: '质检出库' },
+  { code: 14, label: '物料需求清单出库' },
   { code: 99, label: '其他出库' }
 ];
 // 紧急状态

+ 1 - 0
src/views/bpm/handleTask/components/financialManage/payableManage/components/detailDialog.vue

@@ -212,6 +212,7 @@
         if (!val) return (this.form.accountingSubjectName = '');
         let data = this.$refs.treeSelect?.$refs?.tree?.getCurrentNode() || {};
         this.form.accountingSubjectName = data.name;
+        this.$refs.form.validateField('accountingSubjectId');
       },
       getTableValue() {
         return new Promise((resolve, reject) => {

+ 1 - 0
src/views/bpm/handleTask/components/financialManage/receivableManage/components/detailDialog.vue

@@ -222,6 +222,7 @@
         if (!val) return (this.form.accountingSubjectName = '');
         let data = this.$refs.treeSelect?.$refs?.tree?.getCurrentNode() || {};
         this.form.accountingSubjectName = data.name;
+        this.$refs.form.validateField('accountingSubjectId');
       },
       getTableValue() {
         return new Promise((resolve, reject) => {

+ 6 - 6
src/views/bpm/handleTask/components/purchaseOrder/detailDialog.vue

@@ -61,13 +61,13 @@
         </el-col>
 
         <el-col :span="8">
-          <el-form-item label="交易方式" prop="transactionMode">
+          <el-form-item label="交易方式" prop="transactionMode">
               {{ transactionMethodsOp.find(item => item.value == form.transactionMode)?.label }}
             </el-form-item>
         </el-col>
 
         <el-col :span="8">
-          <el-form-item label="收货模式" prop="deliveryMode">
+          <el-form-item label="收货模式" prop="deliveryMode">
               {{ shippingModePurchaseOp.find(item => item.value == form.deliveryMode)?.label }}
             </el-form-item>
         </el-col>
@@ -79,26 +79,26 @@
         </el-col>
 
         <el-col :span="8" v-if="form.settlementMode == 1">
-          <el-form-item label="结算日期范围" prop="settlementDate">
+          <el-form-item label="结算日期范围" prop="settlementDate">
               {{ form.settlementDate }}
             </el-form-item>
         </el-col>
 
         <el-col :span="8" v-if="form.settlementMode == 2">
-          <el-form-item label="结算月份范围" prop="settlementDate">
+          <el-form-item label="结算月份范围" prop="settlementDate">
               {{ form.settlementDate }}
             </el-form-item>
         </el-col>
 
         <el-col :span="8" v-if="form.settlementMode == 2">
-          <el-form-item label="收款日期" prop="receiptDate">
+          <el-form-item label="收款日期" prop="receiptDate">
               每月{{ form.receiptDate }}日
             </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item
-              label="期数"
+              label="期数"
               prop="issueNumber"
             >
               {{ form.issueNumber }}期

+ 42 - 2
src/views/bpm/handleTask/components/requirementOrderPick/detailDialog.vue

@@ -119,11 +119,22 @@
         <span v-else></span>
       </template>
     </ele-pro-table>
+
+    <add
+        ref="add"
+        v-if="taskDefinitionKey == 'apsStoreman'"
+        :form="outFormData || {}"
+        :sourceBizNo="outFormData.code || ''"
+        :bizType="14"
+        :detailList="outDetailList || []"
+        type="物料需求清单出库"
+      ></add>
   </div>
 </template>
 
 <script>
   import { pickingOrderInfo } from '@/api/bpm/components/requirementPick/index';
+  import add from '@/views/bpm/outgoingManagement/outbound.vue'
 
   const COMPONENT_ATTRIBUTE_MAP = {
     1: '自制件',
@@ -149,10 +160,16 @@
     props: {
       businessId: {
         default: ''
-      }
+      },
+      taskDefinitionKey: {
+        type: String,
+        default: ''
+      },
     },
     mixins: [],
-
+    components: {
+      add
+    },
     data() {
       return {
         title: 'mes领料单',
@@ -161,6 +178,7 @@
         produceTypeMap: PRODUCE_TYPE_MAP,
         tableHeight: 'calc(100vh - 595px)',
         formData: {},
+        outDetailList: [],
 
         // 表格列配置
         columns: [
@@ -297,6 +315,28 @@
       async getDetailData(id) {
         this.loading = true;
         this.formData = (await pickingOrderInfo(id)) || {};
+        this.outFormData = JSON.parse(JSON.stringify(this.formData));
+        this.outFormData.executorDeptId =  this.formData.executorGroupId;
+        this.outFormData.executorDeptName =  this.formData.executorDeptName;
+        this.outFormData.categoryLevelTopId =  this.formData.categoryLevelId;
+        this.outFormData.categoryLevelTopName =  this.formData.categoryLevelName;
+        this.outDetailList = this.formData?.detailList.map(item => {
+          return {
+            ...item,
+            demandQuantity: item.quantity,
+            batchNo: ''
+          }
+        }) || [];
+      },
+
+      async getTableValue() {
+        console.log(this.$refs['add']);
+        return {
+          form: this.form,
+          returnStorageData: this.$refs['add'].getReturnStorage
+            ? await this.$refs['add'].getReturnStorage()
+            : {}
+        };
       },
 
       fullscreenChange(fullscreen) {

+ 75 - 10
src/views/bpm/handleTask/components/requirementOrderPick/submit.vue

@@ -49,9 +49,20 @@
         size="mini"
         @click="handleAudit(1)"
         v-click-once
+        v-if="taskDefinitionKey != 'apsStoreman'"
         >通过
       </el-button>
 
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        :loading="isLoading"
+        @click="handleAudit(1)"
+        v-if="taskDefinitionKey == 'apsStoreman'"
+        >申请出库
+      </el-button>
+
       <el-button
         icon="el-icon-circle-close"
         type="danger"
@@ -86,6 +97,7 @@
     cancelTask
   } from '@/api/bpm/task';
   import { listAllUserBind } from '@/api/system/organization';
+  import storageApi from '@/api/warehouseManagement';
 
   // 流程实例的详情页,可用于审批
   export default {
@@ -112,7 +124,8 @@
           // technicianId: '',
           reason: ''
         },
-        userOptions: []
+        userOptions: [],
+        isLoading: false
       };
     },
     created() {
@@ -122,16 +135,68 @@
       });
     },
     methods: {
-      async handleAudit(status, type) {
-        //生产主管审批选择技术员
+      async handleAudit(status) {
+        let data = await this.getTableValue();
+        let storageData = data.returnStorageData;
+        if (!!status) {
+          if (!storageData?.extInfo?.verifyDeptCode) {
+            this.$message.error('请选择部门');
+            return false;
+          }
+          if (!storageData?.fromUser) {
+            this.$message.error('请选择领料人');
+            return false;
+          }
+        }
+        if (!this.form.reason && !!status) {
+          this.$message.error('请输入审批意见');
+          return false;
+        }
+        if (this.taskDefinitionKey === 'apsStoreman' && !!status) {
+          // 入库来源isSkip 0-正常  1-外部(外部跳过内部审核流程)
+          storageData.isSkip = 1;
+          console.log('storageData~~~', storageData);
+          try {
+            this.isLoading = true;
+            const res = await storageApi.outStorage(storageData);
+          
+            if (res.code == 0) {
+              let API = !!status ? approveTaskWithVariables : rejectTask;
+              API({
+                id: this.taskId,
+                reason: this.form.reason,
+                variables: {
+                  pass: !!status
+                }
+              }).then((res) => {
+                if (res.code != '-1') {
+                  this.$emit('handleAudit', {
+                    status: status,
+                    title: !status ? '驳回' : ''
+                  });
+                }
+                this.isLoading = false;
+              });
+            }
+          } catch (error) {
+            this.isLoading = false;
+            console.error('保存失败:', error);
+          }
+        } else {
+          // await this._approveTaskWithVariables(status, storemanIds);
+          await this._approveTaskWithVariables(status);
+        }
+      },
+      // async handleAudit(status, type) {
+      //   //生产主管审批选择技术员
 
-        // if (!this.form.technicianId && status == 1) {
-        //   this.$message.warning(`请选择采购员!`);
-        //   return;
-        // }
+      //   // if (!this.form.technicianId && status == 1) {
+      //   //   this.$message.warning(`请选择采购员!`);
+      //   //   return;
+      //   // }
 
-        this._approveTaskWithVariables(status);
-      },
+      //   this._approveTaskWithVariables(status);
+      // },
       rejectTask(status) {
         rejectTask({
           id: this.taskId,
@@ -156,7 +221,7 @@
             reason: this.form.reason,
             pass: true
           }).then((res) => {
-            if (res.data.code != '-1') {
+            if (res.data.code != '-1') { 
               this.$emit('handleAudit', {
                 status,
                 title: ''

+ 8 - 8
src/views/bpm/handleTask/components/saleOrder/detailDialog.vue

@@ -110,34 +110,34 @@
               {{ form.contractNumber }}
             </el-form-item>
             <el-form-item
-              label="总数"
+              label="总数"
               prop="totalPlanNum"
               v-if="form.needProduce == 4"
             >
               {{ form.totalPlanNum }}
               {{ form.planNumUnit }}
             </el-form-item>
-            <el-form-item label="交易方式" prop="transactionMode">
+            <el-form-item label="交易方式" prop="transactionMode">
               {{ transactionMethodsOp.find(item => item.value == form.transactionMode)?.label }}
             </el-form-item>
-            <el-form-item label="发货模式" prop="deliveryMode">
+            <el-form-item label="发货模式" prop="deliveryMode">
               {{ shippingModeOp.find(item => item.value == form.deliveryMode)?.label }}
             </el-form-item>
-            <el-form-item label="结算方式" prop="settlementMode">
+            <el-form-item label="结算方式" prop="settlementMode">
               {{ detailData.settlementModeName }}
             </el-form-item>
-            <el-form-item v-if="form.settlementMode == 1" label="结算日期范围" prop="settlementDate">
+            <el-form-item v-if="form.settlementMode == 1" label="结算日期范围" prop="settlementDate">
               {{ form.settlementDate }}
             </el-form-item>
 
-            <el-form-item v-if="form.settlementMode == 2" label="结算月份范围" prop="settlementDate">
+            <el-form-item v-if="form.settlementMode == 2" label="结算月份范围" prop="settlementDate">
               {{ form.settlementDate }}
             </el-form-item>
-            <el-form-item  v-if="form.settlementMode == 2" label="收款日期" prop="receiptDate">
+            <el-form-item  v-if="form.settlementMode == 2" label="收款日期" prop="receiptDate">
               每月{{ form.receiptDate }}日
             </el-form-item>
             <el-form-item
-              label="期数"
+              label="期数"
               prop="issueNumber"
             >
               {{ form.issueNumber }}期