浏览代码

修改项目流转、待办等新增项目编号显示

余思翰 9 个月前
父节点
当前提交
bb00096c45

+ 17
- 1
oa-ui/src/views/flowable/form/components/choosePartyA.vue 查看文件

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-06-18 17:38:50
3
  * @Date: 2024-06-18 17:38:50
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-18 19:00:46
5
+ * @LastEditTime: 2024-08-20 16:33:37
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
70
 
70
 
71
 export default {
71
 export default {
72
   name: "PartyA",
72
   name: "PartyA",
73
+  props: {
74
+    projectSource: {
75
+      type: String,
76
+      default: '2'
77
+    }
78
+  },
73
   data() {
79
   data() {
74
     return {
80
     return {
75
       // 遮罩层
81
       // 遮罩层
112
   created() {
118
   created() {
113
     this.getList();
119
     this.getList();
114
   },
120
   },
121
+  watch: {
122
+    projectSource() {
123
+      this.getList();
124
+    }
125
+  },
115
   methods: {
126
   methods: {
116
     /** 查询cmc业主单位列表 */
127
     /** 查询cmc业主单位列表 */
117
     getList() {
128
     getList() {
118
       this.loading = true;
129
       this.loading = true;
130
+      if (this.projectSource == '0') {
131
+        this.queryParams.partyAName = '中国电建集团成都勘测设计研究院有限公司'
132
+      } else {
133
+        this.queryParams.partyAName = null
134
+      }
119
       listPartyA(this.queryParams).then(response => {
135
       listPartyA(this.queryParams).then(response => {
120
         this.partyAList = response.rows;
136
         this.partyAList = response.rows;
121
         this.total = response.total;
137
         this.total = response.total;

+ 8
- 8
oa-ui/src/views/flowable/form/projectProcess/addproject.vue 查看文件

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-18 11:00:04
3
  * @Date: 2024-03-18 11:00:04
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-08-13 13:56:20
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-20 16:34:35
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
38
       </el-form-item>
38
       </el-form-item>
39
       <el-form-item label="甲方单位" prop="partyAId">
39
       <el-form-item label="甲方单位" prop="partyAId">
40
         <el-select v-model="addForm.partyAId" filterable placeholder="请选择" disabled style="width: 100%;">
40
         <el-select v-model="addForm.partyAId" filterable placeholder="请选择" disabled style="width: 100%;">
41
-          <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName"
42
-            :value="item.partyAId" :disabled="disabled">
41
+          <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName" :value="item.partyAId"
42
+            :disabled="disabled">
43
           </el-option>
43
           </el-option>
44
         </el-select>
44
         </el-select>
45
         <el-button type="primary" @click="partyAOpen = true" size="mini"
45
         <el-button type="primary" @click="partyAOpen = true" size="mini"
46
-          v-if="$route.query.taskName == '项目登记'" >选择单位</el-button>
46
+          v-if="$route.query.taskName == '项目登记'">选择单位</el-button>
47
       </el-form-item>
47
       </el-form-item>
48
       <el-form-item label="联系人:" prop="contactPerson">
48
       <el-form-item label="联系人:" prop="contactPerson">
49
         <el-input v-model="addForm.contactPerson"></el-input>
49
         <el-input v-model="addForm.contactPerson"></el-input>
93
     <el-dialog title="选择合同" :visible.sync="openContract" width="70%" append-to-body>
93
     <el-dialog title="选择合同" :visible.sync="openContract" width="70%" append-to-body>
94
       <choose-contract @choose="setContract" @close="openContract = false"></choose-contract>
94
       <choose-contract @choose="setContract" @close="openContract = false"></choose-contract>
95
     </el-dialog>
95
     </el-dialog>
96
-    
97
-    <el-dialog title="选择甲方单位" :visible.sync="partyAOpen" width="70%" append-to-body>
98
-      <choose-party-a @confirm="confirmPartyA"></choose-party-a>
96
+
97
+    <el-dialog title="选择甲方单位" :visible.sync="partyAOpen" width="60%" append-to-body>
98
+      <choose-party-a @confirm="confirmPartyA" :projectSource="addForm.projectSource"></choose-party-a>
99
     </el-dialog>
99
     </el-dialog>
100
   </div>
100
   </div>
101
 </template>
101
 </template>

+ 12
- 11
oa-ui/src/views/flowable/form/settleForm.vue 查看文件

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-30 09:03:14
3
  * @Date: 2024-04-30 09:03:14
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-15 09:29:00
5
+ * @LastEditTime: 2024-08-20 10:44:03
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container" v-loading="loading">
8
   <div class="app-container" v-loading="loading">
673
         if (settleWorkResponse) {
673
         if (settleWorkResponse) {
674
           this.settleWorkList = settleWorkResponse.rows;
674
           this.settleWorkList = settleWorkResponse.rows;
675
           for (let work of this.settleWorkList) {
675
           for (let work of this.settleWorkList) {
676
-            getPrice(work.priceId).then((settleWorkResponse) => {
677
-              if (settleWorkResponse.data) {
678
-                this.setValue(work, "scale", settleWorkResponse.data.scaleGrade);
679
-                this.setValue(work, "unit", settleWorkResponse.data.unit);
680
-                if (work.groundType == "0") {
681
-                  work.price = settleWorkResponse.data.commonPrice;
682
-                } else {
683
-                  work.price = settleWorkResponse.data.complexPrice;
676
+            if(work.priceId)
677
+              getPrice(work.priceId).then((settleWorkResponse) => {
678
+                if (settleWorkResponse.data) {
679
+                  this.setValue(work, "scale", settleWorkResponse.data.scaleGrade);
680
+                  this.setValue(work, "unit", settleWorkResponse.data.unit);
681
+                  if (work.groundType == "0") {
682
+                    work.price = settleWorkResponse.data.commonPrice;
683
+                  } else {
684
+                    work.price = settleWorkResponse.data.complexPrice;
685
+                  }
684
                 }
686
                 }
685
-              }
686
-            });
687
+              });
687
           }
688
           }
688
         }
689
         }
689
         // 结算汇总里的扣除明细以及部门结算金额
690
         // 结算汇总里的扣除明细以及部门结算金额

+ 7
- 2
oa-ui/src/views/flowable/form/work/declareForm.vue 查看文件

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-08-16 09:16:36
3
  * @Date: 2024-08-16 09:16:36
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-16 16:24:17
5
+ * @LastEditTime: 2024-08-19 11:05:07
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
255
       })
255
       })
256
     },
256
     },
257
     async approveForm() {
257
     async approveForm() {
258
-      updateDeclare(this.form);
259
       const params = { taskId: this.taskForm.taskId };
258
       const params = { taskId: this.taskForm.taskId };
260
       if (this.taskName == '项目负责人审核') {
259
       if (this.taskName == '项目负责人审核') {
260
+        this.form.checkStatus = '1';
261
+        updateDeclare(this.form);
261
         let resData = await getUsersDeptLeader({ userId: this.form.userId });
262
         let resData = await getUsersDeptLeader({ userId: this.form.userId });
262
         if (resData.data) {
263
         if (resData.data) {
263
           this.$set(this.taskForm.variables, "approval", resData.data.userId);
264
           this.$set(this.taskForm.variables, "approval", resData.data.userId);
266
           })
267
           })
267
         }
268
         }
268
       } else if (this.taskName == '部门负责人审核') {
269
       } else if (this.taskName == '部门负责人审核') {
270
+        this.form.auditStatus = '1';
271
+        updateDeclare(this.form);
269
         this.$set(this.taskForm.variables, "approval", this.form.userId);
272
         this.$set(this.taskForm.variables, "approval", this.form.userId);
270
         getNextFlowNode(params).then(() => {
273
         getNextFlowNode(params).then(() => {
271
           this.handleComplete(this.taskForm);
274
           this.handleComplete(this.taskForm);
273
       }
276
       }
274
     },
277
     },
275
     confirmForm() {
278
     confirmForm() {
279
+      this.form.confirmStatus = '1';
280
+      updateDeclare(this.form);
276
       const params = { taskId: this.taskForm.taskId };
281
       const params = { taskId: this.taskForm.taskId };
277
       getNextFlowNode(params).then(() => {
282
       getNextFlowNode(params).then(() => {
278
         this.handleComplete(this.taskForm);
283
         this.handleComplete(this.taskForm);

+ 66
- 11
oa-ui/src/views/flowable/task/finished/index.vue 查看文件

17
     </el-form>
17
     </el-form>
18
 
18
 
19
     <el-row :gutter="10" class="mb8">
19
     <el-row :gutter="10" class="mb8">
20
-      <el-col :span="1.5">
20
+      <!-- <el-col :span="1.5">
21
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
21
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
22
           v-hasPermi="['system:deployment:remove']">删除</el-button>
22
           v-hasPermi="['system:deployment:remove']">删除</el-button>
23
-      </el-col>
23
+      </el-col> -->
24
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
24
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
25
     </el-row>
25
     </el-row>
26
 
26
 
27
-    <el-table v-loading="loading" :data="finishedList" border @selection-change="handleSelectionChange">
28
-      <el-table-column type="selection" width="55" align="center" />
29
-      <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true" />
30
-      <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true" />
27
+    <el-table v-loading="loading" :data="tableData" border @selection-change="handleSelectionChange">
28
+      <!-- <el-table-column type="selection" width="55" align="center" /> -->
29
+      <el-table-column type="expand">
30
+        <template slot-scope="props">
31
+          <el-timeline>
32
+            <el-timeline-item v-for="(process, index) in props.row.children" :key="index"
33
+              :timestamp="process.createTime" :color="'#0bbd87'">
34
+              <el-card>
35
+                <el-descriptions :column="5" border>
36
+                  <el-descriptions-item label="任务节点">{{ process.taskName }}</el-descriptions-item>
37
+                  <el-descriptions-item label="流程发起人">{{ process.startUserName }}
38
+                    <el-tag type="info" size="mini">
39
+                      {{ process.startDeptName }}
40
+                    </el-tag></el-descriptions-item>
41
+                  <el-descriptions-item label="接受时间">{{ process.createTime }}</el-descriptions-item>
42
+                  <el-descriptions-item label="审批时间">{{ process.finishTime }}</el-descriptions-item>
43
+                  <el-descriptions-item label="耗时">{{ process.duration }}</el-descriptions-item>
44
+                </el-descriptions>
45
+              </el-card>
46
+            </el-timeline-item>
47
+          </el-timeline>
48
+        </template>
49
+      </el-table-column>
50
+      <!-- <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true" />
51
+      <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true" /> -->
31
       <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true" />
52
       <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true" />
53
+      <el-table-column label="项目编号" align="center" prop="projectName" :formatter="formatProjectName" />
32
       <el-table-column label="任务节点" align="center" prop="taskName" />
54
       <el-table-column label="任务节点" align="center" prop="taskName" />
33
       <el-table-column label="流程发起人" align="center">
55
       <el-table-column label="流程发起人" align="center">
34
         <template slot-scope="scope">
56
         <template slot-scope="scope">
47
           <el-button size="mini" type="text" icon="el-icon-tickets"
69
           <el-button size="mini" type="text" icon="el-icon-tickets"
48
             @click="handleFlowRecord(scope.row)">办理进度</el-button>
70
             @click="handleFlowRecord(scope.row)">办理进度</el-button>
49
           <el-button size="mini" type="text" icon="el-icon-tickets" @click="handleFlowNote(scope.row)">表单信息</el-button>
71
           <el-button size="mini" type="text" icon="el-icon-tickets" @click="handleFlowNote(scope.row)">表单信息</el-button>
50
-          <el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleRevoke(scope.row)" :disabled="beDisabled(scope.row)">撤回
72
+          <el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleRevoke(scope.row)"
73
+            :disabled="beDisabled(scope.row)">撤回
51
           </el-button>
74
           </el-button>
52
         </template>
75
         </template>
53
       </el-table-column>
76
       </el-table-column>
121
       formOpen: false,
144
       formOpen: false,
122
       // 当前点击的行数据
145
       // 当前点击的行数据
123
       clickRow: {},
146
       clickRow: {},
124
-      detailsOpen:false
147
+      detailsOpen: false,
125
     };
148
     };
126
   },
149
   },
127
   created() {
150
   created() {
128
     this.getList();
151
     this.getList();
129
   },
152
   },
153
+  computed: {
154
+    tableData() {
155
+      const processed = [];
156
+      const map = {};
157
+      this.finishedList.forEach(item => {
158
+        if (!map[item.procInsId]) {
159
+          map[item.procInsId] = { ...item, children: [] };
160
+          processed.push(map[item.procInsId]);
161
+        } else {
162
+          map[item.procInsId].children.push(item);
163
+        }
164
+      });
165
+      console.log(processed);
166
+      return processed;
167
+    },
168
+  },
130
   methods: {
169
   methods: {
131
     /** 查询流程定义列表 */
170
     /** 查询流程定义列表 */
132
     getList() {
171
     getList() {
223
         }
262
         }
224
       })
263
       })
225
     },
264
     },
226
-    beDisabled(row){
227
-      if(row.procDefName == '项目流转' && row.taskName == '项目安排'){
265
+    beDisabled(row) {
266
+      if (row.procDefName == '项目流转' && row.taskName == '项目安排') {
228
         return true
267
         return true
229
-      }else{
268
+      } else {
230
         return false
269
         return false
231
       }
270
       }
232
     },
271
     },
304
       }).then(response => {
343
       }).then(response => {
305
         this.download(response.msg);
344
         this.download(response.msg);
306
       })
345
       })
346
+    },
347
+    formatProjectName(row){
348
+      if(row.projectNumber && row.projectName)
349
+        return row.projectNumber + '-' + row.projectName
350
+      else
351
+        return '无'
307
     }
352
     }
