Browse Source

修改项目结算上传、项目生产细节

余思翰 1 year ago
parent
commit
5a84772c13

+ 4600
- 5021
oa-back/sql/cmc_oa(小余测试数据).sql
File diff suppressed because it is too large
View File


+ 1
- 1
oa-ui/src/views/flowable/form/components/chooseProject.vue View File

@@ -27,7 +27,7 @@
27 27
       <el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
28 28
       <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" />
29 29
       <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" :show-overflow-tooltip="true" />
30
-      <el-table-column label="项目负责人" align="center" key="projectLeader" prop="projectLeader"
30
+      <el-table-column label="项目负责人" align="center" key="projectLeader" prop="projectLeaderUser.nickName"
31 31
         :show-overflow-tooltip="true" />
32 32
       <el-table-column label="甲方公司" align="center" key="partyA" prop="partyA" :show-overflow-tooltip="true" />
33 33
       <el-table-column label="项目类型" align="center" key="projectType" prop="projectType" />

+ 9
- 9
oa-ui/src/views/flowable/form/inProgress/settleData.vue View File

@@ -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-27 19:02:03
5
+ * @LastEditTime: 2024-05-28 18:35:30
6 6
 -->
7 7
 <template>
8 8
   <div class="mt20">
@@ -19,14 +19,14 @@
19 19
     <el-table :data="dataList" style="width: 100%">
20 20
       <el-table-column type="index" label="序号" width="50" />
21 21
       <el-table-column label="上报人" prop="reporterName" />
22
-      <el-table-column label="申请时间" prop="reportTime" />
23
-      <el-table-column label="综合事务部意见" prop="zhComment" />
24
-      <el-table-column label="技术质量部意见" prop="jsComment" />
25
-      <el-table-column label="项目管理部意见" prop="xmComment" />
26
-      <el-table-column label="承担部门意见" prop="deptComment" />
27
-      <el-table-column label="经营管理部意见" prop="jyComment" />
28
-      <el-table-column label="分管审核意见" prop="managerComment" />
29
-      <el-table-column label="总经理意见" prop="gmComment" />
22
+      <el-table-column label="申请时间" prop="reportTime" width="100" />
23
+      <el-table-column label="综合事务部意见" prop="zhComment" show-overflow-tooltip  width="120" />
24
+      <el-table-column label="技术质量部意见" prop="jsComment" show-overflow-tooltip  width="120" />
25
+      <el-table-column label="项目管理部意见" prop="xmComment" show-overflow-tooltip  width="120" />
26
+      <el-table-column label="承担部门意见" prop="deptComment" show-overflow-tooltip  width="120" />
27
+      <el-table-column label="经营管理部意见" prop="jyComment" show-overflow-tooltip  width="120" />
28
+      <el-table-column label="分管审核意见" prop="managerComment" show-overflow-tooltip width="120" />
29
+      <el-table-column label="总经理意见" prop="gmComment" show-overflow-tooltip width="120" />
30 30
       <el-table-column label="操作" fixed="right" header-align="center">
31 31
         <template slot-scope="scope">
32 32
           <el-button icon="el-icon-view" type="text" size="mini" @click="handleLook(scope.row)">查看明细</el-button>

+ 25
- 1
oa-ui/src/views/flowable/form/projectProcess/addproject.vue View File

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-18 11:00:04
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-23 10:23:07
5
+ * @LastEditTime: 2024-05-28 10:35:58
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -112,6 +112,16 @@
112 112
 
113 113
         <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
114 114
       </el-form-item>
115
+      <el-form-item label="附件上传:" prop="taskDocument">
116
+        <FileUpload v-if="$route.query.taskName == '项目登记'" ref="orz" :limit="1" :filePathName="'项目任务书'"
117
+          :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setProjectDocument">
118
+        </FileUpload>
119
+        <div v-if="$route.query.taskName != '项目登记'" class="upload-list">
120
+          <el-link :href="`${baseUrl}${'/profile/upload' + addForm.taskDocument}`" :underline="false" target="_blank">
121
+            <span class="el-icon-document"> {{ getFileName(addForm.taskDocument) }} </span>
122
+          </el-link>
123
+        </div>
124
+      </el-form-item>
115 125
       <el-form-item label="备注:" prop="remark">
