Просмотр исходного кода

新增项目生产力的成果汇交,编写全名变量userList,让其可以全局访问

余思翰 1 год назад
Родитель
Сommit
44e7a1e721

+ 1
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcProjectMapper.xml Просмотреть файл

@@ -88,7 +88,7 @@
88 88
             <if test="projectType != null  and projectType != ''"> and p.project_type = #{projectType}</if>
89 89
             <if test="projectLevel != null  and projectLevel != ''"> and p.project_level = #{projectLevel}</if>
90 90
             <if test="projectRegistrant != null "> and p.project_registrant = #{projectRegistrant}</if>
91
-            <if test="undertakingDept != null  and undertakingDept != ''"> and p.undertaking_dept = #{undertakingDept}</if>
91
+            <if test="undertakingDept != null  and undertakingDept != ''"> and p.undertaking_dept like concat('%', #{undertakingDept}, '%')</if>
92 92
             <if test="projectPlanner != null "> and p.project_planner = #{projectPlanner}</if>
93 93
             <if test="siteLeader != null "> and p.site_leader = #{siteLeader}</if>
94 94
             <if test="planTime != null "> and p.plan_time = #{planTime}</if>

+ 15
- 1
oa-ui/src/router/index.js Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-29 09:47:50
5
+ * @LastEditTime: 2024-05-31 17:03:36
6 6
  */
7 7
 /*
8 8
  * @Author: ysh
@@ -296,6 +296,20 @@ export const constantRoutes = [
296 296
       }
297 297
     ]
298 298
   },
299
+  {
300
+    path: '/applyForm/archive',
301
+    component: Layout,
302
+    hidden: true,
303
+    children: [
304
+      {
305
+        path: '',
306
+        component: () => import('@/views/flowable/task/todo/applyForm/archiIndex'),
307
+        name: 'archive',
308
+        meta: { title: '成果归档', icon: '' }
309
+
310
+      }
311
+    ]
312
+  },
299 313
   {
300 314
     path: '/project/info',
301 315
     component: Layout,

+ 10
- 2
oa-ui/src/store/modules/user.js Просмотреть файл

@@ -1,4 +1,5 @@
1 1
 import { login, logout, getInfo } from '@/api/login'
2
+import { listUser} from '@/api/system/user'
2 3
 import { getToken, setToken, removeToken } from '@/utils/auth'
3 4
 
4 5
 const user = {
@@ -10,7 +11,8 @@ const user = {
10 11
     deptId:'',
11 12
     deptName:'',
12 13
     roles: [],
13
-    permissions: []
14
+    permissions: [],
15
+    userList:[],
14 16
   },
15 17
 
16 18
   mutations: {
@@ -37,7 +39,10 @@ const user = {
37 39
     },
38 40
     SET_PERMISSIONS: (state, permissions) => {
39 41
       state.permissions = permissions
40
-    }
42
+    },
43
+    SET_USERLIST:(state, userList) => {
44
+      state.userList = userList
45
+    },
41 46
   },
42 47
 
43 48
   actions: {
@@ -75,6 +80,9 @@ const user = {
75 80
           commit('SET_DEPTID',user.deptId)
76 81
           commit('SET_DEPTNAME',user.dept.deptName)
77 82
           commit('SET_AVATAR', avatar)
83
+          listUser({pageNum:1,pageSize:9999}).then(result=>{
84
+            commit('SET_USERLIST', result.rows)
85
+          })
78 86
           resolve(res)
79 87
         }).catch(error => {
80 88
           reject(error)

+ 3
- 1
oa-ui/src/views/file/filesProject/achievement.vue Просмотреть файл

@@ -768,4 +768,6 @@ export default {
768 768
 }
769 769
 </script>
770 770
 
771
-<style lang="scss" scoped></style>
771
+<style lang="scss" scoped>
772
+@import "@/assets/styles/element-reset.scss";
773
+</style>

+ 5
- 1
oa-ui/src/views/file/filesProject/project.vue Просмотреть файл

@@ -43,7 +43,7 @@
43 43
         </el-table-column>
44 44
         <el-table-column prop="projectNumber" label="项目编号" align="center" />
45 45
         <el-table-column prop="projectName" label="项目名称" width="200px" align="center" />
46
-        <el-table-column prop="projectLeader" label="项目负责人" align="center" />
46
+        <el-table-column prop="projectLeaderUser.nickName" label="项目负责人" align="center" />
47 47
         <el-table-column prop="partyA" label="甲方单位" align="center" />
48 48
         <el-table-column prop="undertakingSector" label="承担部门" align="center" />
49 49
         <el-table-column prop="requiredCompletionDate" label="项目要求完成日期" align="center" />
@@ -818,6 +818,9 @@ export default {
818 818
     /** 修改按钮操作 */
819 819
     handleUpdate(row) {
820 820
       this.modifyForm = row;
821
+      let leaderObj = this.$store.state.user.userList.find(obj => obj.userId == row.projectLeader);
822
+      if(leaderObj)
823
+        this.modifyForm.projectLeader = leaderObj.nickName
821 824
       this.modifyOpen = true;
822 825
       this.position = [];
823 826
       this.kmlFileName = row.projectKml;
@@ -1206,6 +1209,7 @@ export default {
1206 1209
 </script>
1207 1210
 
1208 1211
 <style lang="scss" scoped>
1212
+@import "@/assets/styles/element-reset.scss";
1209 1213
 .centerBox {
1210 1214
   border: 1px dashed #bccfec;
1211 1215
   padding: 5px;

+ 22
- 14
oa-ui/src/views/flowable/form/archiveForm.vue Просмотреть файл

@@ -14,29 +14,29 @@
14 14
             </el-select> -->
15 15
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
16 16
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
17
-              }}</el-descriptions-item>
17
+                }}</el-descriptions-item>
18 18
               <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
