telephone-clients 4.0.0-1-79 → 4.0.0-1-80
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/CHANGELOG.md +37 -37
- package/README.md +38 -38
- package/package.json +120 -120
- package/release.bat +5 -5
- package/src/components/pc/QueryVisitHistory.vue +267 -267
- package/src/components/temp/HandplanInfo.vue +125 -125
- package/src/components/temp/InstructInfo.vue +86 -86
- package/src/filiale/xinkang/pc/HandplanInfo.vue +116 -116
- package/src/filiale/xinkang/telephone.js +19 -19
- package/src/filiale/xinliansihui/android/AppInstallationMaterial.vue +2 -2
- package/src/filiale/xinliansihui/android/Othercharge.vue +619 -0
- package/src/filiale/xinliansihui/telephoneAndroid.js +1 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
// 分公司特殊组件页面注册
|
|
2
|
-
import Vue from "vue";
|
|
3
|
-
|
|
4
|
-
//pc和手机分别注册到两个文件中
|
|
5
|
-
let specialComp = {
|
|
6
|
-
|
|
7
|
-
// 工单详情子组件
|
|
8
|
-
'complain-work': (resolve) => {
|
|
9
|
-
require(['./pc/ComplainWork'], resolve)
|
|
10
|
-
},
|
|
11
|
-
'handplan-info': (resolve) => {
|
|
12
|
-
require(['./pc/HandplanInfo'], resolve)
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.specialComp = specialComp
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
// 分公司特殊组件页面注册
|
|
2
|
+
import Vue from "vue";
|
|
3
|
+
|
|
4
|
+
//pc和手机分别注册到两个文件中
|
|
5
|
+
let specialComp = {
|
|
6
|
+
|
|
7
|
+
// 工单详情子组件
|
|
8
|
+
'complain-work': (resolve) => {
|
|
9
|
+
require(['./pc/ComplainWork'], resolve)
|
|
10
|
+
},
|
|
11
|
+
'handplan-info': (resolve) => {
|
|
12
|
+
require(['./pc/HandplanInfo'], resolve)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.specialComp = specialComp
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
@@ -118,7 +118,7 @@ export default {
|
|
|
118
118
|
payState: false,
|
|
119
119
|
zfCode: false,
|
|
120
120
|
f_out_trade_no: '',
|
|
121
|
-
payTypes:
|
|
121
|
+
payTypes: this.$appdata.getParam('材料收费方式'),
|
|
122
122
|
payType: '',
|
|
123
123
|
payNumber: 0,
|
|
124
124
|
button_state: false,
|
|
@@ -127,7 +127,6 @@ export default {
|
|
|
127
127
|
},
|
|
128
128
|
showFile: false,
|
|
129
129
|
material: [],
|
|
130
|
-
positions: this.$appdata.getParam('品名及规格'), // 获取材料名称
|
|
131
130
|
charge: {
|
|
132
131
|
payment_terms: [{f_payment_term: '', f_charge_money: '', f_amount_words: '', f_payment_method: ''}]
|
|
133
132
|
}, // 收费内容
|
|
@@ -401,6 +400,7 @@ export default {
|
|
|
401
400
|
this.payState= true
|
|
402
401
|
await this.saveUserFile('save')
|
|
403
402
|
}
|
|
403
|
+
this.$emit('close')
|
|
404
404
|
},
|
|
405
405
|
async saveUserFile(type) {
|
|
406
406
|
for (let i = 0; i < this.material.length; i++) {
|
|
@@ -0,0 +1,619 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div style="height: auto;width: 100%">
|
|
3
|
+
<div partial v-for="(index, row) in model.otherdetail">
|
|
4
|
+
<div class="row app-row">
|
|
5
|
+
<span style="text-align: center;font-weight: bolder;">类型{{ index + 1 }}信息</span>
|
|
6
|
+
<button
|
|
7
|
+
style="float: right"
|
|
8
|
+
class="btn btn-danger"
|
|
9
|
+
type="button"
|
|
10
|
+
@click.prevent="deleteChargeDetail(index)"
|
|
11
|
+
>删除
|
|
12
|
+
</button>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="row app-row">
|
|
15
|
+
<div class="col-xs-4" style="margin-top: 5px;">
|
|
16
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
17
|
+
<label class="font text-left">收费类型</label>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="col-xs-8">
|
|
20
|
+
<v-select placeholder='请选择'
|
|
21
|
+
:options='category.typeoptions'
|
|
22
|
+
:value.sync="row.f_brand_spec"
|
|
23
|
+
v-model="row.f_brand_spec"
|
|
24
|
+
close-on-select
|
|
25
|
+
@change="setTypename(row,index)"
|
|
26
|
+
width="78%"
|
|
27
|
+
value-single
|
|
28
|
+
style="margin-bottom: 15px"
|
|
29
|
+
></v-select>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="row app-row">
|
|
33
|
+
<div class="col-xs-4" style="margin-top: 5px;">
|
|
34
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
35
|
+
<label class="font text-left">品名规格</label>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="col-xs-8">
|
|
38
|
+
<v-select placeholder='请选择'
|
|
39
|
+
:options='category.options'
|
|
40
|
+
:value.sync="row.f_typename"
|
|
41
|
+
v-model="row.f_typename"
|
|
42
|
+
close-on-select
|
|
43
|
+
@change="setTypenumber(row,index)"
|
|
44
|
+
style="margin-bottom: 10px;"
|
|
45
|
+
width="78%"
|
|
46
|
+
value-single
|
|
47
|
+
></v-select>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="row app-row">
|
|
51
|
+
<div class="col-xs-4" style="margin-top: 5px;">
|
|
52
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
53
|
+
<label class="font text-left">型 号</label>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="col-xs-8">
|
|
56
|
+
<v-select placeholder='请选择'
|
|
57
|
+
:options='category.children[row.f_typename] ? category.children[row.f_typename].options : []'
|
|
58
|
+
:value.sync="row.f_typenumber"
|
|
59
|
+
v-model="row.f_typenumber"
|
|
60
|
+
close-on-select
|
|
61
|
+
@change="setTypeprice(index)"
|
|
62
|
+
style="margin-bottom: 10px;"
|
|
63
|
+
width="78%"
|
|
64
|
+
value-single
|
|
65
|
+
></v-select>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div class="row app-row">
|
|
70
|
+
<div class="col-xs-4">
|
|
71
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
72
|
+
<label class="font text-left">单 价</label>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="col-xs-8">
|
|
75
|
+
<input type="number" class="search_input input-font" v-model="row.f_unitprice"
|
|
76
|
+
@input.prevent="getcollection()"/>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
<div class="row app-row">
|
|
80
|
+
<div class="col-xs-4">
|
|
81
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
82
|
+
<label class="font text-left">数 量</label>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="col-xs-8">
|
|
85
|
+
<input type="number" class="search_input input-font" v-model="row.f_number" @input.prevent="getcollection()"/>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
<div partial>
|
|
90
|
+
<div class="row app-row" style="padding: 10px;display: flex;justify-content: space-around;">
|
|
91
|
+
<button type="button" class="btn btn-primary" @click="addChargeDetail">添加</button>
|
|
92
|
+
</div>
|
|
93
|
+
<div class="row app-row">
|
|
94
|
+
<div class="col-xs-4">
|
|
95
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
96
|
+
<label class="font text-left"> 收  款</label>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="col-xs-8">
|
|
99
|
+
<input type="number" class="search_input input-font" v-model="model.f_collection"/>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
<div class="row app-row">
|
|
103
|
+
<div class="col-xs-4" style="margin-top: 5px;">
|
|
104
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
105
|
+
<label class="font text-left">收款方式</label>
|
|
106
|
+
</div>
|
|
107
|
+
<div class="col-xs-8">
|
|
108
|
+
<v-select placeholder='请选择'
|
|
109
|
+
:options='paytype'
|
|
110
|
+
:value.sync="model.f_payment"
|
|
111
|
+
v-model="model.f_payment"
|
|
112
|
+
close-on-select
|
|
113
|
+
style="margin-bottom: 10px;"
|
|
114
|
+
width="78%"
|
|
115
|
+
value-single
|
|
116
|
+
style="margin-bottom: 15px"
|
|
117
|
+
></v-select>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="row app-row" v-if="config.printType==='电子发票'">
|
|
121
|
+
<div class="col-xs-4">
|
|
122
|
+
<label for="isOpen" class="font text-left">是否开具发票</label>
|
|
123
|
+
</div>
|
|
124
|
+
<div class="col-xs-9">
|
|
125
|
+
<v-select v-model="model.isOpen"
|
|
126
|
+
style="width: 145%;"
|
|
127
|
+
placeholder='请选择'
|
|
128
|
+
:value.sync="model.isOpen"
|
|
129
|
+
:search="false"
|
|
130
|
+
:value-single="true"
|
|
131
|
+
:options='[{label:"是",value:"是"},{label:"否",value:"否"}]'
|
|
132
|
+
v-ref:isopen
|
|
133
|
+
close-on-select clear-button>
|
|
134
|
+
</v-select>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
<div class="row app-row">
|
|
138
|
+
<div class="col-xs-4" style="margin-top: 5px;">
|
|
139
|
+
<img src="../../../assets/购气缴费.png" style="width: 20px;margin-bottom: 5px" alt="">
|
|
140
|
+
<label class="font text-left"> 备  注</label>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="clo-xs-8">
|
|
143
|
+
<input type="text" class="search_input input-font" v-model="model.f_comments" rows="1">
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
<!--<div class="row app-row">
|
|
147
|
+
<label class="font text-left">付款方式</label>
|
|
148
|
+
</div>-->
|
|
149
|
+
<div class="row text-center" style="margin-top: 25px;">
|
|
150
|
+
<button type="button"
|
|
151
|
+
id="determine"
|
|
152
|
+
class="btn btn-lg btn-font btn-color"
|
|
153
|
+
style="width: 28%;border-radius: 5px"
|
|
154
|
+
:disabled="isDetermine"
|
|
155
|
+
@click="confirm()">确认
|
|
156
|
+
</button>
|
|
157
|
+
<button type="button" class="btn btn-lg btn-font btn-color" style="width: 25%;" @click="clean()">取消</button>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</template>
|
|
162
|
+
|
|
163
|
+
<script>
|
|
164
|
+
import Vue from 'vue'
|
|
165
|
+
import {HttpResetClass} from "vue-client";
|
|
166
|
+
|
|
167
|
+
export default {
|
|
168
|
+
title: "购气缴费",
|
|
169
|
+
prop:['row'],
|
|
170
|
+
|
|
171
|
+
data() {
|
|
172
|
+
return {
|
|
173
|
+
isDetermine:false,
|
|
174
|
+
paytype: [{label: "现金缴费", value: "现金缴费"}, {label: "建行支付", value: "建行支付"}],
|
|
175
|
+
chargesize: [{label: "三通费", value: "三通费"}, {label: "报警器", value: "报警器"}, {label: "材料费", value: "材料费"}, {label: "其他费用", value: "其他费用"}],
|
|
176
|
+
shuclass: 'col-xs-12 col-sm-12 col-md-12 form-input-group mg8 css_div',
|
|
177
|
+
originalOptions: [], // 用于保存原始数据
|
|
178
|
+
category: {
|
|
179
|
+
typeoptions: [],
|
|
180
|
+
options: [],
|
|
181
|
+
children: {}
|
|
182
|
+
},
|
|
183
|
+
model: {
|
|
184
|
+
f_unitprice: 0,
|
|
185
|
+
f_number: 0,
|
|
186
|
+
f_collection: 0,//付款额
|
|
187
|
+
f_brand_spec: '',// 类型
|
|
188
|
+
f_typename: '',// 品名
|
|
189
|
+
f_typenumber: '',// 型号
|
|
190
|
+
f_comments: '',
|
|
191
|
+
f_payment: '建行支付',
|
|
192
|
+
otherdetail: [{
|
|
193
|
+
f_brand_spec: '',
|
|
194
|
+
f_typename: '',
|
|
195
|
+
f_typenumber: '',
|
|
196
|
+
f_unitprice: '',
|
|
197
|
+
f_number: ''
|
|
198
|
+
}]
|
|
199
|
+
},
|
|
200
|
+
config:{
|
|
201
|
+
printType:'普通收据'
|
|
202
|
+
},
|
|
203
|
+
filiale: '', // 支付的分公司
|
|
204
|
+
othercharge_id: ''
|
|
205
|
+
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
ready() {
|
|
209
|
+
//tag
|
|
210
|
+
this.paytype = this.$appdata.getParam('支付方式')
|
|
211
|
+
this.chargesize = this.$appdata.getParam('其他收费类型')
|
|
212
|
+
if(Vue.config.mobileReadMeter){
|
|
213
|
+
if(Vue.config.mobileReadMeter.EticketJson && Vue.config.mobileReadMeter.EticketJson.printType){
|
|
214
|
+
this.config.printType=Vue.config.mobileReadMeter.EticketJson.printType
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
this.loadOptions()
|
|
218
|
+
},
|
|
219
|
+
methods: {
|
|
220
|
+
loadOptions () {
|
|
221
|
+
const data = {
|
|
222
|
+
tablename: 't_material_management',
|
|
223
|
+
condition: `1=1 and f_orgid='${Vue.user.orgid}'`
|
|
224
|
+
}
|
|
225
|
+
this.$resetpost(this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data}, {
|
|
226
|
+
resolveMsg: null,
|
|
227
|
+
rejectMsg: '获取数据失败'
|
|
228
|
+
}).then((res) => {
|
|
229
|
+
const categories = []
|
|
230
|
+
const types = []
|
|
231
|
+
for (let material of res.data) {
|
|
232
|
+
if (material.f_material_stype == '分类') {
|
|
233
|
+
categories.push(material)
|
|
234
|
+
} else if (material.f_material_stype == '型号') {
|
|
235
|
+
types.push(material)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
this.category.typeoptions = []
|
|
239
|
+
const seen = new Set(); // 用于记录已出现的 f_material_type
|
|
240
|
+
for (let category of categories) {
|
|
241
|
+
const type = category.f_material_type;
|
|
242
|
+
if (!seen.has(type)) {
|
|
243
|
+
seen.add(type);
|
|
244
|
+
this.category.typeoptions.push({
|
|
245
|
+
label: type,
|
|
246
|
+
value: type
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
this.originalOptions = []
|
|
251
|
+
for (let category of categories) {
|
|
252
|
+
this.originalOptions.push({
|
|
253
|
+
key: category.f_material_type,
|
|
254
|
+
label: category.f_material_name,
|
|
255
|
+
value: category.f_material_name
|
|
256
|
+
})
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
this.category.children = {}
|
|
260
|
+
for (let category of categories) {
|
|
261
|
+
this.category.children[category.f_material_name] = {
|
|
262
|
+
options: [],
|
|
263
|
+
children: {}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
for (let type of types) {
|
|
267
|
+
if (type.parent_id == category.id) {
|
|
268
|
+
this.category.children[category.f_material_name].options.push({
|
|
269
|
+
label: type.f_material_name,
|
|
270
|
+
value: type.f_material_name
|
|
271
|
+
})
|
|
272
|
+
this.category.children[category.f_material_name].children[type.f_material_name] = type
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
})
|
|
277
|
+
},
|
|
278
|
+
addChargeDetail () {
|
|
279
|
+
this.$set(`model.otherdetail[${this.model.otherdetail.length}]`, {
|
|
280
|
+
f_brand_spec: '',
|
|
281
|
+
f_typename: '',
|
|
282
|
+
f_typenumber: '',
|
|
283
|
+
f_unitprice: '',
|
|
284
|
+
f_number: '1'
|
|
285
|
+
})
|
|
286
|
+
console.log(JSON.stringify(this.model.otherdetail))
|
|
287
|
+
},
|
|
288
|
+
deleteChargeDetail (index) {
|
|
289
|
+
if (this.model.otherdetail.length > 1) {
|
|
290
|
+
this.model.otherdetail.splice(index, 1)
|
|
291
|
+
this.getcollection()
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
getcollection () {
|
|
295
|
+
let money = 0
|
|
296
|
+
let flag = true
|
|
297
|
+
this.model.otherdetail.forEach((item) => {
|
|
298
|
+
if (!item.f_number || item.f_number == '0') flag = false
|
|
299
|
+
if (!item.f_unitprice || item.f_unitprice == '0') flag = false
|
|
300
|
+
if (item.f_unitprice && item.f_number) {
|
|
301
|
+
money += ((item.f_unitprice - 0) * (item.f_number - 0)) - 0
|
|
302
|
+
} else {
|
|
303
|
+
flag = false
|
|
304
|
+
this.model.f_collection = 0
|
|
305
|
+
}
|
|
306
|
+
})
|
|
307
|
+
if (money != 0) {
|
|
308
|
+
console.log(money)
|
|
309
|
+
this.model.f_collection = money.toFixed(2)
|
|
310
|
+
}
|
|
311
|
+
if (!flag) this.model.f_collection = ''
|
|
312
|
+
},
|
|
313
|
+
setTypeprice (val) {
|
|
314
|
+
console.log('单价变化:', val)
|
|
315
|
+
if (this.model.otherdetail[val] && this.model.otherdetail[val].f_typenumber) {
|
|
316
|
+
if(this.model.otherdetail[val].f_typename){
|
|
317
|
+
const materialName = this.model.otherdetail[val].f_typename;
|
|
318
|
+
const typeNumber = this.model.otherdetail[val].f_typenumber;
|
|
319
|
+
if(this.category.children[materialName] &&
|
|
320
|
+
this.category.children[materialName].children[typeNumber]) {
|
|
321
|
+
this.model.otherdetail[val].f_unitprice = this.category.children[materialName].children[typeNumber].f_material_price;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
setTypenumber (val, index) {
|
|
327
|
+
this.model.otherdetail[index].f_typenumber = undefined
|
|
328
|
+
this.model.otherdetail[index].f_unitprice = ''
|
|
329
|
+
},
|
|
330
|
+
materialChange (typename) {
|
|
331
|
+
this.category.options=[]
|
|
332
|
+
if(!typename || typename === ''){
|
|
333
|
+
this.category.options=[]
|
|
334
|
+
}else{
|
|
335
|
+
for (let i = 0; i < this.originalOptions.length; i++) {
|
|
336
|
+
if (this.originalOptions[i].key === typename) {
|
|
337
|
+
this.category.options.push({
|
|
338
|
+
label: this.originalOptions[i].label,
|
|
339
|
+
value: this.originalOptions[i].value
|
|
340
|
+
})
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
async setTypename (val, index) {
|
|
346
|
+
console.log('111', val)
|
|
347
|
+
this.model.otherdetail[index].f_typenumber = ''
|
|
348
|
+
this.materialChange(val.f_brand_spec)
|
|
349
|
+
this.model.otherdetail[index].f_unitprice = ''
|
|
350
|
+
},
|
|
351
|
+
myverify () {
|
|
352
|
+
let flag = false
|
|
353
|
+
for(let i = 0; i < this.model.otherdetail.length; i++) {
|
|
354
|
+
console.log('===========>', this.model.otherdetail[i])
|
|
355
|
+
if (!this.model.otherdetail[i].f_brand_spec || this.model.otherdetail[i].f_brand_spec == '') {
|
|
356
|
+
this.$showMessage(`类型${i + 1}请选择收费类型`)
|
|
357
|
+
return flag
|
|
358
|
+
}
|
|
359
|
+
if (!this.model.otherdetail[i].f_unitprice || this.model.otherdetail[i].f_unitprice <= 0) {
|
|
360
|
+
this.$showMessage(`类型${i + 1}单价异常!`)
|
|
361
|
+
return flag
|
|
362
|
+
}
|
|
363
|
+
if (!this.model.otherdetail[i].f_number || this.model.otherdetail[i].f_number <= 0) {
|
|
364
|
+
this.$showMessage(`类型${i + 1}数量异常!`)
|
|
365
|
+
return flag
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
if (!this.model.f_collection || this.model.f_collection <= 0) {
|
|
369
|
+
this.$showMessage('收款异常!')
|
|
370
|
+
return flag
|
|
371
|
+
}
|
|
372
|
+
if (!this.model.f_payment || this.model.f_payment == '') {
|
|
373
|
+
this.$showMessage('请选择收费类型!')
|
|
374
|
+
return flag
|
|
375
|
+
}
|
|
376
|
+
flag = true
|
|
377
|
+
return flag
|
|
378
|
+
},
|
|
379
|
+
f_collection() {
|
|
380
|
+
//tag;
|
|
381
|
+
//tag;
|
|
382
|
+
return this.model.f_collection = this.model.f_number * this.model.f_unitprice;
|
|
383
|
+
},
|
|
384
|
+
async confirm() {
|
|
385
|
+
//tag
|
|
386
|
+
if (this.myverify()) {
|
|
387
|
+
this.$showMessage(`确定对客户${this.row.f_user_name}进行其他收费吗?`, ['confirm', 'cancel']).then(async (res) => {
|
|
388
|
+
if (res === 'confirm') {
|
|
389
|
+
if (this.model.f_payment == '建行支付') {
|
|
390
|
+
this.isDetermine = true
|
|
391
|
+
// 去支付界面
|
|
392
|
+
let _this = this
|
|
393
|
+
let pardate = {
|
|
394
|
+
_this: _this,
|
|
395
|
+
title: '二维码收款',
|
|
396
|
+
safe: true
|
|
397
|
+
}
|
|
398
|
+
_this.$dispatch('gotoson', pardate)
|
|
399
|
+
//tag
|
|
400
|
+
let parameter = {
|
|
401
|
+
money: this.model.f_collection
|
|
402
|
+
}
|
|
403
|
+
//tag)
|
|
404
|
+
_this.$goto('create_qrcode', {row: parameter}, 'self', _this.payback)
|
|
405
|
+
} else {
|
|
406
|
+
this.isDetermine = true
|
|
407
|
+
//tag
|
|
408
|
+
this.saveCharges()
|
|
409
|
+
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
})
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
},
|
|
416
|
+
payback(msg) {
|
|
417
|
+
//tag
|
|
418
|
+
//tag
|
|
419
|
+
if (msg) {
|
|
420
|
+
//tag
|
|
421
|
+
this.model.f_serial_id = msg
|
|
422
|
+
this.saveCharges()
|
|
423
|
+
}else {
|
|
424
|
+
//tag
|
|
425
|
+
this.$showMessage('支付失败!')
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
saveCharges () {
|
|
429
|
+
//tag
|
|
430
|
+
//tag
|
|
431
|
+
let data = {
|
|
432
|
+
f_userfiles_id: this.row.f_userfiles_id, // id
|
|
433
|
+
f_user_id: this.row.f_user_id,
|
|
434
|
+
f_userinfo_id: this.row.f_userinfo_id,
|
|
435
|
+
f_collection: this.model.f_collection,
|
|
436
|
+
f_comments: this.model.f_comments,
|
|
437
|
+
f_payment: this.model.f_payment,
|
|
438
|
+
f_user_name: this.row.f_user_name,
|
|
439
|
+
f_depname: Vue.user.deps,
|
|
440
|
+
f_depid : Vue.user.depids,
|
|
441
|
+
f_orgid : Vue.user.orgid,
|
|
442
|
+
f_orgname : Vue.user.orgs,
|
|
443
|
+
f_operator: Vue.user.name,
|
|
444
|
+
f_operatorid: Vue.user.id,
|
|
445
|
+
otherdetail: this.model.otherdetail
|
|
446
|
+
}
|
|
447
|
+
//tag)
|
|
448
|
+
let http4 = new HttpResetClass()
|
|
449
|
+
// http4.load('POST',`/af-telephone/rs/logic/wxthirdothercharge`, data, {}
|
|
450
|
+
http4.load('POST',`${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/wxthirdothercharge`, data, {}
|
|
451
|
+
).then(res => {
|
|
452
|
+
//tag
|
|
453
|
+
//tag)
|
|
454
|
+
this.othercharge_id = res
|
|
455
|
+
if (res) {
|
|
456
|
+
if (this.config.printType === '电子发票' && this.model.isOpen === '是') {
|
|
457
|
+
this.$resetpost(`${this.$androidUtil.getProxyUrl()}/invoice/af-telephone/rs/logic/getInvoice`, {
|
|
458
|
+
id:res.data.othercharge_id,
|
|
459
|
+
f_charge_type:'其他收费',
|
|
460
|
+
loginInfo: {
|
|
461
|
+
operator:Vue.user.name,
|
|
462
|
+
operator_id: Vue.user.id,
|
|
463
|
+
org_id: Vue.user.orgid,
|
|
464
|
+
orgname: Vue.user.orgs,
|
|
465
|
+
dep_id: Vue.user.depids,
|
|
466
|
+
depname: Vue.user.deps
|
|
467
|
+
},
|
|
468
|
+
f_invoice_type:0
|
|
469
|
+
},{aoteEncrypt:'无',encryKey:'无'}).then((res) => {
|
|
470
|
+
this.$showMessage('电子票开具成功,请联系用户使用微信公众号查看发票', ['confirm']).then((res) => {
|
|
471
|
+
console.log("===res,开票失败",res)
|
|
472
|
+
this.$dispatch('confirm')
|
|
473
|
+
})
|
|
474
|
+
}).catch(e=>{
|
|
475
|
+
this.$showMessage('缴费成功,电子票开具失败,请联系用户使用微信公众号尝试开票,或者前往营业厅!', ['confirm']).then((res) => {
|
|
476
|
+
console.log("===e,开票失败",e)
|
|
477
|
+
this.$dispatch('confirm')
|
|
478
|
+
})
|
|
479
|
+
})
|
|
480
|
+
}else {
|
|
481
|
+
this.$showMessage('购气缴费成功!是否打印小票?', ['confirm', 'cancel']).then((res) => {
|
|
482
|
+
if (res === 'confirm') {
|
|
483
|
+
this.PrintReceipt()
|
|
484
|
+
}else {
|
|
485
|
+
this.$dispatch('confirm')
|
|
486
|
+
// //tag
|
|
487
|
+
// this.$back(this.othercharge_id)
|
|
488
|
+
}
|
|
489
|
+
})
|
|
490
|
+
}
|
|
491
|
+
}else {
|
|
492
|
+
this.$showMessage('购气缴费失败!!!')
|
|
493
|
+
// 是否进行退费
|
|
494
|
+
}
|
|
495
|
+
})
|
|
496
|
+
},
|
|
497
|
+
PrintReceipt() {
|
|
498
|
+
//tag
|
|
499
|
+
// 清空打印内容
|
|
500
|
+
let printContent = []
|
|
501
|
+
// 抬头
|
|
502
|
+
var comName = '梅河口天然气'
|
|
503
|
+
printContent.push({type: 3, text: comName, fontsize: 3, isbold: true, align: 'center'})
|
|
504
|
+
printContent.push({type: 3, text: '手 持 POS 其 他 收 费 凭 证', fontsize: 3, isbold: true, align: 'center'})
|
|
505
|
+
printContent.push({type: 3, text: '----------------------------', fontsize: 3, isbold: true, align: 'center'})
|
|
506
|
+
// 小票信息
|
|
507
|
+
printContent.push({type: 3, text: '用户编号:' + this.row.f_userinfo_code, fontsize: 2, isbold: true, align: 'left'})
|
|
508
|
+
// 卡表用户显示卡号
|
|
509
|
+
if (this.row.f_meter_type !== '机表' && this.row.f_meter_type !== '物联网表') {
|
|
510
|
+
printContent.push({type: 3, text: '用户卡号:' + this.row.f_card_id, fontsize: 2, isbold: true, align: 'left'})
|
|
511
|
+
}
|
|
512
|
+
printContent.push({type: 3, text: '用户姓名:' + this.row.f_user_name, fontsize: 2, isbold: true, align: 'left'})
|
|
513
|
+
printContent.push({type: 3, text: '用户地址:' + this.row.f_address, fontsize: 2, isbold: true, align: 'left'})
|
|
514
|
+
// 机表物联网表显示购买金额
|
|
515
|
+
printContent.push({type: 3, text: '收费类型:'+ this.model.f_brand_spec , fontsize: 2, isbold: true, align: 'left'})
|
|
516
|
+
printContent.push({type: 3, text: '本次缴费:' + this.model.f_collection + '元', fontsize: 2, isbold: true, align: 'left'})
|
|
517
|
+
printContent.push({type: 3, text: '大写金额:' + Vue.PosUtil.convertCurrency(this.model.f_collection), fontsize: 2, isbold: true, align: 'left'})
|
|
518
|
+
printContent.push({type: 3, text: '支付日期:' + Vue.PosUtil.getNowDate('yyyy-MM-dd'), fontsize: 2, isbold: true, align: 'left'})
|
|
519
|
+
printContent.push({type: 3, text: '支付流水号:' + this.model.f_serial_id, fontsize: 2, isbold: true, align: 'left'})
|
|
520
|
+
printContent.push({type: 3, text: '----------------------------', fontsize: 3, isbold: true, align: 'center'})
|
|
521
|
+
printContent.push({type: 3, text: '', fontsize: 3, isbold: true, align: 'center'})
|
|
522
|
+
// 走纸
|
|
523
|
+
printContent.push({type: 4, value: 5, unit: 'pixel'})
|
|
524
|
+
// 打印
|
|
525
|
+
let print = HostApp.print(JSON.stringify(printContent))
|
|
526
|
+
if (print.code === 200) {
|
|
527
|
+
this.$showMessage('打印成功!是否返回上一层?', ['confirm', 'cancel']).then((res) => {
|
|
528
|
+
if (res === 'confirm') {
|
|
529
|
+
//tag
|
|
530
|
+
this.$dispatch('confirm')
|
|
531
|
+
// //tag
|
|
532
|
+
// this.$back(this.othercharge_id)
|
|
533
|
+
}
|
|
534
|
+
})
|
|
535
|
+
|
|
536
|
+
}else {
|
|
537
|
+
this.$showMessage('打印失败!请检查POS纸张、电量等,确认无误点击确认再次打印', ['confirm', 'cancel']).then((res) => {
|
|
538
|
+
if (res === 'confirm') {
|
|
539
|
+
//tag
|
|
540
|
+
let print2 = HostApp.print(JSON.stringify(printContent))
|
|
541
|
+
if (print2.code === 200) {
|
|
542
|
+
this.$showMessage('打印成功!')
|
|
543
|
+
this.$dispatch('confirm')
|
|
544
|
+
// //tag
|
|
545
|
+
// this.$back(this.othercharge_id)
|
|
546
|
+
}else {
|
|
547
|
+
this.$showMessage('打印失败!')
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
})
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
clean() {
|
|
554
|
+
//tag
|
|
555
|
+
this.model.f_brand_spec = '请选择';
|
|
556
|
+
this.model.f_payment = '微信支付';
|
|
557
|
+
this.model.f_number = '';
|
|
558
|
+
this.model.f_unitprice = '';
|
|
559
|
+
this.model.f_collection = '';
|
|
560
|
+
this.model.f_comments = '';
|
|
561
|
+
},
|
|
562
|
+
},
|
|
563
|
+
computed:{
|
|
564
|
+
specification (){
|
|
565
|
+
return this.$appdata.getParam(this.model.f_brand_spec)?this.$appdata.getParam(this.model.f_brand_spec):[]
|
|
566
|
+
},
|
|
567
|
+
modeltype (){
|
|
568
|
+
return this.$appdata.getParam(this.model.f_typename)?this.$appdata.getParam(this.model.f_typename):[]
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
watch: {
|
|
572
|
+
'model.f_number' (val) {
|
|
573
|
+
if (val) {
|
|
574
|
+
//tag;
|
|
575
|
+
//tag;
|
|
576
|
+
this.model.f_collection = this.model.f_number * this.model.f_unitprice;
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
'model.f_unitprice' (val) {
|
|
580
|
+
if (val) {
|
|
581
|
+
//tag;
|
|
582
|
+
//tag;
|
|
583
|
+
this.model.f_collection = this.model.f_number * this.model.f_unitprice;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
</script>
|
|
590
|
+
|
|
591
|
+
<style scoped>
|
|
592
|
+
.app-row {
|
|
593
|
+
background-color: white;
|
|
594
|
+
padding: 10px 10px 0 10px;
|
|
595
|
+
border-bottom: 1px solid rgba(235, 235, 235, 0.7);
|
|
596
|
+
}
|
|
597
|
+
.search_input {
|
|
598
|
+
border: 0;
|
|
599
|
+
outline: none;
|
|
600
|
+
}
|
|
601
|
+
.font{
|
|
602
|
+
font: 15px PingFang-SC-Medium;
|
|
603
|
+
color: #666666;
|
|
604
|
+
}
|
|
605
|
+
.input-font{
|
|
606
|
+
font: 15px PingFang-SC-Medium;
|
|
607
|
+
color: #333333;
|
|
608
|
+
}
|
|
609
|
+
.btn-color{
|
|
610
|
+
background-color: #FFFFFF;
|
|
611
|
+
border-radius: 10px ;
|
|
612
|
+
border: 1px solid #499EDF;
|
|
613
|
+
}
|
|
614
|
+
.btn-font{
|
|
615
|
+
font:600 16px PingFang-SC-Bold;
|
|
616
|
+
color: #499EDF;
|
|
617
|
+
}
|
|
618
|
+
</style>
|
|
619
|
+
|
|
@@ -3,6 +3,7 @@ let specialComp={
|
|
|
3
3
|
'fault-all': (resolve) => { require(['./android/FaultAll'], resolve) },
|
|
4
4
|
'repair-first': (resolve) => { require(['./android/RepairFirstV'], resolve) },
|
|
5
5
|
'repair-orderT': (resolve) => { require(['./android/RepairOrderT'], resolve) },
|
|
6
|
+
'other_charge': (resolve) => { require(['./android/Othercharge'], resolve) },
|
|
6
7
|
}
|
|
7
8
|
exports.specialComp = specialComp
|
|
8
9
|
|