116 126
         <el-input v-model="addForm.remark" type="textarea" rows="3"></el-input>
117 127
       </el-form-item>
@@ -168,6 +178,7 @@ export default {
168 178
   },
169 179
   data() {
170 180
     return {
181
+      baseUrl:process.env.VUE_APP_BASE_API,
171 182
       openContract: false,
172 183
       registerTime: undefined,
173 184
       // 查询参数
@@ -344,6 +355,19 @@ export default {
344 355
         return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
345 356
       };
346 357
     },
358
+    setProjectDocument(val) {
359
+      let arr = val.split('/upload')
360
+      this.addForm.taskDocument = arr[1]
361
+      if (val == "") {
362
+        this.addForm.taskDocument = ""
363
+      }
364
+    },
365
+    getFileName(name) {
366
+      if (name != null) {
367
+        let arr = name.split('/')
368
+        return arr[arr.length - 1];
369
+      }
370
+    },
347 371
   },
348 372
 };
349 373
 </script>

+ 10
- 8
oa-ui/src/views/flowable/form/projectProcess/inProgress.vue View File

@@ -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-27 09:34:12
5
+ * @LastEditTime: 2024-05-28 15:49:18
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -129,7 +129,7 @@
129 129
 import { mapGetters } from "vuex";
130 130
 import { parseTime } from "@/utils/ruoyi";
131 131
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
132
-import { listProjectProgress, addProjectProgress, delProjectProgress } from "@/api/oa/project/projectProgress";
132
+import { listProjectProgress, getProjectProgress, addProjectProgress, delProjectProgress } from "@/api/oa/project/projectProgress";
133 133
 import { getProject, updateProject } from "@/api/oa/project/project";
134 134
 import { getCar } from "@/api/oa/car/car";
135 135
 import { listCarApproval, getCarApproval } from '@/api/oa/car/carApproval'
@@ -206,12 +206,12 @@ export default {
206 206
     },
207 207
   },
208 208
   created() {
209
-    if (this.taskName == "项目生产") {
209
+    // if (this.taskName == "项目生产") {
210 210
       // this.doesItExistBudget(this.taskForm.formId);
211 211
       this.initProgress();
212 212
       this.getUserList();
213 213
       this.getCarList();
214
-    }
214
+    // }
215 215
   },
216 216
   mounted() {
217 217
   },
@@ -235,10 +235,12 @@ export default {
235 235
           }
236 236
         }
237 237
       });
