Browse Source

完善项目结算流程

余思翰 1 year ago
parent
commit
87549139bc

+ 2
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcSettleMapper.xml View File

40
 
40
 
41
     <select id="selectCmcSettleList" parameterType="CmcSettle" resultMap="CmcSettleResult">
41
     <select id="selectCmcSettleList" parameterType="CmcSettle" resultMap="CmcSettleResult">
42
         <include refid="selectCmcSettleVo"/>
42
         <include refid="selectCmcSettleVo"/>
43
-        <where>  
43
+        <where>
44
+            <if test="settleId != null  and settleId != ''"> and settle_id = #{settleId}</if>
44
             <if test="projectId != null  and projectId != ''"> and project_id = #{projectId}</if>
45
             <if test="projectId != null  and projectId != ''"> and project_id = #{projectId}</if>
45
             <if test="workloadReport != null  and workloadReport != ''"> and workload_report = #{workloadReport}</if>
46
             <if test="workloadReport != null  and workloadReport != ''"> and workload_report = #{workloadReport}</if>
46
             <if test="reporter != null "> and reporter = #{reporter}</if>
47
             <if test="reporter != null "> and reporter = #{reporter}</if>

+ 1
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcSettleSummaryMapper.xml View File

27
             <if test="amountXm != null "> and amount_xm = #{amountXm}</if>
27
             <if test="amountXm != null "> and amount_xm = #{amountXm}</if>
28
             <if test="amountManager != null "> and amount_manager = #{amountManager}</if>
28
             <if test="amountManager != null "> and amount_manager = #{amountManager}</if>
29
         </where>
29
         </where>
30
+        order by #{summaryId} asc
30
     </select>
31
     </select>
31
     
32
     
32
     <select id="selectCmcSettleSummaryBySettleId" parameterType="String" resultMap="CmcSettleSummaryResult">
33
     <select id="selectCmcSettleSummaryBySettleId" parameterType="String" resultMap="CmcSettleSummaryResult">

+ 1
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcSettleWorkMapper.xml View File

35
             <if test="settleXm != null "> and settle_xm = #{settleXm}</if>
35
             <if test="settleXm != null "> and settle_xm = #{settleXm}</if>
36
             <if test="settleManager != null "> and settle_manager = #{settleManager}</if>
36
             <if test="settleManager != null "> and settle_manager = #{settleManager}</if>
37
         </where>
37
         </where>
38
+        order by  #{workId} asc
38
     </select>
39
     </select>
39
     
40
     
40
     <select id="selectCmcSettleWorkBySettleId" parameterType="String" resultMap="CmcSettleWorkResult">
41
     <select id="selectCmcSettleWorkBySettleId" parameterType="String" resultMap="CmcSettleWorkResult">

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


+ 10
- 1
oa-ui/src/views/flowable/form/conditionDisplay/index.vue View File

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-23 17:08:16
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-05-07 16:08:23
6
+-->
1
 <template>
7
 <template>
2
   <div>
8
   <div>
3
     <sc-table :taskForm="taskForm" :tableForm="tableForm" v-if="taskForm.procDefName == '生产部门考核'"></sc-table>
9
     <sc-table :taskForm="taskForm" :tableForm="tableForm" v-if="taskForm.procDefName == '生产部门考核'"></sc-table>
10
     <car-form :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '用车审批'"></car-form>
16
     <car-form :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '用车审批'"></car-form>
11
     <technical-form :taskForm="taskForm" v-else-if="taskForm.procDefName == '技术交底'"></technical-form>
17
     <technical-form :taskForm="taskForm" v-else-if="taskForm.procDefName == '技术交底'"></technical-form>
12
     <safe-form :taskForm="taskForm" v-else-if="taskForm.procDefName == '安全交底'"></safe-form>
18
     <safe-form :taskForm="taskForm" v-else-if="taskForm.procDefName == '安全交底'"></safe-form>
19
+    <settle-form :taskForm="taskForm" :taskName="''" :disabled="true" v-else-if="taskForm.procDefName == '项目结算'"></settle-form>
13
   </div>
20
   </div>
14
 </template>
21
 </template>
15
 
22
 
24
 import projectProcess from '@/views/flowable/form/projectProcess/index'
31
 import projectProcess from '@/views/flowable/form/projectProcess/index'
25
 import TechnicalForm from '@/views/flowable/form/technicalForm.vue';
32
 import TechnicalForm from '@/views/flowable/form/technicalForm.vue';
26
 import SafeForm from '@/views/flowable/form/safeForm.vue';
33
 import SafeForm from '@/views/flowable/form/safeForm.vue';
