manage-client 4.1.141 → 4.1.143
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/build/dev-server.js +11 -11
- package/package.json +1 -1
- package/src/components/SellReport/ManageBusSummary.vue +327 -0
- package/src/filiale/meihekou/ReportDataQuery.vue +383 -0
- package/src/filiale/meihekou/config/exportConfig.js +51 -0
- package/src/filiale/meihekou/config/tableConfig.js +58 -45
- package/src/filiale/meihekou/webmeterManage.js +2 -0
package/build/dev-server.js
CHANGED
|
@@ -6,8 +6,8 @@ const proxyMiddleware = require('http-proxy-middleware')
|
|
|
6
6
|
const app = express()
|
|
7
7
|
const compiler = webpack(config)
|
|
8
8
|
|
|
9
|
-
const server = 'http://
|
|
10
|
-
const local = 'http://
|
|
9
|
+
const server = 'http://121.36.106.17:31467/'
|
|
10
|
+
const local = 'http://121.36.106.17:31467/'
|
|
11
11
|
const proxyTable = {
|
|
12
12
|
'/rs/logic/exportfile': {
|
|
13
13
|
target: server
|
|
@@ -16,21 +16,21 @@ const proxyTable = {
|
|
|
16
16
|
target: server
|
|
17
17
|
},
|
|
18
18
|
'/api/af-revenue/sql/': {
|
|
19
|
-
pathRewrite: {
|
|
20
|
-
|
|
21
|
-
},
|
|
19
|
+
// pathRewrite: {
|
|
20
|
+
// '^/api/af-revenue': '/'
|
|
21
|
+
// },
|
|
22
22
|
target: local
|
|
23
23
|
},
|
|
24
24
|
'/api/af-revenue/report/': {
|
|
25
|
-
pathRewrite: {
|
|
26
|
-
|
|
27
|
-
},
|
|
25
|
+
// pathRewrite: {
|
|
26
|
+
// '^/api/af-revenue': '/'
|
|
27
|
+
// },
|
|
28
28
|
target: local
|
|
29
29
|
},
|
|
30
30
|
'/api/af-revenue/logic': {
|
|
31
|
-
pathRewrite: {
|
|
32
|
-
|
|
33
|
-
},
|
|
31
|
+
// pathRewrite: {
|
|
32
|
+
// '^/api/af-revenue': '/'
|
|
33
|
+
// },
|
|
34
34
|
target: local
|
|
35
35
|
},
|
|
36
36
|
'/api': {
|
package/package.json
CHANGED
|
@@ -132,10 +132,28 @@
|
|
|
132
132
|
<button class="button_clear" @click="cancel()">取消</button>
|
|
133
133
|
</footer>
|
|
134
134
|
</modal>
|
|
135
|
+
<modal :show.sync="signatureModalShow" large backdrop="false" width="50%">
|
|
136
|
+
<header slot="modal-header" class="modal-header" style="text-align: center">
|
|
137
|
+
<h4 class="modal-title">业务员签名</h4>
|
|
138
|
+
</header>
|
|
139
|
+
<article slot="modal-body" class="modal-body">
|
|
140
|
+
<div style="text-align:center">
|
|
141
|
+
<canvas v-ref:signCanvas data-sign-canvas="true"
|
|
142
|
+
style="border:1px solid #ccc; background:#fff; width:600px; height:300px; touch-action:none;">
|
|
143
|
+
</canvas>
|
|
144
|
+
</div>
|
|
145
|
+
</article>
|
|
146
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
147
|
+
<button type="button" class="button_clear" @click="clearSignatureCanvas()">清除</button>
|
|
148
|
+
<button type="button" class="button_search" @click="saveSignatureAndSubmit()" :disabled="signatureUploadInProgress">保存并提交</button>
|
|
149
|
+
<button type="button" class="button_clear" @click="signatureModalShow=false">取消</button>
|
|
150
|
+
</footer>
|
|
151
|
+
</modal>
|
|
135
152
|
</div>
|
|
136
153
|
</template>
|
|
137
154
|
|
|
138
155
|
<script>
|
|
156
|
+
import Vue from 'vue'
|
|
139
157
|
import {DataModel} from 'vue-client'
|
|
140
158
|
import co from 'co'
|
|
141
159
|
|
|
@@ -174,6 +192,16 @@ export default {
|
|
|
174
192
|
},
|
|
175
193
|
pushAuditData: {},
|
|
176
194
|
pushAuditShow: false,
|
|
195
|
+
signatureModalShow: false,
|
|
196
|
+
signatureData: '',
|
|
197
|
+
signatureDrawn: false,
|
|
198
|
+
signatureUploadInProgress: false,
|
|
199
|
+
signing: false,
|
|
200
|
+
signLastX: 0,
|
|
201
|
+
signLastY: 0,
|
|
202
|
+
signDPR: 1,
|
|
203
|
+
signCanvasContext: null,
|
|
204
|
+
signatureCanvas: null,
|
|
177
205
|
config: {
|
|
178
206
|
hasAudit: false
|
|
179
207
|
}
|
|
@@ -189,10 +217,21 @@ export default {
|
|
|
189
217
|
},
|
|
190
218
|
methods: {
|
|
191
219
|
auditConfirm () {
|
|
220
|
+
// If no signature yet, require the reviewer to sign first
|
|
221
|
+
if (!this.pushAuditData.f_audit_person) {
|
|
222
|
+
this.$showMessage('请选择审核人')
|
|
223
|
+
return
|
|
224
|
+
}
|
|
225
|
+
if (!this.pushAuditData.signature) {
|
|
226
|
+
this.signatureModalShow = true
|
|
227
|
+
return
|
|
228
|
+
}
|
|
229
|
+
|
|
192
230
|
const param = {
|
|
193
231
|
f_type: '收费结账报表',
|
|
194
232
|
f_requestparam: this.model.data,
|
|
195
233
|
f_audit_person: this.pushAuditData.f_audit_person,
|
|
234
|
+
f_signature: this.pushAuditData.signature,
|
|
196
235
|
f_otherparam: this.pushAuditData,
|
|
197
236
|
f_operator: this.$login.f.name,
|
|
198
237
|
f_operatorid: this.$login.f.id,
|
|
@@ -210,8 +249,286 @@ export default {
|
|
|
210
249
|
}).then((res) => {
|
|
211
250
|
this.pushAuditShow = false
|
|
212
251
|
this.pushAuditData.f_audit_person = ''
|
|
252
|
+
this.pushAuditData.signature = ''
|
|
253
|
+
})
|
|
254
|
+
},
|
|
255
|
+
initSignCanvas () {
|
|
256
|
+
this.$nextTick(() => {
|
|
257
|
+
let canvas = this.$refs.signCanvas
|
|
258
|
+
if (!canvas) {
|
|
259
|
+
canvas = this.$el.querySelector('canvas[data-sign-canvas]') || document.querySelector('canvas[data-sign-canvas]')
|
|
260
|
+
|
|
261
|
+
}
|
|
262
|
+
const desiredW = 600
|
|
263
|
+
const desiredH = 300
|
|
264
|
+
canvas.width = desiredW
|
|
265
|
+
canvas.height = desiredH
|
|
266
|
+
canvas.style.width = desiredW + 'px'
|
|
267
|
+
canvas.style.height = desiredH + 'px'
|
|
268
|
+
const ctx = canvas.getContext('2d')
|
|
269
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0)
|
|
270
|
+
ctx.fillStyle = '#fff'
|
|
271
|
+
ctx.fillRect(0, 0, desiredW, desiredH)
|
|
272
|
+
ctx.strokeStyle = '#000'
|
|
273
|
+
ctx.lineWidth = 2
|
|
274
|
+
ctx.lineCap = 'round'
|
|
275
|
+
ctx.lineJoin = 'round'
|
|
276
|
+
this.signCanvasContext = ctx
|
|
277
|
+
this.signing = false
|
|
278
|
+
this.signatureDrawn = false
|
|
279
|
+
this.destroySignCanvasListeners()
|
|
280
|
+
const getPoint = (event) => {
|
|
281
|
+
const rect = canvas.getBoundingClientRect()
|
|
282
|
+
let clientX = event.clientX
|
|
283
|
+
let clientY = event.clientY
|
|
284
|
+
if (event.touches && event.touches.length) {
|
|
285
|
+
clientX = event.touches[0].clientX
|
|
286
|
+
clientY = event.touches[0].clientY
|
|
287
|
+
} else if (event.changedTouches && event.changedTouches.length) {
|
|
288
|
+
clientX = event.changedTouches[0].clientX
|
|
289
|
+
clientY = event.changedTouches[0].clientY
|
|
290
|
+
}
|
|
291
|
+
if (clientX == null || clientY == null) return null
|
|
292
|
+
const x = (clientX - rect.left) * (canvas.width / rect.width)
|
|
293
|
+
const y = (clientY - rect.top) * (canvas.height / rect.height)
|
|
294
|
+
return { x, y }
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
const onStart = (event) => {
|
|
298
|
+
event.preventDefault()
|
|
299
|
+
const point = getPoint(event)
|
|
300
|
+
if (!point) return
|
|
301
|
+
this.signing = true
|
|
302
|
+
this.signatureDrawn = true
|
|
303
|
+
this.signLastX = point.x
|
|
304
|
+
this.signLastY = point.y
|
|
305
|
+
}
|
|
306
|
+
const onMove = (event) => {
|
|
307
|
+
if (!this.signing) return
|
|
308
|
+
event.preventDefault()
|
|
309
|
+
const point = getPoint(event)
|
|
310
|
+
if (!point) return
|
|
311
|
+
const ctx2 = this.signCanvasContext
|
|
312
|
+
ctx2.beginPath()
|
|
313
|
+
ctx2.moveTo(this.signLastX, this.signLastY)
|
|
314
|
+
ctx2.lineTo(point.x, point.y)
|
|
315
|
+
ctx2.stroke()
|
|
316
|
+
this.signLastX = point.x
|
|
317
|
+
this.signLastY = point.y
|
|
318
|
+
}
|
|
319
|
+
const onEnd = (event) => {
|
|
320
|
+
if (this.signing) {
|
|
321
|
+
event.preventDefault()
|
|
322
|
+
}
|
|
323
|
+
this.signing = false
|
|
324
|
+
}
|
|
325
|
+
canvas.addEventListener('mousedown', onStart)
|
|
326
|
+
canvas.addEventListener('mousemove', onMove)
|
|
327
|
+
canvas.addEventListener('mouseup', onEnd)
|
|
328
|
+
canvas.addEventListener('mouseleave', onEnd)
|
|
329
|
+
canvas.addEventListener('touchstart', onStart, {passive:false})
|
|
330
|
+
canvas.addEventListener('touchmove', onMove, {passive:false})
|
|
331
|
+
canvas.addEventListener('touchend', onEnd)
|
|
332
|
+
canvas.addEventListener('touchcancel', onEnd)
|
|
333
|
+
|
|
334
|
+
this._signCanvasListeners = { canvas, onStart, onMove, onEnd }
|
|
335
|
+
this.signatureCanvas = canvas
|
|
336
|
+
})
|
|
337
|
+
},
|
|
338
|
+
destroySignCanvasListeners () {
|
|
339
|
+
if (!this._signCanvasListeners) return
|
|
340
|
+
const { canvas, onStart, onMove, onEnd } = this._signCanvasListeners
|
|
341
|
+
canvas.removeEventListener('mousedown', onStart)
|
|
342
|
+
canvas.removeEventListener('mousemove', onMove)
|
|
343
|
+
canvas.removeEventListener('mouseup', onEnd)
|
|
344
|
+
canvas.removeEventListener('mouseleave', onEnd)
|
|
345
|
+
canvas.removeEventListener('touchstart', onStart)
|
|
346
|
+
canvas.removeEventListener('touchmove', onMove)
|
|
347
|
+
canvas.removeEventListener('touchend', onEnd)
|
|
348
|
+
canvas.removeEventListener('touchcancel', onEnd)
|
|
349
|
+
this._signCanvasListeners = null
|
|
350
|
+
this.signatureCanvas = null
|
|
351
|
+
},
|
|
352
|
+
getSignCanvasElement () {
|
|
353
|
+
return this.$refs.signCanvas || this.signatureCanvas || this.$el.querySelector('canvas[data-sign-canvas]') || document.querySelector('canvas[data-sign-canvas]')
|
|
354
|
+
},
|
|
355
|
+
getSignPoint (event) {
|
|
356
|
+
const canvas = this.getSignCanvasElement()
|
|
357
|
+
if (!canvas) return null
|
|
358
|
+
const rect = canvas.getBoundingClientRect()
|
|
359
|
+
let clientX = event.clientX
|
|
360
|
+
let clientY = event.clientY
|
|
361
|
+
|
|
362
|
+
if (event.touches && event.touches.length) {
|
|
363
|
+
clientX = event.touches[0].clientX
|
|
364
|
+
clientY = event.touches[0].clientY
|
|
365
|
+
} else if (event.changedTouches && event.changedTouches.length) {
|
|
366
|
+
clientX = event.changedTouches[0].clientX
|
|
367
|
+
clientY = event.changedTouches[0].clientY
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (clientX == null || clientY == null) return null
|
|
371
|
+
|
|
372
|
+
// Use offset within canvas bounding box
|
|
373
|
+
const x = (clientX - rect.left) * (canvas.width / rect.width)
|
|
374
|
+
const y = (clientY - rect.top) * (canvas.height / rect.height)
|
|
375
|
+
return { x, y }
|
|
376
|
+
},
|
|
377
|
+
signStart (event) {
|
|
378
|
+
// legacy support: keep method but not used by native listeners
|
|
379
|
+
if (!this.signCanvasContext) return
|
|
380
|
+
const point = this.getSignPoint(event)
|
|
381
|
+
if (!point) return
|
|
382
|
+
this.signing = true
|
|
383
|
+
this.signatureDrawn = true
|
|
384
|
+
this.signLastX = point.x
|
|
385
|
+
this.signLastY = point.y
|
|
386
|
+
},
|
|
387
|
+
signMove (event) {
|
|
388
|
+
if (!this.signing || !this.signCanvasContext) return
|
|
389
|
+
const point = this.getSignPoint(event)
|
|
390
|
+
if (!point) return
|
|
391
|
+
const ctx = this.signCanvasContext
|
|
392
|
+
ctx.beginPath()
|
|
393
|
+
ctx.moveTo(this.signLastX, this.signLastY)
|
|
394
|
+
ctx.lineTo(point.x, point.y)
|
|
395
|
+
ctx.stroke()
|
|
396
|
+
this.signLastX = point.x
|
|
397
|
+
this.signLastY = point.y
|
|
398
|
+
},
|
|
399
|
+
signEnd () {
|
|
400
|
+
this.signing = false
|
|
401
|
+
},
|
|
402
|
+
clearSignatureCanvas () {
|
|
403
|
+
const canvas = this.getSignCanvasElement()
|
|
404
|
+
const ctx = this.signCanvasContext || (canvas ? canvas.getContext('2d') : null)
|
|
405
|
+
if (!canvas || !ctx) {
|
|
406
|
+
return
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
const desiredW = 600
|
|
410
|
+
const desiredH = 300
|
|
411
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0)
|
|
412
|
+
ctx.clearRect(0, 0, desiredW, desiredH)
|
|
413
|
+
ctx.fillStyle = '#fff'
|
|
414
|
+
ctx.fillRect(0, 0, desiredW, desiredH)
|
|
415
|
+
this.signatureDrawn = false
|
|
416
|
+
this.pushAuditData.signature = ''
|
|
417
|
+
},
|
|
418
|
+
getUploadPathFromResponse (res) {
|
|
419
|
+
return res && (res.id)
|
|
420
|
+
},
|
|
421
|
+
canvasToBlob (canvas) {
|
|
422
|
+
return new Promise((resolve, reject) => {
|
|
423
|
+
if (canvas.toBlob) {
|
|
424
|
+
canvas.toBlob((blob) => {
|
|
425
|
+
if (blob) {
|
|
426
|
+
resolve(blob)
|
|
427
|
+
} else {
|
|
428
|
+
reject(new Error('canvas toBlob returned null'))
|
|
429
|
+
}
|
|
430
|
+
}, 'image/png')
|
|
431
|
+
} else {
|
|
432
|
+
try {
|
|
433
|
+
const dataURL = canvas.toDataURL('image/png')
|
|
434
|
+
const byteString = atob(dataURL.split(',')[1])
|
|
435
|
+
const mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0]
|
|
436
|
+
const ab = new ArrayBuffer(byteString.length)
|
|
437
|
+
const ia = new Uint8Array(ab)
|
|
438
|
+
for (let i = 0; i < byteString.length; i++) {
|
|
439
|
+
ia[i] = byteString.charCodeAt(i)
|
|
440
|
+
}
|
|
441
|
+
resolve(new Blob([ab], { type: mimeString }))
|
|
442
|
+
} catch (err) {
|
|
443
|
+
reject(err)
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
})
|
|
447
|
+
},
|
|
448
|
+
uploadSignatureFile () {
|
|
449
|
+
return new Promise(async (resolve, reject) => {
|
|
450
|
+
const canvas = this.getSignCanvasElement()
|
|
451
|
+
if (!canvas) {
|
|
452
|
+
reject(new Error('签名画布未找到'))
|
|
453
|
+
return
|
|
454
|
+
}
|
|
455
|
+
let blob
|
|
456
|
+
try {
|
|
457
|
+
blob = await this.canvasToBlob(canvas)
|
|
458
|
+
} catch (err) {
|
|
459
|
+
reject(err)
|
|
460
|
+
return
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
const form = new FormData()
|
|
464
|
+
form.append('file', blob, 'signature.png')
|
|
465
|
+
|
|
466
|
+
const xhr = new XMLHttpRequest()
|
|
467
|
+
xhr.open('POST', 'api/af-revenue/file/uploadFile', true)
|
|
468
|
+
if (Vue.$login && Vue.$login.jwt) {
|
|
469
|
+
xhr.setRequestHeader('Authorization', 'Bearer ' + Vue.$login.jwtNew)
|
|
470
|
+
xhr.setRequestHeader('Token', Vue.$login.jwt)
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
xhr.onreadystatechange = function () {
|
|
474
|
+
if (xhr.readyState < 4) return
|
|
475
|
+
if (xhr.status < 400) {
|
|
476
|
+
try {
|
|
477
|
+
const res = JSON.parse(xhr.responseText)
|
|
478
|
+
const uploadPath = this.getUploadPathFromResponse(res)
|
|
479
|
+
if (!uploadPath) {
|
|
480
|
+
reject(new Error('上传成功但未返回有效路径'))
|
|
481
|
+
return
|
|
482
|
+
}
|
|
483
|
+
resolve(uploadPath)
|
|
484
|
+
} catch (err) {
|
|
485
|
+
reject(err)
|
|
486
|
+
}
|
|
487
|
+
} else {
|
|
488
|
+
let err
|
|
489
|
+
try {
|
|
490
|
+
err = JSON.parse(xhr.responseText)
|
|
491
|
+
} catch (parseErr) {
|
|
492
|
+
err = new Error(xhr.statusText || '签名上传失败')
|
|
493
|
+
}
|
|
494
|
+
reject(err)
|
|
495
|
+
}
|
|
496
|
+
}.bind(this)
|
|
497
|
+
|
|
498
|
+
xhr.onerror = function () {
|
|
499
|
+
reject(new Error('签名文件上传网络错误'))
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
xhr.send(form)
|
|
213
503
|
})
|
|
214
504
|
},
|
|
505
|
+
async saveSignatureAndSubmit () {
|
|
506
|
+
if (!this.signatureDrawn) {
|
|
507
|
+
if (this.$showMessage) this.$showMessage('请先签名')
|
|
508
|
+
return
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
const canvas = this.getSignCanvasElement()
|
|
512
|
+
if (!canvas) {
|
|
513
|
+
if (this.$showMessage) this.$showMessage('签名画布未找到,请重新打开签名弹窗')
|
|
514
|
+
return
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
if (this.signatureUploadInProgress) {
|
|
518
|
+
return
|
|
519
|
+
}
|
|
520
|
+
this.signatureUploadInProgress = true
|
|
521
|
+
try {
|
|
522
|
+
const uploadPath = await this.uploadSignatureFile()
|
|
523
|
+
this.pushAuditData.signature = uploadPath
|
|
524
|
+
this.signatureModalShow = false
|
|
525
|
+
this.auditConfirm()
|
|
526
|
+
} catch (err) {
|
|
527
|
+
if (this.$showMessage) this.$showMessage('签名上传失败,请重试')
|
|
528
|
+
} finally {
|
|
529
|
+
this.signatureUploadInProgress = false
|
|
530
|
+
}
|
|
531
|
+
},
|
|
215
532
|
async getAuditor () {
|
|
216
533
|
await this.$MagGetSaleParam.initinputtor()
|
|
217
534
|
console.log('查询到的人员:', await this.$MagGetSaleParam.initinputtor())
|
|
@@ -221,6 +538,7 @@ export default {
|
|
|
221
538
|
},
|
|
222
539
|
cancel () {
|
|
223
540
|
this.pushAuditShow = false
|
|
541
|
+
this.pushAuditData.signature = ''
|
|
224
542
|
},
|
|
225
543
|
pushAudit () {
|
|
226
544
|
if (this.model.data === null || this.model.data === ' ') {
|
|
@@ -278,6 +596,15 @@ export default {
|
|
|
278
596
|
}
|
|
279
597
|
this.spans = len
|
|
280
598
|
}
|
|
599
|
+
,
|
|
600
|
+
signatureModalShow (val) {
|
|
601
|
+
console.log('[ManageBusSummary] signatureModalShow watcher', val)
|
|
602
|
+
if (val) {
|
|
603
|
+
this.initSignCanvas()
|
|
604
|
+
} else {
|
|
605
|
+
this.destroySignCanvasListeners()
|
|
606
|
+
}
|
|
607
|
+
}
|
|
281
608
|
},
|
|
282
609
|
computed: {
|
|
283
610
|
charge_state () {
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div id="unit" class="flex-row">
|
|
3
|
+
<div class="basic-main" @keyup.enter="search">
|
|
4
|
+
<div class="flex">
|
|
5
|
+
<criteria-paged :model="model" v-ref:paged>
|
|
6
|
+
<criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
|
|
7
|
+
<div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
|
|
8
|
+
<div class="row">
|
|
9
|
+
<div class="col-sm-2 form-group">
|
|
10
|
+
<label class="font_normal_body">客户编号</label>
|
|
11
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
|
|
12
|
+
condition="f_userinfo_code = '{}' " placeholder="客户编号">
|
|
13
|
+
</div>
|
|
14
|
+
<div class="col-sm-2 form-group">
|
|
15
|
+
<label class="font_normal_body">客户名称</label>
|
|
16
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
|
|
17
|
+
condition=" f_user_name like '%{}%'" placeholder='客户名称'>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="col-sm-2 form-group">
|
|
20
|
+
<label class="font_normal_body">用户地址</label>
|
|
21
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_address"
|
|
22
|
+
condition="f_address like '%{}%'" placeholder='客户地址'>
|
|
23
|
+
</div>
|
|
24
|
+
<!-- <div class="col-sm-2">-->
|
|
25
|
+
<!-- <label class="font_normal_body">组织机构</label>-->
|
|
26
|
+
<!-- <res-select :initresid="$parent.$parent.org"-->
|
|
27
|
+
<!-- style="width:60%"-->
|
|
28
|
+
<!-- @res-select="$parent.$parent.getorg"-->
|
|
29
|
+
<!-- restype='organization'>-->
|
|
30
|
+
<!-- </res-select>-->
|
|
31
|
+
|
|
32
|
+
<!-- </div>-->
|
|
33
|
+
<div class="col-sm-2 form-group">
|
|
34
|
+
<label class="font_normal_body"> 公司 </label>
|
|
35
|
+
<right-tree @re-res="$parent.$parent.getorg"
|
|
36
|
+
:initresid='$parent.$parent.org'></right-tree>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="span" style="float:right;">
|
|
39
|
+
<button class="button_search button_spacing" @click="search()">查询</button>
|
|
40
|
+
<button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
|
|
41
|
+
<export-excel :data="$parent.$parent.getCondition" :footer="$parent.$parent.footer"
|
|
42
|
+
:field="$parent.$parent.getfield" :header="$parent.$parent.other"
|
|
43
|
+
sqlurl="api/af-revenue/logic/openapi/exportfile" sql-name="manage_getReportDataQuery" template-name='结算查询导出'
|
|
44
|
+
:choose-col="true"></export-excel>
|
|
45
|
+
<div style="float: right" class="button_spacing"
|
|
46
|
+
:class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
|
|
47
|
+
@click="$parent.$parent.hidden()"></div>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<div class="row" v-show="$parent.$parent.criteriaShow">
|
|
53
|
+
<div class="col-sm-2 form-group">
|
|
54
|
+
<label class="font_normal_body">表 号</label>
|
|
55
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
|
|
56
|
+
condition="f_meternumber like '%{}%'" placeholder='表号'>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="col-sm-2 form-group">
|
|
59
|
+
<label class="font_normal_body"> 小区 </label>
|
|
60
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_residential_area"
|
|
61
|
+
condition="f_residential_area like '%{}%'" placeholder='小区'>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="col-sm-2 form-group">
|
|
64
|
+
<label class="font_normal_body">气表品牌</label>
|
|
65
|
+
<v-select
|
|
66
|
+
placeholder='气表品牌'
|
|
67
|
+
:value.sync="model.f_meter_brand"
|
|
68
|
+
v-model="model.f_meter_brand"
|
|
69
|
+
:options='$parent.$parent.meterbrands'
|
|
70
|
+
close-on-select
|
|
71
|
+
condition="f_meter_brand='{}'">
|
|
72
|
+
</v-select>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="col-sm-2 form-group" >
|
|
75
|
+
<label class="font_normal_body">气表型号</label>
|
|
76
|
+
<v-select
|
|
77
|
+
placeholder='气表型号'
|
|
78
|
+
:value.sync="model.f_meter_style"
|
|
79
|
+
v-model="model.f_meter_style"
|
|
80
|
+
:options='$parent.$parent.metertypes'
|
|
81
|
+
close-on-select
|
|
82
|
+
condition="f_meter_style='{}'">
|
|
83
|
+
</v-select>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="col-sm-2 form-group">
|
|
86
|
+
<label for="startDate" class="font_normal_body">插入时间</label>
|
|
87
|
+
<datepicker id="startDate" placeholder="插入时间" style="width:60%"
|
|
88
|
+
v-model="model.startDate"
|
|
89
|
+
:value.sync="model.startDate"
|
|
90
|
+
:format="'yyyy-MM-dd HH:mm:ss'"
|
|
91
|
+
:show-reset-button="true"
|
|
92
|
+
condition="f_insert_date >= '{}'">
|
|
93
|
+
</datepicker>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="col-sm-2 form-group">
|
|
96
|
+
<label for="endDate" class="font_normal_body"> 至 </label>
|
|
97
|
+
<datepicker id="endDate" placeholder="插入时间" style="width:60%"
|
|
98
|
+
v-model="model.endDate"
|
|
99
|
+
:value.sync="model.endDate"
|
|
100
|
+
:format="'yyyy-MM-dd HH:mm:ss'"
|
|
101
|
+
:show-reset-button="true"
|
|
102
|
+
condition="f_insert_date <= '{}'">
|
|
103
|
+
</datepicker>
|
|
104
|
+
</div>
|
|
105
|
+
<div class="col-sm-2 form-group">
|
|
106
|
+
<label class="font_normal_body">客户类型</label>
|
|
107
|
+
<v-select :value.sync="model.f_user_type"
|
|
108
|
+
@change="$parent.$parent.userTypeChange()"
|
|
109
|
+
:options='$parent.$parent.usertypes' placeholder='请选择' v-model="model.f_user_type"
|
|
110
|
+
condition="f_user_type = '{}'"
|
|
111
|
+
close-on-select></v-select>
|
|
112
|
+
</div>
|
|
113
|
+
<div class="col-sm-2 form-group">
|
|
114
|
+
<label class="font_normal_body">用气性质</label>
|
|
115
|
+
<v-select :value.sync="model.f_gasproperties" v-model="model.f_gasproperties"
|
|
116
|
+
:options='$parent.$parent.gasproperties' placeholder='请选择'
|
|
117
|
+
condition="f_gasproperties = '{}'"
|
|
118
|
+
close-on-select></v-select>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="col-sm-2 form-group">
|
|
121
|
+
<label class="font_normal_body">用气类型</label>
|
|
122
|
+
<v-select :value.sync="model.f_user_nature" v-model="model.f_user_nature"
|
|
123
|
+
:options='$parent.$parent.usernatures' placeholder='请选择'
|
|
124
|
+
condition="f_user_nature = '{}'"
|
|
125
|
+
close-on-select></v-select>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="col-sm-2 form-group">
|
|
128
|
+
<label class="font_normal_body">用户等级</label>
|
|
129
|
+
<v-select :value.sync="model.f_user_level"
|
|
130
|
+
:options='$parent.$parent.usergrade'
|
|
131
|
+
placeholder='请选择' v-model="model.f_user_level"
|
|
132
|
+
condition="f_user_level = '{}'"
|
|
133
|
+
close-on-select></v-select>
|
|
134
|
+
</div>
|
|
135
|
+
<div class="col-sm-2 form-group">
|
|
136
|
+
<label class="font_normal_body" >档案抄表员</label>
|
|
137
|
+
<v-select :value.sync="model.f_dainputtores"
|
|
138
|
+
v-model="model.f_dainputtores"
|
|
139
|
+
:options='$parent.$parent.dainputtores' placeholder='请选择'
|
|
140
|
+
condition="f_inputtor = '{}'"
|
|
141
|
+
close-on-select>
|
|
142
|
+
</v-select>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
|
|
146
|
+
</div>
|
|
147
|
+
</criteria>
|
|
148
|
+
|
|
149
|
+
<data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
|
|
150
|
+
<template partial='head'>
|
|
151
|
+
<tr>
|
|
152
|
+
<th v-for="row in $parent.$parent.$parent.headData">
|
|
153
|
+
<nobr>{{row}}</nobr>
|
|
154
|
+
</th>
|
|
155
|
+
</tr>
|
|
156
|
+
</template>
|
|
157
|
+
<template partial='body'>
|
|
158
|
+
<tr v-for="row in $parent.$parent.$parent.model.rows">
|
|
159
|
+
<td style="text-align: center;" v-for="item in $parent.$parent.$parent.config.fieldMapping">
|
|
160
|
+
<nobr v-if="item == 'f_lowlithiumbattery'">{{row[item] == 1 ? '是' : '否'}}</nobr>
|
|
161
|
+
<nobr v-if="item == 'f_magneticinterference'">{{row[item] == 1 ? '异常' : '正常'}}</nobr>
|
|
162
|
+
<nobr v-if="item != 'f_magneticinterference' && item != 'f_lowlithiumbattery'">{{row[item]}}</nobr>
|
|
163
|
+
</td>
|
|
164
|
+
</tr>
|
|
165
|
+
</template>
|
|
166
|
+
<template partial='foot'></template>
|
|
167
|
+
</data-grid>
|
|
168
|
+
</criteria-paged>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</template>
|
|
173
|
+
|
|
174
|
+
<script>
|
|
175
|
+
import {HttpResetClass, PagedList} from 'vue-client'
|
|
176
|
+
import tableConfig from './config/tableConfig'
|
|
177
|
+
import exportConfig from './config/exportConfig'
|
|
178
|
+
import plugin from 'system-clients/src/plugins/GetLoginInfoService'
|
|
179
|
+
|
|
180
|
+
let readySomething = async function (self) {
|
|
181
|
+
await self.$MagLoadParams.loadParam()
|
|
182
|
+
self.initParams()
|
|
183
|
+
self.sumsmodel = self.$refs.paged.$refs.grid.model.sums;
|
|
184
|
+
}
|
|
185
|
+
export default {
|
|
186
|
+
title: '上报数据查询',
|
|
187
|
+
data() {
|
|
188
|
+
return {
|
|
189
|
+
other:[],
|
|
190
|
+
sumsmodel: {},
|
|
191
|
+
footer:[],
|
|
192
|
+
model: new PagedList('api/af-revenue/sql/manage_getReportDataQuery', 20, {}),
|
|
193
|
+
criteriaShow: false,
|
|
194
|
+
config: {
|
|
195
|
+
fieldMapping: {
|
|
196
|
+
f_userinfo_code: '客户编号',
|
|
197
|
+
f_user_name: '客户名称'
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
WarningType: [
|
|
201
|
+
{label: '全部', value: ''}
|
|
202
|
+
],
|
|
203
|
+
Warningstyles: [
|
|
204
|
+
{label: '全部', value: ''}
|
|
205
|
+
],
|
|
206
|
+
styles:false,
|
|
207
|
+
headData: [],
|
|
208
|
+
bodyData: [],
|
|
209
|
+
gasproperties:[],
|
|
210
|
+
dainputtores:[{label: '全部',value: ''}],
|
|
211
|
+
orgCondtionStr: " and f_filialeid in (" + this.$login.f.orgid+")",
|
|
212
|
+
resshow:['company'],
|
|
213
|
+
org:[this.$login.f.orgid],
|
|
214
|
+
meterbrands:[]
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
created () {
|
|
218
|
+
this.config.fieldMapping=tableConfig.ReportDataQuery
|
|
219
|
+
console.log("========================")
|
|
220
|
+
console.log(this.config.fieldMapping)
|
|
221
|
+
var item="用户编号"
|
|
222
|
+
console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
|
|
223
|
+
console.log(this.config.fieldMapping[item])
|
|
224
|
+
this.headData=Object.keys(this.config.fieldMapping)
|
|
225
|
+
// for(var i=0;i<this.config.fieldMapping;i++){
|
|
226
|
+
// this.headData.push(this.config.fieldMapping[i])
|
|
227
|
+
// }
|
|
228
|
+
|
|
229
|
+
},
|
|
230
|
+
ready() {
|
|
231
|
+
this.hqdainputtores()
|
|
232
|
+
this.$refs.paged.$refs.cri.model.startDate = this.$login.toStandardDateString() + ' 00:00:00'
|
|
233
|
+
this.$refs.paged.$refs.cri.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
|
|
234
|
+
readySomething(this).then(() => {
|
|
235
|
+
this.$emit('ready')
|
|
236
|
+
}).catch((error) => {
|
|
237
|
+
this.$emit('error', error)
|
|
238
|
+
})
|
|
239
|
+
},
|
|
240
|
+
methods: {
|
|
241
|
+
async hqdainputtores() {
|
|
242
|
+
let param = {
|
|
243
|
+
items: 'DISTINCT f_inputtor',
|
|
244
|
+
tablename: 't_userfiles',
|
|
245
|
+
condition: ` f_inputtor is NOT null`,
|
|
246
|
+
}
|
|
247
|
+
let getDainputtores = await new HttpResetClass().load("POST",'api/af-revenue/sql/singleTableParam', {data: param}, {
|
|
248
|
+
resolveMsg: null,
|
|
249
|
+
rejectMsg: null
|
|
250
|
+
});
|
|
251
|
+
if (getDainputtores.data.length > 0) {
|
|
252
|
+
let rs = [];
|
|
253
|
+
getDainputtores.data.forEach((item) => {
|
|
254
|
+
if (item.f_inputtor.length > 0) {
|
|
255
|
+
let temp = {
|
|
256
|
+
label: item.f_inputtor,
|
|
257
|
+
value: item.f_inputtor
|
|
258
|
+
};
|
|
259
|
+
rs.push(temp);
|
|
260
|
+
}
|
|
261
|
+
})
|
|
262
|
+
this.dainputtores = [{label: '全部', value: ''}, ...rs];
|
|
263
|
+
} else {
|
|
264
|
+
this.dainputtores = [{label: '全部', value: ''}];
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
userTypeChange () {
|
|
268
|
+
this.gasproperties=[]
|
|
269
|
+
if(this.$refs.paged.$refs.cri.model !==null) {
|
|
270
|
+
this.$refs.paged.$refs.cri.model.f_gasproperties=''
|
|
271
|
+
this.gasproperties = this.$appdata.getParam(this.$refs.paged.$refs.cri.model.f_user_type[0])
|
|
272
|
+
}
|
|
273
|
+
else{
|
|
274
|
+
this.gasproperties =[{label: '全部', value: ''}]
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
initParams() {
|
|
278
|
+
// 初始化气表品牌
|
|
279
|
+
let brandArr = []
|
|
280
|
+
this.$MagGetSaleParam.getGasbrand().forEach((item) => {
|
|
281
|
+
let temp = {}
|
|
282
|
+
if(item.value.f_meter_type==='物联网表'){
|
|
283
|
+
temp.label = item.label
|
|
284
|
+
temp.value = item.value.f_meter_brand
|
|
285
|
+
brandArr.push(temp )
|
|
286
|
+
}
|
|
287
|
+
})
|
|
288
|
+
this.meterbrands = [{label: '全部', value: ''}, ...brandArr]
|
|
289
|
+
//初始化气表价格
|
|
290
|
+
this.prices = this.$MagGetSaleParam.getPrices();
|
|
291
|
+
},
|
|
292
|
+
showMeterStyle() {
|
|
293
|
+
this.styles = true
|
|
294
|
+
},
|
|
295
|
+
search() {
|
|
296
|
+
this.$refs.paged.$refs.cri.search()
|
|
297
|
+
},
|
|
298
|
+
async selfSearch(args) {
|
|
299
|
+
args.condition = `${args.condition}` + this.orgCondtionStr
|
|
300
|
+
await this.model.search(args.condition, args.model)
|
|
301
|
+
// 查询到数据进行处理
|
|
302
|
+
// if (this.model.rows.length > 0) {
|
|
303
|
+
// this.bodyData = Object.keys(this.model.rows[0])
|
|
304
|
+
// }
|
|
305
|
+
},
|
|
306
|
+
getorg(obj) {
|
|
307
|
+
if (obj.resids.length>0) {
|
|
308
|
+
this.orgCondtionStr = " and f_filialeid in " + plugin.convertToIn(obj.resids)
|
|
309
|
+
}else
|
|
310
|
+
{
|
|
311
|
+
this.orgCondtionStr = " and f_filialeid = " + this.$login.f.orgid
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
// getorg(obj) {
|
|
315
|
+
// // if(plugins.convertToIn(obj)!==null&&plugins.convertToIn(obj)!==''){
|
|
316
|
+
// // this.orgCondtionStr = " and f_filialeid in " + plugins.convertToIn(obj)
|
|
317
|
+
// // }else{
|
|
318
|
+
// // this.orgCondtionStr = " and f_filialeid = " + this.$login.f.orgid
|
|
319
|
+
// // }
|
|
320
|
+
// // this.orgname = obj.res
|
|
321
|
+
// },
|
|
322
|
+
clear() {
|
|
323
|
+
Object.keys(this.$refs.paged.$refs.cri.model).forEach((key) => {
|
|
324
|
+
this.$refs.paged.$refs.cri.model[key] = []
|
|
325
|
+
})
|
|
326
|
+
},
|
|
327
|
+
hidden() {
|
|
328
|
+
this.criteriaShow = !this.criteriaShow
|
|
329
|
+
},
|
|
330
|
+
|
|
331
|
+
// getRes(obj) {
|
|
332
|
+
// this.orgCondtionStr = obj
|
|
333
|
+
// }
|
|
334
|
+
getotherfooter() {
|
|
335
|
+
this.other = [];
|
|
336
|
+
this.footer = [];
|
|
337
|
+
let otherInData = [];
|
|
338
|
+
let secondLine = [
|
|
339
|
+
`开始时间: ${this.$refs.paged.$refs.cri.model.startDate}`,
|
|
340
|
+
`结束时间: ${this.$refs.paged.$refs.cri.model.startDate}`
|
|
341
|
+
];
|
|
342
|
+
otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`);
|
|
343
|
+
let footerData = []
|
|
344
|
+
|
|
345
|
+
this.footer.push(footerData);
|
|
346
|
+
this.other.push(otherInData);
|
|
347
|
+
this.other.push(secondLine);
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
watch: {
|
|
351
|
+
sumsmodel:{
|
|
352
|
+
handler: function(val) {
|
|
353
|
+
this.getotherfooter();
|
|
354
|
+
},
|
|
355
|
+
deep: true
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
computed: {
|
|
359
|
+
metertypes() {
|
|
360
|
+
return [{label: ' 全部 ', value: ''}, ...this.$appdata.getParam('气表类型')]
|
|
361
|
+
},
|
|
362
|
+
usernatures(){
|
|
363
|
+
return [{label: '全部', value: ''}, ...this.$appdata.getParam('用气类型')]
|
|
364
|
+
},
|
|
365
|
+
usertypes() {
|
|
366
|
+
return [{label: ' 全部 ', value: ''}, ...this.$appdata.getParam('用户类型')]
|
|
367
|
+
},
|
|
368
|
+
usergrade(){
|
|
369
|
+
return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')]
|
|
370
|
+
},
|
|
371
|
+
getCondition() {
|
|
372
|
+
return {
|
|
373
|
+
startDate: this.$refs.paged.$refs.cri.model.startDate,
|
|
374
|
+
endDate: this.$refs.paged.$refs.cri.model.endDate,
|
|
375
|
+
condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
getfield() {
|
|
379
|
+
return exportConfig.ReportDataConfig
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
</script>
|
|
@@ -1575,6 +1575,57 @@ export default {
|
|
|
1575
1575
|
'f_wosi_lng': '我司',
|
|
1576
1576
|
'f_yinzhen_lng': '引镇',
|
|
1577
1577
|
'finaltotal': '一日'
|
|
1578
|
+
},
|
|
1579
|
+
// 上报数据
|
|
1580
|
+
ReportDataConfig: {
|
|
1581
|
+
'f_userinfo_code': '用户编号',
|
|
1582
|
+
'f_user_name': '用户名称',
|
|
1583
|
+
'f_address': '用户地址',
|
|
1584
|
+
'f_residential_area': '小区',
|
|
1585
|
+
'f_user_type': '用户类型',
|
|
1586
|
+
'f_user_nature': '用气类型',
|
|
1587
|
+
'f_gasproperties': '用气性质',
|
|
1588
|
+
'f_user_level': '用户等级',
|
|
1589
|
+
'f_inputtor': '档案抄表员',
|
|
1590
|
+
'f_meternumber': '表号',
|
|
1591
|
+
'f_tablebase': '本次抄表底数',
|
|
1592
|
+
'f_last_tablebase': '上次抄表底数',
|
|
1593
|
+
'f_jval': '表计剩余余额',
|
|
1594
|
+
'f_hand_date': '抄表日期',
|
|
1595
|
+
|
|
1596
|
+
'f_last_hand_date': '上次抄表日期',
|
|
1597
|
+
'f_gas_date': '开户日期',
|
|
1598
|
+
'f_software_version': '软件版本号',
|
|
1599
|
+
'f_table_msg': '表状态信息',
|
|
1600
|
+
'f_last_meter_state_msg': '上次表状态信息',
|
|
1601
|
+
|
|
1602
|
+
'f_insert_date': '插入日期',
|
|
1603
|
+
'f_last_insertdate': '上次插入日期',
|
|
1604
|
+
'f_whether_clear': '是否结算',
|
|
1605
|
+
'f_super_gas': '超用气量',
|
|
1606
|
+
'f_electricity': '电量等级',
|
|
1607
|
+
|
|
1608
|
+
'f_times': '购气次数',
|
|
1609
|
+
'f_price': '单价',
|
|
1610
|
+
'f_signal': '信号强度',
|
|
1611
|
+
'f_snr': '信噪比',
|
|
1612
|
+
'f_batterylevel': '电压',
|
|
1613
|
+
|
|
1614
|
+
'f_networkshutvalve': '阀门强制状态',
|
|
1615
|
+
'f_valvestate': '阀门状态',
|
|
1616
|
+
'f_wmprepaytype': '计量类型',
|
|
1617
|
+
'f_upload_type': '上报类型',
|
|
1618
|
+
'f_moneystate': '金额状态',
|
|
1619
|
+
|
|
1620
|
+
'f_lowlithiumbattery': '电压状态',
|
|
1621
|
+
'f_magneticinterference': '磁干扰异常',
|
|
1622
|
+
'f_meterbalanceamt': '表内剩余金额',
|
|
1623
|
+
'f_meterdebitamt': '表内累计充值金额',
|
|
1624
|
+
'f_compensatestate': '补偿状态',
|
|
1625
|
+
'f_meter_brand': '气表品牌',
|
|
1626
|
+
'f_meter_style': '气表型号',
|
|
1627
|
+
'f_orgname': '分公司'
|
|
1628
|
+
|
|
1578
1629
|
}
|
|
1579
1630
|
|
|
1580
1631
|
}
|
|
@@ -1,48 +1,61 @@
|
|
|
1
1
|
export default{
|
|
2
|
-
|
|
3
|
-
ReportDataQuery:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
2
|
+
// 查询页面的字段名和中文对应
|
|
3
|
+
ReportDataQuery: {
|
|
4
|
+
'用户编号': 'f_userinfo_code',
|
|
5
|
+
'用户名称': 'f_user_name',
|
|
6
|
+
'用户地址': 'f_address',
|
|
7
|
+
'小区': 'f_residential_area',
|
|
8
|
+
'用户类型': 'f_user_type',
|
|
9
|
+
'用气类型': 'f_user_nature',
|
|
10
|
+
'用气性质': 'f_gasproperties',
|
|
11
|
+
'用户等级': 'f_user_level',
|
|
12
|
+
'档案抄表员': 'f_inputtor',
|
|
13
|
+
'表号': 'f_meternumber',
|
|
14
|
+
'本次抄表底数': 'f_tablebase',
|
|
15
|
+
'上次抄表底数': 'f_last_tablebase',
|
|
16
|
+
'表上余额': 'f_jval',
|
|
17
|
+
'抄表日期': 'f_hand_date',
|
|
18
|
+
|
|
19
|
+
'上次抄表日期': 'f_last_hand_date',
|
|
20
|
+
'开户日期': 'f_gas_date',
|
|
21
|
+
'软件版本号': 'f_software_version',
|
|
22
|
+
'表状态信息': 'f_table_msg',
|
|
23
|
+
'上次表状态信息': 'f_last_meter_state_msg',
|
|
24
|
+
|
|
25
|
+
'插入日期': 'f_insert_date',
|
|
26
|
+
'上次插入日期': 'f_last_insertdate',
|
|
27
|
+
'是否结算': 'f_whether_clear',
|
|
28
|
+
'超用气量': 'f_super_gas',
|
|
29
|
+
'电量等级': 'f_electricity',
|
|
30
|
+
|
|
31
|
+
'购气次数': 'f_times',
|
|
32
|
+
'单价': 'f_price',
|
|
33
|
+
'信号强度': 'f_signal',
|
|
34
|
+
'信噪比': 'f_snr',
|
|
35
|
+
'电压': 'f_batterylevel',
|
|
36
|
+
|
|
37
|
+
'阀门强制状态': 'f_networkshutvalve',
|
|
38
|
+
'阀门状态': 'f_valvestate',
|
|
39
|
+
'计量类型': 'f_wmprepaytype',
|
|
40
|
+
'上报类型': 'f_upload_type',
|
|
41
|
+
'金额状态': 'f_moneystate',
|
|
42
|
+
|
|
43
|
+
'增加工况瞬时': 'operatingModeFlow',
|
|
44
|
+
'标况瞬时': 'standardConditionFlow',
|
|
45
|
+
'开盖状态': 'f_SplitAlarm',
|
|
46
|
+
'液晶状态': 'f_XTIpllStopFlag',
|
|
47
|
+
'声速': 'soundVelocity',
|
|
48
|
+
|
|
49
|
+
'外电低电': 'f_lowlithiumbattery',
|
|
50
|
+
'磁干扰异常': 'f_magneticinterference',
|
|
51
|
+
'表内剩余金额': 'f_meterbalanceamt',
|
|
52
|
+
'表内累计充值金额': 'f_meterdebitamt',
|
|
53
|
+
'补偿状态': 'f_compensatestate',
|
|
54
|
+
'气表品牌': 'f_meter_brand',
|
|
55
|
+
'气表型号': 'f_meter_style',
|
|
56
|
+
'分公司': 'f_orgname',
|
|
57
|
+
'部门': 'f_depname'
|
|
58
|
+
|
|
59
|
+
}
|
|
47
60
|
|
|
48
61
|
}
|
|
@@ -6,4 +6,6 @@ export default function () {
|
|
|
6
6
|
Vue.component('new-webmeter-user-gas-all', (resolve) => { require(['./UserGasAll'], resolve) })
|
|
7
7
|
// 上报统计分析--抄表分析
|
|
8
8
|
Vue.component('user-gas-list', (resolve) => { require(['./UserGasList'], resolve) })
|
|
9
|
+
// 物联网表结算查询
|
|
10
|
+
Vue.component('report-data-query', (resolve) => { require(['./ReportDataQuery'], resolve) })
|
|
9
11
|
}
|