308
   }
353
   }
309
 };
354
 };
310
 </script>
355
 </script>
356
+<style lang="scss" scoped>
357
+.timeline-table {
358
+  border-collapse: collapse;
359
+
360
+  td {
361
+    padding: 8px;
362
+  }
363
+
364
+}
365
+</style>

+ 32
- 32
oa-ui/src/views/flowable/task/myProcess/index.vue 查看文件

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-24 10:21:34
5
+ * @LastEditTime: 2024-08-20 10:58:56
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
32
     <el-table v-loading="loading" :data="myProcessList" border @selection-change="handleSelectionChange">
32
     <el-table v-loading="loading" :data="myProcessList" border @selection-change="handleSelectionChange">
33
       <!-- <el-table-column type="selection" width="55" align="center" /> -->
33
       <!-- <el-table-column type="selection" width="55" align="center" /> -->
34
       <el-table-column type="index" label="序号" width="55" align="center" />
34
       <el-table-column type="index" label="序号" width="55" align="center" />
35
-      <el-table-column label="流程状态" align="center" width="100">
35
+      <el-table-column label="流程状态" align="center" prop="finishTime" width="100">
36
         <template slot-scope="scope">
36
         <template slot-scope="scope">
37
-          <el-tag v-if="scope.row.finishTime == null" size="mini">进行中</el-tag>
37
+          <el-tag type="warning" v-if="scope.row.finishTime == null" size="mini">进行中</el-tag>
38
           <el-tag type="success" v-if="scope.row.finishTime != null" size="mini">已完成</el-tag>
