sale-client 4.2.113 → 4.2.115
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/.project +6 -0
- package/build/dev-server.js +7 -7
- package/package.json +1 -1
- package/src/components/charge/business/ServiceEvaluation.vue +498 -0
- package/src/components/revenue/base/leftview/ServiceRepair.vue +33 -13
- package/src/components/revenue/batchDeduction/batchDeductionList.vue +2 -0
- package/src/filiale/jinhuang/ChargeManage.vue +381 -0
- package/src/filiale/jinhuang/ChargeOper.vue +345 -0
- package/src/filiale/jinhuang/sale.js +2 -0
- package/src/main.js +1 -1
- package/src/plugins/QXClient.js +335 -0
- package/src/sale.js +3 -0
- package/.gradle/5.2.1/fileChanges/last-build.bin +0 -0
- package/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
- package/.gradle/5.2.1/gc.properties +0 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div id="unit" class="flex-row three" v-show="listpage">
|
|
3
|
+
<div class="binary-left" style="overflow: scroll;width:15%" >
|
|
4
|
+
<mulitinfo :warninginfo="warningInfo" style="height:auto" @deal-msg="dealMsg" :data="row" :card-data="cardInfo" v-ref:info></mulitinfo>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="binary-right" style="width:68%;overflow-y: scroll" >
|
|
7
|
+
<div :style="{height:(row?'auto':'100%')}">
|
|
8
|
+
<!--<div class="auto" v-if="sustainMoney != null">-->
|
|
9
|
+
<!--<h2 style="margin-top: 10px">当前连续收款金额: {{sustainMoney}}</h2>-->
|
|
10
|
+
<!--</div>-->
|
|
11
|
+
<div>
|
|
12
|
+
<charge-list :row="row" @select-oper="showWork" @dblclick="toBusiness" @deal-msg="dealMsg"
|
|
13
|
+
v-ref:list></charge-list>
|
|
14
|
+
|
|
15
|
+
<div class="auto" style="margin-top: 1%;" v-if="row">
|
|
16
|
+
<charge-oper :data.sync="row" :card-info="cardInfo" v-ref:oper></charge-oper>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="binary-right" style="width:22%" >
|
|
22
|
+
<ul class="nav nav-pills span" style="height:auto;margin:8px 0px;padding:4px 0;border-bottom: 1px solid #e7e7e7;" class="nav nav-tabs" >
|
|
23
|
+
<li ><a :style="selectFiled == '其他信息'?'color:#333333!important;':'color:#666666!important;'" :class="{'tel_voiceActive':selectFiled == '其他信息','tel_f_size':selectFiled != '其他信息'}" href="#" @click="setField('其他信息')">其他信息</a></li>
|
|
24
|
+
<li ><a :style="selectFiled == '历史操作'?'color:#333333!important;':'color:#666666!important;'" :class="{'tel_voiceActive':selectFiled == '历史操作','tel_f_size':selectFiled != '历史操作'}" href="#" @click="setField('历史操作')">历史操作</a></li>
|
|
25
|
+
<li v-if="row ?row.f_meter_type=='机表' : false"><a :style="selectFiled == '历史抄表'?'color:#333333!important;':'color:#666666!important;'" :class="{'tel_voiceActive':selectFiled == '历史抄表','tel_f_size':selectFiled != '历史抄表'}" href="#" @click="setField('历史抄表')">历史抄表</a></li>
|
|
26
|
+
</ul>
|
|
27
|
+
<div class="tab-content span" style="overflow-y: auto">
|
|
28
|
+
<otherinfo v-show="worktype === '其他信息'" style="height:auto" @deal-msg="dealMsg" :data="row" :card-data="cardInfo" v-ref:info></otherinfo>
|
|
29
|
+
<card-list v-show="worktype === '历史操作'" :btns="operatebtn" :f_orgid="f_orgid" :userinfoid="row ? row.f_userinfo_code : ''" @list-select-oper="recordCancel"
|
|
30
|
+
v-ref:card></card-list>
|
|
31
|
+
<hand-list v-if="worktype === '历史抄表'" :f_userfiles_id="row ? row.f_userfiles_id : ''" v-ref:hand></hand-list>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
</div>
|
|
37
|
+
<div v-if="!listpage">
|
|
38
|
+
<user-info-detail-manage-new parentname="charge-manage" :f_userfiles_id="rowData.f_userfiles_id" @cancel-main="cancel" @cancel-re="cancelAndRefresh"></user-info-detail-manage-new>
|
|
39
|
+
</div>
|
|
40
|
+
<div v-if="showModal">
|
|
41
|
+
<charge-modal :warninginfo="warningInfo" :row="modalrow" :modal-show.sync="showModal" @close="close" @modalsuccess="modalsuccess"></charge-modal>
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
<script>
|
|
45
|
+
import ChargeOper from './ChargeOper'
|
|
46
|
+
import {HttpResetClass} from "vue-client";
|
|
47
|
+
|
|
48
|
+
export default {
|
|
49
|
+
title: '收费(综合)',
|
|
50
|
+
components: { ChargeOper },
|
|
51
|
+
data () {
|
|
52
|
+
return {
|
|
53
|
+
sustainMoney: null,
|
|
54
|
+
// 页面开关
|
|
55
|
+
listpage: true,
|
|
56
|
+
f_orgid: '',
|
|
57
|
+
row: null,
|
|
58
|
+
cardInfo: null,
|
|
59
|
+
warningInfo: null,
|
|
60
|
+
modalrow: null,
|
|
61
|
+
showModal: false,
|
|
62
|
+
rowData: {},
|
|
63
|
+
dibao_remind: this.$appdata.getSingleValue('低保快到期提醒') ? this.$appdata.getSingleValue('低保快到期提醒') : 0,
|
|
64
|
+
reSearchShowMsy: !!this.$appdata.getSingleValue('收费后验证'),
|
|
65
|
+
reSearchShowBusiness: !!this.$appdata.getSingleValue('业务完成重新加载'),
|
|
66
|
+
shouldNavigateToEvaluation: false, // 标记是否应该导航到评价页面
|
|
67
|
+
activeBusiness: null, // 当前激活的业务
|
|
68
|
+
show: [true],
|
|
69
|
+
selectFiled: '其他信息',
|
|
70
|
+
worktype: '其他信息',
|
|
71
|
+
searchTime: 1000,
|
|
72
|
+
interval: null
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
destroyed () {
|
|
76
|
+
if(this.$appdata.getSingleValue('磁条卡读卡间隔')) {
|
|
77
|
+
clearInterval(this.interval)
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
ready () {
|
|
81
|
+
if(this.$appdata.getSingleValue('磁条卡读卡间隔')){
|
|
82
|
+
this.searchTime = this.$appdata.getSingleValue('磁条卡读卡间隔')
|
|
83
|
+
this.readCiTiaoCard()
|
|
84
|
+
}
|
|
85
|
+
this.setsustainMoney()
|
|
86
|
+
},
|
|
87
|
+
methods: {
|
|
88
|
+
async readCiTiaoCard () {
|
|
89
|
+
console.log('读磁条卡,开始,不停的循环')
|
|
90
|
+
let data = {}
|
|
91
|
+
let getUser = {data: []}
|
|
92
|
+
let forgid = this.$login.convertToIn([this.$login.f.orgid])
|
|
93
|
+
try {
|
|
94
|
+
this.interval = setInterval(() => {
|
|
95
|
+
// 1秒一轮回
|
|
96
|
+
let http = new HttpResetClass()
|
|
97
|
+
http.load('POST', 'http://127.0.0.1:8003/ReadCard_HEC', data, {
|
|
98
|
+
resolveMsg: null,
|
|
99
|
+
rejectMsg: null
|
|
100
|
+
}).then(async res => {
|
|
101
|
+
if (res.data.CardID !== '') {
|
|
102
|
+
if (res.data.Err === null && res.data.Exception) {
|
|
103
|
+
this.$showAlert(res.data.Exception, 'danger', 2000)
|
|
104
|
+
// clearInterval(interval)
|
|
105
|
+
} else {
|
|
106
|
+
if (res.data.Factory === 'CiTiao') {
|
|
107
|
+
// 获取用户信息
|
|
108
|
+
getUser = await this.$resetpost('api/af-revenue/sql/sale_getUser', {
|
|
109
|
+
data: {
|
|
110
|
+
condition: `u.f_filialeid in ${forgid} and gb.f_meter_type in ('机表','物联网表') and i.f_userinfo_code='${res.data.CardID}'`,
|
|
111
|
+
orderitem: `f_userinfo_id`
|
|
112
|
+
}
|
|
113
|
+
}, {resolveMsg: null, rejectMsg: '读卡失败'})
|
|
114
|
+
this.$refs.list.model.rows = getUser.data
|
|
115
|
+
if (!this.row || (this.row && this.row.f_userinfo_code != getUser.data[0].f_userinfo_code)) {
|
|
116
|
+
await this.toBusiness(getUser.data[0])
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
}, this.searchTime * 1000)
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.log('捕获到异常', error)
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
setsustainMoney () {
|
|
128
|
+
this.sustainMoney = window.localStorage.getItem('sustainMoney')
|
|
129
|
+
},
|
|
130
|
+
setField (type) {
|
|
131
|
+
this.selectFiled = type
|
|
132
|
+
this.worktype = type
|
|
133
|
+
},
|
|
134
|
+
async toBusiness (obj) {
|
|
135
|
+
console.log('双击列表的时候传进来的数据:', obj)
|
|
136
|
+
if (!(obj instanceof Event)) {
|
|
137
|
+
// 对此数据进行验证
|
|
138
|
+
if (await this.validateRow(obj)) {
|
|
139
|
+
this.shouldNavigateToEvaluation = false
|
|
140
|
+
// 获取未写卡或者写卡失败记录
|
|
141
|
+
let getUnWriteSell = await this.$SqlService.singleTable('t_sellinggas', `f_state = '有效' and (f_write_card = '未写卡' or (f_write_card = '写卡失败' and f_operate_date >= DATEADD(HOUR, -3, GETDATE()))) and f_userfiles_id = '${obj.f_userfiles_id}'`)
|
|
142
|
+
console.log('获取未写卡记录', getUnWriteSell)
|
|
143
|
+
if (getUnWriteSell.data.length > 1) {
|
|
144
|
+
this.$showAlert('此卡已缴费多次未写卡。请核实后处理!!', 'warning', 5000)
|
|
145
|
+
} else {
|
|
146
|
+
this.row = obj
|
|
147
|
+
this.shouldNavigateToEvaluation = false
|
|
148
|
+
this.row.unWriteSell = getUnWriteSell.data
|
|
149
|
+
this.cardInfo = this.$refs.list.cardInfo
|
|
150
|
+
this.$refs.list.criteriaShow = false
|
|
151
|
+
// 将列表只显示该条数据
|
|
152
|
+
this.$refs.list.refreshRow(obj)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
close () {
|
|
158
|
+
this.showModal = false
|
|
159
|
+
this.warningInfo = null
|
|
160
|
+
this.clean()
|
|
161
|
+
this.$refs.list.search()
|
|
162
|
+
// this.$refs.card.search()
|
|
163
|
+
},
|
|
164
|
+
async validateRow (obj) {
|
|
165
|
+
console.log('查看传进来的参数:', obj)
|
|
166
|
+
this.warningInfo = await this.$resetpost('api/af-revenue/logic/getWarningMsg',
|
|
167
|
+
{data: {
|
|
168
|
+
f_userfiles_id: obj.f_userfiles_id,
|
|
169
|
+
f_userinfo_code: obj.f_userinfo_code,
|
|
170
|
+
f_userinfo_id: obj.f_userinfo_id
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
, {resolveMsg: '', rejectMsg: '获取提示失败'})
|
|
174
|
+
if (this.warningInfo.data.warningNum > 0 && obj.f_user_state !== '预备') {
|
|
175
|
+
this.modalrow = obj
|
|
176
|
+
this.showModal = true
|
|
177
|
+
return false
|
|
178
|
+
} else {
|
|
179
|
+
return true
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
clean () {
|
|
183
|
+
this.row = null
|
|
184
|
+
this.cardInfo = null
|
|
185
|
+
this.activeBusiness = null
|
|
186
|
+
},
|
|
187
|
+
clearCondition () {
|
|
188
|
+
Object.keys(this.$refs.list.$refs.paged.$refs.cri.model).forEach((key) => {
|
|
189
|
+
console.log('key', key)
|
|
190
|
+
console.log('对应啥数据', this.$refs.list.$refs.paged.$refs.cri.model[key])
|
|
191
|
+
this.$refs.list.$refs.paged.$refs.cri.model[key] = []
|
|
192
|
+
})
|
|
193
|
+
// console.log('清数据。。。', this.$refs.list.$refs.paged.$refs.grid.model.rows)
|
|
194
|
+
// this.$set('$refs.list.$refs.paged.$refs.grid.model.rows', [])
|
|
195
|
+
},
|
|
196
|
+
dealMsg (obj) {
|
|
197
|
+
console.log('==================obj', obj)
|
|
198
|
+
this.listpage = false
|
|
199
|
+
this.rowData = obj
|
|
200
|
+
},
|
|
201
|
+
cancel (obj) {
|
|
202
|
+
this.listpage = true
|
|
203
|
+
},
|
|
204
|
+
cancelAndRefresh (obj) {
|
|
205
|
+
this.listpage = true
|
|
206
|
+
this.clean()
|
|
207
|
+
this.clearCondition()
|
|
208
|
+
this.$refs.list.searchNoData()
|
|
209
|
+
this.$refs.card.search()
|
|
210
|
+
},
|
|
211
|
+
async modalsuccess (obj) {
|
|
212
|
+
this.showModal = false
|
|
213
|
+
let getUnWriteSell = await this.$SqlService.singleTable('t_sellinggas', `f_state = '有效' and (f_write_card = '未写卡' or (f_write_card = '写卡失败' and f_operate_date >= DATEADD(HOUR, -3, GETDATE()))) and f_userfiles_id = '${obj.f_userfiles_id}'`)
|
|
214
|
+
console.log('获取未写卡记录', getUnWriteSell)
|
|
215
|
+
if (getUnWriteSell.data.length > 1) {
|
|
216
|
+
this.$showAlert('此卡已缴费多次未写卡。请核实后处理!!', 'warning', 5000)
|
|
217
|
+
} else {
|
|
218
|
+
this.$refs.list.criteriaShow = false
|
|
219
|
+
this.row = obj
|
|
220
|
+
this.row.unWriteSell = getUnWriteSell.data
|
|
221
|
+
this.cardInfo = this.$refs.list.cardInfo
|
|
222
|
+
this.$refs.list.criteriaShow = false
|
|
223
|
+
// 将列表只显示该条数据
|
|
224
|
+
this.$refs.list.refreshRow(obj)
|
|
225
|
+
// 如果应该导航到评价页面,则执行评价业务
|
|
226
|
+
if (this.shouldNavigateToEvaluation && this.$refs.oper) {
|
|
227
|
+
this.activeBusiness = '评价'
|
|
228
|
+
this.$nextTick(() => {
|
|
229
|
+
this.$refs.oper.business({name: '评价', value: {routeName: 'service-evaluation'}})
|
|
230
|
+
// 执行完后清除标志
|
|
231
|
+
this.shouldNavigateToEvaluation = false;
|
|
232
|
+
}, 100)
|
|
233
|
+
} else {
|
|
234
|
+
// 清除标志(普通业务场景)
|
|
235
|
+
this.shouldNavigateToEvaluation = false;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
|
|
240
|
+
async serRow (obj, evaluationFlag = false) {
|
|
241
|
+
this.shouldNavigateToEvaluation = evaluationFlag;
|
|
242
|
+
let newdata = await this.$resetpost('api/af-revenue/sql/sale_getUser', {
|
|
243
|
+
data: {condition: `i.f_userinfo_code='${obj.f_userinfo_code}' and u.f_filialeid = '${obj.f_filialeid}'`, orderitem: `f_userinfo_id Desc`}
|
|
244
|
+
}, {resolveMsg: null, rejectMsg: '获取用户信息失败'})
|
|
245
|
+
await this.toBusiness(newdata.data[0])
|
|
246
|
+
// this.$refs.list.search()
|
|
247
|
+
if(evaluationFlag){
|
|
248
|
+
this.$refs.oper.business({name: '评价', value: {routeName: 'service-evaluation'}})
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
hasEvaluatePermission (name) {
|
|
252
|
+
if (!this.$login.r || !Array.isArray(this.$login.r)) {
|
|
253
|
+
console.warn('权限列表不存在或不是数组')
|
|
254
|
+
return false
|
|
255
|
+
}
|
|
256
|
+
const permissionName = `${name}评价权限`
|
|
257
|
+
return this.$login.r.includes(permissionName)
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
events: {
|
|
261
|
+
'error' (name, row, res) {
|
|
262
|
+
this.clean()
|
|
263
|
+
},
|
|
264
|
+
'row' (val) {
|
|
265
|
+
|
|
266
|
+
},
|
|
267
|
+
|
|
268
|
+
'success' (name, row, res) {
|
|
269
|
+
this.setsustainMoney()
|
|
270
|
+
// name === '发卡售气' ? this.$refs.list.toNext(this.index) : null
|
|
271
|
+
if (name === '机表收费确认') {
|
|
272
|
+
this.serRow(row)
|
|
273
|
+
return
|
|
274
|
+
}
|
|
275
|
+
if (name === '卡表收费' && this.reSearchShowMsy) {
|
|
276
|
+
this.$refs.list.$refs.paged.$refs.cri.$refs.readcard.readCard()
|
|
277
|
+
this.$refs.oper.noButton = false
|
|
278
|
+
return
|
|
279
|
+
}
|
|
280
|
+
if (name === '物联网收费' && this.reSearchShowMsy) {
|
|
281
|
+
this.serRow(row)
|
|
282
|
+
return
|
|
283
|
+
}
|
|
284
|
+
if (this.hasEvaluatePermission(this.activeBusiness) && this.reSearchShowBusiness) {
|
|
285
|
+
this.$refs.oper.noButton = false
|
|
286
|
+
this.activeBusiness = null
|
|
287
|
+
this.$showMessage('要进行业务评价吗?', ['confirm', 'cancel']).then((res) => {
|
|
288
|
+
if(res !== 'confirm') {
|
|
289
|
+
if (row) {
|
|
290
|
+
this.serRow(row)
|
|
291
|
+
} else {
|
|
292
|
+
this.serRow(this.row)
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
this.activeBusiness = '评价'
|
|
296
|
+
if (row) {
|
|
297
|
+
this.serRow(row,true)
|
|
298
|
+
} else {
|
|
299
|
+
this.serRow(this.row,true)
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
})
|
|
303
|
+
return
|
|
304
|
+
}
|
|
305
|
+
console.log('成功事件')
|
|
306
|
+
this.clean()
|
|
307
|
+
this.clearCondition()
|
|
308
|
+
this.$refs.list.search()
|
|
309
|
+
// this.clearCondition()
|
|
310
|
+
// this.$refs.card.search()
|
|
311
|
+
// this.$refs.info.$refs.recordstoryinfo.getdata()
|
|
312
|
+
},
|
|
313
|
+
'clean' (row) {
|
|
314
|
+
// this.$refs.list.singleRefresh(row)
|
|
315
|
+
this.clean()
|
|
316
|
+
},
|
|
317
|
+
'refresh' () {
|
|
318
|
+
this.setsustainMoney()
|
|
319
|
+
this.clean()
|
|
320
|
+
this.clearCondition()
|
|
321
|
+
this.$refs.list.searchNoData()
|
|
322
|
+
this.$refs.card.search()
|
|
323
|
+
},
|
|
324
|
+
'resflushvalue' () {
|
|
325
|
+
this.$refs.info.$refs.valueaddinfo.reflush()
|
|
326
|
+
},
|
|
327
|
+
'resflushrowdata' () {
|
|
328
|
+
this.toBusiness(this.row)
|
|
329
|
+
},
|
|
330
|
+
'resflushdata' (data) {
|
|
331
|
+
this.toBusiness(data)
|
|
332
|
+
},
|
|
333
|
+
'refreshrow' (val) {
|
|
334
|
+
console.log(val)
|
|
335
|
+
this.row = val
|
|
336
|
+
this.$refs.list.refreshRow(val)
|
|
337
|
+
// this.$refs.card.search()
|
|
338
|
+
},
|
|
339
|
+
'cancelclean' (row) {
|
|
340
|
+
this.clean()
|
|
341
|
+
this.$refs.list.searchNoData()
|
|
342
|
+
// this.$refs.card.search()
|
|
343
|
+
},
|
|
344
|
+
'business-changed' (businessName) {
|
|
345
|
+
console.warn('business-changed', businessName)
|
|
346
|
+
this.activeBusiness = businessName
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
watch: {
|
|
350
|
+
'row' () {
|
|
351
|
+
// this.$refs.tab.$el.click()
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
</script>
|
|
356
|
+
<style>
|
|
357
|
+
.basic-main {
|
|
358
|
+
width: 79%;
|
|
359
|
+
}
|
|
360
|
+
.tel_voiceActive{
|
|
361
|
+
font-family: PingFang-SC-Bold;
|
|
362
|
+
font-size: 16px;
|
|
363
|
+
font-weight: normal!important;
|
|
364
|
+
font-stretch: normal!important;
|
|
365
|
+
line-height: 18px;
|
|
366
|
+
letter-spacing: 0px;
|
|
367
|
+
color: #333333!important;
|
|
368
|
+
border-bottom: 3px solid #599fe5;
|
|
369
|
+
padding:10px 10px!important;
|
|
370
|
+
}
|
|
371
|
+
.tel_f_size{
|
|
372
|
+
font-family: PingFang-SC-Medium;
|
|
373
|
+
font-size: 16px;
|
|
374
|
+
font-weight: normal;
|
|
375
|
+
font-stretch: normal;
|
|
376
|
+
line-height: 18px;
|
|
377
|
+
letter-spacing: 0px;
|
|
378
|
+
color: #666666!important;
|
|
379
|
+
padding:10px 10px!important;
|
|
380
|
+
}
|
|
381
|
+
</style>
|