diff --git a/WebSite/.env.development b/WebSite/.env.development
index cf84ac68e6c37152715ac52a4df25373efd5ea14..7310cb2a4062ac7ca3ffc3e90f56c1b050c33e9d 100644
--- a/WebSite/.env.development
+++ b/WebSite/.env.development
@@ -1,2 +1,2 @@
-NODE_ENV = lg
+NODE_ENV = jk
 VUE_APP_BASE_API = '/api'
diff --git a/WebSite/package-lock.json b/WebSite/package-lock.json
index 934ebe6d704110cb93c9e0a10d4d5fcc3e1601bd..8057261cec593dd5646273c0f1e4e6c3de6bc3ab 100644
--- a/WebSite/package-lock.json
+++ b/WebSite/package-lock.json
@@ -1720,8 +1720,13 @@
         },
         "ansi-styles": {
           "version": "4.3.0",
+<<<<<<< HEAD
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+=======
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/ansi-styles/-/ansi-styles-4.3.0.tgz",
           "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+>>>>>>> develop
           "dev": true,
           "optional": true,
           "requires": {
@@ -1762,8 +1767,13 @@
         },
         "chalk": {
           "version": "4.1.2",
+<<<<<<< HEAD
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+=======
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/chalk/-/chalk-4.1.2.tgz",
           "integrity": "sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=",
+>>>>>>> develop
           "dev": true,
           "optional": true,
           "requires": {
@@ -1773,8 +1783,13 @@
         },
         "color-convert": {
           "version": "2.0.1",
+<<<<<<< HEAD
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+=======
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/color-convert/-/color-convert-2.0.1.tgz",
           "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+>>>>>>> develop
           "dev": true,
           "optional": true,
           "requires": {
@@ -1783,8 +1798,13 @@
         },
         "color-name": {
           "version": "1.1.4",
+<<<<<<< HEAD
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+=======
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/color-name/-/color-name-1.1.4.tgz",
           "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+>>>>>>> develop
           "dev": true,
           "optional": true
         },
@@ -1796,8 +1816,13 @@
         },
         "has-flag": {
           "version": "4.0.0",
+<<<<<<< HEAD
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+=======
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/has-flag/-/has-flag-4.0.0.tgz",
           "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+>>>>>>> develop
           "dev": true,
           "optional": true
         },
@@ -1852,8 +1877,13 @@
         },
         "supports-color": {
           "version": "7.2.0",
+<<<<<<< HEAD
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+=======
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/supports-color/-/supports-color-7.2.0.tgz",
           "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+>>>>>>> develop
           "dev": true,
           "optional": true,
           "requires": {
@@ -1888,9 +1918,15 @@
           }
         },
         "vue-loader-v16": {
+<<<<<<< HEAD
+          "version": "npm:vue-loader@16.8.3",
+          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+=======
           "version": "npm:vue-loader@16.8.1",
           "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/vue-loader/-/vue-loader-16.8.1.tgz",
           "integrity": "sha1-NU8SvAiXlUFYtxWQ+AApVxOneS0=",
+>>>>>>> develop
           "dev": true,
           "optional": true,
           "requires": {
@@ -1901,22 +1937,37 @@
           "dependencies": {
             "big.js": {
               "version": "5.2.2",
+<<<<<<< HEAD
+              "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+              "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+=======
               "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/big.js/-/big.js-5.2.2.tgz",
               "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+>>>>>>> develop
               "dev": true,
               "optional": true
             },
             "emojis-list": {
               "version": "3.0.0",
+<<<<<<< HEAD
+              "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+              "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+=======
               "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/emojis-list/-/emojis-list-3.0.0.tgz",
               "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=",
+>>>>>>> develop
               "dev": true,
               "optional": true
             },
             "json5": {
               "version": "2.2.0",
+<<<<<<< HEAD
+              "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+              "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+=======
               "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/json5/-/json5-2.2.0.tgz",
               "integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=",
+>>>>>>> develop
               "dev": true,
               "optional": true,
               "requires": {
@@ -1924,9 +1975,15 @@
               }
             },
             "loader-utils": {
+<<<<<<< HEAD
+              "version": "2.0.2",
+              "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+              "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
+=======
               "version": "2.0.0",
               "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/loader-utils/-/loader-utils-2.0.0.tgz",
               "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
+>>>>>>> develop
               "dev": true,
               "optional": true,
               "requires": {
diff --git a/WebSite/src/api/common.js b/WebSite/src/api/common.js
index be4a62af95fd2cb52e01a5a748daeba2e1064865..64893d7c1957dd609ec56aad264e23d8feae662b 100644
--- a/WebSite/src/api/common.js
+++ b/WebSite/src/api/common.js
@@ -1,9 +1,9 @@
-import request from '@/core/base/request'
+import request from '@/core/base/request';
 
 export default {
   //鑾峰彇绯荤粺骞翠唤
   getConfigYearByType(type) {
-    return request.post(`baseConfig/queryConfigYearByType?type=${type}`)
+    return request.post(`baseConfig/queryConfigYearByType?type=${type}`);
   },
   //鑾峰彇褰撳墠鐧婚檰浜烘墍鍦ㄩ儴闂ㄩ瀵间俊鎭�
   queryCurrentUserLeader() {
@@ -11,18 +11,18 @@ export default {
   },
   //淇濆瓨椤圭洰鐢虫姤涔�
   saveProjectFundApply(model) {
-    return request.post('projectPlan/saveProjectInfoPlan', model)
+    return request.post('projectPlan/saveProjectInfoPlan', model);
   },
   //淇濆瓨鏃ュ父/鍏敤鐢虫姤涔�
   savePublicFundApply(model) {
-    return request.post('projectPlan/saveProjectDailyPlan', model)
+    return request.post('projectPlan/saveProjectDailyPlan', model);
   },
   //鎻愪氦椤圭洰/鍏敤/浜哄憳鐢虫姤涔�
   submitPlan(model) {
-    return request.post('projectPlan/submitProjectPlan', model)
+    return request.post('projectPlan/submitProjectPlan', model);
   },
   //閫€鍥為」鐩�/鍏敤/浜哄憳鐢虫姤涔�
   rejectPlan(model) {
-    return request.post('projectPlan/rollBackProjectPlan', model)
+    return request.post('projectPlan/rollBackProjectPlan', model);
   }
-}
\ No newline at end of file
+};
diff --git a/WebSite/src/api/index.js b/WebSite/src/api/index.js
index 034956c193d2d70fd01571e8b41795dde80be9bc..fc9364ca7ca837b6e7b3606ee0935bfb827b0e92 100644
--- a/WebSite/src/api/index.js
+++ b/WebSite/src/api/index.js
@@ -1,12 +1,14 @@
-import deptSP from './deptSP'
-import projectFundApply from './projectFundApply'
-import first from './first'
-import publicFundApply from './publicFundApply'
-import common from './common'
+import deptSP from './deptSP';
+import projectFundApply from './projectFundApply';
+import first from './first';
+import publicFundApply from './publicFundApply';
+import common from './common';
+import performance from './performance';
 export default {
   ...deptSP,
   ...projectFundApply,
   ...first,
   ...publicFundApply,
-  ...common
-}
\ No newline at end of file
+  ...common,
+  ...performance
+};
diff --git a/WebSite/src/api/performance.js b/WebSite/src/api/performance.js
new file mode 100644
index 0000000000000000000000000000000000000000..a925d440ac0abc3b1a8c9042e5fe38364956c721
--- /dev/null
+++ b/WebSite/src/api/performance.js
@@ -0,0 +1,40 @@
+import request from '@/core/base/request';
+
+export default {
+  //鑾峰彇鑷垜璇勪环瑙嗗浘鍒楄〃
+  selfTargetPage(data) {
+    return request.post('/target/selfTargetPage', data);
+  },
+  //鑾峰彇璺熻釜璇勪环瑙嗗浘鍒楄〃
+  followTargetPage(data) {
+    return request.post('/target/followTargetPage', data);
+  },
+  //鑾峰彇缁╂晥鏁存敼瑙嗗浘鍒楄〃
+  reformTargetPage(data) {
+    return request.post('/target/reformTargetPage', data);
+  },
+  //鏌ヨ琛ㄦ暟鎹�
+  queryTargetPlan(parentId, type) {
+    return request.post(
+      `/target/queryTargetPlan?parentId=${parentId}&type=${type}`
+    );
+  },
+   //鏌ヨ閲岃〃鏁版嵁
+   queryTargetByPlanId(id) {
+    return request.post(
+      `/target/queryTargetByPlanId?id=${id}`
+    );
+  },
+  //鑷瘎淇濆瓨
+  saveTargetPlanSelf(data) {
+    return request.post('/target/saveTargetPlanSelf', data);
+  },
+  //璺熻釜淇濆瓨
+  saveTargetPlanOwn(data) {
+    return request.post('/target/saveTargetPlanOwn', data);
+  },
+  //缁╂晥淇濆瓨
+  saveTargetPlanReform(data) {
+    return request.post('/target/saveTargetPlanReform', data);
+  }
+};
diff --git a/WebSite/src/api/projectLibrary.js b/WebSite/src/api/projectLibrary.js
index c4890ccc6f7702667fab9c24ccb24a2351397814..53448b4108ef3abf0fb3f6d1b075c913c3f60e88 100644
--- a/WebSite/src/api/projectLibrary.js
+++ b/WebSite/src/api/projectLibrary.js
@@ -12,6 +12,9 @@ class ProjectLibrary extends Base {
   static queryBudgetDeptSwitchDetail(data) {
     return request.post('/baseConfig/queryBudgetDeptSwitchDetail', data);
   }
+  static enterAllProjectPlanType1(data) {
+    return request.post('/projectLibrary/enterAllProjectPlanType1', data);
+  }
   // 鍒濆鍖栫敵鎶ユ帶鍒�
   static initBudgetDeptSwitch(data) {
     return request.post('/baseConfig/initBudgetDeptSwitch', data);
@@ -20,6 +23,10 @@ class ProjectLibrary extends Base {
   static openDeptSwitch(data) {
     return request.post('/baseConfig/openDeptSwitch', data);
   }
+  
+  static queryQuotaMoney(year) {
+    return request.post(`/projectLibrary/queryQuotaMoney?year=${year}`);
+  }
   // 鐢虫姤鎺у埗鎵归噺鍏�
   static closeDeptSwitch(data) {
     return request.post('/baseConfig/closeDeptSwitch', data);
@@ -266,6 +273,15 @@ class ProjectLibrary extends Base {
   static listSecondaryMenu(data) {
     return request.post(`/baseinfo/listSecondaryMenu`, data);
   }
+  static submitProjectPlanListToFinish(data) {
+    return request.post('/projectPlan/submitProjectPlanListToFinish', data);
+  }
+  static enterPublicProjectPlan(data) {
+    return request.post('/projectLibrary/enterPublicProjectPlan', data);
+  }
+  static enterPersonProjectPlan(data) {
+    return request.post('/projectLibrary/enterPersonProjectPlan', data);
+  }
   // 鑾峰彇瀛愮骇鑿滃崟
   static listChildrenMenu(id) {
     return request.post(`/baseinfo/listChildrenMenu?id=${id}`);
diff --git a/WebSite/src/api/publicFundApply.js b/WebSite/src/api/publicFundApply.js
index 3be058ba884a8da0744fad270b2d8f7dd63a05e8..63c66bed946f1719ea2e30b7f68fe91aa2627831 100644
--- a/WebSite/src/api/publicFundApply.js
+++ b/WebSite/src/api/publicFundApply.js
@@ -1,7 +1,7 @@
-import request from '@/core/base/request'
+import request from '@/core/base/request';
 
 export default {
   publicQueryDailyFund() {
     return request.post('fund/queryDailyFund');
-  },
-}
\ No newline at end of file
+  }
+};
diff --git a/WebSite/src/components/ExtendFormTable/index.vue b/WebSite/src/components/ExtendFormTable/index.vue
index 34ede7f703edc718e0e736efa53031751e2203f1..534ba958ceec9062600366b6b85af95cbf3949ce 100644
--- a/WebSite/src/components/ExtendFormTable/index.vue
+++ b/WebSite/src/components/ExtendFormTable/index.vue
@@ -53,6 +53,7 @@
               ></InputNumber>
               <el-date-picker
                 :readonly="!canEdit"
+                :editable="false"
                 v-if="item.extendType == 'RIQI'"
                 v-model="scope.row.otherJson[`${item.fileName}`]"
                 type="date"
diff --git a/WebSite/src/components/Flow/index.vue b/WebSite/src/components/Flow/index.vue
index d93ff13b205936653c1c224902f68ee006aa96f6..7eb8e7053457ce95048b1d952868e7da8d4d1522 100644
--- a/WebSite/src/components/Flow/index.vue
+++ b/WebSite/src/components/Flow/index.vue
@@ -92,11 +92,11 @@ export default {
         return {
           btnStates: {
             isShowSave: true,
-            isShowSubmit: false,
-            isShowReject: false,
-            isShowCancel: false,
-            isShowChart: false,
-            isShowHistory: false
+            isShowSubmit: true,
+            isShowReject: true,
+            isShowCancel: true,
+            isShowChart: true,
+            isShowHistory: true
           }
         };
       }
diff --git a/WebSite/src/components/PageQuery/index.vue b/WebSite/src/components/PageQuery/index.vue
index 6b94436858d6163ddc4f1a42dcbeeefd02bdeca4..fd8500954767cda8f8d4532261c698ba820d7475 100644
--- a/WebSite/src/components/PageQuery/index.vue
+++ b/WebSite/src/components/PageQuery/index.vue
@@ -199,7 +199,9 @@ export default {
             ) === -1
           );
         });
+        
         data.joinedList = data.joinedList.concat(newSelected);
+        console.log(data.joinedList ,'00000')
       } else {
         //鍏ㄤ笉閫� 鎶妀oinedList涓笉鏄綋鍓嶉〉鐨勬壘鍑烘潵
         data.joinedList = data.joinedList.filter(item => {
diff --git a/WebSite/src/components/YearPicker/index.vue b/WebSite/src/components/YearPicker/index.vue
index c70a8d6bc7301925267e00713905303040cf8131..2e71062ecae6243078f0f9a510271ee047db137c 100644
--- a/WebSite/src/components/YearPicker/index.vue
+++ b/WebSite/src/components/YearPicker/index.vue
@@ -3,6 +3,7 @@
     <el-date-picker
       v-model="year"
       type="year"
+      :editable="false"
       placeholder="閫夋嫨鏃ユ湡"
       @change="yearChange"
       :clearable="false"
@@ -21,23 +22,23 @@ export default {
     }
   },
   emits: ['update:modelValue'],
-  setup(props, {emit}) {
+  setup(props, { emit }) {
     const year = computed({
       get() {
-        return props.modelValue
+        return props.modelValue;
       },
       set(val) {
-        emit('update:modelValue', val)
+        emit('update:modelValue', val);
       }
-    })
-    const yearChange = (val) => {
+    });
+    const yearChange = val => {
       const valFormat = new Date(val).getFullYear().toString();
       year.value = valFormat;
-    }
+    };
     return {
       year,
       yearChange
-    }
+    };
   }
 };
 </script>
diff --git a/WebSite/src/router/guards.js b/WebSite/src/router/guards.js
index 825316fe1348f4518867e874d7f0f4ca99133d40..784c33a0223fbdb610306f64a5200af6a9e68c2d 100644
--- a/WebSite/src/router/guards.js
+++ b/WebSite/src/router/guards.js
@@ -15,7 +15,13 @@ NProgress.configure({ showSpinner: false });
 
 // not authenticated
 // 鏈璇佺姸鎬佺櫧鍚嶅崟
-const whiteListLv1 = ['/login', '/auth-redirect'];
+const whiteListLv1 = [
+  '/login',
+  '/auth-redirect',
+  '/i/performance/declaration',
+  '/i/performance/rectification',
+  '/i/performance/evaluation'
+];
 // authenticated
 // 宸茶璇佺姸鎬佺櫧鍚嶅崟
 const whiteListLv2 = ['/login', '/auth-redirect', '/i', '/401', '/404'];
diff --git a/WebSite/src/router/modules/commonRouter.js b/WebSite/src/router/modules/commonRouter.js
index 352e8b716c54c1a23b2d8ec1e010644fde918552..99e2d9a51cd710ccbf394652e5691cdae8a9cfba 100644
--- a/WebSite/src/router/modules/commonRouter.js
+++ b/WebSite/src/router/modules/commonRouter.js
@@ -21,4 +21,4 @@ const routes = [
   }
 ];
 
-export default routes;
\ No newline at end of file
+export default routes;
diff --git a/WebSite/src/router/modules/declaration.js b/WebSite/src/router/modules/declaration.js
new file mode 100644
index 0000000000000000000000000000000000000000..75e6a72e87c1c4ce1c57bbb333a469ebfc2ff654
--- /dev/null
+++ b/WebSite/src/router/modules/declaration.js
@@ -0,0 +1,49 @@
+const routes = [
+  {
+    path: 'performance/declaration',
+    component: () => import('@/views/performance/declaration'),
+    name: 'declaration'
+  },
+  {
+    path: 'performance/rectification',
+    component: () => import('@/views/performance/rectification'),
+    name: 'rectification'
+  },
+  {
+    path: 'performance/evaluation',
+    component: () => import('@/views/performance/evaluation'),
+    name: 'evaluation'
+  },
+  {
+    path: 'performance/evaluationview',
+    component: () => import('@/views/performance/evaluationview'),
+    name: 'evaluationview'
+  },
+  {
+    path: 'performance/rectificationview',
+    component: () => import('@/views/performance/rectificationview'),
+    name: 'rectificationview'
+  },
+  {
+    path: 'performance/declarationview',
+    component: () => import('@/views/performance/declarationview'),
+    name: 'declarationview'
+  },
+  {
+    path: 'performance/declarationwatchview',
+    component: () => import('@/views/performance/declarationwatchview'),
+    name: 'declarationwatchview'
+  },
+  {
+    path: 'performance/evaluationwatchview',
+    component: () => import('@/views/performance/evaluationwatchview'),
+    name: 'evaluationwatchview'
+  },
+  {
+    path: 'performance/rectificationwatchview',
+    component: () => import('@/views/performance/rectificationwatchview'),
+    name: 'rectificationwatchview'
+  }
+];
+
+export default routes;
diff --git a/WebSite/src/router/modules/search.js b/WebSite/src/router/modules/search.js
index c89945038441b9c9b7b9df24f408ff3344e90df3..02bd2f12a4c629f77467ef7828d17e20ef15cd86 100644
--- a/WebSite/src/router/modules/search.js
+++ b/WebSite/src/router/modules/search.js
@@ -6,4 +6,4 @@ const routes = [
   }
 ];
 
-export default routes;
\ No newline at end of file
+export default routes;
diff --git a/WebSite/src/store/path.js b/WebSite/src/store/path.js
index b1290a59ab2e0deccc68bb656e25dc9397b9a7c6..2f9be9ab49a95ae9240829a4c2ce94e274dfe43c 100644
--- a/WebSite/src/store/path.js
+++ b/WebSite/src/store/path.js
@@ -1003,11 +1003,141 @@ const merits = [
     children: []
   }
 ];
+const declaration = [
+  {
+    id: '1',
+    available: 'YES',
+    versionDate: '2020-07-10 05:53:01.597',
+    updator: '1',
+    creator: '1',
+    applicationId: '1',
+    menuNo: 'SBD_001',
+    name: '缁╂晥璺熻釜琛�',
+    icon: 'fas fa-cube',
+    parentId: '0',
+    routingUrl: 'performance/declarationview',
+    redirectUrl: '',
+    urlParameter: '',
+    isNewWindow: 'NO',
+    isSystem: 'NO',
+    withUserId: 'NO',
+    enabled: 'YES',
+    authUser: ['1', '2'],
+    children: []
+  },
+  {
+    id: '2',
+    available: 'YES',
+    versionDate: '2020-07-10 05:53:01.597',
+    updator: '1',
+    creator: '1',
+    applicationId: '1',
+    menuNo: 'SBD_001',
+    name: '缁╂晥鏁存敼琛�',
+    icon: 'fas fa-cube',
+    parentId: '0',
+    routingUrl: 'performance/rectificationview',
+    redirectUrl: '',
+    urlParameter: '',
+    isNewWindow: 'NO',
+    isSystem: 'NO',
+    withUserId: 'NO',
+    enabled: 'YES',
+    authUser: ['1', '2'],
+    children: []
+  },
+  {
+    id: '3',
+    available: 'YES',
+    versionDate: '2020-07-10 05:53:01.597',
+    updator: '1',
+    creator: '1',
+    applicationId: '1',
+    menuNo: 'SBD_001',
+    name: '缁╂晥鑷瘎琛�',
+    icon: 'fas fa-cube',
+    parentId: '0',
+    routingUrl: 'performance/evaluationview',
+    redirectUrl: '',
+    urlParameter: '',
+    isNewWindow: 'NO',
+    isSystem: 'NO',
+    withUserId: 'NO',
+    enabled: 'YES',
+    authUser: ['1', '2'],
+    children: []
+  },
+  {
+    id: '4',
+    available: 'YES',
+    versionDate: '2020-07-10 05:53:01.597',
+    updator: '1',
+    creator: '1',
+    applicationId: '1',
+    menuNo: 'SBD_001',
+    name: '缁╂晥鏁存敼鐩戞帶',
+    icon: 'fas fa-cube',
+    parentId: '0',
+    routingUrl: 'performance/rectificationwatchview',
+    redirectUrl: '',
+    urlParameter: '',
+    isNewWindow: 'NO',
+    isSystem: 'NO',
+    withUserId: 'NO',
+    enabled: 'YES',
+    authUser: ['1', '2'],
+    children: []
+  },
+  {
+    id: '5',
+    available: 'YES',
+    versionDate: '2020-07-10 05:53:01.597',
+    updator: '1',
+    creator: '1',
+    applicationId: '1',
+    menuNo: 'SBD_001',
+    name: '缁╂晥鑷瘎瑙嗗浘鐩戞帶',
+    icon: 'fas fa-cube',
+    parentId: '0',
+    routingUrl: 'performance/evaluationwatchview',
+    redirectUrl: '',
+    urlParameter: '',
+    isNewWindow: 'NO',
+    isSystem: 'NO',
+    withUserId: 'NO',
+    enabled: 'YES',
+    authUser: ['1', '2'],
+    children: []
+  },
+  {
+    id: '6',
+    available: 'YES',
+    versionDate: '2020-07-10 05:53:01.597',
+    updator: '1',
+    creator: '1',
+    applicationId: '1',
+    menuNo: 'SBD_001',
+    name: '缁╂晥璺熻釜鐩戞帶',
+    icon: 'fas fa-cube',
+    parentId: '0',
+    routingUrl: 'performance/declarationwatchview',
+    redirectUrl: '',
+    urlParameter: '',
+    isNewWindow: 'NO',
+    isSystem: 'NO',
+    withUserId: 'NO',
+    enabled: 'YES',
+    authUser: ['1', '2'],
+    children: []
+  }
+];
+
 export default {
   ProjectRegistry,
   deptBZ,
   deptSP,
   search,
   base,
-  merits
+  merits,
+  declaration
 };
diff --git a/WebSite/src/views/login/components/SelectUser.vue b/WebSite/src/views/login/components/SelectUser.vue
index 1df9597e7778667435f5423753139672804738e5..6cc621fed3407e1ae15311adb4cd00c07dec30e4 100644
--- a/WebSite/src/views/login/components/SelectUser.vue
+++ b/WebSite/src/views/login/components/SelectUser.vue
@@ -15,11 +15,11 @@
           ? 'Please select a user:'
           : 'No user can be selected.'
       }}</span> -->