38
           <el-tag type="success" v-if="scope.row.finishTime != null" size="mini">已完成</el-tag>
39
         </template>
39
         </template>
40
       </el-table-column>
40
       </el-table-column>
41
       <!-- <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true" /> -->
41
       <!-- <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true" /> -->
42
       <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true" />
42
       <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true" />
43
+      <el-table-column label="项目编号" align="center" prop="projectName" :formatter="formatProjectName" />
43
       <!-- <el-table-column label="流程类别" align="center" prop="category" width="100px" /> -->
44
       <!-- <el-table-column label="流程类别" align="center" prop="category" width="100px" /> -->
44
       <!-- <el-table-column label="流程版本" align="center" width="80px">
45
       <!-- <el-table-column label="流程版本" align="center" width="80px">
45
         <template slot-scope="scope">
46
         <template slot-scope="scope">
76
     <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
77
     <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
77
       <progress-tree :definitionList="definitionList" @confirm="handleStartProcess"
78
       <progress-tree :definitionList="definitionList" @confirm="handleStartProcess"
78
         @close="open = false"></progress-tree>
79
         @close="open = false"></progress-tree>
79
-      <!-- <el-form :model="queryProcessParams" ref="queryProcessForm" :inline="true" v-show="showSearch" label-width="68px">
80
-        <el-form-item label="名称" prop="name">
81
-          <el-input v-model="queryProcessParams.name" placeholder="请输入名称" clearable size="small"
82
-            @keyup.enter.native="handleQuery" />
83
-        </el-form-item>
84
-        <el-form-item>
85
-          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleProcessQuery">搜索</el-button>
86
-          <el-button icon="el-icon-refresh" size="mini" @click="resetProcessQuery">重置</el-button>
87
-        </el-form-item>
88
-      </el-form> -->
89
-      <!-- <el-table v-loading="processLoading" fit :data="definitionList" border>
90
-        <el-table-column label="流程名称" align="center" prop="name" />
91
-        <el-table-column label="流程版本" align="center">
92
-          <template slot-scope="scope">
93
-            <el-tag size="medium">v{{ scope.row.version }}</el-tag>
94
-          </template>
95
-        </el-table-column>
96
-        <el-table-column label="流程分类" align="center" prop="category" />
97
-        <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width">
98
-
99
-          <template slot-scope="scope">
100
-            <el-button size="mini" type="text" icon="el-icon-edit-outline"
101
-              @click="handleStartProcess(scope.row)">发起流程</el-button>
102
-          </template>
103
-        </el-table-column>
104
-      </el-table>
105
-      <pagination v-show="processTotal > 0" :total="processTotal" :page.sync="queryProcessParams.pageNum"
106
-        :limit.sync="queryProcessParams.pageSize" @pagination="listDefinition" /> -->
107
     </el-dialog>
