瀏覽代碼

其他结算流程

lamphua 10 月之前
父節點
當前提交
b0570cda95

+ 6
- 2
oa-ui/src/views/flowable/form/components/conditionDisplay.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-23 17:08:16
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-02 16:39:46
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-08-06 17:28:23
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -19,6 +19,8 @@
19 19
     <technical-form :key="'technical'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '技术交底'"></technical-form>
20 20
     <settle-form :key="'fb'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :disabled="true"
21 21
       v-else-if="taskForm.procDefName == '项目结算'"></settle-form>
22
+    <settle-other :key="'so'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :disabled="true"
23
+      v-else-if="taskForm.procDefName == '其他结算'"></settle-other>
22 24
     <!-- <budget-in :key="'budget'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目预算'"></budget-in> -->
23 25
     <budget-tab :key="'budget'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目预算'"></budget-tab>
24 26
     <contract-form :key="'cj'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :formDisabled="true"
@@ -47,6 +49,7 @@ import TechnicalPlan from '@/views/flowable/form/technicalPlan.vue';
47 49
 import SafeForm from '@/views/flowable/form/safeForm.vue';
48 50
 import TechnicalForm from '@/views/flowable/form/technicalForm.vue';
49 51
 import SettleForm from '@/views/flowable/form/settleForm.vue';
52
+import SettleOther from '@/views/flowable/form/settleOther.vue';
50 53
 import BudgetInfo from '../budget/budgetInfo.vue';
51 54
 import ContractForm from '../business/contractForm.vue';
52 55
 import SubContract from '../business/subContract.vue';
