Commit 8ad97887 authored by tianhongyang's avatar tianhongyang

咨询机构项目详情编辑 对接完毕

parent b12f74d0
...@@ -38,7 +38,7 @@ export const getConsultingOrgEenterpriseDetailWithSearchApi = (params) => reques ...@@ -38,7 +38,7 @@ export const getConsultingOrgEenterpriseDetailWithSearchApi = (params) => reques
* @param {*} params * @param {*} params
* @returns * @returns
*/ */
export const getgetConsultingOrgProjectDetailApi = (params) => request({ export const getConsultingOrgProjectDetailApi = (params) => request({
url: "/advisory/body/getProjectDetail", url: "/advisory/body/getProjectDetail",
method: "get", method: "get",
params params
...@@ -55,4 +55,15 @@ export const searchConsultingApi = (advisoryBodyName) => request({ ...@@ -55,4 +55,15 @@ export const searchConsultingApi = (advisoryBodyName) => request({
params: { params: {
advisoryBodyName advisoryBodyName
} }
});
/**
* 更新咨询机构结算信息
* @param {*} data
* @returns
*/
export const updateConsultingDetailApi = (data) => request({
url: "/advisory/body/editAdvisoryBody",
method: "post",
data
}); });
\ No newline at end of file
<template> <template>
<div class="consulting-agency-container"> <div class="consulting-agency-container">
<el-form :model="comProjectDetailInfo" :rules="rules" :show-message="false" class="basic-engineering-information-inner"> <el-form :model="comProjectDetailInfo" :rules="rules" :show-message="false" class="basic-engineering-information-inner"
ref="comProjectDetailForm">
<!-- 基础信息 --> <!-- 基础信息 -->
<div class="project-basic-information"> <div class="project-basic-information">
<div class="info-module-title"><span>基础信息</span></div> <div class="info-module-title"><span>基础信息</span></div>
...@@ -124,8 +125,8 @@ ...@@ -124,8 +125,8 @@
</div> </div>
<el-form-item label="" v-if="comIsModify" prop="advisoryBodyProject.isFinalJudgeUnit"> <el-form-item label="" v-if="comIsModify" prop="advisoryBodyProject.isFinalJudgeUnit">
<el-radio-group v-model="comProjectDetailInfo.advisoryBodyProject.isFinalJudgeUnit"> <el-radio-group v-model="comProjectDetailInfo.advisoryBodyProject.isFinalJudgeUnit">
<el-radio :label="0"></el-radio> <el-radio :label="'0'"></el-radio>
<el-radio :label="1"></el-radio> <el-radio :label="'1'"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</td> </td>
...@@ -157,8 +158,8 @@ export default { ...@@ -157,8 +158,8 @@ export default {
watch: { watch: {
projectDetailInfo: { projectDetailInfo: {
handler(newValue, oldValue) { handler(newValue, oldValue) {
this.comProjectDetailInfo = JSON.parse(JSON.stringify(newValue)); this.setInitData(this.comProjectDetailInfo, JSON.parse(JSON.stringify(newValue)), "comProjectDetailInfo");
this.oldComProjectDetailInfo = JSON.parse(JSON.stringify(oldValue)); this.setInitData(this.oldComProjectDetailInfo, JSON.parse(JSON.stringify(oldValue)), "oldComProjectDetailInfo");
}, },
deep: true deep: true
}, },
...@@ -171,18 +172,18 @@ export default { ...@@ -171,18 +172,18 @@ export default {
data() { data() {
const phoneValidator = (rule, value, callback) => { const phoneValidator = (rule, value, callback) => {
const phoneReg = /^1[3-9]\d{9}$/; const phoneReg = /^1[3-9]\d{9}$/;
if (!value && !value?.toString()?.trim()) { // if (!value && !value?.toString()?.trim()) {
return callback(new Error(`请输入项目负责人联系电话`)); // return callback(new Error(`请输入项目负责人联系电话`));
} // }
if (value && !phoneReg.test(value)) { if (value && !phoneReg.test(value)) {
return callback(new Error(`请输入正确的手机号码`)); return callback(new Error(`请输入正确的联系电话`));
} }
return callback(); return callback();
}; };
return { return {
comIsModify: this.isModify, comIsModify: this.isModify,
comProjectDetailInfo: JSON.parse(JSON.stringify(this.projectDetailInfo)), comProjectDetailInfo: {},
oldComProjectDetailInfo: JSON.parse(JSON.stringify(this.projectDetailInfo)), oldComProjectDetailInfo: {},
rules: { rules: {
"advisoryBody.advisoryBodyName": [{ required: true, trigger: ["blur", "change"], message: "咨询机构名称不能为空" }], "advisoryBody.advisoryBodyName": [{ required: true, trigger: ["blur", "change"], message: "咨询机构名称不能为空" }],
"advisoryBodyProject.projectLeaderPhone": [{ required: true, trigger: ["blur", "change"], validator: phoneValidator }], "advisoryBodyProject.projectLeaderPhone": [{ required: true, trigger: ["blur", "change"], validator: phoneValidator }],
...@@ -193,6 +194,8 @@ export default { ...@@ -193,6 +194,8 @@ export default {
}, },
//可访问data属性 //可访问data属性
created() { created() {
this.setInitData(this.comProjectDetailInfo, JSON.parse(JSON.stringify(this.projectDetailInfo)), "comProjectDetailInfo");
this.setInitData(this.oldComProjectDetailInfo, JSON.parse(JSON.stringify(this.projectDetailInfo)), "oldComProjectDetailInfo");
this.setTableKeyWidth(); this.setTableKeyWidth();
}, },
//计算集 //计算集
...@@ -201,6 +204,12 @@ export default { ...@@ -201,6 +204,12 @@ export default {
}, },
//方法集 //方法集
methods: { methods: {
setInitData(originData, mergeData, mergeKey) {
if (!mergeData.advisoryBody) mergeData.advisoryBody = {};
if (!mergeData.advisoryBodyProject) mergeData.advisoryBodyProject = {};
// 响应更新
this.$set(this, mergeKey, { ...this[mergeKey], ...mergeData });
},
statusCheck(status) { statusCheck(status) {
if (status == "0") { if (status == "0") {
return "是"; return "是";
...@@ -233,7 +242,10 @@ export default { ...@@ -233,7 +242,10 @@ export default {
if ((keywords || keywords == "0") && keywords?.toString()?.trim() && keywords?.toString()?.trim()?.length >= 1) { if ((keywords || keywords == "0") && keywords?.toString()?.trim() && keywords?.toString()?.trim()?.length >= 1) {
this.clearSearchTimer(); this.clearSearchTimer();
this.searchTimer = setTimeout(async () => { this.searchTimer = setTimeout(async () => {
await this.searchConsultingHandle(keywords.toString().trim()); const result = await this.searchConsultingHandle(keywords.toString().trim());
if (result) {
this.updateTemplate(result);
}
}, 1000); }, 1000);
} }
} catch (error) { } catch (error) {
...@@ -244,8 +256,7 @@ export default { ...@@ -244,8 +256,7 @@ export default {
try { try {
const searchResult = await searchConsultingApi(keywords); const searchResult = await searchConsultingApi(keywords);
if (searchResult.code == 200 && searchResult.data) { if (searchResult.code == 200 && searchResult.data) {
const _temp = JSON.parse(JSON.stringify(searchResult.data)); return searchResult.data;
this.updateTemplate(_temp);
} }
} catch (error) { } catch (error) {
console.log(error); console.log(error);
...@@ -261,6 +272,7 @@ export default { ...@@ -261,6 +272,7 @@ export default {
["regAddress", "regAddress"], ["regAddress", "regAddress"],
]); ]);
this.setTemplateData(updateMap, data); this.setTemplateData(updateMap, data);
console.log(this.comProjectDetailInfo);
}, },
setTemplateData(mapData, data) { setTemplateData(mapData, data) {
/** /**
...@@ -294,6 +306,41 @@ export default { ...@@ -294,6 +306,41 @@ export default {
clearSearchTimer() { clearSearchTimer() {
clearTimeout(this.searchTimer); clearTimeout(this.searchTimer);
this.searchTimer = null; this.searchTimer = null;
},
async updateConsultingDetail() {
try {
const flag = await this.$refs["comProjectDetailForm"].validate();
if (flag) {
// 通过验证校验咨询机构是否存在
const result = await this.searchConsultingHandle(this.comProjectDetailInfo.advisoryBody.advisoryBodyName);
if (result.advisoryBodyCid) {
const _temp = JSON.parse(JSON.stringify(this.comProjectDetailInfo));
const paramsData = {
isNewAdvisoryBody: _temp.isNewAdvisoryBody,
projectKey: _temp.projectKey,
advisoryBodyCid: _temp.advisoryBody.advisoryBodyCid,
advisoryBodyName: _temp.advisoryBody.advisoryBodyName ?? "",
businessScope: _temp.advisoryBody.businessScope ?? "",
projectLeader: _temp.advisoryBodyProject.projectLeader ?? "",
projectLeaderMajor: _temp.advisoryBodyProject.projectLeaderMajor ?? "",
projectLeaderPhone: _temp.advisoryBodyProject.projectLeaderPhone ?? "",
projectLeaderPhone: _temp.advisoryBodyProject.projectLeaderPhone ?? "",
settleStartTime: _temp.advisoryBodyProject.settleStartTime ?? "",
settleFinishTime: _temp.advisoryBodyProject.settleFinishTime ?? "",
isFinalJudgeUnit: _temp.advisoryBodyProject.isFinalJudgeUnit ?? "",
};
this.$emit("editComProjectDetailSuccess", paramsData);
}
}
} catch (error) {
if (error) {
for (const key in error) {
const _temp = error[key];
_temp instanceof Array ? elementMessageSingleton("error", `${_temp[0].message}`) : null;
break;
}
}
}
} }
}, },
} }
...@@ -415,6 +462,7 @@ export default { ...@@ -415,6 +462,7 @@ export default {
.el-radio-group { .el-radio-group {
display: flex; display: flex;
height: 100%;
align-items: center; align-items: center;
padding-left: 12px; padding-left: 12px;
box-sizing: border-box; box-sizing: border-box;
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<basic-engineering-information v-if="currentList === 'project'" :projectDetailInfo="projectDetailInfo"></basic-engineering-information> <basic-engineering-information v-if="currentList === 'project'" :projectDetailInfo="projectDetailInfo"></basic-engineering-information>
<!-- 咨询机构结算信息 --> <!-- 咨询机构结算信息 -->
<consulting-agency v-if="currentList === 'consultingAgency'" :projectDetailInfo="projectDetailInfo" :isModify="isModify" <consulting-agency v-if="currentList === 'consultingAgency'" :projectDetailInfo="projectDetailInfo" :isModify="isModify"
ref="consultingAgency"></consulting-agency> ref="consultingAgency" @editComProjectDetailSuccess="editComProjectDetailSuccess"></consulting-agency>
</div> </div>
</div> </div>
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
</template> </template>
<script> <script>
import DskTabToggle from "@/components/DskTabToggle"; import DskTabToggle from "@/components/DskTabToggle";
import { getgetConsultingOrgProjectDetailApi } from "@/api/consultingOrgManagement/index"; import { getConsultingOrgProjectDetailApi, updateConsultingDetailApi } from "@/api/consultingOrgManagement";
import { v4 } from 'uuid'; import { v4 } from 'uuid';
import BasicEngineeringInformation from "@/views/consultingOrgManagement/components/EnterpriseList/detail/basicEngineeringInformation"; import BasicEngineeringInformation from "@/views/consultingOrgManagement/components/EnterpriseList/detail/basicEngineeringInformation";
import consultingAgency from "@/views/consultingOrgManagement/components/EnterpriseList/detail/consultingAgency"; import consultingAgency from "@/views/consultingOrgManagement/components/EnterpriseList/detail/consultingAgency";
...@@ -96,7 +96,7 @@ export default { ...@@ -96,7 +96,7 @@ export default {
const projectKey = this.$route.query?.projectKey; const projectKey = this.$route.query?.projectKey;
// if (!advisoryBodyCid) return this.$message.error("缺少咨询机构ID"); // if (!advisoryBodyCid) return this.$message.error("缺少咨询机构ID");
if (!projectKey) return this.$message.error("缺少项目主键"); if (!projectKey) return this.$message.error("缺少项目主键");
const detail = await getgetConsultingOrgProjectDetailApi({ const detail = await getConsultingOrgProjectDetailApi({
advisoryBodyCid, advisoryBodyCid,
projectKey projectKey
}); });
...@@ -111,7 +111,19 @@ export default { ...@@ -111,7 +111,19 @@ export default {
this.isModify = true; this.isModify = true;
}, },
saveProjectDetail() { saveProjectDetail() {
this.$refs["consultingAgency"].updateConsultingDetail();
},
// 编辑成功提交信息
async editComProjectDetailSuccess(data) {
try {
const result = await updateConsultingDetailApi(data);
if (result.code) {
this.$message.success("更新咨询机构结算信息成功");
this.isModify = false;
}
} catch (error) {
}
}, },
cancelSave() { cancelSave() {
this.isModify = false; this.isModify = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment