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 ++++++++++++++++++++++----------
src/views/projectEngineering/projectLibrary/projectDetails.vue | 59 +++++++++++++-
2 files changed, 141 insertions(+), 48 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: []})
});
},
diff --git a/src/views/projectEngineering/projectLibrary/projectDetails.vue b/src/views/projectEngineering/projectLibrary/projectDetails.vue
index 0cec26a..60a7a06 100644
--- a/src/views/projectEngineering/projectLibrary/projectDetails.vue
+++ b/src/views/projectEngineering/projectLibrary/projectDetails.vue
@@ -127,6 +127,32 @@
// },
],
childRef: null,
+ rules: [
+ {name: 'projectName', message: '璇疯緭鍏ラ」鐩悕绉�'},
+ {name: 'content', message: '璇疯緭鍏ュ缓璁惧唴瀹�'},
+ {name: 'fundTypeList', message: '璇烽�夋嫨璧勯噾绫诲瀷'},
+ {name: 'investType', message: '璇烽�夋嫨椤圭洰鎶曡祫绫诲埆'},
+ {name: 'constructionNature', message: '璇烽�夋嫨寤鸿鎬ц川'},
+ {name: 'attractInvestment', message: '璇烽�夋嫨鏄惁鎷涘晢寮曡祫椤圭洰'},
+ {name: 'projectType', message: '璇烽�夋嫨椤圭洰鎺ㄨ繘绫诲瀷'},
+ {name: 'projectStatus', message: '璇烽�夋嫨椤圭洰鐘舵��'},
+ {name: 'projectPhase', message: '璇烽�夋嫨椤圭洰闃舵'},
+ {name: 'projectContactPerson', message: '璇疯緭鍏ラ」鐩仈绯讳汉'},
+ {name: 'contact', message: '璇疯緭鍏ラ」鐩仈绯绘柟寮�'},
+ {name: 'projectOwnerUnit', message: '璇烽�夋嫨椤圭洰涓氫富鍗曚綅'},
+ {name: 'competentDepartment', message: '璇烽�夋嫨涓荤閮ㄩ棬'},
+ {name: 'competentDepartmentPerson', message: '璇烽�夋嫨涓荤閮ㄩ棬鑱旂郴浜�'},
+ {name: 'competentDepartmentPhone', message: '璇疯緭鍏ヤ富绠¢儴闂ㄨ仈绯绘柟寮�'},
+ {name: 'area', message: '璇烽�夋嫨琛屾斂鍖哄垝'},
+ {name: 'managementCentralizationList', message: '璇烽�夋嫨绠$悊褰掑彛'},
+ {name: 'projectApprovalType', message: '璇烽�夋嫨椤圭洰瀹℃壒绫诲瀷'},
+ {name: 'importanceTypeList', message: '璇烽�夋嫨閲嶇偣鍒嗙被'},
+ {name: 'planStartTime', message: '璇烽�夋嫨璁″垝寮�宸ユ椂闂�'},
+ {name: 'planCompleteTime', message: '璇烽�夋嫨璁″垝绔e伐鏃堕棿'},
+ {name: 'industryCompetentDepartment', message: '璇烽�夋嫨琛屼笟涓荤閮ㄩ棬'},
+ {name: 'industryCompetentDepartmentPerson', message: '璇疯緭鍏ヨ涓氫富绠¢儴闂ㄨ仈绯讳汉'},
+ {name: 'departmentPersonPhone', message: '璇疯緭鍏ヨ涓氫富绠¢儴闂ㄨ仈绯绘柟寮�'},
+ ]
};
},
methods: {
@@ -187,13 +213,34 @@
},
saveProject(num) {
this.projectForm.projectInfoForm.usedStatus = num;
- editProject(this.projectForm).then((res) => {
- this.$message.success("淇濆瓨鎴愬姛");
- this.$store.dispatch("tagsView/delView", this.$route);
- this.$router.push('/projectEngineering/project/projectLibrary')
- })
- }
+ const msg = this.formValidate()
+ if (msg && num != 0) { // 鑽夌涓嶆牎楠�
+ this.$message.error(msg)
+ } else {
+ editProject(this.projectForm).then((res) => {
+ this.$message.success("淇濆瓨鎴愬姛");
+ this.$store.dispatch("tagsView/delView", this.$route);
+ this.$router.push('/projectEngineering/project/projectLibrary')
+ })
+ }
+ },
+ /**
+ * 涓存椂浣跨敤杩欑鏂瑰紡鏍¢獙
+ */
+ formValidate() {
+ let msg = "";
+ for (let i = 0; i < this.rules.length; i++) {
+ console.log(this.projectForm)
+ console.log(this.rules[i].name)
+ console.log(this.projectForm.projectInfoForm[this.rules[i].name])
+ if (! this.projectForm.projectInfoForm[this.rules[i].name]) {
+ msg = this.rules[i].message
+ break
+ }
+ }
+ return msg;
+ },
},
mounted() {
if (this.$route.query.disabled) {
--
Gitblit v1.8.0