From 1fd7679f4345963c41dea9ad1c4d4c3e572b6148 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 25 二月 2025 22:29:59 +0800
Subject: [PATCH] 表单验证、项目信息显示bug

---
 src/views/projectEngineering/projectLibrary/component/BasicInfo.vue |  130 +++++++++++++++++++++++++++++--------------
 1 files changed, 88 insertions(+), 42 deletions(-)

diff --git a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
index d27e24c..d1b3f82 100644
--- a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
+++ b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
@@ -48,7 +48,7 @@
 
           <el-row :gutter="20">
             <el-col :span="6">
-              <el-form-item label="璧勯噾绫诲瀷" label-width="100px"  style="width: 100%">
+              <el-form-item label="璧勯噾绫诲瀷" label-width="100px" prop="fundTypeList"  style="width: 100%">
                 <el-select
                   v-model="projectForm.fundTypeList"
                   clearable
@@ -119,7 +119,7 @@
 <!--            </el-col>-->
 
             <el-col :span="6">
-              <el-form-item label="椤圭洰鐘舵��" label-width="100px" prop="projectstatus" style="width: 100%">
+              <el-form-item label="椤圭洰鐘舵��" label-width="100px" prop="projectStatus" style="width: 100%">
                 <el-select v-model="projectForm.projectStatus" clearable placeholder="璇烽�夋嫨" @change="handleProjectStatusChange" style="width: 100%">
                   <el-option v-for="item in dict.type.sys_project_status" :key="item.value" :label="item.label"
                              :value="item.value"/>
@@ -154,14 +154,13 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <!-- TODO锛氭殏鏃朵笉鍋� -->
-              <el-form-item label="椤圭洰涓氫富鍗曚綅" label-width="100px" prop="engineering" style="width: 100%">
+              <el-form-item label="椤圭洰涓氫富鍗曚綅" label-width="100px" prop="projectOwnerUnit" style="width: 100%">
                 <!--            <el-input v-model.trim="getEngineeringName" class="item" clearable disabled maxlength="255" placeholder="璇峰湪宸ョ▼涓�夋嫨椤圭洰" />-->
 <!--                <el-select v-model="projectForm.engineeringIdList" :multiple="true" collapse-tags placeholder="璇烽�夋嫨"-->
 <!--                           style="width: 100%">-->
 <!--                <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="閫夋嫨涓婄骇閮ㄩ棬" />-->
 
-                <treeselect v-model="projectForm.projectOwnerUnit" :disabled="disabled" :options="selectOptions"  noChildrenText="鏃犲尮閰嶆暟鎹�" :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
+                <treeselect v-model="projectForm.projectOwnerUnit" :disabled="disabled" :options="selectOptions" @input="getProjectOwnerUnit" noChildrenText="鏃犲尮閰嶆暟鎹�" :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
                   <!--              <RemoteSelect v-if="selectOptions.length" :hasMore="hasMore" :loading="loading" :page="page" @loadMore="handleLoadMore" />-->
 <!--                </el-select>-->
               </el-form-item>
@@ -170,11 +169,11 @@
           <el-row :gutter="20">
             <el-col :span="6">
               <el-form-item label="涓荤閮ㄩ棬" label-width="100px" prop="competentDepartment" style="width: 100%">
-                <treeselect v-model="projectForm.competentDepartment" :disabled="disabled" @input="getCompetentDepartmentInfo" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="approvalList"  :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
+                <treeselect v-model="competentDepartment" :disabled="disabled" @input="getCompetentDepartmentInfo" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="approvalList"  :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="涓荤閮ㄩ棬鑱旂郴浜�" label-width="140px" style="width: 100%">
+              <el-form-item label="涓荤閮ㄩ棬鑱旂郴浜�" prop="competentDepartmentPerson" label-width="140px" style="width: 100%">
                 <el-select
                   v-model="projectForm.competentDepartmentPerson"
                   clearable
@@ -194,7 +193,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="涓荤閮ㄩ棬鑱旂郴鏂瑰紡" label-width="140px" style="width: 100%">
+              <el-form-item label="涓荤閮ㄩ棬鑱旂郴鏂瑰紡" prop="competentDepartmentPhone" label-width="140px" style="width: 100%">
                 <el-input
                   v-model="projectForm.competentDepartmentPhone"
                   clearable