80
     </el-dialog>
108
     <el-dialog title="流程进度" :visible.sync="detailsOpen" append-to-body width="600px">
81
     <el-dialog title="流程进度" :visible.sync="detailsOpen" append-to-body width="600px">
109
       <el-scrollbar style="height: 600px;">
82
       <el-scrollbar style="height: 600px;">
174
       // 查询参数
147
       // 查询参数
175
       queryParams: {
148
       queryParams: {
176
         pageNum: 1,
149
         pageNum: 1,
177
-        pageSize: 10,
150
+        pageSize: 20,
178
         name: null,
151
         name: null,
179
         category: null,
152
         category: null,
180
         key: null,
153
         key: null,
236
       this.loading = true;
209
       this.loading = true;
237
       myProcessList(this.queryParams).then(response => {
210
       myProcessList(this.queryParams).then(response => {
238
         this.myProcessList = response.data.records;
211
         this.myProcessList = response.data.records;
212
+        this.myProcessList.sort((a, b) => {
213
+          // 如果有结束时间,则返回1,表示a应该排在b之后  
214
+          if (a.finishTime) return 1;
215
+          // 如果b有结束时间,则返回-1,表示a应该排在b之前  
216
+          if (b.finishTime) return -1;
217
+          // 如果都没有结束时间,则返回0,表示它们的顺序不变  
218
+          return 0;
219
+        })
239
         this.total = response.data.total;
220
         this.total = response.data.total;
240
         this.loading = false;
221
         this.loading = false;
241
       });
222
       });
287
       this.single = selection.length !== 1
268
       this.single = selection.length !== 1
288
       this.multiple = !selection.length
269
       this.multiple = !selection.length
289
     },
270
     },
