apply-clients 3.5.4-99 → 3.5.5-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/build/dev-server.js +9 -6
  2. package/package.json +1 -1
  3. package/src/App.vue +25 -25
  4. package/src/components/android/AppTakePic.vue +182 -182
  5. package/src/components/android/Process/AppExplorationUser.vue +508 -508
  6. package/src/components/product/Material/MaterialDetailed.vue +268 -268
  7. package/src/components/product/ServiceView.vue +1028 -1028
  8. package/src/filiale/ancheng/android/AppSign.vue +149 -149
  9. package/src/filiale/ancheng/android/AppTakePic.vue +143 -143
  10. package/src/filiale/ancheng/android.js +7 -7
  11. package/src/filiale/baiyin/android/ByAddMaterialScience.vue +858 -858
  12. package/src/filiale/fugou/android/AppAddMaterialScience.vue +440 -440
  13. package/src/filiale/fugou/android/AppDevicesManagement.vue +519 -519
  14. package/src/filiale/fugou/android/AppInstallationDetails.vue +541 -541
  15. package/src/filiale/fugou/android/AppServiceControl.vue +1836 -1845
  16. package/src/filiale/fugou/android/printCharge.vue +162 -162
  17. package/src/filiale/fugou/android.js +16 -16
  18. package/src/filiale/fugou/pc/ExplorationSelect.vue +525 -525
  19. package/src/filiale/fugou/pc/ServiceControl.vue +1705 -1705
  20. package/src/filiale/fugou/pc/ServiceView.vue +941 -941
  21. package/src/filiale/fugou/pc/devicesManagement.vue +483 -483
  22. package/src/filiale/fugou/pc/printChargepc.vue +148 -148
  23. package/src/filiale/gongyi/android/AppAddMaterialScience.vue +493 -493
  24. package/src/filiale/hongda/pc/ApplyDetailsList.vue +329 -329
  25. package/src/filiale/qianneng/android/AppChargeManagement.vue +686 -686
  26. package/src/filiale/qianneng/android/AppServiceView.vue +795 -795
  27. package/src/filiale/qianneng/android.js +15 -15
  28. package/src/filiale/qianneng/pc/ApplyChargeList.vue +639 -639
  29. package/src/filiale/qianneng/pc/ApplyMaterialDetailed.vue +261 -261
  30. package/src/filiale/qianneng/pc/Applybatchdispatch.vue +769 -769
  31. package/src/filiale/qianneng/pc/Applydetail.vue +417 -417
  32. package/src/filiale/qianneng/pc/InstallFunction.vue +188 -188
  33. package/src/filiale/qianneng/pc/InstallInfoSelect.vue +434 -434
  34. package/src/filiale/qianneng/pc/ServiceControl.vue +1382 -1382
  35. package/src/filiale/qianneng/pc/StopApplyList.vue +334 -334
  36. package/src/filiale/qianneng/pc/SupervisoryList.vue +396 -396
  37. package/src/filiale/qianneng/pc/chargeManagement.vue +813 -813
  38. package/src/filiale/qianneng/pc.js +29 -29
  39. package/src/filiale/yangchunboneng/android/AppChargeManagement.vue +520 -520
  40. package/src/filiale/yangchunboneng/android/AppDevicesManagement.vue +645 -645
  41. package/src/filiale/yangchunboneng/android/AppServiceControl.vue +1706 -1706
  42. package/src/filiale/yangchunboneng/pc/ExplorationSelect.vue +547 -547
  43. package/src/filiale/yangchunboneng/pc/ServiceControl.vue +2115 -2115
  44. package/src/filiale/yangchunboneng/pc/ServiceView.vue +1007 -1007
  45. package/src/filiale/yangchunboneng/pc/SupervisoryList.vue +605 -605
  46. package/src/filiale/yangchunboneng/pc/SupervisoryListNew.vue +683 -683
  47. package/src/filiale/yangchunboneng/pc/chargeManagement.vue +1052 -1052
  48. package/src/filiale/yangchunboneng/pc/devicesManagement.vue +574 -574
  49. package/src/main.js +23 -23
