sale-client 3.6.8 → 3.6.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.8",
3
+ "version": "3.6.9",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -127,10 +127,14 @@
127
127
  </div>
128
128
  </div>
129
129
  <div v-if="row.f_collection_type == '按气量'" >
130
- <div class="col-sm-4">
130
+ <div class="col-sm-4" v-if="!row.f_calculation.includes('表端结算')">
131
131
  <label class="font_normal_body_new">表剩余气量</label>
132
132
  <input class="input-underline" style="width:55%" :value="row.f_balance_gas" readonly>
133
133
  </div>
134
+ <div class="col-sm-4" v-if="row.f_meter_type.includes('表端结算')">
135
+ <label class="font_normal_body_new">表剩余气量</label>
136
+ <input class="input-underline" style="width:55%" :value="row.f_jval" readonly>
137
+ </div>
134
138
  <div class="col-sm-4">
135
139
  <label class="font_normal_body_new">累计用气金额</label>
136
140
  <input class="input-underline" style="width:45%" :value="row.f_total_usegas_amount" readonly>
@@ -73,11 +73,11 @@
73
73
  this.showhighmeter = !this.showhighmeter
74
74
  },
75
75
  async load (self) {
76
- let condition = `f_blobid= '${self.headers.blodid}' `
76
+ let condition = `1=1 and f_blobid= '${self.headers.blodid}' `
77
77
  if (this.fusetype) {
78
78
  condition += ` and fusetype='${this.fusetype}'`
79
79
  }
80
- let getFile = await this.$resetpost('rs/sql/singleTable', {
80
+ let getFile = await this.$resetpost('rs/sql/saleSingleTable', {
81
81
  data: {
82
82
  tablename: 't_files',
83
83
  condition: condition + ` order by f_uploaddate desc `
@@ -301,7 +301,7 @@ export default {
301
301
  pipeways: this.$appdata.getParam('连接方式'),
302
302
  pipetypeparams: this.$appdata.getParam('管道类型'),
303
303
  WatchPurchases: this.$appdata.getParam('购买方式'),
304
- installperson: this.$appdata.getParam('安装人'),
304
+ installperson: [{label: '无', value: ''}, ...this.$appdata.getParam('安装人')],
305
305
  installtype: this.$appdata.getParam('安装方式'),
306
306
  userdevicestate: this.$appdata.getParam('用户设备状态'),
307
307
  builders: this.$appdata.getParam('施工单位'),
@@ -0,0 +1,393 @@
1
+ <template>
2
+ <div class="auto form-horizontal">
3
+ <modal :show.sync="show" v-ref:modal large backdrop="false">
4
+ <header slot="modal-header" class="modal-header">
5
+ <h3 style="color:black" class="modal-title">收费电子发票</h3>
6
+ </header>
7
+ <article slot="modal-body" class="modal-body">
8
+ <div class="row" style="display: flex;justify-content: center;" v-if="!eticket_src">
9
+ {{ return_msg }}
10
+ </div>
11
+ <iframe :src="eticket_src" v-if="eticket_src" width="100%" height="500px">
12
+ </iframe>
13
+ </article>
14
+ <footer slot="modal-footer" class="modal-footer">
15
+ <button type="button" class="btn btn-default" @click="cancel">{{ '关闭' }}</button>
16
+ </footer>
17
+ </modal>
18
+ </div>
19
+ </template>
20
+ <script>
21
+ import {HttpResetClass} from 'vue-client'
22
+
23
+ export default {
24
+ title: '电子发票',
25
+ data () {
26
+ return {
27
+ eticket_src: '',
28
+ return_msg: '航信收到开票请求,正在查询开票状态,请稍后',
29
+ show: true
30
+ }
31
+ },
32
+ props: ['show'],
33
+ ready () {
34
+ },
35
+ methods: {
36
+ cancel () {
37
+ console.log('电子哈哈哈,你走了没')
38
+ this.eticket_src = ''
39
+ this.return_msg = '正在查询中,请稍后'
40
+ this.$dispatch('toggle')
41
+ },
42
+ //* 公用保存信息接口
43
+ async save_msg (obj) {
44
+ let model = {
45
+ id: obj.f_eticket_id,
46
+ f_bill_code: obj.f_bill_code ? obj.f_bill_code : undefined,
47
+ f_bill_number: obj.f_bill_number ? obj.f_bill_number : undefined,
48
+ f_jym: obj.f_jym ? obj.f_jym : undefined,
49
+ f_bill_url: obj.f_bill_url ? obj.f_bill_url : undefined,
50
+ f_red_url: obj.f_red_url ? obj.f_red_url : undefined,
51
+ f_bill_state: obj.f_bill_state,
52
+ f_sign_result: obj.f_sign_result ? obj.f_sign_result : undefined,
53
+ f_sign_time: obj.f_sign_time ? obj.f_sign_time : undefined
54
+ }
55
+ await this.$resetpost('rs/entity/t_eticket', model, {resolveMsg: null, rejectMsg: '保存发票记录失败'})
56
+ },
57
+ async openETicket (sellId, row, show_gas, is_pax, type) {
58
+ try {
59
+ let model = {
60
+ id: sellId,
61
+ f_charge_type: type,
62
+ f_dept_id: this.$login.f.depids,
63
+ f_operator: this.$login.f.name,
64
+ f_orgid: this.$login.f.orgid,
65
+ f_orgname: this.$login.f.orgs,
66
+ f_depname: this.$login.f.deps,
67
+ f_operatorid: this.$login.f.id,
68
+ f_filialeids: this.$login.f.f_orgids,
69
+ f_buy_name: row.f_paper_name,
70
+ f_pay_id: row.f_taxpayer_id,
71
+ f_buy_address: row.f_address_phone,
72
+ f_mail_push: row.f_email,
73
+ f_buy_openbank: row.f_paper_account,
74
+ invoice_show_gas: show_gas === '是',
75
+ is_pax: is_pax === '征税'
76
+ }
77
+ console.log('组织开票数据并保存', model)
78
+ // TODO 组织开票数据并保存
79
+ let ticket_id = await this.$resetpost('rs/logic/TCcombineData', model, {resolveMsg: null, rejectMsg: '保存开票信息失败'})
80
+ return this.openEticketGen(ticket_id.data)
81
+ } catch (error) {
82
+ this.$showAlert(`电子发票开票失败!!请到发票管理重新开票。错误原因: ${JSON.stringify(error)}。`, 'danger', 0)
83
+ }
84
+ },
85
+ async openCustETicket (custModel, invoice_is_pax) {
86
+ try {
87
+ let model = Object.assign({
88
+ f_dept_id: this.$login.f.depids,
89
+ f_operator: this.$login.f.name,
90
+ f_orgid: this.$login.f.orgid,
91
+ f_orgname: this.$login.f.orgs,
92
+ f_depname: this.$login.f.deps,
93
+ f_operatorid: this.$login.f.id,
94
+ f_filialeids: this.$login.f.f_orgids,
95
+ f_buy_name: custModel.f_paper_name,
96
+ f_pay_id: custModel.f_taxpayer_id,
97
+ f_buy_address: custModel.f_address_phone,
98
+ f_mail_push: custModel.f_email,
99
+ f_buy_openbank: custModel.f_paper_account,
100
+ invoice_show_gas: !!(custModel.amount && custModel.price),
101
+ detail_price: {amount: custModel.amount, price: custModel.price, name: custModel.name, money: custModel.money},
102
+ is_pax: invoice_is_pax === '征税'
103
+ }, custModel)
104
+ // TODO 组织开票数据并保存
105
+ let ticket_id = await this.$resetpost('rs/logic/TCcombineCustData', model, {resolveMsg: null, rejectMsg: '保存开票信息失败'})
106
+ return this.openEticketGen(ticket_id.data)
107
+ } catch (error) {
108
+ this.$showAlert(`电子发票开票失败!!请到发票管理重新开票。错误原因: ${JSON.stringify(error)}。`, 'danger', 0)
109
+ }
110
+ },
111
+ /**
112
+ * src赋值 外部调用
113
+ * */
114
+ watch_ch (src) {
115
+ this.eticket_src = src
116
+ },
117
+ /**
118
+ * 电票查询 外部调用
119
+ * */
120
+ fp_search (row, ticket_id) {
121
+ // 通过收费记录id查询
122
+ let http = new HttpResetClass()
123
+ http.load('POST', '/invoice/rs/tongchuan/queryInvoice', {eticket_id: ticket_id}, {
124
+ resolveMsg: null,
125
+ rejectMsg: null
126
+ }).then((req) => {
127
+ if (!req.data.RESPONSE_FPXXXZ) {
128
+ this.$showAlert('电子票查询出错,暂无错误信息.请联系管理员', 'danger', 5000)
129
+ return
130
+ }
131
+ req = req.data.RESPONSE_FPXXXZ
132
+ let model
133
+ if (req.RETURN_CODE === '0000') {
134
+ if (req.PDF_URL) {
135
+ model = {
136
+ id: ticket_id,
137
+ f_bill_code: req.FPDM,
138
+ f_bill_number: req.FPHM,
139
+ f_jym: req.INVOICE_CHECK_CODE,
140
+ f_bill_url: req.PDF_URL,
141
+ f_bill_state: '开票成功',
142
+ f_sign_result: req.RETURN_MESSAGE
143
+ }
144
+ this.eticket_src = req.PDF_URL
145
+ } else if (req.PDF_RED_URL) {
146
+ model = {
147
+ id: ticket_id,
148
+ f_bill_code: req.FPDM,
149
+ f_bill_number: req.FPHM,
150
+ f_jym: req.INVOICE_CHECK_CODE,
151
+ f_red_url: req.PDF_RED_URL,
152
+ f_bill_state: '冲红',
153
+ f_sign_result: req.RETURN_MESSAGE
154
+ }
155
+ this.eticket_src = req.PDF_RED_URL
156
+ }
157
+ } else if (req.RETURN_CODE === '0011') {
158
+ model = {
159
+ id: ticket_id,
160
+ f_bill_state: '等待查询',
161
+ f_sign_result: req.RETURN_MESSAGE
162
+ }
163
+ this.return_msg = '请稍后再试。' + req.RETURN_MESSAGE
164
+ } else {
165
+ model = {
166
+ id: row.id,
167
+ f_bill_state: '开票失败',
168
+ f_sign_result: req.RETURN_MESSAGE
169
+ }
170
+ this.return_msg = ' 开票失败。' + req.RETURN_MESSAGE
171
+ }
172
+ this.$resetpost('rs/entity/t_eticket', model, {resolveMsg: null, rejectMsg: '保存发票记录失败'}).then(
173
+ res => this.$dispatch('search')
174
+ )
175
+ })
176
+ },
177
+ /** 冲红
178
+ * */
179
+ async rushRedInvoice (ticket_id) {
180
+ try {
181
+ // 否则正常打票
182
+ let time = 0
183
+ let result = await this.$resetpost('/invoice/rs/tongchuan/rushRed', {eticket_id: ticket_id}, {
184
+ resolveMsg: null,
185
+ rejectMsg: '发票冲红失败!!'
186
+ })
187
+ result = result.data.RESPONSE_FPXX
188
+ if (result && result.RETURN_CODE === '0000') {
189
+ // TODO 开票成功 保存发票详情
190
+ await this.save_msg({
191
+ f_eticket_id: ticket_id,
192
+ f_bill_state: '等待查询'
193
+ })
194
+ // TODO 开票成功 进行查询
195
+ let interval = await setInterval(() => {
196
+ // 2秒一轮回
197
+ let http = new HttpResetClass()
198
+ http.load('POST', '/invoice/rs/tongchuan/queryInvoice', {eticket_id: ticket_id}, {
199
+ resolveMsg: null,
200
+ rejectMsg: null
201
+ }).then(req => {
202
+ if (!req.data.RESPONSE_FPXXXZ) {
203
+ clearInterval(interval)
204
+ this.save_msg({
205
+ f_eticket_id: ticket_id,
206
+ f_sign_result: '查询超时请再次尝试。',
207
+ f_bill_state: '查询失败'
208
+ })
209
+ this.$showAlert('电子票查询出错,暂无错误信息,请前往发票管理重新尝试', 'danger', 5000)
210
+ return
211
+ }
212
+ req = req.data.RESPONSE_FPXXXZ
213
+ console.log(req, '查出什么玩意了', time, req.DDBH + '')
214
+ if (req && req.RETURN_CODE === '0000') {
215
+ // 组织数据
216
+ clearInterval(interval)
217
+ // TODO 成功后保存发票详情
218
+ this.save_msg({
219
+ f_eticket_id: ticket_id,
220
+ f_bill_code: req.FPDM,
221
+ f_bill_number: req.FPHM,
222
+ f_jym: req.INVOICE_CHECK_CODE,
223
+ f_bill_url: req.PDF_RED_URL,
224
+ f_sign_result: req.RETURN_MESSAGE,
225
+ f_bill_state: '冲红'
226
+ })
227
+ this.eticket_src = req.PDF_RED_URL
228
+ } else if (req && req.RETURN_CODE !== '0011') {
229
+ clearInterval(interval)
230
+ // TODO 失败后保存发票详情
231
+ this.save_msg({
232
+ f_eticket_id: ticket_id,
233
+ f_sign_result: req.RETURN_MESSAGE,
234
+ f_bill_state: '开票成功'
235
+ })
236
+ this.return_msg = '电子票查询出错,错误【' + req.RETURN_MESSAGE + '】,错误代码【' + req.RETURN_CODE + '】,请前往发票管理重新尝试'
237
+ } else {
238
+ if (time == 80) {
239
+ // 三十秒后无效
240
+ // TODO 查询失败后保存发票详情
241
+ this.save_msg({
242
+ f_eticket_id: ticket_id,
243
+ f_sign_result: '查询超时请再次尝试。',
244
+ f_bill_state: '等待查询'
245
+ })
246
+ this.return_msg = '发票已经开具,查询发票状态超时,请前往发票管理重新尝试'
247
+ clearInterval(interval)
248
+ }
249
+ time = time + 1
250
+ }
251
+ })
252
+ }, 1 * 2000)
253
+ } else if (result) {
254
+ // TODO 查询失败后保存发票详情
255
+ await this.save_msg({
256
+ f_eticket_id: ticket_id,
257
+ f_sign_result: result.RETURN_MESSAGE,
258
+ f_bill_state: '冲红失败'
259
+ })
260
+ this.return_msg = '电子票冲红出错,错误【' + result.RETURN_MESSAGE + '】,错误代码【' + result.RETURN_CODE + '】,请前往发票管理重新尝试'
261
+ } else {
262
+ await this.save_msg({
263
+ f_eticket_id: ticket_id,
264
+ f_sign_result: '电子票冲红出错,需要查询日志。',
265
+ f_bill_state: '冲红失败'
266
+ })
267
+ this.$showAlert('电子票冲红出错,暂无错误信息,请前往发票管理重新尝试', 'danger', 5000)
268
+ }
269
+ } catch (error) {
270
+ await this.save_msg({
271
+ f_eticket_id: ticket_id,
272
+ f_return_msg: '冲红失败,需要查询日志。',
273
+ f_bill_state: '冲红失败'
274
+ })
275
+ this.$showAlert('电子票冲红出现异常,请联系管理员!!!', 'warning', 5000)
276
+ }
277
+ },
278
+ /**
279
+ *
280
+ * @param id 收费id
281
+ * @param ticket_id 票据信息 id
282
+ * @returns {Promise<void>} 如果查到返回url
283
+ */
284
+ async openEticketGen (ticket_id) {
285
+ try {
286
+ // 否则正常打票
287
+ await this.$resetpost('/rs/logic/updateSearil', {id: ticket_id}, {
288
+ resolveMsg: null,
289
+ rejectMsg: '更新流水号失败!!'
290
+ })
291
+ let time = 0
292
+ let result = await this.$resetpost('/invoice/rs/tongchuan/getInvoice', {eticket_id: ticket_id}, {
293
+ resolveMsg: null,
294
+ rejectMsg: '发票打印失败!!'
295
+ })
296
+ result = result.data.RESPONSE_FPXX
297
+ if (result && result.RETURN_CODE === '0000') {
298
+ // TODO 开票成功 保存发票详情
299
+ await this.save_msg({
300
+ f_eticket_id: ticket_id,
301
+ f_bill_state: '等待查询'
302
+ })
303
+ // TODO 开票成功 进行查询
304
+ let interval = await setInterval(() => {
305
+ // 2秒一轮回
306
+ let http = new HttpResetClass()
307
+ http.load('POST', '/invoice/rs/tongchuan/queryInvoice', {eticket_id: ticket_id}, {
308
+ resolveMsg: null,
309
+ rejectMsg: null
310
+ }).then(req => {
311
+ if (!req.data.RESPONSE_FPXXXZ) {
312
+ clearInterval(interval)
313
+ this.save_msg({
314
+ f_eticket_id: ticket_id,
315
+ f_sign_result: '查询超时请再次尝试。',
316
+ f_bill_state: '查询失败'
317
+ })
318
+ this.$showAlert('电子票查询出错,暂无错误信息,请前往发票管理重新尝试', 'danger', 5000)
319
+ return
320
+ }
321
+ req = req.data.RESPONSE_FPXXXZ
322
+ console.log(req, '查出什么玩意了', time, req.DDBH + '')
323
+ if (req && req.RETURN_CODE === '0000') {
324
+ // 组织数据
325
+ clearInterval(interval)
326
+ // TODO 成功后保存发票详情
327
+ this.save_msg({
328
+ f_eticket_id: ticket_id,
329
+ f_bill_code: req.FPDM,
330
+ f_bill_number: req.FPHM,
331
+ f_jym: req.INVOICE_CHECK_CODE,
332
+ f_bill_url: req.PDF_URL,
333
+ f_sign_result: req.RETURN_MESSAGE,
334
+ f_bill_state: '开票成功'
335
+ })
336
+ this.eticket_src = req.PDF_URL
337
+ } else if (req && req.RETURN_CODE !== '0011') {
338
+ clearInterval(interval)
339
+ // TODO 失败后保存发票详情
340
+ this.save_msg({
341
+ f_eticket_id: ticket_id,
342
+ f_sign_result: req.RETURN_MESSAGE,
343
+ f_bill_state: '开票失败'
344
+ })
345
+ this.return_msg = '电子票查询出错,错误【' + req.RETURN_MESSAGE + '】,错误代码【' + req.RETURN_CODE + '】,请前往发票管理重新尝试'
346
+ } else {
347
+ if (time == 50) {
348
+ // 三十秒后无效
349
+ // TODO 查询失败后保存发票详情
350
+ this.save_msg({
351
+ f_eticket_id: ticket_id,
352
+ f_sign_result: '查询超时请再次尝试。',
353
+ f_bill_state: '查询失败'
354
+ })
355
+ this.return_msg = '发票已经开具,查询发票状态超时,请前往发票管理重新尝试'
356
+ clearInterval(interval)
357
+ }
358
+ time = time + 1
359
+ }
360
+ })
361
+ }, 1 * 2000)
362
+ } else if (result) {
363
+ // TODO 查询失败后保存发票详情
364
+ await this.save_msg({
365
+ f_eticket_id: ticket_id,
366
+ f_sign_result: result.RETURN_MASSAGE,
367
+ f_bill_state: '开票失败'
368
+ })
369
+ this.return_msg = '电子票开票出错,错误【' + result.RETURN_MASSAGE + '】,错误代码【' + result.RETURN_CODE + '】,请前往发票管理重新尝试'
370
+ } else {
371
+ await this.save_msg({
372
+ f_eticket_id: ticket_id,
373
+ f_sign_result: '开票失败,需要查询日志。',
374
+ f_bill_state: '开票失败'
375
+ })
376
+ this.$showAlert('电子票开票出错,暂无错误信息,请前往发票管理重新尝试', 'danger', 5000)
377
+ }
378
+ } catch (error) {
379
+ await this.save_msg({
380
+ f_eticket_id: ticket_id,
381
+ f_return_msg: '开票失败,需要查询日志。',
382
+ f_bill_state: '开票失败'
383
+ })
384
+ this.$showAlert('电子发票打印出现异常,请联系管理员!!!', 'warning', 5000)
385
+ }
386
+ }
387
+ },
388
+ watch: {},
389
+ events: {}
390
+ }
391
+ </script>
392
+ <style>
393
+ </style>
@@ -125,6 +125,7 @@ export default function () {
125
125
  // 抄表列表
126
126
  Vue.component('hand-list', (resolve) => { require(['./handList'], resolve) })
127
127
  Vue.component('e-ticket-open-hand', (resolve) => { require(['./EticketOpenJBPage.vue'], resolve) })
128
+ Vue.component('ticket-print', (resolve) => { require(['./bill/EticketPrint'], resolve) })
128
129
 
129
130
  // 表计管理
130
131
  Vue.component('web-meter-info', (resolve) => { require(['./WebMeterInfo'], resolve) })
package/src/main.js CHANGED
@@ -1,27 +1,27 @@
1
- import Vue from 'vue'
2
- import all from 'vue-client/src/all'
3
- import App from './App'
4
- import system from 'system-clients/src/system'
5
- import sale from './sale'
6
- import wenxi from './filiale/lixianV3/sale'
7
- // import FilialeSale from './filiale/yuansheng/sale'
8
- import address from 'address-client/src/address'
9
- import ldap from 'ldap-clients/src/ldap'
10
- import VueClipboard from 'vue-clipboard2'
11
-
12
- Vue.use(VueClipboard)
13
- Vue.config.silent = true
14
-
15
- all()
16
- system(false)
17
- sale()
18
- wenxi()
19
- // FilialeSale()
20
- address()
21
- ldap()
22
- require('system-clients/src/styles/less/bootstrap.less')
23
-
24
- new Vue({
25
- el: 'body',
26
- components: { App }
27
- })
1
+ import Vue from 'vue'
2
+ import all from 'vue-client/src/all'
3
+ import App from './App'
4
+ import system from 'system-clients/src/system'
5
+ import sale from './sale'
6
+ import wenxi from './filiale/lixianV3/sale'
7
+ // import FilialeSale from './filiale/yuansheng/sale'
8
+ import address from 'address-client/src/address'
9
+ import ldap from 'ldap-clients/src/ldap'
10
+ import VueClipboard from 'vue-clipboard2'
11
+
12
+ Vue.use(VueClipboard)
13
+ Vue.config.silent = true
14
+
15
+ all()
16
+ system(false)
17
+ sale()
18
+ wenxi()
19
+ // FilialeSale()
20
+ address()
21
+ ldap()
22
+ require('system-clients/src/styles/less/bootstrap.less')
23
+
24
+ new Vue({
25
+ el: 'body',
26
+ components: { App }
27
+ })