271
+    // 排序
272
+    handleSortChange({ column, prop, order }) {
273
+      if (prop === 'finishTime') {
274
+        this.myProcessList.sort((a, b) => {
275
+          // 如果有结束时间,则排在后面  
276
+          if (a.finishTime && !b.finishTime) return 1;
277
+          // 如果没有结束时间,则排在前面  
278
+          if (!a.finishTime && b.finishTime) return -1;
279
+          // 如果都有或都没有结束时间,则保持原有顺序(或根据其他规则排序)  
280
+          return 0;
281
+        })
282
+      }
283
+    },
290
     /** 新增按钮操作 */
284
     /** 新增按钮操作 */
291
     handleAdd() {
285
     handleAdd() {
292
       this.open = true;
286
       this.open = true;
496
       }).then(response => {
490
       }).then(response => {
497
         this.download(response.msg);
491
         this.download(response.msg);
498
       })
492
       })
493
+    },
494
+    formatProjectName(row) {
495
+      if (row.projectNumber && row.projectName)
496
+        return row.projectNumber + '-' + row.projectName
497
+      else
498
+        return '无'
499
     }
499
     }
500
   }
500
   }
501
 };
501
 };

+ 7
- 0
oa-ui/src/views/flowable/task/todo/index.vue 查看文件

29
       <el-table-column type="index" label="序号" width="55" align="center" />
29
       <el-table-column type="index" label="序号" width="55" align="center" />
30
       <!-- <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true" /> -->
30
       <!-- <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true" /> -->
31
       <el-table-column label="流程名称" align="center" prop="procDefName" />
31
       <el-table-column label="流程名称" align="center" prop="procDefName" />
32
+      <el-table-column label="项目编号" align="center" prop="projectName" :formatter="formatProjectName" />
32
       <el-table-column label="当前节点" align="center" prop="taskName" />
33
       <el-table-column label="当前节点" align="center" prop="taskName" />
33
       <!-- <el-table-column label="流程版本" align="center">
34
       <!-- <el-table-column label="流程版本" align="center">
34
         <template slot-scope="scope">
35
         <template slot-scope="scope">
252
         this.$modal.msgSuccess("删除成功");
253
         this.$modal.msgSuccess("删除成功");
253
       })
254
       })
254
     },
255
     },
256
+    formatProjectName(row){
257
+      if(row.projectNumber && row.projectName)
258
+        return row.projectNumber + '-' + row.projectName
259
+      else
260
+        return '无'
261
+    }
255
   }
262
   }
256
 };
263
 };
257
 </script>
264
 </script>

+ 8
- 12
oa-ui/src/views/index.vue 查看文件

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-23 16:54:28
5
+ * @LastEditTime: 2024-08-20 11:01:48
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
88
           <el-table v-loading="taskLoading" :data="todoList" height="400px">
88
           <el-table v-loading="taskLoading" :data="todoList" height="400px">
89
             <el-table-column type="index" label="序号" width="55" align="center" />
89
             <el-table-column type="index" label="序号" width="55" align="center" />
90
             <el-table-column label="流程名称" align="center" prop="procDefName" />
90
             <el-table-column label="流程名称" align="center" prop="procDefName" />
91
+      <el-table-column label="项目编号" align="center" prop="projectName" :formatter="formatProjectName" show-overflow-tooltip />
91
             <el-table-column label="当前节点" align="center" prop="taskName" />
92
             <el-table-column label="当前节点" align="center" prop="taskName" />
92
             <el-table-column label="流程发起人" align="center">
93
             <el-table-column label="流程发起人" align="center">
93
               <template slot-scope="scope">
94
               <template slot-scope="scope">
104
             </el-table-column>
105
             </el-table-column>
105
           </el-table>
106
           </el-table>
106
         </div>
107
         </div>
107
-        <!-- <div class="calendar-warpper"> -->
108
-        <!-- <Calendar></Calendar> -->
109
-        <!-- <el-calendar v-model="times"> -->
110
-        <!-- </el-calendar> -->
111
-        <!-- </div> -->
112
       </el-col>
108
       </el-col>
113
-      <!-- <el-col :span="8" :xs="24">
114
-        <div class="header">XXXX</div>
115
-        <div class="project-content">
116
-
117
-        </div>
118
-      </el-col> -->
119
     </el-row>
109
     </el-row>
120
 
110
 
121
     <el-dialog title="" :visible.sync="noticeOpen" width="750px" append-to-body>
111
     <el-dialog title="" :visible.sync="noticeOpen" width="750px" append-to-body>
386
       }
376
       }
387
       return path
377
       return path
388
     },
378
     },
379
+    formatProjectName(row){
380
+      if(row.projectNumber && row.projectName)
381
+        return row.projectNumber + '-' + row.projectName
382
+      else
383
+        return '无'
384
+    }
389
   }
385
   }
390
 }
386
 }
391
 </script>
387
 </script>

+ 9
- 17
oa-ui/src/views/oa/borrow/index.vue 查看文件

36
     </el-form>
36
     </el-form>
37
 
37
 
38
     <el-row :gutter="10" class="mb8">
38
     <el-row :gutter="10" class="mb8">