19
-              }}</el-descriptions-item>
19
+                }}</el-descriptions-item>
20 20
               <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA
21
-              }}</el-descriptions-item>
21
+                }}</el-descriptions-item>
22 22
               <el-descriptions-item label="合同编码" label-class-name="my-label">{{ contractCode
23
-              }}</el-descriptions-item>
23
+                }}</el-descriptions-item>
24 24
               <el-descriptions-item label="承担部门" label-class-name="my-label">{{
25
-                chooseProject.undertakingDeptName
26
-              }}</el-descriptions-item>
25
+      chooseProject.undertakingDeptName
26
+    }}</el-descriptions-item>
27 27
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser
28
-                ? chooseProject.projectLeaderUser.nickName : ''
29
-              }}</el-descriptions-item>
28
+      ? chooseProject.projectLeaderUser.nickName : ''
29
+                }}</el-descriptions-item>
30 30
               <el-descriptions-item label="技术负责人" label-class-name="my-label">{{
31
-                chooseProject.technicalDirectorUser ? chooseProject.technicalDirectorUser.nickName :
32
-                '' }}</el-descriptions-item>
31
+      chooseProject.technicalDirectorUser ? chooseProject.technicalDirectorUser.nickName :
32
+        '' }}</el-descriptions-item>
33 33
               <el-descriptions-item label="质检审核员" label-class-name="my-label">{{
34
-                chooseProject.qualityInspectorUser ? chooseProject.qualityInspectorUser.nickName : ''
35
-              }}</el-descriptions-item>
34
+      chooseProject.qualityInspectorUser ? chooseProject.qualityInspectorUser.nickName : ''
35
+    }}</el-descriptions-item>
36 36
               <el-descriptions-item label="坐标经度" label-class-name="my-label">{{ chooseProject.kmlLng
37
-              }}</el-descriptions-item>
37
+                }}</el-descriptions-item>
38 38
               <el-descriptions-item label="坐标纬度" label-class-name="my-label">{{ chooseProject.kmlLat
39
-              }}</el-descriptions-item>
39
+                }}</el-descriptions-item>
40 40
             </el-descriptions>
41 41
           </el-form-item>
42 42
           <el-form-item label="归档状态">
@@ -267,6 +267,14 @@ export default {
267 267
   },
268 268
   mounted() {
269 269
     this.initForm();
270
+    if (this.$route.query.projectId) {
271
+      getProject(this.$route.query.projectId).then(res => {
272
+        if (res.data) {
273
+          this.$set(this.form, 'projectId', res.data.projectId)
274
+          this.handleSelectProject(res.data.projectId)
275
+        }
276
+      })
277
+    }
270 278
   },
