From 0ead7315c0e6076aded0dac7a6ff0b89c632287b Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 28 十一月 2024 01:32:41 +0800 Subject: [PATCH] 项目基本信息、投资基本信息 --- src/views/projectEngineering/projectLibrary/component/investmentFunds.vue | 4 src/views/projectEngineering/projectLibrary/index.vue | 61 +-- src/api/projectEngineering/projectInvestmentPolicyCompliance.js | 61 ++++ src/views/projectEngineering/projectLibrary/component/legalPerson.vue | 4 src/api/projectEngineering/projectInvestmentFunding.js | 61 ++++ src/api/projectEngineering/projectUnitRegistrationInfo.js | 61 ++++ src/api/system/dept.js | 11 src/views/projectEngineering/projectLibrary/component/FileDialog.vue | 3 src/views/projectEngineering/projectLibrary/component/DocumentsInfo.vue | 3 src/api/projectEngineering/projectInvestmentInfo.js | 61 ++++ src/views/projectEngineering/projectLibrary/component/PolicyInfo.vue | 3 src/api/projectEngineering/projectInfo.js | 18 src/views/projectEngineering/projectLibrary/component/BasicInfo.vue | 166 +++++++---- src/views/projectEngineering/projectLibrary/component/InvestInfo.vue | 178 ++++++------ src/views/projectEngineering/projectLibrary/projectDetails.vue | 121 ------- src/views/projectProcess/index.vue | 2 16 files changed, 515 insertions(+), 303 deletions(-) diff --git a/src/api/projectInfo.js b/src/api/projectEngineering/projectInfo.js similarity index 65% rename from src/api/projectInfo.js rename to src/api/projectEngineering/projectInfo.js index 59c3fe8..8829fc2 100644 --- a/src/api/projectInfo.js +++ b/src/api/projectEngineering/projectInfo.js @@ -1,7 +1,7 @@ import request from '@/utils/request' // 鏌ヨ椤圭洰绠$悊鍩虹淇℃伅鍒楄〃 -export function listInfo(query) { +export function listProject(query) { return request({ url: '/project/info/page', method: 'get', @@ -10,7 +10,7 @@ } // 鏌ヨ椤圭洰绠$悊鍩虹淇℃伅璇︾粏 -export function getInfo(id) { +export function getProject(id) { return request({ url: '/project/info/' + id, method: 'get' @@ -18,7 +18,7 @@ } // 鏂板椤圭洰绠$悊鍩虹淇℃伅 -export function addInfo(data) { +export function addProject(data) { return request({ url: '/project/info', method: 'post', @@ -27,7 +27,7 @@ } // 淇敼椤圭洰绠$悊鍩虹淇℃伅 -export function updateInfo(data) { +export function updateProject(data) { return request({ url: '/project/info', method: 'put', @@ -36,9 +36,17 @@ } // 鍒犻櫎椤圭洰绠$悊鍩虹淇℃伅 -export function delInfo(id) { +export function delProject(id) { return request({ url: '/project/info/' + id, method: 'delete' }) } +//鑾峰彇鍚庡彴鐢熸垚鐨勯」鐩爜 +export function getProjectCode(id) { + return request({ + url: '/project/info/getProjectCode', + method: 'get' + }) +} + diff --git a/src/api/projectEngineering/projectInvestmentFunding.js b/src/api/projectEngineering/projectInvestmentFunding.js new file mode 100644 index 0000000..2f77325 --- /dev/null +++ b/src/api/projectEngineering/projectInvestmentFunding.js @@ -0,0 +1,61 @@ +import axios from "./request"; + +// 鑾峰彇椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃鍒嗛〉 +export const getProjectInvestmentFundings = (params) => { + return axios({ + url: "/api/project-investment-funding/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃鍒楄〃 +export const getProjectInvestmentFundingList = () => { + return axios({ + url: "/api/project-investment-funding/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const getProjectInvestmentFundingById = (params) => { + return axios({ + url: "/api/project-investment-funding/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const deleteProjectInvestmentFundingById = (params) => { + return axios({ + url: "/api/project-investment-funding/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const deleteProjectInvestmentFundingByIds = (params) => { + return axios({ + url: "/api/project-investment-funding/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const editProjectInvestmentFunding = (params) => { + return axios({ + url: "/api/project-investment-funding/", + method: "PUT", + data: params + }) +} + +// 娣诲姞椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const addProjectInvestmentFunding = (params) => { + return axios({ + url: "/api/project-investment-funding/", + method: "POST", + data: params + }) +} diff --git a/src/api/projectEngineering/projectInvestmentInfo.js b/src/api/projectEngineering/projectInvestmentInfo.js new file mode 100644 index 0000000..f04a9fd --- /dev/null +++ b/src/api/projectEngineering/projectInvestmentInfo.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 鑾峰彇鎶曡祫椤圭洰鍩虹淇℃伅琛ㄥ垎椤� +export const getProjectInvestmentInfos = (params) => { + return request({ + url: "/project/investmentInfo/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇鎶曡祫椤圭洰鍩虹淇℃伅琛ㄥ垪琛� +export const getProjectInvestmentInfoList = () => { + return request({ + url: "/project/investmentInfo/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇鎶曡祫椤圭洰鍩虹淇℃伅琛� +export const getProjectInvestmentInfoById = (params) => { + return request({ + url: "/project/investmentInfo/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎鎶曡祫椤圭洰鍩虹淇℃伅琛� +export const deleteProjectInvestmentInfoById = (params) => { + return request({ + url: "/project/investmentInfo/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎鎶曡祫椤圭洰鍩虹淇℃伅琛� +export const deleteProjectInvestmentInfoByIds = (params) => { + return request({ + url: "/project/investmentInfo/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼鎶曡祫椤圭洰鍩虹淇℃伅琛� +export const editProjectInvestmentInfo = (params) => { + return request({ + url: "/project/investmentInfo/", + method: "PUT", + data: params + }) +} + +// 娣诲姞鎶曡祫椤圭洰鍩虹淇℃伅琛� +export const addProjectInvestmentInfo = (params) => { + return request({ + url: "/project/investmentInfo/", + method: "POST", + data: params + }) +} diff --git a/src/api/projectEngineering/projectInvestmentPolicyCompliance.js b/src/api/projectEngineering/projectInvestmentPolicyCompliance.js new file mode 100644 index 0000000..c83b8ee --- /dev/null +++ b/src/api/projectEngineering/projectInvestmentPolicyCompliance.js @@ -0,0 +1,61 @@ +import axios from "./request"; + +// 鑾峰彇鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛ㄥ垎椤� +export const getProjectInvestmentPolicyCompliances = (params) => { + return axios({ + url: "/api/project-investment-policy-compliance/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛ㄥ垪琛� +export const getProjectInvestmentPolicyComplianceList = () => { + return axios({ + url: "/api/project-investment-policy-compliance/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const getProjectInvestmentPolicyComplianceById = (params) => { + return axios({ + url: "/api/project-investment-policy-compliance/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const deleteProjectInvestmentPolicyComplianceById = (params) => { + return axios({ + url: "/api/project-investment-policy-compliance/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const deleteProjectInvestmentPolicyComplianceByIds = (params) => { + return axios({ + url: "/api/project-investment-policy-compliance/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const editProjectInvestmentPolicyCompliance = (params) => { + return axios({ + url: "/api/project-investment-policy-compliance/", + method: "PUT", + data: params + }) +} + +// 娣诲姞鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const addProjectInvestmentPolicyCompliance = (params) => { + return axios({ + url: "/api/project-investment-policy-compliance/", + method: "POST", + data: params + }) +} diff --git a/src/api/projectEngineering/projectUnitRegistrationInfo.js b/src/api/projectEngineering/projectUnitRegistrationInfo.js new file mode 100644 index 0000000..15c118b --- /dev/null +++ b/src/api/projectEngineering/projectUnitRegistrationInfo.js @@ -0,0 +1,61 @@ +import axios from "./request"; + +// 鑾峰彇椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛ㄥ垎椤� +export const getProjectUnitRegistrationInfos = (params) => { + return axios({ + url: "/api/project-unit-registration-info/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛ㄥ垪琛� +export const getProjectUnitRegistrationInfoList = () => { + return axios({ + url: "/api/project-unit-registration-info/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const getProjectUnitRegistrationInfoById = (params) => { + return axios({ + url: "/api/project-unit-registration-info/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const deleteProjectUnitRegistrationInfoById = (params) => { + return axios({ + url: "/api/project-unit-registration-info/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const deleteProjectUnitRegistrationInfoByIds = (params) => { + return axios({ + url: "/api/project-unit-registration-info/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const editProjectUnitRegistrationInfo = (params) => { + return axios({ + url: "/api/project-unit-registration-info/", + method: "PUT", + data: params + }) +} + +// 娣诲姞椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const addProjectUnitRegistrationInfo = (params) => { + return axios({ + url: "/api/project-unit-registration-info/", + method: "POST", + data: params + }) +} diff --git a/src/api/system/dept.js b/src/api/system/dept.js index fc943cd..0c4e4b6 100644 --- a/src/api/system/dept.js +++ b/src/api/system/dept.js @@ -49,4 +49,13 @@ url: '/system/dept/' + deptId, method: 'delete' }) -} \ No newline at end of file +} + +// 鏌ヨ瀹℃壒绔儴闂� +export function approvalList(query) { + return request({ + url: '/system/dept/approvalList', + method: 'get', + params: query + }) +} diff --git a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue index 54d9aca..cd4835a 100644 --- a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue +++ b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue @@ -1,6 +1,6 @@ <template> <div class="basic-info"> - <el-form ref="demoFormRef" :disabled="disabled" :model="projectForm" :rules="rules" class="dialog_form"> + <el-form ref="projectForm" :disabled="disabled" :model="projectForm" :rules="rules" class="dialog_form"> <el-row :gutter="20"> <el-col :span="6"> <el-form-item class="item" label="椤圭洰鍚嶇О" label-width="100px" prop="projectName"> @@ -102,8 +102,12 @@ style="width: 100%" collapse-tags @change="changeDepartment"> - <el-option v-for="item in dict.type.sys_competent_department" :key="item.value" :label="item.label" - :value="item.value"/> + <el-option + v-for ="item in approvalList" + :key="item.id" + :value="item.id" + :label="item.value" + /> </el-select> </el-form-item> </el-col> @@ -152,7 +156,7 @@ </el-form-item> </el-col> <el-col :span="6"> - <el-form-item label="鎸夌洰褰�" label-width="100px" style="width: 100%"> + <el-form-item label="鎶曡祫绫诲埆" 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> @@ -174,17 +178,30 @@ <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="绔嬮」鏃堕棿" label-width="100px" prop="setTime" style="width: 100%"> - <el-date-picker v-model="setTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneApproval" /> + <el-date-picker v-model="projectForm.createProjectTime" + placeholder="閫夋嫨鏃堕棿" + style="width: 100%" + type="date" + value-format="yyyy-MM-dd HH:mm:ss"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="璁″垝寮�宸ユ椂闂�" label-width="100px" style="width: 100%"> - <el-date-picker v-model="planStartTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneStartWork" /> + <el-date-picker v-model="projectForm.planStartTime " + placeholder="閫夋嫨鏃堕棿" + style="width: 100%" + type="date" + @change="chaneStartWork" + value-format="yyyy-MM-dd HH:mm:ss"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="璁″垝绔e伐鏃堕棿" label-width="100px" style="width: 100%"> - <el-date-picker v-model="planCompleteTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneCompleted" /> + <el-date-picker v-model="projectForm.planCompleteTime " + placeholder="閫夋嫨鏃堕棿" + style="width: 100%" + type="date" + value-format="yyyy-MM-dd HH:mm:ss"/> </el-form-item> </el-col> </el-row> @@ -201,7 +218,11 @@ </el-col> <el-col :span="6"> <el-form-item label="涓爣鏃堕棿" label-width="100px" style="width: 100%"> - <el-date-picker v-model="winTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneWinTime" /> + <el-date-picker v-model="projectForm.winTime" + placeholder="閫夋嫨鏃堕棿" + style="width: 100%" + type="date" + value-format="yyyy-MM-dd HH:mm:ss"/> </el-form-item> </el-col> </el-row> @@ -230,7 +251,7 @@ <el-col :span="18"> <el-form-item label="椤圭洰鍦板潃:" label-width="100px" prop="medicalAddr" style="width: 100%"> <div class="input-row"> - <el-input v-model.trim="projectForm.address" class="input-item" disabled maxlength="255" placeholder="璇疯緭鍏�"></el-input> + <el-input v-model.trim="projectForm.projectAddress" class="input-item" disabled maxlength="255" placeholder="璇疯緭鍏�"></el-input> <div v-if="!disabled" class="map-btn" @click="dialogMap = true"> <img alt="" src="@/assets/images/positionl.png" /> </div> @@ -241,7 +262,7 @@ <el-row :gutter="0"> <el-col :span="18"> <el-form-item label="瀹℃壒璁″垝涔�:" label-width="100px" prop="medicalAddr" style="width: 100%"> - <file-upload v-model="projectList" + <file-upload v-model="projectForm.fileList" :fileType="accept" :isShowTip="false"/> </el-form-item> @@ -271,7 +292,9 @@ // import { usePlanLibrary } from '@/hooks/detailsInformation'; // import { getList } from '@/api/engineeringLibrary/index'; // import RemoteSelect from '@/components/RemoteSelect/index.vue'; -import { formatDate } from '@/utils'; +import Cookies from "js-cookie"; +import { addProject, getProject, updateProject, getProjectCode } from '@/api/projectEngineering/projectInfo'; +import {approvalList} from "@/api/system/dept"; export default { dicts: ['sys_funding_type', 'sys_investment_type', 'sys_project_type', 'sys_project_status','sys_competent_department' @@ -290,6 +313,7 @@ data() { return { projectForm: { + id: '', projectName: '', projectCode: '', projectType: '', @@ -315,7 +339,7 @@ winTime: '', winUnit: '', winAmount: '', - address: '', + projectAddress: '', engineeringIdList: [], content: '', contact: '', @@ -323,19 +347,18 @@ planStartTime: '', planCompleteTime: '', projectContactPerson: '', - fileIdList: [], - sysOssVos: [], + fileList: [], engineeringInfos: [], year: '', yearInvestAmount: '', competentDepartmentList: [], managementCentralizationList: [] }, + approvalList: [], setTime: '', planStartTime: '', planCompleteTime: '', winTime: '', - projectList: [], dialogMap: false, page: 1, loading: false, @@ -354,41 +377,84 @@ computed: { dialogMapList () { return [{ - addr: this.projectForm.address, + addr: this.projectForm.projectAddress, name: '鍒涘缓' }]; }, }, created() { - this.handleLoadMore(1); + const projectForm = Cookies.get("projectForm"); + if (projectForm) { + this.projectForm = JSON.parse(projectForm); + } else { + //鍒濆鍖栦富绠¢儴闂ㄤ笅鎷夋 + this.getApprovalList(); + if(this.$route.query.projectId) { + this.projectForm.id = this.$route.query.projectId; + } + // 鍦ㄧ粍浠跺垱寤烘椂鑾峰彇椤圭洰淇℃伅锛屽鏋� projectId 瀛樺湪 + if (this.projectForm.id) { + this.getProjectInfo(this.projectForm.id); + } else { + this.getProjectCodeApi(); + } + // this.handleLoadMore(1); + } + }, + beforeDestroy() { + Cookies.set("projectForm",JSON.stringify(this.projectForm)); }, methods: { + getProjectInfo(id) { + getProject(id).then(res => { + this.projectForm = res.data; + }); + }, + getApprovalList() { + approvalList().then(res => { + this.approvalList = res.data; + }); + }, + submit() { + this.$refs["projectForm"].validate(valid => { + if (valid) { + if (this.projectForm.id != null) { + updateProject(this.projectForm).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + //璺宠浆鍒颁笅涓粍浠� + this.$emit('toNext', 1); + }); + } else { + addProject(this.projectForm).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.projectForm.id = response.data + //璺宠浆鍒颁笅涓粍浠� + this.$emit('toNext', 1); + }); + } + } + }); + }, + getProjectCodeApi() { + getProjectCode().then(res => { + this.projectForm.projectCode = res.data; + }); + }, changeDepartment(val) { if (!val.length) { this.largeCategory = ''; return; } - const labels = this.sysDepartment.filter(item => val.includes(item.value)).map(item => item.label); + const labels = this.approvalList.filter(item => val.includes(item.id)).map(item => item.value); this.largeCategory = labels.join(','); }, changePutUnder(val) { - // 鍚� changeDepartment 鏂规硶 - }, - chaneApproval(val) { - if (!val) return; - this.projectForm.setTime = formatDate(val); - }, - chaneCompleted(val) { - if (!val) return; - this.projectForm.planCompleteTime = formatDate(val); - }, - chaneWinTime(val) { - if (!val) return; - this.projectForm.winTime = formatDate(val); - }, - chaneStartWork(val) { - if (!val) return; - this.projectForm.planStartTime = formatDate(val); + if (!val.length) { + this.subclass = ''; + return; + } + const labels = this.dict.type.sys_centralized_management.filter(item => val.includes(item.value)).map(item => item.label); + this.subclass = labels.join(','); }, async loadDataList(newPage) { try { @@ -424,29 +490,19 @@ if (lon && lat && addr) { this.projectForm.longitude = lon; this.projectForm.latitude = lat; - this.projectForm.address = addr; + this.projectForm.projectAddress = addr; this.$message.success('鑾峰彇鍦板潃鎴愬姛'); this.dialogMap = false; } else { this.$message.error('鑾峰彇鍧愭爣澶辫触'); } }, - handleRemove(file) { - if (file) { - this.projectForm.fileIdList = this.projectList.map(item => item.fileId); - localStorage.setItem('projectList', JSON.stringify(file)); - } - }, - handleAdd(file) { - if (file) { - localStorage.setItem('projectList', JSON.stringify(file)); - } - } + }, watch: { 'projectForm.managementCentralizationList'(val) { if (val) { - const labels = this.sysCentralizedManagement + const labels = this.dict.type.sys_centralized_management .filter(item => val.includes(item.value)) .map(item => item.label); this.subclass = labels.join(','); @@ -454,20 +510,12 @@ }, 'projectForm.competentDepartmentList'(val) { if (val) { - const labels = this.sysDepartment - .filter(item => val.includes(item.value)) - .map(item => item.label); + const labels = this.approvalList + .filter(item => val.includes(item.id)) + .map(item => item.value); this.largeCategory = labels.join(','); } }, - projectList: { - handler(val) { - if (val) { - this.projectForm.fileIdList = val.map(item => item.fileId); - } - }, - deep: true - } } }; </script> diff --git a/src/views/projectEngineering/projectLibrary/component/DocumentsInfo.vue b/src/views/projectEngineering/projectLibrary/component/DocumentsInfo.vue index f599c38..fd71b70 100644 --- a/src/views/projectEngineering/projectLibrary/component/DocumentsInfo.vue +++ b/src/views/projectEngineering/projectLibrary/component/DocumentsInfo.vue @@ -41,6 +41,9 @@ } }, methods: { + submit() { + console.log("鏂囦欢submit") + }, handleRemove(file) { if (file) { this.fileIdList = this.documentsInfoList.map(item => item.fileId); diff --git a/src/views/projectEngineering/projectLibrary/component/FileDialog.vue b/src/views/projectEngineering/projectLibrary/component/FileDialog.vue index 443aee5..15b09ec 100644 --- a/src/views/projectEngineering/projectLibrary/component/FileDialog.vue +++ b/src/views/projectEngineering/projectLibrary/component/FileDialog.vue @@ -85,6 +85,9 @@ }; }, methods: { + submit() { + console.log("瀛愮粍浠秙ubmit") + }, handleFileUploadProgress() { this.uploadIsUploading = true; }, diff --git a/src/views/projectEngineering/projectLibrary/component/InvestInfo.vue b/src/views/projectEngineering/projectLibrary/component/InvestInfo.vue index 7b22b12..d792807 100644 --- a/src/views/projectEngineering/projectLibrary/component/InvestInfo.vue +++ b/src/views/projectEngineering/projectLibrary/component/InvestInfo.vue @@ -1,11 +1,11 @@ <template> <div class="basic-info"> - <el-form ref="demoFormRef" :disabled="disabled" :model="investment" class="dialog_form"> + <el-form ref="demoFormRef" :disabled="disabled" :model="investmentForm" class="dialog_form"> <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="寤鸿鍦扮偣鏄惁璺ㄥ煙" label-width="120px" prop="fundsType" style="width: 100%"> <el-select - v-model="investment.beCrossRegion" + v-model="investmentForm.beCrossRegion" clearable placeholder="璇烽�夋嫨" style="width: 100%" @@ -18,8 +18,9 @@ <el-col :span="6"> <el-form-item label="椤圭洰寤鸿鍦扮偣" label-width="120px" prop="investmentType" style="width: 100%"> <el-select - v-model="investment.constructionLocation" + v-model="investmentForm.constructionLocation" clearable + disabled placeholder="璇烽�夋嫨" style="width: 100%" > @@ -30,7 +31,8 @@ </el-col> <el-col :span="6"> <el-form-item label="寤鸿璇︾粏鍦板潃" label-width="120px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="investment.detailedAddress" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentForm.detailedAddress" class="item" clearable disabled maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> @@ -38,7 +40,7 @@ <el-col :span="6"> <el-form-item label="鏄惁鏄ˉ鐮侀」鐩�" label-width="120px" prop="projectType" style="width: 100%"> <el-select - v-model="investment.beCompensationProject" + v-model="investmentForm.beCompensationProject" clearable placeholder="璇烽�夋嫨" style="width: 100%" @@ -50,32 +52,42 @@ </el-col> <el-col :span="12"> <el-form-item label="琛ョ爜鍘熷洜" label-width="120px" prop="projectstatus" style="width: 100%"> - <el-input v-model.trim="investment.compensationReason" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentForm.compensationReason" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="璁″垝寮�宸ユ椂闂�" label-width="120px" prop="plannedStartDate" style="width: 100%"> - <!-- <el-date-picker v-model="plannedStartDate" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneStartWork" />--> - <el-input v-model.trim="plannedStartDate" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" /> + <el-date-picker v-model="investmentForm.plannedStartDate" + placeholder="閫夋嫨鏃堕棿" + style="width: 100%" + disabled + type="date" + value-format="yyyy-MM-dd HH:mm:ss"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="鎷熷缓鎴愭椂闂�" label-width="120px" prop="expectedCompletionDate" style="width: 100%"> - <!-- <el-date-picker v-model="expectedCompletionDate" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneCompleted" />--> - <el-input v-model.trim="expectedCompletionDate" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" /> + <el-date-picker + v-model="investmentForm.expectedCompletionDate" + placeholder="閫夋嫨鏃堕棿" + disabled + style="width: 100%" + type="date" + value-format="yyyy-MM-dd HH:mm:ss"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="鍥介檯琛屼笟鍒嗙被" label-width="120px" prop="engineering" style="width: 100%"> <el-select - v-model="investment.nationalIndustryClassification" + v-model="investmentForm.nationalIndustryClassification" clearable placeholder="璇烽�夋嫨" style="width: 100%" > - <el-option v-for="item in dict.type.sys_whether_project" :key="item.value" :label="item.label" + <el-option v-for="item in dict.type.sys_industry_classification" :key="item.value" :label="item.label" :value="item.value"/> </el-select> </el-form-item> @@ -84,13 +96,14 @@ <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="鎵�灞炶涓氬垎绫�" label-width="120px" prop="department" style="width: 100%"> - <el-input v-model.trim="investment.industryClassification" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentForm.industryClassification" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="椤圭洰寤烘垚鎬ц川" label-width="120px" prop="design" style="width: 100%"> <el-select - v-model="investment.projectNature" + v-model="investmentForm.projectNature" clearable placeholder="璇烽�夋嫨" style="width: 100%" @@ -103,7 +116,7 @@ <el-col :span="6"> <el-form-item label="椤圭洰灞炴��" label-width="120px" prop="putUnder" style="width: 100%"> <el-select - v-model="investment.projectAttribute" + v-model="investmentForm.projectAttribute" clearable placeholder="璇烽�夋嫨" style="width: 100%" @@ -118,7 +131,7 @@ <el-col :span="18"> <el-form-item label="鏄惁浣跨敤鍦熷湴" label-width="120px" prop="approvalType" style="width: 100%"> <el-select - v-model="investment.useEarth" + v-model="investmentForm.useEarth" clearable placeholder="璇烽�夋嫨" style="width: 100%" @@ -132,14 +145,17 @@ <el-row :gutter="20"> <el-col :span="18"> <el-form-item class="item" label="涓昏寤鸿鍐呭鍙婅妯�" label-width="120px" prop="content"> - <el-input v-model.trim="investment.contentScale" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" type="textarea" /> + <el-input v-model.trim="investmentForm.contentScale" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�" + type="textarea"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item class="item" label="寤虹骞冲彴浠g爜" label-width="120px" prop="content"> - <el-input v-model.trim="investment.code" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" type="textarea" /> + <el-input v-model.trim="investmentForm.code" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" + type="textarea"/> </el-form-item> </el-col> </el-row> @@ -148,10 +164,15 @@ </template> <script> -import { formatDate } from '@/utils'; +import Cookies from "js-cookie"; +import { + addProjectInvestmentInfo, + editProjectInvestmentInfo, + getProjectInvestmentInfoById +} from "@/api/projectEngineering/projectInvestmentInfo"; export default { - dicts: ['sys_cross_domain','sys_administrative_divisions','sys_whether_project','sys_industry_belong','sys_project_attributes'], + dicts: ['sys_cross_domain', 'sys_industry_classification', 'sys_administrative_divisions', 'sys_whether_project', 'sys_industry_belong', 'sys_project_attributes'], name: 'InvestmentForm', props: { disabled: { @@ -162,7 +183,9 @@ }, data() { return { - investment: { + projectForm: {}, + investmentForm: { + id: '', beCrossRegion: '', constructionLocation: '', detailedAddress: '', @@ -179,48 +202,6 @@ code: '', projectId: '' }, - projectForm: { - projectName: '', - projectCode: '', - projectType: '', - projectStatus: '1', - fundType: '', - investType: '', - importanceType: '', - projectPhase: '鍌ㄥ瑙勫垝闃舵', - tag: '', - competentDepartment: '', - projectLocation: '', - longitude: '', - latitude: '', - managementCentralization: '', - projectApplicationPhase: '', - projectApprovalType: '', - investmentCatalogue: '', - approvalPlan: '', - isSetProject: '', - setTime: '', - assignmentStatus: '', - area: '', - winTime: '', - winUnit: '', - winAmount: '', - address: '', - engineeringIdList: [], - content: '', - contact: '', - projectOwnerUnit: '', - planStartTime: '', - planCompleteTime: '', - projectContactPerson: '', - fileIdList: [], - sysOssVos: [], - engineeringInfos: [], - year: '', - yearInvestAmount: '', - competentDepartmentList: [], - managementCentralizationList: [] - }, plannedStartDate: '', expectedCompletionDate: '', sys_cross_domain: [], @@ -232,34 +213,59 @@ }; }, mounted() { - this.updateFormData(); + // 浠嶤ookies涓幏鍙栫紦瀛樻暟鎹� + const investmentForm = Cookies.get("investmentForm"); + const projectForm = Cookies.get("projectForm"); + + // 灏濊瘯瑙f瀽JSON鏁版嵁 + const parsedInvestmentForm = investmentForm ? JSON.parse(investmentForm) : null; + const parsedProjectForm = projectForm ? JSON.parse(projectForm) : null; + + // 璁剧疆investment鍜宲rojectForm瀵硅薄 + this.investmentForm = parsedInvestmentForm || {}; + this.projectForm = parsedProjectForm || {}; + + // 濡傛灉projectForm瀛樺湪id涓旀病鏈夌紦瀛橈紝鍒欒皟鐢╝pi + if (this.projectForm.id && !investmentForm) { + this.getInvestment(); + } + this.investmentForm.constructionLocation = this.projectForm.area; + this.investmentForm.detailedAddress = this.projectForm.projectAddress; + this.investmentForm.plannedStartDate = this.projectForm.planStartTime; + this.investmentForm.expectedCompletionDate = this.projectForm.planCompleteTime; + }, + beforeDestroy() { + Cookies.set("investmentForm", JSON.stringify(this.investmentForm)); }, methods: { - chaneCompleted(val) { - if (!val) return; - this.investment.expectedCompletionDate = formatDate(val); + getInvestment() { + getProjectInvestmentInfoById(this.investmentForm.id).then(res => { + this.investmentForm = res.data; + }); }, - chaneStartWork(val) { - if (!val) return; - this.investment.plannedStartDate = formatDate(val); + submit() { + if (!this.projectForm.id) { + this.$message.error("璇峰厛淇濆瓨鎶曡祫绠$悊鍩烘湰淇℃伅") + } else { + this.investmentForm.projectId = this.projectForm.id; + if (this.investmentForm.id != null) { + editProjectInvestmentInfo(this.investmentForm).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + //璺宠浆鍒颁笅涓粍浠� + this.$emit('toNext', 2); + }); + } else { + addProjectInvestmentInfo(this.investmentForm).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.investmentForm.id = response.data + //璺宠浆鍒颁笅涓粍浠� + this.$emit('toNext', 2); + }); + } + } }, - updateFormData() { - if(this.projectForm) { - this.plannedStartDate = this.projectForm.planStartTime.slice(0, 10); - this.expectedCompletionDate = this.projectForm.planCompleteTime.slice(0, 10); - this.investment.constructionLocation = this.projectForm.area; - this.investment.detailedAddress = this.projectForm.address; - } - } - }, - watch: { - projectForm: { - deep: true, - handler() { - this.updateFormData(); - } - } } + }; </script> diff --git a/src/views/projectEngineering/projectLibrary/component/PolicyInfo.vue b/src/views/projectEngineering/projectLibrary/component/PolicyInfo.vue index 33598ab..2aa6cf7 100644 --- a/src/views/projectEngineering/projectLibrary/component/PolicyInfo.vue +++ b/src/views/projectEngineering/projectLibrary/component/PolicyInfo.vue @@ -195,6 +195,9 @@ } }, methods: { + submit() { + console.log("鏀跨瓥submit") + }, handleRemove(file) { if (file) { this.investmentProjectPolicyComplianceDTO.fileIdList = this.fileList.map(item => item.fileId); diff --git a/src/views/projectEngineering/projectLibrary/component/investmentFunds.vue b/src/views/projectEngineering/projectLibrary/component/investmentFunds.vue index c0ae3d7..071f4a2 100644 --- a/src/views/projectEngineering/projectLibrary/component/investmentFunds.vue +++ b/src/views/projectEngineering/projectLibrary/component/investmentFunds.vue @@ -205,7 +205,9 @@ }; }, methods: { - + submit() { + console.log("椤圭洰璧勯噾submit") + }, }, created() { diff --git a/src/views/projectEngineering/projectLibrary/component/legalPerson.vue b/src/views/projectEngineering/projectLibrary/component/legalPerson.vue index d50cc21..0f2cc67 100644 --- a/src/views/projectEngineering/projectLibrary/component/legalPerson.vue +++ b/src/views/projectEngineering/projectLibrary/component/legalPerson.vue @@ -188,7 +188,9 @@ }, methods: { - + submit() { + console.log("娉曚汉submit") + }, } } </script> diff --git a/src/views/projectEngineering/projectLibrary/index.vue b/src/views/projectEngineering/projectLibrary/index.vue index 730e22c..8a6c287 100644 --- a/src/views/projectEngineering/projectLibrary/index.vue +++ b/src/views/projectEngineering/projectLibrary/index.vue @@ -271,10 +271,10 @@ </template> <script> -import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectInfo"; +import {listProject, getProject, delProject, addProject, updateProject} from "@/api/projectEngineering/projectInfo"; import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list'; import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog'; - +import Cookies from "js-cookie"; export default { dicts: ['sys_administrative_divisions', 'sys_investment_type', 'sys_project_phases', 'sys_funding_type', 'sys_association_status', 'sys_project_status', 'sys_project_code', @@ -367,9 +367,24 @@ this.getList(); }, methods: { + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.removeCookie(); + this.$router.push({ path: '/projectEngineering/project/ProjectDetails', query: { projectId: row.id }}); + }, + handleDetail(row) { + this.removeCookie(); + this.$router.push({ path: '/projectEngineering/project/ProjectDetails', query: { projectId: row.id }}); + }, // 鏂板椤甸潰 add() { - this.$router.push({ path: '/projectEngineering/project/projectDetails' }); + this.removeCookie(); + this.$router.push({ path: '/projectEngineering/project/ProjectDetails' }); + }, + //娓呯悊缂撳瓨 + removeCookie() { + Cookies.remove("projectForm") + Cookies.remove("investmentForm") }, // 閲嶇疆鎺掑簭鐨勬柟娉� handleResetSort() { @@ -428,7 +443,7 @@ /** 鏌ヨ椤圭洰绠$悊鍩虹淇℃伅鍒楄〃 */ getList() { this.loading = true; - listInfo(this.queryParams).then(response => { + listProject(this.queryParams).then(response => { this.projectInfoList = response.data; this.total = response.total; }); @@ -496,42 +511,8 @@ this.single = selection.length !== 1 this.multiple = !selection.length }, - /** 鏂板鎸夐挳鎿嶄綔 */ - handleAdd() { - this.reset(); - this.open = true; - this.title = "娣诲姞椤圭洰绠$悊鍩虹淇℃伅"; - }, - /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.reset(); - const id = row.id || this.ids - getInfo(id).then(response => { - this.form = response.data; - this.open = true; - this.title = "淇敼椤圭洰绠$悊鍩虹淇℃伅"; - }); - }, - /** 鎻愪氦鎸夐挳 */ - submitForm() { - this.$refs["form"].validate(valid => { - if (valid) { - if (this.form.id != null) { - updateInfo(this.form).then(response => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addInfo(this.form).then(response => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } - } - }); - }, + + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const ids = row.id || this.ids; diff --git a/src/views/projectEngineering/projectLibrary/projectDetails.vue b/src/views/projectEngineering/projectLibrary/projectDetails.vue index 39a6a44..b486d1c 100644 --- a/src/views/projectEngineering/projectLibrary/projectDetails.vue +++ b/src/views/projectEngineering/projectLibrary/projectDetails.vue @@ -18,6 +18,7 @@ :is="componentName" ref="childRef" :disabled="disabled" + @toNext="changeTable" class="full-width custom-height" /> <div v-if="!disabled" class="button-container"> @@ -35,14 +36,14 @@ import LegalPerson from '@/views/projectEngineering/projectLibrary/component/legalPerson'; import PolicyInfo from '@/views/projectEngineering/projectLibrary/component/PolicyInfo'; import DocumentsInfo from '@/views/projectEngineering/projectLibrary/component/DocumentsInfo'; -import { addProject, getProject, updateProject, getProjectCode } from '@/api/projectInfo'; export default { + name: 'ProjectDetails', data() { return { currentTab: '椤圭洰绠$悊鍩虹淇℃伅', - id: this.$route.query.id || '', disabled: false, + projectForm:{}, componentName: BasicInfo, TABS_DATA: [ { @@ -52,11 +53,11 @@ }, { label: '鎶曡祫绠$悊鍩虹淇℃伅', - value: '浠诲姟涓嬪彂', + value: '鎶曡祫绠$悊鍩虹淇℃伅', componentName: InvestInfo }, { - label: ' 椤圭洰鎶曡祫鍙婅祫閲戞潵婧�', + label: '椤圭洰鎶曡祫鍙婅祫閲戞潵婧�', value: '椤圭洰鎶曡祫鍙婅祫閲戞潵婧�', componentName: InvestmentFunds }, @@ -83,117 +84,19 @@ handleClick(tabTarget) { this.componentName = this.TABS_DATA[tabTarget.index].componentName; }, - submit() { - if (!this.projectForm.projectName) { - this.$message.error('璇疯緭鍏ラ」鐩悕绉�'); - return; - } - if (this.projectForm.contact) { - const phoneRegex = /^1[3-9]\d{9}$/; - if (!phoneRegex.test(this.projectForm.contact)) { - this.$message.error('璇疯緭鍏ユ纭殑鎵嬫満鍙风爜'); - return; - } - } - if (this.$refs.childRef) { - this.$refs.childRef.$refs.demoFormRef.validate((valid) => { - if (valid) { - const payload = { - projectInfoInsertDTO: this.projectForm, - projectInvestmentInfo: this.investment, - projectInvestmentFunding: this.investmentFunds, - projectUnitRegistrationInfo: this.legalPerson, - investmentProjectPolicyComplianceDTO: this.investmentProjectPolicyComplianceDTO, - fileIdList: this.fileIdList - }; - if (this.id) { - updateProject(payload).then(res => { - if (res.code === 200) { - this.$message.success(res.msg); - this.$router.push({ path: '/projectEngineering/project/projectLibrary' }); - } else { - this.$message.error(res.msg); - } - }); - } else { - addProject(payload).then(res => { - if (res.code === 200) { - this.$message.success(res.msg); - this.$router.push({ path: '/projectEngineering/project/projectLibrary' }); - } else { - this.$message.error(res.msg); - } - }); - } - } - }); - } + changeTable(index) { + this.componentName = this.TABS_DATA[index].componentName; + this.currentTab = this.TABS_DATA[index].value; }, - getProjectInfo(id) { - getProject(id, 0).then(res => { - if (res.data) { - this.investment = res.data.projectInvestmentInfo || {}; - this.investmentFunds = res.data.projectInvestmentFunding || {}; - this.legalPerson = res.data.projectUnitRegistrationInfo || {}; - this.investmentProjectPolicyComplianceDTO = res.data.investmentProjectPolicyComplianceDTO || {}; - if (res.data.investmentProjectPolicyComplianceDTO && res.data.investmentProjectPolicyComplianceDTO.sysOssVos.length > 0) { - this.fileList = res.data.investmentProjectPolicyComplianceDTO.sysOssVos.map(item => ({ - fileId: item.ossId, - name: item.originalName, - url: item.url - })); - } else { - this.fileList = []; - } - - if (res.data.fileIdList) { - this.fileIdList = res.data.fileIdList; - this.documentsInfoList = res.data.sysOssVos.map(item => ({ - fileId: item.ossId, - name: item.originalName, - url: item.url - })); - } - this.projectForm = res.data.projectInfoInsertDTO || {}; - this.projectList = res.data.projectInfoInsertDTO.sysOssVos.map(item => ({ - fileId: item.ossId, - name: item.originalName, - url: item.url - })); - } - }); + submit() { + this.$refs.childRef.submit(); }, reset() { - if (this.id) { - this.getProjectInfo(this.id); - } else { - this.getProjectCodeApi(); - this.resetPlanLibrary(); - this.fileList = []; - this.fileIdList = []; - this.projectList = []; - this.documentsInfoList = []; - } - }, - cancel() { - this.$router.push({ path: '/projectEngineering/project/reserveProjects', query: { projectCategory: '1' } }); - localStorage.removeItem('fileIdList'); - }, - getProjectCodeApi() { - getProjectCode().then(res => { - if (res.code === 200) { - this.projectForm.projectCode = res.msg; - } - }); + this.$refs.childRef.reset(); }, }, created() { - // 鍦ㄧ粍浠跺垱寤烘椂鑾峰彇椤圭洰淇℃伅锛屽鏋� id 瀛樺湪 - if (this.id) { - this.getProjectInfo(this.id); - } else { - this.getProjectCodeApi(); - } + console.log("sss") }, }; diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue index af37779..04f06a1 100644 --- a/src/views/projectProcess/index.vue +++ b/src/views/projectProcess/index.vue @@ -281,7 +281,7 @@ <script> import { listDefinition } from "@/api/flowable/definition"; -import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectInfo"; +import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectEngineering/projectInfo"; import { getProjectProcess } from "@/api/projectProcess/projectProcess" import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list'; import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog'; -- Gitblit v1.8.0