39
-      <!-- <el-col :span="1.5">
40
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
41
-          v-hasPermi="['oa:borrow:add']">新增</el-button>
42
-      </el-col>
43
-      <el-col :span="1.5">
44
-        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
45
-          v-hasPermi="['oa:borrow:edit']">修改</el-button>
46
-      </el-col>
47
-      <el-col :span="1.5">
48
-        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
49
-          v-hasPermi="['oa:borrow:remove']">删除</el-button>
50
-      </el-col>
51
-      <el-col :span="1.5">
52
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
53
-          v-hasPermi="['oa:borrow:export']">导出</el-button>
54
-      </el-col> -->
55
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
39
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
56
     </el-row>
40
     </el-row>
57
 
41
 
108
 import { listBorrow, getBorrow, delBorrow, addBorrow, updateBorrow } from "@/api/oa/borrow/borrow";
92
 import { listBorrow, getBorrow, delBorrow, addBorrow, updateBorrow } from "@/api/oa/borrow/borrow";
109
 import { listProject } from '@/api/oa/project/project';
93
 import { listProject } from '@/api/oa/project/project';
110
 import BorrowForm from '../../flowable/form/finance/borrowForm.vue';
94
 import BorrowForm from '../../flowable/form/finance/borrowForm.vue';
95
+import { mapGetters } from 'vuex'
111
 export default {
96
 export default {
112
   name: "Borrow",
97
   name: "Borrow",
113
   components: {
98
   components: {
114
     BorrowForm
99
     BorrowForm
115
   },
100
   },
101
+  computed: {
102
+    ...mapGetters(['roles','deptId']),
103
+  },
116
   data() {
104
   data() {
117
     return {
105
     return {
118
       // 遮罩层
106
       // 遮罩层
158
         xmTime: null,
146
         xmTime: null,
159
         managerTime: null,
147
         managerTime: null,
160
         zjlTime: null,
148
         zjlTime: null,
161
-        lendTime: null
149
+        lendTime: null,
162
       },
150
       },
163
       // 表单参数
151
       // 表单参数
164
       form: {},
152
       form: {},
179
     /** 查询cmc借款申请列表 */
167
     /** 查询cmc借款申请列表 */
180
     getList() {
168
     getList() {
181
       this.loading = true;
169
       this.loading = true;
170
+      if(this.roles.some(element => element === "dept")){
171
+        this.queryParams.applyDept = this.deptId;
172
+        // this.queryParams.undertakingDept = this.deptId;
173
+      }
182
       listBorrow(this.queryParams).then(response => {
174
       listBorrow(this.queryParams).then(response => {
183
         this.borrowList = response.rows;
175
         this.borrowList = response.rows;
184
         this.total = response.total;
176
         this.total = response.total;

+ 8
- 1
oa-ui/src/views/oa/car/approval.vue 查看文件

65
           <span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
65
           <span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
66
         </template>
66
         </template>
67
       </el-table-column>
67
       </el-table-column>
68
-      <el-table-column label="结束日期" align="center" prop="endDate" >
68
+      <el-table-column label="结束日期" align="center" prop="endDate">
69
         <template slot-scope="scope">
69
         <template slot-scope="scope">
70
           <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
70
           <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
71
         </template>
71
         </template>
98
 import { listCarApproval, getCarApproval, delCarApproval, addCarApproval, updateCarApproval } from "@/api/oa/car/carApproval";
98
 import { listCarApproval, getCarApproval, delCarApproval, addCarApproval, updateCarApproval } from "@/api/oa/car/carApproval";
99
 import { listProject } from '@/api/oa/project/project';
99
 import { listProject } from '@/api/oa/project/project';
100
 import carForm from '../../flowable/form/oa/carForm.vue';
100
 import carForm from '../../flowable/form/oa/carForm.vue';
101
+import { mapGetters } from 'vuex'
101
 
102
 
102
 export default {
103
 export default {
103
   components: { carForm },
104
   components: { carForm },
104
   name: "CarApproval",
105
   name: "CarApproval",
106
+  computed: {
107
+    ...mapGetters(['roles', 'deptId']),
108
+  },
105
   data() {
109
   data() {
106
     return {
110
     return {
107
       // 遮罩层
111
       // 遮罩层
173
     /** 查询cmc用车审批列表 */
177
     /** 查询cmc用车审批列表 */
174
     getList() {
178
     getList() {
175
       this.loading = true;
179
       this.loading = true;
180
+      if (this.roles.some(element => element === "dept")) {
181
+        this.queryParams.useDept = this.deptId;
182
+      }
176
       listCarApproval(this.queryParams).then(response => {
183
       listCarApproval(this.queryParams).then(response => {
177
         this.carApprovalList = response.rows;
184
         this.carApprovalList = response.rows;
178
         this.total = response.total;
185
         this.total = response.total;

+ 48
- 44
oa-ui/src/views/oa/declare/index.vue 查看文件

1
 <!--
1
 <!--
2
  * @Author: wrh
2
  * @Author: wrh
3
  * @Date: 2024-08-14 14:24:11
3
  * @Date: 2024-08-14 14:24:11
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-08-14 15:11:29
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-19 11:47:08
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
22
           </el-option>
22
           </el-option>
23
         </el-select>
23
         </el-select>
24
       </el-form-item>
24
       </el-form-item>
25
-      <el-form-item label="工作项目" prop="workItem">
26
-        <el-input
27
-          v-model="queryParams.workItem"
28
-          placeholder="请输入工作项目"
29
-          clearable
30
-          @keyup.enter.native="handleQuery"
31
-        />
32
-      </el-form-item>
33
       <el-form-item label="填报时间" prop="submitTime">
25
       <el-form-item label="填报时间" prop="submitTime">
34
-        <el-date-picker clearable
35
-          v-model="queryParams.submitTime"
36
-          type="date"
37
-          value-format="yyyy-MM-dd"
26
+        <el-date-picker clearable v-model="queryParams.submitTime" type="date" value-format="yyyy-MM-dd"
38
           placeholder="请选择填报时间">
27
           placeholder="请选择填报时间">
39
         </el-date-picker>
28
         </el-date-picker>
40
       </el-form-item>
29
       </el-form-item>
78
         >删除</el-button>
67
         >删除</el-button>
79
       </el-col> -->
68
       </el-col> -->
80
       <el-col :span="1.5">
69
       <el-col :span="1.5">
81
-        <el-button
82
-          type="warning"
83
-          plain
84
-          icon="el-icon-download"
85
-          size="mini"
86
-          @click="handleExport"
87
-          v-hasPermi="['oa:declare:export']"
88
-        >导出</el-button>
70
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
71
+          v-hasPermi="['oa:declare:export']">导出</el-button>
89
       </el-col>
72
       </el-col>
90
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
73
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
91
     </el-row>
74
     </el-row>
102
       <el-table-column label="工天" align="center" prop="workLoad" />
85
       <el-table-column label="工天" align="center" prop="workLoad" />
103
       <el-table-column label="工天单价" align="center" prop="price" />
86
       <el-table-column label="工天单价" align="center" prop="price" />
104
       <el-table-column label="系数" align="center" prop="coefficient" />
87
       <el-table-column label="系数" align="center" prop="coefficient" />
88
+      <el-table-column label="预估绩效" align="center">
89
+        <template slot-scope="scope">
90
+          {{ predictMoney(scope.row) }}
91
+        </template>
92
+      </el-table-column>
105
       <el-table-column label="一审状态" align="center" prop="checkStatus">
93
       <el-table-column label="一审状态" align="center" prop="checkStatus">
106
         <template slot-scope="scope">
94
         <template slot-scope="scope">
107
-          <span>{{ scope.row.checkStatus == '0' ? '待审核' : '已审核' }}</span>
95
+          <el-tag :type="formartType(scope.row.checkStatus)">{{ formatFn(scope.row, 'checkStatus') }}</el-tag>
108
         </template>
96
         </template>
109
       </el-table-column>
97
       </el-table-column>
110
       <el-table-column label="二审状态" align="center" prop="auditStatus">
98
       <el-table-column label="二审状态" align="center" prop="auditStatus">
111
         <template slot-scope="scope">
99
         <template slot-scope="scope">
112
-          <span>{{ scope.row.auditStatus == '0' ? '待审核' : '已审核' }}</span>
100
+          <el-tag :type="formartType(scope.row.auditStatus)">{{ formatFn(scope.row, 'auditStatus') }}</el-tag>
113
         </template>
101
         </template>
114
       </el-table-column>
102
       </el-table-column>
115
-      <el-table-column label="填报时间" align="center" prop="submitTime" width="180">
103
+      <el-table-column label="确认状态" align="center" prop="confirmStatus">
116
         <template slot-scope="scope">
104
         <template slot-scope="scope">
117
-          <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
105
+          <el-tag :type="formartType(scope.row.confirmStatus)">{{ formatFn(scope.row, 'confirmStatus') }}</el-tag>
118
         </template>
106
         </template>
119
       </el-table-column>
107
       </el-table-column>
120
-      <el-table-column label="确认状态" align="center" prop="confirmStatus">
108
+      <el-table-column label="填报时间" align="center" prop="submitTime" width="180">
121
         <template slot-scope="scope">
109
         <template slot-scope="scope">
122
-          <span>{{ scope.row.confirmStatus == '0' ? '待确认' : '已确认' }}</span>
110
+          <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
123
         </template>
111
         </template>
124
       </el-table-column>
112
       </el-table-column>
125
       <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
113
       <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
141
         </template>
129
         </template>
142
       </el-table-column> -->
130
       </el-table-column> -->
143
     </el-table>
131
     </el-table>
144
-    
145
-    <pagination
146
-      v-show="total>0"
147
-      :total="total"
148
-      :page.sync="queryParams.pageNum"
149
-      :limit.sync="queryParams.pageSize"
150
-      @pagination="getList"
151
-    />
132
+
133
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
134
+      @pagination="getList" />
152
 
135
 
153
     <!-- 添加或修改工作填报对话框 -->
136
     <!-- 添加或修改工作填报对话框 -->
154
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
137
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
163
           <el-input v-model="form.workItem" placeholder="请输入工作项目" />
146
           <el-input v-model="form.workItem" placeholder="请输入工作项目" />
164
         </el-form-item>
147
         </el-form-item>
165
         <el-form-item label="工作内容">
148
         <el-form-item label="工作内容">
166
-          <editor v-model="form.workContent" :min-height="192"/>
149
+          <editor v-model="form.workContent" :min-height="192" />
167
         </el-form-item>
150
         </el-form-item>
168
         <el-form-item label="工天" prop="workLoad">
151
         <el-form-item label="工天" prop="workLoad">
169
           <el-input v-model="form.workLoad" placeholder="请输入工天" />
152
           <el-input v-model="form.workLoad" placeholder="请输入工天" />
175
           <el-input v-model="form.coefficient" placeholder="请输入系数" />
158
           <el-input v-model="form.coefficient" placeholder="请输入系数" />
176
         </el-form-item>
159
         </el-form-item>
177
         <el-form-item label="填报时间" prop="submitTime">
160
         <el-form-item label="填报时间" prop="submitTime">
178
-          <el-date-picker clearable
179
-            v-model="form.submitTime"
180
-            type="date"
181
-            value-format="yyyy-MM-dd"
161
+          <el-date-picker clearable v-model="form.submitTime" type="date" value-format="yyyy-MM-dd"
182
             placeholder="请选择填报时间">
162
             placeholder="请选择填报时间">
183
           </el-date-picker>
163
           </el-date-picker>
184
         </el-form-item>
164
         </el-form-item>
301
     // 多选框选中数据
281
     // 多选框选中数据
302
     handleSelectionChange(selection) {
282
     handleSelectionChange(selection) {
303
       this.ids = selection.map(item => item.formId)
283
       this.ids = selection.map(item => item.formId)
304
-      this.single = selection.length!==1
284
+      this.single = selection.length !== 1
305
       this.multiple = !selection.length
285
       this.multiple = !selection.length
306
     },
286
     },
307
     /** 新增按钮操作 */
287
     /** 新增按钮操作 */
343
     /** 删除按钮操作 */
323
     /** 删除按钮操作 */
344
     handleDelete(row) {
324
     handleDelete(row) {
345
       const formIds = row.formId || this.ids;
325
       const formIds = row.formId || this.ids;
346
-      this.$modal.confirm('是否确认删除工作填报编号为"' + formIds + '"的数据项?').then(function() {
326
+      this.$modal.confirm('是否确认删除工作填报编号为"' + formIds + '"的数据项?').then(function () {
347
         return delDeclare(formIds);
327
         return delDeclare(formIds);
348
       }).then(() => {
328
       }).then(() => {
349
         this.getList();
329
         this.getList();
350
         this.$modal.msgSuccess("删除成功");
330
         this.$modal.msgSuccess("删除成功");
351
-      }).catch(() => {});
331
+      }).catch(() => { });
352
     },
332
     },
353
     /** 导出按钮操作 */
333
     /** 导出按钮操作 */
354
     handleExport() {
334
     handleExport() {
355
       this.download('oa/declare/export', {
335
       this.download('oa/declare/export', {
356
         ...this.queryParams
336
         ...this.queryParams
357
       }, `declare_${new Date().getTime()}.xlsx`)
337
       }, `declare_${new Date().getTime()}.xlsx`)
338
+    },
339
+    formatFn(row, type) {
340
+      if (type == 'confirmStatus') {
341
+        if (row[type] && row[type] == '1') {
342
+          return '已确认'
343
+        } else {
344
+          return '待确认'
345
+        }
346
+      }
347
+      if (row[type] && row[type] == '1') {
348
+        return '已审核'
349
+      } else {
350
+        return '待审核'
351
+      }
352
+    },
353
+    formartType(val) {
354
+      if (val && val == '1')
355
+        return 'success'
356
+      else
357
+        return 'warning'
358
+    },
359
+    predictMoney(row){
360
+      let result = parseFloat(row.price * row.workLoad * row.coefficient)
361
+      return result.toFixed(2)
358
     }
362
     }
359
   }
363
   }
360
 };
364
 };

+ 8
- 1
oa-ui/src/views/oa/project/info.vue 查看文件

141
                 </el-table>
141
                 </el-table>
142
               </div>
142
               </div>
143
             </el-descriptions-item>
143
             </el-descriptions-item>
144
+            <el-descriptions-item :span="3">
145
+              <template slot="label">
146
+                <svg-icon slot="prefix" icon-class="business" />
147
+                资料提交要求
148
+              </template>
149
+              {{ project.projectRequest }}
150
+            </el-descriptions-item>
144
             <el-descriptions-item>
151
             <el-descriptions-item>
145
               <template slot="label">
152
               <template slot="label">
146
-                <svg-icon slot="prefix" icon-class="edit" />
153
+                <svg-icon slot="prefix" icon-class="excel" />
147
                 项目备注
154
                 项目备注
148
               </template>
155
               </template>
149
               {{ project.remark }}
156
               {{ project.remark }}

正在加载...
取消
保存