@@ -218,7 +217,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="绠$悊褰掑彛" label-width="100px" style="width: 100%">
+              <el-form-item label="绠$悊褰掑彛" prop="managementCentralizationList" label-width="100px" style="width: 100%">
                 <el-select
                   v-model="projectForm.managementCentralizationList"
                   clearable
@@ -234,7 +233,7 @@
           </el-row>
           <el-row :gutter="20">
             <el-col :span="6">
-              <el-form-item label="椤圭洰瀹℃壒绫诲瀷" label-width="100px" style="width: 100%">
+              <el-form-item label="椤圭洰瀹℃壒绫诲瀷" prop="projectApprovalType" label-width="100px" style="width: 100%">
                 <el-select
                   v-model="projectForm.projectApprovalType"
                   clearable
@@ -247,13 +246,13 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="鎶曡祫绫诲埆" label-width="100px" style="width: 100%">
+              <el-form-item label="鎶曡祫绫诲埆" prop="largeCategory" label-width="100px" style="width: 100%">
                 <el-input v-model="largeCategory" clearable disabled placeholder="璇烽�夋嫨澶х被" style="width: 49%"/>
                 <el-input v-model="subclass" clearable disabled placeholder="璇烽�夋嫨灏忕被" style="width: 49%;margin-left: 2%"/>
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="閲嶇偣鍒嗙被" label-width="100px" style="width: 100%">
+              <el-form-item label="閲嶇偣鍒嗙被" prop="importanceTypeList" label-width="100px" style="width: 100%">
                 <el-select
                   v-model="projectForm.importanceTypeList"
                   :multiple="true"
@@ -265,9 +264,6 @@
                 </el-select>
               </el-form-item>
             </el-col>
-
-
-
 
           </el-row>
           <el-row :gutter="20">
@@ -281,7 +277,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="璁″垝寮�宸ユ椂闂�" label-width="100px" style="width: 100%">
+              <el-form-item label="璁″垝寮�宸ユ椂闂�" prop="planStartTime" label-width="100px" style="width: 100%">
                 <el-date-picker v-model="projectForm.planStartTime "
                                 placeholder="閫夋嫨鏃堕棿"
                                 style="width: 100%"
@@ -290,7 +286,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="璁″垝绔e伐鏃堕棿" label-width="100px" style="width: 100%">
+              <el-form-item label="璁″垝绔e伐鏃堕棿" prop="planCompleteTime" label-width="100px" style="width: 100%">
                 <el-date-picker v-model="projectForm.planCompleteTime "
                                 placeholder="閫夋嫨鏃堕棿"
                                 style="width: 100%"
@@ -302,11 +298,11 @@
           <el-row :gutter="20">
             <el-col :span="6">
               <el-form-item label="琛屼笟涓荤閮ㄩ棬" label-width="100px" prop="industryCompetentDepartment" style="width: 100%">
-                <treeselect v-model="projectForm.industryCompetentDepartment" :disabled="disabled" noChildrenText="鏃犲尮閰嶆暟鎹�" @input="getIndustryCompetentDepartmentInfo" :options="approvalList"  :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
+                <treeselect v-model="industryCompetentDepartment" :disabled="disabled" noChildrenText="鏃犲尮閰嶆暟鎹�" @input="getIndustryCompetentDepartmentInfo" :options="approvalList"  :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="琛屼笟涓荤閮ㄩ棬鑱旂郴浜�" label-width="160px" style="width: 100%">
+              <el-form-item label="琛屼笟涓荤閮ㄩ棬鑱旂郴浜�" prop="industryCompetentDepartmentPerson" label-width="160px" style="width: 100%">
                 <el-select
                   v-model="projectForm.industryCompetentDepartmentPerson"
                   clearable
@@ -326,7 +322,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="琛屼笟涓荤閮ㄩ棬鑱旂郴鏂瑰紡" label-width="160px" style="width: 100%">
+              <el-form-item label="琛屼笟涓荤閮ㄩ棬鑱旂郴鏂瑰紡" prop="departmentPersonPhone" label-width="160px" style="width: 100%">
                 <el-input
                   v-model="projectForm.departmentPersonPhone"
                   clearable
