Просмотр исходного кода

fix(editModal): 修复使用form.reportWorkType替代reportWorkType的逻辑错误

liujt 3 месяцев назад
Родитель
Сommit
d061aa0c69
1 измененных файлов с 49 добавлено и 24 удалено
  1. 49 24
      src/views/batchRecord/components/editModal.vue

+ 49 - 24
src/views/batchRecord/components/editModal.vue

@@ -52,7 +52,7 @@
                 dictName="记录规则事项类型"
                 v-model="form.itemType"
                 @change="itemTypeChange"
-                :disabled="reportWorkType == 4"
+                :disabled="form.reportWorkType == 4"
               >
               </DictSelection>
             </el-form-item>
@@ -123,11 +123,11 @@
 
         <header-title
           title="基本信息"
-          v-if="form.itemType != 1 && reportWorkType != 4"
+          v-if="form.itemType != 1 && form.reportWorkType != 4"
           style="margin-top: 20px"
         ></header-title>
 
-        <template v-if="form.itemType != 1 && reportWorkType != 4">
+        <template v-if="form.itemType != 1 && form.reportWorkType != 4">
           <el-row>
             <el-col v-if="form.itemType == 2" :span="8">
               <el-form-item
@@ -302,7 +302,7 @@
                 ></el-input>
               </el-form-item>
             </el-col>
-            <el-col v-if="reportWorkType == 2" :span="8">
+            <el-col v-if="form.reportWorkType == 2" :span="8">
               <el-form-item label="产出物">
                 <el-select
                   v-model="form.outputType"
@@ -348,7 +348,7 @@
           </el-col>
           <el-col :span="8">
             <el-form-item
-              v-if="reportWorkType != 4"
+              v-if="form.reportWorkType != 4"
               label="工序名称"
               prop="produceTaskId"
             >
@@ -378,9 +378,9 @@
           <el-col :span="8">
             <el-form-item
               label="产品编码"
-              :required="form.recordTemplateStyle != '3' && reportWorkType != 4"
+              :required="form.recordTemplateStyle != '3' && form.reportWorkType != 4"
               :prop="
-                form.recordTemplateStyle != '3' && reportWorkType != 4
+                form.recordTemplateStyle != '3' && form.reportWorkType != 4
                   ? 'productCode'
                   : ''
               "
@@ -400,9 +400,9 @@
           <el-col :span="8">
             <el-form-item
               label="产品名称"
-              :required="form.recordTemplateStyle != '3' && reportWorkType != 4"
+              :required="form.recordTemplateStyle != '3' && form.reportWorkType != 4"
               :prop="
-                form.recordTemplateStyle != '3' && reportWorkType != 4
+                form.recordTemplateStyle != '3' && form.reportWorkType != 4
                   ? 'productName'
                   : ''
               "
@@ -452,7 +452,7 @@
             <el-form-item
               label="要求生产数量"
               :prop="
-                form.recordTemplateStyle != '3' && reportWorkType != 4
+                form.recordTemplateStyle != '3' && form.reportWorkType != 4
                   ? 'formingNum'
                   : ''
               "
@@ -475,7 +475,7 @@
             form.produceTaskId &&
             form.produceTaskInstanceId &&
             workOrderInfo &&
-            reportWorkType == 2 &&
+            form.reportWorkType == 2 &&
             form.itemType == 2
           "
           ref="materialRef"
@@ -526,7 +526,7 @@
         </template>
 
         <ele-pro-table
-          v-if="form.itemType == 2 && reportWorkType != 4"
+          v-if="form.itemType == 2 && form.reportWorkType != 4"
           v-loading="loading"
           ref="table"
           row-key="id"
@@ -679,7 +679,7 @@
     <selectReleaseRules
       ref="selectReleaseRulesRef"
       @chooseRules="chooseReleaseRules"
-      :notProduceTaskConfig="reportWorkType == 2"
+      :notProduceTaskConfig="form.reportWorkType == 2"
     ></selectReleaseRules>
 
     <programRulesDialog
@@ -808,6 +808,13 @@
           }
         },
         deep: true
