From cf2faab021222e1e345e8098da38f2c24ea8b504 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 28 十一月 2024 06:07:40 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/projectEngineering/projectLibrary/component/investmentFunds.vue | 145 ++++- src/views/projectEngineering/projectLibrary/index.vue | 61 - src/views/projectManage/plan/planInfo.vue | 19 src/api/projectEngineering/projectInvestmentPolicyCompliance.js | 61 ++ src/views/projectEngineering/projectLibrary/component/legalPerson.vue | 4 src/views/projectManage/progress/progressRecord.vue | 62 + src/api/projectEngineering/projectInvestmentFunding.js | 61 ++ src/views/projectManage/plan/index.vue | 2 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 ++ /dev/null | 171 ------- src/views/projectEngineering/projectLibrary/component/PolicyInfo.vue | 3 src/api/projectEngineering/projectInfo.js | 18 src/views/projectEngineering/projectLibrary/component/BasicInfo.vue | 232 ++++++--- src/views/projectEngineering/projectLibrary/component/InvestInfo.vue | 194 ++++--- src/views/projectManage/plan/planInfoCheck.vue | 15 src/api/projectManage/progress/index.js | 9 src/views/projectEngineering/projectLibrary/projectDetails.vue | 121 ---- src/views/projectProcess/index.vue | 2 src/views/projectManage/plan/planRecord.vue | 29 23 files changed, 753 insertions(+), 595 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..4343779 --- /dev/null +++ b/src/api/projectEngineering/projectInvestmentFunding.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 鑾峰彇椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃鍒嗛〉 +export const getProjectInvestmentFundings = (params) => { + return request({ + url: "/project/investmentFunding/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃鍒楄〃 +export const getProjectInvestmentFundingList = () => { + return request({ + url: "/project/investmentFunding/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const getProjectInvestmentFundingById = (params) => { + return request({ + url: "/project/investmentFunding/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const deleteProjectInvestmentFundingById = (params) => { + return request({ + url: "/project/investmentFunding/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const deleteProjectInvestmentFundingByIds = (params) => { + return request({ + url: "project/investmentFunding/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const editProjectInvestmentFunding = (params) => { + return request({ + url: "/project/investmentFunding/", + method: "PUT", + data: params + }) +} + +// 娣诲姞椤圭洰鎶曡祫鍙婅祫閲戞潵婧愭儏鍐佃〃 +export const addProjectInvestmentFunding = (params) => { + return request({ + url: "/project/investmentFunding/", + 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..d0b9b9c --- /dev/null +++ b/src/api/projectEngineering/projectInvestmentPolicyCompliance.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 鑾峰彇鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛ㄥ垎椤� +export const getProjectInvestmentPolicyCompliances = (params) => { + return request({ + url: "/project/investmentPolicyCompliance/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛ㄥ垪琛� +export const getProjectInvestmentPolicyComplianceList = () => { + return request({ + url: "project/investmentPolicyCompliance/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const getProjectInvestmentPolicyComplianceById = (params) => { + return request({ + url: "/project/investmentPolicyCompliance/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const deleteProjectInvestmentPolicyComplianceById = (params) => { + return request({ + url: "/project/investmentPolicyCompliance/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const deleteProjectInvestmentPolicyComplianceByIds = (params) => { + return request({ + url: "/project/investmentPolicyCompliance/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const editProjectInvestmentPolicyCompliance = (params) => { + return request({ + url: "/project/investmentPolicyCompliance/", + method: "PUT", + data: params + }) +} + +// 娣诲姞鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌琛� +export const addProjectInvestmentPolicyCompliance = (params) => { + return request({ + url: "/project/investmentPolicyCompliance/", + method: "POST", + data: params + }) +} diff --git a/src/api/projectEngineering/projectUnitRegistrationInfo.js b/src/api/projectEngineering/projectUnitRegistrationInfo.js new file mode 100644 index 0000000..2be1ab0 --- /dev/null +++ b/src/api/projectEngineering/projectUnitRegistrationInfo.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 鑾峰彇椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛ㄥ垎椤� +export const getProjectUnitRegistrationInfos = (params) => { + return request({ + url: "/project/unitRegistrationInfo/page", + method: "GET", + params: params + }) +} + +// 鑾峰彇椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛ㄥ垪琛� +export const getProjectUnitRegistrationInfoList = () => { + return request({ + url: "/project/unitRegistrationInfo/list", + method: "GET" + }) +} + +// 閫氳繃id鑾峰彇椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const getProjectUnitRegistrationInfoById = (params) => { + return request({ + url: "/project/unitRegistrationInfo/" + params, + method: "GET" + }) +} + +// 閫氳繃id鍒犻櫎椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const deleteProjectUnitRegistrationInfoById = (params) => { + return request({ + url: "/project/unitRegistrationInfo/" + params, + method: "DELETE" + }) +} + +// 鎵归噺鍒犻櫎椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const deleteProjectUnitRegistrationInfoByIds = (params) => { + return request({ + url: "/project/unitRegistrationInfo/batch", + method: "DELETE", + data: params + }) +} + +// 淇敼椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const editProjectUnitRegistrationInfo = (params) => { + return request({ + url: "/project/unitRegistrationInfo/", + method: "PUT", + data: params + }) +} + +// 娣诲姞椤圭洰锛堟硶浜猴級鍗曚綅鐧昏淇℃伅琛� +export const addProjectUnitRegistrationInfo = (params) => { + return request({ + url: "/project/unitRegistrationInfo/", + method: "POST", + data: params + }) +} diff --git a/src/api/projectManage/progress/index.js b/src/api/projectManage/progress/index.js index 6e1b5e7..e5c2eda 100644 --- a/src/api/projectManage/progress/index.js +++ b/src/api/projectManage/progress/index.js @@ -41,5 +41,14 @@ }) } +// 鎻愪氦涓婃姤鍐呭 +export function recordSubmit(data) { + return request({ + url: '/api/project-plan-progress-report', + method: 'post', + data: data + }) +} + 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..1319e34 100644 --- a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue +++ b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue @@ -1,25 +1,27 @@ <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"> - <el-input v-model.trim="projectForm.projectName" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="projectForm.projectName" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item class="item" label="椤圭洰浠g爜" label-width="100px" prop="projectCode"> - <el-input v-model.trim="projectForm.projectCode" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="projectForm.projectCode" class="item" clearable disabled maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="12" style="position: relative"> - <div style="width: 150px; position: absolute;"><img alt="" src="../../../../assets/images/s.png" /></div> + <div style="width: 150px; position: absolute;"><img alt="" src="../../../../assets/images/s.png"/></div> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item class="item" label="寤鸿鍐呭" label-width="100px" prop="content"> - <el-input v-model.trim="projectForm.content" style="width: 100%;" clearable maxlength="255" placeholder="璇疯緭鍏�" type="textarea" /> + <el-input v-model.trim="projectForm.content" style="width: 100%;" clearable maxlength="255" + placeholder="璇疯緭鍏�" type="textarea"/> </el-form-item> </el-col> </el-row> @@ -42,14 +44,15 @@ </el-col> <el-col :span="6"> <el-form-item label="椤圭洰闃舵" label-width="100px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="projectForm.projectPhase" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="projectForm.projectPhase" class="item" clearable disabled maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="椤圭洰绫诲瀷" label-width="100px" prop="projectType" style="width: 100%"> - <el-select v-model="projectForm.projectType" clearable placeholder="璇烽�夋嫨" style="width: 100%" > + <el-select v-model="projectForm.projectType" clearable placeholder="璇烽�夋嫨" style="width: 100%"> <el-option v-for="item in dict.type.sys_project_type" :key="item.value" :label="item.label" :value="item.value"/> </el-select> @@ -57,7 +60,7 @@ </el-col> <el-col :span="6"> <el-form-item label="椤圭洰鐘舵��" label-width="100px" prop="projectstatus" style="width: 100%"> - <el-select v-model="projectForm.projectStatus"clearable placeholder="璇烽�夋嫨" style="width: 100%"> + <el-select v-model="projectForm.projectStatus" clearable placeholder="璇烽�夋嫨" style="width: 100%"> <el-option v-for="item in dict.type.sys_project_status" :key="item.value" :label="item.label" :value="item.value"/> </el-select> @@ -65,28 +68,31 @@ </el-col> <el-col :span="6"> <el-form-item label="椤圭洰涓氫富鍗曚綅" label-width="100px" prop="projectOwnerUnit" style="width: 100%"> - <el-input v-model.trim="projectForm.projectOwnerUnit" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="projectForm.projectOwnerUnit" 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="100px" prop="projectContactPerson" style="width: 100%"> - <el-input v-model.trim="projectForm.projectContactPerson" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-form-item label="椤圭洰鑱旂郴浜�" label-width="100px" prop="projectContactPerson" style="width: 100%"> + <el-input v-model.trim="projectForm.projectContactPerson" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="鑱旂郴鏂瑰紡" label-width="100px" prop="contact" style="width: 100%"> - <el-input v-model.trim="projectForm.contact" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="projectForm.contact" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <!-- TODO锛氭殏鏃朵笉鍋� --> <el-form-item label="鍏宠仈宸ョ▼" label-width="100px" prop="engineering" 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%"> - <el-option v-for="item in selectOptions" :key="item.id" :label="item.engineeringName" :value="item.id" /> -<!-- <RemoteSelect v-if="selectOptions.length" :hasMore="hasMore" :loading="loading" :page="page" @loadMore="handleLoadMore" />--> + <el-select v-model="projectForm.engineeringIdList" :multiple="true" collapse-tags placeholder="璇烽�夋嫨" + style="width: 100%"> + <el-option v-for="item in selectOptions" :key="item.id" :label="item.engineeringName" :value="item.id"/> + <!-- <RemoteSelect v-if="selectOptions.length" :hasMore="hasMore" :loading="loading" :page="page" @loadMore="handleLoadMore" />--> </el-select> </el-form-item> </el-col> @@ -102,8 +108,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> @@ -114,7 +124,7 @@ clearable placeholder="璇烽�夋嫨" style="width: 100%" - > + > <el-option v-for="item in dict.type.sys_administrative_divisions" :key="item.value" :label="item.label" :value="item.value"/> </el-select> @@ -152,9 +162,9 @@ </el-form-item> </el-col> <el-col :span="6"> - <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 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> </el-col> <el-col :span="6"> @@ -174,34 +184,51 @@ <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" + 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> <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="涓爣鍗曚綅" label-width="100px" prop="setTime" style="width: 100%"> - <el-input v-model.trim="projectForm.winUnit" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="projectForm.winUnit" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="涓爣閲戦" label-width="100px" style="width: 100%"> - <el-input v-model.trim="projectForm.winAmount" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" type="number" /> + <el-input v-model.trim="projectForm.winAmount" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" + type="number"/> </el-form-item> </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> @@ -221,7 +248,8 @@ </el-col> <el-col :span="6"> <el-form-item label="骞村害鎶曡祫閲戦" label-width="100px" prop="company" style="width: 100%; min-width: 260px"> - <el-input v-model.trim="projectForm.yearInvestAmount" clearable maxlength="255" placeholder="璇疯緭鍏�" style="width: 90%" type="number" /> + <el-input v-model.trim="projectForm.yearInvestAmount" clearable maxlength="255" placeholder="璇疯緭鍏�" + style="width: 90%" type="number"/> <span style="margin-left: 2px">鍏�</span> </el-form-item> </el-col> @@ -230,9 +258,10 @@ <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" /> + <img alt="" src="@/assets/images/positionl.png"/> </div> </div> </el-form-item> @@ -241,7 +270,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,11 +300,13 @@ // 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' - ,'sys_administrative_divisions','sys_centralized_management','sys_approval_type','sys_key_categories','sys_annual_plan'], + dicts: ['sys_funding_type', 'sys_investment_type', 'sys_project_type', 'sys_project_status', 'sys_competent_department' + , 'sys_administrative_divisions', 'sys_centralized_management', 'sys_approval_type', 'sys_key_categories', 'sys_annual_plan'], components: { Map, // UploadStandard, @@ -290,6 +321,7 @@ data() { return { projectForm: { + id: '', projectName: '', projectCode: '', projectType: '', @@ -315,7 +347,7 @@ winTime: '', winUnit: '', winAmount: '', - address: '', + projectAddress: '', engineeringIdList: [], content: '', contact: '', @@ -323,77 +355,117 @@ planStartTime: '', planCompleteTime: '', projectContactPerson: '', - fileIdList: [], - sysOssVos: [], + fileList: [], engineeringInfos: [], year: '', yearInvestAmount: '', competentDepartmentList: [], managementCentralizationList: [] }, + approvalList: [], setTime: '', planStartTime: '', planCompleteTime: '', winTime: '', - projectList: [], dialogMap: false, page: 1, loading: false, hasMore: true, selectOptions: [], - accept: ['pdf', 'docx', 'xlsx', 'jpg','jpeg'], + accept: ['pdf', 'docx', 'xlsx', 'jpg', 'jpeg'], largeCategory: '', subclass: '', mapCreateInfo: {}, demoFormRef: null, rules: { - projectName: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }] + projectName: [{required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur'}] } }; }, computed: { - dialogMapList () { + dialogMapList() { return [{ - addr: this.projectForm.address, + addr: this.projectForm.projectAddress, name: '鍒涘缓' }]; }, }, - created() { - this.handleLoadMore(1); + mounted() { + this.projectForm.id = this.$route.query.projectId; + const projectForm = Cookies.get("projectForm"); + if (projectForm) { + this.projectForm = JSON.parse(projectForm); + } else { + //鍒濆鍖栦富绠¢儴闂ㄤ笅鎷夋 + this.getApprovalList(); + // 鍦ㄧ粍浠跺垱寤烘椂鑾峰彇椤圭洰淇℃伅锛屽鏋� 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 { this.loading = true; - const res = await getList({ pageNum: newPage, pageSize: 10000 }); + const res = await getList({pageNum: newPage, pageSize: 10000}); const list = res.rows || []; if (newPage === 1) { this.selectOptions = []; @@ -420,33 +492,23 @@ }, mapCreateClick() { console.log("鍒涘缓") - const { lon, lat, addr } = this.mapCreateInfo; + const {lon, lat, addr} = this.mapCreateInfo; 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 +516,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> @@ -476,10 +530,12 @@ .item { width: 100%; } + .map_div { width: 100%; height: 643px; } + .input-row { display: flex; width: 100%; 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..beda437 100644 --- a/src/views/projectEngineering/projectLibrary/component/InvestInfo.vue +++ b/src/views/projectEngineering/projectLibrary/component/InvestInfo.vue @@ -1,25 +1,26 @@ <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%" > <el-option v-for="item in dict.type.sys_cross_domain" :key="item.value" :label="item.label" - :value="item.value"/> + :value="parseInt(item.value)"/> </el-select> </el-form-item> </el-col> <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,44 +40,54 @@ <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%" > <el-option v-for="item in dict.type.sys_whether_project" :key="item.value" :label="item.label" - :value="item.value"/> + :value="parseInt(item.value)"/> </el-select> </el-form-item> </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,13 +131,13 @@ <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%" > <el-option v-for="item in dict.type.sys_whether_project" :key="item.value" :label="item.label" - :value="item.value"/> + :value="parseInt(item.value)"/> </el-select> </el-form-item> </el-col> @@ -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: '', @@ -177,49 +200,7 @@ useEarth: '', contentScale: '', 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: [] + projectId: '', }, plannedStartDate: '', expectedCompletionDate: '', @@ -232,34 +213,67 @@ }; }, mounted() { - this.updateFormData(); + this.investmentForm.projectId = this.$route.query.projectId + // 浠嶤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瀵硅薄 + if(parsedInvestmentForm) { + this.investmentForm = parsedInvestmentForm; + } + if(parsedProjectForm) { + this.projectForm = parsedProjectForm; + } + // 濡傛灉璺敱瀛樺湪id涓旀病鏈夌紦瀛橈紝瑙嗕负缂栬緫鎴栨煡鐪嬶紝璋冪敤api + if (this.investmentForm.projectId && !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.projectId ).then(res => { + this.investmentForm = res.data; + this.investmentForm.constructionLocation = this.projectForm.area; + this.investmentForm.detailedAddress = this.projectForm.projectAddress; + this.investmentForm.plannedStartDate = this.projectForm.planStartTime; + this.investmentForm.expectedCompletionDate = this.projectForm.planCompleteTime; + }); }, - 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..9896aa8 100644 --- a/src/views/projectEngineering/projectLibrary/component/investmentFunds.vue +++ b/src/views/projectEngineering/projectLibrary/component/investmentFunds.vue @@ -1,161 +1,188 @@ <template> <div class="basic-info"> - <el-form ref="demoFormRef" :disabled="disabled" :model="investmentFunds" class="dialog_form"> + <el-form ref="demoFormRef" :disabled="disabled" :model="investmentFundsForm" class="dialog_form"> <!-- 淇濇寔鍘熸湁妯℃澘鍐呭涓嶅彉 --> <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="椤圭洰鎬绘姇璧勯" label-width="130px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.totalInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.totalInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="椤圭洰鏈噾" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.principal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.principal" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="涓�銆佹斂搴滄姇璧�" label-width="130px" prop="projectType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.governmentInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.governmentInvestmentTotal" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="锛堜竴锛変腑澶姇璧�" label-width="130px" prop="projectType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.centralInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.centralInvestmentTotal" 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="1.涓ぎ棰勭畻鎶曡祫" label-width="130px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.centralBudgetInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.centralBudgetInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="2.涓ぎ璐㈡斂" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.centralFiscalInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.centralFiscalInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> - <el-form-item class="items" label="3.涓ぎ涓撻」鍊哄埜绛归泦鐨勪笓椤瑰缓璁捐祫閲�" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.centralSpecialBondInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-form-item class="items" label="3.涓ぎ涓撻」鍊哄埜绛归泦鐨勪笓椤瑰缓璁捐祫閲�" label-width="130px" prop="investmentType" + style="width: 100%"> + <el-input v-model.trim="investmentFundsForm.centralSpecialBondInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="4.涓ぎ涓撻」寤鸿鍩洪噾" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.centralSpecialFundInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.centralSpecialFundInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="锛堜簩锛夌渷绾ф姇璧�" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.provincialInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.provincialInvestmentTotal" 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="1.鐪侀绠楀唴鎶曡祫" label-width="130px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.provincialBudgetInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.provincialBudgetInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="2.鐪佽储鏀挎�у缓璁炬姇璧�" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.provincialFiscalInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.provincialFiscalInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="3.鐪佷笓椤瑰缓璁捐祫閲�" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.provincialSpecialFundInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.provincialSpecialFundInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="锛堜笁锛夊競(宸�)鎶曡祫" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.cityInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.cityInvestmentTotal" 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="1.甯�(宸�)棰勭畻鍐呮姇璧�" label-width="130px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.cityBudgetInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.cityBudgetInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="2.甯�(宸�)璐㈡斂鎬ф姇璧�" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.cityFiscalInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.cityFiscalInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="3.甯�(宸�)涓撻」璧勯噾" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.citySpecialFundInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.citySpecialFundInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="锛堝洓锛夊幙(甯傘�佸尯)鎶曡祫" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.countyInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.countyInvestmentTotal" 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="1.鍖�(鍘�)棰勭畻鍐呮姇璧�" label-width="130px" prop="fundsType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.countyBudgetInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.countyBudgetInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> - <el-form-item class="items" label="2.鍖猴紙鍘匡級璐㈡斂鎬у缓璁捐祫閲�" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.countyFiscalInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-form-item class="items" label="2.鍖猴紙鍘匡級璐㈡斂鎬у缓璁捐祫閲�" label-width="130px" prop="investmentType" + style="width: 100%"> + <el-input v-model.trim="investmentFundsForm.countyFiscalInvestment" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="3.鍖�(鍘�)涓撻」璧勯噾" label-width="130px" prop="investmentType" style="width: 100%"> - <el-input v-model.trim="investmentFunds.countySpecialFundInvestment" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.countySpecialFundInvestment" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="浜屻�佸浗鍐呰捶娆�" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.domesticLoanTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.domesticLoanTotal" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="閾惰璐锋" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.bankLoan" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.bankLoan" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="涓夈�佸鍟嗘姇璧�" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.foreignInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.foreignInvestmentTotal" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="鍥涖�佷紒涓氳嚜绛�" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.enterpriseSelfRaisedTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.enterpriseSelfRaisedTotal" class="item" clearable + maxlength="255" placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="浜斻�佸叾浠栨姇璧�" label-width="130px" prop="engineering" style="width: 100%"> - <el-input v-model.trim="investmentFunds.otherInvestmentTotal" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" /> + <el-input v-model.trim="investmentFundsForm.otherInvestmentTotal" class="item" clearable maxlength="255" + placeholder="璇疯緭鍏�"/> </el-form-item> </el-col> </el-row> @@ -164,6 +191,13 @@ </template> <script> +import Cookies from "js-cookie"; +import { + addProjectInvestmentFunding, + editProjectInvestmentFunding, + getProjectInvestmentFundingById +} from "@/api/projectEngineering/projectInvestmentFunding"; + export default { name: 'InvestmentFundsForm', props: { @@ -175,7 +209,10 @@ }, data() { return { - investmentFunds: { + projectForm: {}, + investmentFundsForm: { + id: '', + projectId: '', totalInvestment: '', principal: '', governmentInvestmentTotal: '', @@ -205,12 +242,54 @@ }; }, methods: { - + getInvestmentFunds() { + getProjectInvestmentFundingById(this.investmentForm.projectId ).then(res => { + this.investmentFundsForm = res.data; + }); + }, + submit() { + if (!this.projectForm.id) { + this.$message.error("璇峰厛淇濆瓨鎶曡祫绠$悊鍩烘湰淇℃伅") + } else { + this.investmentFundsForm.projectId = this.projectForm.id; + if (this.investmentFundsForm.id != null) { + editProjectInvestmentFunding(this.investmentFundsForm).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + //璺宠浆鍒颁笅涓粍浠� + this.$emit('toNext', 3); + }); + } else { + addProjectInvestmentFunding(this.investmentFundsForm).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.investmentFundsForm.id = response.data + //璺宠浆鍒颁笅涓粍浠� + this.$emit('toNext', 3); + }); + } + } + }, }, - created() { + mounted() { + this.investmentFundsForm.id = this.$route.query.projectId; + const investmentFundsForm = Cookies.get("investmentFundsForm"); + const projectForm = Cookies.get("projectForm"); + const parsedInvestmentForm = investmentFundsForm ? JSON.parse(investmentFundsForm) : null; + const parsedProjectForm = projectForm ? JSON.parse(projectForm) : null; + if (parsedInvestmentForm) { + this.investmentFundsForm = parsedInvestmentForm + } + if (parsedProjectForm){ + this.projectForm = parsedProjectForm + } + // 濡傛灉璺敱瀛樺湪id涓旀病鏈夌紦瀛�,瑙嗕负缂栬緫鎴栨煡鐪嬶紝璋冪敤api + if (this.investmentFundsForm.projectId && !parsedInvestmentForm) { + this.getInvestmentFunds(); + } }, - + beforeDestroy() { + Cookies.set("investmentFundsForm", JSON.stringify(this.investmentFundsForm)); + }, } </script> @@ -244,7 +323,7 @@ } .items { - ::v-deep .el-form-item__label { + ::v-deep .el-form-item__label { line-height: 16px; text-align: right; } 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/projectManage/plan/index.vue b/src/views/projectManage/plan/index.vue index 7d2d5f5..676cbd7 100644 --- a/src/views/projectManage/plan/index.vue +++ b/src/views/projectManage/plan/index.vue @@ -331,7 +331,7 @@ this.$router.push({ path: '/projectManage/planRecord', query: { - data: JSON.stringify(row) + data: row } }) } diff --git a/src/views/projectManage/plan/planInfo.vue b/src/views/projectManage/plan/planInfo.vue index 3fd438b..9608965 100644 --- a/src/views/projectManage/plan/planInfo.vue +++ b/src/views/projectManage/plan/planInfo.vue @@ -7,6 +7,7 @@ <el-card shadow="hover"> <el-row :gutter="20"> <el-col :span="24" class="mb-4"> + <el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px; margin-left: 10px">杩斿洖</el-button> <el-button type="primary" size="small" @click="handleAdd" style="float: right; margin-bottom: 10px">鏂板</el-button> <el-table :data="tableData" border stripe style="width: 100%; margin-bottom: 20px"> <el-table-column prop="index" label="搴忓彿" width="50" align="center"> @@ -99,15 +100,13 @@ methods: { // 椤甸潰鍔犺浇 search() { - this.getPlanInfoData(this.planRecordData.id); + this.getPlanInfoData(this.planInfoData.id); }, // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏 getPlanRecordData() { // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁 - if (this.$route.query.data) { - this.planRecordData = JSON.parse(this.$route.query.data) - } - this.planInfoData = this.$route.query.planInfoData + this.planRecordData = this.$route.query.planRecordData + this.planInfoData = this.$route.query.data this.search(); }, // 鑾峰彇椤圭洰璁″垝椤� @@ -134,12 +133,12 @@ // 閬嶅巻tableData锛岃幏寰楀�间笉涓虹┖瀛楃涓茬殑琛� const validList = this.tableData.filter(item => item.title !== '' || item.startTime !== '' || item.endTime !== ''); this.addData = { - projectPlanRecordId: this.planRecordData.id, + projectPlanRecordId: this.planInfoData.id, actualInvest: this.actualInvest, addList: validList } addPlanInfo(this.addData).then(response => { - this.handlePlanRecord(this.planInfoData) + this.handlePlanRecord() }) }, // 閲嶇疆褰撳墠琛屾暟鎹� @@ -167,11 +166,11 @@ }); }, /** 杩斿洖椤圭洰璁″垝璁板綍 */ - handlePlanRecord(planInfoData) { + handlePlanRecord() { this.$router.push({ - name: '/projectManage/planRecord', + path: '/projectManage/planRecord', query: { - data: JSON.stringify(planInfoData) + data: this.planRecordData } }) } diff --git a/src/views/projectManage/plan/planInfoCheck.vue b/src/views/projectManage/plan/planInfoCheck.vue index 30c2174..ae85cde 100644 --- a/src/views/projectManage/plan/planInfoCheck.vue +++ b/src/views/projectManage/plan/planInfoCheck.vue @@ -7,6 +7,7 @@ <el-card shadow="hover"> <el-row :gutter="20"> <el-col :span="24" class="mb-4"> + <el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px;">杩斿洖</el-button> <!--椤圭洰璁″垝椤�--> <el-table :data="tableData" border stripe style="width: 100%; margin-bottom: 20px"> <el-table-column prop="index" label="搴忓彿" width="50" align="center"> @@ -176,9 +177,7 @@ // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏 getPlanRecordData() { // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁 - if (this.$route.query.data) { - this.planRecordData = JSON.parse(this.$route.query.data) - } + this.planRecordData = this.$route.query.data this.planInfoData = this.$route.query.planInfoData this.search(); }, @@ -226,15 +225,15 @@ this.tableData[index].startTime = ''; this.tableData[index].endTime = ''; }, - /** 杩斿洖椤圭洰璁″垝璁板綍椤甸潰 */ - handlePlanRecord(planInfoData) { + /** 杩斿洖椤圭洰璁″垝璁板綍 */ + handlePlanRecord() { this.$router.push({ - name: '/projectManage/planRecord', + path: '/projectManage/planRecord', query: { - data: JSON.stringify(planInfoData) + data: this.planRecordData } }) - }, + } }, created() { this.getPlanRecordData(); diff --git a/src/views/projectManage/plan/planRecord.vue b/src/views/projectManage/plan/planRecord.vue index 19f0123..f2022b1 100644 --- a/src/views/projectManage/plan/planRecord.vue +++ b/src/views/projectManage/plan/planRecord.vue @@ -1,8 +1,8 @@ <template> <div class="app-container"> <el-container> - <el-header v-show="planInfoData && planInfoData.projectName" class="header-title">椤圭洰鍚嶇О锛歿{ planInfoData.projectName }}</el-header> - <h4 v-show="planInfoData && planInfoData.projectCode" style="text-align: center">椤圭洰浠g爜锛歿{ planInfoData.projectCode }}</h4> + <el-header v-show="planRecordData && planRecordData.projectName" class="header-title">椤圭洰鍚嶇О锛歿{ planRecordData.projectName }}</el-header> + <h4 v-show="planRecordData && planRecordData.projectCode" style="text-align: center">椤圭洰浠g爜锛歿{ planRecordData.projectCode }}</h4> <el-main> <el-card shadow="hover"> <el-row :gutter="20"> @@ -102,7 +102,7 @@ data() { return { // 鎺ユ敹浼犻�掕繃鏉ョ殑椤圭洰璁″垝鏁版嵁 - planInfoData: {}, + planRecordData: {}, // 鏈堝害璁″垝鏁版嵁 monthRecords: [], // 瀛e害璁″垝鏁版嵁 @@ -114,15 +114,13 @@ methods: { // 椤甸潰鍔犺浇 search() { - this.getPlanRecordData(this.planInfoData.id); + this.getPlanRecordData(this.planRecordData.id); }, // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏 getPlanInfoData() { // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁 - if (this.$route.query.data) { - this.planInfoData = JSON.parse(this.$route.query.data); - this.getPlanRecordData(this.planInfoData.id); - } + this.planRecordData = this.$route.query.data + this.getPlanRecordData(this.planRecordData.id); }, // 鑾峰彇椤圭洰璁″垝璁板綍鏁版嵁 getPlanRecordData(id) { @@ -138,7 +136,7 @@ handleAddMonthPlan() { let planRecordData = { id: undefined, - projectInfoId: this.planInfoData.id, + projectInfoId: this.planRecordData.id, planTimeFlag: 0 } // 鍒ゆ柇鏈堝害璁″垝鏄惁涓虹┖ @@ -156,7 +154,7 @@ handleAddSeasonPlan() { let planRecordData = { id: undefined, - projectInfoId: this.planInfoData.id, + projectInfoId: this.planRecordData.id, planTimeFlag: 1 } // 鍒ゆ柇瀛e害璁″垝鏄惁涓虹┖ @@ -174,7 +172,7 @@ handleAddYearPlan() { let planRecordData = { id: undefined, - projectInfoId: this.planInfoData.id, + projectInfoId: this.planRecordData.id, planTimeFlag: 2 } // 鍒ゆ柇骞村害璁″垝鏄惁涓虹┖ @@ -191,10 +189,10 @@ /** 淇敼椤圭洰璁″垝椤� */ handlePlanInfo(row) { this.$router.push({ - name: 'PlanInfo', + path: '/projectManage/planInfo', query: { - data: JSON.stringify(row), - planInfoData: this.planInfoData + data: row, + planRecordData: this.planRecordData } }) }, @@ -209,7 +207,8 @@ this.$router.push({ path: '/projectManage/planInfoCheck', query: { - data: JSON.stringify(row), + data: row, + planRecordData: this.planRecordData } }) } diff --git a/src/views/projectManage/progress/progressRecord.vue b/src/views/projectManage/progress/progressRecord.vue index 422b813..3c2eafe 100644 --- a/src/views/projectManage/progress/progressRecord.vue +++ b/src/views/projectManage/progress/progressRecord.vue @@ -125,62 +125,63 @@ </div> </el-row> - <el-dialog title="杩涘害涓婃姤" :visible.sync="dialogFormVisible" custom-class="custom-dialog"> + <el-dialog :title=" checkFlag ? '杩涘害鏌ョ湅' : '杩涘害涓婃姤' " :visible.sync="dialogFormVisible" custom-class="custom-dialog"> <el-form :model="progressReportData"> <el-form-item label="鎶ュ憡鏈燂細" :label-width="formLabelWidth"> - <el-input :value="progressReportData.planTime + (progressReportData.planTimeFlag === 0 ? '鏈堝害' : progressReportData.planTimeFlag === 1 ? '瀛e害' : '骞村害')" disabled /> + <el-input :value="progressReportData.planTime + (progressReportData.planTimeFlag === 0 ? '鏈堝害' : progressReportData.planTimeFlag === 1 ? '瀛e害' : '骞村害')" readonly /> </el-form-item> <el-form-item label="璁″垝浜嬮」锛�" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.title" disabled /> + <el-input v-model="progressReportData.title" readonly /> </el-form-item> <el-form-item label="璁″垝鏃堕棿锛�" :label-width="formLabelWidth"> - <el-date-picker v-model="progressReportData.startTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" disabled/> + <el-date-picker v-model="progressReportData.startTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" readonly/> 鑷� - <el-date-picker v-model="progressReportData.endTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" disabled/> + <el-date-picker v-model="progressReportData.endTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" readonly/> </el-form-item> <el-form-item label="瀹為檯瀹屾垚鏃堕棿锛�" :label-width="formLabelWidth"> - <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" /> + <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" :readonly="checkFlag"/> 鑷� - <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" /> + <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" :readonly="checkFlag"/> </el-form-item> <el-form-item label="杩涘害鎯呭喌锛�" :label-width="formLabelWidth"> - <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="璇疯緭鍏�" rows="3" /> + <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" /> </el-form-item> <el-form-item label="宸ョ▼杩涘害闄勪欢锛�" :label-width="formLabelWidth"> <el-upload class="upload-demo" drag action="https://jsonplaceholder.typicode.com/posts/" - multiple> + multiple + :disabled="checkFlag" > <i class="el-icon-upload"></i> <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> <div class="el-upload__tip" slot="tip">鍙兘涓婁紶jpg/png鏂囦欢锛屼笖涓嶈秴杩�500kb</div> </el-upload> </el-form-item> <el-form-item label="鎴鏈姤鍛婂畬鎴愭姇璧勶細" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.actualInvest" type="number" /> + <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag" /> </el-form-item> <el-form-item label="涓婄骇瀹℃牳锛�" :label-width="formLabelWidth"> - <el-input :value="progressReportData.departmentExamine === 0 ? '鍚屾剰' : '椹冲洖'" disabled /> + <el-input :value="progressReportData.departmentExamine === 0 ? '鍚屾剰' : progressReportData.departmentExamine === 1 ? '椹冲洖' : '鏈鏍�'" readonly /> </el-form-item> <el-form-item label="涓婄骇鎵瑰锛�" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.departmentApproval" disabled /> + <el-input v-model="progressReportData.departmentApproval" readonly /> </el-form-item> <el-form-item label="涓婄骇鎵瑰鍥炲锛�" :label-width="formLabelWidth"> - <el-input type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="璇疯緭鍏�" rows="3" /> + <el-input type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" /> </el-form-item> <el-form-item label="涓荤閮ㄩ棬瀹℃牳锛�" :label-width="formLabelWidth"> - <el-input :value="progressReportData.manageExamine === 0 ? '鍚屾剰' : '椹冲洖'" disabled /> + <el-input :value="progressReportData.manageExamine === 0 ? '鍚屾剰' : progressReportData.manageExamine === 1 ? '椹冲洖' : '鏈鏍�'" readonly /> </el-form-item> <el-form-item label="涓荤閮ㄩ棬瀹℃牳鎵瑰锛�" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.manageApproval" disabled /> + <el-input v-model="progressReportData.manageApproval" readonly /> </el-form-item> <el-form-item label="涓荤閮ㄩ棬鎵瑰鍥炲锛�" :label-width="formLabelWidth"> - <el-input type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="璇疯緭鍏�" rows="3" /> + <el-input type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="dialogFormVisible = false">涓� 鎶�</el-button> + <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag">涓� 鎶�</el-button> <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> </div> </el-dialog> @@ -191,7 +192,7 @@ </template> <script> -import { getProgressInfoList, getProgressReport } from "@/api/projectManage/progress/index"; +import { getProgressInfoList, getProgressReport, recordSubmit } from "@/api/projectManage/progress/index"; export default { name: "progressRecord", @@ -205,17 +206,18 @@ activeTab: "month", // 榛樿鏄剧ず鏈堝害璁″垝 dialogFormVisible: false, + // 鏌ョ湅鏄剧ず + checkFlag: false, progressReportData: {}, formLabelWidth: '150px' } }, methods: { - // 椤甸潰鍔犺浇 search() { - this.getPlanRecordData(this.planRecordData.id); + this.getPlanRecordData() }, // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏 - getplanRecordData() { + getPlanRecordData() { // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁 if (this.$route.query.data) { this.planRecordData = JSON.parse(this.$route.query.data); @@ -236,10 +238,26 @@ getProgressReport(row.id).then(res => { this.progressReportData = res.data; }) + }, + // 涓婃姤鎻愪氦 + handleRecordSubmit() { + recordSubmit(this.progressReportData).then(res => { + this.dialogFormVisible = false; + this.$message.success('涓婃姤鎴愬姛'); + this.search(); + }) + }, + // 鏌ョ湅杩涘害 + handleCheckProgress(row) { + this.dialogFormVisible = true; + this.checkFlag = true; + getProgressReport(row.id).then(res => { + this.progressReportData = res.data; + }) } }, created() { - this.getplanRecordData(); + this.search(); }, }; </script> diff --git a/src/views/projectManage/progress/progressReport.vue b/src/views/projectManage/progress/progressReport.vue deleted file mode 100644 index 5942452..0000000 --- a/src/views/projectManage/progress/progressReport.vue +++ /dev/null @@ -1,171 +0,0 @@ -<template> - <div class="app-container"> - <el-container> - <el-header v-show="planRecordData && planRecordData.projectName" class="header-title">椤圭洰鍚嶇О锛歿{ planRecordData.projectName }}</el-header> - <h4 v-show="planRecordData && planRecordData.projectCode" style="text-align: center">椤圭洰浠g爜锛歿{ planRecordData.projectCode }}</h4> - <el-main> - <el-card shadow="hover"> - <el-row :gutter="20"> - <el-form :model="form" label-width="80px"> - <el-row> - <el-col :span="6"> - <el-form-item label="鎶ュ憡鏈燂細"> - <el-input v-model="form.reportPeriod"></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="璁″垝浜嬮」锛�"> - <el-input v-model="form.planItem"></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="璁″垝鏃堕棿锛�"> - <el-date-picker type="daterange" placeholder="閫夋嫨鏃ユ湡鑼冨洿" v-model="form.planTimeRange" style="width: 100%;"></el-date-picker> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="瀹為檯瀹屾垚鏃堕棿锛�"> - <el-date-picker type="daterange" placeholder="閫夋嫨鏃ユ湡鑼冨洿" v-model="form.actualCompletionTimeRange" style="width: 100%;"></el-date-picker> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="6"> - <el-form-item label="杩涘害鎯呭喌锛�"> - <el-input type="textarea" v-model="form.progressSituation"></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="宸ョ▼杩涘害闄勪欢锛�"> - <el-upload - class="upload-demo" - action="/api/upload" - :on-preview="handlePreview" - :on-remove="handleRemove" - :file-list="fileList" - list-type="picture-card" - multiple - :auto-upload="false" - > - <i class="el-icon-plus"></i> - </el-upload> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="6"> - <el-form-item label="鎴鏈姤鍛婂畬鎴愭姇璧勶細"> - <el-input v-model="form.investmentAmount"></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="涓婄骇瀹℃牳锛�"> - <el-select v-model="form.superiorReview" placeholder="璇烽�夋嫨"> - <el-option label="鍚屾剰" value="agree"></el-option> - <el-option label="涓嶅悓鎰�" value="disagree"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="涓婄骇鎵瑰锛�"> - <el-input v-model="form.superiorApproval"></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="涓荤閮ㄩ棬瀹℃牳锛�"> - <el-input v-model="form.departmentReview"></el-input> - </el-form-item> - </el-col> - </el-row> - <div slot="footer" class="dialog-footer"> - <el-button @click="reset">閲嶇疆</el-button> - <el-button type="primary" @click="submit">淇濆瓨</el-button> - </div> - </el-form> - </el-row> - </el-card> - </el-main> - </el-container> - </div> -</template> - -<script> -import { getProgressInfoList } from "@/api/projectManage/progress/index"; - -export default { - name: "progressReport", - data() { - return { - // 鎺ユ敹浼犻�掕繃鏉ョ殑椤圭洰璁″垝鏁版嵁 - planRecordData: {}, - projectPlanInfo:{}, - monthProgress: [], - seasonProgress: [], - yearProgress: [], - activeTab: "month", // 榛樿鏄剧ず鏈堝害璁″垝 - - - form: { - reportPeriod: '', - planItem: '', - planTimeRange: [], - actualCompletionTimeRange: [], - progressSituation: '', - investmentAmount: '', - superiorReview: '', - superiorApproval: '', - departmentReview: '' - }, - fileList: [] - } - }, - methods: { - // 椤甸潰鍔犺浇 - search() { - this.getPlanRecordData(this.planRecordData.id); - }, - // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏 - getData() { - // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁 - this.planRecordData = this.$route.query.data - this.projectPlanInfo = this.$route.query.projectPlanInfo; - }, - // 鑾峰彇椤圭洰杩涘害璁″垝椤� - getProgressInfoList(id) { - getProgressInfoList(id).then(res => { - this.monthProgress = res.data.monthProgress; - this.seasonProgress = res.data.seasonProgress; - this.yearProgress = res.data.yearProgress; - }) - }, - - - - handleRemove(file, fileList) { - console.log(file, fileList); - }, - handlePreview(file) { - console.log(file); - }, - reset() { - this.form = {}; - this.fileList = []; - }, - submit() { - // 鎻愪氦琛ㄥ崟鐨勯�昏緫 - } - }, - created() { - this.getData(); - }, -}; -</script> - -<style scoped> -.header-title { - font-size: 24px; /* 鏍规嵁闇�瑕佽皟鏁村瓧浣撳ぇ灏� */ - text-align: center; /* 灞呬腑瀵归綈 */ - line-height: 64px; /* 濡傛灉闇�瑕佷笌 header 楂樺害瀵归綈 */ -} -</style> - diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue index cab82e0..18f76a8 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