-      <!-- <span class="big" v-if="env == 'jk'">涓婃捣鍋ュ悍鍖诲闄�</span> -->
-      <span class="big" v-if="env == 'jk'">涓婃捣绔嬩俊浼氳閲戣瀺瀛﹂櫌</span>
+      <span class="big" v-if="env == 'jk'">涓婃捣鍋ュ悍鍖诲闄�</span>
+      <!-- <span class="big" v-if="env == 'jk'">涓婃捣绔嬩俊浼氳閲戣瀺瀛﹂櫌</span> -->
       <span class="big" v-if="env == 'lg'">涓婃捣鐞嗗伐澶у</span>
-      <!-- <span class="big" v-if="env == 'sd'">涓婃捣澶у</span> -->
-      <span class="big" v-if="env == 'sd'">娴峰ぉ淇℃伅</span>
+      <span class="big" v-if="env == 'sd'">涓婃捣澶у</span>
+      <!-- <span class="big" v-if="env == 'sd'">娴峰ぉ淇℃伅</span> -->
     </div>
     <div v-for="item in transitionList" :key="item.id">
       <transition name="fade-transform-bottom">
@@ -66,6 +66,7 @@ export default {
       { deep: true }
     );
     onMounted(() => {
+      console.log(process.env.NODE_ENV,'test1')
       props.userList.forEach(u => {
         transitionList.push({
           ...u,
diff --git a/WebSite/src/views/main/basicQuota/publicInfo/index.vue b/WebSite/src/views/main/basicQuota/publicInfo/index.vue
index 081f06bcd37b2f7b214c04d11a907b136f94773f..01337b8bc60adf24e8bf26e8969af64ea36ac3c3 100644
--- a/WebSite/src/views/main/basicQuota/publicInfo/index.vue
+++ b/WebSite/src/views/main/basicQuota/publicInfo/index.vue
@@ -53,7 +53,11 @@
         :rules="validList"
       >
         <el-form-item label="寮€璇惧闄㈢紪鍙�" prop="openCollegeCode">
-          <el-input v-model="form.openCollegeCode"></el-input>
+          <el-input
+            oninput="value=value.replace(/[^\d]/g,'')"
+            maxLength="19"
+            v-model="form.openCollegeCode"
+          ></el-input>
         </el-form-item>
         <el-form-item label="寮€璇惧闄㈠悕绉�" prop="openCollegeName">
           <el-input v-model="form.openCollegeName"></el-input>
diff --git a/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue b/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue
index cb6a649f7d50cd65553b7e8d31e362540512e5dd..ffd19b779d89bc00ffb18c38b06367a567007f9a 100644
--- a/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue
+++ b/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue
@@ -14,6 +14,7 @@
               :clearable="false"
               v-model="form.year"
               type="year"
+              :editable="false"
               @change="setYear"
               placeholder="閫夋嫨骞�"
             >
@@ -28,6 +29,7 @@
                 : '浜屼笂鐢虫姤璧锋鏃堕棿锛�'
             }}</span>
             <el-date-picker
+            :editable="false"
               :clearable="false"
               v-model="form.time"
               type="datetimerange"
diff --git a/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue b/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue
index 66978b4298d162fe330977220fce221389c20450..619eede05c4aec0a5e069899483fb2bbed01bac4 100644
--- a/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue
+++ b/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue
@@ -47,6 +47,7 @@
             <el-form-item label="寮€濮嬫椂闂�" prop="beginDate">
               <el-date-picker
                 :clearable="false"
+                :editable="false"
                 v-model="ruleForm.beginDate"
                 type="date"
                 placeholder="閫夋嫨鏃ユ湡"
@@ -58,6 +59,7 @@
             <el-form-item label="缁撴潫鏃堕棿" prop="endDate">
               <el-date-picker
                 :clearable="false"
+                :editable="false"
                 v-model="ruleForm.endDate"
                 type="date"
                 placeholder="閫夋嫨鏃ユ湡"
diff --git a/WebSite/src/views/main/performance-library/index.vue b/WebSite/src/views/main/performance-library/index.vue
index e4a76a7e0bb00800826bfc0d4355ad5b678ee752..c4c1f1a7e4c72c28ee902c2c9c53ca9eef56d622 100644
--- a/WebSite/src/views/main/performance-library/index.vue
+++ b/WebSite/src/views/main/performance-library/index.vue
@@ -6,6 +6,7 @@
           <div class="flexItem">
             <el-date-picker
               v-model="checkInfo.year"
+              :editable="false"
               type="year"
               placeholder="閫夋嫨骞�"
               :clearable="false"
diff --git a/WebSite/src/views/main/project-library/department/components/Detail.vue b/WebSite/src/views/main/project-library/department/components/Detail.vue
index d3fe4955088f11fcebe791e630b0ac1537a613b0..58d12787193f982f62a87b1e1780cfd30a7c1793 100644
--- a/WebSite/src/views/main/project-library/department/components/Detail.vue
+++ b/WebSite/src/views/main/project-library/department/components/Detail.vue
@@ -97,20 +97,18 @@ export default {
     const handleBack = () => {
       cxt.emit('switch-page', 'List');
     };
-    const handleSave = applyInfo => {
+    const handleSave = async applyInfo => {
       console.log('鎴戠偣鍑讳簡淇濆瓨');
       // if (!props.oId) {
       //   applyInfo.year = sessionStorage.getItem('year');
       //   applyInfo.planType = 'XIANGMUKU';
       // }
       applyInfo.planType = 'XIANGMUKU';
-      ProjectLibrary.saveProjectInfoPlan(applyInfo).then(res => {
-        console.log('res', res);
-        init(res.data[0], '1');
-      });
+      const res = await ProjectLibrary.saveProjectInfoPlan(applyInfo);
+      init(res.data[0], '1');
     };
-    const handleSubmit = flowOutput => {
-      console.log('鎷垮埌鎻愪氦缁勪欢杩斿洖鐨勬暟鎹�', flowOutput);
+    const handleSubmit =  async(flowOutput, applyInfo) => {
+      console.log('鎷垮埌鎻愪氦缁勪欢杩斿洖鐨勬暟鎹�111', applyInfo);
       let { nodeIds, remake } = flowOutput;
       let nodeIdArr = [];
       nodeIdArr.push(nodeIds);
@@ -119,12 +117,45 @@ export default {
         nodeIds: nodeIdArr,
         remake
       };
-      // this.formLine.actionFlowCmd = actionFlowCmd;
-      ProjectLibrary.submitProjectPlan(actionFlowCmd).then(res => {
-        console.log('res', res);
-        ElMessage.success('鎻愪氦鎴愬姛');
-        handleBack();
+      const newApplyInfo=JSON.parse(JSON.stringify(applyInfo));
+      newApplyInfo.summaryJson = JSON.stringify(newApplyInfo.summaryJson);
+      newApplyInfo.projectTargetCmd.subOtherArrayJson = JSON.stringify(
+        newApplyInfo.projectTargetCmd.subOtherArrayJson
+      );
+      newApplyInfo.projectTargetCmd.summaryJson = JSON.stringify(
+        newApplyInfo.projectTargetCmd.summaryJson
+      );
+      if (
+        newApplyInfo.attachmentInfoOutList &&
+        newApplyInfo.attachmentInfoOutList.length > 0
+      ) {
+        newApplyInfo.attachmentInfoOutList = newApplyInfo.attachmentInfoOutList.map(
+          v => v.id
+        );
+      }
+      newApplyInfo.planSubjectList.forEach(item => {
+        item.otherJson = JSON.stringify(item.otherJson);
+        if (item.subjectDetailList.length <= 0) {
+          item.subjectDetailList = null;
+        } else {
+          item.subjectDetailList.forEach(jtem => {
+            jtem.otherJson = JSON.stringify(jtem.otherJson);
+          });
+        }
       });
+     
+      newApplyInfo.planType = 'XIANGMUKU';
+     await  handleSave(newApplyInfo);
+     await  ProjectLibrary.submitProjectPlan(actionFlowCmd).then(resp => {
+          console.log('resp', resp);
+          ElMessage.success('鎻愪氦鎴愬姛');
+          handleBack();
+        });
+      // ProjectLibrary.submitProjectPlan(actionFlowCmd).then(res => {
+      //   console.log('res', res);
+      //   ElMessage.success('鎻愪氦鎴愬姛');
+      //   handleBack();
+      // });
     };
     const handleReturn = flowOutput => {
       console.log('鎷垮埌鍥為€€缁勪欢杩斿洖鐨勬暟鎹�', flowOutput);
diff --git a/WebSite/src/views/main/project-library/department/components/List.vue b/WebSite/src/views/main/project-library/department/components/List.vue
index fd28f0c224280c851b704f87ee5140f4d6c93778..b31af0718b13ea5163297e8a67a8476ffd7afc5f 100644
--- a/WebSite/src/views/main/project-library/department/components/List.vue
+++ b/WebSite/src/views/main/project-library/department/components/List.vue
@@ -5,6 +5,7 @@
         <el-col :span="6">
           <el-date-picker
             @change="setTime"
+            :editable="false"
             v-model="checkInfo.year"
             type="year"
             placeholder="閫夋嫨骞�"
@@ -28,6 +29,19 @@
         <el-button type="primary" plain @click="choiceProject"
           >鎸戦€夊巻骞撮」鐩�</el-button
         >
+        <!-- <div
+          style="position: absolute;right: 0px;height:28px;line-height:28px;color:red"
+        >
+          {{ money }}
+        </div> -->
+      </el-row>
+      <el-row class="mtop20">
+        <div
+          style="height: 37px;line-height: 18px;color: red;font-size: 12px;padding-bottom: 12px;border: 1px solid red;"
+        >
+          <div>{{ money }}</div>
+          <div>{{ money1 }}</div>
+        </div>
       </el-row>
     </el-card>
     <el-card class="mtop20">
@@ -106,6 +120,7 @@
         <el-row :gutter="20">
           <el-col :span="6">
             <el-date-picker
+            :editable="false"
               v-model="projectCheckInfo.year"
               type="year"
               @change="setTime2"
@@ -179,6 +194,7 @@ export default {
   setup(props, cxt) {
     onMounted(() => {
       getDepartPageInfo();
+      getmoneyInfo();
       queryHistoryProjectLibraryPageByCurrentUserDept();
     });
     const multipleTable = ref(null);
@@ -192,6 +208,8 @@ export default {
         pageIndex: 1,
         pageSize: 10
       },
+      money: '',
+      money1: '',
       env: process.env.NODE_ENV,
       uploadDialog: false,
       loading: false,
@@ -254,6 +272,15 @@ export default {
         state.departInfo.total = res.total;
       });
     };
+    const getmoneyInfo = () => {
+      ProjectLibrary.queryQuotaMoney(state.checkInfo.year).then(res => {
+        // state.money = res.data[0];
+        let arr = res.data[0].split('銆�');
+        console.log(arr, 'test1');
+        state.money = arr[0];
+        state.money1 = arr[1];
+      });
+    };
     const queryHistoryFirst = () => {
       state.projectCheckInfo.pageIndex = 1;
       queryHistoryProjectLibraryPageByCurrentUserDept();
@@ -397,7 +424,8 @@ export default {
       handleDel,
       handleSelectionProject,
       getDepartPageInfoFirst,
-      handleSelectionChange
+      handleSelectionChange,
+      getmoneyInfo
     };
   }
 };
diff --git a/WebSite/src/views/main/project-library/department/index.vue b/WebSite/src/views/main/project-library/department/index.vue
index d8a62e0c94d7184766538d3b6df4ad5a6dacaf1e..5e5fc76c68c43bea851daf84568bccae6a3bc66b 100644
--- a/WebSite/src/views/main/project-library/department/index.vue
+++ b/WebSite/src/views/main/project-library/department/index.vue
@@ -28,6 +28,9 @@ export default {
       canEdit: false
     });
     const switchPage = (page, canEdit, id) => {
+      console.log("page",page)
+      console.log("canEdit",canEdit)
+      console.log("id",id)
       data.oId = id;
       data.canEdit = canEdit;
       data.currentComponent = page;
diff --git a/WebSite/src/views/main/project-library/inSchool/components/List.vue b/WebSite/src/views/main/project-library/inSchool/components/List.vue
index 49d07bf0de119324541ae0c2af568204b27cb169..1d0b769769341695bc3d7f7903756c238734d622 100644
--- a/WebSite/src/views/main/project-library/inSchool/components/List.vue
+++ b/WebSite/src/views/main/project-library/inSchool/components/List.vue
@@ -5,6 +5,7 @@
         <el-col :span="6">
           <el-date-picker
             v-model="checkInfo.year"
+            :editable="false"
             type="year"
             @change="setTime"
             placeholder="閫夋嫨骞�"
@@ -90,9 +91,10 @@ export default {
       state.checkInfo.pageIndex = 1;
       getDepartPageInfo();
     };
-    // 鍒楄〃
+    // 鍒楄〃 
     const getDepartPageInfo = () => {
       ProjectLibrary.queryProjectLibraryPage(state.checkInfo).then(res => {
+        state.departInfo.tableData = res.data;
         console.log('Res', res);
       });
     };
diff --git a/WebSite/src/views/performance/declaration.vue b/WebSite/src/views/performance/declaration.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ae891672cea62fa7b5f9a03ff357350fb0ca41a2
--- /dev/null
+++ b/WebSite/src/views/performance/declaration.vue
@@ -0,0 +1,676 @@
+<template>
+  <div class="app-container">
+    <el-card>
+      <Flow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        :flowInfo="flowInfo"
+      ></Flow>
+    </el-card>
+    <el-card class="mt card">
+      <template #header>
+        <span class="fs14">璐㈡斂椤圭洰鏀嚭缁╂晥璺熻釜琛�</span>
+        <!-- <span class="fs15">2021骞村害</span> -->
+      </template>
+      <el-form :model="detail" ref="addForm">
+        <div class="account-info1">
+          <el-form-item label="椤圭洰鍚嶇О:">
+            <span>{{ detail.fundsProjectName }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info">
+          <el-form-item label="涓荤閮ㄩ棬:">
+            <span>{{ detail.schoolProjectName }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info">
+          <el-form-item label="鏍″唴瀹炴柦鍗曚綅:">
+            <span>{{ detail.extendFieldList.schoolfundsdep }}</span>
+          </el-form-item>
+        </div>
+        <el-table
+          class="showTable mt10 mb"
+          :data="tableData"
+          :span-method="objectSpanMethod"
+          border
+          style="width: 100%; margin-top: 20px"
+        >
+          <el-table-column prop="id" label="椤圭洰璧勯噾(涓囧厓)" width="180" />
+          <el-table-column prop="name" label="" />
+          <el-table-column prop="amount1" label="鎬婚绠楁暟">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount1"
+                  v-if="!scope.row.amount1"
+                ></el-input>
+                <div v-if="scope.row.amount1">{{ scope.row.amount1 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount2" label="骞村垵棰勭畻鏁�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount2"
+                  v-if="!scope.row.amount2"
+                ></el-input>
+                <div v-if="scope.row.amount2">{{ scope.row.amount2 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount3" label="璺熻釜鏈熼绠楁暟">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount3"
+                  v-if="!scope.row.amount3"
+                ></el-input>
+                <div v-if="scope.row.amount3">{{ scope.row.amount3 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount4" label="璺熻釜鏈熸墽琛屾暟">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount4"
+                  v-if="!scope.row.amount4"
+                ></el-input>
+                <div v-if="scope.row.amount4">{{ scope.row.amount4 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount5" label="鎵ц鐜�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount5"
+                  v-if="!scope.row.amount5"
+                ></el-input>
+                <div v-if="scope.row.amount5">{{ scope.row.amount5 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount6" label="鍋忓樊鍘熷洜鍒嗘瀽鍙婄籂鍋忔帾鏂�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount6"
+                  v-if="!scope.row.amount6"
+                ></el-input>
+                <div v-if="scope.row.amount6">{{ scope.row.amount6 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-form-item label="骞村害鎬荤洰鏍�(棰勬湡鐩爣)">
+          <el-input
+            v-model="detail.extendFieldList.target"
+            type="textarea"
+            placeholder="Enter..."
+            maxlength="300"
+            show-word-limit
+            :autosize="{ minRows: 4, maxRows: 8 }"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骞村害鎬荤洰鏍�(璺熻釜鏈熷疄闄呭畬鎴愭儏鍐�)">
+          <el-input
+            v-model="detail.extendFieldList.completion"
+            type="textarea"
+            placeholder="Enter..."
+            maxlength="300"
+            show-word-limit
+            :autosize="{ minRows: 4, maxRows: 8 }"
+          ></el-input>
+        </el-form-item>
+
+        <!-- <div class="account-info1">
+          <el-form-item label="缁╂晥鎸囨爣">
+            <el-row class="showTable">
+              <el-button
+                icon="el-icon-plus"
+                type="primary"
+                @click="addPeopleInfo"
+                >鏂板缓缁╂晥鎸囨爣</el-button
+              >
+            </el-row>
+          </el-form-item>
+        </div> -->
+
+        <el-table
+          :data="detail.extendFieldList.travelOnBusinessDetail"
+          class="showTable mt10 mb"
+          @selection-change="handleSelectionChange"
+          stripe
+          border
+        >
+          <el-table-column type="selection" width="55" />
+          <el-table-column prop="oneValue" label="涓€绾ф寚鏍�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.oneValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="twoValue" label="浜岀骇鎸囨爣">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.twoValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="threeValue" label="涓夌骇鎸囨爣">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.threeValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="targetValue" label="骞村害鎸囨爣鍊�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.targetValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount4" label="璇勫垎瑙勫垯">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount4"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount5" label="璺熻釜鏈熻鍒掑畬鎴愬€�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount5"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount6" label="璺熻釜鏈熷疄闄呭畬鎴愭儏鍐�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount6"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount7" label="鍋忓樊鍘熷洜鍒嗘瀽鍙婄籂鍋忔帾鏂�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount7"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="鎿嶄綔" width="80">
+            <template #default="scope">
+              <el-button type="danger" @click="deletePelpleRow(scope.$index)"
+                >鍒犻櫎</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="account-info1">
+          <el-form-item label="缁╂晥璺熻釜鎬讳綋鍒ゆ柇"> </el-form-item>
+        </div>
+
+        <div class="account-info1">
+          <el-form-item label="骞村害椤圭洰棰勭畻瀹屾垚鍙兘鎬�:">
+            <el-radio
+              style="margin-left:40px"
+              v-model="detail.extendFieldList.radio"
+              label="纭畾鑳藉畬鎴�"
+              >纭畾鑳藉畬鎴�</el-radio
+            >
+            <el-radio v-model="detail.extendFieldList.radio" label="鏈夊彲鑳藉畬鎴�"
+              >鏈夊彲鑳藉畬鎴�</el-radio
+            >
+            <el-radio
+              v-model="detail.extendFieldList.radio"
+              label="纭畾涓嶈兘瀹屾垚"
+              >纭畾涓嶈兘瀹屾垚</el-radio
+            >
+          </el-form-item>
+        </div>
+        <div class="account-info1">
+          <el-form-item label="骞村害缁╂晥鐩爣瀹屾垚鍙兘鎬�:">
+            <el-radio
+              style="margin-left:40px"
+              v-model="detail.extendFieldList.radio1"
+              label="纭畾鑳藉畬鎴�"
+              >纭畾鑳藉畬鎴�</el-radio
+            >
+            <el-radio v-model="detail.extendFieldList.radio1" label="鏈夊彲鑳藉畬鎴�"
+              >鏈夊彲鑳藉畬鎴�</el-radio
+            >
+            <el-radio
+              v-model="detail.extendFieldList.radio1"
+              label="纭畾涓嶈兘瀹屾垚"
+              >纭畾涓嶈兘瀹屾垚</el-radio
+            >
+          </el-form-item>
+        </div>
+        <el-form-item label="椤圭洰棰勭畻鍙婄哗鏁堢洰鏍囪皟鏁存儏鍐�">
+          <el-input
+            v-model="detail.extendFieldList.applyReason"
+            type="textarea"
+            placeholder="Enter..."
+            maxlength="300"
+            show-word-limit
+            :autosize="{ minRows: 4, maxRows: 8 }"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闄勪欢涓婁紶锛�">
+          <el-upload
+            class="upload-demo"
+            :on-change="fileChange"
+            multiple
+            :on-remove="removeFile"
+            :http-request="uploadFile"
+            :file-list="fileList"
+            action=""
+          >
+            <el-button size="small" type="primary">鐐瑰嚮閫夋嫨闄勪欢</el-button>
+          </el-upload>
+        </el-form-item>
+        <div class="account-info1">
+          <el-form-item>
+            <el-row class="showTable">
+              <el-button
+                style="float:right"
+                icon="el-icon-document-checked"
+                type="success"
+                @click="addPeopleInfo1"
+                >纭淇濆瓨</el-button
+              >
+            </el-row>
+          </el-form-item>
+        </div>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+export default {
+  components: {},
+  props: {
+    applicationInfo: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {
+      flowInfo: {
+        nextSubmitNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        canRejectNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        user: '绯荤粺绠$悊鍛�',
+        state: '璐熻矗浜鸿ˉ鍏�',
+        flow: [
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:30:43',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '寮€濮�',
+            endNodeName: '绉戠爺澶勭珛椤�',
+            flowState: '娴佺▼寮€濮�',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          },
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:31:00',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '绉戠爺澶勭珛椤�',
+            endNodeName: '璐熻矗浜鸿ˉ鍏�',
+            flowState: '鎻愪氦',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          }
+        ],
+        btnStates: {
+          isShowSave: true,
+          isShowSubmit: true,
+          isShowReject: true,
+          isShowRevoke: false,
+          isShowChart: true,
+          isShowHistory: true,
+          isShowUser: true,
+          isShowState: true,
+          isShowCancel: false
+        }
+      },
+      fileList: [],
+      tableData: [
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '骞村害璧勯噾鎬婚',
+          amount1: '0',
+          amount2: '',
+          amount3: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '鍏朵腑:褰撳勾璐㈡斂鎷ㄦ',
+          amount1: '',
+          amount2: '',
+          amount3: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '涓婂勾缁撹浆璧勯噾',
+          amount1: '',
+          amount2: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '鍏朵粬璧勯噾',
+          amount1: '',
+          amount2: '',
+          amount3: ''
+        }
+      ],
+
+      detail: {
+        //椤甸潰鏁版嵁
+        schoolProjectName: '鏃ュ父鏁欏缁忚垂',
+        id: '',
+        fundsProjectName: '璐㈠姟閮�',
+        parentId: '',
+        extendFieldList: {
+          schoolfundsdep: '鍖诲褰卞儚瀛﹂櫌',
+          target: '',
+          completion: '',
+          radio: '', //鍗曢€夋缁戝畾鐨勬暟鎹�--鏃犲疄闄呮剰涔�
+          radio1: '', //鍗曢€夋缁戝畾鐨勬暟鎹�--鏃犲疄闄呮剰涔�
+          applyReason: '',
+          achievementslist: [
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '骞村害璧勯噾鎬婚',
+              amount1: '0',
+              amount2: '',
+              amount3: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '鍏朵腑:褰撳勾璐㈡斂鎷ㄦ',
+              amount1: '',
+              amount2: '',
+              amount3: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '涓婂勾缁撹浆璧勯噾',
+              amount1: '',
+              amount2: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '鍏朵粬璧勯噾',
+              amount1: '',
+              amount2: '',
+              amount3: ''
+            }
+          ],
+          travelOnBusinessDetail: []
+        }
+      }
+    };
+  },
+  async created() {
+    if (this.$route.query.type) {
+      Api.queryTargetPlan(
+        this.$route.query.parentId,
+        this.$route.query.type
+      ).then(res => {
+        this.detail = res.data[0];
+        this.detail.extendFieldList = JSON.parse(res.data[0].extendFieldList);
+      this.tableData =   this.detail.extendFieldList.achievementslist
+        this.flowInfo = res.data[0].flowCanShowOut;
+      });
+    }
+    if (this.$route.query.projectName) {
+      this.detail.fundsProjectName = this.$route.query.projectName;
+      this.detail.schoolProjectName = this.$route.query.ownDeptName;
+      this.detail.extendFieldList.schoolfundsdep = this.$route.query.ownDeptName;
+       this.getlist();
+    }
+  },
+
+  computed: {},
+  methods: {
+     getlist() {
+      Api.queryTargetByPlanId(this.$route.query.parentId).then(res => {
+        this.detail.extendFieldList.travelOnBusinessDetail = res.data
+      });
+    },
+    handleBack() {
+      const ua = window.navigator.userAgent.toLowerCase();
+
+      if (ua.toLowerCase().indexOf('micromessenger') > -1) {
+        if (
+          ua.toLowerCase().indexOf('iphone') > -1 &&
+          ua.toLowerCase().indexOf('wxworklocal') > -1
+        ) {
+          history.go(-4);
+        } else {
+          history.go(-3);
+        }
+      } else if (ua.toLowerCase().indexOf('dingtalk') > -1) {
+        history.go(-3);
+      } else {
+        history.go(-1);
+      }
+      return false;
+    },
+    handleSave() {
+      this.detail.extendFieldList.achievementslist = this.tableData;
+      this.detail.parentId = this.$route.query.parentId;
+      this.detail.extendFieldList = JSON.stringify(this.detail.extendFieldList);
+      Api.saveTargetPlanOwn(this.detail).then(res => {
+        console.log(res);
+        this.getformlist();
+      });
+    },
+    getformlist() {
+      Api.queryTargetPlan(this.$route.query.parentId, '璺熻釜').then(res => {
+        this.detail = res.data[0];
+        this.detail.extendFieldList = JSON.parse(res.data[0].extendFieldList);
+        console.log(this.detail.extendFieldList, '99999');
+      });
+    },
+    handleSubmit() {
+      this.$emit('handleSubmit');
+    },
+    handleReturn() {
+      this.$emit('handleReturn');
+    },
+    handleCancel() {
+      this.$emit('handleCancel');
+    },
+    addPeopleInfo() {
+      this.detail.extendFieldList.travelOnBusinessDetail.push({});
+    },
+    addPeopleInfo1() {
+      this.detail.extendFieldList.achievementslist = this.tableData;
+      this.detail.extendFieldList = JSON.stringify(this.detail.extendFieldList);
+      console.log(this.detail, '000000');
+    },
+    fileChange(file, fileList) {
+      this.fileList = fileList;
+    },
+    removeFile(file, fileList) {
+      this.fileList = fileList;
+    },
+    uploadFile() {
+      // console.log('uploadFile');
+    },
+    objectSpanMethod({ rowIndex, columnIndex }) {
+      if (columnIndex === 0) {
+        if (rowIndex % 4 === 0) {
+          return {
+            rowspan: 4,
+            colspan: 1
+          };
+        } else {
+          return {
+            rowspan: 0,
+            colspan: 0
+          };
+        }
+      }
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    deletePelpleRow(index) {
+      this.detail.extendFieldList.travelOnBusinessDetail.splice(index, 1);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.project-card {
+  margin-top: 10px;
+  cursor: pointer;
+  position: relative;
+  .category {
+    text-align: center;
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+    color: #fff !important;
+    background-color: #6cd1b3;
+    position: absolute;
+    font-size: 6px;
+    line-height: 21px;
+    top: calc(50% - 15px);
+  }
+  .right-sign {
+    position: absolute;
+    right: 20px;
+    top: 50%;
+    // border: solid 1px;
+    border-top: solid 1px rgba($color: #000000, $alpha: 0.3);
+    border-right: solid 1px rgba($color: #000000, $alpha: 0.3);
+    width: 8px;
+    height: 8px;
+    transform: rotate(45deg) translateY(-50%);
+  }
+}
+.bill-card-header {
+  color: #fff;
+  font-size: 15px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .el-button {
+    background-color: #3c8dbc;
+    color: #fff;
+    font-weight: 700;
+  }
+}
+.bill-info {
+  position: relative;
+  border-bottom: solid 1px rgba(0, 0, 0, 0.1);
+  padding-bottom: 20px;
+  padding-top: 10px;
+  div {
+    display: inline-block;
+    height: 28px;
+    line-height: 28px;
+    font-size: 14px;
+  }
+  .el-button {
+    position: absolute;
+    top: 10px;
+    right: 0;
+  }
+}
+.el-select {
+  width: 100%;
+}
+.account-info {
+  display: inline-block;
+  width: 40%;
+  margin-right: 20px;
+}
+.account-info1 {
+  display: inline-block;
+  width: 100%;
+  margin-right: 20px;
+}
+.showTable {
+  display: block;
+}
+.showCard {
+  display: none;
+}
+.el-table .el-form-item {
+  margin-bottom: 0px;
+}
+.mt {
+  margin-top: 20px;
+}
+.mt10 {
+  margin-top: 10px;
+}
+.mb {
+  margin-bottom: 20px;
+}
+.fs14 {
+  font-size: 14px;
+}
+.fs15 {
+  float: right;
+  font-size: 14px;
+}
+@media screen and (max-width: 765px) {
+  .account-info {
+    display: block;
+    width: 100%;
+  }
+  .showTable {
+    display: none;
+  }
+  .showCard {
+    display: block;
+  }
+}
+</style>
+
+<style lang="scss">
+.select-approval-user {
+  .el-table__body tr.current-row > td {
+    background-color: #409eff;
+  }
+}
+</style>
diff --git a/WebSite/src/views/performance/declarationview.vue b/WebSite/src/views/performance/declarationview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..7e6b48c4bdc16a008b18d4f826d8f8f35d5abad3
--- /dev/null
+++ b/WebSite/src/views/performance/declarationview.vue
@@ -0,0 +1,344 @@
+<template>
+   <div class="app-container">
+    <el-card class="card-override-padding">
+      <el-collapse>
+        <el-collapse-item>
+          <template #title>
+            <span>鏌ヨ鏉′欢</span>
+          </template>
+          <el-form :model="formData">
+            <el-row :gutter="20">
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-date-picker
+                  :editable="false"
+                    v-model="formData.year"
+                    type="year"
+                    placeholder="閫夋嫨骞�"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                      v-model="formData.projectName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-select
+                      style="width:100%"
+                      v-model="formData.projectType"
+                      placeholder="璇烽€夋嫨椤圭洰绫诲埆"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩崟浣�"
+                      v-model="formData.deptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ュ綊鍙i儴闂�"
+                      v-model="formData.ownDeptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col> -->
+            </el-row>
+          </el-form>
+          <el-row>
+            <el-button icon="el-icon-search" plain @click="search">
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-search" plain @click="clean">
+              閲嶇疆
+            </el-button>
+            <el-button
+              type="success"
+              icon="el-icon-download"
+              plain
+              @click="clean"
+            >
+              瀵煎嚭
+            </el-button>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+    </el-card>
+
+    <el-card class="mt-20 is-desktop">
+      <el-table
+        :data="tableData"
+        @selection-change="handleSelectionChange"
+        stripe
+        border
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column
+          label="骞翠唤"
+          prop="year"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲埆"
+          prop="projectType"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲瀷"
+          prop="projectTypes"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" align="center">
+          <template #default="scope">
+            <span @click="toDetail(scope.row)">{{
+              scope.row.projectName
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="棰勭畻閲戦" prop="totalMoney" align="center">
+        </el-table-column>
+        <el-table-column
+          label="鐢虫姤鍗曚綅"
+          prop="departmentName"
+          align="center"
+        ></el-table-column>
+
+        <el-table-column label="璐熻矗浜�" prop="projectLeaderName" align="center">
+        </el-table-column>
+        <el-table-column label="褰掑彛閮ㄩ棬" prop="ownDeptName" align="center">
+        </el-table-column>
+
+        <el-table-column label="濉姤鐘舵€�" prop="stateLabel" align="center">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="200px" align="center">
+          <template v-slot:default="scope">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-view"
+              v-if="scope.row.isHave == 1"
+              @click="remove(scope.row)"
+              >鏌ョ湅
+            </el-button>
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              v-if="scope.row.isHave == 0"
+              @click="remove1(scope.row)"
+              >鏂板缓
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <Pagination
+        :page="formData.pageIndex"
+        :limit="formData.pageSize"
+        :total="dataCount"
+        @pagination="changePage"
+      />
+    </el-card>
+    <el-dialog v-model="dialogVisible" width="80%">
+      <TableFlow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        @handleCancel="handleCancel"
+        :flowstaus="false"
+        :row="applyInfo"
+        :canEdit="false"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="dialogVisible = false"
+            >纭</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+import ProjectLibrary from '@/api/projectLibrary';
+import { moneyFormat } from '@/utils';
+export default {
+  name: 'search',
+  data() {
+    return {
+      applyInfo: {},
+      dialogVisible: false,
+      isShowForm: true,
+       formData: {
+        year: '2022',
+        deptName: '',
+        // ownDeptName: '',
+        projectName: '',
+        projectType: '',
+        pageIndex: 1,
+        pageSize: 10
+      },
+      options: [
+        {
+          value: '浠g紪涓庡畾鍚戦」鐩敮鍑�',
+          label: '浠g紪涓庡畾鍚戦」鐩敮鍑�'
+        },
+        {
+          value: '缁忓父鎬х粡璐�',
+          label: '缁忓父鎬х粡璐�'
+        },
+
+        {
+          value: '缁忓父鎬ч」鐩�',
+          label: '缁忓父鎬ч」鐩�'
+        },
+        {
+          value: '涓€娆℃€ч」鐩�',
+          label: '涓€娆℃€ч」鐩�'
+        }
+      ],
+      school: '',
+      uploadDialog: false,
+      showList: [],
+      fileList: [],
+      tableData: [
+        {
+          projectCode: '2021',
+          projectName: '鍖诲褰卞儚瀛﹂櫌',
+          gmtCreateUser: '鏁欏缁忚垂',
+          gmtCreateUser1: '鏃ュ父鏁欏缁忚垂',
+          gmtCreateUser2: '0490180',
+          gmtCreateUser3: '璐㈠姟澶�',
+          gmtCreateUser4: '0.00',
+          gmtCreateUser5: '鏈鏍�'
+        }
+      ],
+      dataCount: 0,
+      dialogSelectProject: false, //閫夋嫨缁忚垂椤圭洰
+      projectList: [],
+      dataCountProject: 0,
+      multipleSelect: [],
+      formSelect: {
+        projectCode: '',
+        pageIndex: 1,
+        pageSize: 10
+      }
+    };
+  },
+  created() {},
+
+  computed: {},
+  watch: {},
+  mounted() {
+    this.getfollowlist();
+  },
+  methods: {
+    toDetail(row) {
+      ProjectLibrary.queryProjectInfoPlanById(row.id).then(res => {
+        console.log('res', res);
+
+        this.applyInfo = res.data[0];
+      });
+      this.dialogVisible = true;
+    },
+    getfollowlist() {
+      Api.followTargetPage(this.formData).then(res => {
+        console.log(res.data, '9999');
+        this.tableData = res.data;
+        this.tableData.forEach(item => {
+          item.totalMoney = moneyFormat(item.totalMoney, 2, ',');
+        });
+        this.dataCount = res.total;
+      });
+    },
+    clean() {
+      this.formData.updateuser = '';
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    //鏌ヨ
+    search() {
+      this.formData.pageIndex = 1;
+      this.getfollowlist(this.formData);
+    },
+    //鍒犻櫎
+
+    remove(row) {
+      this.$router.push({
+        path: '/i/performance/declaration',
+        query: {
+          parentId: row.id,
+          type: '鑷瘎'
+        }
+      });
+    },
+    remove1(row) {
+      this.$router.push({
+        path: '/i/performance/declaration',
+        query: {
+          parentId: row.id,
+          projectName: row.projectName,
+          ownDeptName: row.ownDeptName
+        }
+      });
+    },
+
+    //鍒嗛〉
+    changePage(val) {
+      this.formData.pageIndex = val.page;
+      this.formData.pageSize = val.limit;
+      this.getfollowlist(this.formData);
+    },
+    searchProject() {
+      this.formSelect.pageIndex = 1;
+      this.getProjectList(this.formSelect);
+    },
+    //鑾峰彇鍏ㄩ儴椤圭洰
+
+    //鍒嗛〉
+    changePageProject(val) {
+      this.formSelect.pageIndex = val.page;
+      this.formSelect.pageSize = val.limit;
+      this.getProjectList(this.formSelect);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-collapse {
+  border: none;
+}
+.apply-table-wrap {
+  padding: 0 150 0 !important;
+}
+</style>
diff --git a/WebSite/src/views/performance/declarationwatchview.vue b/WebSite/src/views/performance/declarationwatchview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..3e04076813a8ecc26d6d35dc3589ccf8bed14f9b
--- /dev/null
+++ b/WebSite/src/views/performance/declarationwatchview.vue
@@ -0,0 +1,344 @@
+<template>
+  <div class="app-container">
+    <el-card class="card-override-padding">
+      <el-collapse>
+        <el-collapse-item>
+          <template #title>
+            <span>鏌ヨ鏉′欢</span>
+          </template>
+          <el-form :model="formData">
+            <el-row :gutter="20">
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-date-picker
+                  :editable="false"
+                    v-model="formData.year"
+                    type="year"
+                    placeholder="閫夋嫨骞�"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                      v-model="formData.projectName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-select
+                      style="width:100%"
+                      v-model="formData.projectType"
+                      placeholder="璇烽€夋嫨椤圭洰绫诲埆"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩崟浣�"
+                      v-model="formData.deptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ュ綊鍙i儴闂�"
+                      v-model="formData.ownDeptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col> -->
+            </el-row>
+          </el-form>
+          <el-row>
+            <el-button icon="el-icon-search" plain @click="search">
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-search" plain @click="clean">
+              閲嶇疆
+            </el-button>
+            <el-button
+              type="success"
+              icon="el-icon-download"
+              plain
+              @click="clean"
+            >
+              瀵煎嚭
+            </el-button>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+    </el-card>
+
+    <el-card class="mt-20 is-desktop">
+      <el-table
+        :data="tableData"
+        @selection-change="handleSelectionChange"
+        stripe
+        border
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column
+          label="骞翠唤"
+          prop="year"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲埆"
+          prop="projectType"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲瀷"
+          prop="projectTypes"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" align="center">
+          <template #default="scope">
+            <span @click="toDetail(scope.row)">{{
+              scope.row.projectName
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="棰勭畻閲戦" prop="totalMoney" align="center">
+        </el-table-column>
+        <el-table-column
+          label="鐢虫姤鍗曚綅"
+          prop="departmentName"
+          align="center"
+        ></el-table-column>
+
+        <el-table-column label="璐熻矗浜�" prop="projectLeaderName" align="center">
+        </el-table-column>
+        <el-table-column label="褰掑彛閮ㄩ棬" prop="ownDeptName" align="center">
+        </el-table-column>
+
+        <el-table-column label="濉姤鐘舵€�" prop="stateLabel" align="center">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="200px" align="center">
+          <template v-slot:default="scope">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-view"
+              v-if="scope.row.isHave == 1"
+              @click="remove(scope.row)"
+              >鏌ョ湅
+            </el-button>
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              v-if="scope.row.isHave == 0"
+              @click="remove1(scope.row)"
+              >鏂板缓
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <Pagination
+        :page="formData.pageIndex"
+        :limit="formData.pageSize"
+        :total="dataCount"
+        @pagination="changePage"
+      />
+    </el-card>
+    <el-dialog v-model="dialogVisible" width="80%">
+      <TableFlow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        @handleCancel="handleCancel"
+        :flowstaus="false"
+        :row="applyInfo"
+        :canEdit="false"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="dialogVisible = false"
+            >纭</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+import ProjectLibrary from '@/api/projectLibrary';
+import { moneyFormat } from '@/utils';
+export default {
+  name: 'search',
+  data() {
+    return {
+      applyInfo: {},
+      dialogVisible: false,
+      isShowForm: true,
+      formData: {
+        year: '2022',
+        deptName: '',
+        // ownDeptName: '',
+        projectName: '',
+        projectType: '',
+        pageIndex: 1,
+        pageSize: 10
+      },
+      options: [
+        {
+          value: '浠g紪涓庡畾鍚戦」鐩敮鍑�',
+          label: '浠g紪涓庡畾鍚戦」鐩敮鍑�'
+        },
+        {
+          value: '缁忓父鎬х粡璐�',
+          label: '缁忓父鎬х粡璐�'
+        },
+
+        {
+          value: '缁忓父鎬ч」鐩�',
+          label: '缁忓父鎬ч」鐩�'
+        },
+        {
+          value: '涓€娆℃€ч」鐩�',
+          label: '涓€娆℃€ч」鐩�'
+        }
+      ],
+      school: '',
+      uploadDialog: false,
+      showList: [],
+      fileList: [],
+      tableData: [
+        {
+          projectCode: '2021',
+          projectName: '鍖诲褰卞儚瀛﹂櫌',
+          gmtCreateUser: '鏁欏缁忚垂',
+          gmtCreateUser1: '鏃ュ父鏁欏缁忚垂',
+          gmtCreateUser2: '0490180',
+          gmtCreateUser3: '璐㈠姟澶�',
+          gmtCreateUser4: '0.00',
+          gmtCreateUser5: '鏈鏍�'
+        }
+      ],
+      dataCount: 0,
+      dialogSelectProject: false, //閫夋嫨缁忚垂椤圭洰
+      projectList: [],
+      dataCountProject: 0,
+      multipleSelect: [],
+      formSelect: {
+        projectCode: '',
+        pageIndex: 1,
+        pageSize: 10
+      }
+    };
+  },
+  created() {},
+
+  computed: {},
+  watch: {},
+  mounted() {
+    this.getfollowlist();
+  },
+  methods: {
+    toDetail(row) {
+      ProjectLibrary.queryProjectInfoPlanById(row.id).then(res => {
+        console.log('res', res);
+
+        this.applyInfo = res.data[0];
+      });
+      this.dialogVisible = true;
+    },
+    getfollowlist() {
+      Api.followTargetPage(this.formData).then(res => {
+        console.log(res.data, '9999');
+        this.tableData = res.data;
+        this.tableData.forEach(item => {
+          item.totalMoney = moneyFormat(item.totalMoney, 2, ',');
+        });
+        this.dataCount = res.total;
+      });
+    },
+    clean() {
+      this.formData.updateuser = '';
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    //鏌ヨ
+    search() {
+      this.formData.pageIndex = 1;
+      this.getfollowlist(this.formData);
+    },
+    //鍒犻櫎
+
+    remove(row) {
+      this.$router.push({
+        path: '/i/performance/declaration',
+        query: {
+          parentId: row.id,
+          type: '鑷瘎'
+        }
+      });
+    },
+    remove1(row) {
+      this.$router.push({
+        path: '/i/performance/declaration',
+        query: {
+          parentId: row.id,
+          projectName: row.projectName,
+          ownDeptName: row.ownDeptName
+        }
+      });
+    },
+
+    //鍒嗛〉
+    changePage(val) {
+      this.formData.pageIndex = val.page;
+      this.formData.pageSize = val.limit;
+      this.getfollowlist(this.formData);
+    },
+    searchProject() {
+      this.formSelect.pageIndex = 1;
+      this.getProjectList(this.formSelect);
+    },
+    //鑾峰彇鍏ㄩ儴椤圭洰
+
+    //鍒嗛〉
+    changePageProject(val) {
+      this.formSelect.pageIndex = val.page;
+      this.formSelect.pageSize = val.limit;
+      this.getProjectList(this.formSelect);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-collapse {
+  border: none;
+}
+.apply-table-wrap {
+  padding: 0 150 0 !important;
+}
+</style>
diff --git a/WebSite/src/views/performance/evaluation.vue b/WebSite/src/views/performance/evaluation.vue
new file mode 100644
index 0000000000000000000000000000000000000000..a85f0d56960b3df59be78f1525b64ed46ee46235
--- /dev/null
+++ b/WebSite/src/views/performance/evaluation.vue
@@ -0,0 +1,638 @@
+<template>
+  <div class="app-container">
+    <el-card>
+      <Flow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        :flowInfo="flowInfo"
+      ></Flow>
+    </el-card>
+
+    <el-card class="mt card">
+      <template #header>
+        <span class="fs14">璐㈡斂椤圭洰鏀嚭缁╂晥鑷瘎琛�</span>
+        <!-- <span class="fs15">2021骞村害</span> -->
+      </template>
+      <el-form :model="detail" ref="addForm">
+        <div class="account-info">
+          <el-form-item label="椤圭洰鍚嶇О:">
+            <span>{{ detail.fundsProjectName }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info">
+          <el-form-item label="寰楀垎绛夌骇:">
+            <span>{{ detail.extendFieldList.score }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info">
+          <el-form-item label="涓荤閮ㄩ棬:">
+            <span>{{ detail.schoolProjectName }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info">
+          <el-form-item label="鏍″唴瀹炴柦鍗曚綅:">
+            <span>{{ detail.extendFieldList.schoolfundsdep }}</span>
+          </el-form-item>
+        </div>
+        <el-table
+          class="showTable mt10 mb"
+          :data="tableData"
+          :span-method="objectSpanMethod"
+          border
+          style="width: 100%; margin-top: 20px"
+        >
+          <el-table-column prop="id" label="椤圭洰璧勯噾(涓囧厓)" width="180" />
+          <el-table-column prop="name" label="" />
+          <el-table-column prop="amount1" label="骞村垵棰勭畻鏁�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount1"
+                  v-if="!scope.row.amount1"
+                ></el-input>
+                <div v-if="scope.row.amount1">{{ scope.row.amount1 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount2" label="鍏ㄥ勾棰勭畻鏁�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount2"
+                  v-if="!scope.row.amount2"
+                ></el-input>
+                <div v-if="scope.row.amount2">{{ scope.row.amount2 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount3" label="鍏ㄥ勾鎵ц鏁�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount3"
+                  v-if="!scope.row.amount3"
+                ></el-input>
+                <div v-if="scope.row.amount3">{{ scope.row.amount3 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount4" label="鎵ц鐜�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount4"
+                  v-if="!scope.row.amount4"
+                ></el-input>
+                <div v-if="scope.row.amount4">{{ scope.row.amount4 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+
+          <el-table-column prop="amount5" label="鍋忓樊鍘熷洜鍒嗘瀽鍙婄籂鍋忔帾鏂�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input
+                  v-model="scope.row.amount5"
+                  v-if="!scope.row.amount5"
+                ></el-input>
+                <div v-if="scope.row.amount5">{{ scope.row.amount5 }}</div>
+              </el-form-item>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-form-item label="骞村害鎬荤洰鏍�(棰勬湡鐩爣)">
+          <el-input
+            v-model="detail.extendFieldList.target"
+            type="textarea"
+            placeholder="Enter..."
+            maxlength="300"
+            show-word-limit
+            :autosize="{ minRows: 4, maxRows: 8 }"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骞村害鎬荤洰鏍�(瀹為檯瀹屾垚鎯呭喌)">
+          <el-input
+            v-model="detail.extendFieldList.completion"
+            type="textarea"
+            placeholder="Enter..."
+            maxlength="300"
+            show-word-limit
+            :autosize="{ minRows: 4, maxRows: 8 }"
+          ></el-input>
+        </el-form-item>
+        <!-- 
+        <div class="account-info1">
+          <el-form-item label="缁╂晥鎸囨爣">
+            <el-row class="showTable">
+              <el-button
+                icon="el-icon-plus"
+                type="primary"
+                @click="addPeopleInfo"
+                >鏂板缓缁╂晥鎸囨爣</el-button
+              >
+            </el-row>
+          </el-form-item>
+        </div> -->
+        <el-table
+          :data="detail.extendFieldList.travelOnBusinessDetail"
+          class="showTable mt10 mb"
+          @selection-change="handleSelectionChange"
+          stripe
+          border
+        >
+          <el-table-column type="selection" width="55" />
+          <el-table-column prop="oneValue" label="涓€绾ф寚鏍�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.oneValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="twoValue" label="浜岀骇鎸囨爣">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.twoValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="threeValue" label="涓夌骇鎸囨爣">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.threeValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="targetValue" label="骞村害鎸囨爣鍊�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input disabled v-model="scope.row.targetValue"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount4" label="璇勫垎瑙勫垯">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount4"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount5" label="璺熻釜鏈熻鍒掑畬鎴愬€�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount5"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount6" label="璺熻釜鏈熷疄闄呭畬鎴愭儏鍐�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount6"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="amount7" label="鍋忓樊鍘熷洜鍒嗘瀽鍙婄籂鍋忔帾鏂�">
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount7"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="鎿嶄綔" width="80">
+            <template #default="scope">
+              <el-button type="danger" @click="deletePelpleRow(scope.$index)"
+                >鍒犻櫎</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-form-item label="闄勪欢涓婁紶锛�">
+          <el-upload
+            class="upload-demo"
+            :on-change="fileChange"
+            multiple
+            :on-remove="removeFile"
+            :http-request="uploadFile"
+            :file-list="fileList"
+            action=""
+          >
+            <el-button size="small" type="primary">鐐瑰嚮閫夋嫨闄勪欢</el-button>
+          </el-upload>
+        </el-form-item>
+        <div class="explain">
+          璇存槑锛�1銆佽嚜璇勬椂闂村強鎬讳綋瑕佹眰銆傞」鐩哗鏁堣嚜璇勭敱鏍″唴鍚勯」鐩崟浣嶈嚜琛屽疄鏂斤紝鍦ㄩ绠楀畨鎺掓骞�3鏈�10鏃ヤ箣鍓嶅湪棰勭畻骞冲彴瀹屾垚鑷瘎骞舵彁浜ゆ寚鏍囧疄闄呭畬鎴愭儏鍐垫敮鎾戞潗鏂欍€傝瘎浠峰唴瀹瑰寘鎷绠楁墽琛屻€侀」鐩€讳綋缁╂晥鐩爣銆佸悇椤圭哗鏁堟寚鏍囧畬鎴愭儏鍐碉紝
+          鍋氬埌鍐呭瀹屾暣銆佹潈閲嶅悎鐞嗐€佹暟鎹湡瀹炪€佺粨鏋滃瑙傘€傚棰勭畻鎵ц鐜囧亸浣庛€佹湭瀹屾垚缁╂晥鐩爣鎴栧亸绂荤哗鏁堢洰鏍囪緝澶с€佽嚜璇勭粨鏋滆緝宸殑椤圭洰瑕佸垎鏋愬苟璇存槑鍘熷洜锛岀爺绌舵彁鍑烘湁閽堝鎬х殑鏁存敼鎺柦銆�
+          2銆佹寚鏍囨潈閲嶈缃€傛€诲垎100鍒嗭紝鍏朵腑鎶曞叆涓庣鐞�36%銆佷骇鍑�34%銆佹晥鏋�15%銆佸奖鍝嶅姏15%锛屾寚鏍囧緱鍒嗕笉鑳借秴杩囨潈閲嶅垎鍊笺€傚鏈夌壒娈婃儏鍐碉紝涓€绾ф寚鏍囨潈閲嶅彲鍋氶€傚綋璋冩暣銆備簩銆佷笁绾ф寚鏍囧簲褰撴牴鎹寚鏍囬噸瑕佺▼搴︺€侀」鐩疄鏂介樁娈电瓑鍥犵礌缁煎悎纭畾锛屽噯纭弽鏄犻」鐩殑浜у嚭鍜屾晥鐩娿€�
+          3銆佽瘎鍒嗗姙娉曘€傗憼瀹氶噺鎸囨爣锛氬畬鎴愬勾搴︽寚鏍囧€煎緱婊″垎锛屾湭瀹屾垚鐨勬寜瀹屾垚鍊间笌鎸囨爣鍊肩殑姣斾緥璁板垎锛涜嫢鍥犳寚鏍囧€艰缃槑鏄惧亸浣庨€犳垚瀹屾垚鍊奸珮浜庢寚鏍囧€艰緝澶氱殑锛屽簲鎸夊亸绂诲害閫傚害璋冨噺鍒嗗€硷紱鈶″畾鎬ф寚鏍囥€傚湪涓夋。璁″垎鍖洪棿鍚堢悊纭畾鍒嗗€硷細杈炬垚鎸囨爣涓篬100%,80%]锛岄儴鍒嗚揪鎴愭寚鏍�
+          骞跺叿鏈変竴瀹氭晥鏋滀负锛�80%,60%]锛屾湭杈炬垚鎸囨爣涓旀晥鏋滆緝宸负(60%,0]锛涒憿婊℃剰搴︺€備竴鑸噰鐢ㄧぞ浼氳皟鏌ユ柟寮忚幏鍙栵紝婊℃剰搴﹁揪鍒版寚鏍囧€煎垯寰楁弧鍒嗭紝浣庝簬鎸囨爣鍊煎垯鎸夋瘮渚嬫墸鍒嗭紱鈶i绠楁墽琛岀巼銆傗墺99%寰�10鍒嗐€�(99%,95%]寰�8鍒嗐€�(95%,90%]寰�6鍒嗐€�(90%,85%]寰�4鍒嗐€佷綆浜�85%寰�0鍒嗐€�
+          4銆佸緱鍒嗙瓑绾с€傛寜鎬诲垎鍒掑垎涓哄洓妗o細浼樹负[90,100]鍒嗐€佽壇涓篬80,90)鍒嗭紝涓负[60,80)鍒嗭紝宸负60鍒嗕互涓嬨€�
+        </div>
+        <!-- <div class="account-info1">
+          <el-form-item>
+            <el-row class="showTable">
+              <el-button
+                style="float:right"
+                icon="el-icon-document-checked"
+                type="success"
+                @click="addPeopleInfo1"
+                >纭淇濆瓨</el-button
+              >
+            </el-row>
+          </el-form-item>
+        </div> -->
+      </el-form>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+export default {
+  components: {},
+  props: {
+    applicationInfo: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {
+      flowInfo: {
+        nextSubmitNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        canRejectNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        user: '绯荤粺绠$悊鍛�',
+        state: '璐熻矗浜鸿ˉ鍏�',
+        flow: [
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:30:43',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '寮€濮�',
+            endNodeName: '绉戠爺澶勭珛椤�',
+            flowState: '娴佺▼寮€濮�',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          },
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:31:00',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '绉戠爺澶勭珛椤�',
+            endNodeName: '璐熻矗浜鸿ˉ鍏�',
+            flowState: '鎻愪氦',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          }
+        ],
+        btnStates: {
+          isShowSave: true,
+          isShowSubmit: true,
+          isShowReject: true,
+          isShowRevoke: false,
+          isShowChart: true,
+          isShowHistory: true,
+          isShowUser: true,
+          isShowState: true,
+          isShowCancel: false
+        }
+      },
+      tableData: [
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '骞村害璧勯噾鎬婚',
+          amount1: '0',
+          amount2: '',
+          amount3: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '鍏朵腑:褰撳勾璐㈡斂鎷ㄦ',
+          amount1: '',
+          amount2: '',
+          amount3: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '涓婂勾缁撹浆璧勯噾',
+          amount1: '',
+          amount2: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '鍏朵粬璧勯噾',
+          amount1: '',
+          amount2: '',
+          amount3: ''
+        }
+      ],
+
+      fileList: [],
+
+      detail: {
+        //椤甸潰鏁版嵁
+        schoolProjectName: '鍖诲妫€楠屾娴嬪疄楠屾暀瀛﹀钩鍙板缓璁�',
+        id: '',
+        processId: '',
+        fundsProjectName: '鍖诲鎶€鏈闄�',
+        parentId: '',
+        extendFieldList: {
+          schoolfundsdep: '鍖诲褰卞儚瀛﹂櫌',
+          score: '',
+          completion: '',
+
+          applyReason: '',
+          achievementslist: [
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '骞村害璧勯噾鎬婚',
+              amount1: '0',
+              amount2: '',
+              amount3: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '鍏朵腑:褰撳勾璐㈡斂鎷ㄦ',
+              amount1: '',
+              amount2: '',
+              amount3: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '涓婂勾缁撹浆璧勯噾',
+              amount1: '',
+              amount2: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '鍏朵粬璧勯噾',
+              amount1: '',
+              amount2: '',
+              amount3: ''
+            }
+          ],
+          travelOnBusinessDetail: []
+        }
+      }
+    };
+  },
+  async created() {
+    if (this.$route.query.type) {
+      Api.queryTargetPlan(
+        this.$route.query.parentId,
+        this.$route.query.type
+      ).then(res => {
+        this.detail = res.data[0];
+        this.detail.extendFieldList = JSON.parse(res.data[0].extendFieldList);
+        this.tableData = this.detail.extendFieldList.achievementslist;
+        console.log(this.detail.extendFieldList, '0000');
+        this.flowInfo = res.data[0].flowCanShowOut;
+      });
+    }
+    if (this.$route.query.projectName) {
+      this.detail.fundsProjectName = this.$route.query.projectName;
+      this.detail.schoolProjectName = this.$route.query.ownDeptName;
+      this.detail.extendFieldList.schoolfundsdep = this.$route.query.ownDeptName;
+      this.getlist();
+    }
+  },
+
+  computed: {},
+  methods: {
+    getlist() {
+      Api.queryTargetByPlanId(this.$route.query.parentId).then(res => {
+        this.detail.extendFieldList.travelOnBusinessDetail = res.data;
+      });
+    },
+    handleBack() {
+      const ua = window.navigator.userAgent.toLowerCase();
+
+      if (ua.toLowerCase().indexOf('micromessenger') > -1) {
+        if (
+          ua.toLowerCase().indexOf('iphone') > -1 &&
+          ua.toLowerCase().indexOf('wxworklocal') > -1
+        ) {
+          history.go(-4);
+        } else {
+          history.go(-3);
+        }
+      } else if (ua.toLowerCase().indexOf('dingtalk') > -1) {
+        history.go(-3);
+      } else {
+        history.go(-1);
+      }
+      return false;
+    },
+    handleSave() {
+      this.detail.extendFieldList.achievementslist = this.tableData;
+      this.detail.parentId = this.$route.query.parentId;
+      this.detail.extendFieldList = JSON.stringify(this.detail.extendFieldList);
+      Api.saveTargetPlanSelf(this.detail).then(res => {
+        console.log(res.data, '9999');
+        this.getformlist();
+      });
+    },
+    handleSubmit() {
+      this.$emit('handleSubmit');
+    },
+    handleReturn() {
+      this.$emit('handleReturn');
+    },
+    handleCancel() {
+      this.$emit('handleCancel');
+    },
+    addPeopleInfo() {
+      this.detail.extendFieldList.travelOnBusinessDetail.push({});
+    },
+    addPeopleInfo1() {
+      this.detail.extendFieldList.achievementslist = this.tableData;
+      this.detail.extendFieldList = JSON.stringify(this.detail.extendFieldList);
+      console.log(this.detail, '000000');
+    },
+    fileChange(file, fileList) {
+      this.fileList = fileList;
+    },
+    removeFile(file, fileList) {
+      this.fileList = fileList;
+    },
+    uploadFile() {
+      // console.log('uploadFile');
+    },
+    getformlist() {
+      Api.queryTargetPlan(this.$route.query.parentId, '鑷瘎').then(res => {
+        this.detail = res.data[0];
+        this.detail.extendFieldList = JSON.parse(res.data[0].extendFieldList);
+        this.flowInfo = res.data[0].flowCanShowOut;
+
+        console.log(this.detail.extendFieldList, '99999');
+      });
+    },
+    objectSpanMethod({ rowIndex, columnIndex }) {
+      if (columnIndex === 0) {
+        if (rowIndex % 4 === 0) {
+          return {
+            rowspan: 4,
+            colspan: 1
+          };
+        } else {
+          return {
+            rowspan: 0,
+            colspan: 0
+          };
+        }
+      }
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    deletePelpleRow(index) {
+      this.detail.extendFieldList.travelOnBusinessDetail.splice(index, 1);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.explain {
+  color: red;
+  line-height: 24px;
+}
+.project-card {
+  margin-top: 10px;
+  cursor: pointer;
+  position: relative;
+  .category {
+    text-align: center;
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+    color: #fff !important;
+    background-color: #6cd1b3;
+    position: absolute;
+    font-size: 6px;
+    line-height: 21px;
+    top: calc(50% - 15px);
+  }
+  .right-sign {
+    position: absolute;
+    right: 20px;
+    top: 50%;
+    // border: solid 1px;
+    border-top: solid 1px rgba($color: #000000, $alpha: 0.3);
+    border-right: solid 1px rgba($color: #000000, $alpha: 0.3);
+    width: 8px;
+    height: 8px;
+    transform: rotate(45deg) translateY(-50%);
+  }
+}
+.bill-card-header {
+  color: #fff;
+  font-size: 15px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .el-button {
+    background-color: #3c8dbc;
+    color: #fff;
+    font-weight: 700;
+  }
+}
+.bill-info {
+  position: relative;
+  border-bottom: solid 1px rgba(0, 0, 0, 0.1);
+  padding-bottom: 20px;
+  padding-top: 10px;
+  div {
+    display: inline-block;
+    height: 28px;
+    line-height: 28px;
+    font-size: 14px;
+  }
+  .el-button {
+    position: absolute;
+    top: 10px;
+    right: 0;
+  }
+}
+.el-select {
+  width: 100%;
+}
+.account-info {
+  display: inline-block;
+  width: 40%;
+  margin-right: 20px;
+}
+.account-info1 {
+  display: inline-block;
+  width: 100%;
+  margin-right: 20px;
+}
+.showTable {
+  display: block;
+}
+.showCard {
+  display: none;
+}
+.el-table .el-form-item {
+  margin-bottom: 0px;
+}
+.mt {
+  margin-top: 20px;
+}
+.mt10 {
+  margin-top: 10px;
+}
+.mb {
+  margin-bottom: 20px;
+}
+.fs14 {
+  font-size: 14px;
+}
+.fs15 {
+  float: right;
+  font-size: 14px;
+}
+@media screen and (max-width: 765px) {
+  .account-info {
+    display: block;
+    width: 100%;
+  }
+  .showTable {
+    display: none;
+  }
+  .showCard {
+    display: block;
+  }
+}
+</style>
+
+<style lang="scss">
+.select-approval-user {
+  .el-table__body tr.current-row > td {
+    background-color: #409eff;
+  }
+}
+</style>
diff --git a/WebSite/src/views/performance/evaluationview.vue b/WebSite/src/views/performance/evaluationview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..29601511c481b5bd7886e4e4173b82362fa5b5be
--- /dev/null
+++ b/WebSite/src/views/performance/evaluationview.vue
@@ -0,0 +1,324 @@
+<template>
+  <div class="app-container">
+    <el-card class="card-override-padding">
+      <el-collapse>
+        <el-collapse-item>
+          <template #title>
+            <span>鏌ヨ鏉′欢</span>
+          </template>
+          <el-form :model="formData">
+            <el-row :gutter="20">
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-date-picker
+                  :editable="false"
+                    v-model="formData.year"
+                    type="year"
+                    placeholder="閫夋嫨骞�"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                      v-model="formData.projectName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-select
+                      style="width:100%"
+                      clearable
+                      v-model="formData.projectType"
+                      placeholder="璇烽€夋嫨椤圭洰绫诲埆"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩崟浣�"
+                      v-model="formData.deptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ュ綊鍙i儴闂�"
+                      v-model="formData.ownDeptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <el-row>
+            <el-button icon="el-icon-search" plain @click="search">
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-search" plain @click="clean">
+              閲嶇疆
+            </el-button>
+            <el-button
+              type="success"
+              icon="el-icon-download"
+              plain
+              @click="clean"
+            >
+              瀵煎嚭
+            </el-button>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+    </el-card>
+
+    <el-card class="mt-20 is-desktop">
+      <el-table
+        :data="tableData"
+        @selection-change="handleSelectionChange"
+        stripe
+        border
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column
+          label="骞翠唤"
+          prop="year"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲埆"
+          prop="projectType"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲瀷"
+          prop="projectTypes"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" align="center">
+          <template #default="scope">
+            <span @click="toDetail(scope.row)">{{
+              scope.row.projectName
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="棰勭畻閲戦" prop="totalMoney" align="center">
+        </el-table-column>
+        <el-table-column
+          label="鐢虫姤鍗曚綅"
+          prop="departmentName"
+          align="center"
+        ></el-table-column>
+
+        <el-table-column label="璐熻矗浜�" prop="projectLeaderName" align="center">
+        </el-table-column>
+        <el-table-column label="褰掑彛閮ㄩ棬" prop="ownDeptName" align="center">
+        </el-table-column>
+
+        <el-table-column label="濉姤鐘舵€�" prop="stateLabel" align="center">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="200px" align="center">
+          <template v-slot:default="scope">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-view"
+              v-if="scope.row.isHave == 1"
+              @click="remove(scope.row)"
+              >鏌ョ湅
+            </el-button>
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              v-if="scope.row.isHave == 0"
+              @click="remove1(scope.row)"
+              >鏂板缓
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <Pagination
+        :page="formData.pageIndex"
+        :limit="formData.pageSize"
+        :total="dataCount"
+        @pagination="changePage"
+      />
+    </el-card>
+    <el-dialog v-model="dialogVisible" width="80%">
+      <TableFlow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        @handleCancel="handleCancel"
+        :flowstaus="false"
+        :row="applyInfo"
+        :canEdit="false"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="dialogVisible = false"
+            >纭</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+import { moneyFormat } from '@/utils';
+import ProjectLibrary from '@/api/projectLibrary';
+export default {
+  name: 'search',
+  data() {
+    return {
+      applyInfo: {},
+      dialogVisible: false,
+      isShowForm: true,
+      formData: {
+        year: '2022',
+        deptName: '',
+        ownDeptName: '',
+        projectName: '',
+        projectType: '',
+        pageIndex: 1,
+        pageSize: 10
+      },
+      options: [
+        {
+          value: '浠g紪涓庡畾鍚戦」鐩敮鍑�',
+          label: '浠g紪涓庡畾鍚戦」鐩敮鍑�'
+        },
+        {
+          value: '缁忓父鎬х粡璐�',
+          label: '缁忓父鎬х粡璐�'
+        },
+
+        {
+          value: '缁忓父鎬ч」鐩�',
+          label: '缁忓父鎬ч」鐩�'
+        },
+        {
+          value: '涓€娆℃€ч」鐩�',
+          label: '涓€娆℃€ч」鐩�'
+        }
+      ],
+      school: '',
+      uploadDialog: false,
+      showList: [],
+      fileList: [],
+      tableData: [],
+      dataCount: 0,
+      dialogSelectProject: false, //閫夋嫨缁忚垂椤圭洰
+      projectList: [],
+      dataCountProject: 0,
+      multipleSelect: [],
+      formSelect: {
+        projectCode: '',
+        pageIndex: 1,
+        pageSize: 10
+      }
+    };
+  },
+  created() {},
+
+  computed: {},
+  watch: {},
+  mounted() {
+    this.getselflist();
+  },
+  methods: {
+    toDetail(row) {
+      ProjectLibrary.queryProjectInfoPlanById(row.id).then(res => {
+        console.log('res', res);
+
+        this.applyInfo = res.data[0];
+      });
+      this.dialogVisible = true;
+    },
+    getselflist() {
+      Api.selfTargetPage(this.formData).then(res => {
+        console.log(res.data, '9999');
+        this.tableData = res.data;
+        this.tableData.forEach(item => {
+          item.totalMoney = moneyFormat(item.totalMoney, 2, ',');
+        });
+        this.dataCount = res.total;
+      });
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    clean() {
+      this.formData.updateuser = '';
+    },
+    //鏌ヨ
+    search() {
+      this.formData.pageIndex = 1;
+      this.getselflist(this.formData);
+    },
+    //鍒犻櫎
+    remove(row) {
+      this.$router.push({
+        path: '/i/performance/evaluation',
+        query: {
+          parentId: row.id,
+          type: '鑷瘎'
+        }
+      });
+    },
+    remove1(row) {
+      this.$router.push({
+        path: '/i/performance/evaluation',
+        query: {
+          parentId: row.id,
+          projectName: row.projectName,
+          ownDeptName: row.ownDeptName
+        }
+      });
+    },
+    //鍒嗛〉
+    changePage(val) {
+      this.formData.pageIndex = val.page;
+      this.formData.pageSize = val.limit;
+      this.getselflist(this.formData);
+    },
+   
+    //鑾峰彇鍏ㄩ儴椤圭洰
+
+   
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-collapse {
+  border: none;
+}
+.apply-table-wrap {
+  padding: 0 150 0 !important;
+}
+</style>
diff --git a/WebSite/src/views/performance/evaluationwatchview.vue b/WebSite/src/views/performance/evaluationwatchview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..431e121db5fa3f6ba5f40dfe304fc1bf0d93c306
--- /dev/null
+++ b/WebSite/src/views/performance/evaluationwatchview.vue
@@ -0,0 +1,322 @@
+<template>
+  <div class="app-container">
+    <el-card class="card-override-padding">
+      <el-collapse>
+        <el-collapse-item>
+          <template #title>
+            <span>鏌ヨ鏉′欢</span>
+          </template>
+          <el-form :model="formData">
+            <el-row :gutter="20">
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-date-picker
+                  :editable="false"
+                    v-model="formData.year"
+                    type="year"
+                    placeholder="閫夋嫨骞�"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                      v-model="formData.projectName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-select
+                      style="width:100%"
+                      clearable
+                      v-model="formData.projectType"
+                      placeholder="璇烽€夋嫨椤圭洰绫诲埆"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩崟浣�"
+                      v-model="formData.deptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ュ綊鍙i儴闂�"
+                      v-model="formData.ownDeptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <el-row>
+            <el-button icon="el-icon-search" plain @click="search">
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-search" plain @click="clean">
+              閲嶇疆
+            </el-button>
+            <el-button
+              type="success"
+              icon="el-icon-download"
+              plain
+              @click="clean"
+            >
+              瀵煎嚭
+            </el-button>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+    </el-card>
+
+    <el-card class="mt-20 is-desktop">
+      <el-table
+        :data="tableData"
+        @selection-change="handleSelectionChange"
+        stripe
+        border
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column
+          label="骞翠唤"
+          prop="year"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲埆"
+          prop="projectType"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲瀷"
+          prop="projectTypes"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" align="center">
+          <template #default="scope">
+            <span @click="toDetail(scope.row)">{{
+              scope.row.projectName
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="棰勭畻閲戦" prop="totalMoney" align="center">
+        </el-table-column>
+        <el-table-column
+          label="鐢虫姤鍗曚綅"
+          prop="departmentName"
+          align="center"
+        ></el-table-column>
+
+        <el-table-column label="璐熻矗浜�" prop="projectLeaderName" align="center">
+        </el-table-column>
+        <el-table-column label="褰掑彛閮ㄩ棬" prop="ownDeptName" align="center">
+        </el-table-column>
+
+        <el-table-column label="濉姤鐘舵€�" prop="stateLabel" align="center">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="200px" align="center">
+          <template v-slot:default="scope">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-view"
+              v-if="scope.row.isHave == 1"
+              @click="remove(scope.row)"
+              >鏌ョ湅
+            </el-button>
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              v-if="scope.row.isHave == 0"
+              @click="remove1(scope.row)"
+              >鏂板缓
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <Pagination
+        :page="formData.pageIndex"
+        :limit="formData.pageSize"
+        :total="dataCount"
+        @pagination="changePage"
+      />
+    </el-card>
+    <el-dialog v-model="dialogVisible" width="80%">
+      <TableFlow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        @handleCancel="handleCancel"
+        :flowstaus="false"
+        :row="applyInfo"
+        :canEdit="false"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="dialogVisible = false"
+            >纭</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+import { moneyFormat } from '@/utils';
+import ProjectLibrary from '@/api/projectLibrary';
+export default {
+  name: 'search',
+  data() {
+    return {
+      applyInfo: {},
+      dialogVisible: false,
+      isShowForm: true,
+      formData: {
+        year: '2022',
+        deptName: '',
+        ownDeptName: '',
+        projectName: '',
+        projectType: '',
+        pageIndex: 1,
+        pageSize: 10
+      },
+      options: [
+        {
+          value: '浠g紪涓庡畾鍚戦」鐩敮鍑�',
+          label: '浠g紪涓庡畾鍚戦」鐩敮鍑�'
+        },
+        {
+          value: '缁忓父鎬х粡璐�',
+          label: '缁忓父鎬х粡璐�'
+        },
+
+        {
+          value: '缁忓父鎬ч」鐩�',
+          label: '缁忓父鎬ч」鐩�'
+        },
+        {
+          value: '涓€娆℃€ч」鐩�',
+          label: '涓€娆℃€ч」鐩�'
+        }
+      ],
+      school: '',
+      uploadDialog: false,
+      showList: [],
+      fileList: [],
+      tableData: [],
+      dataCount: 0,
+      dialogSelectProject: false, //閫夋嫨缁忚垂椤圭洰
+      projectList: [],
+      dataCountProject: 0,
+      multipleSelect: [],
+      formSelect: {
+        projectCode: '',
+        pageIndex: 1,
+        pageSize: 10
+      }
+    };
+  },
+  created() {},
+
+  computed: {},
+  watch: {},
+  mounted() {
+    this.getselflist();
+  },
+  methods: {
+    toDetail(row) {
+      ProjectLibrary.queryProjectInfoPlanById(row.id).then(res => {
+        console.log('res', res);
+
+        this.applyInfo = res.data[0];
+      });
+      this.dialogVisible = true;
+    },
+    getselflist() {
+      Api.selfTargetPage(this.formData).then(res => {
+        console.log(res.data, '9999');
+        this.tableData = res.data;
+        this.tableData.forEach(item => {
+          item.totalMoney = moneyFormat(item.totalMoney, 2, ',');
+        });
+        this.dataCount = res.total;
+      });
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    clean() {
+      this.formData.updateuser = '';
+    },
+    //鏌ヨ
+    search() {
+      this.formData.pageIndex = 1;
+      this.getselflist(this.formData);
+    },
+    //鍒犻櫎
+    remove(row) {
+      this.$router.push({
+        path: '/i/performance/evaluation',
+        query: {
+          parentId: row.id,
+          type: '鑷瘎'
+        }
+      });
+    },
+    remove1(row) {
+      this.$router.push({
+        path: '/i/performance/evaluation',
+        query: {
+          parentId: row.id,
+          projectName: row.projectName,
+          ownDeptName: row.ownDeptName
+        }
+      });
+    },
+    //鍒嗛〉
+    changePage(val) {
+      this.formData.pageIndex = val.page;
+      this.formData.pageSize = val.limit;
+      this.getselflist(this.formData);
+    }
+
+    //鑾峰彇鍏ㄩ儴椤圭洰
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-collapse {
+  border: none;
+}
+.apply-table-wrap {
+  padding: 0 150 0 !important;
+}
+</style>
diff --git a/WebSite/src/views/performance/rectification.vue b/WebSite/src/views/performance/rectification.vue
new file mode 100644
index 0000000000000000000000000000000000000000..b7b0cf47a55e8b1536d1ed1689c28cdb64176ff4
--- /dev/null
+++ b/WebSite/src/views/performance/rectification.vue
@@ -0,0 +1,499 @@
+<template>
+  <div class="app-container">
+    <el-card>
+      <Flow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        :flowInfo="flowInfo"
+      ></Flow>
+    </el-card>
+    <el-card class="mt card">
+      <template #header>
+        <span class="fs14">棰勭畻椤圭洰缁╂晥璇勪环缁撴灉鏁存敼琛�</span>
+      </template>
+      <el-form :model="detail" ref="addForm">
+        <div class="account-info1">
+          <el-form-item label="椤圭洰鍚嶇О:">
+            <span>{{ detail.fundsProjectName }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info1">
+          <el-form-item label="鏍″唴椤圭洰鍗曚綅:">
+            <span>{{ detail.schoolProjectName }}</span>
+          </el-form-item>
+        </div>
+        <div class="account-info2">
+          <el-form-item label="椤圭洰璐熻矗浜�">
+            <el-row class="showTable">
+              <el-input v-model="fundspeople"></el-input>
+            </el-row>
+          </el-form-item>
+        </div>
+        <div class="account-info2">
+          <el-form-item label="缁忓姙浜�">
+            <el-row class="showTable">
+              <el-input v-model="Handler"></el-input>
+            </el-row>
+          </el-form-item>
+        </div>
+        <div class="account-info2">
+          <el-form-item label="鑱旂郴鐢佃瘽">
+            <el-row class="showTable">
+              <el-input v-model="tel"></el-input>
+            </el-row>
+          </el-form-item>
+        </div>
+        <el-table
+          class="showTable mt10 mb"
+          :data="tableData"
+          border
+          @selection-change="handleSelectionChange"
+          style="width: 100%; margin-top: 20px"
+        >
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column prop="id" label="缁╂晥鎸囨爣" width="180" />
+          <el-table-column prop="name" label="鍋忓樊鍘熷洜鍙婄籂閿�" />
+          <el-table-column
+            prop="amount1"
+            label="宸插畬鎴愭暣鏀�(璇存槑鏁存敼鎺柦鍜屾晥鏋�)"
+          >
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount1"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="amount2"
+            label="姝e湪鏁存敼(璇存槑鏁存敼鎺柦,棰勬湡瀹屾垚鏁存敼鐨勬椂闂村強鏁堟灉)"
+          >
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount2"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="amount3"
+            label="鏈暣鏀�(璇存槑鏈暣鏀圭殑鍘熷洜锛屼笅涓€姝ユ墦绠�)"
+          >
+            <template #default="scope">
+              <el-form-item>
+                <el-input v-model="scope.row.amount3"></el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="account-info1">
+          <el-form-item>
+            <el-row class="showTable">
+              <el-button
+                style="float:right"
+                icon="el-icon-document-checked"
+                type="success"
+                @click="addPeopleInfo"
+                >纭淇濆瓨</el-button
+              >
+            </el-row>
+          </el-form-item>
+        </div>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+export default {
+  components: {},
+  props: {
+    applicationInfo: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {
+      flowInfo: {
+        nextSubmitNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        canRejectNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        user: '绯荤粺绠$悊鍛�',
+        state: '璐熻矗浜鸿ˉ鍏�',
+        flow: [
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:30:43',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '寮€濮�',
+            endNodeName: '绉戠爺澶勭珛椤�',
+            flowState: '娴佺▼寮€濮�',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          },
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:31:00',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '绉戠爺澶勭珛椤�',
+            endNodeName: '璐熻矗浜鸿ˉ鍏�',
+            flowState: '鎻愪氦',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          }
+        ],
+        btnStates: {
+          isShowSave: true,
+          isShowSubmit: true,
+          isShowReject: true,
+          isShowRevoke: false,
+          isShowChart: true,
+          isShowHistory: true,
+          isShowUser: true,
+          isShowState: true,
+          isShowCancel: false
+        }
+      },
+      fundspeople: '',
+      Handler: '',
+      tel: '',
+      namechange: false,
+      information: '',
+      multipleSelection: [],
+      reason: '',
+      reason1: '',
+      showelse: false,
+      showelse1: false,
+      options1: [],
+      tableData: [
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '骞村害璧勯噾鎬婚',
+          amount1: '0',
+          amount2: '',
+          amount3: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '鍏朵腑:褰撳勾璐㈡斂鎷ㄦ',
+          amount1: '',
+          amount2: '',
+          amount3: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '涓婂勾缁撹浆璧勯噾',
+          amount1: '',
+          amount2: ''
+        },
+        {
+          id: '椤圭洰璧勯噾(涓囧厓)',
+          name: '鍏朵粬璧勯噾',
+          amount1: '',
+          amount2: '',
+          amount3: ''
+        }
+      ],
+
+      selectSignatureVisiable: false, //閫夋嫨绛剧珷瀵硅瘽妗�
+      radio: '', //鍗曢€夋缁戝畾鐨勬暟鎹�--鏃犲疄闄呮剰涔�
+      input: '',
+      detail: {
+        //椤甸潰鏁版嵁
+        schoolProjectName: '闄勫睘鍗牎浣撹偛鑹烘湳鏁欏閮�',
+        projectID: '',
+        fundsProjectName: '鏁欒偛鏁欏缁忚垂-浣撹偛鑹烘湳鏍″洯鏂囧寲寤鸿(2020)',
+        parentId: '',
+        extendFieldList: {
+          fundspeople: '',
+          Handler: '',
+          tel: '',
+          achievementslist: [
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '骞村害璧勯噾鎬婚',
+              amount1: '0',
+              amount2: '',
+              amount3: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '鍏朵腑:褰撳勾璐㈡斂鎷ㄦ',
+              amount1: '',
+              amount2: '',
+              amount3: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '涓婂勾缁撹浆璧勯噾',
+              amount1: '',
+              amount2: ''
+            },
+            {
+              id: '椤圭洰璧勯噾(涓囧厓)',
+              name: '鍏朵粬璧勯噾',
+              amount1: '',
+              amount2: '',
+              amount3: ''
+            }
+          ]
+        }
+      },
+      organizationlist: [],
+      applyname: '',
+      date: '',
+      listnum: '',
+      test1: [],
+      fundsname: [],
+      sumlist: ''
+    };
+  },
+  async created() {
+    if (this.$route.query.type) {
+      Api.queryTargetPlan(
+        this.$route.query.parentId,
+        this.$route.query.type
+      ).then(res => {
+        this.detail = res.data[0];
+        this.detail.extendFieldList = JSON.parse(res.data[0].extendFieldList);
+        this.tableData = this.detail.extendFieldList;
+        this.flowInfo = res.data[0].flowCanShowOut;
+      });
+    }
+    if (this.$route.query.ownDeptName) {
+      this.detail.fundsProjectName = this.$route.query.projectName;
+      this.detail.schoolProjectName = this.$route.query.ownDeptName;
+    }
+  },
+
+  computed: {},
+  methods: {
+    getformlist() {
+      Api.queryTargetPlan(this.$route.query.parentId, '鏁存敼').then(res => {
+        this.detail = res.data[0];
+        this.detail.extendFieldList = JSON.parse(res.data[0].extendFieldList);
+        console.log(this.detail.extendFieldList, '99999');
+      });
+    },
+    handleBack() {
+      const ua = window.navigator.userAgent.toLowerCase();
+
+      if (ua.toLowerCase().indexOf('micromessenger') > -1) {
+        if (
+          ua.toLowerCase().indexOf('iphone') > -1 &&
+          ua.toLowerCase().indexOf('wxworklocal') > -1
+        ) {
+          history.go(-4);
+        } else {
+          history.go(-3);
+        }
+      } else if (ua.toLowerCase().indexOf('dingtalk') > -1) {
+        history.go(-3);
+      } else {
+        history.go(-1);
+      }
+      return false;
+    },
+    handleSave() {
+      this.detail.extendFieldList.achievementslist = this.tableData;
+      this.detail.parentId = this.$route.query.parentId;
+      this.detail.extendFieldList = JSON.stringify(this.detail.extendFieldList);
+      Api.saveTargetPlanReform(this.detail).then(res => {
+        console.log(res.data, '9999');
+        this.getformlist();
+      });
+    },
+    handleSubmit() {
+      this.$emit('handleSubmit');
+    },
+    handleReturn() {
+      this.$emit('handleReturn');
+    },
+    handleCancel() {
+      this.$emit('handleCancel');
+    },
+    addPeopleInfo() {
+      this.detail.extendFieldList.fundspeople = this.fundspeople;
+      this.detail.extendFieldList.Handler = this.Handler;
+      this.detail.extendFieldList.tel = this.tel;
+      this.detail.extendFieldList.achievementslist = this.tableData;
+      this.detail.extendFieldList = JSON.stringify(this.detail.extendFieldList);
+      console.log(this.detail, '000000');
+    },
+    fileChange(file, fileList) {
+      this.fileList = fileList;
+    },
+    removeFile(file, fileList) {
+      this.fileList = fileList;
+    },
+    uploadFile() {
+      // console.log('uploadFile');
+    },
+    objectSpanMethod({ rowIndex, columnIndex }) {
+      if (columnIndex === 0) {
+        if (rowIndex % 4 === 0) {
+          return {
+            rowspan: 4,
+            colspan: 1
+          };
+        } else {
+          return {
+            rowspan: 0,
+            colspan: 0
+          };
+        }
+      }
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    deletePelpleRow(index) {
+      console.log(index);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.project-card {
+  margin-top: 10px;
+  cursor: pointer;
+  position: relative;
+  .category {
+    text-align: center;
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+    color: #fff !important;
+    background-color: #6cd1b3;
+    position: absolute;
+    font-size: 6px;
+    line-height: 21px;
+    top: calc(50% - 15px);
+  }
+  .right-sign {
+    position: absolute;
+    right: 20px;
+    top: 50%;
+    // border: solid 1px;
+    border-top: solid 1px rgba($color: #000000, $alpha: 0.3);
+    border-right: solid 1px rgba($color: #000000, $alpha: 0.3);
+    width: 8px;
+    height: 8px;
+    transform: rotate(45deg) translateY(-50%);
+  }
+}
+.bill-card-header {
+  color: #fff;
+  font-size: 15px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .el-button {
+    background-color: #3c8dbc;
+    color: #fff;
+    font-weight: 700;
+  }
+}
+.bill-info {
+  position: relative;
+  border-bottom: solid 1px rgba(0, 0, 0, 0.1);
+  padding-bottom: 20px;
+  padding-top: 10px;
+  div {
+    display: inline-block;
+    height: 28px;
+    line-height: 28px;
+    font-size: 14px;
+  }
+  .el-button {
+    position: absolute;
+    top: 10px;
+    right: 0;
+  }
+}
+.el-select {
+  width: 100%;
+}
+.account-info {
+  display: inline-block;
+  width: 40%;
+  margin-right: 20px;
+}
+.account-info1 {
+  display: inline-block;
+  width: 100%;
+  margin-right: 20px;
+}
+.account-info2 {
+  display: inline-block;
+  width: 30%;
+  margin-right: 20px;
+}
+.showTable {
+  display: block;
+}
+.showCard {
+  display: none;
+}
+.el-table .el-form-item {
+  margin-bottom: 0px;
+}
+.mt {
+  margin-top: 20px;
+}
+.mt10 {
+  margin-top: 10px;
+}
+.mb {
+  margin-bottom: 20px;
+}
+.fs14 {
+  font-size: 14px;
+}
+.fs15 {
+  float: right;
+  font-size: 14px;
+}
+@media screen and (max-width: 765px) {
+  .account-info {
+    display: block;
+    width: 100%;
+  }
+  .showTable {
+    display: none;
+  }
+  .showCard {
+    display: block;
+  }
+}
+</style>
+
+<style lang="scss">
+.select-approval-user {
+  .el-table__body tr.current-row > td {
+    background-color: #409eff;
+  }
+}
+</style>
diff --git a/WebSite/src/views/performance/rectificationview.vue b/WebSite/src/views/performance/rectificationview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..042be5b2557ae79adeed4d6c6134d68d8e2c88a6
--- /dev/null
+++ b/WebSite/src/views/performance/rectificationview.vue
@@ -0,0 +1,332 @@
+<template>
+  <div class="app-container">
+    <el-card class="card-override-padding">
+      <el-collapse>
+        <el-collapse-item>
+          <template #title>
+            <span>鏌ヨ鏉′欢</span>
+          </template>
+          <el-form :model="formData">
+            <el-row :gutter="20">
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-date-picker
+                    :editable="false"
+                    v-model="formData.year"
+                    type="year"
+                    placeholder="閫夋嫨骞�"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                      v-model="formData.projectName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-select
+                      style="width:100%"
+                      clearable
+                      v-model="formData.projectType"
+                      placeholder="璇烽€夋嫨椤圭洰绫诲埆"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩崟浣�"
+                      v-model="formData.deptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ュ綊鍙i儴闂�"
+                      v-model="formData.ownDeptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <el-row>
+            <el-button icon="el-icon-search" plain @click="search">
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-search" plain @click="clean">
+              閲嶇疆
+            </el-button>
+            <el-button
+              type="success"
+              icon="el-icon-download"
+              plain
+              @click="clean"
+            >
+              瀵煎嚭
+            </el-button>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+    </el-card>
+
+    <el-card class="mt-20 is-desktop">
+      <el-table
+        :data="tableData"
+        @selection-change="handleSelectionChange"
+        stripe
+        border
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column
+          label="骞翠唤"
+          prop="year"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲埆"
+          prop="projectType"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲瀷"
+          prop="projectTypes"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" align="center">
+          <template #default="scope">
+            <span @click="toDetail(scope.row)">{{
+              scope.row.projectName
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="棰勭畻閲戦" prop="totalMoney" align="center">
+        </el-table-column>
+        <el-table-column
+          label="鐢虫姤鍗曚綅"
+          prop="departmentName"
+          align="center"
+        ></el-table-column>
+
+        <el-table-column label="璐熻矗浜�" prop="projectLeaderName" align="center">
+        </el-table-column>
+        <el-table-column label="褰掑彛閮ㄩ棬" prop="ownDeptName" align="center">
+        </el-table-column>
+
+        <el-table-column label="濉姤鐘舵€�" prop="stateLabel" align="center">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="200px" align="center">
+          <template v-slot:default="scope">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-view"
+              v-if="scope.row.isHave == 1"
+              @click="remove(scope.row)"
+              >鏌ョ湅
+            </el-button>
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              v-if="scope.row.isHave == 0"
+              @click="remove1(scope.row)"
+              >鏂板缓
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <Pagination
+        :page="formData.pageIndex"
+        :limit="formData.pageSize"
+        :total="dataCount"
+        @pagination="changePage"
+      />
+    </el-card>
+    <el-dialog v-model="dialogVisible" width="80%">
+      <TableFlow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        @handleCancel="handleCancel"
+        :flowstaus="false"
+        :row="applyInfo"
+        :canEdit="false"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="dialogVisible = false"
+            >纭</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+import ProjectLibrary from '@/api/projectLibrary';
+import { moneyFormat } from '@/utils';
+export default {
+  name: 'search',
+  data() {
+    return {
+      applyInfo: {},
+      dialogVisible: false,
+      isShowForm: true,
+      formData: {
+        year: '2022',
+        deptName: '',
+        ownDeptName: '',
+        projectName: '',
+        projectType: '',
+        pageIndex: 1,
+        pageSize: 10
+      },
+      options: [
+        {
+          value: '浠g紪涓庡畾鍚戦」鐩敮鍑�',
+          label: '浠g紪涓庡畾鍚戦」鐩敮鍑�'
+        },
+        {
+          value: '缁忓父鎬х粡璐�',
+          label: '缁忓父鎬х粡璐�'
+        },
+
+        {
+          value: '缁忓父鎬ч」鐩�',
+          label: '缁忓父鎬ч」鐩�'
+        },
+        {
+          value: '涓€娆℃€ч」鐩�',
+          label: '涓€娆℃€ч」鐩�'
+        }
+      ],
+      school: '',
+      uploadDialog: false,
+      showList: [],
+      fileList: [],
+      tableData: [
+        {
+          projectCode: '2021',
+          projectName: '鍖诲褰卞儚瀛﹂櫌',
+          gmtCreateUser: '鏁欏缁忚垂',
+          gmtCreateUser1: '鏃ュ父鏁欏缁忚垂',
+          gmtCreateUser2: '0490180',
+          gmtCreateUser3: '璐㈠姟澶�',
+          gmtCreateUser4: '0.00',
+          gmtCreateUser5: '鏈鏍�'
+        }
+      ],
+      dataCount: 0,
+      dialogSelectProject: false, //閫夋嫨缁忚垂椤圭洰
+      projectList: [],
+      dataCountProject: 0,
+      multipleSelect: [],
+      formSelect: {
+        year: '2022',
+        pageIndex: 1,
+        pageSize: 10
+      }
+    };
+  },
+  created() {},
+
+  computed: {},
+  watch: {},
+  mounted() {
+    this.getreformlist();
+  },
+  methods: {
+    toDetail(row) {
+      ProjectLibrary.queryProjectInfoPlanById(row.id).then(res => {
+        console.log('res', res);
+
+        this.applyInfo = res.data[0];
+      });
+      this.dialogVisible = true;
+    },
+    getreformlist() {
+      Api.reformTargetPage(this.formData).then(res => {
+        console.log(res.data, '9999');
+        this.tableData = res.data;
+        this.tableData.forEach(item => {
+          item.totalMoney = moneyFormat(item.totalMoney, 2, ',');
+        });
+        this.dataCount = res.total;
+      });
+    },
+    clean() {
+      this.formData.updateuser = '';
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    //鏌ヨ
+    search() {
+      this.formData.pageIndex = 1;
+      this.getreformlist(this.formData);
+    },
+    //鍒犻櫎
+
+    remove(row) {
+      this.$router.push({
+        path: '/i/performance/rectification',
+        query: {
+          parentId: row.id,
+          type: '鏁存敼'
+        }
+      });
+    },
+    remove1(row) {
+      this.$router.push({
+        path: '/i/performance/rectification',
+        query: {
+          parentId: row.id,
+          projectName: row.projectName,
+          ownDeptName: row.ownDeptName
+        }
+      });
+    },
+    //鍒嗛〉
+    changePage(val) {
+      this.formData.pageIndex = val.page;
+      this.formData.pageSize = val.limit;
+      this.getreformlist(this.formData);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-collapse {
+  border: none;
+}
+.apply-table-wrap {
+  padding: 0 150 0 !important;
+}
+</style>
diff --git a/WebSite/src/views/performance/rectificationwatchview.vue b/WebSite/src/views/performance/rectificationwatchview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c729bb141a820498482309dbae99d9a688f1e8ce
--- /dev/null
+++ b/WebSite/src/views/performance/rectificationwatchview.vue
@@ -0,0 +1,332 @@
+<template>
+  <div class="app-container">
+    <el-card class="card-override-padding">
+      <el-collapse>
+        <el-collapse-item>
+          <template #title>
+            <span>鏌ヨ鏉′欢</span>
+          </template>
+          <el-form :model="formData">
+            <el-row :gutter="20">
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-date-picker
+                  :editable="false"
+                    v-model="formData.year"
+                    type="year"
+                    placeholder="閫夋嫨骞�"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                      v-model="formData.projectName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-select
+                      style="width:100%"
+                      clearable
+                      v-model="formData.projectType"
+                      placeholder="璇烽€夋嫨椤圭洰绫诲埆"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ラ」鐩崟浣�"
+                      v-model="formData.deptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+              <el-col :sm="12" :md="8" :lg="6">
+                <el-form-item>
+                  <el-form-item>
+                    <el-input
+                      placeholder="璇疯緭鍏ュ綊鍙i儴闂�"
+                      v-model="formData.ownDeptName"
+                    ></el-input>
+                  </el-form-item>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <el-row>
+            <el-button icon="el-icon-search" plain @click="search">
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-search" plain @click="clean">
+              閲嶇疆
+            </el-button>
+            <el-button
+              type="success"
+              icon="el-icon-download"
+              plain
+              @click="clean"
+            >
+              瀵煎嚭
+            </el-button>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+    </el-card>
+
+    <el-card class="mt-20 is-desktop">
+      <el-table
+        :data="tableData"
+        @selection-change="handleSelectionChange"
+        stripe
+        border
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column
+          label="骞翠唤"
+          prop="year"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲埆"
+          prop="projectType"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          label="椤圭洰绫诲瀷"
+          prop="projectTypes"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" align="center">
+          <template #default="scope">
+            <span @click="toDetail(scope.row)">{{
+              scope.row.projectName
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="棰勭畻閲戦" prop="totalMoney" align="center">
+        </el-table-column>
+        <el-table-column
+          label="鐢虫姤鍗曚綅"
+          prop="departmentName"
+          align="center"
+        ></el-table-column>
+
+        <el-table-column label="璐熻矗浜�" prop="projectLeaderName" align="center">
+        </el-table-column>
+        <el-table-column label="褰掑彛閮ㄩ棬" prop="ownDeptName" align="center">
+        </el-table-column>
+
+        <el-table-column label="濉姤鐘舵€�" prop="stateLabel" align="center">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="200px" align="center">
+          <template v-slot:default="scope">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-view"
+              v-if="scope.row.isHave == 1"
+              @click="remove(scope.row)"
+              >鏌ョ湅
+            </el-button>
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              v-if="scope.row.isHave == 0"
+              @click="remove1(scope.row)"
+              >鏂板缓
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <Pagination
+        :page="formData.pageIndex"
+        :limit="formData.pageSize"
+        :total="dataCount"
+        @pagination="changePage"
+      />
+    </el-card>
+    <el-dialog v-model="dialogVisible" width="80%">
+      <TableFlow
+        @handleBack="handleBack"
+        @handleSave="handleSave"
+        @handleSubmit="handleSubmit"
+        @handleReturn="handleReturn"
+        @handleCancel="handleCancel"
+        :flowstaus="false"
+        :row="applyInfo"
+        :canEdit="false"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="dialogVisible = false"
+            >纭</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Api from '@/api';
+import ProjectLibrary from '@/api/projectLibrary';
+import { moneyFormat } from '@/utils';
+export default {
+  name: 'search',
+  data() {
+    return {
+      applyInfo: {},
+      dialogVisible: false,
+      isShowForm: true,
+      formData: {
+        year: '2022',
+        deptName: '',
+        ownDeptName: '',
+        projectName: '',
+        projectType: '',
+        pageIndex: 1,
+        pageSize: 10
+      },
+      options: [
+        {
+          value: '浠g紪涓庡畾鍚戦」鐩敮鍑�',
+          label: '浠g紪涓庡畾鍚戦」鐩敮鍑�'
+        },
+        {
+          value: '缁忓父鎬х粡璐�',
+          label: '缁忓父鎬х粡璐�'
+        },
+
+        {
+          value: '缁忓父鎬ч」鐩�',
+          label: '缁忓父鎬ч」鐩�'
+        },
+        {
+          value: '涓€娆℃€ч」鐩�',
+          label: '涓€娆℃€ч」鐩�'
+        }
+      ],
+      school: '',
+      uploadDialog: false,
+      showList: [],
+      fileList: [],
+      tableData: [
+        {
+          projectCode: '2021',
+          projectName: '鍖诲褰卞儚瀛﹂櫌',
+          gmtCreateUser: '鏁欏缁忚垂',
+          gmtCreateUser1: '鏃ュ父鏁欏缁忚垂',
+          gmtCreateUser2: '0490180',
+          gmtCreateUser3: '璐㈠姟澶�',
+          gmtCreateUser4: '0.00',
+          gmtCreateUser5: '鏈鏍�'
+        }
+      ],
+      dataCount: 0,
+      dialogSelectProject: false, //閫夋嫨缁忚垂椤圭洰
+      projectList: [],
+      dataCountProject: 0,
+      multipleSelect: [],
+      formSelect: {
+        year: '2022',
+        pageIndex: 1,
+        pageSize: 10
+      }
+    };
+  },
+  created() {},
+
+  computed: {},
+  watch: {},
+  mounted() {
+    this.getreformlist();
+  },
+  methods: {
+    toDetail(row) {
+      ProjectLibrary.queryProjectInfoPlanById(row.id).then(res => {
+        console.log('res', res);
+
+        this.applyInfo = res.data[0];
+      });
+      this.dialogVisible = true;
+    },
+    getreformlist() {
+      Api.reformTargetPage(this.formData).then(res => {
+        console.log(res.data, '9999');
+        this.tableData = res.data;
+        this.tableData.forEach(item => {
+          item.totalMoney = moneyFormat(item.totalMoney, 2, ',');
+        });
+        this.dataCount = res.total;
+      });
+    },
+    clean() {
+      this.formData.updateuser = '';
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    //鏌ヨ
+    search() {
+      this.formData.pageIndex = 1;
+      this.getreformlist(this.formData);
+    },
+    //鍒犻櫎
+
+    remove(row) {
+      this.$router.push({
+        path: '/i/performance/rectification',
+        query: {
+          parentId: row.id,
+          type: '鏁存敼'
+        }
+      });
+    },
+    remove1(row) {
+      this.$router.push({
+        path: '/i/performance/rectification',
+        query: {
+          parentId: row.id,
+          projectName: row.projectName,
+          ownDeptName: row.ownDeptName
+        }
+      });
+    },
+    //鍒嗛〉
+    changePage(val) {
+      this.formData.pageIndex = val.page;
+      this.formData.pageSize = val.limit;
+      this.getreformlist(this.formData);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-collapse {
+  border: none;
+}
+.apply-table-wrap {
+  padding: 0 150 0 !important;
+}
+</style>
diff --git a/WebSite/src/views/yo-common/IncomeApply/index.vue b/WebSite/src/views/yo-common/IncomeApply/index.vue
index 0cd14c13071d1c1a53b28b59b2f6cb4050787310..005fc50c96cbba7cf7fa25572a794c0f817124bf 100644
--- a/WebSite/src/views/yo-common/IncomeApply/index.vue
+++ b/WebSite/src/views/yo-common/IncomeApply/index.vue
@@ -501,6 +501,7 @@ export default {
             attachmentInfoOutList: [],
             advertisement: {},
             donate: {},
+            recovery: {},
             nationalHire: {},
             totalMoney: ''
           },
@@ -528,7 +529,6 @@ export default {
     watch(
       () => props.row,
       val => {
-        console.log('val', val);
         data.flowCanShowOut = val.flowCanShowOut;
         data.incomeType = val.planType;
         const dept = data.deptList.find(
@@ -553,6 +553,7 @@ export default {
           data.eduData.total = toThousands(val.totalMoney);
         } else if (val.planType == 'BAXIANG') {
           data[`${incomeTypeStr.value}` + 'Data'] = JSON.parse(val.otherJson);
+          console.log(data.eightData);
         } else {
           data.eduData.deptNO = val.departmentCode;
           let arr = [];
@@ -680,7 +681,7 @@ export default {
       context.emit('handleSave', saveData.value, props.row.id);
     };
     const handleSubmit = flowOutput => {
-      context.emit('handleSubmit', flowOutput, props.row.id);
+      context.emit('handleSubmit', flowOutput, props.row.id, saveData.value);
     };
     const handleReturn = flowOutput => {
       context.emit('handleReturn', flowOutput, props.row.id);
diff --git a/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue b/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue
index 9a417809b2dcdadec23703c1e7ff5e38d8325eec..49da51a1a9e78ebb6def0dfcdc37b64b57b3f9a6 100644
--- a/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue
+++ b/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue
@@ -4,6 +4,7 @@
       <el-row :gutter="20">
         <el-col :span="6">
           <el-date-picker
+          :editable="false"
             v-model="queryForm.year"
             type="year"
             placeholder="閫夋嫨鏃ユ湡"
@@ -18,11 +19,13 @@
             v-model="queryForm.planType"
             clearable
           >
-            <el-option label="鏁欒偛" value="JIAOYU"></el-option>
-            <el-option label="鍏」" value="BAXIANG"></el-option>
-            <el-option label="鍏朵粬" value="QITA"></el-option>
-            <el-option label="绉戠爺" value="KEYAN"></el-option>
-            <el-option label="鏁欏" value="JIAOWEI"></el-option>
+            <el-option label="鏁欒偛浜嬩笟鏀跺叆" value="JIAOYU"></el-option>
+            <el-option label="鍏」鏀跺叆" value="BAXIANG"></el-option>
+            <el-option label="鍏朵粬鏀跺叆" value="QITA"></el-option>
+            <el-option label="绉戠爺浜嬩笟鏀跺叆" value="KEYAN"></el-option>
+            <el-option label="鏁欏涓撻」鏀跺叆" value="JIAOWEI"></el-option>
+            <el-option label="璐㈡斂鎷ㄦ-鐢熷潎鎷ㄦ" value="SHENGJUN"></el-option>
+            <el-option label="璐㈡斂鎷ㄦ-鍐呮兜寤鸿" value="NEIHAN"></el-option>
           </el-select>
         </el-col>
         <el-col :span="6" v-if="showStateInput">
diff --git a/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue b/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue
index 28ebf306480f43b0c72afd38bd0729912f697cd1..175b7fa5b8068e6dc2778b2723d254378715e4d6 100644
--- a/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue
+++ b/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue
@@ -4,6 +4,7 @@
       <el-row :gutter="20">
         <el-col :span="6">
           <el-date-picker
+          :editable="false"
             v-model="queryForm.year"
             type="year"
             placeholder="閫夋嫨鏃ユ湡"
diff --git a/WebSite/src/views/yo-common/PeopleFundApply/index.vue b/WebSite/src/views/yo-common/PeopleFundApply/index.vue
index fc7f534095f26056f3a21dc5eedfa99435ab23e2..19fb537ab565fddc5f4ee26c2704388f85079d5f 100644
--- a/WebSite/src/views/yo-common/PeopleFundApply/index.vue
+++ b/WebSite/src/views/yo-common/PeopleFundApply/index.vue
@@ -178,7 +178,11 @@ export default {
       ]);
     };
     const handleSubmit = flowOutput => {
-      context.emit('handleSubmit', flowOutput, props.row[0].id);
+      context.emit('handleSubmit', flowOutput, props.row[0].id, [
+        data.personSubjectList,
+        data.deptName,
+        props.row
+      ]);
     };
     const handleReturn = flowOutput => {
       context.emit('handleReturn', flowOutput, props.row[0].id);
diff --git a/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue b/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue
index 50b4287d2d857284f831b0a88cb03e2deec49b60..5ba7542f3b34eff56ca4e2b709962e96c551561b 100644
--- a/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue
+++ b/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue
@@ -68,6 +68,13 @@ export default {
         nodeIds: [flowOutput.nodeIds],
         remake: flowOutput.remake
       };
+      // const newApplyInfo = JSON.parse(JSON.stringify(applyInfo));
+      // newApplyInfo.summaryJson = JSON.stringify(newApplyInfo.summaryJson);
+
+      // newApplyInfo.planType = newApplyInfo.planType
+      //   ? newApplyInfo.planType
+      //   : props.planType;
+      // await Api.saveProjectFundApply(newApplyInfo);
       await Api.submitPlan(params);
       handleBack();
     };
diff --git a/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue b/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue
index c3ca3d81f0c4bbf692cfee62280587c26175e9fe..3e932ffd63815454eb3b3288f5df6621fca24981 100644
--- a/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue
+++ b/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue
@@ -7,6 +7,8 @@
         </el-col>
         <el-col :span="6">
           <el-select
+            clearable
+            filterable
             v-model="queryForm.departmentName"
             placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
           >
@@ -20,6 +22,7 @@
         </el-col>
         <el-col :span="6">
           <el-input
+            clearable
             v-model="queryForm.projectType"
             placeholder="璇疯緭鍏ラ」鐩被鍨�"
           ></el-input>
@@ -27,6 +30,7 @@
         <!-- v-if="showDepartment" -->
         <el-col :span="6">
           <el-input
+            clearable
             v-model="queryForm.projectName"
             placeholder="璇疯緭鍏ラ」鐩悕绉�"
           ></el-input>
@@ -34,11 +38,16 @@
       </el-row>
       <el-row :gutter="20" class="mtop20">
         <el-col :span="6">
-          <el-select v-model="queryForm.state" placeholder="璇疯緭鍏ュ鏍哥姸鎬�">
+          <el-select
+            clearable
+            v-model="queryForm.state"
+            placeholder="璇疯緭鍏ュ鏍哥姸鎬�"
+          >
             <el-option label="寰呮彁浜�" value="寰呮彁浜�"></el-option>
             <el-option label="閮ㄩ棬棰嗗瀹℃壒" value="閮ㄩ棬棰嗗瀹℃壒"></el-option>
-            <el-option label="褰掑彛閮ㄩ棬瀹℃壒" value="褰掑彛閮ㄩ棬瀹℃壒"></el-option>
-            <el-option label="璐㈠姟澶勫鎵�" value="璐㈠姟澶勫鎵�"></el-option>
+            <el-option label="褰掑彛閮ㄩ棬瀹℃牳" value="褰掑彛閮ㄩ棬瀹℃牳"></el-option>
+            <el-option label="璐㈠姟澶勭‘璁�" value="璐㈠姟澶勭‘璁�"></el-option>
+            <el-option label="瀹℃牳瀹屾垚" value="瀹℃牳瀹屾垚"></el-option>
           </el-select>
         </el-col>
         <el-col :span="3">
@@ -51,8 +60,8 @@
       <template #header>
         <el-row type="flex" justify="start">
           <div>
-            <el-button disabled plain type="primary" @click="batchSubmitHandler"
-              >鎵归噺閫氳繃</el-button
+            <el-button plain type="primary" @click="batchSubmitHandler"
+              >鎵归噺鎻愪氦鑷冲畬鎴�</el-button
             >
             <el-button disabled plain type="warning" @click="batchRejectHandler"
               >鎵归噺椹冲洖</el-button
@@ -86,11 +95,12 @@
 <script>
 import PageQuery from '@/components/PageQuery';
 import { reactive, toRefs, watch, onMounted } from 'vue';
-import { ElMessage } from 'element-plus';
+import { ElMessage, ElMessageBox } from 'element-plus';
 import ProjectLibrary from '@/api/projectLibrary';
 import { useRoute } from 'vue-router';
 import Storage from '@/utils/Storage';
 import { moneyFormat } from '@/utils';
+
 export default {
   props: {
     planType: {
@@ -113,6 +123,7 @@ export default {
     const data = reactive({
       tableData: [],
       deptList: [],
+      idList: [],
       pageNO: Storage.getSession('PROJECT_QUERY_FORM')?.pageIndex || 1,
       pageSize: Storage.getSession('PROJECT_QUERY_FORM')?.pageSize || 10,
       total: 0,
@@ -170,8 +181,32 @@ export default {
       );
       // http://bi.sumhs.edu.cn/WebReport/ReportServer?reportlet=ProjectPlan%2FprojectplanExport.cpt&id=1435865032658386946
     };
-    const batchSubmitHandler = () => {
-      ElMessage.success('鎻愪氦鎴愬姛');
+    const batchSubmitHandler = async () => {
+      console.log(data.selectedList, '0000');
+      data.selectedList.forEach(item => {
+        data.idList.push(item.id);
+      });
+      ElMessageBox.confirm(
+        '鏄惁灏嗘墍閫夐」鐩粠鈥滆储鍔″纭鈥濇彁浜よ嚦鈥滃鏍稿畬鎴愨€濊妭鐐�?',
+        '鎻愮ず',
+        {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }
+      )
+        .then(async () => {
+          await ProjectLibrary.submitProjectPlanListToFinish(data.idList);
+          await getPageList();
+          data.idList = [];
+          ElMessage.success('鎻愪氦鎴愬姛');
+        })
+        .catch(() => {
+          ElMessage({
+            type: 'info',
+            message: '鎻愪氦宸插彇娑�'
+          });
+        });
     };
     const batchRejectHandler = () => {
       ElMessage.success('椹冲洖鎴愬姛');
diff --git a/WebSite/src/views/yo-common/ProjectFundApply/jk.vue b/WebSite/src/views/yo-common/ProjectFundApply/jk.vue
index fa06b6b2a0636ca4c10bbaef4a32836be710ca25..5462c4c9f8dcb087c23dcdec79c100f31c982dfd 100644
--- a/WebSite/src/views/yo-common/ProjectFundApply/jk.vue
+++ b/WebSite/src/views/yo-common/ProjectFundApply/jk.vue
@@ -41,6 +41,7 @@
       </el-steps>
     </div>
     <div
+      v-if="flowstaus"
       id="flowWrap"
       style="position: absolute;
       left: 0px;
@@ -126,7 +127,7 @@
                 <!-- <el-input v-model="applyInfo.projectLeaderName" placeholder="璇疯緭鍏ヨ礋璐d汉"></el-input> -->
               </el-form-item>
             </el-col>
-            <el-col :xs="8" :sm="8" :md="8" :lg="8">
+            <!-- <el-col :xs="8" :sm="8" :md="8" :lg="8">
               <el-form-item label="寤鸿閲戦锛�">
                 <InputNumber
                   disabled
@@ -134,7 +135,7 @@
                   placeholder="璇疯緭鍏ュ缓璁噾棰�"
                 ></InputNumber>
               </el-form-item>
-            </el-col>
+            </el-col> -->
           </el-row>
         </el-card>
 
@@ -718,6 +719,10 @@ export default {
       type: Boolean,
       required: true
     },
+    flowstaus: {
+      type: Boolean,
+      default: true
+    },
     row: {
       type: Object,
       default: () => {
@@ -892,9 +897,9 @@ export default {
     const getApplyDept = async () => {
       const res = await Api.pfApplyDept();
       baseinfoData.applyDept = res.data;
-      if (res.data && res.data.length > 0) {
-        data.applyInfo.departmentCode = baseinfoData.applyDept[0].code;
-      }
+      // if (res.data && res.data.length > 0) {
+      //   data.applyInfo.departmentCode = baseinfoData.applyDept[0].code;
+      // }
     };
     const getProjectType = async () => {
       const res = await Api.projectFundProjectType({
diff --git a/WebSite/src/views/yo-common/ProjectFundApply/lg.vue b/WebSite/src/views/yo-common/ProjectFundApply/lg.vue
index d81e02ec580957bb7bcc9725ae290bbc705ec585..7a3c1384f6252e11b63dda7d276284d8ba5ae8bb 100644
--- a/WebSite/src/views/yo-common/ProjectFundApply/lg.vue
+++ b/WebSite/src/views/yo-common/ProjectFundApply/lg.vue
@@ -1012,9 +1012,9 @@ export default {
     const getApplyDept = async () => {
       const res = await Api.pfApplyDept();
       baseinfoData.applyDept = res.data;
-      if (res.data && res.data.length > 0) {
-        data.applyInfo.departmentCode = baseinfoData.applyDept[0].code;
-      }
+      // if (res.data && res.data.length > 0) {
+      //   data.applyInfo.departmentCode = baseinfoData.applyDept[0].code;
+      // }
     };
     const getProjectType = async () => {
       const res = await Api.projectFundProjectType({
diff --git a/WebSite/src/views/yo-common/ProjectFundApply/sd.vue b/WebSite/src/views/yo-common/ProjectFundApply/sd.vue
index 6b008731e7a561d5a6ea4ff47d0080d2e7b8d75c..0d655129e1bf9d464a47a2e182c6714509d74188 100644
--- a/WebSite/src/views/yo-common/ProjectFundApply/sd.vue
+++ b/WebSite/src/views/yo-common/ProjectFundApply/sd.vue
@@ -898,9 +898,9 @@ export default {
     const getApplyDept = async () => {
       const res = await Api.pfApplyDept();
       baseinfoData.applyDept = res.data;
-      if (res.data && res.data.length > 0) {
-        data.applyInfo.departmentCode = baseinfoData.applyDept[0].code;
-      }
+      // if (res.data && res.data.length > 0) {
+      //   data.applyInfo.departmentCode = baseinfoData.applyDept[0].code;
+      // }
     };
     const getProjectType = async () => {
       const res = await Api.projectFundProjectType({
diff --git a/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue b/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue
index 648c4df4e5f0ce1110aa33cb7739ad6ded011c20..11e71c7d05038c58bbb1151fed87d57e7c3edf6e 100644
--- a/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue
+++ b/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue
@@ -122,6 +122,28 @@ export default {
       }
     };
     const handleSubmit = async (flowOutput, applyInfo) => {
+      const newApplyInfo=JSON.parse(JSON.stringify(applyInfo));
+      newApplyInfo.summaryJson = JSON.stringify(newApplyInfo.summaryJson);
+      newApplyInfo.note = JSON.stringify(newApplyInfo.note);
+      
+     
+    
+      newApplyInfo.planSubjectList.forEach(item => {
+        item.otherJson = JSON.stringify(item.otherJson);
+        if (item.subjectDetailList.length <= 0) {
+          item.subjectDetailList = null;
+        } else {
+          item.subjectDetailList.forEach(jtem => {
+            jtem.otherJson = JSON.stringify(jtem.otherJson);
+          });
+        }
+      });
+      // applyInfo.planType = applyInfo.planType
+      //   ? applyInfo.planType
+      //   : props.planType;
+      // const newApplyInfo = JSON.parse(JSON.stringify(applyInfo));
+      // newApplyInfo.note = JSON.stringify(newApplyInfo.note);
+      await Api.savePublicFundApply(newApplyInfo);
       console.log(flowOutput, applyInfo);
       const params = {
         id: applyInfo.id,
diff --git a/WebSite/src/views/yo-common/PublicApplyPageList/index.vue b/WebSite/src/views/yo-common/PublicApplyPageList/index.vue
index dd9dcc3223de3ab054402234be35c7623d1fd91b..644d579f02082a5f7e45124e4f26ecb7581a3020 100644
--- a/WebSite/src/views/yo-common/PublicApplyPageList/index.vue
+++ b/WebSite/src/views/yo-common/PublicApplyPageList/index.vue
@@ -4,6 +4,7 @@
       <el-row :gutter="20">
         <el-col :span="6">
           <el-date-picker
+          :editable="false"
             v-model="queryForm.year"
             type="year"
             placeholder="閫夋嫨鏃ユ湡"
diff --git a/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue b/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue
index 1f743228190058866787a3dfc93642407b0d2f80..437aa62765c57bad8c46531599df9abb98ac915b 100644
--- a/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue
+++ b/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue
@@ -18,7 +18,7 @@
 import PageList from './components/PageList.vue';
 import { reactive, toRefs } from 'vue';
 export default {
-  components: { PageList},
+  components: { PageList },
   setup() {
     const data = reactive({
       activeTab: 'first'
diff --git a/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue
index c2bc7a994fd1d102a0f18075a6c0b014d349073e..b7cfb4ab27124eac32e31ef4daa43e4218f2b016 100644
--- a/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue
+++ b/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue
@@ -42,7 +42,7 @@ export default {
       context.emit('switch-page', 'List');
     };
     const handleSave = (obj, id) => {
-      console.log('obj.model', obj.model.deptNO);
+      console.log('obj.model', obj);
       if (obj.incomeType == 'JIAOYU') {
         let arr = [];
         obj.model.tableData.forEach(item => {
@@ -117,7 +117,8 @@ export default {
         });
       }
     };
-    const handleSubmit = (flowOutput, id) => {
+    const handleSubmit = async (flowOutput, id, obj) => {
+      await handleSave(obj, id);
       Api.submitIncome({
         id: id,
         nodeIds: [flowOutput.nodeIds],
@@ -130,6 +131,7 @@ export default {
         handleBack();
       });
     };
+
     const handleReturn = (flowOutput, id) => {
       Api.rollBackInComePlan({
         id: id,
diff --git a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue
index f8030b347309c6deec3f6b8760800756cd098b56..2f8c0af1540acc6efe26027078de89d3dd644ed0 100644
--- a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue
+++ b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue
@@ -118,7 +118,7 @@ export default {
         departmentName: handleSave[1].split('|')[1],
         departmentCode: handleSave[1].split('|')[0],
         projectLeaderCode: '',
-        planType: 'XIANGMUKU',
+        planType: 'YISHANG',
         projectLeaderId: 0, //璐熻矗浜篿d
         projectLeaderName: '', //璐熻矗浜哄悕绉�
         year: sessionStorage.getItem('year'),
@@ -129,12 +129,13 @@ export default {
         getPersonDetail(res.data[0]);
       });
     };
-    const handleSubmit = (flowOutput, id) => {
+    const handleSubmit = async (flowOutput, id, handleSave) => {
+      await handleSave(handleSave);
       Api.submit({
         id: id,
         nodeIds: [flowOutput.nodeIds],
         remake: flowOutput.remake
-      }).then(() => {
+      }).then(() => { 
         Message.success('鎻愪氦鎴愬姛');
         handleBack();
       });
diff --git a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue
index 605f7a97e4222a209b5d3af102823c93c7ce93f0..78d113bfe2ef50e6c2ccd3aa43d5b627b6f20a6c 100644
--- a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue
+++ b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue
@@ -95,8 +95,8 @@ export default {
       Api.getPersonList({
         pageIndex: data.pageNO,
         pageSize: data.pageSize,
-        year: data.year
-        // planType: 'YISHANG'
+        year: data.year,
+        planType: 'YISHANG'
       }).then(res => {
         data.tableData = res.data;
         data.tableData.forEach(
diff --git a/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue
index a39a8aca7e48c42fc59e1177c4342e4920a8a33a..2d7df9b716138553c44b60518358c22d579a058c 100644
--- a/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue
+++ b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue
@@ -15,7 +15,7 @@
 <script>
 import List from '@/views/yo-dept-bz/first/ProjectFundApply/components/List';
 // import Detail from '@/views/yo-dept-bz/first/ProjectFundApply/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue
index 646a6698e236b81178c206de740a9fae2622af80..97073ba85c4afce9a5b4e1ac78bbc4134d748534 100644
--- a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue
+++ b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue
@@ -104,7 +104,7 @@ export default {
         data.applyInfo = res.data[0];
       });
     };
-    const handleSave = (applyInfo) => {
+    const handleSave = applyInfo => {
       console.log(applyInfo);
     };
     const handleSubmit = () => {};
diff --git a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue
index 72f2ff1d628e035811727d2c59d114b4634a2ef9..d1ec06de8d487e30aa6f22b2ee961ac2b4bdd632 100644
--- a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue
+++ b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue
@@ -15,7 +15,7 @@
 <script>
 import List from '@/views/yo-dept-bz/first/PuplicFundApply/components/List';
 // import Detail from '@/views/yo-dept-bz/first/PuplicFundApply/components/Detail';
-import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-bz/quota/daily/index.vue b/WebSite/src/views/yo-dept-bz/quota/daily/index.vue
index 9d943c95696ea2c48c31e453275ef94599dd1ab8..4ac00a3c356eb4163bc76a79b7c64181b6c36c39 100644
--- a/WebSite/src/views/yo-dept-bz/quota/daily/index.vue
+++ b/WebSite/src/views/yo-dept-bz/quota/daily/index.vue
@@ -4,6 +4,7 @@
       <el-row :gutter="10">
         <el-col :span="6">
           <el-date-picker
+          :editable="false"
             v-model="checkInfo.year"
             type="year"
             @change="setTime"
@@ -12,10 +13,19 @@
           </el-date-picker>
         </el-col>
         <el-col :span="6">
-          <el-input
-            placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+          <el-select
+            clearable
+            filterable
             v-model="checkInfo.deptName"
-          ></el-input>
+            placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+          >
+            <el-option
+              v-for="(v, index) in deptList"
+              :key="index"
+              :label="v.name"
+              :value="v.name"
+            ></el-option>
+          </el-select>
         </el-col>
       </el-row>
       <el-row class="mtop20">
@@ -35,7 +45,12 @@
         <el-table-column label="骞翠唤" prop="year" />
         <el-table-column label="閮ㄩ棬鍚嶇О" prop="deptName" />
         <el-table-column label="閮ㄩ棬缂栧彿" prop="deptCode" />
-        <el-table-column label="涓€涓婄敵鎶ラ噾棰�" prop="amountDeclared" />
+        <el-table-column
+          label="涓€涓婄敵鎶ラ噾棰�"
+          prop="amountDeclared"
+          header-align="left"
+          align="right"
+        />
         <el-table-column label="閮ㄩ棬鏍稿畾鏁�" prop="quotaMoney">
           <template #default="scope">
             <el-input
@@ -61,12 +76,15 @@ import { reactive, toRefs, onMounted } from 'vue';
 import { ElMessage } from 'element-plus';
 import ProjectLibrary from '@/api/projectLibrary';
 import Moment from 'moment';
+import { moneyFormat } from '@/utils';
 export default {
   setup() {
     onMounted(() => {
       getQueryUserByPage();
+      queryDeptPage();
     });
     const state = reactive({
+      deptList: [],
       checkInfo: {
         pageIndex: 1,
         pageSize: 10,
@@ -87,9 +105,19 @@ export default {
     const getQueryUserByPage = () => {
       ProjectLibrary.queryDeptQuotaDailyPage(state.checkInfo).then(res => {
         state.departInfo.tableData = res.data;
+        state.departInfo.tableData.forEach(v => {
+          v.amountDeclared = moneyFormat(v.amountDeclared, 2, ',');
+        });
         state.departInfo.total = res.total;
       });
     };
+    const queryDeptPage = () => {
+      ProjectLibrary.queryDeptPage({ pageIndex: 1, pageSize: 9999 }).then(
+        res => {
+          state.deptList = res.data;
+        }
+      );
+    };
     const handleEdit = row => {
       ProjectLibrary.saveProjectDeptMoney({
         id: row.id,
@@ -114,7 +142,8 @@ export default {
       getQueryUserByPageFirst,
       handleEdit,
       setTime,
-      getQueryUserByPage
+      getQueryUserByPage,
+      queryDeptPage
     };
   }
 };
diff --git a/WebSite/src/views/yo-dept-bz/quota/dept/index.vue b/WebSite/src/views/yo-dept-bz/quota/dept/index.vue
index c3cdf01b8ab8b524c08af44b52289d594ee82a33..18eab0bd476894b2bf60274cdffef19a60a5f569 100644
--- a/WebSite/src/views/yo-dept-bz/quota/dept/index.vue
+++ b/WebSite/src/views/yo-dept-bz/quota/dept/index.vue
@@ -4,6 +4,7 @@
       <el-row :gutter="10">
         <el-col :span="6">
           <el-date-picker
+          :editable="false"
             v-model="checkInfo.year"
             @change="setTime"
             type="year"
@@ -12,10 +13,19 @@
           </el-date-picker>
         </el-col>
         <el-col :span="6">
-          <el-input
-            placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+          <el-select
+            clearable
+            filterable
             v-model="checkInfo.deptName"
-          ></el-input>
+            placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+          >
+            <el-option
+              v-for="(v, index) in deptList"
+              :key="index"
+              :label="v.name"
+              :value="v.name"
+            ></el-option>
+          </el-select>
         </el-col>
       </el-row>
       <el-row class="mtop20">
@@ -41,6 +51,8 @@
           label="涓€涓婄敵鎶ラ噾棰�"
           prop="amountDeclared"
           width="150"
+          header-align="left"
+          align="right"
         />
         <el-table-column label="閮ㄩ棬鏍稿畾鏁�" prop="quotaMoney">
           <template #default="scope">
@@ -68,12 +80,15 @@ import { reactive, toRefs, onMounted } from 'vue';
 import { ElMessage } from 'element-plus';
 import ProjectLibrary from '@/api/projectLibrary';
 import Moment from 'moment';
+import { moneyFormat } from '@/utils';
 export default {
   setup() {
     onMounted(() => {
       getQueryUserByPage();
+      queryDeptPage();
     });
     const state = reactive({
+      deptList: [],
       checkInfo: {
         pageIndex: 1,
         pageSize: 10,
@@ -90,14 +105,19 @@ export default {
       state.checkInfo.pageIndex = 1;
       getQueryUserByPage();
     };
+    const queryDeptPage = () => {
+      ProjectLibrary.queryDeptPage({ pageIndex: 1, pageSize: 9999 }).then(
+        res => {
+          state.deptList = res.data;
+        }
+      );
+    };
     const getQueryUserByPage = () => {
       ProjectLibrary.queryDeptQuotaProjectPage(state.checkInfo).then(res => {
         console.log('res', res);
         state.departInfo.tableData = res.data;
         state.departInfo.tableData.forEach(v => {
-          if (v.amountDeclared === 0) {
-            v.amountDeclared = '0.00';
-          }
+          v.amountDeclared = moneyFormat(v.amountDeclared, 2, ',');
         });
         state.departInfo.total = res.total;
       });
@@ -132,7 +152,8 @@ export default {
       handleEdit,
       init,
       setTime,
-      getQueryUserByPage
+      getQueryUserByPage,
+      queryDeptPage
     };
   }
 };
diff --git a/WebSite/src/views/yo-dept-bz/quota/project/index.vue b/WebSite/src/views/yo-dept-bz/quota/project/index.vue
index 06ad6fab402813cb59f128c4fb846ccc80c77936..1da8852db112293b2355f0609a9d802e4ecf63b0 100644
--- a/WebSite/src/views/yo-dept-bz/quota/project/index.vue
+++ b/WebSite/src/views/yo-dept-bz/quota/project/index.vue
@@ -4,6 +4,7 @@
       <el-row :gutter="10">
         <el-col :span="6">
           <el-date-picker
+            :editable="false"
             @change="setTime"
             v-model="checkInfo.year"
             type="year"
@@ -12,26 +13,40 @@
           </el-date-picker>
         </el-col>
         <el-col :span="6">
-          <el-input
+          <el-select
+            clearable
+            filterable
+            v-model="checkInfo.deptName"
             placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+          >
+            <el-option
+              v-for="(v, index) in deptList"
+              :key="index"
+              :label="v.name"
+              :value="v.name"
+            ></el-option>
+          </el-select>
+          <!-- <el-input
+            placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�1"
             v-model="checkInfo.deptName"
-          ></el-input>
+          ></el-input> -->
         </el-col>
         <el-col :span="6">
           <el-input
             placeholder="涓€绾ч」鐩悕绉�"
-            v-model="checkInfo.one"
+            v-model="checkInfo.projectTypeName"
           ></el-input>
         </el-col>
         <el-col :span="6">
           <el-input
             placeholder="浜岀骇椤圭洰鍚嶇О"
-            v-model="checkInfo.two"
+            v-model="checkInfo.projectName"
           ></el-input>
         </el-col>
       </el-row>
       <el-row class="mtop20">
         <el-button type="primary" plain @click="init">鍒濆鍖栭」鐩�</el-button>
+        <el-button type="primary" plain @click="batch">鎵归噺杩涘叆涓€涓�</el-button>
         <el-button @click="getQueryUserByPageFirst">鏌ヨ</el-button>
       </el-row>
     </el-card>
@@ -49,8 +64,14 @@
         <el-table-column label="閮ㄩ棬缂栧彿" prop="deptCode" />
         <el-table-column label="涓€绾ч」鐩�" prop="projectTypeName" />
         <el-table-column label="浜岀骇椤圭洰" prop="projectName" />
-        <el-table-column label="涓€涓婄敵鎶ラ噾棰�" prop="amountDeclared" />
-        <el-table-column label="閮ㄩ棬鏍稿畾鏁�" prop="quotaMoney">
+        <el-table-column
+          label="涓€涓婄敵鎶ラ噾棰�"
+          prop="amountDeclared"
+          width="150"
+          header-align="left"
+          align="right"
+        />
+        <el-table-column label="椤圭洰鏍稿畾鏁�" prop="quotaMoney">
           <template #default="scope">
             <el-input
               v-model="scope.row.quotaMoney"
@@ -75,12 +96,15 @@ import { reactive, toRefs, onMounted } from 'vue';
 import { ElMessage } from 'element-plus';
 import ProjectLibrary from '@/api/projectLibrary';
 import Moment from 'moment';
+import { moneyFormat } from '@/utils';
 export default {
   setup() {
     onMounted(() => {
       getQueryUserByPage();
+      queryDeptPage();
     });
     const state = reactive({
+      deptList: [],
       checkInfo: {
         pageIndex: 1,
         pageSize: 10,
@@ -101,15 +125,30 @@ export default {
     const getQueryUserByPage = () => {
       ProjectLibrary.queryProjectQuotaPage(state.checkInfo).then(res => {
         state.departInfo.tableData = res.data;
+        state.departInfo.tableData.forEach(v => {
+          v.amountDeclared = moneyFormat(v.amountDeclared, 2, ',');
+        });
         state.departInfo.total = res.total;
       });
     };
+    const queryDeptPage = () => {
+      ProjectLibrary.queryDeptPage({ pageIndex: 1, pageSize: 9999 }).then(
+        res => {
+          state.deptList = res.data;
+        }
+      );
+    };
     const init = () => {
       ProjectLibrary.initProject({}).then(() => {
         ElMessage.success('鍒濆鍖栨垚鍔�');
         getQueryUserByPage();
       });
     };
+    const batch = () => {
+      ProjectLibrary.enterAllProjectPlanType1({}).then(() => {
+        ElMessage.success('鎵归噺鍚屾鎴愬姛');
+      });
+    };
     const handleEdit = row => {
       ProjectLibrary.saveProjectDeptMoney({
         id: row.id,
@@ -128,7 +167,9 @@ export default {
       init,
       setTime,
       getQueryUserByPageFirst,
-      getQueryUserByPage
+      getQueryUserByPage,
+      queryDeptPage,
+      batch
     };
   }
 };
diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/Detail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9a74c8e9c3724b834463e779f2aef54f73e97843
--- /dev/null
+++ b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/Detail.vue
@@ -0,0 +1,173 @@
+<template>
+  <div>
+    <PeopleFundApply
+      :canEdit="canEdit"
+      :row="applyInfo"
+      :flowInfo="flowInfo"
+      @handleBack="handleBack"
+      @handleSave="handleSave"
+      @handleSubmit="handleSubmit"
+      @handleReturn="handleReturn"
+      @handleCancel="handleCancel"
+    />
+  </div>
+</template>
+
+<script>
+import { onMounted, reactive, toRefs } from 'vue';
+import Api from '@/api';
+import Message from 'element-plus/lib/el-message';
+import { ElMessage } from 'element-plus';
+import ProjectLibrary from '@/api/projectLibrary';
+export default {
+  props: {
+    canEdit: {
+      type: Boolean,
+      required: true
+    },
+    row: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  setup(props, context) {
+    onMounted(() => {
+      if (props.row.id) {
+        getPersonDetail(props.row.id);
+      } else {
+        console.log('鏂板');
+      }
+    });
+    const data = reactive({
+      flowInfo: {
+        nextSubmitNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        canRejectNodes: [
+          {
+            key: '1599725907064',
+            value: '绉戠爺澶勫鏍�'
+          }
+        ],
+        user: '绯荤粺绠$悊鍛�',
+        state: '璐熻矗浜鸿ˉ鍏�',
+        flow: [
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:30:43',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '寮€濮�',
+            endNodeName: '绉戠爺澶勭珛椤�',
+            flowState: '娴佺▼寮€濮�',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          },
+          {
+            actionTime: '2020骞�9鏈�11鏃�',
+            time: '17:31:00',
+            icon: '',
+            flowName: '绔嬮」',
+            attitude: '',
+            auditor: '绯荤粺绠$悊鍛�',
+            startNodeName: '绉戠爺澶勭珛椤�',
+            endNodeName: '璐熻矗浜鸿ˉ鍏�',
+            flowState: '鎻愪氦',
+            isPassed: 'False',
+            systemID: '00000000-0000-0000-0000-000000000000',
+            isEnable: false
+          }
+        ],
+        btnStates: {
+          isShowSave: true,
+          isShowSubmit: true,
+          isShowReject: true,
+          isShowRevoke: false,
+          isShowChart: true,
+          isShowHistory: true,
+          isShowUser: true,
+          isShowState: true,
+          isShowCancel: false
+        }
+      },
+      applyInfo: {}
+    });
+    const getPersonDetail = id => {
+      Api.getPersonDetail(id).then(res => {
+        data.applyInfo = res.data;
+      });
+    };
+    const handleBack = () => {
+      context.emit('switch-page', 'List');
+    };
+    const handleSave = handleSave => {
+      handleSave[0].forEach(item => {
+        item.personSubjectName = item.personFundName;
+      });
+      Api.savePerson({
+        projectName: '浜哄憳缁忚垂',
+        id: handleSave[2][0] ? handleSave[2][0].id : '',
+        departmentName: handleSave[1].split('|')[1],
+        departmentCode: handleSave[1].split('|')[0],
+        projectLeaderCode: '',
+        planType: 'ERSHANG',
+        projectLeaderId: 0, //璐熻矗浜篿d
+        projectLeaderName: '', //璐熻矗浜哄悕绉�
+        year: sessionStorage.getItem('year'),
+        personSubjectList: handleSave[0]
+      }).then(res => {
+        Message.success('淇濆瓨鎴愬姛');
+        console.log('1234', res.data[0]);
+        getPersonDetail(res.data[0]);
+      });
+    };
+    const handleSubmit = (flowOutput, id) => {
+      Api.submit({
+        id: id,
+        nodeIds: [flowOutput.nodeIds],
+        remake: flowOutput.remake
+      }).then(() => {
+        Message.success('鎻愪氦鎴愬姛');
+        handleBack();
+      });
+    };
+    const handleCancel = () => {
+      ProjectLibrary.reCallProjectPlan(props.row.id).then(() => {
+        ElMessage.success('鍥炴挙鎴愬姛');
+        if (props.row.id) {
+          getPersonDetail(props.row.id);
+        }
+      });
+    };
+    const handleReturn = (flowOutput, id) => {
+      Api.cancel({
+        id: id,
+        nodeIds: [flowOutput.nodeIds],
+        remake: flowOutput.remake
+      }).then(() => {
+        Message.success('鎾ゅ洖鎴愬姛');
+        handleBack();
+      });
+    };
+    return {
+      ...toRefs(data),
+      handleBack,
+      getPersonDetail,
+      handleCancel,
+      handleSave,
+      handleSubmit,
+      handleReturn
+    };
+  }
+};
+</script>
+
+<style></style>
diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue
index de950a67c2f06755c49d9900e7a1120044eeebd2..4ca16ec38293f57d74a3779391b48537f420293e 100644
--- a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue
+++ b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue
@@ -23,6 +23,9 @@
               v-if="switch1 && switch2"
               >鏂板缓</el-button
             >
+              <!-- <el-button plain type="primary" @click="connet()"
+              >鍚屾涓€涓�</el-button
+            > -->
             <el-button plain type="primary" disabled>鎵归噺鎻愪氦</el-button>
             <el-button plain type="warning" disabled>鎵归噺鎾ゅ洖</el-button>
             <el-button plain type="danger" @click="deletePerson"
@@ -78,7 +81,6 @@ export default {
       selectedList: [],
       tableConfig: [
         { prop: 'year', label: '骞翠唤' },
-        { prop: 'projectType', label: '椤圭洰绫诲瀷' },
         { prop: 'projectName', label: '椤圭洰鍚嶇О' },
         { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' },
         { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' },
@@ -90,6 +92,12 @@ export default {
       ],
       primaryKey: 'id'
     });
+       const connet = () => {
+      ProjectLibrary.enterPersonProjectPlan({}).then(res => {
+        console.log(res);
+         getPersonList();
+      });
+    };
     const getPersonList = () => {
       Api.getPersonList({
         pageIndex: data.pageNO,
@@ -151,7 +159,8 @@ export default {
       navToDetail,
       pageInfoChange,
       createPeopleApply,
-      deletePerson
+      deletePerson,
+      connet
     };
   }
 };
diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue
index e902d5ac06aaf2791e058b75935c8524f4f9b1dd..cf21a58455da2ea869c87b575ec431d389223d92 100644
--- a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue
+++ b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue
@@ -13,7 +13,7 @@
 
 <script>
 import List from '@/views/yo-dept-bz/second/SecondPeopleFundApply/components/List';
-import Detail from '@/views/yo-dept-bz/first/PeopleFundApply/components/Detail';
+import Detail from '@/views/yo-dept-bz/second/SecondPeopleFundApply/components/Detail';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue
index 4a25e9dd6c19aa919156073f01df6bed68ab38a6..e002f41647e2befa9176dc800d103e90d3b28fb0 100644
--- a/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue
+++ b/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue
@@ -15,7 +15,7 @@
 <script>
 import List from '@/views/yo-dept-bz/second/SecondProjectFundApply/components/List';
 // import Detail from '@/views/yo-dept-bz/first/ProjectFundApply/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue
index 3c08909432606a25447923db0be733cb691ba12c..f5b1170d174d923c1fb35c8c1e01b9b01996c201 100644
--- a/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue
+++ b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue
@@ -28,6 +28,9 @@
               v-if="switch1 && switch2"
               >鏂板缓</el-button
             >
+            <el-button plain type="primary" @click="connet()"
+              >鍚屾涓€涓�</el-button
+            >
             <el-button plain type="primary" disabled>鎵归噺鎻愪氦</el-button>
             <el-button plain type="warning" disabled>鎵归噺鎾ゅ洖</el-button>
             <el-button plain type="danger" @click="deletePubliic">
@@ -44,7 +47,7 @@
         :tableData="tableData"
         :tableConfig="tableConfig"
         :primaryKey="primaryKey"
-        :selectedList="selectedList"
+        v-model:selectedList="selectedList"
         @pageinfo-change="pageInfoChange"
       >
         <template #tableColumn="{scope}">
@@ -119,12 +122,19 @@ export default {
         row
       );
     };
+    const connet = () => {
+      ProjectLibrary.enterPublicProjectPlan({}).then(res => {
+        console.log(res);
+        getPublicList();
+      });
+    };
     const pageInfoChange = val => {
       data.pageSize = val.limit;
       data.pageNO = val.page;
       getPublicList();
     };
     const deletePubliic = () => {
+      console.log(data.selectedList, '0000');
       let arr = [];
       data.selectedList.forEach(item => {
         arr.push(item.id);
@@ -157,7 +167,8 @@ export default {
       navToDetail,
       pageInfoChange,
       deletePubliic,
-      createPublicApply
+      createPublicApply,
+      connet
     };
   }
 };
diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue
index f9cecf56612e67c92c1b982e8cff7a9e8670e8bc..dcb66593e3975b5d8a0a150ae22615b09f0d5315 100644
--- a/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue
+++ b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue
@@ -15,7 +15,7 @@
 <script>
 import List from '@/views/yo-dept-bz/second/SecondPuplicFundApply/components/List';
 // import Detail from '@/views/yo-dept-bz/first/PuplicFundApply/components/Detail';
-import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/financial-monitoring/maintenance/index.vue b/WebSite/src/views/yo-dept-sp/financial-monitoring/maintenance/index.vue
index 842221a0d7a8157ff85cb800d2e680af0d9d73f2..69c81886b62b7860e082b399c9e06eef2b4f5d60 100644
--- a/WebSite/src/views/yo-dept-sp/financial-monitoring/maintenance/index.vue
+++ b/WebSite/src/views/yo-dept-sp/financial-monitoring/maintenance/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/financial-monitoring/maintenance/components/List';
 // import Detail from '@/views/yo-dept-sp/financial-monitoring/maintenance/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue
index 8a008c012ca0e707b3650644907285a500e436b4..51050a58729222619669d74facebce63d6f80f11 100644
--- a/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue
+++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue
@@ -40,7 +40,7 @@ export default {
     const getPageList = async (params, callback) => {
       const res = await Api.peopleGetPageList(params);
       callback(res);
-    }
+    };
     return {
       ...toRefs(data),
       navToDetail,
diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue
index 17925d8525cd4707ec196ec8276f4e462bdac723..bcbc4dfc76dbb61211fa2496a5d354b8c3986e7f 100644
--- a/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue
+++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue
@@ -38,9 +38,7 @@ export default {
       context.emit('switch-page', 'Detail', false, row);
     };
     const getPageList = async (params, callback) => {
-      const res = await Api.peopleGetPageList(
-        params
-      );
+      const res = await Api.peopleGetPageList(params);
       callback(res);
     };
     return {
diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue
index 970052e0eabafdaeddd79e83cda9ea6563f108a9..459a0fc5be0315b96dba83a3334246c806532503 100644
--- a/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue
index 5d1d3afaa7c429541189b2e89e4d1a79d27d89f9..fb4ad4162fa29343290bfeb41396a356866c4a33 100644
--- a/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue
index cd3b4783fc3ac0b7c0e2da90a891e4f79429c063..a3b4dbe7f4983dfdb3dc222d22d49d4229f6674e 100644
--- a/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue
index bc97f4709790269f10a727297d9005212afe99b1..f78601be6d42289c3866219c5840296c6531f66f 100644
--- a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue
+++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue
@@ -1,10 +1,6 @@
 <template>
   <div class="app-container">
-    <el-tabs
-      v-model="activeTab"
-      type="border-card"
-      stretch
-    >
+    <el-tabs v-model="activeTab" type="border-card" stretch>
       <el-tab-pane label="椤圭洰搴�" name="XIANGMUKU" lazy>
         <page-list
           :planType="activeTab"
@@ -48,9 +44,11 @@ export default {
       context.emit('switch-page', 'Detail', false, row);
     };
     const getPageList = async (params, callback) => {
-      const res = await Api.queryProjectInfoPlanPageByCurrentUserRelevantDept(params);
+      const res = await Api.queryProjectInfoPlanPageByCurrentUserRelevantDept(
+        params
+      );
       callback(res);
-    }
+    };
     return {
       ...toRefs(data),
       navToDetail,
diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue
index aed39baebcae676e7f7d5535a6bd3338c033e2f0..9e92f2be9049cdc99cf5a611fc2f4113e02e7cc3 100644
--- a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/Detail';
-import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue
index abfb0dde65da45a3bd21b758b676de3d03ddf738..67bccfdc3a9780899a76c83b1ee3cfe5d063ab3f 100644
--- a/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/Detail';
-import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue
index d9c3d3640596ab44aa61ce081024d425595a524a..b5d7f536fbd747728f55332a3a28aa53dd235983 100644
--- a/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/Detail';
-import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',
diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue
index d0787d6c66ec39401a235b8a7bb2a1bc15da199f..2e60a15d95a62443182184d696a351ef7e20e15a 100644
--- a/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue
+++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue
@@ -14,7 +14,7 @@
 <script>
 import List from '@/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/List';
 // import Detail from '@/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/Detail';
-import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue'
+import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue';
 import { reactive, toRefs } from 'vue';
 export default {
   name: 'ProjectCheck',