@@ -81,6 +84,7 @@ export default {
81 84
     TechnicalForm,
82 85
     SafeForm,
83 86
     SettleForm,
87
+    SettleOther,
84 88
     BudgetInfo,
85 89
     ContractForm,
86 90
     SubContract,

+ 4
- 0
oa-ui/src/views/flowable/form/components/detailDisplay.vue 查看文件

@@ -40,6 +40,8 @@
40 40
       @goBack="goBack"></archive-form>
41 41
     <settle-form :taskName="taskName" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目结算'"
42 42
       @goBack="goBack"></settle-form>
43
+    <settle-other :taskName="taskName" :taskForm="taskForm" v-else-if="taskForm.procDefName == '其他结算'"
44
+      @goBack="goBack"></settle-other>
43 45
     <change-form :taskName="taskName" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目变更'"
44 46
       @goBack="goBack"></change-form>
45 47
   </div>
@@ -68,6 +70,7 @@ import depositForm from '@/views/flowable/form/finance/depositForm.vue';
68 70
 import borrowForm from '@/views/flowable/form/finance/borrowForm.vue';
69 71
 import archiveForm from '@/views/flowable/form/archiveForm.vue';
70 72
 import settleForm from '@/views/flowable/form/settleForm.vue';
73
+import settleOther from '@/views/flowable/form/settleOther.vue';
71 74
 import changeForm from '@/views/flowable/form/changeForm.vue';
72 75
 export default {
73 76
   components: {
@@ -93,6 +96,7 @@ export default {
93 96
     depositForm,
94 97
     archiveForm,
95 98
     settleForm,
99
+    settleOther,
96 100
     changeForm
97 101
   },
98 102
   props: {

+ 897
- 0
oa-ui/src/views/flowable/form/settleOther.vue 查看文件

@@ -0,0 +1,897 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-30 09:03:14
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-08-06 17:20:01
6
+-->
7
+<template>
8
+  <div class="app-container" v-loading="loading">
9
+    <el-row :gutter="20">
10
+      <el-col :span="flowDisabled ? 19 : 24" :xs="24">
11
+        <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
12
+        <h2 class="text-center">其他结算表</h2>
13
+        <div class="headers">
14
+          项目信息
15
+          <div class="line"></div>
16
+        </div>
17
+        <el-form ref="settleForm" :model="form" :rules="rules" label-width="160px" :disabled="disabled">
18
+          <el-form-item label="工作量上报说明" prop="workloadReport">
19
+            <el-input v-model="form.workloadReport" type="textarea" :rows="4" :disabled="taskName != '结算发起'"
20
+              placeholder="请输入工作量上报说明" />
21
+          </el-form-item>
22
+          <el-row>
23
+            <el-col :span="6" :xs="24" :offset="12">
24
+              <el-form-item label="工作上报人:" prop="reporterName">
25
+                <span class="auditor">
26
+                  {{ form.reporterName }}
27
+                </span>
28
+              </el-form-item>
29
+            </el-col>
30
+            <el-col :span="6">
31
+              <el-form-item label="上报日期:" prop="reportTime">
32
+                <span> {{ form.reportTime }} </span>
33
+              </el-form-item>
34
+            </el-col>
35
+          </el-row>
36
+          <el-form-item label="原始上报数据" prop="">
37
+            <FileUpload v-if="taskName == '结算发起'" :limit="1" :filePathName="'项目结算/原始数据'"
38
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="setSettleDocument">
39
+            </FileUpload>
40
+            <div v-if="form.settleDocument" class="upload-list">
41
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.settleDocument}`)">
42
+                {{ getFileName(form.settleDocument) }}
43
+              </el-link>
44
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.settleDocument}`"
45
+                :underline="false" target="_blank">
46
+                <span class="el-icon-download">下载文件</span>
47
+              </el-link>
48
+            </div>
49
+          </el-form-item>
50
+          <el-form-item label="分管领导审核结算单" prop="">
51
+            <FileUpload v-if="taskName == '分管审核'" :limit="1" :filePathName="'项目结算/分管领导审核结算单'"
52
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="setFinalDocument">
53
+            </FileUpload>
54
+            <div v-if="form.finalDocument" class="upload-list">
55
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.finalDocument}`)">
56
+                {{ getFileName(form.finalDocument) }}
57
+              </el-link>
58
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
59
+                :underline="false" target="_blank">
60
+                <span class="el-icon-download">下载文件</span>
61
+              </el-link>
62
+            </div>
63
+          </el-form-item>
64
+          <div class="headers">
65
+            项目完成工作量及经费计算
66
+            <div class="line"></div>
67
+          </div>
68
+          <el-form-item label-width="60px">
69
+            <table border="1">
70
+              <tr>
71
+                <td style="width: 50px">序号</td>
72
+                <td style="width: 180px">工作内容</td>
73
+                <td style="width: 100px">等级或比例尺</td>
74
+                <td style="width: 100px">单位</td>
75
+                <td style="width: 100px">地类</td>
76
+                <td style="width: 100px">单价</td>
77
+                <td>工作量</td>
78
+                <td style="width: 117px">其他系数</td>
79
+                <td style="width: 100px">项目经费</td>
80
+                <td>备注</td>
81
+                <td>操作</td>
82
+              </tr>
83
+              <tr v-for="(work, index) in settleWorkList" :key="index">
84
+                <td>
85
+                  {{ index + 1 }}
86
+                </td>
87
+                <td>
88
+              <tr>
89
+                <td>
90
+                  <el-button size="mini" type="primary" icon="el-icon-plus" :disabled="isModify"
91
+                    @click="handleChoosePrice(work, index)">选择工作内容</el-button>
92
+                </td>
93
+              </tr>
94
+              <tr>
95
+                <td>
96
+                  <el-input v-model="work.content" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
97
+                    :disabled="isModify"></el-input>
98
+                </td>
99
+              </tr>
100
+              </td>
101
+              <td>
102
+                {{ work.scale == "" ? "无" : work.scale }}
103
+              </td>
104
+              <td>
105
+                {{ work.unit }}
106
+              </td>
107
+              <td>
108
+                {{ work.groundType == "0" ? "一般地类" : "复杂地类" }}
109
+              </td>
110
+              <td>
111
+                {{ work.price }}
112
+              </td>
113
+              <td>
114
+                <el-input-number :precision="2" style="width: 100px" v-model="work.workload" clearable
115
+                  :disabled="isModify" @blur="calculateSettle(work)" :controls="false"></el-input-number>
116
+              </td>
117
+              <td>
118
+                <div style="display: flex">
119
+                  <el-input-number :precision="2" style="width: 100px" v-model="work.coefficient" clearable
120
+                    :disabled="isModify" @blur="calculateSettle(work)" :controls="false"></el-input-number>
121
+                  <el-popover placement="top-start" title="系数备注" width="200" trigger="click">
122
+                    <div v-html="work.noteTip"></div>
123
+                    <i class="el-icon-info" slot="reference" @click="getCoefficientRemark(work, work.workType)"></i>
124
+                  </el-popover>
125
+                </div>
126
+              </td>
127
+              <td>
128
+                <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
129
+                {{ work.settle }}
130
+              </td>
131
+              <td>
132
+                <el-input v-model="work.remark" type="textarea" clearable :disabled="isModify"
133
+                  :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
134
+              </td>
135
+              <td>
136
+                <el-button type="text" size="mini" style="color: #f56c6c"
137
+                  @click="deletWorkItem(index, settleWorkList)">删除行</el-button>
138
+              </td>
139
+              </tr>
140
+              <tr>
141
+                <td :colspan="8">结算费用合计</td>
142
+                <td>{{ settleSumTr.amount }}</td>
143
+                <td>
144
+                  <el-input v-model="settleSumTr.remark" type="textarea" clearable :disabled="isModify"
145
+                    :autosize="{ minRows: 2, maxRows: 10 }"></el-input>
146
+                </td>
147
+              </tr>
148
+            </table>
149
+            <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addWorkList"></el-button>
150
+          </el-form-item>
151
+
152
+          <!-- 结算汇总 -->
153
+          <div class="headers">
154
+            结算汇总
155
+            <div class="line"></div>
156
+          </div>
157
+          <el-form-item label-width="60px">
158
+            <h3>部门结算金额</h3>
159
+            <table border="1">
160
+              <tr>
161
+                <td style="width: 150px">实际结算总金额(元)</td>
162
+                <td style="width: 50px">序号</td>
163
+                <td style="width: 280px">部门名称</td>
164
+                <td style="width: 200px">结算金额(元)</td>
165
+                <td style="width: 280px">备注</td>
166
+                <td style="width: 100px">操作</td>
167
+              </tr>
168
+              <tr v-for="(  dept, index  ) in   deptSettleList  " :key="index">
169
+                <td :rowspan="deptSettleList.length" v-if="index == 0">
170
+                  {{ Number(actualSumSettle).toFixed(2) }}
171
+                </td>
172
+                <td>
173
+                  {{ index + 1 }}
174
+                </td>
175
+                <td>
176
+                  <!-- <el-input v-model="dept.content" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
177
+                  </el-input> -->
178
+                  <el-select v-model="dept.content" placeholder="请选择" filterable clearable style="width:100%;"
179
+                    :disabled="isModify">
180
+                    <el-option v-for="item  in $store.state.user.deptList" :key="item.deptId" :label="item.deptName"
181
+                      :value="item.deptName">
182
+                    </el-option>
183
+                  </el-select>
184
+                </td>
185
+                <td>
186
+                  <el-input-number :precision="2" style="width: 200px" v-model="dept.amount" clearable :controls="false"
187
+                    :disabled="isModify" @blur="calculateDeptAmount(index)"></el-input-number>
188
+                </td>
189
+                <td>
190
+                  <el-input v-model="dept.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }"
191
+                    :disabled="isModify">
192
+                  </el-input>
193
+                </td>
194
+                <td>
195
+                  <el-button type="text" size="mini" style="color: #f56c6c"
196
+                    @click="deletWorkItem(index, deptSettleList)">删除行</el-button>
197
+                </td>
198
+              </tr>
199
+              <tr>
200
+                <td :colspan="2">结算说明</td>
201
+                <td :colspan="3">
202
+                  <el-input v-model="form.settleComment" type="textarea" clearable placeholder="请输入说明"
203
+                    :autosize="{ minRows: 2, maxRows: 10 }" :disabled="isModify">
204
+                  </el-input>
205
+                </td>
206
+              </tr>
207
+            </table>
208
+            <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addDeptSettleList"></el-button>
209
+          </el-form-item>
210
+
211
+          <!-- 结算审核情况 -->
212
+          <div v-if="taskName != '结算发起'">
213
+            <div class="headers">
214
+              结算审核情况
215
+              <div class="line"></div>
216
+            </div>
217
+            <el-form-item label="分管领导(审核)">
218
+              <el-input v-model="form.managerComment" type="textarea" :disabled="taskName != '分管审核'" clearable
219
+                :autosize="{ minRows: 4, maxRows: 10 }">
220
+              </el-input>
221
+            </el-form-item>
222
+            <el-row>
223
+              <el-col :span="6" :xs="24" :offset="12">
224
+                <el-form-item label="签名:" label-width="120px">
225
+                  <span class="auditor"> {{ form.managerUserName }} </span>
226
+                </el-form-item>
227
+              </el-col>
228
+              <el-col :span="6">
229
+                <el-form-item label="日期:" label-width="120px">
230
+                  <span> {{ form.managerTime }} </span>
231
+                </el-form-item>
232
+              </el-col>
233
+            </el-row>
234
+            <el-form-item label="总经理(审批)">
235
+              <el-input v-model="form.gmComment" type="textarea" :disabled="taskName != '总经理审批'" clearable
236
+                :autosize="{ minRows: 4, maxRows: 10 }">
237
+              </el-input>
238
+            </el-form-item>
239
+            <el-row>
240
+              <el-col :span="6" :xs="24" :offset="12">
241
+                <el-form-item label="签名:" label-width="120px">
242
+                  <span class="auditor"> {{ form.gmUserName }} </span>
243
+                </el-form-item>
244
+              </el-col>
245
+              <el-col :span="6">
246
+                <el-form-item label="日期:" label-width="120px">
247
+                  <span> {{ form.gmTime }} </span>
248
+                </el-form-item>
249
+              </el-col>
250
+            </el-row>
251
+
252
+          </div>
253
+        </el-form>
254
+        <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
255
+        <div style="text-align: center" v-if="!disabled">
256
+          <el-button type="warning" @click="preserve">保存</el-button>
257
+          <el-button type="primary" @click="submitNextFlow" v-if="taskName != '总经理审批'">提交下一个流程</el-button>
258
+          <el-button type="primary" @click="submitNextFlow" v-else>结算批准</el-button>
259
+        </div>
260
+      </el-col>
261
+      <el-col :span="5" :xs="24" v-if="flowDisabled">
262
+        <el-card>
263
+          <h2 style="text-align: center">流程进度</h2>
264
+          <div>
265
+            <flow :flowData="flowData" />
266
+          </div>
267
+        </el-card>
268
+      </el-col>
269
+    </el-row>
270
+
271
+    <el-dialog title="结算表格预览" :visible.sync="printOpen" width="65%" append-to-body>
272
+      <settle-print :form="form" :workList="settleWorkList"
273
+        :settleList="oldSettleSumList" @cancel="printOpen = false"></settle-print>
274
+    </el-dialog>
275
+    <el-drawer title="选择单价" :visible.sync="drawer" direction="rtl">
276
+      <choose-price :row="clickWork" @getPrice="getPrice" @cancel="drawer = false"></choose-price>
277
+    </el-drawer>
278
+
279
+  </div>
280
+</template>
281
+
282
+<script>
283
+import flow from "@/views/flowable/task/todo/detail/flow";
284
+import { flowXmlAndNode } from "@/api/flowable/definition";
285
+import { parseTime } from "@/utils/ruoyi";
286
+import { listProject, getProject } from "@/api/oa/project/project";
287
+import { deepClone } from "@/utils";
288
+import { listSettle, getSettle, delSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
289
+import { listSettleSummary, getSettleSummary, addSettleSummary, delSettleSummary, updateSettleSummary } from "@/api/oa/settle/settleSummary";
290
+import { listSettleWork, getSettleWork, addSettleWork, updateSettleWork, delSettleWork } from "@/api/oa/settle/settleWork";
291
+import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
292
+import { getPrice, getPriceRemarkByWorkType } from "@/api/oa/price/price";
293
+import ChoosePrice from "./components/choosePrice.vue";
294
+import { getUser } from "@/api/system/user";
295
+import { getUserByRole } from "@/api/system/role";
296
+import { getUserByPost } from "@/api/system/post";
297
+import { complete, getNextFlowNode } from "@/api/flowable/todo";
298
+import { getUsersDeptLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept, } from "@/api/system/post.js";
299
+import SettlePrint from "./components/settlePrint.vue";
300
+import { getDept } from "@/api/system/dept";
301
+import { getContract } from "@/api/oa/contract/contract";
302
+export default {
303
+  components: {
304
+    flow,
305
+    ChoosePrice,
306
+    SettlePrint,
307
+  },
308
+  props: {
309
+    taskName: {
310
+      type: String,
311
+      required: true,
312
+    },
313
+    taskForm: {
314
+      type: Object,
315
+      required: true,
316
+    },
317
+    disabled: {
318
+      type: Boolean,
319
+      default: false,
320
+    },
321
+    flowDisabled: {
322
+      type: Boolean,
323
+      default: true
324
+    }
325
+  },
326
+  watch: {
327
+    'taskForm.formId'() {
328
+      this.initForm();
329
+    }
330
+  },
331
+  data() {
332
+    return {
333
+      baseUrl: process.env.VUE_APP_BASE_API,
334
+      printOpen: false,
335
+      loading: false,
336
+      drawer: false,
337
+      prOpen: false,
338
+      flag: false,
339
+      flowData: {},
340
+      form: {},
341
+      rules: {
342
+        projectId: [
343
+          { required: true, trigger: "change", message: "请选择项目编号" },
344
+        ],
345
+      },
346
+      projectList: [],
347
+      isSelect: false,
348
+      fileList: [],
349
+      settleWorkList: [
350
+        {
351
+          content: "",
352
+          priceId: "",
353
+          scale: "无",
354
+          unit: "",
355
+          groundType: "0",
356
+          price: "",
357
+          workload: 0,
358
+          coefficient: 1,
359
+          settle: 0,
360
+          remark: "",
361
+        },
362
+      ],
363
+      oldSettleWorkList: [],
364
+      settleSumTr: {
365
+        content: "结算费用合计",
366
+        amount: 0,
367
+        remark: "",
368
+        tableNumber: "2",
369
+      },
370
+      settleSumList: [
371
+        {
372
+          content: "",
373
+          amount: 0,
374
+          remark: "",
375
+          tableNumber: "0",
376
+        },
377
+      ],
378
+      deptSettleList: [
379
+        {
380
+          content: "",
381
+          amount: 0,
382
+          remark: "",
383
+          tableNumber: "1",
384
+        },
385
+      ],
386
+      oldSettleSumList: [],
387
+      actualSumSettle: "",
388
+      clickWork: {},
389
+      deptId: undefined,
390
+      deptList: [],
391
+      isModify: false, //是否可以修改结算工作量
392
+    };
393
+  },
394
+  created() {
395
+    this.getProjectList(); //获取项目列表
396
+    this.getContractDataList(); //获取合同编码和编号
397
+    this.initForm();
398
+    if (this.flowDisabled)
399
+      flowXmlAndNode({
400
+        procInsId: this.taskForm.procInsId,
401
+        deployId: this.taskForm.deployId,
402
+      }).then((res) => {
403
+        this.flowData = res.data;
404
+      });
405
+  },
406
+  mounted() {
407
+    if (this.$route.query.projectId) {
408
+      getProject(this.$route.query.projectId).then((res) => {
409
+        if (res.data) {
410
+          this.$set(this.form, "projectId", res.data.projectId);
411
+          this.handleSelectProject(res.data.projectId);
412
+        }
413
+      });
414
+    } else {
415
+      this.handleSelectProject(this.form.projectId);
416
+    }
417
+    this.isModify = this.taskName != '结算发起' && this.taskName != '经营发展部校核' && this.taskName != '分管审核'
418
+  },
419
+  methods: {
420
+    // 初始化表单
421
+    async initForm() {
422
+      this.loading = true
423
+      const res = await listSettle({ settleId: this.taskForm.formId });
424
+      if (res.total === 1) {
425
+        this.form = res.rows[0];
426
+        this.flag = true;
427
+        const settleId = this.taskForm.formId;
428
+        const [
429
+          settleWorkResponse,
430
+          settleSummaryResponse
431
+        ] = await Promise.all([
432
+          getProject(res.rows[0].projectId),
433
+          listSettleWork({ settleId: settleId, pageSize: 30 }),
434
+          listSettleSummary({ settleId })
435
+        ]);
436
+
437
+        // 获取申请工作量列表
438
+        if (settleWorkResponse) {
439
+          this.settleWorkList = settleWorkResponse.rows;
440
+          for (let work of this.settleWorkList) {
441
+            getPrice(work.priceId).then((settleWorkResponse) => {
442
+              if (settleWorkResponse.data) {
443
+                this.setValue(work, "scale", settleWorkResponse.data.scaleGrade);
444
+                this.setValue(work, "unit", settleWorkResponse.data.unit);
445
+                if (work.groundType == "0") {
446
+                  work.price = settleWorkResponse.data.commonPrice;
447
+                } else {
448
+                  work.price = settleWorkResponse.data.complexPrice;
449
+                }
450
+              }
451
+            });
452
+          }
453
+        }
454
+        // 结算汇总里的扣除明细以及部门结算金额
455
+        if (settleSummaryResponse) {
456
+          this.oldSettleSumList = settleSummaryResponse.rows;
457
+          for (let s of settleSummaryResponse.rows) {
458
+            if (s.content == "结算费用合计") {
459
+              this.settleSumTr = s;
460
+              break;
461
+            }
462
+          }
463
+          this.settleSumList = settleSummaryResponse.rows.filter((item) => item.tableNumber == "0");
464
+          this.deptSettleList = settleSummaryResponse.rows.filter(
465
+            (item) => item.tableNumber == "1"
466
+          );
467
+          this.calculateActualSumSettle();
468
+        }
469
+
470
+        getUser(this.form.reporter).then((res) => {
471
+          if (res.data) {
472
+            this.form.reporterName = res.data.nickName;
473
+            this.deptId = res.data.deptId;
474
+          }
475
+        });
476
+        this.getCurrentUser();
477
+      } else if (res.total == 0) {
478
+        this.flag = false;
479
+        if (this.taskName == "结算发起") {
480
+          this.form.reporter = this.$store.state.user.id;
481
+          this.form.reporterName = this.$store.state.user.name;
482
+          this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
483
+        }
484
+      }
485
+      this.loading = false;
486
+      this.deptList = this.$store.state.user.deptList
487
+    },
488
+
489
+    // 获取当前处理人
490
+    getCurrentUser() {
491
+      if (this.taskName == "综合事务部处理") {
492
+        this.form.zhUserName = this.$store.state.user.name;
493
+        this.form.zhUserId = this.$store.state.user.id;
494
+        this.form.zhTime = parseTime(new Date(), "{y}-{m}-{d}");
495
+      } else if (this.taskName == "技术质量部审核") {
496
+        this.form.jsUserName = this.$store.state.user.name;
497
+        this.form.jsUserId = this.$store.state.user.id;
498
+        this.form.jsTime = parseTime(new Date(), "{y}-{m}-{d}");
499
+      } else if (this.taskName == "经营发展部校核") {
500
+        this.form.jyUserName = this.$store.state.user.name;
501
+        this.form.jyUserId = this.$store.state.user.id;
502
+        this.form.jyTime = parseTime(new Date(), "{y}-{m}-{d}");
503
+      } else if (this.taskName == "分管审核") {
504
+        this.form.managerUserName = this.$store.state.user.name;
505
+        this.form.managerUserId = this.$store.state.user.id;
506
+        this.form.managerTime = parseTime(new Date(), "{y}-{m}-{d}");
507
+      } else if (this.taskName == "总经理审批") {
508
+        this.form.gmUserName = this.$store.state.user.name;
509
+        this.form.gmUserId = this.$store.state.user.id;
510
+        this.form.gmTime = parseTime(new Date(), "{y}-{m}-{d}");
511
+      }
512
+      this.getReviewerName();
513
+    },
514
+    // 获取审核人
515
+    getReviewerName() {
516
+      if (this.form.zhUserId) {
517
+        this.form.zhUserName = this.getUserName(this.form.zhUserId)
518
+      }
519
+      if (this.form.jsUserId) {
520
+        this.form.jsUserName = this.getUserName(this.form.jsUserId)
521
+      }
522
+      if (this.form.jyUserId) {
523
+        getUser(this.form.jyUserId).then((res) => {
524
+          this.form.jyUserName = res.data.nickName;
525
+        });
526
+      }
527
+      if (this.form.managerUserId) {
528
+        getUser(this.form.managerUserId).then((res) => {
529
+          this.form.managerUserName = res.data.nickName;
530
+        });
531
+      }
532
+      if (this.form.gmUserId) {
533
+        getUser(this.form.gmUserId).then((res) => {
534
+          this.form.gmUserName = res.data.nickName;
535
+        });
536
+      }
537
+    },
538
+    // 保存按钮
539
+    preserve() {
540
+      this.$refs["settleForm"].validate((vaild) => {
541
+        if (vaild) {
542
+          if (this.flag) {
543
+            this.updateSettleFn();
544
+            this.updateSettleSummaryFn();
545
+            this.updateSettleWorkFn();
546
+            this.$message.success("保存成功");
547
+          } else {
548
+            this.addSettleFn();
549
+            this.$message.success("保存成功");
550
+          }
551
+        } else {
552
+          this.$message.error('请完善表单必填项')
553
+        }
554
+      });
555
+    },
556
+    submitNextFlow() {
557
+      this.$refs["settleForm"].validate((vaild) => {
558
+        if (vaild) {
559
+          this.preserve();
560
+          if (this.taskName == "结算发起") {
561
+            this.$confirm('结算合计总金额大于了预算内项目结算总金额,将走《超预算或预算外支付(报销)》流程', '提示', {
562
+              confirmButtonText: '确定',
563
+              type: 'warning'
564
+            }).then(() => {
565
+              getUserByRole({ roleId: 4 }).then((res) => {
566
+                this.getNextFlowNodeFn(res.data[0]);
567
+              });
568
+            })
569
+          } else if (this.taskName == "综合事务部处理") {
570
+            this.getNextFlowNodeFn(null, 109, false);
571
+          } else if (this.taskName == "技术质量部审核") {
572
+            this.getNextFlowNodeFn(null, 105, true);
573
+          } else if (this.taskName == "经营发展部校核") {
574
+            this.getNextFlowNodeFn(null, this.deptId, true);
575
+          } else if (this.taskName == "分管审核") {
576
+            getUserByPost({ postName: "总经理" }).then((res) => {
577
+              this.getNextFlowNodeFn(res.data[0].userId);
578
+            });
579
+          } else if (this.taskName == "总经理审批") {
580
+              this.getNextFlowNodeFn();            
581
+          }
582
+
583
+        } else {
584
+          this.$message.error('请完善表单必填项')
585
+        }
586
+      });
587
+    },
588
+    // 获取下一个节点  (下一个用户id,部门id,是否为会签)
589
+    getNextFlowNodeFn(userId, deptId, isList) {
590
+      const params = { taskId: this.taskForm.taskId };
591
+      getNextFlowNode(params).then((res) => {
592
+        if (userId) {
593
+          this.$set(this.taskForm.variables, "approval", userId);
594
+          this.handleComplete(this.taskForm);
595
+        } else {
596
+          if (deptId && isList) {
597
+            getUsersManageLeaderByDept({ deptId }).then((res) => {
598
+              let ids = [];
599
+              res.data.forEach(user => {
600
+                ids.push(user.userId)
601
+              })
602
+              this.$set(this.taskForm.variables, "approvalList", ids);
603
+              this.handleComplete(this.taskForm);
604
+            });
605
+          } else if (deptId && !isList) {
606
+            getUsersDeptLeaderByDept({ deptId }).then((res) => {
607
+              this.$set(this.taskForm.variables, "approval", res.data.userId);
608
+              this.handleComplete(this.taskForm);
609
+            });
610
+          } else {
611
+            this.handleComplete(this.taskForm);
612
+          }
613
+        }
614
+      });
615
+    },
616
+    handleComplete(taskForm) {
617
+      complete(taskForm).then(response => {
618
+        this.$modal.msgSuccess(response.msg);
619
+        this.$emit('goBack');
620
+      })
621
+    },
622
+    // 查询项目列表
623
+    getProjectList() {
624
+      listProject({
625
+        pageNum: 1,
626
+        pageSize: 99999999,
627
+      }).then((response) => {
628
+        this.projectList = response.rows;
629
+      });
630
+    },
631
+    isEmptyObject(obj) {
632
+      for (var key in obj) {
633
+        if (obj.hasOwnProperty(key)) {
634
+          return false;
635
+        }
636
+      }
637
+      return true;
638
+    },
639
+    // 获取合同
640
+    getContractDataList() {
641
+      listProjectContract({ projectId: this.taskForm.formId }).then((res) => {
642
+        if (res.rows) {
643
+          for (let row of res.rows) {
644
+            getContract(row.contractId).then((res) => {
645
+              if (res.data) {
646
+                if (this.form.contractCode != "") {
647
+                  this.form.contractCode =
648
+                    this.form.contractCode + "、" + res.data.contractCode;
649
+                } else {
650
+                  this.form.contractCode = res.data.contractCode;
651
+                }
652
+                if (this.form.contractNumber != "") {
653
+                  this.form.contractNumber =
654
+                    this.form.contractNumber + "、" + res.data.contractNumber;
655
+                } else {
656
+                  this.form.contractNumber = res.data.contractNumber;
657
+                }
658
+              }
659
+            });
660
+          }
661
+        }
662
+      });
663
+    },
664
+    addWorkList() {
665
+      this.settleWorkList.push({
666
+        content: "",
667
+        priceId: "",
668
+        scale: "",
669
+        unit: "",
670
+        groundType: "0",
671
+        price: "",
672
+        workload: 0,
673
+        coefficient: 1,
674
+        settle: 0,
675
+        remark: "",
676
+      });
677
+    },
678
+    addSumWorkList() {
679
+      this.settleSumList.push({
680
+        content: "",
681
+        amount: 0,
682
+        remark: "",
683
+        tableNumber: "0",
684
+      });
685
+    },
686
+    addDeptSettleList() {
687
+      this.deptSettleList.push({
688
+        content: "",
689
+        amount: 0,
690
+        remark: "",
691
+        tableNumber: "1",
692
+      });
693
+    },
694
+    deletWorkItem(index, arr) {
695
+      // let arr = this.settleWorkList;
696
+      if (arr.length == 1) {
697
+        return;
698
+      }
699
+      if (index >= 0 && index < arr.length) {
700
+        arr.splice(index, 1);
701
+      }
702
+      this.calculateSumSettle();
703
+      this.calculateActualSumSettle();
704
+    },
705
+    calculateSettle(work) {
706
+      let sum = work.workload * work.coefficient * work.price;
707
+      if (sum < 600) {
708
+        this.$message.warning('不足600,按600算')
709
+        work.remark = '不足600,按600算'
710
+        sum = 600
711
+      }
712
+      else {
713
+        work.remark = ''
714
+      }
715
+      work.settle = Number(sum).toFixed(2);
716
+      this.calculateSumSettle();
717
+      this.calculateActualSumSettle();
718
+    },
719
+    calculateSumSettle() {
720
+      let sum = 0;
721
+      let arr = this.settleWorkList;
722
+      for (let a of arr) {
723
+        sum = sum + Number(a.settle);
724
+      }
725
+      this.settleSumTr.amount = sum.toFixed(2);
726
+    },
727
+    calculateActualSumSettle() {
728
+      let sum = 0;
729
+      let arr = this.settleSumList;
730
+      for (let a of arr) {
731
+        sum = sum + Number(a.amount);
732
+      }
733
+      this.actualSumSettle = Number(this.settleSumTr.amount) - sum;
734
+      if (this.deptSettleList.length == 1)
735
+        this.deptSettleList[0].amount = this.actualSumSettle;
736
+    },
737
+    calculateDeptAmount(index) {
738
+      let num = 0;
739
+      let len = this.deptSettleList.length;
740
+      if (len > 1) {
741
+        if (index == len - 1) {
742
+          for (let i = 0; i < index; i++) {
743
+            num = num + this.deptSettleList[i].amount;
744
+          }
745
+          this.deptSettleList[index].amount = this.actualSumSettle - num;
746
+        }
747
+      }
748
+    },
749
+    handleChoosePrice(work, index) {
750
+      this.clickWork = work;
751
+      this.clickWork.index = index;
752
+      this.drawer = true;
753
+    },
754
+    getPrice(val) {
755
+      let index = this.clickWork.index;
756
+      this.setValue(this.settleWorkList[index], "workType", val.workType);
757
+      this.setValue(this.settleWorkList[index], "scale", val.scaleGrade);
758
+      this.setValue(this.settleWorkList[index], "unit", val.unit);
759
+      this.setValue(this.settleWorkList[index], "groundType", val.groundType);
760
+      this.setValue(this.settleWorkList[index], "price", val.price);
761
+      this.setValue(this.settleWorkList[index], "priceId", val.priceId);
762
+      this.setValue(this.settleWorkList[index], "content", val.content);
763
+      this.calculateSettle(this.settleWorkList[index]);
764
+      this.drawer = false;
765
+    },
766
+    setValue(key, name, val) {
767
+      this.$set(key, name, val);
768
+    },
769
+
770
+    // 增加数据
771
+    addSettleFn() {
772
+      let settleId = this.taskForm.formId;
773
+      this.form.settleId = settleId;
774
+      getSettle(this.taskForm.formId).then((res) => {
775
+        if (res.data) {
776
+          updateSettle(this.form);
777
+          this.updateSettleWorkFn(settleId);
778
+          this.updateSettleSummaryFn(settleId);
779
+        } else {
780
+          addSettle(this.form).then((res) => {
781
+            this.addSettleWorkFn(settleId);
782
+            this.addSettleSummaryFn(settleId);
783
+          });
784
+        }
785
+      });
786
+    },
787
+    addSettleWorkFn(settleId) {
788
+      for (let work of this.settleWorkList) {
789
+        work.settleId = settleId;
790
+        addSettleWork(work);
791
+      }
792
+    },
793
+    addSettleSummaryFn(settleId) {
794
+      this.settleSumTr.settleId = settleId;
795
+      addSettleSummary(this.settleSumTr);
796
+      for (let item of this.settleSumList) {
797
+        item.settleId = settleId;
798
+        addSettleSummary(item);
799
+      }
800
+      for (let item of this.deptSettleList) {
801
+        item.settleId = settleId;
802
+        addSettleSummary(item);
803
+      }
804
+    },
805
+
806
+    // 更新数据
807
+    updateSettleFn() {
808
+      updateSettle(this.form);
809
+    },
810
+    updateSettleWorkFn() {
811
+      delSettleWork([this.taskForm.formId]).then((res) => {
812
+        this.addSettleWorkFn(this.taskForm.formId);
813
+      });
814
+    },
815
+    updateSettleSummaryFn() {
816
+      delSettleSummary([this.taskForm.formId]).then((res) => {
817
+        this.addSettleSummaryFn(this.taskForm.formId);
818
+      });
819
+    },
820
+    getFileName(name) {
821
+      if (name) {
822
+        let arr = name.split("/");
823
+        return arr[arr.length - 1];
824
+      }
825
+    },
826
+    setSettleDocument(val) {
827
+      this.getDoc(val, "settleDocument");
828
+    },
829
+    setModifyDocument(val) {
830
+      this.getDoc(val, "modifyDocument");
831
+    },
832
+    setFinalDocument(val) {
833
+      this.getDoc(val, "finalDocument");
834
+    },
835
+    getDoc(val, name) {
836
+      if (val) {
837
+        let arr = val.split("/upload");
838
+        this.form[name] = arr[1];
839
+        if (val == "") {
840
+          this.form[name] = "";
841
+        }
842
+      }
843
+    },
844
+    // 获取系数备注
845
+    getCoefficientRemark(work, workType) {
846
+      getPriceRemarkByWorkType({ workType }).then((res) => {
847
+        if (res.code == 200) {
848
+          if (workType != undefined) this.$set(work, "noteTip", res.msg);
849
+          // this.$notify({
850
+          //   title: workType,
851
+          //   dangerouslyUseHTMLString: true,
852
+          //   message: res.msg,
853
+          //   duration: 0
854
+          // });
855
+        }
856
+      });
857
+    },
858
+  },
859
+};
860
+</script>
861
+
862
+<style lang="scss" scoped>
863
+@import "@/assets/styles/element-reset.scss";
864
+
865
+.headers {
866
+  position: relative;
867
+  font-weight: bold;
868
+  font-size: 18px;
869
+  padding-left: 40px;
870
+  padding-bottom: 40px;
871
+
872
+  .line {
873
+    position: absolute;
874
+    left: 22px;
875
+    top: 5px;
876
+    width: 5px;
877
+    height: 14px;
878
+    border-radius: 10px;
879
+    background-color: #2893e5;
880
+  }
881
+}
882
+
883
+table {
884
+  /*边框*/
885
+  /* border: 1px solid black; */
886
+  text-align: center;
887
+  border-collapse: collapse;
888
+  width: 100%;
889
+  /*设置背景颜色*/
890
+  /* background-color: #bfa; */
891
+}
892
+
893
+h3 {
894
+  font-family: "黑体";
895
+  font-weight: bold;
896
+}
897
+</style>

+ 292
- 0
oa-ui/src/views/oa/settle/other.vue 查看文件

@@ -0,0 +1,292 @@
1
+<template>
2
+  <div class="app-container">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4
+      <el-form-item label="项目编号" prop="projectId">
5
+        <el-select v-model="queryParams.projectId" clearable filterable remote reserve-keyword placeholder="请输入项目编号"
6
+          :remote-method="remoteMethod" :loading="loading" style="width: 400px;">
7
+          <el-option v-for="project in projectList" :key="project.projectId"
8
+            :label="project.projectNumber + '-' + project.projectName" :value="project.projectId">
9
+          </el-option>
10
+        </el-select>
11
+      </el-form-item>
12
+      <el-form-item label="上报人" prop="reporter">
13
+        <el-select v-model="queryParams.reporter" filterable clearable @change="handleQuery">
14
+          <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
15
+            :value="item.userId">
16
+          </el-option>
17
+        </el-select>
18
+      </el-form-item>
19
+      <el-form-item label="上报日期" prop="reportTime">
20
+        <el-date-picker clearable v-model="queryParams.reportTime" type="date" value-format="yyyy-MM-dd"
21
+          placeholder="请选择上报日期">
22
+        </el-date-picker>
23
+      </el-form-item>
24
+      <el-form-item>
25
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
26
+      </el-form-item>
27
+    </el-form>
28
+
29
+    <el-row :gutter="10" class="mb8">
30
+      <!-- <el-col :span="1.5">
31
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
32
+          v-hasPermi="['oa:settle:add']">新增</el-button>
33
+      </el-col>
34
+      <el-col :span="1.5">
35
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
36
+          v-hasPermi="['oa:settle:edit']">修改</el-button>
37
+      </el-col>
38
+      <el-col :span="1.5">
39
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
40
+          v-hasPermi="['oa:settle:remove']">删除</el-button>
41
+      </el-col> -->
42
+      <el-col :span="1.5">
43
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
44
+          v-hasPermi="['oa:settle:export']">导出</el-button>
45
+      </el-col>
46
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
47
+    </el-row>
48
+
49
+    <el-table v-loading="loading" :data="settleList" @selection-change="handleSelectionChange">
50
+      <el-table-column type="index" label="序号" width="55" align="center" />
51
+      <el-table-column label="项目编号" align="center" prop="project.projectNumber" />
52
+      <el-table-column label="项目名称" align="center" prop="project.projectName" />
53
+      <el-table-column label="上报人" align="center" prop="reporter">
54
+        <template slot-scope="scope">
55
+          {{ getUserName(scope.row.reporter) }}
56
+        </template>
57
+      </el-table-column>
58
+      <el-table-column label="上报日期" align="center" prop="reportTime" width="180">
59
+        <template slot-scope="scope">
60
+          <span>{{ parseTime(scope.row.reportTime, '{y}-{m}-{d}') }}</span>
61
+        </template>
62
+      </el-table-column>
63
+      <!-- <el-table-column label="工作量上报说明" align="center" prop="workloadReport" /> -->
64
+      <el-table-column label="结算说明" align="center" prop="settleComment" />
65
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
66
+        <template slot-scope="scope">
67
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
68
+            v-hasPermi="['oa:settle:query']">查看</el-button>
69
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
70
+            v-hasPermi="['oa:settle:edit']">修改</el-button>
71
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
72
+            v-hasPermi="['oa:settle:remove']">删除</el-button>
73
+        </template>
74
+      </el-table-column>
75
+    </el-table>
76
+
77
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
78
+      @pagination="getList" />
79
+
80
+    <!-- 添加或修改cmc结算审批对话框 -->
81
+    <el-dialog :title="title" :visible.sync="open" width="65%" append-to-body>
82
+      <settle-form :taskForm="taskForm" :taskName="''" :flowDisabled="false" :disabled="true"></settle-form>
83
+    </el-dialog>
84
+  </div>
85
+</template>
86
+
87
+<script>
88
+import { listSettle, getSettle, delSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
89
+import { listProject } from '@/api/oa/project/project';
90
+import settleForm from '../../flowable/form/settleForm.vue';
91
+
92
+export default {
93
+  components: { settleForm },
94
+  name: "Settle",
95
+  data() {
96
+    return {
97
+      // 遮罩层
98
+      loading: true,
99
+      // 选中数组
100
+      ids: [],
101
+      // 非单个禁用
102
+      single: true,
103
+      // 非多个禁用
104
+      multiple: true,
105
+      // 显示搜索条件
106
+      showSearch: true,
107
+      // 总条数
108
+      total: 0,
109
+      // cmc结算审批表格数据
110
+      settleList: [],
111
+      // 弹出层标题
112
+      title: "",
113
+      // 是否显示弹出层
114
+      open: false,
115
+      // 查询参数
116
+      queryParams: {
117
+        pageNum: 1,
118
+        pageSize: 10,
119
+        projectId: null,
120
+        workloadReport: null,
121
+        reporter: null,
122
+        reportTime: null,
123
+        settleComment: null,
124
+        zhUserId: null,
125
+        zhTime: null,
126
+        zhComment: null,
127
+        jsUserId: null,
128
+        jsTime: null,
129
+        jsComment: null,
130
+        xmUserId: null,
131
+        xmTime: null,
132
+        xmComment: null,
133
+        deptUserId: null,
134
+        deptTime: null,
135
+        deptComment: null,
136
+        jyUserId: null,
137
+        jyTime: null,
138
+        jyComment: null,
139
+        managerUserId: null,
140
+        managerTime: null,
141
+        managerComment: null,
142
+        gmUserId: null,
143
+        gmTime: null,
144
+        gmComment: null
145
+      },
146
+      // 表单参数
147
+      form: {},
148
+      // 表单校验
149
+      rules: {
150
+      },
151
+      projectList: [],
152
+      taskForm: {
153
+        formId: ''
154
+      }
155
+    };
156
+  },
157
+  created() {
158
+    this.getList();
159
+  },
160
+  methods: {
161
+    /** 查询cmc结算审批列表 */
162
+    getList() {
163
+      this.loading = true;
164
+      listSettle(this.queryParams).then(response => {
165
+        this.settleList = response.rows;
166
+        this.total = response.total;
167
+        this.loading = false;
168
+      });
169
+    },
170
+    remoteMethod(val) {
171
+      listProject({
172
+        pageNum: 1,
173
+        pageSize: 20,
174
+        projectNumber: val
175
+      }).then(res => {
176
+        this.projectList = res.rows;
177
+      })
178
+    },
179
+    // 取消按钮
180
+    cancel() {
181
+      this.open = false;
182
+      this.reset();
183
+    },
184
+    // 表单重置
185
+    reset() {
186
+      this.form = {
187
+        settleId: null,
188
+        projectId: null,
189
+        workloadReport: null,
190
+        reporter: null,
191
+        reportTime: null,
192
+        settleComment: null,
193
+        zhUserId: null,
194
+        zhTime: null,
195
+        zhComment: null,
196
+        jsUserId: null,
197
+        jsTime: null,
198
+        jsComment: null,
199
+        xmUserId: null,
200
+        xmTime: null,
201
+        xmComment: null,
202
+        deptUserId: null,
203
+        deptTime: null,
204
+        deptComment: null,
205
+        jyUserId: null,
206
+        jyTime: null,
207
+        jyComment: null,
208
+        managerUserId: null,
209
+        managerTime: null,
210
+        managerComment: null,
211
+        gmUserId: null,
212
+        gmTime: null,
213
+        gmComment: null
214
+      };
215
+      this.resetForm("form");
216
+    },
217
+    /** 搜索按钮操作 */
218
+    handleQuery() {
219
+      this.queryParams.pageNum = 1;
220
+      this.getList();
221
+    },
222
+    /** 重置按钮操作 */
223
+    resetQuery() {
224
+      this.resetForm("queryForm");
225
+      this.handleQuery();
226
+    },
227
+    // 多选框选中数据
228
+    handleSelectionChange(selection) {
229
+      this.ids = selection.map(item => item.settleId)
230
+      this.single = selection.length !== 1
231
+      this.multiple = !selection.length
232
+    },
233
+    /** 新增按钮操作 */
234
+    handleAdd() {
235
+      this.reset();
236
+      this.open = true;
237
+      this.title = "添加cmc结算审批";
238
+    },
239
+    // 查看详情
240
+    handleView(row) {
241
+      this.open = true;
242
+      this.taskForm.formId = row.settleId;
243
+    },
244
+    /** 修改按钮操作 */
245
+    handleUpdate(row) {
246
+      this.reset();
247
+      const settleId = row.settleId || this.ids
248
+      getSettle(settleId).then(response => {
249
+        this.form = response.data;
250
+        this.open = true;
251
+        this.title = "修改cmc结算审批";
252
+      });
253
+    },
254
+    /** 提交按钮 */
255
+    submitForm() {
256
+      this.$refs["form"].validate(valid => {
257
+        if (valid) {
258
+          if (this.form.settleId != null) {
259
+            updateSettle(this.form).then(response => {
260
+              this.$modal.msgSuccess("修改成功");
261
+              this.open = false;
262
+              this.getList();
263
+            });
264
+          } else {
265
+            addSettle(this.form).then(response => {
266
+              this.$modal.msgSuccess("新增成功");
267
+              this.open = false;
268
+              this.getList();
269
+            });
270
+          }
271
+        }
272
+      });
273
+    },
274
+    /** 删除按钮操作 */
275
+    handleDelete(row) {
276
+      const settleIds = row.settleId || this.ids;
277
+      this.$modal.confirm('是否确认删除cmc结算审批编号为"' + settleIds + '"的数据项?').then(function () {
278
+        return delSettle(settleIds);
279
+      }).then(() => {
280
+        this.getList();
281
+        this.$modal.msgSuccess("删除成功");
282
+      }).catch(() => { });
283
+    },
284
+    /** 导出按钮操作 */
285
+    handleExport() {
286
+      this.download('oa/settle/export', {
287
+        ...this.queryParams
288
+      }, `settle_${new Date().getTime()}.xlsx`)
289
+    }
290
+  }
291
+};
292
+</script>

Loading…
取消
儲存