apply-clients 3.3.201 → 3.3.205
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.
- package/index.html +1 -1
- package/package.json +1 -1
- package/src/apply.js +90 -89
- package/src/components/android/Process/Processes/AppChargeManagement.vue +468 -468
- package/src/components/product/Order/OrderApplyList.vue +8 -2
- package/src/components/product/Order/OrderMessage.vue +2 -2
- package/src/components/product/Process/Processes/chargeManagement.vue +638 -638
- package/src/components/product/Process/Service/ServiceControl.vue +883 -830
- package/src/components/product/ServiceView.vue +741 -638
- package/src/components/product/Supervisory/Service/printChargeNode.vue +873 -0
- package/src/components/product/Supervisory/SupervisoryControl.vue +108 -100
- package/src/components/product/Supervisory/SupervisoryList.vue +29 -2
|
@@ -1,468 +1,468 @@
|
|
|
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="showChargeModal()">新增收费</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" v-if="selectdata.f_apply_type !== '开发商集体报建'">
|
|
11
|
-
<p class="col-xs-4 text-left font"><b>地址</b></p>
|
|
12
|
-
<p class="col-xs-8 text-left input-font">{{ row.f_useraddres }}</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.f_charge_number }}</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_charge_money }}</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_amount_words }}</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_payment_term }}</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_payment_method }}</p>
|
|
33
|
-
</div>
|
|
34
|
-
<div class="row" v-if="row.f_payment_method === '银行转账'">
|
|
35
|
-
<p class="col-xs-4 text-left font"><b>付款方名称</b></p>
|
|
36
|
-
<p class="col-xs-8 text-left input-font">{{ row.f_payer_name }}</p>
|
|
37
|
-
</div>
|
|
38
|
-
<div class="row" v-if="row.f_payment_method === '银行转账'">
|
|
39
|
-
<p class="col-xs-4 text-left font"><b>付款方账号</b></p>
|
|
40
|
-
<p class="col-xs-8 text-left input-font">{{ row.f_payer_account }}</p>
|
|
41
|
-
</div>
|
|
42
|
-
<div class="row" v-if="row.f_payment_method === '银行转账'">
|
|
43
|
-
<p class="col-xs-4 text-left font"><b>付款流水号</b></p>
|
|
44
|
-
<p class="col-xs-8 text-left input-font">{{ row.f_payer_number }}</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_charge_collectors }}</p>
|
|
49
|
-
</div>
|
|
50
|
-
<div class="row">
|
|
51
|
-
<p class="col-xs-4 text-left font"><b>收费日期</b></p>
|
|
52
|
-
<p class="col-xs-8 text-left input-font">{{ row.f_charge_date }}</p>
|
|
53
|
-
</div>
|
|
54
|
-
<div class="row">
|
|
55
|
-
<p class="col-xs-4 text-left font"><b>备注</b></p>
|
|
56
|
-
<p class="col-xs-8 text-left input-font">{{ row.f_charge_remarks }}</p>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
</list>
|
|
61
|
-
</div>
|
|
62
|
-
|
|
63
|
-
<modal v-if="showCharge" :show.sync="showCharge" v-ref:modal :large="true" :backdrop="false" title="收费明细">
|
|
64
|
-
<header slot="modal-header" class="modal-header">
|
|
65
|
-
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
66
|
-
<h4 class="modal-title">收费明细</h4>
|
|
67
|
-
</header>
|
|
68
|
-
<article slot="modal-body" class="modal-body clearfix">
|
|
69
|
-
<div class="form-group row vertical-center" :class="charge.f_payment_term ? '':'has-error'">
|
|
70
|
-
<label class="col-xs-4 control-label">收费项目:</label>
|
|
71
|
-
<div class="col-xs-8">
|
|
72
|
-
<input-select class="select select_list"
|
|
73
|
-
v-model="charge.f_payment_term"
|
|
74
|
-
:value.sync="charge.f_payment_term"
|
|
75
|
-
:options='paymentTerm'
|
|
76
|
-
:value-single="true"
|
|
77
|
-
close-on-select ></input-select>
|
|
78
|
-
</div>
|
|
79
|
-
</div>
|
|
80
|
-
<div class="form-group row vertical-center" :class="charge.f_charge_money ? '':'has-error'">
|
|
81
|
-
<label class="col-xs-4 control-label">收费金额:</label>
|
|
82
|
-
<div class="col-xs-8">
|
|
83
|
-
<input class="form-control input_view" style="" type="number"
|
|
84
|
-
v-model="charge.f_charge_money"
|
|
85
|
-
@keyup="handleInput"
|
|
86
|
-
@change="moneyChange"
|
|
87
|
-
:readonly="false"/>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
<div class="form-group row vertical-center">
|
|
91
|
-
<label class="col-xs-4 control-label">金额大写:</label>
|
|
92
|
-
<div class="col-xs-8">
|
|
93
|
-
<input class="form-control input_view" style=""
|
|
94
|
-
v-model="charge.f_amount_words"
|
|
95
|
-
:value="smalltoBIG(0)"
|
|
96
|
-
:readonly="true"/>
|
|
97
|
-
</div>
|
|
98
|
-
</div>
|
|
99
|
-
<div class="form-group row vertical-center">
|
|
100
|
-
<label class="col-xs-4 control-label">应交总金额:</label>
|
|
101
|
-
<div class="col-xs-8">
|
|
102
|
-
<input class="form-control input_view" style=""
|
|
103
|
-
v-model="selectdata.f_due_money"
|
|
104
|
-
:readonly="true"/>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
<div class="form-group row vertical-center">
|
|
108
|
-
<label class="col-xs-4 control-label">缴费总金额:</label>
|
|
109
|
-
<div class="col-xs-8">
|
|
110
|
-
<input class="form-control input_view" style=""
|
|
111
|
-
v-model="selectdata.f_cumulative_payment_money"
|
|
112
|
-
:readonly="true"/>
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
<div class="form-group row vertical-center">
|
|
116
|
-
<label class="col-xs-4 control-label">未结总金额:</label>
|
|
117
|
-
<div class="col-xs-8">
|
|
118
|
-
<input class="form-control input_view" style=""
|
|
119
|
-
v-model="selectdata.f_surplus_money"
|
|
120
|
-
:readonly="true"/>
|
|
121
|
-
</div>
|
|
122
|
-
</div>
|
|
123
|
-
</article>
|
|
124
|
-
<footer slot="modal-footer" class="modal-footer">
|
|
125
|
-
<button type="button" class="btn btn-primary" @click.prevent="openQrCode()">确认</button>
|
|
126
|
-
</footer>
|
|
127
|
-
</modal>
|
|
128
|
-
|
|
129
|
-
<modal v-if="showCharge" :show.sync="showQrCode" v-ref:qrcodemodal :large="true" :backdrop="false" style="height: 100%">
|
|
130
|
-
<header slot="modal-header" class="modal-header">
|
|
131
|
-
<h4 class="modal-title">微信扫码支付</h4>
|
|
132
|
-
</header>
|
|
133
|
-
<article slot="modal-body" class="modal-body clearfix">
|
|
134
|
-
<div class="text-center">
|
|
135
|
-
<p><b>收费金额:{{ charge.f_charge_money }}¥</b></p>
|
|
136
|
-
<p><b>收费项目:{{ charge.f_payment_term }}</b></p>
|
|
137
|
-
<div id="qrcode" class="qrcode" v-ref:qrcode></div>
|
|
138
|
-
<p>
|
|
139
|
-
等待支付,剩余 <span style="color: #ff791a">{{timeLeft}}</span> 秒
|
|
140
|
-
</p>
|
|
141
|
-
</div>
|
|
142
|
-
</article>
|
|
143
|
-
<footer slot="modal-footer"></footer>
|
|
144
|
-
</modal>
|
|
145
|
-
</div>
|
|
146
|
-
</template>
|
|
147
|
-
<script>
|
|
148
|
-
import {getNowDate,isEmpty} from '../../../Util'
|
|
149
|
-
import {PagedList} from 'vue-client'
|
|
150
|
-
import {HttpResetClass} from 'vue-client'
|
|
151
|
-
// import QRCode from 'qrcodejs2'
|
|
152
|
-
import Vue from "vue";
|
|
153
|
-
|
|
154
|
-
export default {
|
|
155
|
-
title: '收费管理',
|
|
156
|
-
props: {
|
|
157
|
-
selectdata: {
|
|
158
|
-
type: Object
|
|
159
|
-
},
|
|
160
|
-
mark: {
|
|
161
|
-
type: Number,
|
|
162
|
-
default: 0
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
data () {
|
|
166
|
-
return {
|
|
167
|
-
showCharge: false, // 收费明细
|
|
168
|
-
showQrCode : false, // 二维码
|
|
169
|
-
model: {
|
|
170
|
-
rows: null
|
|
171
|
-
}, // 记录
|
|
172
|
-
useraddresList: [], // 地址列表
|
|
173
|
-
charge: {
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
order: null,
|
|
177
|
-
timeLeft: 60,
|
|
178
|
-
paymentInterval: null,
|
|
179
|
-
orderInterval: null,
|
|
180
|
-
config: {
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
ready () {
|
|
186
|
-
this.search()
|
|
187
|
-
this.getConfig()
|
|
188
|
-
},
|
|
189
|
-
methods: {
|
|
190
|
-
// 新增收费
|
|
191
|
-
async saveCharge() {
|
|
192
|
-
let http = new HttpResetClass()
|
|
193
|
-
let data = {
|
|
194
|
-
apply: this.selectdata,
|
|
195
|
-
charge: this.charge,
|
|
196
|
-
user: Vue.user
|
|
197
|
-
// user: {"f_show_department_name":"","parentname":"周口运营部","functions":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"客服系统","icon":"/images/lefticon/档案管理.png","hasright":false,"resourcetype":"function","parentid":"27","children":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"city-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"231","name":"街道管理","templatename":"functionedit","id":"230","position":"1","fullname":"资源管理.功能模块.客服系统.档案管理.街道管理","fullid":"3.21.27.212.230","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"area-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"219","name":"小区管理","templatename":"functionedit","id":"218","position":"3","fullname":"资源管理.功能模块.客服系统.档案管理.小区管理","fullid":"3.21.27.212.218","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"address-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"33664","name":"地址管理","templatename":"functionedit","id":"33663","position":"5","fullname":"资源管理.功能模块.客服系统.档案管理.地址管理","fullid":"3.21.27.212.33663","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"file-user-files","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"237","name":"用户档案","templatename":"functionedit","id":"236","position":"5","fullname":"资源管理.功能模块.客服系统.档案管理.用户档案","fullid":"3.21.27.212.236","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"档案管理","link":"file-user-files-new","hasright":true,"resourcetype":"function","parentid":"212","f_parentname":"档案管理","children":[],"selfid":"39450","name":"预备户管理","templatename":"functionedit","id":"39449","position":"6","fullname":"资源管理.功能模块.客服系统.档案管理.预备户管理","fullid":"3.21.27.212.39449","tablename":"t_function"}],"selfid":"213","name":"档案管理","templatename":"functionedit","id":"212","position":"2","fullname":"资源管理.功能模块.客服系统.档案管理","fullid":"3.21.27.212","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"客服系统","icon":"/images/lefticon/报建系统.png","hasright":true,"resourcetype":"function","parentid":"27","f_parentname":"客服系统","children":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"install-function","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34680","name":"功能业务","templatename":"functionedit","id":"34679","position":"1","fullname":"资源管理.功能模块.客服系统.报建业务.功能业务","fullid":"3.21.27.34673.34679","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"exploration-user","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34686","name":"流程业务","templatename":"functionedit","id":"34685","position":"2","fullname":"资源管理.功能模块.客服系统.报建业务.流程业务","fullid":"3.21.27.34673.34685","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"supervisory-control","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34692","name":"流程监控","templatename":"functionedit","id":"34691","position":"3","fullname":"资源管理.功能模块.客服系统.报建业务.流程监控","fullid":"3.21.27.34673.34691","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"apply-charge-search","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34698","name":"收费明细","templatename":"functionedit","id":"34697","position":"4","fullname":"资源管理.功能模块.客服系统.报建业务.收费明细","fullid":"3.21.27.34673.34697","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"order-apply","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34704","name":"预约申请","templatename":"functionedit","id":"34703","position":"5","fullname":"资源管理.功能模块.客服系统.报建业务.预约申请","fullid":"3.21.27.34673.34703","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"stop-apply","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34710","name":"终止报建","templatename":"functionedit","id":"34709","position":"6","fullname":"资源管理.功能模块.客服系统.报建业务.终止报建","fullid":"3.21.27.34673.34709","tablename":"t_function"}],"selfid":"34674","name":"报建业务","templatename":"functionedit","id":"34673","position":"12","fullname":"资源管理.功能模块.客服系统.报建业务","fullid":"3.21.27.34673","tablename":"t_function"}],"qrcode":"/rs/user/getQRcode?QRCODE=12b2-1631604191812-03447","rolesnames":"营业厅报装,市场部报装,设计部报装,工程部报装,运营部报装,财务部报装,角色监控","f_sex":"男","roles":"51383,51485,51707,51767,51833,51905,52289","f_icon":"tree_user","fullnames":"河南亿星集团实业有限公司.周口市天然气有限公司.周口运营部.报建测试","dir":"ZhouKou","userid":"12b2-1631604191812-03447","accesstime":"1631606085945","parentid":"46569","f_show_rolestr":"","fullids":"30463.10101.46569.51953.","number":"10101","f_dep_id":"1010101203","f_idnumber":{},"selfid":"51954","templatename":"useredit","id":"51953","state":"在职","tablename":"t_user","deptype":"部门","depids":"46569","loginid":"15","imgid":{},"f_user_telephone":{},"rolestr":"营业厅报装,市场部报装,设计部报装,工程部报装,运营部报装,财务部报装,角色监控","deps":"周口运营部","f_age":{},"resourcetype":"user","orgid":"10101","f_department_name":"周口运营部","ename":"bjcs","deleted":"false","entitytype":"t_user","f_description":{},"loginip":"192.168.66.37","name":"报建测试","position":"1","orgs":"周口市天然气有限公司","haslicense":true,"f_role_name":"营业厅报装 市场部报装 设计部报装 工程部报装 运营部报装 财务部报装 角色监控 ","f_allArea":[],"f_gasman":[],"lics":[]}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyChargeRecord`, {data:data}, {
|
|
201
|
-
resolveMsg: null,
|
|
202
|
-
rejectMsg: '缴费失败!!!'
|
|
203
|
-
})
|
|
204
|
-
this.selectdata = res.data
|
|
205
|
-
|
|
206
|
-
this.$dispatch('breakControl')
|
|
207
|
-
},
|
|
208
|
-
// 获取订单信息
|
|
209
|
-
async getOrderInformation () {
|
|
210
|
-
// 查询订单信息
|
|
211
|
-
console.log('查询订单信息!!!')
|
|
212
|
-
let data = {
|
|
213
|
-
out_trade_no: this.order.out_trade_no,
|
|
214
|
-
filiale: this.config[Vue.user.number]
|
|
215
|
-
}
|
|
216
|
-
// 查询订单状态
|
|
217
|
-
let http = new HttpResetClass()
|
|
218
|
-
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/queryBzIsPay`, data, {
|
|
219
|
-
resolveMsg: null,
|
|
220
|
-
rejectMsg: '订单查询失败!!!'
|
|
221
|
-
})
|
|
222
|
-
|
|
223
|
-
// 支付成功
|
|
224
|
-
if (res.data.trade_state === 'SUCCESS') {
|
|
225
|
-
clearTimeout(this.paymentInterval)
|
|
226
|
-
clearTimeout(this.orderInterval)
|
|
227
|
-
this.timeLeft = 10
|
|
228
|
-
// 清除二维码
|
|
229
|
-
this.clearQrCode()
|
|
230
|
-
this.showQrCode = false
|
|
231
|
-
|
|
232
|
-
this.saveCharge()
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
// 打开二维码
|
|
236
|
-
async openQrCode () {
|
|
237
|
-
if (isEmpty(this.charge.f_payment_term)) {
|
|
238
|
-
this.$showAlert('请选择收费项目!!!', 'warning', 3000)
|
|
239
|
-
return
|
|
240
|
-
}
|
|
241
|
-
if (isEmpty(this.charge.f_charge_money)) {
|
|
242
|
-
this.$showAlert('请输入收费金额!!!', 'warning', 3000)
|
|
243
|
-
return
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
let http = new HttpResetClass()
|
|
247
|
-
// 接口金额 单位为:分
|
|
248
|
-
let data = {
|
|
249
|
-
money: this.charge.f_charge_money * 100,
|
|
250
|
-
attach: {},
|
|
251
|
-
str: this.charge.f_payment_term,
|
|
252
|
-
filiale: this.config[Vue.user.number]
|
|
253
|
-
}
|
|
254
|
-
// 下订单
|
|
255
|
-
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/bzgetcode`, data, {
|
|
256
|
-
resolveMsg: null,
|
|
257
|
-
rejectMsg: '订单生成失败!!!'
|
|
258
|
-
})
|
|
259
|
-
|
|
260
|
-
console.log('=================================')
|
|
261
|
-
console.log(res.data)
|
|
262
|
-
this.order = res.data
|
|
263
|
-
|
|
264
|
-
this.showQrCode = true
|
|
265
|
-
|
|
266
|
-
this.$nextTick(()=>{
|
|
267
|
-
this.qrcode()
|
|
268
|
-
})
|
|
269
|
-
|
|
270
|
-
// 剩余支付时间
|
|
271
|
-
this.paymentInterval = setInterval(() => {
|
|
272
|
-
this.timeLeft = this.timeLeft - 1
|
|
273
|
-
},1000)
|
|
274
|
-
|
|
275
|
-
// 3秒查询一次订单支付信息
|
|
276
|
-
this.orderInterval = setInterval(() => {
|
|
277
|
-
this.getOrderInformation()
|
|
278
|
-
},3000)
|
|
279
|
-
|
|
280
|
-
},
|
|
281
|
-
qrcode () {
|
|
282
|
-
let qrcode = new QRCode('qrcode',{
|
|
283
|
-
text: this.order.url, // 设置二维码内容或跳转地址
|
|
284
|
-
width: 200, // 设置宽度,单位像素
|
|
285
|
-
height: 200, // 设置高度,单位像素
|
|
286
|
-
correctLevel: QRCode.CorrectLevel.L //容错率,L/M/Hs
|
|
287
|
-
})
|
|
288
|
-
},
|
|
289
|
-
clearQrCode () {
|
|
290
|
-
document.getElementById('qrcode').innerHTML = ''
|
|
291
|
-
},
|
|
292
|
-
moneyChange () {
|
|
293
|
-
if (isEmpty(this.charge.f_charge_money) || Number(this.charge.f_charge_money) === 0) {
|
|
294
|
-
this.$showAlert('单笔收费不能为0元!!!', 'warning', 3000)
|
|
295
|
-
this.charge.f_charge_money = null
|
|
296
|
-
return
|
|
297
|
-
}
|
|
298
|
-
if (this.selectdata.f_apply_type === '散户集体报建' && Number(this.charge.f_charge_money) > Number(this.charge.f_outstanding_amount)) {
|
|
299
|
-
this.$showAlert('单笔收费不能超过未交金额!!!', 'warning', 3000)
|
|
300
|
-
this.charge.f_charge_money = null
|
|
301
|
-
return
|
|
302
|
-
}
|
|
303
|
-
if (Number(this.charge.f_charge_money) > Number(this.selectdata.f_surplus_money)) {
|
|
304
|
-
this.$showAlert('单笔收费不能超过未交总金额!!!', 'warning', 3000)
|
|
305
|
-
this.charge.f_charge_money = null
|
|
306
|
-
return
|
|
307
|
-
}
|
|
308
|
-
},
|
|
309
|
-
// 金额转大写
|
|
310
|
-
handleInput(e) {
|
|
311
|
-
// 通过正则过滤小数点后两位
|
|
312
|
-
e.target.value = (e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
|
|
313
|
-
this.charge.f_amount_words = this.smalltoBIG(e.target.value)
|
|
314
|
-
},
|
|
315
|
-
// 金额转大写
|
|
316
|
-
smalltoBIG(n) {
|
|
317
|
-
let fraction = ['角', '分'];
|
|
318
|
-
let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
|
|
319
|
-
let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
|
|
320
|
-
let head = n < 0 ? '欠' : '';
|
|
321
|
-
n = Math.abs(n);
|
|
322
|
-
|
|
323
|
-
let s = '';
|
|
324
|
-
|
|
325
|
-
for (var i = 0; i < fraction.length; i++) {
|
|
326
|
-
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
|
|
327
|
-
}
|
|
328
|
-
s = s || '整';
|
|
329
|
-
n = Math.floor(n);
|
|
330
|
-
|
|
331
|
-
for (var i = 0; i < unit[0].length && n > 0; i++) {
|
|
332
|
-
let p = '';
|
|
333
|
-
for (var j = 0; j < unit[1].length && n > 0; j++) {
|
|
334
|
-
p = digit[n % 10] + unit[1][j] + p;
|
|
335
|
-
n = Math.floor(n / 10);
|
|
336
|
-
}
|
|
337
|
-
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
|
|
338
|
-
}
|
|
339
|
-
return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
|
|
340
|
-
},
|
|
341
|
-
async getUserAddress() {
|
|
342
|
-
let http = new HttpResetClass()
|
|
343
|
-
let data = {}
|
|
344
|
-
let url = null
|
|
345
|
-
if (this.selectdata.f_apply_type === '改管报建' || this.selectdata.f_apply_type === '增容报建') {
|
|
346
|
-
data = {
|
|
347
|
-
condition: `ui.f_userinfo_id = ${this.selectdata.f_userinfo_id}`
|
|
348
|
-
}
|
|
349
|
-
url = `${this.$androidUtil.getProxyUrl()}/rs/sql/applyGetUserinfos`
|
|
350
|
-
} else {
|
|
351
|
-
data = {
|
|
352
|
-
condition: this.selectdata.f_apply_type === '散户集体报建' ? `nvl(cr.f_cumulative_payment_money, 0) < ${this.selectdata.f_price}` : '1=1',
|
|
353
|
-
f_process_id: this.selectdata.f_process_id
|
|
354
|
-
}
|
|
355
|
-
url = `${this.$androidUtil.getProxyUrl()}/rs/sql/getAddresAndCumulativePayment`
|
|
356
|
-
}
|
|
357
|
-
let res = await http.load('POST', url, {data:data}, {
|
|
358
|
-
resolveMsg: null,
|
|
359
|
-
rejectMsg: '用户获取失败!!!'
|
|
360
|
-
})
|
|
361
|
-
|
|
362
|
-
if (res.data.length <= 0) {
|
|
363
|
-
this.$showAlert('暂无需要缴费用户!!!', 'warning', 3000)
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
this.useraddresList = res.data.map(item => {
|
|
367
|
-
return {
|
|
368
|
-
// 有用户姓名地址后拼接姓名
|
|
369
|
-
label: `${item.f_address} ${isEmpty(item.f_user_name) ? '' : '--- ' + item.f_user_name}`,
|
|
370
|
-
value: item
|
|
371
|
-
}
|
|
372
|
-
})
|
|
373
|
-
|
|
374
|
-
},
|
|
375
|
-
async showChargeModal() {
|
|
376
|
-
this.getUserAddress()
|
|
377
|
-
|
|
378
|
-
this.charge.f_payment_method = '掌上营业厅'
|
|
379
|
-
|
|
380
|
-
this.showCharge = true
|
|
381
|
-
},
|
|
382
|
-
async search () {
|
|
383
|
-
let http = new HttpResetClass()
|
|
384
|
-
let data = {
|
|
385
|
-
f_process_id: this.selectdata.f_process_id
|
|
386
|
-
}
|
|
387
|
-
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/getApplyChargeRecord`, {data:data}, {
|
|
388
|
-
resolveMsg: null,
|
|
389
|
-
rejectMsg: '收费记录查询失败!!!'
|
|
390
|
-
})
|
|
391
|
-
this.model.rows = res.data
|
|
392
|
-
},
|
|
393
|
-
// 关闭对话框
|
|
394
|
-
closeModal () {
|
|
395
|
-
this.showCharge = false
|
|
396
|
-
this.showInvalid = false
|
|
397
|
-
this.showPrint = false
|
|
398
|
-
this.charge = {}
|
|
399
|
-
this.search()
|
|
400
|
-
},
|
|
401
|
-
async getConfig () {
|
|
402
|
-
let http = new HttpResetClass()
|
|
403
|
-
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/getWeiXinConfig`, null, {
|
|
404
|
-
resolveMsg: null,
|
|
405
|
-
rejectMsg: '获取配置失败!!!'
|
|
406
|
-
})
|
|
407
|
-
|
|
408
|
-
console.log('==============================')
|
|
409
|
-
console.log(res.data)
|
|
410
|
-
|
|
411
|
-
this.config = res.data
|
|
412
|
-
|
|
413
|
-
this.timeLeft = this.config.timeLeft
|
|
414
|
-
},
|
|
415
|
-
},
|
|
416
|
-
events: {
|
|
417
|
-
},
|
|
418
|
-
computed: {
|
|
419
|
-
paymentMethod() {
|
|
420
|
-
return this.$appdata.getParam("付款方式")
|
|
421
|
-
},
|
|
422
|
-
paymentTerm() {
|
|
423
|
-
return this.$appdata.getParam("收费项目")
|
|
424
|
-
// return [{label: '安装费', value: '安装费'}]
|
|
425
|
-
}
|
|
426
|
-
},
|
|
427
|
-
watch: {
|
|
428
|
-
timeLeft () {
|
|
429
|
-
if (this.timeLeft <= 0) {
|
|
430
|
-
clearTimeout(this.paymentInterval)
|
|
431
|
-
clearTimeout(this.orderInterval)
|
|
432
|
-
|
|
433
|
-
this.timeLeft = this.config.timeLeft
|
|
434
|
-
|
|
435
|
-
// 清除二维码
|
|
436
|
-
this.clearQrCode()
|
|
437
|
-
|
|
438
|
-
this.showQrCode = false
|
|
439
|
-
|
|
440
|
-
this.$showMessage('订单支付超时!!!')
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
</script>
|
|
446
|
-
<style scoped lang="less">
|
|
447
|
-
.qrcode {
|
|
448
|
-
display: inline-block !important;
|
|
449
|
-
margin: 10px 0px;
|
|
450
|
-
}
|
|
451
|
-
.panel-self{
|
|
452
|
-
border-radius: 10px;
|
|
453
|
-
border:1px solid #499EDF;
|
|
454
|
-
background-color: #F8F8F8;
|
|
455
|
-
}
|
|
456
|
-
.vertical-center {
|
|
457
|
-
display: flex;
|
|
458
|
-
align-items: center;
|
|
459
|
-
text-align: center;
|
|
460
|
-
}
|
|
461
|
-
/*清除model中的浮动*/
|
|
462
|
-
.clearfix:after,.clearfix:before{
|
|
463
|
-
display: table;
|
|
464
|
-
}
|
|
465
|
-
.clearfix:after{
|
|
466
|
-
clear: both;
|
|
467
|
-
}
|
|
468
|
-
</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="showChargeModal()">新增收费</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" v-if="selectdata.f_apply_type !== '开发商集体报建'">
|
|
11
|
+
<p class="col-xs-4 text-left font"><b>地址</b></p>
|
|
12
|
+
<p class="col-xs-8 text-left input-font">{{ row.f_useraddres }}</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.f_charge_number }}</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_charge_money }}</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_amount_words }}</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_payment_term }}</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_payment_method }}</p>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="row" v-if="row.f_payment_method === '银行转账'">
|
|
35
|
+
<p class="col-xs-4 text-left font"><b>付款方名称</b></p>
|
|
36
|
+
<p class="col-xs-8 text-left input-font">{{ row.f_payer_name }}</p>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="row" v-if="row.f_payment_method === '银行转账'">
|
|
39
|
+
<p class="col-xs-4 text-left font"><b>付款方账号</b></p>
|
|
40
|
+
<p class="col-xs-8 text-left input-font">{{ row.f_payer_account }}</p>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="row" v-if="row.f_payment_method === '银行转账'">
|
|
43
|
+
<p class="col-xs-4 text-left font"><b>付款流水号</b></p>
|
|
44
|
+
<p class="col-xs-8 text-left input-font">{{ row.f_payer_number }}</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_charge_collectors }}</p>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="row">
|
|
51
|
+
<p class="col-xs-4 text-left font"><b>收费日期</b></p>
|
|
52
|
+
<p class="col-xs-8 text-left input-font">{{ row.f_charge_date }}</p>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="row">
|
|
55
|
+
<p class="col-xs-4 text-left font"><b>备注</b></p>
|
|
56
|
+
<p class="col-xs-8 text-left input-font">{{ row.f_charge_remarks }}</p>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</list>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<modal v-if="showCharge" :show.sync="showCharge" v-ref:modal :large="true" :backdrop="false" title="收费明细">
|
|
64
|
+
<header slot="modal-header" class="modal-header">
|
|
65
|
+
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
66
|
+
<h4 class="modal-title">收费明细</h4>
|
|
67
|
+
</header>
|
|
68
|
+
<article slot="modal-body" class="modal-body clearfix">
|
|
69
|
+
<div class="form-group row vertical-center" :class="charge.f_payment_term ? '':'has-error'">
|
|
70
|
+
<label class="col-xs-4 control-label">收费项目:</label>
|
|
71
|
+
<div class="col-xs-8">
|
|
72
|
+
<input-select class="select select_list"
|
|
73
|
+
v-model="charge.f_payment_term"
|
|
74
|
+
:value.sync="charge.f_payment_term"
|
|
75
|
+
:options='paymentTerm'
|
|
76
|
+
:value-single="true"
|
|
77
|
+
close-on-select ></input-select>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="form-group row vertical-center" :class="charge.f_charge_money ? '':'has-error'">
|
|
81
|
+
<label class="col-xs-4 control-label">收费金额:</label>
|
|
82
|
+
<div class="col-xs-8">
|
|
83
|
+
<input class="form-control input_view" style="" type="number"
|
|
84
|
+
v-model="charge.f_charge_money"
|
|
85
|
+
@keyup="handleInput"
|
|
86
|
+
@change="moneyChange"
|
|
87
|
+
:readonly="false"/>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="form-group row vertical-center">
|
|
91
|
+
<label class="col-xs-4 control-label">金额大写:</label>
|
|
92
|
+
<div class="col-xs-8">
|
|
93
|
+
<input class="form-control input_view" style=""
|
|
94
|
+
v-model="charge.f_amount_words"
|
|
95
|
+
:value="smalltoBIG(0)"
|
|
96
|
+
:readonly="true"/>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="form-group row vertical-center">
|
|
100
|
+
<label class="col-xs-4 control-label">应交总金额:</label>
|
|
101
|
+
<div class="col-xs-8">
|
|
102
|
+
<input class="form-control input_view" style=""
|
|
103
|
+
v-model="selectdata.f_due_money"
|
|
104
|
+
:readonly="true"/>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
<div class="form-group row vertical-center">
|
|
108
|
+
<label class="col-xs-4 control-label">缴费总金额:</label>
|
|
109
|
+
<div class="col-xs-8">
|
|
110
|
+
<input class="form-control input_view" style=""
|
|
111
|
+
v-model="selectdata.f_cumulative_payment_money"
|
|
112
|
+
:readonly="true"/>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="form-group row vertical-center">
|
|
116
|
+
<label class="col-xs-4 control-label">未结总金额:</label>
|
|
117
|
+
<div class="col-xs-8">
|
|
118
|
+
<input class="form-control input_view" style=""
|
|
119
|
+
v-model="selectdata.f_surplus_money"
|
|
120
|
+
:readonly="true"/>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</article>
|
|
124
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
125
|
+
<button type="button" class="btn btn-primary" @click.prevent="openQrCode()">确认</button>
|
|
126
|
+
</footer>
|
|
127
|
+
</modal>
|
|
128
|
+
|
|
129
|
+
<modal v-if="showCharge" :show.sync="showQrCode" v-ref:qrcodemodal :large="true" :backdrop="false" style="height: 100%">
|
|
130
|
+
<header slot="modal-header" class="modal-header">
|
|
131
|
+
<h4 class="modal-title">微信扫码支付</h4>
|
|
132
|
+
</header>
|
|
133
|
+
<article slot="modal-body" class="modal-body clearfix">
|
|
134
|
+
<div class="text-center">
|
|
135
|
+
<p><b>收费金额:{{ charge.f_charge_money }}¥</b></p>
|
|
136
|
+
<p><b>收费项目:{{ charge.f_payment_term }}</b></p>
|
|
137
|
+
<div id="qrcode" class="qrcode" v-ref:qrcode></div>
|
|
138
|
+
<p>
|
|
139
|
+
等待支付,剩余 <span style="color: #ff791a">{{timeLeft}}</span> 秒
|
|
140
|
+
</p>
|
|
141
|
+
</div>
|
|
142
|
+
</article>
|
|
143
|
+
<footer slot="modal-footer"></footer>
|
|
144
|
+
</modal>
|
|
145
|
+
</div>
|
|
146
|
+
</template>
|
|
147
|
+
<script>
|
|
148
|
+
import {getNowDate,isEmpty} from '../../../Util'
|
|
149
|
+
import {PagedList} from 'vue-client'
|
|
150
|
+
import {HttpResetClass} from 'vue-client'
|
|
151
|
+
// import QRCode from 'qrcodejs2'
|
|
152
|
+
import Vue from "vue";
|
|
153
|
+
|
|
154
|
+
export default {
|
|
155
|
+
title: '收费管理',
|
|
156
|
+
props: {
|
|
157
|
+
selectdata: {
|
|
158
|
+
type: Object
|
|
159
|
+
},
|
|
160
|
+
mark: {
|
|
161
|
+
type: Number,
|
|
162
|
+
default: 0
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
data () {
|
|
166
|
+
return {
|
|
167
|
+
showCharge: false, // 收费明细
|
|
168
|
+
showQrCode : false, // 二维码
|
|
169
|
+
model: {
|
|
170
|
+
rows: null
|
|
171
|
+
}, // 记录
|
|
172
|
+
useraddresList: [], // 地址列表
|
|
173
|
+
charge: {
|
|
174
|
+
|
|
175
|
+
},
|
|
176
|
+
order: null,
|
|
177
|
+
timeLeft: 60,
|
|
178
|
+
paymentInterval: null,
|
|
179
|
+
orderInterval: null,
|
|
180
|
+
config: {
|
|
181
|
+
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
ready () {
|
|
186
|
+
this.search()
|
|
187
|
+
this.getConfig()
|
|
188
|
+
},
|
|
189
|
+
methods: {
|
|
190
|
+
// 新增收费
|
|
191
|
+
async saveCharge() {
|
|
192
|
+
let http = new HttpResetClass()
|
|
193
|
+
let data = {
|
|
194
|
+
apply: this.selectdata,
|
|
195
|
+
charge: this.charge,
|
|
196
|
+
user: Vue.user
|
|
197
|
+
// user: {"f_show_department_name":"","parentname":"周口运营部","functions":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"客服系统","icon":"/images/lefticon/档案管理.png","hasright":false,"resourcetype":"function","parentid":"27","children":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"city-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"231","name":"街道管理","templatename":"functionedit","id":"230","position":"1","fullname":"资源管理.功能模块.客服系统.档案管理.街道管理","fullid":"3.21.27.212.230","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"area-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"219","name":"小区管理","templatename":"functionedit","id":"218","position":"3","fullname":"资源管理.功能模块.客服系统.档案管理.小区管理","fullid":"3.21.27.212.218","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"address-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"33664","name":"地址管理","templatename":"functionedit","id":"33663","position":"5","fullname":"资源管理.功能模块.客服系统.档案管理.地址管理","fullid":"3.21.27.212.33663","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"file-user-files","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"237","name":"用户档案","templatename":"functionedit","id":"236","position":"5","fullname":"资源管理.功能模块.客服系统.档案管理.用户档案","fullid":"3.21.27.212.236","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"档案管理","link":"file-user-files-new","hasright":true,"resourcetype":"function","parentid":"212","f_parentname":"档案管理","children":[],"selfid":"39450","name":"预备户管理","templatename":"functionedit","id":"39449","position":"6","fullname":"资源管理.功能模块.客服系统.档案管理.预备户管理","fullid":"3.21.27.212.39449","tablename":"t_function"}],"selfid":"213","name":"档案管理","templatename":"functionedit","id":"212","position":"2","fullname":"资源管理.功能模块.客服系统.档案管理","fullid":"3.21.27.212","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"客服系统","icon":"/images/lefticon/报建系统.png","hasright":true,"resourcetype":"function","parentid":"27","f_parentname":"客服系统","children":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"install-function","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34680","name":"功能业务","templatename":"functionedit","id":"34679","position":"1","fullname":"资源管理.功能模块.客服系统.报建业务.功能业务","fullid":"3.21.27.34673.34679","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"exploration-user","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34686","name":"流程业务","templatename":"functionedit","id":"34685","position":"2","fullname":"资源管理.功能模块.客服系统.报建业务.流程业务","fullid":"3.21.27.34673.34685","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"supervisory-control","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34692","name":"流程监控","templatename":"functionedit","id":"34691","position":"3","fullname":"资源管理.功能模块.客服系统.报建业务.流程监控","fullid":"3.21.27.34673.34691","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"apply-charge-search","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34698","name":"收费明细","templatename":"functionedit","id":"34697","position":"4","fullname":"资源管理.功能模块.客服系统.报建业务.收费明细","fullid":"3.21.27.34673.34697","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"order-apply","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34704","name":"预约申请","templatename":"functionedit","id":"34703","position":"5","fullname":"资源管理.功能模块.客服系统.报建业务.预约申请","fullid":"3.21.27.34673.34703","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"stop-apply","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34710","name":"终止报建","templatename":"functionedit","id":"34709","position":"6","fullname":"资源管理.功能模块.客服系统.报建业务.终止报建","fullid":"3.21.27.34673.34709","tablename":"t_function"}],"selfid":"34674","name":"报建业务","templatename":"functionedit","id":"34673","position":"12","fullname":"资源管理.功能模块.客服系统.报建业务","fullid":"3.21.27.34673","tablename":"t_function"}],"qrcode":"/rs/user/getQRcode?QRCODE=12b2-1631604191812-03447","rolesnames":"营业厅报装,市场部报装,设计部报装,工程部报装,运营部报装,财务部报装,角色监控","f_sex":"男","roles":"51383,51485,51707,51767,51833,51905,52289","f_icon":"tree_user","fullnames":"河南亿星集团实业有限公司.周口市天然气有限公司.周口运营部.报建测试","dir":"ZhouKou","userid":"12b2-1631604191812-03447","accesstime":"1631606085945","parentid":"46569","f_show_rolestr":"","fullids":"30463.10101.46569.51953.","number":"10101","f_dep_id":"1010101203","f_idnumber":{},"selfid":"51954","templatename":"useredit","id":"51953","state":"在职","tablename":"t_user","deptype":"部门","depids":"46569","loginid":"15","imgid":{},"f_user_telephone":{},"rolestr":"营业厅报装,市场部报装,设计部报装,工程部报装,运营部报装,财务部报装,角色监控","deps":"周口运营部","f_age":{},"resourcetype":"user","orgid":"10101","f_department_name":"周口运营部","ename":"bjcs","deleted":"false","entitytype":"t_user","f_description":{},"loginip":"192.168.66.37","name":"报建测试","position":"1","orgs":"周口市天然气有限公司","haslicense":true,"f_role_name":"营业厅报装 市场部报装 设计部报装 工程部报装 运营部报装 财务部报装 角色监控 ","f_allArea":[],"f_gasman":[],"lics":[]}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyChargeRecord`, {data:data}, {
|
|
201
|
+
resolveMsg: null,
|
|
202
|
+
rejectMsg: '缴费失败!!!'
|
|
203
|
+
})
|
|
204
|
+
this.selectdata = res.data
|
|
205
|
+
|
|
206
|
+
this.$dispatch('breakControl')
|
|
207
|
+
},
|
|
208
|
+
// 获取订单信息
|
|
209
|
+
async getOrderInformation () {
|
|
210
|
+
// 查询订单信息
|
|
211
|
+
console.log('查询订单信息!!!')
|
|
212
|
+
let data = {
|
|
213
|
+
out_trade_no: this.order.out_trade_no,
|
|
214
|
+
filiale: this.config[Vue.user.number]
|
|
215
|
+
}
|
|
216
|
+
// 查询订单状态
|
|
217
|
+
let http = new HttpResetClass()
|
|
218
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/queryBzIsPay`, data, {
|
|
219
|
+
resolveMsg: null,
|
|
220
|
+
rejectMsg: '订单查询失败!!!'
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
// 支付成功
|
|
224
|
+
if (res.data.trade_state === 'SUCCESS') {
|
|
225
|
+
clearTimeout(this.paymentInterval)
|
|
226
|
+
clearTimeout(this.orderInterval)
|
|
227
|
+
this.timeLeft = 10
|
|
228
|
+
// 清除二维码
|
|
229
|
+
this.clearQrCode()
|
|
230
|
+
this.showQrCode = false
|
|
231
|
+
|
|
232
|
+
this.saveCharge()
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
// 打开二维码
|
|
236
|
+
async openQrCode () {
|
|
237
|
+
if (isEmpty(this.charge.f_payment_term)) {
|
|
238
|
+
this.$showAlert('请选择收费项目!!!', 'warning', 3000)
|
|
239
|
+
return
|
|
240
|
+
}
|
|
241
|
+
if (isEmpty(this.charge.f_charge_money)) {
|
|
242
|
+
this.$showAlert('请输入收费金额!!!', 'warning', 3000)
|
|
243
|
+
return
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
let http = new HttpResetClass()
|
|
247
|
+
// 接口金额 单位为:分
|
|
248
|
+
let data = {
|
|
249
|
+
money: this.charge.f_charge_money * 100,
|
|
250
|
+
attach: {},
|
|
251
|
+
str: this.charge.f_payment_term,
|
|
252
|
+
filiale: this.config[Vue.user.number]
|
|
253
|
+
}
|
|
254
|
+
// 下订单
|
|
255
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/bzgetcode`, data, {
|
|
256
|
+
resolveMsg: null,
|
|
257
|
+
rejectMsg: '订单生成失败!!!'
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
console.log('=================================')
|
|
261
|
+
console.log(res.data)
|
|
262
|
+
this.order = res.data
|
|
263
|
+
|
|
264
|
+
this.showQrCode = true
|
|
265
|
+
|
|
266
|
+
this.$nextTick(()=>{
|
|
267
|
+
this.qrcode()
|
|
268
|
+
})
|
|
269
|
+
|
|
270
|
+
// 剩余支付时间
|
|
271
|
+
this.paymentInterval = setInterval(() => {
|
|
272
|
+
this.timeLeft = this.timeLeft - 1
|
|
273
|
+
},1000)
|
|
274
|
+
|
|
275
|
+
// 3秒查询一次订单支付信息
|
|
276
|
+
this.orderInterval = setInterval(() => {
|
|
277
|
+
this.getOrderInformation()
|
|
278
|
+
},3000)
|
|
279
|
+
|
|
280
|
+
},
|
|
281
|
+
qrcode () {
|
|
282
|
+
let qrcode = new QRCode('qrcode',{
|
|
283
|
+
text: this.order.url, // 设置二维码内容或跳转地址
|
|
284
|
+
width: 200, // 设置宽度,单位像素
|
|
285
|
+
height: 200, // 设置高度,单位像素
|
|
286
|
+
correctLevel: QRCode.CorrectLevel.L //容错率,L/M/Hs
|
|
287
|
+
})
|
|
288
|
+
},
|
|
289
|
+
clearQrCode () {
|
|
290
|
+
document.getElementById('qrcode').innerHTML = ''
|
|
291
|
+
},
|
|
292
|
+
moneyChange () {
|
|
293
|
+
if (isEmpty(this.charge.f_charge_money) || Number(this.charge.f_charge_money) === 0) {
|
|
294
|
+
this.$showAlert('单笔收费不能为0元!!!', 'warning', 3000)
|
|
295
|
+
this.charge.f_charge_money = null
|
|
296
|
+
return
|
|
297
|
+
}
|
|
298
|
+
if (this.selectdata.f_apply_type === '散户集体报建' && Number(this.charge.f_charge_money) > Number(this.charge.f_outstanding_amount)) {
|
|
299
|
+
this.$showAlert('单笔收费不能超过未交金额!!!', 'warning', 3000)
|
|
300
|
+
this.charge.f_charge_money = null
|
|
301
|
+
return
|
|
302
|
+
}
|
|
303
|
+
if (Number(this.charge.f_charge_money) > Number(this.selectdata.f_surplus_money)) {
|
|
304
|
+
this.$showAlert('单笔收费不能超过未交总金额!!!', 'warning', 3000)
|
|
305
|
+
this.charge.f_charge_money = null
|
|
306
|
+
return
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
// 金额转大写
|
|
310
|
+
handleInput(e) {
|
|
311
|
+
// 通过正则过滤小数点后两位
|
|
312
|
+
e.target.value = (e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
|
|
313
|
+
this.charge.f_amount_words = this.smalltoBIG(e.target.value)
|
|
314
|
+
},
|
|
315
|
+
// 金额转大写
|
|
316
|
+
smalltoBIG(n) {
|
|
317
|
+
let fraction = ['角', '分'];
|
|
318
|
+
let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
|
|
319
|
+
let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
|
|
320
|
+
let head = n < 0 ? '欠' : '';
|
|
321
|
+
n = Math.abs(n);
|
|
322
|
+
|
|
323
|
+
let s = '';
|
|
324
|
+
|
|
325
|
+
for (var i = 0; i < fraction.length; i++) {
|
|
326
|
+
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
|
|
327
|
+
}
|
|
328
|
+
s = s || '整';
|
|
329
|
+
n = Math.floor(n);
|
|
330
|
+
|
|
331
|
+
for (var i = 0; i < unit[0].length && n > 0; i++) {
|
|
332
|
+
let p = '';
|
|
333
|
+
for (var j = 0; j < unit[1].length && n > 0; j++) {
|
|
334
|
+
p = digit[n % 10] + unit[1][j] + p;
|
|
335
|
+
n = Math.floor(n / 10);
|
|
336
|
+
}
|
|
337
|
+
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
|
|
338
|
+
}
|
|
339
|
+
return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
|
|
340
|
+
},
|
|
341
|
+
async getUserAddress() {
|
|
342
|
+
let http = new HttpResetClass()
|
|
343
|
+
let data = {}
|
|
344
|
+
let url = null
|
|
345
|
+
if (this.selectdata.f_apply_type === '改管报建' || this.selectdata.f_apply_type === '增容报建') {
|
|
346
|
+
data = {
|
|
347
|
+
condition: `ui.f_userinfo_id = ${this.selectdata.f_userinfo_id}`
|
|
348
|
+
}
|
|
349
|
+
url = `${this.$androidUtil.getProxyUrl()}/rs/sql/applyGetUserinfos`
|
|
350
|
+
} else {
|
|
351
|
+
data = {
|
|
352
|
+
condition: this.selectdata.f_apply_type === '散户集体报建' ? `nvl(cr.f_cumulative_payment_money, 0) < ${this.selectdata.f_price}` : '1=1',
|
|
353
|
+
f_process_id: this.selectdata.f_process_id
|
|
354
|
+
}
|
|
355
|
+
url = `${this.$androidUtil.getProxyUrl()}/rs/sql/getAddresAndCumulativePayment`
|
|
356
|
+
}
|
|
357
|
+
let res = await http.load('POST', url, {data:data}, {
|
|
358
|
+
resolveMsg: null,
|
|
359
|
+
rejectMsg: '用户获取失败!!!'
|
|
360
|
+
})
|
|
361
|
+
|
|
362
|
+
if (res.data.length <= 0) {
|
|
363
|
+
this.$showAlert('暂无需要缴费用户!!!', 'warning', 3000)
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
this.useraddresList = res.data.map(item => {
|
|
367
|
+
return {
|
|
368
|
+
// 有用户姓名地址后拼接姓名
|
|
369
|
+
label: `${item.f_address} ${isEmpty(item.f_user_name) ? '' : '--- ' + item.f_user_name}`,
|
|
370
|
+
value: item
|
|
371
|
+
}
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
},
|
|
375
|
+
async showChargeModal() {
|
|
376
|
+
this.getUserAddress()
|
|
377
|
+
|
|
378
|
+
this.charge.f_payment_method = '掌上营业厅'
|
|
379
|
+
|
|
380
|
+
this.showCharge = true
|
|
381
|
+
},
|
|
382
|
+
async search () {
|
|
383
|
+
let http = new HttpResetClass()
|
|
384
|
+
let data = {
|
|
385
|
+
f_process_id: this.selectdata.f_process_id
|
|
386
|
+
}
|
|
387
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/getApplyChargeRecord`, {data:data}, {
|
|
388
|
+
resolveMsg: null,
|
|
389
|
+
rejectMsg: '收费记录查询失败!!!'
|
|
390
|
+
})
|
|
391
|
+
this.model.rows = res.data
|
|
392
|
+
},
|
|
393
|
+
// 关闭对话框
|
|
394
|
+
closeModal () {
|
|
395
|
+
this.showCharge = false
|
|
396
|
+
this.showInvalid = false
|
|
397
|
+
this.showPrint = false
|
|
398
|
+
this.charge = {}
|
|
399
|
+
this.search()
|
|
400
|
+
},
|
|
401
|
+
async getConfig () {
|
|
402
|
+
let http = new HttpResetClass()
|
|
403
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/getWeiXinConfig`, null, {
|
|
404
|
+
resolveMsg: null,
|
|
405
|
+
rejectMsg: '获取配置失败!!!'
|
|
406
|
+
})
|
|
407
|
+
|
|
408
|
+
console.log('==============================')
|
|
409
|
+
console.log(res.data)
|
|
410
|
+
|
|
411
|
+
this.config = res.data
|
|
412
|
+
|
|
413
|
+
this.timeLeft = this.config.timeLeft
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
events: {
|
|
417
|
+
},
|
|
418
|
+
computed: {
|
|
419
|
+
paymentMethod() {
|
|
420
|
+
return this.$appdata.getParam("付款方式")
|
|
421
|
+
},
|
|
422
|
+
paymentTerm() {
|
|
423
|
+
return this.$appdata.getParam("收费项目")
|
|
424
|
+
// return [{label: '安装费', value: '安装费'}]
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
watch: {
|
|
428
|
+
timeLeft () {
|
|
429
|
+
if (this.timeLeft <= 0) {
|
|
430
|
+
clearTimeout(this.paymentInterval)
|
|
431
|
+
clearTimeout(this.orderInterval)
|
|
432
|
+
|
|
433
|
+
this.timeLeft = this.config.timeLeft
|
|
434
|
+
|
|
435
|
+
// 清除二维码
|
|
436
|
+
this.clearQrCode()
|
|
437
|
+
|
|
438
|
+
this.showQrCode = false
|
|
439
|
+
|
|
440
|
+
this.$showMessage('订单支付超时!!!')
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
</script>
|
|
446
|
+
<style scoped lang="less">
|
|
447
|
+
.qrcode {
|
|
448
|
+
display: inline-block !important;
|
|
449
|
+
margin: 10px 0px;
|
|
450
|
+
}
|
|
451
|
+
.panel-self{
|
|
452
|
+
border-radius: 10px;
|
|
453
|
+
border:1px solid #499EDF;
|
|
454
|
+
background-color: #F8F8F8;
|
|
455
|
+
}
|
|
456
|
+
.vertical-center {
|
|
457
|
+
display: flex;
|
|
458
|
+
align-items: center;
|
|
459
|
+
text-align: center;
|
|
460
|
+
}
|
|
461
|
+
/*清除model中的浮动*/
|
|
462
|
+
.clearfix:after,.clearfix:before{
|
|
463
|
+
display: table;
|
|
464
|
+
}
|
|
465
|
+
.clearfix:after{
|
|
466
|
+
clear: both;
|
|
467
|
+
}
|
|
468
|
+
</style>
|