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

优化部门选择组件并新增按名称定位功能,同时调整接收人表单校验规则

yusheng 5 месяцев назад
Родитель
Сommit
1050f63c8b

+ 48 - 1
src/components/CommomSelect/dept-select.vue

@@ -12,7 +12,6 @@
     @change="changeChoose"
     ref="treeSelect"
     v-bind="$attrs"
-
   />
 </template>
 
@@ -55,6 +54,54 @@
           val,
           this.$refs.treeSelect.getNodeByValue(val)
         );
+      },
+      async locateByName(code) {
+        await this.getData();
+        const res = this.findNodesByNameWithPath(this.treeData, code);
+
+        console.log(res);
+        if (!res.length) return;
+
+        const { node, path } = res[0];
+
+        this.$nextTick(() => {
+          // 设置选中
+          this.updateValue(node.id);
+          this.changeChoose(node.id);
+
+          // 展开树路径
+          const tree = this.$refs.treeSelect?.$refs?.tree;
+          if (!tree) return;
+
+          path.forEach((p) => {
+            const treeNode = tree.store.nodesMap[p.id];
+            treeNode && treeNode.expand();
+          });
+        });
+      },
+
+      findNodesByNameWithPath(tree, code) {
+        const result = [];
+
+        function dfs(list, path = []) {
+          list.forEach((node) => {
+            const currentPath = [...path, node];
+
+            if (node.groupCode == code) {
+              result.push({
+                node,
+                path: currentPath
+              });
+            }
+
+            if (node.children?.length) {
+              dfs(node.children, currentPath);
+            }
+          });
+        }
+
+        dfs(tree);
+        return result;
       }
     }
   };

+ 22 - 5
src/views/inspectionProjectTask/components/inspectionProjectTaskSend.vue

@@ -75,10 +75,19 @@
             <deptSelect
               v-model="form.receiveDeptId"
               @changeGroup="searchDeptNodeClick"
+              ref="deptSelect"
             /> </el-form-item
         ></el-col>
         <el-col :span="8">
-          <el-form-item label="接收人" prop="receiveUserId">
+          <el-form-item
+            label="接收人"
+            prop="receiveUserId"
+            :rules="{
+              required: clientEnvironmentId != 9 ? true : false,
+              message: '请选择人员',
+              trigger: 'change'
+            }"
+          >
             <el-select
               v-model="form.receiveUserId"
               @change="changeExecutor"
@@ -238,9 +247,9 @@
           receiveDeptId: [
             { required: true, message: '请选择部门', trigger: 'blur' }
           ],
-          receiveUserId: [
-            { required: true, message: '请选择人员', trigger: 'blur' }
-          ],
+          // receiveUserId: [
+          //   { required: true, message: '请选择人员', trigger: 'blur' }
+          // ],
           name: [
             { required: true, message: '请输入任务名称', trigger: 'blur' }
           ],
@@ -250,13 +259,16 @@
         },
         templateIdS: [],
         loading: false,
-        visible: false
+        visible: false,
+        clientEnvironmentId: 0
       };
     },
 
     created() {},
     methods: {
       async open(row, type, pgaeName) {
+        this.clientEnvironmentId =
+          this.$store.state.user.info.clientEnvironmentId;
         this.type = type;
         this.pgaeName = pgaeName;
         this.visible = true;
@@ -277,6 +289,11 @@
           }
         } else {
           this.form.qualityWorkOrderId = row.id;
+          if (this.type == 2 && this.clientEnvironmentId == 9) {
+            this.$nextTick(() => {
+              this.$refs.deptSelect?.locateByName('BM1801');
+            });
+          }
         }
         //获取工单质检方案
         await getById(this.form.qualityWorkOrderId).then((res) => {