271 279
   created() {
272 280
     if (this.taskName == '部门检查') {

+ 45
- 43
oa-ui/src/views/flowable/form/budget/budgetInfo.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-03 16:28:09
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-27 15:25:58
5
+ * @LastEditTime: 2024-05-31 15:35:26
6 6
 -->
7 7
 <template>
8 8
   <div class="main">
@@ -198,50 +198,52 @@ export default {
198 198
     initBudgetForm() {
199 199
       listBudget({ pageNum: 1, pageSize: 20, projectId: this.taskForm.formId }).then(res => {
200 200
         this.budgetForm = res.rows[0];
201
-        console.log(this.budgetForm);
202
-        listBudgetDevice({ budgetId: this.budgetForm.budgetId }).then(res => {
203
-          this.chooseDevice = res.rows;
204
-          this.deviceLen = res.rows.length + 1;
205
-        })
206
-        listBudgetStaff({ budgetId: this.budgetForm.budgetId }).then(res => {
207
-          this.chooseUser = res.rows;
208
-          this.userLen = res.rows.length + 1;
209
-          let days = 0;
210
-          for (let d of this.chooseUser) {
211
-            days = days + d.days
212
-          }
213
-          this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
214
-        })
215
-        listBudgetCar({ budgetId: this.budgetForm.budgetId }).then(res => {
216
-          this.chooseCar = res.rows;
217
-          this.carLen = res.rows.length + 1;
218
-        })
219
-        listBudgetSettle({ budgetId: this.budgetForm.budgetId }).then(res => {
220
-          this.workList = res.rows;
221
-          this.workLen = res.rows.length;
201
+        if (this.budgetForm) {
202
+          listBudgetDevice({ budgetId: this.budgetForm.budgetId }).then(res => {
203
+            this.chooseDevice = res.rows;
204
+            this.deviceLen = res.rows.length + 1;
205
+          })
206
+          listBudgetStaff({ budgetId: this.budgetForm.budgetId }).then(res => {
207
+            this.chooseUser = res.rows;
208
+            this.userLen = res.rows.length + 1;
209
+            let days = 0;
210
+            for (let d of this.chooseUser) {
211
+              days = days + d.days
212
+            }
213
+            this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
214
+          })
215
+          listBudgetCar({ budgetId: this.budgetForm.budgetId }).then(res => {
216
+            this.chooseCar = res.rows;
217
+            this.carLen = res.rows.length + 1;
218
+          })
219
+          listBudgetSettle({ budgetId: this.budgetForm.budgetId }).then(res => {
220
+            this.workList = res.rows;
221
+            this.workLen = res.rows.length;
222 222
 
223
-          for (let work of this.workList) {
224
-            if (work.groundType == '0') {
225
-              work.price = work.cmcPrice.commonPrice
226
-              work.scaleGrade = work.cmcPrice.scaleGrade
227
-              work.unit = work.cmcPrice.unit
228
-            } else {
229
-              work.price = work.cmcPrice.complexPrice
230
-              work.scaleGrade = work.cmcPrice.scaleGrade
231
-              work.unit = work.cmcPrice.unit
223
+            for (let work of this.workList) {
224
+              if (work.groundType == '0') {
225
+                work.price = work.cmcPrice.commonPrice
226
+                work.scaleGrade = work.cmcPrice.scaleGrade
227
+                work.unit = work.cmcPrice.unit
228
+              } else {
229
+                work.price = work.cmcPrice.complexPrice
230
+                work.scaleGrade = work.cmcPrice.scaleGrade
231
+                work.unit = work.cmcPrice.unit
232
+              }
233
+            }
234
+            this.getProjectWorkList();
235
+          })
236
+          listProjectContract({ projectId: this.taskForm.formId }).then(res => {
237
+            console.log(res);
238
+            if (res.total == 1) {
239
+              getContract(res.rows[0].contractId).then(response => {
240
+                this.contract = response.data;
241
+                this.profit = Number(this.contract.amount) - Number(this.budgetForm.totalBudget)
242
+              })
232 243
             }
233
-          }
234
-          this.getProjectWorkList();
235
-        })
236
-        listProjectContract({ projectId: this.taskForm.formId }).then(res => {
237
-          console.log(res);
238
-          if (res.total == 1) {
239
-            getContract(res.rows[0].contractId).then(response => {
240
-              this.contract = response.data;
241
-              this.profit = Number(this.contract.amount) - Number(this.budgetForm.totalBudget)
242
-            })
243
-          }
244
-        })
244
+          })
245
+        }
246
+
245 247
       });
246 248
     },
247 249
     getProjectWorkList() {

+ 159
- 0
oa-ui/src/views/flowable/form/inProgress/achiData.vue Просмотреть файл

@@ -0,0 +1,159 @@
1
+<template>
2
+  <div class="mt20">
3
+    <div class="nav-btn">
4
+      <div>
5
+        <el-button class="mb20" type="primary" plain size="mini" icon="el-icon-plus" @click="addAchi">成果汇交</el-button>
6
+      </div>
7
+      <div>
8
+        <el-button icon="el-icon-refresh" circle size="mini" @click="getAchiData()"></el-button>
9
+      </div>
10
+    </div>
11
+
12
+    <el-table :data="achiList" style="width: 100%">
13
+      <el-table-column type="index" label="序号" width="50" />
14
+      <el-table-column label="成果汇交时间" prop="submitTime" width="100" />
15
+      <el-table-column label="生产部门检查员" prop="produceInspector" width="120">
16
+        <template slot-scope="scope">
17
+          {{ findUserName(scope.row.produceInspector) }}
18
+        </template>
19
+      </el-table-column>
20
+      <el-table-column label="质量检查员" prop="qualityInspector" show-overflow-tooltip width="120">
21
+        <template slot-scope="scope">
22
+          {{ findUserName(scope.row.qualityInspector) }}
23
+        </template>
24
+      </el-table-column>
25
+      <el-table-column label="技术部负责人" prop="deptLeader" show-overflow-tooltip width="120">
26
+        <template slot-scope="scope">
27
+          {{ findUserName(scope.row.deptLeader) }}
28
+        </template>
29
+      </el-table-column>
30
+      <el-table-column label="归档人" prop="archiver" show-overflow-tooltip width="120">
31
+        <template slot-scope="scope">
32
+          {{ findUserName(scope.row.archiver) }}
33
+        </template>
34
+      </el-table-column>
35
+      <el-table-column label="资料接受时间" prop="receiveTime" show-overflow-tooltip width="120" />
36
+      <el-table-column label="质量检查时间" prop="qualityTime" show-overflow-tooltip width="120" />
37
+      <el-table-column label="生产部门检查时间" prop="produceTime" show-overflow-tooltip width="130" />
38
+      <el-table-column label="归档时间" prop="archiveTime" show-overflow-tooltip width="120" />
39
+      <el-table-column label="生产部门意见" prop="produceComment" show-overflow-tooltip width="120" />
40
+      <el-table-column label="质量检查意见" prop="qualityComment" show-overflow-tooltip width="120" />
41
+      <el-table-column label="技术部审核意见" prop="deptComment" show-overflow-tooltip width="120" />
42
+      <el-table-column label="归档意见" prop="archiveComment" show-overflow-tooltip width="120" />
43
+      <el-table-column label="操作" fixed="right" header-align="center">
44
+        <template slot-scope="scope">
45
+          <el-button icon="el-icon-view" type="text" size="mini" @click="handleLook(scope.row)">查看明细</el-button>
46
+        </template>
47
+      </el-table-column>
48
+    </el-table>
49
+  </div>
50
+</template>
51
+
52
+<script>
53
+import { listArchive } from "@/api/oa/archive/archive"
54
+import { listDefinition } from "@/api/flowable/definition";
55
+import { getNextFlowNodeByStart } from "@/api/flowable/todo";
56
+import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
57
+import { todoList } from "@/api/flowable/todo";
58
+import { Snowflake } from '@/utils/snowFlake.js'
59
+import { MessageBox } from 'element-ui'
60
+export default {
61
+  props: {
62
+    taskForm: {
63
+      type: Object,
64
+      required: true
65
+    }
66
+  },
67
+  data() {
68
+    return {
69
+      achiList: [],
70
+      definitionList: [],
71
+    }
72
+  },
73
+  mounted() {
74
+    this.getAchiData()
75
+    this.listDefinition();
76
+  },
77
+  methods: {
78
+    getAchiData() {
79
+      listArchive({ projectId: this.taskForm.formId }).then(res => {
80
+        if (res.code == 200) {
81
+          this.achiList = res.rows
82
+        }
83
+      })
84
+    },
85
+    findUserName(id) {
86
+      let userList = this.$store.state.user.userList
87
+      let user = userList.find(obj => obj.userId == id)
88
+      if (user)
89
+        return user.nickName
90
+      else {
91
+        return ''
92
+      }
93
+    },
94
+    listDefinition() {
95
+      listDefinition({
96
+        pageNum: 1,
97
+        pageSize: 9999,
98
+        name: '成果归档'
99
+      }).then(response => {
100
+        this.definitionList = response.data.records;
101
+      });
102
+    },
103
+    handleLook(row) {
104
+
105
+    },
106
+    addAchi() {
107
+      let row = this.definitionList[0];
108
+      let formId = new Snowflake(1n, 1n, 0n).nextId().toString();
109
+      getNextFlowNodeByStart({ deploymentId: row.deploymentId, variables: { formId: formId } }).then(res => {
110
+        let data = res.data
111
+        const variables = {};
112
+        const formData = {};
113
+        formData.formId = formId
114
+        if (row.id) {
115
+          MessageBox.confirm('是否发起成果归档?', '系统提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
116
+            variables.variables = formData;
117
+            // 启动流程并将表单数据加入流程变量
118
+            definitionStart(row.id, JSON.stringify(variables)).then(res => {
119
+              this.$modal.msgSuccess(res.msg);
120
+              let procInstanceId = res.data;
121
+              todoList({
122
+                pageNum: 1,
123
+                pageSize: 99999999,
124
+                processInsId: procInstanceId
125
+              }).then(toDoRes => {
126
+                let records = toDoRes.data.records;
127
+                if (records.length == 1) {
128
+                  records = records[0]
129
+                }
130
+                this.$router.push({
131
+                  path: '/applyForm/archive',
132
+                  query: {
133
+                    procInsId: records.procInsId,
134
+                    executionId: records.executionId,
135
+                    deployId: records.deployId,
136
+                    taskId: records.taskId,
137
+                    taskName: records.taskName,
138
+                    startUser: records.startUserName + '--' + records.startDeptName,
139
+                    formId: formData.formId,
140
+                    procDefName: records.procDefName,
141
+                    projectId: this.taskForm.formId
142
+                  }
143
+                })
144
+              })
145
+            })
146
+          })
147
+        }
148
+      })
149
+    },
150
+  }
151
+}
152
+</script>
153
+
154
+<style lang="scss" scoped>
155
+.nav-btn {
156
+  display: flex;
157
+  justify-content: space-between;
158
+}
159
+</style>

+ 6
- 0
oa-ui/src/views/flowable/form/inProgress/borrowData.vue Просмотреть файл

@@ -1,3 +1,9 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-05-10 14:45:08
4
+ * @LastEditors: 
5
+ * @LastEditTime: 2024-05-31 16:27:30
6
+-->
1 7
 <!--
2 8
  * @Author: ysh
3 9
  * @Date: 2024-04-25 17:17:53

+ 11
- 6
oa-ui/src/views/flowable/form/inProgress/settleData.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-05-10 14:45:03
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-30 15:57:17
5
+ * @LastEditTime: 2024-05-31 14:51:49
6 6
 -->
7 7
 <template>
8 8
   <div class="mt20">
@@ -64,6 +64,10 @@ export default {
64 64
     taskForm: {
65 65
       type: Object,
66 66
       required: true
67
+    },
68
+    taskName: {
69
+      type: String,
70
+      default: ''
67 71
     }
68 72
   },
69 73
   data() {
@@ -74,7 +78,7 @@ export default {
74 78
       summaryList: [],
75 79
       workList: [],
76 80
       settleList: [],
77
-      userList:[],
81
+      userList: [],
78 82
       chooseProject: {},
79 83
       clickRow: {}
80 84
     }
@@ -83,7 +87,8 @@ export default {
83 87
     this.getUserList();
84 88
     this.getSettleData();
85 89
     this.listDefinition();
86
-    this.getChooseProject();
90
+    if (this.taskName != '项目登记')
91
+      this.getChooseProject();
87 92
   },
88 93
   methods: {
89 94
     getUserList() {
@@ -166,9 +171,9 @@ export default {
166 171
       this.getSettleWorkList(row.settleId)
167 172
       this.open = true
168 173
     },
169
-    getUserNickName(id){
170
-      for(let user of this.userList){
171
-        if(user.userId == id){
174
+    getUserNickName(id) {
175
+      for (let user of this.userList) {
176
+        if (user.userId == id) {
172 177
           return user.nickName
173 178
         }
174 179
       }

+ 3
- 10
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-19 09:24:06
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-29 16:44:31
5
+ * @LastEditTime: 2024-05-31 16:26:38
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -21,7 +21,7 @@
21 21
         <el-col :span="12" :xs="24">
22 22
           <el-form-item label="部门负责人:" prop="deptLeader">
23 23
             <el-select v-model="form.deptLeader" multiple clearable style="width:100%">
24
-              <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId">
24
+              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName" :value="item.userId">
25 25
               </el-option>
26 26
             </el-select>
27 27
           </el-form-item>
@@ -39,7 +39,7 @@
39 39
         <el-col :span="12" :xs="24">
40 40
           <el-form-item label="现场负责人:" prop="siteLeader">
41 41
             <el-select v-model="form.siteLeader" filterable clearable style="width:100%">
42
-              <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
42
+              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName" :value="item.userId"
43 43
                 v-if="item.nickName != 'admin'">
44 44
               </el-option>
45 45
             </el-select>
@@ -122,7 +122,6 @@ export default {
122 122
       form: {},
123 123
       rules: {},
124 124
       deptList: [],
125
-      userList: [],
126 125
       deptLeaderList: [],
127 126
       file: {
128 127
         fileList: []
@@ -141,7 +140,6 @@ export default {
141 140
       this.initForm();
142 141
       // this.form.projectId = this.taskForm.formId;
143 142
       this.getDeptList();
144
-      this.getUserList();
145 143
     }
146 144
   },
147 145
   methods: {
@@ -166,11 +164,6 @@ export default {
166 164
         this.$store.commit('SET_PROJECT', this.form)
167 165
       })
168 166
     },
169
-    getUserList() {
170
-      listUser({ pageSize: 9999, pageNum: 1 }).then(res => {
171
-        this.userList = res.rows
172
-      })
173
-    },
174 167
     getDeptList() {
175 168
       listDept({
176 169
         deptName: undefined,

+ 11
- 24
oa-ui/src/views/flowable/form/projectProcess/inProgress.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-15 09:35:41
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-30 10:51:38
5
+ * @LastEditTime: 2024-05-31 16:53:29
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -15,22 +15,19 @@
15 15
       <el-form ref="progress" :model="form" :disabled="disabled" label-width="100px">
16 16
         <el-form-item label="参与人员:">
17 17
           <el-select v-model="participates" multiple disabled style="width:84%">
18
-            <el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId">
18
+            <el-option v-for="item in $store.state.user.userList" :label="item.nickName" :value="item.userId" :key="item.userId">
19 19
             </el-option>
20 20
           </el-select>
21
-          <!-- <el-tag class="mr10" :key="item.userId" v-for="item in participates">{{ item.nickName }}</el-tag> -->
22 21
           <el-button class="ml10" @click="openPeople = true" type="primary" size="mini" icon="el-icon-plus"></el-button>
23 22
           <div v-if="participates.length == 0" style="color:#F56C6C">tips:请选择参与人员</div>
24 23
         </el-form-item>
25 24
         <el-form-item label="驾驶员:">
26 25
           <el-tooltip class="item" effect="dark" content="直接获取用车申请中的驾驶员,若无驾驶员,则需要先提交项目的用车申请" placement="top-end">
27 26
             <el-select v-model="form.drivers" multiple disabled style="width:90%">
28
-              <el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId">
27
+              <el-option v-for="item in $store.state.user.userList" :label="item.nickName" :value="item.userId" :key="item.userId">
29 28
               </el-option>
30 29
             </el-select>
31 30
           </el-tooltip>
32
-          <!-- <el-tag class="mr10" :key="item" v-for="item in chooseDriver">{{ item.nickName }}</el-tag>
33
-          <el-button class="ml10" @click="openDriver = true" type="primary" size="mini" icon="el-icon-plus"></el-button> -->
34 31
         </el-form-item>
35 32
         <el-form-item label="使用车辆:">
36 33
           <el-tooltip class="item" effect="dark" content="直接获取用车申请中的车辆,若无车辆,则需要先提交项目的用车申请" placement="top-end">
@@ -40,9 +37,6 @@
40 37
               </el-option>
41 38
             </el-select>
42 39
           </el-tooltip>
43
-          <!-- <el-tag class="mr10" :key="item.licensePlate" v-for="item in chooseCar">{{ item.licensePlate + item.brand
44
-            }}</el-tag>
45
-          <el-button class="ml10" @click="openCar = true" type="primary" size="mini" icon="el-icon-plus"></el-button> -->
46 40
         </el-form-item>
47 41
         <el-form-item label="使用设备:">
48 42
           <el-tooltip class="item" effect="dark" content="直接获取设备申请中的设备,若无车辆,则需要先提交项目的设备申请" placement="top-end">
@@ -108,11 +102,12 @@
108 102
       <div class="headers">
109 103
         成果汇交
110 104
         <div class="line"></div>
105
+        <achi-data :taskForm="taskForm"></achi-data>
111 106
       </div>
112 107
       <div class="headers">
113 108
         产值结算(内部)
114 109
         <div class="line"></div>
115
-        <settle-data :taskForm="taskForm"></settle-data>
110
+        <settle-data :taskForm="taskForm" :taskName="taskName"></settle-data>
116 111
       </div>
117 112
       <div slot="footer" class="dialog-footer" style="text-align: center">
118 113
         <el-button @click="preserve()" :disabled="disabled" type="warning">保 存</el-button>
@@ -151,12 +146,14 @@ import SettleData from '../inProgress/settleData.vue';
151 146
 import ChoosePeople from '../budget/components/choosePeople.vue';
152 147
 import ChooseCar from '../budget/components/chooseCar.vue';
153 148
 import ChooseDevice from "../budget/components/chooseDevice.vue";
149
+import AchiData from '../inProgress/achiData.vue';
154 150
 export default {
155 151
   components: {
156 152
     borrowData,
157 153
     SettleData,
158 154
     ChoosePeople,
159
-    ChooseCar
155
+    ChooseCar,
156
+    AchiData
160 157
   },
161 158
   computed: {
162 159
     ...mapGetters(["name", "userId"]),
@@ -221,7 +218,6 @@ export default {
221 218
     if (this.taskName != "项目登记") {
222 219
       // this.doesItExistBudget(this.taskForm.formId);
223 220
       this.initProgress();
224
-      this.getUserList();
225 221
       this.getCarList();
226 222
       this.getDeviceList();
227 223
     }
@@ -262,7 +258,6 @@ export default {
262 258
     },
263 259
     getChooseUser(val) {
264 260
       this.participates = val.map(item => item.userId);
265
-      console.log(this.participates);
266 261
       this.openPeople = false;
267 262
     },
268 263
     getChooseCar(val) {
@@ -297,7 +292,6 @@ export default {
297 292
         }
298 293
       })
299 294
       listDeviceApproval({ projectId: this.taskForm.formId }).then(res => {
300
-        console.log(res.rows);
301 295
         if (res.rows) {
302 296
           this.form.devices = []
303 297
           for (let data of res.rows) {
@@ -347,12 +341,11 @@ export default {
347 341
         }
348 342
       }
349 343
       this.form.projectId = this.taskForm.formId;
350
-      this.form.cars = this.form.cars.length != 0 ? this.form.cars.join(',') : '';
351
-      this.form.drivers = this.form.drivers.length != 0 ? this.form.drivers.join(',') : '';
352
-      this.form.devices = this.form.devices.length != 0 ? this.form.devices.join(',') : '';
344
+      this.form.cars = this.form.cars.length != 0 ? this.form.cars.join(',') : null;
345
+      this.form.drivers = this.form.drivers.length != 0 ? this.form.drivers.join(',') : null;
346
+      this.form.devices = this.form.devices.length != 0 ? this.form.devices.join(',') : null;
353 347
       // this.participates = this.participates.map(item => item.userId)
354 348
       this.form.participates = this.participates.join(',')
355
-      console.log(this.form);
356 349
       updateProject(this.form).then(res => {
357 350
         this.$message.success("保存成功");
358 351
         this.form.cars = (this.form.cars.split(',')).map(Number);
@@ -360,12 +353,6 @@ export default {
360 353
         this.form.devices = (this.form.devices.split(',')).map(Number);
361 354
       });
362 355
     },
363
-    // 查询用户列表
364
-    getUserList() {
365
-      listUser(this.addDateRange({ pageSize: 9999, pageNum: 1, deptId: undefined }, [])).then(res => {
366
-        this.userList = res.rows
367
-      })
368
-    },
369 356
     // 查询车辆列表
370 357
     getCarList() {
371 358
       listCar({ pageSize: 9999, pageNum: 1 }).then(res => {

+ 1
- 1
oa-ui/src/views/flowable/form/projectProcess/index.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-07 17:44:13
5
+ * @LastEditTime: 2024-05-31 14:33:25
6 6
 -->
7 7
 
8 8
 <template>

+ 105
- 0
oa-ui/src/views/flowable/task/todo/applyForm/archiIndex.vue Просмотреть файл

@@ -0,0 +1,105 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-05-31 17:02:16
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-05-31 17:06:13
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <nav-header :taskForm="taskForm" :taskName="taskName" :startUser="startUser"
10
+      :flowRecordList="flowRecordList"></nav-header>
11
+    <archive-form :taskForm="taskForm" :taskName="taskName" @goBack="goBack"></archive-form>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+import { flowRecord } from "@/api/flowable/finished";
17
+import { getProcessVariables } from "@/api/flowable/definition";
18
+import { flowTaskForm } from "@/api/flowable/todo";
19
+import ArchiveForm from '../../../form/archiveForm.vue';
20
+import navHeader from './components/navHeader.vue'
21
+export default {
22
+  components: {
23
+    navHeader,
24
+    ArchiveForm,
25
+  },
26
+  data() {
27
+    return {
28
+      taskForm: {
29
+        returnTaskShow: false, // 是否展示回退表单
30
+        delegateTaskShow: false, // 是否展示回退表单
31
+        defaultTaskShow: true, // 默认处理
32
+        comment: "", // 意见内容
33
+        procInsId: "", // 流程实例编号
34
+        instanceId: "", // 流程实例编号
35
+        deployId: "",  // 流程定义编号
36
+        taskId: "",// 流程任务编号
37
+        procDefId: "",  // 流程编号
38
+        targetKey: "",
39
+        variables: {
40
+          variables: {}
41
+        },
42
+      },
43
+      startUser: null, // 发起人信息,
44
+      taskName: null, // 任务节点
45
+      flowRecordList: []
46
+    }
47
+  },
48
+  created() {
49
+    if (this.$route.query) {
50
+      this.taskName = this.$route.query.taskName;
51
+      this.startUser = this.$route.query.startUser;
52
+      this.taskForm.deployId = this.$route.query.deployId;
53
+      this.taskForm.taskId = this.$route.query.taskId;
54
+      this.taskForm.procInsId = this.$route.query.procInsId;
55
+      this.taskForm.executionId = this.$route.query.executionId;
56
+      this.taskForm.instanceId = this.$route.query.procInsId;
57
+      this.taskForm.formId = this.$route.query.formId;
58
+      this.taskForm.procDefName = this.$route.query.procDefName;
59
+      // 流程任务获取变量信息
60
+      if (this.taskForm.taskId) {
61
+        this.processVariables(this.taskForm.taskId)
62
+        this.getFlowTaskForm(this.taskForm.taskId)
63
+      }
64
+      this.getFlowRecordList(this.taskForm.procInsId, this.taskForm.deployId);
65
+    }
66
+  },
67
+  methods: {
68
+    /** 获取流程变量内容 */
69
+    processVariables(taskId) {
70
+      if (taskId) {
71
+        // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
72
+        getProcessVariables(taskId).then(res => {
73
+        });
74
+      }
75
+    },
76
+    /** 流程节点表单 */
77
+    getFlowTaskForm(taskId) {
78
+      if (taskId) {
79
+        // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
80
+        flowTaskForm({ taskId: taskId }).then(res => {
81
+          this.taskForm.variables = res.data.formData;
82
+        });
83
+      }
84
+    },
85
+    /** 流程流转记录 */
86
+    getFlowRecordList(procInsId, deployId) {
87
+      const that = this
88
+      const params = { procInsId: procInsId, deployId: deployId }
89
+      flowRecord(params).then(res => {
90
+        that.flowRecordList = res.data.flowList;
91
+      }).catch(res => {
92
+        this.goBack();
93
+      })
94
+    },
95
+    goBack() {
96
+      // 关闭当前标签页并返回上个页面
97
+      const obj = this.$route;
98
+      this.$tab.closeOpenPage(obj);
99
+      this.$router.go(-1);
100
+    }
101
+  }
102
+}
103
+</script>
104
+
105
+<style lang="scss" scoped></style>

+ 25
- 14
oa-ui/src/views/index.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-30 17:27:56
5
+ * @LastEditTime: 2024-05-31 14:24:08
6 6
 -->
7 7
 
8 8
 <template>
@@ -35,7 +35,7 @@
35 35
       <el-col :span="18" :xs="24">
36 36
         <div class="header">快捷入口</div>
37 37
         <div class="nav-wrapper">
38
-          <div class="nav-item" v-for="nav in navItem" @click="goToPath(nav.path)">
38
+          <div class="nav-item" v-for="nav in navItem" @click="goToPath(nav.path)" v-hasPermi="nav.privilege">
39 39
             <el-badge :value="formartBadge(nav.id)" :max="99" class="item">
40 40
               <div class="nav-logo" :style="{ 'background-color': nav.bgColor, 'box-shadow': nav.boxShadow }">
41 41
                 <div class="icon">
@@ -50,7 +50,7 @@
50 50
 
51 51
     </el-row>
52 52
     <el-row :gutter="20">
53
-      <el-col :span="8" :xs="24">
53
+      <el-col :span="5" :xs="24">
54 54
         <div class="header">日历</div>
55 55
         <div class="calendar-warpper">
56 56
           <!-- <Calendar></Calendar> -->
@@ -58,10 +58,10 @@
58 58
           </el-calendar>
59 59
         </div>
60 60
       </el-col>
61
-      <el-col :span="8" :xs="24">
61
+      <el-col :span="11" :xs="24">
62 62
         <div class="header">公告</div>
63 63
         <div class="notice-content">
64
-          <el-table v-loading="noticeLoading" :data="noticeList" height="320px">
64
+          <el-table v-loading="noticeLoading" :data="noticeList" height="320px" @row-click="handleRowClick">
65 65
             <!-- <el-table-column label="序号" align="center" prop="noticeId" width="100" /> -->
66 66
             <el-table-column label="公告类型" align="center" prop="noticeType" width="100">
67 67
               <template slot-scope="scope">
@@ -148,56 +148,64 @@ export default {
148 148
           icon: 'cascader',
149 149
           bgColor: '#785aee',
150 150
           boxShadow: '0 5px 20px rgba(120,90,238,0.5)',
151
-          path: '/task/process'
151
+          path: '/task/process',
152
+          privilege:['system:deployment:add']
152 153
         }, {
153 154
           id: 2,
154 155
           name: '待办任务',
155 156
           icon: 'log',
156 157
           bgColor: '#e66794',
157 158
           boxShadow: '0 5px 20px rgba(230,103,148,0.5)',
158
-          path: '/task/todo'
159
+          path: '/task/todo',
160
+          privilege:['system:deployment:add']
159 161
         }, {
160 162
           id: 3,
161 163
           name: '已办任务',
162 164
           icon: 'excel',
163 165
           bgColor: '#6389f4',
164 166
           boxShadow: '0 5px 20px rgba(99,137,244,0.5)',
165
-          path: '/task/finished'
167
+          path: '/task/finished',
168
+          privilege:['system:deployment:add']
166 169
         }, {
167 170
           id: 4,
168
-          name: '项目管理',
171
+          name: '项目台账',
169 172
           icon: 'dict',
170 173
           bgColor: '#e64c56',
171 174
           boxShadow: '0 5px 20px rgba(230,76,86,0.5)',
172
-          path: '/project'
175
+          path: '/project',
176
+          privilege:['oa:project:query']
173 177
         }, {
174 178
           id: 5,
175 179
           name: '车辆管理',
176 180
           icon: 'car',
177 181
           bgColor: '#eeb62f',
178 182
           boxShadow: '0 5px 20px rgba(238,182,47,0.5)',
179
-          path: '/car'
183
+          path: '/car',
184
+          privilege:['oa:car:list']
180 185
         }, {
181 186
           id: 6,
182 187
           name: '设备管理',
183 188
           icon: 'lock',
184 189
           bgColor: '#0be1bd',
185 190
           boxShadow: '0 5px 20px rgba(11,225,189,0.5)',
186
-          path: '/device/equipment'
191
+          path: '/device/equipment',
192
+          privilege:['oa:device:list']
187 193
         }, {
188 194
           id: 7,
189 195
           name: '投标管理',
190 196
           icon: 'example',
191 197
           bgColor: '#F7C59F',
192 198
           boxShadow: '0 5px 20px rgba(247,197,159,0.5)',
193
-          path: '/tender'
199
+          path: '/tender',
200
+          privilege:['oa:tender:query']
194 201
         }, {
195 202
           id: 8,
196 203
           name: '人事管理',
197 204
           icon: 'dept',
198 205
           bgColor: '#20B2AA',
199 206
           boxShadow: '0 5px 20px rgba(32,178,170,0.5)',
200
-          path: '/staff/people'
207
+          path: '/staff/people',
208
+          privilege:['oa:salary:list']
201 209
         }, 
202 210
         // {
203 211
         //   id: 9,
@@ -284,6 +292,9 @@ export default {
284 292
       } else {
285 293
         return null
286 294
       }
295
+    },
296
+    handleRowClick(row){
297
+      console.log(row);
287 298
     }
288 299
   }
289 300
 }

+ 0
- 40
oa-ui/src/views/oa/contract/index.vue Просмотреть файл

@@ -9,30 +9,6 @@
9 9
           @keyup.enter.native="handleQuery"
10 10
         />
11 11
       </el-form-item>
12
-      <el-form-item label="合同金额" prop="amount">
13
-        <el-input
14
-          v-model="queryParams.amount"
15
-          placeholder="请输入合同金额"
16
-          clearable
17
-          @keyup.enter.native="handleQuery"
18
-        />
19
-      </el-form-item>
20
-      <el-form-item label="履约保证金" prop="deposit">
21
-        <el-input
22
-          v-model="queryParams.deposit"
23
-          placeholder="请输入履约保证金"
24
-          clearable
25
-          @keyup.enter.native="handleQuery"
26
-        />
27
-      </el-form-item>
28
-      <el-form-item label="合同文件" prop="contractDocument">
29
-        <el-input
30
-          v-model="queryParams.contractDocument"
31
-          placeholder="请输入合同文件"
32
-          clearable
33
-          @keyup.enter.native="handleQuery"
34
-        />
35
-      </el-form-item>
36 12
       <el-form-item label="拟稿人" prop="drafter">
37 13
         <el-input
38 14
           v-model="queryParams.drafter"
@@ -57,22 +33,6 @@
57 33
           placeholder="请选择签订日期">
58 34
         </el-date-picker>
59 35
       </el-form-item>
60
-      <el-form-item label="签订备注" prop="signRemark">
61
-        <el-input
62
-          v-model="queryParams.signRemark"
63
-          placeholder="请输入签订备注"
64
-          clearable
65
-          @keyup.enter.native="handleQuery"
66
-        />
67
-      </el-form-item>
68
-      <el-form-item label="签订扫描件" prop="signScan">
69
-        <el-input
70
-          v-model="queryParams.signScan"
71
-          placeholder="请输入签订扫描件"
72
-          clearable
73
-          @keyup.enter.native="handleQuery"
74
-        />
75
-      </el-form-item>
76 36
       <el-form-item>
77 37
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
78 38
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>

+ 3
- 2
oa-ui/src/views/oa/project/info.vue Просмотреть файл

@@ -378,7 +378,7 @@
378 378
       </div>
379 379
     </div>
380 380
     <el-dialog title="项目预算" :visible.sync="openBudget" width="1000px" append-to-body>
381
-      <budget-info :taskForm="taskForm" :taskName="''"></budget-info>
381
+      <budget-tab :taskForm="taskForm"></budget-tab>
382 382
     </el-dialog>
383 383
     <el-dialog title="安全交底记录表" :visible.sync="openSafe" width="1000px" append-to-body>
384 384
       <safe-tab :taskForm="taskForm"></safe-tab>
@@ -406,8 +406,9 @@ import SafeTab from '../../flowable/form/projectProcess/safeTab.vue';
406 406
 import TechnicalTab from '../../flowable/form/projectProcess/technicalTab.vue';
407 407
 import SettleData from '../../flowable/form/inProgress/settleData.vue';
408 408
 import BorrowData from '../../flowable/form/inProgress/borrowData.vue';
409
+import BudgetTab from '../../flowable/form/projectProcess/budgetTab.vue';
409 410
 export default {
410
-  components: { budgetInfo, SafeTab, TechnicalTab, SettleData, BorrowData },
411
+  components: { budgetInfo, SafeTab, TechnicalTab, SettleData, BorrowData, BudgetTab },
411 412
   created() {
412 413
     this.getUserList();
413 414
     this.getDeviceList();

Загрузка…
Отмена
Сохранить