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