34
+import SettleForm from '@/views/flowable/form/settleForm.vue';
27
 export default {
35
 export default {
28
   props: {
36
   props: {
29
     passingParam: {
37
     passingParam: {
45
     CarForm,
53
     CarForm,
46
     projectProcess,
54
     projectProcess,
47
     TechnicalForm,
55
     TechnicalForm,
48
-    SafeForm
56
+    SafeForm,
57
+    SettleForm
49
   },
58
   },
50
   data() {
59
   data() {
51
     return {
60
     return {

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

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-15 09:35:41
4
+ * @LastEditors: 
5
+ * @LastEditTime: 2024-05-07 17:06:16
6
+-->
1
 <!--
7
 <!--
2
  * @Author: ysh
8
  * @Author: ysh
3
  * @Date: 2024-04-08 13:56:14
9
  * @Date: 2024-04-08 13:56:14
97
       <div class="headers">
103
       <div class="headers">
98
         产值结算(内部)
104
         产值结算(内部)
99
         <div class="line"></div>
105
         <div class="line"></div>
106
+        <settle-data :taskForm="taskForm"></settle-data>
100
       </div>
107
       </div>
101
       <div slot="footer" class="dialog-footer" style="text-align: center">
108
       <div slot="footer" class="dialog-footer" style="text-align: center">
102
         <el-button @click="preserve()" :disabled="disabled" type="warning">保 存</el-button>
109
         <el-button @click="preserve()" :disabled="disabled" type="warning">保 存</el-button>
138
 import { getCar } from "@/api/oa/car/car";
145
 import { getCar } from "@/api/oa/car/car";
139
 import { listUser } from '@/api/system/user';
146
 import { listUser } from '@/api/system/user';
140
 import borrowData from '../borrow/borrowData.vue';
147
 import borrowData from '../borrow/borrowData.vue';
148
+import SettleData from '../settle/settleData.vue';
141
 export default {
149
 export default {
142
   components: {
150
   components: {
143
-    borrowData
151
+    borrowData,
152
+    SettleData
144
   },
153
   },
145
   computed: {
154
   computed: {
146
     ...mapGetters(["name", "userId"]),
155
     ...mapGetters(["name", "userId"]),

+ 1
- 3
oa-ui/src/views/flowable/form/projectProcess/index.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-23 16:06:30
5
+ * @LastEditTime: 2024-05-07 17:44:13
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
41
             <in-progress :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '项目生产'"
41
             <in-progress :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '项目生产'"
42
               @goBack="goBack"></in-progress>
42
               @goBack="goBack"></in-progress>
43
           </el-tab-pane>
43
           </el-tab-pane>
44
-          <el-tab-pane label="质量检查" name="质量检查"></el-tab-pane>
45
-          <el-tab-pane label="成果归档" name="成果归档"></el-tab-pane>
46
         </el-tabs>
44
         </el-tabs>
47
       </el-col>
45
       </el-col>
48
       <el-col :span="6" :xs="24">
46
       <el-col :span="6" :xs="24">

+ 69
- 0
oa-ui/src/views/flowable/form/settle/settleData.vue View File

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"
6
+          @click="addSettleFlow">结算申请</el-button>
7
+      </div>
8
+      <div>
9
+        <el-button icon="el-icon-refresh" circle size="mini" @click="getSettleData()"></el-button>
10
+      </div>
11
+    </div>
12
+
13
+    <el-table :data="dataList" style="width: 100%">
14
+      <el-table-column type="index" label="序号" width="50" />
15
+      <el-table-column label="上报人">
16
+        <template slot-scope="scope">
17
+          {{ getReporter(scope.row) }}
18
+        </template>
19
+      </el-table-column>
20
+    </el-table>
21
+  </div>
22
+</template>
23
+
24
+<script>
25
+import { listSettle, getSettle, delSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
26
+import { getUser } from "@/api/system/user";
27
+export default {
28
+  props: {
29
+    taskForm: {
30
+      type: Object,
31
+      required: true
32
+    }
33
+  },
34
+  data() {
35
+    return {
36
+      dataList: []
37
+    }
38
+  },
39
+  mounted() {
40
+    this.getSettleData()
41
+  },
42
+  methods: {
43
+    getSettleData() {
44
+      listSettle({ projectId: this.taskForm.formId }).then(res => {
45
+        console.log(res);
46
+        if (res.code == 200) {
47
+          this.dataList = res.rows
48
+        }
49
+      })
50
+    },
51
+    addSettleFlow() {
52
+
53
+    },
54
+    getReporter(row){
55
+      getUser(row.reporter).then(res=>{
56
+        console.log(res);
57
+        return res.data.nickName
58
+      })
59
+    }
60
+  }
61
+}
62
+</script>
63
+
64
+<style lang="scss" scoped>
65
+.nav-btn {
66
+  display: flex;
67
+  justify-content: space-between;
68
+}
69
+</style>

+ 226
- 77
oa-ui/src/views/flowable/form/settleForm.vue View File

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-05-06 17:48:28
5
+ * @LastEditTime: 2024-05-07 16:13:01
6
 -->
6
 -->
7
 <template>
7
 <template>
8
-  <div class="app-container">
8
+  <div class="app-container" v-loading="loading">
9
     <el-row :gutter="20">
9
     <el-row :gutter="20">
10
       <el-col :span="19" :xs="24">
10
       <el-col :span="19" :xs="24">
11
         <h2 class="text-center">项目结算表</h2>
11
         <h2 class="text-center">项目结算表</h2>
13
           项目信息
13
           项目信息
14
           <div class="line"></div>
14
           <div class="line"></div>
15
         </div>
15
         </div>
16
-        <el-form ref="form" :model="form" :rules="rules" label-width="160px">
16
+        <el-form ref="settleForm" :model="form" :rules="rules" label-width="160px" :disabled="disabled">
17
           <el-form-item label="项目编号" prop="projectId">
17
           <el-form-item label="项目编号" prop="projectId">
18
             <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
18
             <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
19
               :disabled="taskName != '结算发起'" clearable style="width: 100%">
19
               :disabled="taskName != '结算发起'" clearable style="width: 100%">
35
                 {{ chooseProject.contractNumber }}
35
                 {{ chooseProject.contractNumber }}
36
               </el-descriptions-item>
36
               </el-descriptions-item>
37
               <el-descriptions-item label="项目负责人" label-class-name="my-label">
37
               <el-descriptions-item label="项目负责人" label-class-name="my-label">
38
-                {{
39
-                  chooseProject.projectLeaderUser
40
-                  ? chooseProject.projectLeaderUser.nickName
41
-                  : ""
42
-                }}
38
+                {{ chooseProject.projectLeaderUser ? chooseProject.projectLeaderUser.nickName : "" }}
43
               </el-descriptions-item>
39
               </el-descriptions-item>
44
               <el-descriptions-item label="甲方单位" label-class-name="my-label">
40
               <el-descriptions-item label="甲方单位" label-class-name="my-label">
45
                 {{ chooseProject.partyA }}
41
                 {{ chooseProject.partyA }}
65
             </el-descriptions>
61
             </el-descriptions>
66
           </el-form-item>
62
           </el-form-item>
67
           <el-form-item label="工作量上报说明" prop="workloadReport">
63
           <el-form-item label="工作量上报说明" prop="workloadReport">
68
-            <el-input v-model="form.workloadReport" type="textarea" placeholder="请输入工作量上报说明" />
64
+            <el-input v-model="form.workloadReport" type="textarea" :disabled="taskName != '结算发起'"
65
+              placeholder="请输入工作量上报说明" />
69
           </el-form-item>
66
           </el-form-item>
70
           <el-row>
67
           <el-row>
71
             <el-col :span="6" :xs="24" :offset="12">
68
             <el-col :span="6" :xs="24" :offset="12">
152
                     :controls="false"></el-input-number>
149
                     :controls="false"></el-input-number>
153
                 </td>
150
                 </td>
154
                 <td>
151
                 <td>
155
-                  <el-input-number style="width: 100px" v-model="work.coefficient" clearable @blur="calculateSettle(work)"
156
-                    :controls="false"></el-input-number>
152
+                  <el-input-number style="width: 100px" v-model="work.coefficient" clearable
153
+                    @blur="calculateSettle(work)" :controls="false"></el-input-number>
157
                 </td>
154
                 </td>
158
                 <td>
155
                 <td>
159
                   <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
156
                   <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
224
                     :controls="false"></el-input-number>
221
                     :controls="false"></el-input-number>
225
                 </td>
222
                 </td>
226
               </tr>
223
               </tr>
224
+              <tr>
225
+                <td :colspan="2">结算说明</td>
226
+                <td :colspan="3">
227
+                  <el-input v-model="form.settleComment" type="textarea" clearable
228
+                    :autosize="{ minRows: 2, maxRows: 10 }">
229
+                  </el-input>
230
+                </td>
231
+              </tr>
227
             </table>
232
             </table>
228
             <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addSumWorkList"></el-button>
233
             <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addSumWorkList"></el-button>
229
           </el-form-item>
234
           </el-form-item>
235
               <div class="line"></div>
240
               <div class="line"></div>
236
             </div>
241
             </div>
237
             <el-form-item label="综合事务部(设备领用情况)">
242
             <el-form-item label="综合事务部(设备领用情况)">
238
-              <el-input v-model="form.zhComment" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
243
+              <el-input v-model="form.zhComment" type="textarea" :disabled="taskName != '综合事务部处理'" clearable
244
+                :autosize="{ minRows: 4, maxRows: 10 }">
239
               </el-input>
245
               </el-input>
240
             </el-form-item>
246
             </el-form-item>
241
             <el-row>
247
             <el-row>
242
               <el-col :span="6" :xs="24" :offset="12">
248
               <el-col :span="6" :xs="24" :offset="12">
243
                 <el-form-item label="签名:" label-width="120px">
249
                 <el-form-item label="签名:" label-width="120px">
244
-                  <span class="auditor"> {{}} </span>
250
+                  <span class="auditor"> {{ form.zhUserName }} </span>
245
                 </el-form-item>
251
                 </el-form-item>
246
               </el-col>
252
               </el-col>
247
               <el-col :span="6">
253
               <el-col :span="6">
248
                 <el-form-item label="日期:" label-width="120px">
254
                 <el-form-item label="日期:" label-width="120px">
249
-                  <span> {{}} </span>
255
+                  <span> {{ form.zhTime }} </span>
250
                 </el-form-item>
256
                 </el-form-item>
251
               </el-col>
257
               </el-col>
252
             </el-row>
258
             </el-row>
253
             <el-form-item label="技术质量部(质量及工作量)">
259
             <el-form-item label="技术质量部(质量及工作量)">
254
-              <el-input v-model="form.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
260
+              <el-input v-model="form.jsComment" type="textarea" :disabled="taskName != '技术质量部审核'" clearable
261
+                :autosize="{ minRows: 4, maxRows: 10 }">
255
               </el-input>
262
               </el-input>
256
             </el-form-item>
263
             </el-form-item>
257
             <el-row>
264
             <el-row>
258
               <el-col :span="6" :xs="24" :offset="12">
265
               <el-col :span="6" :xs="24" :offset="12">
259
                 <el-form-item label="签名:" label-width="120px">
266
                 <el-form-item label="签名:" label-width="120px">
260
-                  <span class="auditor"> {{}} </span>
267
+                  <span class="auditor"> {{ form.jsUserName }} </span>
261
                 </el-form-item>
268
                 </el-form-item>
262
               </el-col>
269
               </el-col>
263
               <el-col :span="6">
270
               <el-col :span="6">
264
                 <el-form-item label="日期:" label-width="120px">
271
                 <el-form-item label="日期:" label-width="120px">
265
-                  <span> {{}} </span>
272
+                  <span> {{ form.jsTime }} </span>
266
                 </el-form-item>
273
                 </el-form-item>
267
               </el-col>
274
               </el-col>
268
             </el-row>
275
             </el-row>
269
             <el-form-item label="项目管理部(结算)">
276
             <el-form-item label="项目管理部(结算)">
270
-              <el-input v-model="form.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
277
+              <el-input v-model="form.xmComment" type="textarea" :disabled="taskName != '项目管理部结算'" clearable
278
+                :autosize="{ minRows: 4, maxRows: 10 }">
271
               </el-input>
279
               </el-input>
272
             </el-form-item>
280
             </el-form-item>
273
             <el-row>
281
             <el-row>
274
               <el-col :span="6" :xs="24" :offset="12">
282
               <el-col :span="6" :xs="24" :offset="12">
275
                 <el-form-item label="签名:" label-width="120px">
283
                 <el-form-item label="签名:" label-width="120px">
276
-                  <span class="auditor"> {{}} </span>
284
+                  <span class="auditor"> {{ form.xmUserName }} </span>
277
                 </el-form-item>
285
                 </el-form-item>
278
               </el-col>
286
               </el-col>
279
               <el-col :span="6">
287
               <el-col :span="6">
280
                 <el-form-item label="日期:" label-width="120px">
288
                 <el-form-item label="日期:" label-width="120px">
281
-                  <span> {{}} </span>
289
+                  <span> {{ form.xmTime }} </span>
282
                 </el-form-item>
290
                 </el-form-item>
283
               </el-col>
291
               </el-col>
284
             </el-row>
292
             </el-row>
285
             <el-form-item label="项目承担部门(确认)">
293
             <el-form-item label="项目承担部门(确认)">
286
-              <el-input v-model="form.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
294
+              <el-input v-model="form.deptComment" type="textarea" :disabled="taskName != '结算发起人确认'" clearable
295
+                :autosize="{ minRows: 4, maxRows: 10 }">
287
               </el-input>
296
               </el-input>
288
             </el-form-item>
297
             </el-form-item>
289
             <el-row>
298
             <el-row>
290
               <el-col :span="6" :xs="24" :offset="12">
299
               <el-col :span="6" :xs="24" :offset="12">
291
                 <el-form-item label="签名:" label-width="120px">
300
                 <el-form-item label="签名:" label-width="120px">
292
-                  <span class="auditor"> {{}} </span>
301
+                  <span class="auditor"> {{ form.deptUserName }} </span>
293
                 </el-form-item>
302
                 </el-form-item>
294
               </el-col>
303
               </el-col>
295
               <el-col :span="6">
304
               <el-col :span="6">
296
                 <el-form-item label="日期:" label-width="120px">
305
                 <el-form-item label="日期:" label-width="120px">
297
-                  <span> {{}} </span>
306
+                  <span> {{ form.deptTime }} </span>
298
                 </el-form-item>
307
                 </el-form-item>
299
               </el-col>
308
               </el-col>
300
             </el-row>
309
             </el-row>
301
             <el-form-item label="经营发展部(校核)">
310
             <el-form-item label="经营发展部(校核)">
302
-              <el-input v-model="form.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
311
+              <el-input v-model="form.jyComment" type="textarea" :disabled="taskName != '经营发展部校核'" clearable
312
+                :autosize="{ minRows: 4, maxRows: 10 }">
303
               </el-input>
313
               </el-input>
304
             </el-form-item>
314
             </el-form-item>
305
             <el-row>
315
             <el-row>
306
               <el-col :span="6" :xs="24" :offset="12">
316
               <el-col :span="6" :xs="24" :offset="12">
307
                 <el-form-item label="签名:" label-width="120px">
317
                 <el-form-item label="签名:" label-width="120px">
308
-                  <span class="auditor"> {{}} </span>
318
+                  <span class="auditor"> {{ form.jyUserName }} </span>
309
                 </el-form-item>
319
                 </el-form-item>
310
               </el-col>
320
               </el-col>
311
               <el-col :span="6">
321
               <el-col :span="6">
312
                 <el-form-item label="日期:" label-width="120px">
322
                 <el-form-item label="日期:" label-width="120px">
313
-                  <span> {{}} </span>
323
+                  <span> {{ form.jyTime }} </span>
314
                 </el-form-item>
324
                 </el-form-item>
315
               </el-col>
325
               </el-col>
316
             </el-row>
326
             </el-row>
317
             <el-form-item label="分管领导(审核)">
327
             <el-form-item label="分管领导(审核)">
318
-              <el-input v-model="form.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
328
+              <el-input v-model="form.managerComment" type="textarea" :disabled="taskName != '分管审核'" clearable
329
+                :autosize="{ minRows: 4, maxRows: 10 }">
319
               </el-input>
330
               </el-input>
320
             </el-form-item>
331
             </el-form-item>
321
             <el-row>
332
             <el-row>
322
               <el-col :span="6" :xs="24" :offset="12">
333
               <el-col :span="6" :xs="24" :offset="12">
323
                 <el-form-item label="签名:" label-width="120px">
334
                 <el-form-item label="签名:" label-width="120px">
324
-                  <span class="auditor"> {{}} </span>
335
+                  <span class="auditor"> {{ form.managerUserName }} </span>
325
                 </el-form-item>
336
                 </el-form-item>
326
               </el-col>
337
               </el-col>
327
               <el-col :span="6">
338
               <el-col :span="6">
328
                 <el-form-item label="日期:" label-width="120px">
339
                 <el-form-item label="日期:" label-width="120px">
329
-                  <span> {{}} </span>
340
+                  <span> {{ form.managerTime }} </span>
330
                 </el-form-item>
341
                 </el-form-item>
331
               </el-col>
342
               </el-col>
332
             </el-row>
343
             </el-row>
333
             <el-form-item label="总经理(审批)">
344
             <el-form-item label="总经理(审批)">
334
-              <el-input v-model="form.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }">
345
+              <el-input v-model="form.gmComment" type="textarea" :disabled="taskName != '总经理审批'" clearable
346
+                :autosize="{ minRows: 4, maxRows: 10 }">
335
               </el-input>
347
               </el-input>
336
             </el-form-item>
348
             </el-form-item>
337
             <el-row>
349
             <el-row>
338
               <el-col :span="6" :xs="24" :offset="12">
350
               <el-col :span="6" :xs="24" :offset="12">
339
                 <el-form-item label="签名:" label-width="120px">
351
                 <el-form-item label="签名:" label-width="120px">
340
-                  <span class="auditor"> {{}} </span>
352
+                  <span class="auditor"> {{ form.gmUserName }} </span>
341
                 </el-form-item>
353
                 </el-form-item>
342
               </el-col>
354
               </el-col>
343
               <el-col :span="6">
355
               <el-col :span="6">
344
                 <el-form-item label="日期:" label-width="120px">
356
                 <el-form-item label="日期:" label-width="120px">
345
-                  <span> {{}} </span>
357
+                  <span> {{ form.gmTime }} </span>
346
                 </el-form-item>
358
                 </el-form-item>
347
               </el-col>
359
               </el-col>
348
             </el-row>
360
             </el-row>
349
           </div>
361
           </div>
350
         </el-form>
362
         </el-form>
351
-        <div style="text-align: center">
363
+        <div style="text-align: center" v-if="!disabled">
352
           <el-button type="warning" @click="preserve">保存</el-button>
364
           <el-button type="warning" @click="preserve">保存</el-button>
353
-          <el-button type="primary">提交下一个流程</el-button>
365
+          <el-button type="primary" @click="submitNextFlow">提交下一个流程</el-button>
354
         </div>
366
         </div>
355
       </el-col>
367
       </el-col>
356
       <el-col :span="5" :xs="24">
368
       <el-col :span="5" :xs="24">
375
 import { parseTime } from "@/utils/ruoyi";
387
 import { parseTime } from "@/utils/ruoyi";
376
 import { listProject, getProject } from "@/api/oa/project/project";
388
 import { listProject, getProject } from "@/api/oa/project/project";
377
 import { deepClone } from '@/utils'
389
 import { deepClone } from '@/utils'
378
-import {
379
-  listSettle,
380
-  getSettle,
381
-  delSettle,
382
-  addSettle,
383
-  updateSettle,
384
-} from "@/api/oa/settle/settle";
385
-import {
386
-  listSettleSummary,
387
-  getSettleSummary,
388
-  addSettleSummary,
389
-  delSettleSummary,
390
-  updateSettleSummary,
391
-} from "@/api/oa/settle/settleSummary";
392
-import {
393
-  listSettleWork,
394
-  getSettleWork,
395
-  addSettleWork,
396
-  updateSettleWork,
397
-  delSettleWork,
398
-} from "@/api/oa/settle/settleWork";
399
-import {
400
-  listProjectContract,
401
-  addProjectContract,
402
-} from "@/api/oa/contract/projectContract";
390
+import { listSettle, getSettle, delSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
391
+import { listSettleSummary, getSettleSummary, addSettleSummary, delSettleSummary, updateSettleSummary } from "@/api/oa/settle/settleSummary";
392
+import { listSettleWork, getSettleWork, addSettleWork, updateSettleWork, delSettleWork } from "@/api/oa/settle/settleWork";
393
+import { listProjectContract, addProjectContract, } from "@/api/oa/contract/projectContract";
403
 import { getPrice } from "@/api/oa/price/price";
394
 import { getPrice } from "@/api/oa/price/price";
404
 import ChoosePrice from "./components/choosePrice.vue";
395
 import ChoosePrice from "./components/choosePrice.vue";
396
+import { getUser } from "@/api/system/user";
397
+import { complete, getNextFlowNode } from "@/api/flowable/todo";
398
+import { getUsersDeptLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept } from '@/api/system/post.js'
405
 export default {
399
 export default {
406
   components: {
400
   components: {
407
     flow,
401
     flow,
416
       type: Object,
410
       type: Object,
417
       required: true,
411
       required: true,
418
     },
412
     },
413
+    disabled: {
414
+      type: Boolean,
415
+      default: false
416
+    }
419
   },
417
   },
420
   data() {
418
   data() {
421
     return {
419
     return {
420
+      loading: true,
422
       drawer: false,
421
       drawer: false,
423
       flag: false,
422
       flag: false,
424
       flowData: {},
423
       flowData: {},
425
       form: {},
424
       form: {},
426
-      rules: {},
425
+      rules: {
426
+        projectId: [
427
+          { required: true, trigger: "change", message: "请选择项目编号" }]
428
+      },
427
       projectList: [],
429
       projectList: [],
428
       isSelect: false,
430
       isSelect: false,
429
       chooseProject: {},
431
       chooseProject: {},
458
       oldSettleSumList: [],
460
       oldSettleSumList: [],
459
       actualSumSettle: "",
461
       actualSumSettle: "",
460
       clickWork: {},
462
       clickWork: {},
463
+      deptId: undefined
461
     };
464
     };
462
   },
465
   },
463
   created() {
466
   created() {
477
   methods: {
480
   methods: {
478
     initForm() {
481
     initForm() {
479
       listSettle({ settleId: this.taskForm.formId }).then(res => {
482
       listSettle({ settleId: this.taskForm.formId }).then(res => {
480
-        console.log(res);
481
         if (res.total == 1) {
483
         if (res.total == 1) {
482
           this.form = res.rows[0];
484
           this.form = res.rows[0];
483
           this.flag = true;
485
           this.flag = true;
484
           this.handleSelectProject(res.rows[0].projectId);
486
           this.handleSelectProject(res.rows[0].projectId);
485
           this.listSettleWorkFn();
487
           this.listSettleWorkFn();
486
           this.listSettleSummaryFn();
488
           this.listSettleSummaryFn();
489
+          getUser(this.form.reporter).then(res => {
490
+            if (res.data) {
491
+              console.log(res.data);
492
+              this.form.reporterName = res.data.nickName;
493
+              this.deptId = res.data.deptId
494
+            }
495
+          })
496
+          this.getCurrentUser();
487
         } else if (res.total == 0) {
497
         } else if (res.total == 0) {
488
           this.flag = false;
498
           this.flag = false;
489
           if (this.taskName == "结算发起") {
499
           if (this.taskName == "结算发起") {
492
             this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
502
             this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
493
           }
503
           }
494
         }
504
         }
505
+        setTimeout(() => {
506
+          this.loading = false
507
+        }, 500);
508
+
495
       });
509
       });
496
     },
510
     },
511
+    getCurrentUser() {
512
+      if (this.taskName == '综合事务部处理') {
513
+        this.form.zhUserName = this.$store.state.user.name;
514
+        this.form.zhUserId = this.$store.state.user.id;
515
+        this.form.zhTime = parseTime(new Date(), "{y}-{m}-{d}");
516
+      } else if (this.taskName == '技术质量部审核') {
517
+        this.form.jsUserName = this.$store.state.user.name;
518
+        this.form.jsUserId = this.$store.state.user.id;
519
+        this.form.jsTime = parseTime(new Date(), "{y}-{m}-{d}");
520
+      } else if (this.taskName == '项目管理部结算') {
521
+        this.form.xmUserName = this.$store.state.user.name;
522
+        this.form.xmUserId = this.$store.state.user.id;
523
+        this.form.xmTime = parseTime(new Date(), "{y}-{m}-{d}");
524
+      } else if (this.taskName == '结算发起人确认') {
525
+        this.form.deptUserName = this.$store.state.user.name;
526
+        this.form.deptUserId = this.$store.state.user.id;
527
+        this.form.deptTime = parseTime(new Date(), "{y}-{m}-{d}");
528
+      } else if (this.taskName == '经营发展部校核') {
529
+        this.form.jyUserName = this.$store.state.user.name;
530
+        this.form.jyUserId = this.$store.state.user.id;
531
+        this.form.jyTime = parseTime(new Date(), "{y}-{m}-{d}");
532
+      } else if (this.taskName == '分管审核') {
533
+        this.form.managerUserName = this.$store.state.user.name;
534
+        this.form.managerUserId = this.$store.state.user.id;
535
+        this.form.managerTime = parseTime(new Date(), "{y}-{m}-{d}");
536
+      } else if (this.taskName == '总经理审批') {
537
+        this.form.gmUserName = this.$store.state.user.name;
538
+        this.form.gmUserId = this.$store.state.user.id;
539
+        this.form.gmTime = parseTime(new Date(), "{y}-{m}-{d}");
540
+      }
541
+      this.getReviewerName();
542
+    },
543
+    getReviewerName() {
544
+      if (this.form.zhUserId) {
545
+        getUser(this.form.zhUserId).then(res => {
546
+          this.form.zhUserName = res.data.nickName;;
547
+        })
548
+      }
549
+      if (this.form.jsUserId) {
550
+        getUser(this.form.jsUserId).then(res => {
551
+          this.form.jsUserName = res.data.nickName;;
552
+        })
553
+      }
554
+      if (this.form.xmUserId) {
555
+        getUser(this.form.xmUserId).then(res => {
556
+          this.form.xmUserName = res.data.nickName;;
557
+        })
558
+      }
559
+      if (this.form.deptUserId) {
560
+        getUser(this.form.deptUserId).then(res => {
561
+          this.form.deptUserName = res.data.nickName;;
562
+        })
563
+      }
564
+      if (this.form.jyUserId) {
565
+        getUser(this.form.jyUserId).then(res => {
566
+          this.form.jyUserName = res.data.nickName;;
567
+        })
568
+      }
569
+      if (this.form.managerUserId) {
570
+        getUser(this.form.managerUserId).then(res => {
571
+          this.form.managerUserName = res.data.nickName;;
572
+        })
573
+      }
574
+      if (this.form.gmUserId) {
575
+        getUser(this.form.gmUserId).then(res => {
576
+          this.form.gmUserName = res.data.nickName;;
577
+        })
578
+      }
579
+    },
580
+    // 保存按钮
581
+    preserve() {
582
+      if (this.flag) {
583
+        this.updateSettleFn();
584
+        this.updateSettleSummaryFn();
585
+        this.updateSettleWorkFn();
586
+
587
+      } else {
588
+        this.addSettleFn();
589
+      }
590
+    },
591
+    submitNextFlow() {
592
+      this.$refs["settleForm"].validate(vaild => {
593
+        if (vaild) {
594
+          this.preserve();
595
+          debugger
596
+          if (this.taskName == '结算发起') {
597
+            this.getNextFlowNodeFn(17);
598
+          } else if (this.taskName == '综合事务部处理') {
599
+            this.getNextFlowNodeFn(52);
600
+          } else if (this.taskName == '技术质量部审核') {
601
+            this.getNextFlowNodeFn(32);
602
+          } else if (this.taskName == '项目管理部结算') {
603
+            this.getNextFlowNodeFn();
604
+          } else if (this.taskName == '结算发起人确认') {
605
+            this.getNextFlowNodeFn(13);
606
+          } else if (this.taskName == '经营发展部校核') {
607
+            this.getNextFlowNodeFn(null, this.deptId);
608
+          } else if (this.taskName == '分管审核') {
609
+            this.getNextFlowNodeFn();
610
+          } else if (this.taskName == '总经理审批') {
611
+            this.getNextFlowNodeFn();
612
+          }
613
+        }
614
+      })
615
+    },
616
+    getNextFlowNodeFn(userId, deptId) {
617
+      const params = { taskId: this.taskForm.taskId };
618
+      getNextFlowNode(params).then(res => {
619
+        if (userId) {
620
+          this.$set(this.taskForm.variables, "approval", userId);
621
+          complete(this.taskForm).then(response => {
622
+            this.$modal.msgSuccess(response.msg);
623
+            this.$emit('goBack');
624
+          });
625
+        } else {
626
+          if (deptId) {
627
+            getUsersManageLeaderByDept({ deptId }).then(res => {
628
+              let id = res.data.userId;
629
+              this.$set(this.taskForm.variables, "approval", id);
630
+              complete(this.taskForm).then(response => {
631
+                this.$modal.msgSuccess(response.msg);
632
+                this.$emit('goBack');
633
+              });
634
+            })
635
+          } else {
636
+            complete(this.taskForm).then(response => {
637
+              this.$modal.msgSuccess(response.msg);
638
+              this.$emit('goBack');
639
+            });
640
+          }
641
+        }
642
+      })
643
+    },
497
     // 查询项目列表
644
     // 查询项目列表
498
     getProjectList() {
645
     getProjectList() {
499
       listProject({
646
       listProject({
582
       this.calculateSumSettle();
729
       this.calculateSumSettle();
583
     },
730
     },
584
     calculateSumSettle() {
731
     calculateSumSettle() {
585
-      debugger;
586
       let sum = 0;
732
       let sum = 0;
587
       let arr = this.settleWorkList;
733
       let arr = this.settleWorkList;
588
       for (let a of arr) {
734
       for (let a of arr) {
616
     setValue(key, name, val) {
762
     setValue(key, name, val) {
617
       this.$set(key, name, val);
763
       this.$set(key, name, val);
618
     },
764
     },
619
-    // 保存按钮
620
-    preserve() {
621
-      if (this.flag) {
622
-        this.updateSettleSummaryFn();
623
-      } else {
624
-        console.log(this.form);
625
-        console.log(this.settleWorkList);
626
-        console.log(this.settleSumList);
627
-        this.addSettleFn();
628
-      }
629
-    },
765
+
766
+    // 增加数据
630
     addSettleFn() {
767
     addSettleFn() {
631
       let settleId = this.taskForm.formId;
768
       let settleId = this.taskForm.formId;
632
       this.form.settleId = settleId;
769
       this.form.settleId = settleId;
638
     addSettleWorkFn(settleId) {
775
     addSettleWorkFn(settleId) {
639
       for (let work of this.settleWorkList) {
776
       for (let work of this.settleWorkList) {
640
         work.settleId = settleId;
777
         work.settleId = settleId;
641
-        addSettleWork(work);
778
+        setTimeout(() => {
779
+          addSettleWork(work);
780
+        }, 500)
642
       }
781
       }
643
     },
782
     },
644
     addSettleSummaryFn(settleId) {
783
     addSettleSummaryFn(settleId) {
784
+      this.settleSumTr.settleId = settleId
645
       addSettleSummary(this.settleSumTr);
785
       addSettleSummary(this.settleSumTr);
646
       for (let item of this.settleSumList) {
786
       for (let item of this.settleSumList) {
647
         item.settleId = settleId;
787
         item.settleId = settleId;
648
-        addSettleSummary(item);
788
+        setTimeout(() => {
789
+          addSettleSummary(item);
790
+        }, 500)
649
       }
791
       }
650
     },
792
     },
793
+    // 获取数据
651
     listSettleWorkFn() {
794
     listSettleWorkFn() {
652
       listSettleWork({ settleId: this.taskForm.formId }).then(res => {
795
       listSettleWork({ settleId: this.taskForm.formId }).then(res => {
653
         this.settleWorkList = res.rows;
796
         this.settleWorkList = res.rows;
668
     },
811
     },
669
     listSettleSummaryFn() {
812
     listSettleSummaryFn() {
670
       listSettleSummary({ settleId: this.taskForm.formId }).then(res => {
813
       listSettleSummary({ settleId: this.taskForm.formId }).then(res => {
671
-        console.log(res);
672
         this.settleSumList = res.rows;
814
         this.settleSumList = res.rows;
673
         this.oldSettleSumList = res.rows;
815
         this.oldSettleSumList = res.rows;
674
         for (let s of this.settleSumList) {
816
         for (let s of this.settleSumList) {
683
         this.calculateActualSumSettle();
825
         this.calculateActualSumSettle();
684
       });
826
       });
685
     },
827
     },
828
+    // 更新数据
686
     updateSettleFn() {
829
     updateSettleFn() {
830
+      updateSettle(this.form).then(res => {
831
+        if (res.code == 200)
832
+          this.$message.success('保存成功')
833
+      })
687
     },
834
     },
688
     updateSettleWorkFn() {
835
     updateSettleWorkFn() {
689
-
836
+      delSettleWork([this.taskForm.formId]).then(res => {
837
+        this.addSettleWorkFn(this.taskForm.formId);
838
+      })
690
     },
839
     },
691
     updateSettleSummaryFn() {
840
     updateSettleSummaryFn() {
692
       delSettleSummary([this.taskForm.formId]).then(res => {
841
       delSettleSummary([this.taskForm.formId]).then(res => {

Loading…
Cancel
Save