+      },
+      reportWorkType: {
+        handler(newVal, oldVal) {
+          console.log('reportWorkType~~~', newVal, oldVal);
+        },
+        immediate: true,
+        deep: true
       }
     },
     data() {
@@ -1072,6 +1079,7 @@
     },
     computed: {
       reportWorkTypeName() {
+        console.log('reportWorkType~~~', this.reportWorkType);
         switch (this.reportWorkType) {
           case 1:
             return '产前准备';
@@ -1171,12 +1179,14 @@
       open(type, data, activeComp = 'main') {
         console.log('data', type, data);
         this.type = type;
-        this.form.reportWorkType = this.reportWorkType;
+        // 优先使用传入数据中的 reportWorkType,否则使用 props 中的值
+        const currentReportWorkType = data.reportWorkType || this.reportWorkType;
+        this.form.reportWorkType = currentReportWorkType;
 
         if (type == 'add') {
-          this.title = `新增${this.reportWorkTypeName}事项`;
+          this.title = `新增${this.getReportWorkTypeName(currentReportWorkType)}事项`;
         } else if (type == 'edit') {
-          this.title = `编辑${this.reportWorkTypeName}事项`;
+          this.title = `编辑${this.getReportWorkTypeName(currentReportWorkType)}事项`;
           this.form.workOrderId = data.workOrderId;
           this.form.id = data.id;
           console.log('this.form', this.form);
@@ -1190,7 +1200,7 @@
             this.getRulesDetiasList(data.ruleId);
           }
         } else if (type == 'detail') {
-          this.title = `${this.reportWorkTypeName}事项`;
+          this.title = `${this.getReportWorkTypeName(currentReportWorkType)}事项`;
           this.form.workOrderId = data.workOrderId;
           this.form.id = data.id;
           if (data.processInstanceId) {
@@ -1209,6 +1219,21 @@
         }
         this.visible = true;
       },
+      // 获取报工类型名称(辅助方法)
+      getReportWorkTypeName(type) {
+        switch (type) {
+          case 1:
+            return '产前准备';
+          case 2:
+            return '过程控制';
+          case 3:
+            return '产后检查';
+          case 4:
+            return '生产统计';
+          default:
+            return '';
+        }
+      },
       // 查询详情
       async getDetias() {
         this.loading = true;
@@ -1329,7 +1354,7 @@
       selectReleaseId() {
         if (this.type == 'detail') return;
         this.$refs.selectReleaseRulesRef.open(
-          this.reportWorkType,
+          this.form.reportWorkType,
           this.form.produceTaskId
         );
       },
@@ -1379,7 +1404,7 @@
       // 获取工序列表
       async getProductTaskList(id) {
         // 生产统计不关联工序
-        if (this.reportWorkType == 4) return;
+        if (this.form.reportWorkType == 4) return;
         const data = await getTaskInstanceList(id);
         console.log('data 工序列表', data);
         this.produceTaskList = data.filter(
@@ -1468,12 +1493,12 @@
       },
       // 记录规则保存或者 一键报工
       async releaseRulesSaveOrSubmit(type) {
-        if (this.form.executeUsersIds.length == 0 && this.reportWorkType != 4) {
+        if (this.form.executeUsersIds.length == 0 && this.form.reportWorkType != 4) {
           this.$message.warning('请选择执行人!');
           return;
         }
 
-        if (this.form.duration <= 0 && this.reportWorkType != 4) {
+        if (this.form.duration <= 0 && this.form.reportWorkType != 4) {
           this.$message.warning('工时必须大于0!');
           return;
         }
@@ -1482,7 +1507,7 @@
         if (
           type.includes('submit') &&
           this.form.recordTemplateStyle != '3' &&
-          this.reportWorkType != 4
+          this.form.reportWorkType != 4
         ) {
           // 验证检查项目
           const detailRequired = this.form.details.some((i) => {
@@ -1509,7 +1534,7 @@
         }
 
         //
-        if (this.reportWorkType == 4) {
+        if (this.form.reportWorkType == 4) {
           // 延迟 500ms 等待公式计算
           await new Promise((resolve) => setTimeout(resolve, 700));
         }
@@ -1675,7 +1700,7 @@
       async getListByWorkOrderId(type = '') {
         if (
           !this.form.produceTaskId ||
-          this.reportWorkType != 2 ||
+          this.form.reportWorkType != 2 ||
           this.form.itemType != 2
         )
           return;