@@ -1,520 +1,520 @@
1
- <template>
2
- <div>
3
- <div class="col-sm-12 col-xs-12 form-group app-btn">
4
- <button class="btn btn-info" @click.prevent="showCharge = true">收费</button>
5
- </div>
6
- <div class="col-sm-12 col-xs-12">
7
- <list :model="model" partial='list'>
8
- <div partial class="auto app-text panel">
9
- <div class="panel-body panel-self">
10
- <div class="row">
11
- <p class="col-xs-4 text-left font"><b>收费金额</b></p>
12
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_money }}</p>
13
- </div>
14
- <div class="row">
15
- <p class="col-xs-4 text-left font"><b>收费环节</b></p>
16
- <p class="col-xs-8 text-left input-font">{{ row.defname }}</p>
17
- </div>
18
- <div class="row">
19
- <p class="col-xs-4 text-left font"><b>收费项目</b></p>
20
- <p class="col-xs-8 text-left input-font">{{ row.f_payment_term }}</p>
21
- </div>
22
- <div class="row">
23
- <p class="col-xs-4 text-left font"><b>付款方式</b></p>
24
- <p class="col-xs-8 text-left input-font">{{ row.f_payment_method }}</p>
25
- </div>
26
- <div class="row">
27
- <p class="col-xs-4 text-left font"><b>收费人员</b></p>
28
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_collectors }}</p>
29
- </div>
30
- <div class="row">
31
- <p class="col-xs-4 text-left font"><b>实际收款日期</b></p>
32
- <p class="col-xs-8 text-left input-font">{{row.f_actual_date}}</p>
33
- </div>
34
- <div class="row">
35
- <p class="col-xs-4 text-left font"><b>收费日期</b></p>
36
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_date }}</p>
37
- </div>
38
- <div class="row">
39
- <p class="col-xs-4 text-left font"><b>收费状态</b></p>
40
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_status }}</p>
41
- </div>
42
- <div class="row">
43
- <p class="col-xs-4 text-left font"><b>确认人</b></p>
44
- <p class="col-xs-8 text-left input-font">{{ row.f_confirm_person }}</p>
45
- </div>
46
- <div class="row">
47
- <p class="col-xs-4 text-left font"><b>确认时间</b></p>
48
- <p class="col-xs-8 text-left input-font">{{ row.f_confirm_date }}</p>
49
- </div>
50
- <div class="row">
51
- <button v-if="row.f_charge_status !== '退款'&& row.f_charge_status !== '作废' && $parent.$parent.isEmpty1(row.f_confirm_person)" style="background-color:#499edf;float: right" class="btn btn-info" @click="$parent.$parent.showConfirmModal(row)">确认收款</button>
52
- </div>
53
- </div>
54
- </div>
55
- </list>
56
- </div>
57
- <modal v-if="showCharge" :show.sync="showCharge" v-ref:modal :large="true" :backdrop="false" title="收费明细">
58
- <header slot="modal-header" class="modal-header">
59
- <button type="button" class="close" @click="closeModal"><span>&times;</span></button>
60
- <h4 class="modal-title">收费明细</h4>
61
- </header>
62
- <article slot="modal-body" class="modal-body clearfix">
63
- <div v-for="(i, item) in charge.charges" class="form-group col-sm-12 panel panel-info">
64
- <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
65
- <div class="col-sm-6 text-left">收费项目{{$index+1}}信息</div>
66
- <div class="col-sm-6 text-right"><button
67
- class="button_delete button_spacing"
68
- v-if="!item.f_userfiles_id"
69
- @click.prevent="deleteUserFile(i)"
70
- >删除</button></div>
71
- </div>
72
- <div class="form-group col-sm-12">
73
- <label class="col-sm-2 control-label">收费项目:</label>
74
- <div class="col-sm-10">
75
- <input-select width="100%" class="select select_list" placeholder='请选择'
76
- v-model="item.f_payment_term"
77
- :value.sync="item.f_payment_term"
78
- :options='paymentTerm'
79
- :value-single="true"
80
- close-on-select ></input-select>
81
- </div>
82
- </div>
83
- <div class="form-group col-sm-12">
84
- <label class="col-sm-2 control-label">收费金额:</label>
85
- <div class="col-sm-10">
86
- <input type="text"
87
- class="form-control input_view"
88
- style="width: 100%"
89
- placeholder="0.00"
90
- @change="moneyChange(i)"
91
- v-model="item.f_charge_money" />
92
- </div>
93
- </div>
94
- <div class="form-group col-sm-12" >
95
- <label class="col-sm-2 control-label">付款方式:</label>
96
- <div class="col-sm-10">
97
- <input-select
98
- placeholder='请选择' width="100%"
99
- v-model="item.f_payment_method"
100
- :value.sync="item.f_payment_method"
101
- :options='paymentMethod'
102
- class="select select_list"
103
- :value-single="true"
104
- close-on-select ></input-select>
105
- </div>
106
- </div>
107
- <div class="form-group col-sm-12">
108
- <label class="col-sm-2 control-label">金额大写:</label>
109
- <div class="col-sm-10">
110
- <input type="text"
111
- class="form-control input_view"
112
- style="width: 100%"
113
- :value="smalltoBIG(0)"
114
- readonly
115
- v-model.sync="item.f_amount_words" />
116
- </div>
117
- </div>
118
- <div class="form-group col-sm-12">
119
- <label class="col-sm-2 control-label">备注:</label>
120
- <div class="col-sm-10">
121
- <input type="text"
122
- class="form-control input_view"
123
- style="width: 100%"
124
- v-model="item.f_charge_remarks" />
125
- </div>
126
- </div>
127
- <div class="form-group col-sm-12">
128
- <label class="col-sm-2 control-label">实际收款时间:</label>
129
- <div class="col-sm-10">
130
- <datepicker id="startDate" placeholder="实际收款时间"
131
- style="width: 100%!important;"
132
- v-model="item.f_actual_date"
133
- :value.sync="item.f_actual_date"
134
- :format="'yyyy-MM-dd HH:mm:ss'"
135
- :show-reset-button="true"
136
- >
137
- </datepicker>
138
- </div>
139
- </div>
140
- </div>
141
- <div class="form-group col-sm-12">
142
- <label class="col-sm-2 control-label">应交总金额:</label>
143
- <div class="col-sm-10">
144
- <input type="text"
145
- class="form-control input_view"
146
- style="width: 100%"
147
- readonly
148
- v-model="selectdata.f_due_money" />
149
- </div>
150
- </div>
151
- <div class="form-group col-sm-12">
152
- <label class="col-sm-2 control-label">累计缴费总金额:</label>
153
- <div class="col-sm-10">
154
- <input type="text"
155
- class="form-control input_view"
156
- style="width: 100%"
157
- readonly
158
- v-model="selectdata.f_cumulative_payment_money" />
159
- </div>
160
- </div>
161
- <div class="form-group col-sm-12">
162
- <label class="col-sm-2 control-label">未结总金额:</label>
163
- <div class="col-sm-10">
164
- <input type="text"
165
- class="form-control input_view"
166
- style="width: 100%"
167
- readonly
168
- v-model="selectdata.f_surplus_money" />
169
- </div>
170
- </div>
171
- <div class="form-group col-sm-12">
172
- <label class="col-sm-2 control-label">收费环节:</label>
173
- <div class="col-sm-10">
174
- <input-select width="100%" class="select select_list" placeholder='请选择'
175
- v-model="charge.defname"
176
- :value.sync="charge.defname"
177
- :options='defnames'
178
- :value-single="true"
179
- close-on-select ></input-select>
180
- </div>
181
- </div>
182
-
183
- </article>
184
- <footer slot="modal-footer" class="modal-footer">
185
- <button type="button" class="btn btn-primary" @click="addcharges" >添加收费项目</button>
186
- <button type="button" class="btn btn-primary" @click="saveCharge()">新增收费</button>
187
- </footer>
188
- </modal>
189
- <modal v-if="showConfirm" :show.sync="showConfirm" v-ref:modal :backdrop="false" title="确认收款">
190
- <header slot="modal-header" class="modal-header">
191
- <button type="button" class="close" @click="closeModal"><span>&times;</span></button>
192
- <h4 class="modal-title">确认收款</h4>
193
- </header>
194
- <article slot="modal-body" class="modal-body clearfix">
195
- <div class="form-group col-sm-12">
196
- <label class="col-sm-2 control-label">收费金额:</label>
197
- <div class="col-sm-10">
198
- <input type="text"
199
- class="form-control input_view"
200
- style="width: 100%"
201
- readonly
202
- v-model="charge.f_charge_money" />
203
- </div>
204
- </div>
205
- <div class="form-group col-sm-12">
206
- <label class="col-sm-2 control-label">付款方式:</label>
207
- <div class="col-sm-10">
208
- <input type="text"
209
- class="form-control input_view"
210
- style="width: 100%"
211
- readonly
212
- v-model="charge.f_payment_method" />
213
- </div>
214
- </div>
215
- <div class="form-group col-sm-12">
216
- <label class="col-sm-2 control-label">金额大写:</label>
217
- <div class="col-sm-10">
218
- <input type="text"
219
- class="form-control input_view"
220
- style="width: 100%"
221
- readonly
222
- v-model="charge.f_amount_words" />
223
- </div>
224
- </div>
225
- <div class="form-group col-sm-12">
226
- <label class="col-sm-2 control-label">收费人员:</label>
227
- <div class="col-sm-10">
228
- <input type="text"
229
- class="form-control input_view"
230
- style="width: 100%"
231
- readonly
232
- v-model="charge.f_charge_collectors" />
233
- </div>
234
- </div>
235
- <div class="form-group col-sm-12">
236
- <label class="col-sm-2 control-label">确认人:</label>
237
- <div class="col-sm-10">
238
- <input type="text"
239
- class="form-control input_view"
240
- style="width: 100%"
241
- v-model="charge.f_confirm_person" />
242
- </div>
243
- </div>
244
- <div class="form-group col-sm-12">
245
- <label class="col-sm-2 control-label">确认时间:</label>
246
- <div class="col-sm-10">
247
- <datepicker id="startDate" placeholder="确认时间"
248
- style="width: 100%!important;"
249
- v-model="charge.f_confirm_date"
250
- :value.sync="charge.f_confirm_date"
251
- :default="true"
252
- :format="'yyyy-MM-dd HH:mm:ss'"
253
- :show-reset-button="true"
254
- >
255
- </datepicker>
256
- </div>
257
- </div>
258
- <div class="form-group col-sm-12">
259
- <label class="col-sm-2 control-label">备注:</label>
260
- <div class="col-sm-10">
261
- <input type="text"
262
- class="form-control input_view"
263
- style="width: 100%"
264
- v-model="charge.f_charge_remarks" />
265
- </div>
266
- </div>
267
- </article>
268
- <footer slot="modal-footer" class="modal-footer">
269
- <button type="button" class="btn btn-primary" @click="ConfirmPayment()">确认收款</button>
270
- </footer>
271
- </modal>
272
- </div>
273
- </template>
274
- <script>
275
- import {getNowDate,isEmpty} from '../../../components/Util'
276
- import {PagedList} from 'vue-client'
277
- import {HttpResetClass} from 'vue-client'
278
- import Vue from "vue";
279
-
280
- export default {
281
- title: '收费管理',
282
- props: {
283
- selectdata: {
284
- type: Object
285
- },
286
- mark: {
287
- type: Number,
288
- default: 0
289
- }
290
- },
291
- data () {
292
- return {
293
- model: {
294
- rows: null
295
- },
296
- showCharge:false,
297
- showConfirm:false,
298
- charge: {
299
- charges:[]
300
- },
301
- defnames: this.$appdata.getParam(this.selectdata.f_apply_type + '付款预设')
302
- }
303
- },
304
- ready () {
305
- this.search()
306
- },
307
- methods: {
308
- isEmpty1 (str) {
309
- return str === undefined || str === null || str.toString().trim() === ''
310
- },
311
- // 关闭对话框
312
- closeModal() {
313
- this.showCharge = false
314
- this.showConfirm = false
315
- this.charge = {
316
- charges:[]
317
- }
318
- this.search()
319
- },
320
- addcharges(){
321
- this.charge.charges.push({})
322
- },
323
- deleteUserFile (index) {
324
- this.charge.charges.splice(index, 1)
325
- },
326
- moneyChange (i) {
327
- if (isEmpty(this.charge.charges[i].f_charge_money) || Number(this.charge.charges[i].f_charge_money) === 0) {
328
- this.$showAlert('单笔收费不能为0元!!!', 'warning', 3000)
329
- this.charge.charges[i].f_charge_money = null
330
- return
331
- }
332
- if (this.selectdata.f_apply_type === '散户集体报建' && Number(this.charge.charges[i].f_charge_money) > Number(this.charge.charges[i].f_outstanding_amount)) {
333
- this.$showAlert('单笔收费不能超过未交金额!!!', 'warning', 3000)
334
- this.charge.charges[i].f_charge_money = null
335
- return
336
- }
337
- if (Number(this.charge.charges[i].f_charge_money) > Number(this.selectdata.f_surplus_money)) {
338
- this.$showAlert('单笔收费不能超过未交总金额!!!', 'warning', 3000)
339
- this.charge.charges[i].f_charge_money = null
340
- return
341
- }
342
- this.charge.charges[i].f_charge_money = (this.charge.charges[i].f_charge_money.match(/^\d*(\.?\d{0,2})/g)[0]) || null
343
- this.charge.charges[i].f_amount_words = this.smalltoBIG(this.charge.charges[i].f_charge_money)
344
- },
345
- // 金额转大写
346
- smalltoBIG(n) {
347
- let fraction = ['角', '分'];
348
- let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
349
- let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
350
- let head = n < 0 ? '欠' : '';
351
- n = Math.abs(n);
352
-
353
- let s = '';
354
-
355
- for (var i = 0; i < fraction.length; i++) {
356
- s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
357
- }
358
- s = s || '整';
359
- n = Math.floor(n);
360
-
361
- for (var i = 0; i < unit[0].length && n > 0; i++) {
362
- let p = '';
363
- for (var j = 0; j < unit[1].length && n > 0; j++) {
364
- p = digit[n % 10] + unit[1][j] + p;
365
- n = Math.floor(n / 10);
366
- }
367
- s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
368
- }
369
- return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
370
- },
371
- // 新增收费
372
- async saveCharge() {
373
- if(this.charge.charges.length <= 0){
374
- return this.$showMessage('收费项目不能为空,请添加收费项目!!')
375
- }
376
- if(isEmpty(this.charge.defname )){
377
- return this.$showMessage('收费环节不能为空!!')
378
- }
379
- let http = new HttpResetClass()
380
- let data = {
381
- apply: this.selectdata,
382
- user: Vue.user,
383
- charge: this.charge
384
- }
385
-
386
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyChargeRecord`, {data:data}, {
387
- resolveMsg: null,
388
- rejectMsg: '缴费失败!!!'
389
- })
390
- this.selectdata = res.data
391
-
392
- this.$dispatch('breakControl', this.selectdata)
393
- },
394
- showConfirmModal(row){
395
- this.charge = row
396
- this.charge.f_confirm_person = Vue.user.name
397
- this.showConfirm= true
398
- },
399
- async ConfirmPayment() {
400
- let http = new HttpResetClass()
401
- let data = {
402
- apply: this.selectdata,
403
- user: Vue.user,
404
- charge: this.charge
405
- }
406
- let res = await http.load('POST', this.$androidUtil.getProxyUrl()+'/rs/logic/confirmCharge', {data: data}, {
407
- resolveMsg: null,
408
- rejectMsg: '提交失败!!!'
409
- })
410
- if(res.data==200){
411
- this.$showAlert('提交成功!!!', 'success', 3000)
412
- //延时1s
413
- setTimeout(() => {
414
- this.showConfirm= false
415
- this.showauditor= false
416
- }, 1000)
417
- }
418
- //重新查询
419
- this.search()
420
- if (
421
- (this.selectdata.defname == '合同审批' && !isEmpty(this.selectdata.f_is_have) ) ||
422
- (this.selectdata.defname == '方案设计' && !isEmpty(this.selectdata.f_designer_people) ) ||
423
- (this.selectdata.defname == '方案审批' && !isEmpty(this.selectdata.f_position)) ||
424
- (this.selectdata.defname == '工程审批' && !isEmpty(this.selectdata.f_survey_opinion)) ||
425
- (this.selectdata.defname == '工程派工' && !isEmpty(this.selectdata.f_budget_peoples)) ||
426
- (this.selectdata.defname == '工程验收' && !isEmpty(this.selectdata.f_acceptor)) ||
427
- (this.selectdata.defname == '验收审批' && !isEmpty(this.selectdata.f_prospecting_result)) ||
428
- (this.selectdata.defname == '工程决算' && !isEmpty(this.selectdata.f_price_other)) ||
429
- (this.selectdata.defname == '收费确认' )
430
- ){
431
- this.getbutton()
432
- }
433
- },
434
- async getbutton(){
435
- if (this.selectdata.f_payment_ratio == "100%") {
436
- let http = new HttpResetClass()
437
- let data = {
438
- tablename: 't_charge_record',
439
- condition: `f_process_id = '${this.selectdata.f_process_id}' and f_charge_status = '有效'`
440
- }
441
- let flag = true
442
- let res1 = await http.load(
443
- 'POST',
444
- `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`,
445
- {data: data},
446
- {resolveMsg: null, rejectMsg: '查询失败!!!'}
447
- )
448
- for (let i =0;i<res1.data.length;i++){
449
- if (isEmpty(res1.data[i].f_confirm_person)){
450
- flag = false
451
- }
452
- }
453
- if (flag){
454
- let show_data = this.selectdata
455
- show_data.user = this.$login.f
456
- show_data.start_activity ='报装申请'
457
- show_data.xmlfilename =this.selectdata.f_apply_type
458
- show_data.button = {button_name:'提交'}
459
- await this.$resetpost(
460
- `${this.$androidUtil.getProxyUrl()}/rs/logic/ApplyProductService`,
461
- {data: show_data},
462
- {resolveMsg: null, rejectMsg: '数据保存失败'}
463
- )
464
- }
465
- }
466
- },
467
- async search () {
468
- let http = new HttpResetClass()
469
- let data = {
470
- f_process_id: this.selectdata.f_process_id
471
- }
472
- if (this.selectdata.f_apply_type === '启封通气' && this.selectdata.f_apply_type !== '线下发起'){
473
- data = {
474
- f_process_id: this.selectdata.f_parent_process_id
475
- }
476
- }
477
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/getApplyChargeRecord`, {data:data}, {
478
- resolveMsg: null,
479
- rejectMsg: '收费记录查询失败!!!'
480
- })
481
- this.model.rows = res.data
482
- },
483
- },
484
- events: {
485
- },
486
- computed: {
487
- paymentMethod() {
488
- return this.$appdata.getParam("付款方式")
489
- },
490
- paymentTerm() {
491
- return this.$appdata.getParam("收费项目")
492
- }
493
- },
494
- watch: {
495
- }
496
- }
497
- </script>
498
- <style scoped lang="less">
499
- .qrcode {
500
- display: inline-block !important;
501
- margin: 10px 0px;
502
- }
503
- .panel-self{
504
- border-radius: 10px;
505
- border:1px solid #499EDF;
506
- background-color: #F8F8F8;
507
- }
508
- .vertical-center {
509
- display: flex;
510
- align-items: center;
511
- text-align: center;
512
- }
513
- /*清除model中的浮动*/
514
- .clearfix:after,.clearfix:before{
515
- display: table;
516
- }
517
- .clearfix:after{
518
- clear: both;
519
- }
520
- </style>
1
+ <template>
2
+ <div>
3
+ <div class="col-sm-12 col-xs-12 form-group app-btn">
4
+ <button class="btn btn-info" @click.prevent="showCharge = true">收费</button>
5
+ </div>
6
+ <div class="col-sm-12 col-xs-12">
7
+ <list :model="model" partial='list'>
8
+ <div partial class="auto app-text panel">
9
+ <div class="panel-body panel-self">
10
+ <div class="row">
11
+ <p class="col-xs-4 text-left font"><b>收费金额</b></p>
12
+ <p class="col-xs-8 text-left input-font">{{ row.f_charge_money }}</p>
13
+ </div>
14
+ <div class="row">
15
+ <p class="col-xs-4 text-left font"><b>收费环节</b></p>
16
+ <p class="col-xs-8 text-left input-font">{{ row.defname }}</p>
17
+ </div>
18
+ <div class="row">
19
+ <p class="col-xs-4 text-left font"><b>收费项目</b></p>
20
+ <p class="col-xs-8 text-left input-font">{{ row.f_payment_term }}</p>
21
+ </div>
22
+ <div class="row">
23
+ <p class="col-xs-4 text-left font"><b>付款方式</b></p>
24
+ <p class="col-xs-8 text-left input-font">{{ row.f_payment_method }}</p>
25
+ </div>
26
+ <div class="row">
27
+ <p class="col-xs-4 text-left font"><b>收费人员</b></p>
28
+ <p class="col-xs-8 text-left input-font">{{ row.f_charge_collectors }}</p>
29
+ </div>
30
+ <div class="row">
31
+ <p class="col-xs-4 text-left font"><b>实际收款日期</b></p>
32
+ <p class="col-xs-8 text-left input-font">{{row.f_actual_date}}</p>
33
+ </div>
34
+ <div class="row">
35
+ <p class="col-xs-4 text-left font"><b>收费日期</b></p>
36
+ <p class="col-xs-8 text-left input-font">{{ row.f_charge_date }}</p>
37
+ </div>
38
+ <div class="row">
39
+ <p class="col-xs-4 text-left font"><b>收费状态</b></p>
40
+ <p class="col-xs-8 text-left input-font">{{ row.f_charge_status }}</p>
41
+ </div>
42
+ <div class="row">
43
+ <p class="col-xs-4 text-left font"><b>确认人</b></p>
44
+ <p class="col-xs-8 text-left input-font">{{ row.f_confirm_person }}</p>
45
+ </div>
46
+ <div class="row">
47
+ <p class="col-xs-4 text-left font"><b>确认时间</b></p>
48
+ <p class="col-xs-8 text-left input-font">{{ row.f_confirm_date }}</p>
49
+ </div>
50
+ <div class="row">
51
+ <button v-if="row.f_charge_status !== '退款'&& row.f_charge_status !== '作废' && $parent.$parent.isEmpty1(row.f_confirm_person)" style="background-color:#499edf;float: right" class="btn btn-info" @click="$parent.$parent.showConfirmModal(row)">确认收款</button>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </list>
56
+ </div>
57
+ <modal v-if="showCharge" :show.sync="showCharge" v-ref:modal :large="true" :backdrop="false" title="收费明细">
58
+ <header slot="modal-header" class="modal-header">
59
+ <button type="button" class="close" @click="closeModal"><span>&times;</span></button>
60
+ <h4 class="modal-title">收费明细</h4>
61
+ </header>
62
+ <article slot="modal-body" class="modal-body clearfix">
63
+ <div v-for="(i, item) in charge.charges" class="form-group col-sm-12 panel panel-info">
64
+ <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
65
+ <div class="col-sm-6 text-left">收费项目{{$index+1}}信息</div>
66
+ <div class="col-sm-6 text-right"><button
67
+ class="button_delete button_spacing"
68
+ v-if="!item.f_userfiles_id"
69
+ @click.prevent="deleteUserFile(i)"
70
+ >删除</button></div>
71
+ </div>
72
+ <div class="form-group col-sm-12">
73
+ <label class="col-sm-2 control-label">收费项目:</label>
74
+ <div class="col-sm-10">
75
+ <input-select width="100%" class="select select_list" placeholder='请选择'
76
+ v-model="item.f_payment_term"
77
+ :value.sync="item.f_payment_term"
78
+ :options='paymentTerm'
79
+ :value-single="true"
80
+ close-on-select ></input-select>
81
+ </div>
82
+ </div>
83
+ <div class="form-group col-sm-12">
84
+ <label class="col-sm-2 control-label">收费金额:</label>
85
+ <div class="col-sm-10">
86
+ <input type="text"
87
+ class="form-control input_view"
88
+ style="width: 100%"
89
+ placeholder="0.00"
90
+ @change="moneyChange(i)"
91
+ v-model="item.f_charge_money" />
92
+ </div>
93
+ </div>
94
+ <div class="form-group col-sm-12" >
95
+ <label class="col-sm-2 control-label">付款方式:</label>
96
+ <div class="col-sm-10">
97
+ <input-select
98
+ placeholder='请选择' width="100%"
99
+ v-model="item.f_payment_method"
100
+ :value.sync="item.f_payment_method"
101
+ :options='paymentMethod'
102
+ class="select select_list"
103
+ :value-single="true"
104
+ close-on-select ></input-select>
105
+ </div>
106
+ </div>
107
+ <div class="form-group col-sm-12">
108
+ <label class="col-sm-2 control-label">金额大写:</label>
109
+ <div class="col-sm-10">
110
+ <input type="text"
111
+ class="form-control input_view"
112
+ style="width: 100%"
113
+ :value="smalltoBIG(0)"
114
+ readonly
115
+ v-model.sync="item.f_amount_words" />
116
+ </div>
117
+ </div>
118
+ <div class="form-group col-sm-12">
119
+ <label class="col-sm-2 control-label">备注:</label>
120
+ <div class="col-sm-10">
121
+ <input type="text"
122
+ class="form-control input_view"
123
+ style="width: 100%"
124
+ v-model="item.f_charge_remarks" />
125
+ </div>
126
+ </div>
127
+ <div class="form-group col-sm-12">
128
+ <label class="col-sm-2 control-label">实际收款时间:</label>
129
+ <div class="col-sm-10">
130
+ <datepicker id="startDate" placeholder="实际收款时间"
131
+ style="width: 100%!important;"
132
+ v-model="item.f_actual_date"
133
+ :value.sync="item.f_actual_date"
134
+ :format="'yyyy-MM-dd HH:mm:ss'"
135
+ :show-reset-button="true"
136
+ >
137
+ </datepicker>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ <div class="form-group col-sm-12">
142
+ <label class="col-sm-2 control-label">应交总金额:</label>
143
+ <div class="col-sm-10">
144
+ <input type="text"
145
+ class="form-control input_view"
146
+ style="width: 100%"
147
+ readonly
148
+ v-model="selectdata.f_due_money" />
149
+ </div>
150
+ </div>
151
+ <div class="form-group col-sm-12">
152
+ <label class="col-sm-2 control-label">累计缴费总金额:</label>
153
+ <div class="col-sm-10">
154
+ <input type="text"
155
+ class="form-control input_view"
156
+ style="width: 100%"
157
+ readonly
158
+ v-model="selectdata.f_cumulative_payment_money" />
159
+ </div>
160
+ </div>
161
+ <div class="form-group col-sm-12">
162
+ <label class="col-sm-2 control-label">未结总金额:</label>
163
+ <div class="col-sm-10">
164
+ <input type="text"
165
+ class="form-control input_view"
166
+ style="width: 100%"
167
+ readonly
168
+ v-model="selectdata.f_surplus_money" />
169
+ </div>
170
+ </div>
171
+ <div class="form-group col-sm-12">
172
+ <label class="col-sm-2 control-label">收费环节:</label>
173
+ <div class="col-sm-10">
174
+ <input-select width="100%" class="select select_list" placeholder='请选择'
175
+ v-model="charge.defname"
176
+ :value.sync="charge.defname"
177
+ :options='defnames'
178
+ :value-single="true"
179
+ close-on-select ></input-select>
180
+ </div>
181
+ </div>
182
+
183
+ </article>
184
+ <footer slot="modal-footer" class="modal-footer">
185
+ <button type="button" class="btn btn-primary" @click="addcharges" >添加收费项目</button>
186
+ <button type="button" class="btn btn-primary" @click="saveCharge()">新增收费</button>
187
+ </footer>
188
+ </modal>
189
+ <modal v-if="showConfirm" :show.sync="showConfirm" v-ref:modal :backdrop="false" title="确认收款">
190
+ <header slot="modal-header" class="modal-header">
191
+ <button type="button" class="close" @click="closeModal"><span>&times;</span></button>
192
+ <h4 class="modal-title">确认收款</h4>
193
+ </header>
194
+ <article slot="modal-body" class="modal-body clearfix">
195
+ <div class="form-group col-sm-12">
196
+ <label class="col-sm-2 control-label">收费金额:</label>
197
+ <div class="col-sm-10">
198
+ <input type="text"
199
+ class="form-control input_view"
200
+ style="width: 100%"
201
+ readonly
202
+ v-model="charge.f_charge_money" />
203
+ </div>
204
+ </div>
205
+ <div class="form-group col-sm-12">
206
+ <label class="col-sm-2 control-label">付款方式:</label>
207
+ <div class="col-sm-10">
208
+ <input type="text"
209
+ class="form-control input_view"
210
+ style="width: 100%"
211
+ readonly
212
+ v-model="charge.f_payment_method" />
213
+ </div>
214
+ </div>
215
+ <div class="form-group col-sm-12">
216
+ <label class="col-sm-2 control-label">金额大写:</label>
217
+ <div class="col-sm-10">
218
+ <input type="text"
219
+ class="form-control input_view"
220
+ style="width: 100%"
221
+ readonly
222
+ v-model="charge.f_amount_words" />
223
+ </div>
224
+ </div>
225
+ <div class="form-group col-sm-12">
226
+ <label class="col-sm-2 control-label">收费人员:</label>
227
+ <div class="col-sm-10">
228
+ <input type="text"
229
+ class="form-control input_view"
230
+ style="width: 100%"
231
+ readonly
232
+ v-model="charge.f_charge_collectors" />
233
+ </div>
234
+ </div>
235
+ <div class="form-group col-sm-12">
236
+ <label class="col-sm-2 control-label">确认人:</label>
237
+ <div class="col-sm-10">
238
+ <input type="text"
239
+ class="form-control input_view"
240
+ style="width: 100%"
241
+ v-model="charge.f_confirm_person" />
242
+ </div>
243
+ </div>
244
+ <div class="form-group col-sm-12">
245
+ <label class="col-sm-2 control-label">确认时间:</label>
246
+ <div class="col-sm-10">
247
+ <datepicker id="startDate" placeholder="确认时间"
248
+ style="width: 100%!important;"
249
+ v-model="charge.f_confirm_date"
250
+ :value.sync="charge.f_confirm_date"
251
+ :default="true"
252
+ :format="'yyyy-MM-dd HH:mm:ss'"
253
+ :show-reset-button="true"
254
+ >
255
+ </datepicker>
256
+ </div>
257
+ </div>
258
+ <div class="form-group col-sm-12">
259
+ <label class="col-sm-2 control-label">备注:</label>
260
+ <div class="col-sm-10">
261
+ <input type="text"
262
+ class="form-control input_view"
263
+ style="width: 100%"
264
+ v-model="charge.f_charge_remarks" />
265
+ </div>
266
+ </div>
267
+ </article>
268
+ <footer slot="modal-footer" class="modal-footer">
269
+ <button type="button" class="btn btn-primary" @click="ConfirmPayment()">确认收款</button>
270
+ </footer>
271
+ </modal>
272
+ </div>
273
+ </template>
274
+ <script>
275
+ import {getNowDate,isEmpty} from '../../../components/Util'
276
+ import {PagedList} from 'vue-client'
277
+ import {HttpResetClass} from 'vue-client'
278
+ import Vue from "vue";
279
+
280
+ export default {
281
+ title: '收费管理',
282
+ props: {
283
+ selectdata: {
284
+ type: Object
285
+ },
286
+ mark: {
287
+ type: Number,
288
+ default: 0
289
+ }
290
+ },
291
+ data () {
292
+ return {
293
+ model: {
294
+ rows: null
295
+ },
296
+ showCharge:false,
297
+ showConfirm:false,
298
+ charge: {
299
+ charges:[]
300
+ },
301
+ defnames: this.$appdata.getParam(this.selectdata.f_apply_type + '付款预设')
302
+ }
303
+ },
304
+ ready () {
305
+ this.search()
306
+ },
307
+ methods: {
308
+ isEmpty1 (str) {
309
+ return str === undefined || str === null || str.toString().trim() === ''
310
+ },
311
+ // 关闭对话框
312
+ closeModal() {
313
+ this.showCharge = false
314
+ this.showConfirm = false
315
+ this.charge = {
316
+ charges:[]
317
+ }
318
+ this.search()
319
+ },
320
+ addcharges(){
321
+ this.charge.charges.push({})
322
+ },
323
+ deleteUserFile (index) {
324
+ this.charge.charges.splice(index, 1)
325
+ },
326
+ moneyChange (i) {
327
+ if (isEmpty(this.charge.charges[i].f_charge_money) || Number(this.charge.charges[i].f_charge_money) === 0) {
328
+ this.$showAlert('单笔收费不能为0元!!!', 'warning', 3000)
329
+ this.charge.charges[i].f_charge_money = null
330
+ return
331
+ }
332
+ if (this.selectdata.f_apply_type === '散户集体报建' && Number(this.charge.charges[i].f_charge_money) > Number(this.charge.charges[i].f_outstanding_amount)) {
333
+ this.$showAlert('单笔收费不能超过未交金额!!!', 'warning', 3000)
334
+ this.charge.charges[i].f_charge_money = null
335
+ return
336
+ }
337
+ if (Number(this.charge.charges[i].f_charge_money) > Number(this.selectdata.f_surplus_money)) {
338
+ this.$showAlert('单笔收费不能超过未交总金额!!!', 'warning', 3000)
339
+ this.charge.charges[i].f_charge_money = null
340
+ return
341
+ }
342
+ this.charge.charges[i].f_charge_money = (this.charge.charges[i].f_charge_money.match(/^\d*(\.?\d{0,2})/g)[0]) || null
343
+ this.charge.charges[i].f_amount_words = this.smalltoBIG(this.charge.charges[i].f_charge_money)
344
+ },
345
+ // 金额转大写
346
+ smalltoBIG(n) {
347
+ let fraction = ['角', '分'];
348
+ let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
349
+ let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
350
+ let head = n < 0 ? '欠' : '';
351
+ n = Math.abs(n);
352
+
353
+ let s = '';
354
+
355
+ for (var i = 0; i < fraction.length; i++) {
356
+ s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
357
+ }
358
+ s = s || '整';
359
+ n = Math.floor(n);
360
+
361
+ for (var i = 0; i < unit[0].length && n > 0; i++) {
362
+ let p = '';
363
+ for (var j = 0; j < unit[1].length && n > 0; j++) {
364
+ p = digit[n % 10] + unit[1][j] + p;
365
+ n = Math.floor(n / 10);
366
+ }
367
+ s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
368
+ }
369
+ return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
370
+ },
371
+ // 新增收费
372
+ async saveCharge() {
373
+ if(this.charge.charges.length <= 0){
374
+ return this.$showMessage('收费项目不能为空,请添加收费项目!!')
375
+ }
376
+ if(isEmpty(this.charge.defname )){
377
+ return this.$showMessage('收费环节不能为空!!')
378
+ }
379
+ let http = new HttpResetClass()
380
+ let data = {
381
+ apply: this.selectdata,
382
+ user: Vue.user,
383
+ charge: this.charge
384
+ }
385
+
386
+ let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyChargeRecord`, {data:data}, {
387
+ resolveMsg: null,
388
+ rejectMsg: '缴费失败!!!'
389
+ })
390
+ this.selectdata = res.data
391
+
392
+ this.$dispatch('breakControl', this.selectdata)
393
+ },
394
+ showConfirmModal(row){
395
+ this.charge = row
396
+ this.charge.f_confirm_person = Vue.user.name
397
+ this.showConfirm= true
398
+ },
399
+ async ConfirmPayment() {
400
+ let http = new HttpResetClass()
401
+ let data = {
402
+ apply: this.selectdata,
403
+ user: Vue.user,
404
+ charge: this.charge
405
+ }
406
+ let res = await http.load('POST', this.$androidUtil.getProxyUrl()+'/rs/logic/confirmCharge', {data: data}, {
407
+ resolveMsg: null,
408
+ rejectMsg: '提交失败!!!'
409
+ })
410
+ if(res.data==200){
411
+ this.$showAlert('提交成功!!!', 'success', 3000)
412
+ //延时1s
413
+ setTimeout(() => {
414
+ this.showConfirm= false
415
+ this.showauditor= false
416
+ }, 1000)
417
+ }
418
+ //重新查询
419
+ this.search()
420
+ if (
421
+ (this.selectdata.defname == '合同审批' && !isEmpty(this.selectdata.f_is_have) ) ||
422
+ (this.selectdata.defname == '方案设计' && !isEmpty(this.selectdata.f_designer_people) ) ||
423
+ (this.selectdata.defname == '方案审批' && !isEmpty(this.selectdata.f_position)) ||
424
+ (this.selectdata.defname == '工程审批' && !isEmpty(this.selectdata.f_survey_opinion)) ||
425
+ (this.selectdata.defname == '工程派工' && !isEmpty(this.selectdata.f_budget_peoples)) ||
426
+ (this.selectdata.defname == '工程验收' && !isEmpty(this.selectdata.f_acceptor)) ||
427
+ (this.selectdata.defname == '验收审批' && !isEmpty(this.selectdata.f_prospecting_result)) ||
428
+ (this.selectdata.defname == '工程决算' && !isEmpty(this.selectdata.f_price_other)) ||
429
+ (this.selectdata.defname == '收费确认' )
430
+ ){
431
+ this.getbutton()
432
+ }
433
+ },
434
+ async getbutton(){
435
+ if (this.selectdata.f_payment_ratio == "100%") {
436
+ let http = new HttpResetClass()
437
+ let data = {
438
+ tablename: 't_charge_record',
439
+ condition: `f_process_id = '${this.selectdata.f_process_id}' and f_charge_status = '有效'`
440
+ }
441
+ let flag = true
442
+ let res1 = await http.load(
443
+ 'POST',
444
+ `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`,
445
+ {data: data},
446
+ {resolveMsg: null, rejectMsg: '查询失败!!!'}
447
+ )
448
+ for (let i =0;i<res1.data.length;i++){
449
+ if (isEmpty(res1.data[i].f_confirm_person)){
450
+ flag = false
451
+ }
452
+ }
453
+ if (flag){
454
+ let show_data = this.selectdata
455
+ show_data.user = this.$login.f
456
+ show_data.start_activity ='报装申请'
457
+ show_data.xmlfilename =this.selectdata.f_apply_type
458
+ show_data.button = {button_name:'提交'}
459
+ await this.$resetpost(
460
+ `${this.$androidUtil.getProxyUrl()}/rs/logic/ApplyProductService`,
461
+ {data: show_data},
462
+ {resolveMsg: null, rejectMsg: '数据保存失败'}
463
+ )
464
+ }
465
+ }
466
+ },
467
+ async search () {
468
+ let http = new HttpResetClass()
469
+ let data = {
470
+ f_process_id: this.selectdata.f_process_id
471
+ }
472
+ if (this.selectdata.f_apply_type === '启封通气' && this.selectdata.f_apply_type !== '线下发起'){
473
+ data = {
474
+ f_process_id: this.selectdata.f_parent_process_id
475
+ }
476
+ }
477
+ let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/getApplyChargeRecord`, {data:data}, {
478
+ resolveMsg: null,
479
+ rejectMsg: '收费记录查询失败!!!'
480
+ })
481
+ this.model.rows = res.data
482
+ },
483
+ },
484
+ events: {
485
+ },
486
+ computed: {
487
+ paymentMethod() {
488
+ return this.$appdata.getParam("付款方式")
489
+ },
490
+ paymentTerm() {
491
+ return this.$appdata.getParam("收费项目")
492
+ }
493
+ },
494
+ watch: {
495
+ }
496
+ }
497
+ </script>
498
+ <style scoped lang="less">
499
+ .qrcode {
500
+ display: inline-block !important;
501
+ margin: 10px 0px;
502
+ }
503
+ .panel-self{
504
+ border-radius: 10px;
505
+ border:1px solid #499EDF;
506
+ background-color: #F8F8F8;
507
+ }
508
+ .vertical-center {
509
+ display: flex;
510
+ align-items: center;
511
+ text-align: center;
512
+ }
513
+ /*清除model中的浮动*/
514
+ .clearfix:after,.clearfix:before{
515
+ display: table;
516
+ }
517
+ .clearfix:after{
518
+ clear: both;
519
+ }
520
+ </style>