فهرست منبع

feat(inspectionPlan): 点检计划支持班组/个人指派方式

- 新增 assignType 选择(班组/个人),详情与下发状态下禁用
lihaiting 4 روز پیش
والد
کامیت
1bb6e593c4
2فایلهای تغییر یافته به همراه79 افزوده شده و 41 حذف شده
  1. 53 40
      src/views/inspectionPlan/components/new-baseInfo.vue
  2. 26 1
      src/views/inspectionPlan/components/new-edit.vue

+ 53 - 40
src/views/inspectionPlan/components/new-baseInfo.vue

@@ -42,9 +42,22 @@
           ></DictSelection>
         </el-form-item>
       </el-col>
-      <el-col :span="6">
+      <el-col :span="6" style="height: 58px">
+        <el-form-item label="班组/个人" prop="assignType">
+          <el-select
+            v-model="form.assignType"
+            size="small"
+            @change="typeChange"
+            style="width: 100%"
+            :disabled="btnType == 'detail' || btnType == 'issued'"
+          >
+            <el-option :value="1" label="班组"></el-option>
+            <el-option :value="0" label="个人"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>
+      <!-- <el-col :span="6">
         <el-form-item label="计量类型" prop="inspectionStandards">
-          <!-- 计量 计重 -->
           <el-select
             style="width: 100%"
             v-model="form.inspectionStandards"
@@ -65,7 +78,7 @@
             ></el-option>
           </el-select>
         </el-form-item>
-      </el-col>
+      </el-col> -->
     </el-row>
     <el-row>
       <el-col :span="6">
@@ -88,20 +101,36 @@
           />
         </el-form-item>
       </el-col>
-      <el-col :span="6" style="height: 58px">
-        <el-form-item label="班组/个人" prop="assignType">
+      <el-col :span="6" v-if="!form.assignType">
+        <el-form-item label="接收部门:" prop="groupId">
+          <deptSelect
+            :disabled="btnType == 'detail'"
+            v-model="form.groupId"
+            filterable
+            company-scope
+            @changeGroup="searchDeptNodeClick"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="6" v-if="!form.assignType">
+        <el-form-item label="接收人:" prop="executeId">
           <el-select
-            v-model="form.assignType"
-            size="small"
-            @change="typeChange"
+            :disabled="btnType == 'detail'"
+            v-model="form.executeId"
+            @change="changeExecutor"
+            filterable
             style="width: 100%"
-            :disabled="btnType == 'detail' || btnType == 'issued'"
           >
-            <el-option :value="1" label="班组"></el-option>
-            <el-option :value="0" label="个人"></el-option>
+            <el-option
+              v-for="item in executorList"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
+
       <el-col :span="6" v-if="form.assignType == 1">
         <el-form-item label="班组" prop="teamId">
           <el-select
@@ -138,35 +167,7 @@
           </el-select>
         </el-form-item>
       </el-col>
-      <el-col :span="6" v-if="!form.assignType">
-        <el-form-item label="接收部门:" prop="groupId">
-          <deptSelect
-            :disabled="btnType == 'detail'"
-            v-model="form.groupId"
-            filterable
-            company-scope
-            @changeGroup="searchDeptNodeClick"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col :span="6" v-if="!form.assignType">
-        <el-form-item label="接收人:" prop="executeId">
-          <el-select
-            :disabled="btnType == 'detail'"
-            v-model="form.executeId"
-            @change="changeExecutor"
-            filterable
-            style="width: 100%"
-          >
-            <el-option
-              v-for="item in executorList"
-              :key="item.id"
-              :value="item.id"
-              :label="item.name"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
+
       <el-col :span="18">
         <el-form-item label="周期:" prop="frequencyValue">
           <rule-cycle
@@ -565,6 +566,15 @@
           }
         },
         immediate: false
+      },
+      /* 编辑/详情回显: 按已保存的接收部门加载人员列表, 否则接收人下拉回显不出姓名 */
+      'form.groupId': {
+        immediate: true,
+        handler(val) {
+          if (val && !this.executorList.length) {
+            this.getUserList({ groupId: val });
+          }
+        }
       }
     },
     data() {
@@ -712,6 +722,9 @@
           const params = { groupId: info };
           this.getUserList(params);
           this.form.groupName = row.name;
+          /* 接收部门与接收人联动: 换部门后原接收人不属于新部门, 清空待重选 */
+          this.form.executeId = null;
+          this.form.executeName = '';
         } else {
           this.form.executeGroupId = null;
         }

+ 26 - 1
src/views/inspectionPlan/components/new-edit.vue

@@ -125,6 +125,18 @@
             @columns-change="handleColumnChange"
             :cache-key="cacheKeyUrl"
           >
+            <!-- 主数据来源: 计量数量可手动修改, 改动后同步数量/总重量 -->
+            <template v-slot:measureQuantity="{ row }">
+              <el-input-number
+                v-model="row.measureQuantity"
+                :min="1"
+                :precision="0"
+                :controls="false"
+                size="mini"
+                style="width: 100%"
+                @change="measureQuantityChange(row)"
+              />
+            </template>
             <!-- <template
               v-slot:toolbar
               v-if="this.baseForm.qualityMode == 2 && btnType != 'detail'"
@@ -727,7 +739,16 @@
             }
           },
           { label: '包装单位', prop: 'packingUnit', align: 'center' },
-          { label: '计量数量', prop: 'measureQuantity', align: 'center' },
+          /* 计划来源=主数据(7)时计量数量允许手动修改, 其余来源保持只读 */
+          this.baseForm.planSource == '7' && this.btnType != 'detail'
+            ? {
+                label: '计量数量',
+                prop: 'measureQuantity',
+                align: 'center',
+                slot: 'measureQuantity',
+                width: 140
+              }
+            : { label: '计量数量', prop: 'measureQuantity', align: 'center' },
           { label: '计量单位', prop: 'measureUnit', align: 'center' },
           { label: '物料代号', prop: 'materielDesignation', align: 'center' },
           { label: '客户代号', prop: 'clientCode', align: 'center' },
@@ -1806,6 +1827,10 @@
           return pre.measureQuantity ? acc + Number(pre.measureQuantity) : acc;
         }, 0);
       },
+      /* 主数据来源: 来源清单计量数量手动修改后, 同步基本信息里的数量/总重量 */
+      measureQuantityChange() {
+        this.calculateWeightAndQuantity(this.sourceList);
+      },
       //从来源数组取样到目标数组
       async getNewFullSampleList(
         sampleCount,