@@ -503,6 +499,8 @@
     return {
       tagList: [],
       projectSubTypeList: [], // 椤圭洰瀛愮被鍨�
+      competentDepartment: '',
+      industryCompetentDepartment: '',
       projectForm: {
         id: '',
         projectName: '',
@@ -579,8 +577,32 @@
       mapCreateInfo: {},
       demoFormRef: null,
       rules: {
-        projectName: [{required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur'}]
-      }
+        projectName: [{required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur'}],
+        content: [{required: true, message: '璇疯緭鍏ュ缓璁惧唴瀹�', trigger: 'blur'}],
+        fundTypeList: [{required: true, message: '璇烽�夋嫨璧勯噾绫诲瀷', trigger: 'change'}],
+        investType: [{required: true, message: '璇烽�夋嫨椤圭洰鎶曡祫绫诲埆', trigger: 'change'}],
+        constructionNature: [{required: true, message: '璇烽�夋嫨寤鸿鎬ц川', trigger: 'change'}],
+        attractInvestment: [{required: true, message: '璇烽�夋嫨鏄惁鎷涘晢寮曡祫椤圭洰', trigger: 'change'}],
+        projectType: [{required: true, message: '璇烽�夋嫨椤圭洰鎺ㄨ繘绫诲瀷', trigger: 'change'}],
+        projectStatus: [{required: true, message: '璇烽�夋嫨椤圭洰鐘舵��', trigger: 'change'}],
+        projectPhase: [{required: true, message: '璇烽�夋嫨椤圭洰闃舵', trigger: 'change'}],
+        projectContactPerson: [{required: true, message: '璇疯緭鍏ラ」鐩仈绯讳汉', trigger: 'blur'}],
+        contact: [{required: true, message: '璇疯緭鍏ラ」鐩仈绯绘柟寮�', trigger: 'blur'}],
+        projectOwnerUnit: [{required: true, message: '璇烽�夋嫨椤圭洰涓氫富鍗曚綅', trigger: 'change'}],
+        competentDepartment: [{required: true, message: '璇烽�夋嫨涓荤閮ㄩ棬', trigger: 'change'}],
+        competentDepartmentPerson: [{required: true, message: '璇烽�夋嫨涓荤閮ㄩ棬鑱旂郴浜�', trigger: 'change'}],
+        competentDepartmentPhone: [{required: true, message: '璇疯緭鍏ヤ富绠¢儴闂ㄨ仈绯绘柟寮�', trigger: 'blur'}],
+        area: [{required: true, message: '璇烽�夋嫨琛屾斂鍖哄垝', trigger: 'change'}],
+        managementCentralizationList: [{required: true, message: '璇烽�夋嫨绠$悊褰掑彛', trigger: 'change'}],
+        projectApprovalType: [{required: true, message: '璇烽�夋嫨椤圭洰瀹℃壒绫诲瀷', trigger: 'change'}],
+        importanceTypeList: [{required: true, message: '璇烽�夋嫨閲嶇偣鍒嗙被', trigger: 'change'}],
+        planStartTime: [{required: true, message: '璇烽�夋嫨璁″垝寮�宸ユ椂闂�', trigger: 'change'}],
+        planCompleteTime: [{required: true, message: '璇烽�夋嫨璁″垝绔e伐鏃堕棿', trigger: 'change'}],
+        industryCompetentDepartment: [{required: true, message: '璇烽�夋嫨琛屼笟涓荤閮ㄩ棬', trigger: 'change'}],
+        industryCompetentDepartmentPerson: [{required: true, message: '璇疯緭鍏ヨ涓氫富绠¢儴闂ㄨ仈绯讳汉', trigger: 'blur'}],
+        departmentPersonPhone: [{required: true, message: '璇疯緭鍏ヨ涓氫富绠¢儴闂ㄨ仈绯绘柟寮�', trigger: 'blur'}],
+      },
+      needClearPeople: true
     };
   },
   computed: {
@@ -601,12 +623,6 @@
 
     if (projectForm) {
       this.projectForm = JSON.parse(projectForm);
-      if (this.projectForm.industryCompetentDepartment) {
-        // 鏍规嵁閫変腑鐨勯儴闂↖D鏌ヨ浜哄憳
-        getByDept(this.projectForm.industryCompetentDepartment).then((res) => {
-          this.personList = res.data;
-        })
-      }
       if (this.projectForm.projectType) {
         // 鏍规嵁椤圭洰绫诲瀷鏌ュ瓙绫诲瀷
         getDicts("sys_project_type").then(res => {
@@ -619,6 +635,8 @@
         })
       }
       this.$emit('updateIsShow', true);
+      this.competentDepartment = this.projectForm.competentDepartment
+      this.industryCompetentDepartment = this.projectForm.industryCompetentDepartment
     } else {
       this.projectForm.id = this.$route.query.projectId;
       // 鍦ㄧ粍浠跺垱寤烘椂鑾峰彇椤圭洰淇℃伅锛屽鏋� projectId 瀛樺湪
@@ -630,17 +648,29 @@
       }
       // this.handleLoadMore(1);
     }
-    console.log(this.projectForm, "鍘熷鍊�")
+
     this.$nextTick(() => {
-      console.log("璁剧疆浜�")
       this.tagList = this.projectForm.tag ? this.projectForm.tag.split(",") : []
-      console.log(this.tagList)
     })
   },
   beforeDestroy() {
     localStorage.setItem("projectForm", JSON.stringify(this.projectForm));
   },
   methods: {
+    getIndustryCompetentDepartmentPeople(deptId) {
+      // 鏍规嵁閫変腑鐨勯儴闂↖D鏌ヨ浜哄憳
+      getByDept(deptId).then((res) => {
+        this.personList = res.data;
+        this.personList.forEach(item => item.userId += '')
+      })
+    },
+    getCompetentDepartmentPeople(deptId) {
+      // 鏍规嵁閫変腑鐨勯儴闂↖D鏌ヨ浜哄憳
+      getByDept(deptId).then((res) => {
+        this.deptPersonList = res.data;
+        this.deptPersonList.forEach(item => item.userId += '')
+      })
+    },
     getTagList(list) {
       console.log("鎷垮埌浜�")
       if (!list || list.length < 1) {
@@ -691,28 +721,41 @@
     },
     getIndustryCompetentDepartmentInfo(deptId) {
       if (deptId) {
-        getByDept(deptId).then((res) => {
-          this.personList = res.data;
-        })
+        if (this.projectForm.industryCompetentDepartment != deptId) {
+          this.projectForm.industryCompetentDepartmentPerson = ""
+          this.projectForm.departmentPersonPhone = ""
+        }
+        this.projectForm.industryCompetentDepartment = deptId
+        this.getIndustryCompetentDepartmentPeople(deptId)
       } else {
+        this.projectForm.industryCompetentDepartment = ''
         this.personList = [];
+      }
+    },
+    getProjectOwnerUnit(deptId) {
+      if (deptId) {
+        this.projectForm.projectOwnerUnit = deptId
+      } else {
+        this.projectForm.projectOwnerUnit = ''
       }
     },
     getCompetentDepartmentInfo(deptId) {
       if (deptId) {
-        getByDept(deptId).then((res) => {
-          this.deptPersonList = res.data;
-        })
+        if (this.projectForm.competentDepartment != deptId) {
+          this.projectForm.competentDepartmentPerson = ""
+          this.projectForm.competentDepartmentPhone = ""
+        }
+        this.projectForm.competentDepartment = deptId
+        this.getCompetentDepartmentPeople(deptId)
       } else {
+        this.projectForm.competentDepartment = ''
         this.deptPersonList = [];
       }
     },
     handleDepartmentChange(departmentId) {
       if (departmentId) {
         // 鏍规嵁閫変腑鐨勯儴闂↖D鏌ヨ浜哄憳
-        getByDept(departmentId).then((res) => {
-          this.personList = res.data;
-        })
+        this.getIndustryCompetentDepartmentPeople(departmentId)
       } else {
         // 濡傛灉鏈�夋嫨閮ㄩ棬锛屾竻绌轰汉鍛樺垪琛�
         this.personList = [];
@@ -779,18 +822,21 @@
           this.tagList = this.projectForm.tag ? this.projectForm.tag.split(",") : []
           console.log(this.tagList)
         })
+        this.competentDepartment = this.projectForm.competentDepartment
+        this.industryCompetentDepartment = this.projectForm.industryCompetentDepartment
       });
     },
     getApprovalList() {
       approvalList().then(res => {
-        this.approvalList = this.handleTree(res.data, "deptId");;
+        this.approvalList = this.handleTree(res.data, "deptId");
+        this.approvalList.push({deptId: '', deptName: '鏃�', children: []})
       });
     },
     getDeptList(){
       listDept().then(response => {
         console.log(response.data)
-
         this.selectOptions = this.handleTree(response.data, "deptId");
+        this.selectOptions.push({deptId: '', deptName: '鏃�', children: []})
       });
     },
 

--
Gitblit v1.8.0