238
-      listProjectProgress({ projectId: this.taskForm.formId }).then(res => {
239
-        this.oldProgressList = res.rows
240
-        if (res.rows.length != 0) {
241
-          this.progressList = res.rows;
238
+      getProjectProgress(this.taskForm.formId).then(res => {
239
+        if (res.data) {
240
+          this.oldProgressList = res.data
241
+          if (res.data != 0) {
242
+            this.progressList = res.data;
243
+          }
242 244
         }
243 245
       });
244 246
     },

+ 61
- 26
oa-ui/src/views/flowable/form/settleForm.vue View File

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-30 09:03:14
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-27 17:25:35
5
+ * @LastEditTime: 2024-05-28 19:08:56
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container" v-loading="loading">
@@ -20,12 +20,13 @@
20 20
         </div>
21 21
         <el-form ref="settleForm" :model="form" :rules="rules" label-width="160px" :disabled="disabled">
22 22
           <el-form-item label="项目编号" prop="projectId">
23
-            <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
23
+            <el-button icon="el-icon-plus" size="mini" type="primary" @click="prOpen = true">选择项目</el-button>
24
+            <!-- <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
24 25
               :disabled="taskName != '结算发起'" clearable style="width: 100%">
25 26
               <el-option v-for="item in projectList" :key="item.value"
26 27
                 :label="item.projectNumber + '-' + item.projectName" :value="item.projectId">
27 28
               </el-option>
28
-            </el-select>
29
+            </el-select> -->
29 30
             <el-descriptions border v-if="isSelect" style="margin-top: 10px" :column="2">
30 31
               <el-descriptions-item label="项目编号" label-class-name="my-label">
31 32
                 {{ chooseProject.projectNumber }}
@@ -84,30 +85,37 @@
84 85
             </el-col>
85 86
           </el-row>
86 87
           <el-form-item label="原始上报数据" prop="">
87
-            <FileUpload v-if="taskName == '结算发起'" ref="jssh" :limit="1" :filePathName="'项目结算'"
88
-              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getYuanShi"></FileUpload>
89
-            <el-link v-if="taskName != '结算发起'" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
90
-              :underline="false" target="_blank">
91
-              <span class="el-icon-document"> {{ getFileName(form.modifyDocument) }} </span>
92
-            </el-link>
88
+            <FileUpload v-if="taskName == '结算发起'" :limit="1" :filePathName="'项目结算/原始数据'"
89
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setSettleDocument">
90
+            </FileUpload>
91
+            <div v-if="taskName != '结算发起'" class="upload-list">
92
+              <el-link :href="`${baseUrl}${'/profile/upload' + form.settleDocument}`" :underline="false"
93
+                target="_blank">
94
+                <span class="el-icon-document" style="color:#00f;"> {{ getFileName(form.settleDocument) }} </span>
95
+              </el-link>
96
+            </div>
93 97
           </el-form-item>
94 98
           <el-form-item label="项目管理部审核结算单" prop="">
95
-            <el-upload class="upload-demo" ref="upload" :file-list="fileList" action="" :auto-upload="false">
96
-              <el-button slot="trigger" size="mini" type="primary" icon="el-icon-upload"
97
-                :disabled="taskName != '项目管理部结算'">选取文件</el-button>
98
-              <div slot="tip" class="el-upload__tip">
99
-                只能上传docx/doc文件,且不超过500kb
100
-              </div>
101
-            </el-upload>
99
+            <FileUpload v-if="taskName == '项目管理部结算'" :limit="1" :filePathName="'项目结算/项目管理部审核结算单'"
100
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setModifyDocument">
101
+            </FileUpload>
102
+            <div v-if="taskName != '项目管理部结算' && form.modifyDocument" class="upload-list">
103
+              <el-link :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`" :underline="false"
104
+                target="_blank">
105
+                <span class="el-icon-document" style="color:#00f;"> {{ getFileName(form.modifyDocument) }} </span>
106
+              </el-link>
107
+            </div>
102 108
           </el-form-item>
103 109
           <el-form-item label="分管领导审核结算单" prop="">
104
-            <el-upload class="upload-demo" ref="upload" :file-list="fileList" action="" :auto-upload="false">
105
-              <el-button slot="trigger" size="mini" type="primary" icon="el-icon-upload"
106
-                :disabled="taskName != '分管审核'">选取文件</el-button>
107
-              <div slot="tip" class="el-upload__tip">
108
-                只能上传docx/doc文件,且不超过500kb
109
-              </div>
110
-            </el-upload>
110
+            <FileUpload v-if="taskName == '分管审核'" :limit="1" :filePathName="'项目结算/分管领导审核结算单'"
111
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setFinalDocument">
112
+            </FileUpload>
113
+            <div v-if="taskName != '分管审核' && form.finalDocument" class="upload-list">
114
+              <el-link :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`" :underline="false"
115
+                target="_blank">
116
+                <span class="el-icon-document" style="color:#00f;"> {{ getFileName(form.finalDocument) }} </span>
117
+              </el-link>
118
+            </div>
111 119
           </el-form-item>
112 120
           <div class="headers">
113 121
             项目完成工作量及经费计算
@@ -415,6 +423,10 @@
415 423
     <el-drawer title="选择单价" :visible.sync="drawer" direction="rtl">
416 424
       <choose-price :row="clickWork" @getPrice="getPrice" @cancel="drawer = false"></choose-price>
417 425
     </el-drawer>
426
+
427
+    <el-dialog title="选择项目" :visible.sync="prOpen" width="70%" append-to-body>
428
+      <choose-project @chooseProject="confirmProject"></choose-project>
429
+    </el-dialog>
418 430
   </div>
419 431
 </template>
420 432
 
@@ -437,11 +449,13 @@ import { complete, getNextFlowNode } from "@/api/flowable/todo";
437 449
 import { getUsersDeptLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept } from '@/api/system/post.js'
438 450
 import SettlePrint from './components/settlePrint.vue';
439 451
 import { getDept } from "@/api/system/dept"
452
+import ChooseProject from './components/chooseProject.vue';
440 453
 export default {
441 454
   components: {
442 455
     flow,
443 456
     ChoosePrice,
444 457
     SettlePrint,
458
+    ChooseProject
445 459
   },
446 460
   props: {
447 461
     taskName: {
@@ -462,9 +476,11 @@ export default {
462 476
   },
463 477
   data() {
464 478
     return {
479
+      baseUrl:process.env.VUE_APP_BASE_API,
465 480
       printOpen: false,
466 481
       loading: true,
467 482
       drawer: false,
483
+      prOpen: false,
468 484
       flag: false,
469 485
       flowData: {},
470 486
       form: {},
@@ -708,7 +724,7 @@ export default {
708 724
               });
709 725
             })
710 726
           } else if (deptId && !isList) {
711
-            getUsersManageLeaderByDept({ deptId }).then(res => {
727
+            getUsersDeptLeaderByDept({ deptId }).then(res => {
712 728
               this.$set(this.taskForm.variables, "approval", res.data.userId);
713 729
               complete(this.taskForm).then(response => {
714 730
                 this.$modal.msgSuccess(response.msg);
@@ -979,8 +995,14 @@ export default {
979 995
         return arr[arr.length - 1];
980 996
       }
981 997
     },
982
-    getYuanShi(val) {
983
-      this.getDoc()
998
+    setSettleDocument(val) {
999
+      this.getDoc(val,'settleDocument')
1000
+    },
1001
+    setModifyDocument(val) {
1002
+      this.getDoc(val,'modifyDocument')
1003
+    },
1004
+    setFinalDocument(val) {
1005
+      this.getDoc(val,'finalDocument')
984 1006
     },
985 1007
     getDoc(val, name) {
986 1008
       if (val) {
@@ -991,6 +1013,19 @@ export default {
991 1013
         }
992 1014
       }
993 1015
     },
1016
+    confirmProject(val) {
1017
+      console.log(val);
1018
+      if (val.length == 1) {
1019
+        this.prOpen = false
1020
+        this.chooseProject = val[0]
1021
+        this.form.projectId = val[0].projectId
1022
+        this.isSelect = true
1023
+      } else {
1024
+        this.$message.error('项目只能选择一个!')
1025
+        return
1026
+      }
1027
+
1028
+    }
994 1029
   },
995 1030
 };
996 1031
 </script>

+ 24
- 15
oa-ui/src/views/flowable/task/finished/index.vue View File

@@ -26,12 +26,14 @@
26 26
 
27 27
     <el-table v-loading="loading" :data="finishedList" border @selection-change="handleSelectionChange">
28 28
       <el-table-column type="selection" width="55" align="center" />
29
+      <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true" />
29 30
       <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true" />
30 31
       <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true" />
31 32
       <el-table-column label="任务节点" align="center" prop="taskName" />
32 33
       <el-table-column label="流程发起人" align="center">
33 34
         <template slot-scope="scope">
34
-          <label>{{ scope.row.startUserName }} <el-tag type="info" size="mini">{{ scope.row.startDeptName }}</el-tag></label>
35
+          <label>{{ scope.row.startUserName }} <el-tag type="info" size="mini">{{ scope.row.startDeptName
36
+              }}</el-tag></label>
35 37
         </template>
36 38
       </el-table-column>
37 39
       <el-table-column label="接收时间" align="center" prop="createTime" width="180" />
@@ -39,9 +41,10 @@
39 41
       <el-table-column label="耗时" align="center" prop="duration" width="180" />
40 42
       <el-table-column label="操作" width="150" fixed="right" class-name="small-padding fixed-width">
41 43
         <template slot-scope="scope">
42
-          <el-button size="mini" type="text" icon="el-icon-tickets" @click="handleFlowRecord(scope.row)">流转记录</el-button>
43
-          <!-- <el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleRevoke(scope.row)">撤回
44
-          </el-button> -->
44
+          <el-button size="mini" type="text" icon="el-icon-tickets"
45
+            @click="handleFlowRecord(scope.row)">流转记录</el-button>
46
+          <el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleRevoke(scope.row)">撤回
47
+          </el-button>
45 48
         </template>
46 49
       </el-table-column>
47 50
     </el-table>
@@ -182,26 +185,33 @@ export default {
182 185
             deployId: row.deployId,
183 186
             taskId: row.taskId,
184 187
             formId: res.data.formId,
185
-            procDefName:row.procDefName
188
+            procDefName: row.procDefName
186 189
           }
187 190
         })
188 191
       })
189 192
     },
190 193
     /** 撤回任务 */
191 194
     handleRevoke(row) {
192
-      const params = {
193
-        instanceId: row.procInsId,
194
-        taskId: row.taskId
195
-      }
196
-      revokeProcess(params).then(res => {
197
-        this.$modal.msgSuccess(res.msg);
198
-        this.getList();
199
-      });
195
+      this.$confirm('确定撤回任务吗?', '提示', {
196
+        confirmButtonText: '确定',
197
+        cancelButtonText: '取消',
198
+        type: 'warning'
199
+      }).then(() => {
200
+        const params = {
201
+          instanceId: row.procInsId,
202
+          taskId: row.taskId
203
+        }
204
+        revokeProcess(params).then(res => {
205
+          this.$modal.msgSuccess(res.msg);
206
+          this.getList();
207
+        });
208
+      }).catch(() => { });
209
+
200 210
     },
201 211
     /** 修改按钮操作 */
202 212
     handleUpdate(row) {
203 213
       this.reset();
204
-      const id = row.id || this.ids
214
+      const id = row.deployId || this.ids
205 215
       getDeployment(id).then(response => {
206 216
         this.form = response.data;
207 217
         this.open = true;
@@ -258,4 +268,3 @@ export default {
258 268
   }
259 269
 };
260 270
 </script>
261
-

+ 8
- 3
oa-ui/src/views/oa/project/index.vue View File

@@ -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-04-09 17:39:50
5
+ * @LastEditTime: 2024-05-28 17:51:56
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -84,10 +84,12 @@
84 84
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName" />
85 85
         <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
86 86
           <template slot-scope="scope" v-if="scope.row.userId !== 1">
87
+            <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
88
+              v-hasPermi="['oa:project:query']">查看</el-button>
87 89
             <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
88
-              v-hasPermi="['system:user:edit']">修改</el-button>
90
+              v-hasPermi="['oa:project:edit']">修改</el-button>
89 91
             <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
90
-              v-hasPermi="['system:user:remove']">删除</el-button>
92
+              v-hasPermi="['oa:project:remove']">删除</el-button>
91 93
           </template>
92 94
         </el-table-column>
93 95
       </el-table>
@@ -292,6 +294,9 @@ export default {
292 294
     handleAdd() {
293 295
       this.title = '新增项目'
294 296
       this.addOpen = true
297
+    },
298
+    handleView(row){
299
+
295 300
     },
296 301
     handleUpdate(row) {
297 302
       this.addForm = row;

Loading…
Cancel
Save