safecheck-client 3.0.34-65 → 3.0.34-66

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "safecheck-client",
3
3
  "//": "主分支版本别乱升,测试包的版本直接发包(建议使用1.XX.XX-XXX格式作为测试包,不要频繁升级第三位版本号),别提交版本号。切了分支切记把主分支版本升了,保证主分支始终是最高版本!!!!!",
4
- "version": "3.0.34-65",
4
+ "version": "3.0.34-66",
5
5
  "description": "安检模块 前端组件",
6
6
  "author": "丁新 <417755458@qq.com>",
7
7
  "license": "ISC",
@@ -0,0 +1,502 @@
1
+ <style scoped>
2
+ .bg {
3
+ background-color: blue;
4
+ height: 1px;
5
+ border: 0;
6
+ }
7
+
8
+ .app-row {
9
+ background-color: white;
10
+ padding: 10px 10px 0 10px;
11
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
12
+ }
13
+
14
+ .search_input {
15
+ border: 0;
16
+ outline: none;
17
+ }
18
+
19
+ .font {
20
+ font: 15px PingFang-SC-Medium;
21
+ color: #666666;
22
+ }
23
+
24
+ .input-font {
25
+ font: 15px PingFang-SC-Medium;
26
+ color: #333333;
27
+ }
28
+
29
+ .btn-font {
30
+ font: 600 16px PingFang-SC-Bold;
31
+ color: #499EDF;
32
+ }
33
+
34
+ .btn-color {
35
+ background-color: #FFFFFF;
36
+ border-radius: 10px;
37
+ border: 1px solid #499EDF;
38
+ }
39
+
40
+ .app-text {
41
+ font-size: 12px;
42
+ }
43
+
44
+ .panel-self {
45
+ border-radius: 10px;
46
+ border: 1px solid #499EDF;
47
+ background-color: #F8F8F8;
48
+ }
49
+
50
+ .yybtn-color {
51
+ background-color: #499edf;
52
+ border-radius: 4px;
53
+ border: 1px solid #499EDF;
54
+ color: #FFFFFF;
55
+ font: 14px PingFang-SC-Bold;
56
+ }
57
+
58
+ .qxbtn-color {
59
+ background-color: #FFFFFF;
60
+ border-radius: 4px;
61
+ color: #499edf;
62
+ font: 14px PingFang-SC-Bold;
63
+ border: 1px solid #499EDF;
64
+ }
65
+
66
+ .button_shrink_top {
67
+ width: 35px;
68
+ height: 35px;
69
+ background-size: 100%;
70
+ background-image: url("../../../static/newStyle/stretch_top.png")
71
+ }
72
+
73
+ .button_shrink_bottom {
74
+ width: 35px;
75
+ height: 35px;
76
+ background-size: 100%;
77
+ background-image: url("../../../static/newStyle/stretch_bottom.png")
78
+ }
79
+
80
+ .button_shrink_left {
81
+ width: 35px;
82
+ height: 35px;
83
+ background-size: 100%;
84
+ background-image: url("../../../static/newStyle/stretch_left.png")
85
+ }
86
+
87
+ .button_shrink_right {
88
+ width: 35px;
89
+ height: 35px;
90
+ background-size: 100%;
91
+ background-image: url("../../../static/newStyle/stretch_right.png")
92
+ }
93
+ </style>
94
+ <template>
95
+ <div style="height: auto;width: 100%">
96
+ <criteria-paged :model="model" v-ref:paged :pager="false">
97
+ <list :model="model" partial='list'>
98
+ <div partial>
99
+ <div class="auto app-text" style="margin-top: 5px;">
100
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
101
+ <div class="panel-body panel-self">
102
+ <div class="col-xs-12">
103
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>用户编号:</b></p>
104
+ <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{ row.f_userinfo_code }}</p>
105
+ </div>
106
+ <div class="col-xs-12">
107
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>用户名称:</b></p>
108
+ <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{ row.f_user_name }}</p>
109
+ </div>
110
+ <div class="col-xs-12">
111
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>用户电话:</b></p>
112
+ <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_user_phone }}</p>
113
+ </div>
114
+ <div class="col-xs-12">
115
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>安检时间:</b></p>
116
+ <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_create_time }}</p>
117
+ </div>
118
+ <div class="col-xs-12">
119
+ <p class="panel-title text-left font" style="width: 21%;float: left"><b>用户地址:</b></p>
120
+ <p class="panel-title text-left input-font" style="width: 79%">{{ row.f_address }}</p>
121
+ </div>
122
+ <div class="col-xs-12">
123
+ <p class="panel-title text-left font" style="width: 21%;float: left"><b>所属安检:</b></p>
124
+ <p class="panel-title text-left input-font" style="width: 79%">{{ row.f_checker_name }}</p>
125
+ </div>
126
+ <div class="col-xs-6">
127
+ <p class="panel-title col-xs-5 text-left font"><b>检&ensp;查&ensp;项:</b></p>
128
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_device_type }}</p>
129
+ </div>
130
+ <div class="col-xs-6">
131
+ <p class="panel-title col-xs-5 text-left font"><b>隐&ensp;患&ensp;项:</b></p>
132
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_item_name }}</p>
133
+ </div>
134
+ <div class="col-xs-12">
135
+ <p class="panel-title col-xs-5 text-left font"><b>备注:</b></p>
136
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_comments }}</p>
137
+ </div>
138
+ <div class="col-xs-12">
139
+ <p class="panel-title col-xs-5 text-left font"><b>隐患原因:</b></p>
140
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_item_value }}</p>
141
+ </div>
142
+
143
+ <div class="col-xs-12">
144
+ <button type="button" name="button" class="btn btn-primary"
145
+ style="background-color:#499edf;float: right"
146
+ @click="$parent.$parent.$parent.openshowModal(row)">查看
147
+ </button>
148
+ <button type="button" name="button" class="btn btn-primary"
149
+ style="background-color:#499edf;float: right;margin-right:10px;"
150
+ @click="$parent.$parent.$parent.openshowModal1(row)">处理
151
+ </button>
152
+ <!--<button type="button" class="btn btn-default" @click="$parent.$parent.$parent.ceshi">确认2</button>-->
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ </list>
159
+ </criteria-paged>
160
+ </div>
161
+ <modal :show.sync="showModal">
162
+ <div slot="modal-header" class="modal-header">
163
+ <h4 class="modal-title">
164
+ 隐患照片
165
+ </h4>
166
+ </div>
167
+ <div slot="modal-body" class="modal-body">
168
+ <div class="from-group">
169
+ <div class="row">
170
+ <div class="col-md-6">
171
+ <img-self v-if="row.f_path" :src="`${this.$androidUtil.getProxyUrl()}/rs/image/file/`+row.f_path" width="300" height="400"></img-self>
172
+ <img-self v-if="row.f_p1_path" :src="`${this.$androidUtil.getProxyUrl()}/rs/image/file/`+row.f_p1_path" width="300" height="400"></img-self>
173
+ <img-self v-if="row.f_p2_path" :src="`${this.$androidUtil.getProxyUrl()}/rs/image/file/`+row.f_p2_path" width="300" height="400"></img-self>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ <div slot="modal-footer" class="modal-footer">
179
+ <button type="button" class="btn btn-default" @click="closeshowModal">确认</button>
180
+ </div>
181
+ </modal>
182
+ <modal :show.sync="showModal1">
183
+ <div slot="modal-header" class="modal-header">
184
+ <h4 class="modal-title">
185
+ 处理结果
186
+ </h4>
187
+ </div>
188
+ <div slot="modal-body" class="modal-body">
189
+ <div class="row" style="margin-bottom: 10px">
190
+ <p class="panel-title col-xs-3 text-left font"><b>隐&ensp;患&ensp;项:</b></p>
191
+ <p class="panel-title col-xs-9 text-left input-font">{{ deal.result.f_item_name }}</p>
192
+ </div>
193
+ <div class="row" style="margin-bottom: 10px">
194
+ <p class="panel-title col-xs-3 text-left font"><b>隐患原因:</b></p>
195
+ <p class="panel-title col-xs-9 text-left input-font">{{ deal.result.f_item_value }}</p>
196
+ </div>
197
+ <div class="form-group col-sm-12">
198
+ <div class="auto">
199
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
200
+ <div class="panel-body panel-self"
201
+ style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
202
+ <img-self :src="deal.f_deal_path" alt="整改照片" :width="140" :height="170" capture="camera"
203
+ type="file"></img-self>
204
+ <div class="row text-right div-photo" style="height: 50px;margin-top: -30px">
205
+ <img src="../../assets/remove.png" @click="delfile('f_deal_path', deal.f_deal_path)"></img>
206
+ <button type="button" name="button" class="btn btn-primary btn-photo"
207
+ @click="takePic('f_deal_path','整改照片')">拍照
208
+ </button>
209
+ </div>
210
+ </div>
211
+ <div class="panel-body panel-self"
212
+ style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
213
+ <img-self :src="deal.f_other_dealpath1" alt="整改照片" :width="140" :height="170" capture="camera"
214
+ type="file"></img-self>
215
+ <div class="row text-right div-photo" style="height: 50px;margin-top: -30px">
216
+ <img src="../../assets/remove.png" @click="delfile('f_other_dealpath1', deal.f_other_dealpath1)"></img>
217
+ <button type="button" name="button" class="btn btn-primary btn-photo"
218
+ @click="takePic('f_other_dealpath1','整改照片')">拍照
219
+ </button>
220
+ </div>
221
+ </div>
222
+ <div class="panel-body panel-self"
223
+ style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
224
+ <img-self :src="deal.f_other_dealpath2" alt="整改照片" :width="140" :height="170" capture="camera"
225
+ type="file"></img-self>
226
+ <div class="row text-right div-photo" style="height: 50px;margin-top: -30px">
227
+ <img src="../../assets/remove.png" @click="delfile('f_other_dealpath2', deal.f_other_dealpath2)"></img>
228
+ <button type="button" name="button" class="btn btn-primary btn-photo"
229
+ @click="takePic('f_other_dealpath2','整改照片')">拍照
230
+ </button>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ </div>
235
+ </div>
236
+ <div class="form-group col-sm-12" v-if="isNeedDealSign">
237
+ <p class="panel-title text-left font" style="text-align: center">用户签名:</p>
238
+ <div class="auto">
239
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
240
+ <div class="panel-body panel-self"
241
+ style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
242
+ <img :src="deal.f_dealsign_path" :width="200" :height="150"/>
243
+ <div class="row text-right div-photo" style="height: 50px;margin-top: 60px">
244
+ <button type="button" name="button" class="btn btn-primary btn-photo" @click="sign">签名</button>
245
+ </div>
246
+ </div>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ <div class="row">
251
+ <div class="col-xs-2">
252
+ <p class="panel-title text-left font" style="text-align: center">处理结果</p>
253
+ </div>
254
+ <div class="col-xs-9">
255
+ <textarea class="input-font " v-model=deal.f_deal_remark style="width: 100%"></textarea>
256
+ </div>
257
+ </div>
258
+ <div v-if="isCancelLimitGas" style="display: flex;align-items: end;height: 30px;gap: 10px;padding-left: 16px;">
259
+ <input type="checkbox" v-model="deletebacklistisselect"/>
260
+ <div style="height: 18px">取消限制该用户购气</div>
261
+ </div>
262
+ </div>
263
+ <div slot="modal-footer" class="modal-footer">
264
+ <button type="button" class="btn btn-default" @click="commitDealDefect">确认</button>
265
+ <button type="button" class="btn btn-default" @click="closeshowModal1">取消</button>
266
+ </div>
267
+ </modal>
268
+ </template>
269
+
270
+ <script>
271
+ import Vue from 'vue'
272
+ import {HttpResetClass, PagedList} from 'vue-client'
273
+ import * as Util from '../Util'
274
+
275
+ export default {
276
+ props:['row'],
277
+ title: '无计划安检查询',
278
+ data() {
279
+ return {
280
+ row:{},
281
+ showModal: false,
282
+ showModal1: false,
283
+ showimg: '',
284
+ deal: {
285
+ result: {},
286
+ f_deal_path: '',
287
+ f_other_dealpath1: '',
288
+ f_other_dealpath2: '',
289
+ f_deal_remark: '',
290
+ f_dealsign_path: '', //签名
291
+ f_dealer: Vue.user.name,
292
+ f_dealer_id: Vue.user.id
293
+ },
294
+ user_types: [
295
+ {label: '请选择用户类型', value: ''},
296
+ {label: '民用', value: '民用'},
297
+ {label: '非民用', value: '非民用'},
298
+ ],
299
+ f_filialeids: '',
300
+ model: new PagedList(`${this.$androidUtil.getProxyUrl()}/rs/sql/AndroidDealWith`, 20, {
301
+ condition: 'this.condition',
302
+ f_filialeids: `'${Vue.user.orgid}'`,
303
+ f_checker_id: `'${Vue.user.id}'`
304
+ }),
305
+ criteriaShow: false,
306
+ isNeedDealSign: this.$appdata.getSingleValue('隐患处理是否需要签名') == 'true',
307
+ isCancelLimitGas: this.$appdata.getSingleValue('隐患处理-取消限制购气') == '是',
308
+ deletebacklistisselect: false
309
+ }
310
+ },
311
+ ready() {
312
+ debugger
313
+ this.selfSearch()
314
+ },
315
+ methods: {
316
+ async deletebacklist() {
317
+ ////tag)
318
+ let http = new HttpResetClass()
319
+ ////tag
320
+ let res1 = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/safe_singleTable_OrderBy`, {
321
+ data: {
322
+ items: "*",
323
+ tablename: "t_userinfo",
324
+ condition: `f_userinfo_code = ${this.deal.result.f_userinfo_code}`,
325
+ orderitem: "f_userinfo_code"
326
+ }
327
+ }, {resolveMsg: null, rejectMsg: null})
328
+ ////tag)
329
+ ////tag
330
+ let res2 = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/backlistOperate`, {
331
+ data: {
332
+ "f_operat_type": "取消拉黑",
333
+ "f_state": "有效",
334
+ "f_user_name": this.deal.result.f_user_name,
335
+ "f_comments": '',
336
+ "f_operator": Vue.user.name,
337
+ "f_operatorid": Vue.user.id,
338
+ "f_orgid": Vue.user.orgid,
339
+ "f_orgname": Vue.user.orgs,
340
+ "f_depid": Vue.user.depids,
341
+ "f_depname": Vue.user.deps,
342
+ "f_describe": `${Vue.user.name}对用户${this.deal.result.f_user_name}进行取消拉黑`,
343
+ "f_userinfo_id": {
344
+ "f_userinfo_id": res1.data[0].f_userinfo_id,
345
+ "f_user_state": "正常",
346
+ "version": res1.data[0].version
347
+ },
348
+ "f_limit_times":"",
349
+ "f_limit_value":""
350
+ }
351
+ }, {resolveMsg: null, rejectMsg: null})
352
+ },
353
+ // 签名回调
354
+ signCallback(prop, fileName) {
355
+ console.log("签名回调地址" + fileName)
356
+ // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
357
+ HostApp.__this__.$set('deal.f_dealsign_path', fileName)
358
+ HostApp.__callback__ = null
359
+ HostApp.__this__ = null
360
+ },
361
+ // 用户签名
362
+ sign() {
363
+ if (!this.deal.f_deal_path) {
364
+ this.$showMessage('请先拍摄处理后照片!!!')
365
+ return
366
+ }
367
+ this.delAudioFile('f_dealsign_path', this.deal.f_dealsign_path)
368
+ let prop = 'f_dealsign_path'
369
+ let idx = 'aofeng'
370
+ let fileName
371
+ if (!this.deal.f_dealsign_path) {
372
+ fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
373
+ } else {
374
+ fileName = Util.getFileName(this.deal.f_dealsign_path)
375
+ }
376
+ HostApp.__callback__ = this.signCallback
377
+ HostApp.__this__ = this
378
+ HostApp.getSignature({
379
+ file: fileName,
380
+ requestCode: 111,
381
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
382
+ })
383
+ },
384
+ delAudioFile(prop, fileName) {
385
+ if (!fileName)
386
+ return
387
+ else {
388
+ HostApp.delfile(fileName)
389
+ this.deal[prop] = null
390
+ }
391
+ },
392
+ commitDealDefect() {
393
+ //tag
394
+ //tag)
395
+ // if (!this.deal.f_deal_path) {
396
+ // this.$showMessage('处理后照片必须上传')
397
+ // return
398
+ // }
399
+ if (this.isNeedDealSign && !this.deal.f_dealsign_path) {
400
+ this.$showMessage('签名必须上传')
401
+ return
402
+ }
403
+ if (this.deletebacklistisselect){
404
+ this.deletebacklist()
405
+ }
406
+ this.deal.f_other_dealpath = this.deal.f_deal_path
407
+ HostApp.__this__ = this
408
+ HostApp.logicWithHint({
409
+ 'logic': 'safe_dealWithDefect', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
410
+ 'data': this.deal, 'backresult': 1
411
+ })
412
+ },
413
+ commitCallBack(jo) {
414
+ //tag
415
+ //tag)
416
+ if (jo.state == 'ok') {
417
+ let ress = JSON.parse(jo.result)
418
+ if (ress.code == 200) {
419
+ this.$showMessage(ress.msg)
420
+ this.closeshowModal1()
421
+ } else {
422
+ this.$showMessage(ress.msg)
423
+ }
424
+ } else {
425
+ this.$showMessage('本地服务调用失败')
426
+ }
427
+ },
428
+ delfile(prop, fileName) {
429
+ if (fileName == Vue.nopic)
430
+ return
431
+ else {
432
+ HostApp.delfile(fileName)
433
+ this.deal[prop] = Vue.nopic
434
+ }
435
+ },
436
+ openshowModal(val) {
437
+ this.row = val
438
+ this.showModal = true
439
+ },
440
+ closeshowModal() {
441
+ this.showimg = ''
442
+ this.showModal = false
443
+ },
444
+ openshowModal1(val) {
445
+ this.deal.result = val
446
+ //tag
447
+ //tag
448
+ this.deletebacklistisselect = false
449
+ this.showModal1 = true
450
+ },
451
+ closeshowModal1() {
452
+ this.deal = {
453
+ result: {},
454
+ f_deal_path: '',
455
+ f_other_dealpath1: '',
456
+ f_other_dealpath2: '',
457
+ f_deal_remark: '',
458
+ f_dealsign_path: '', //签名
459
+ f_dealer: Vue.user.name,
460
+ f_dealer_id: Vue.user.id
461
+ }
462
+ this.showModal1 = false
463
+ this.selfSearch()
464
+ },
465
+ cameraCallBack(prop, fileName) {
466
+ HostApp.__this__.$set( 'deal.'+prop+'', fileName)
467
+ HostApp.__callback__ = null
468
+ HostApp.__this__ = null
469
+ },
470
+ takePic(prop, title) {
471
+ HostApp.__callback__ = this.cameraCallBack
472
+ HostApp.__this__ = this
473
+ let fileName
474
+ if (!this.deal[prop] || this.deal[prop].includes("nopic.png")) {
475
+ fileName = Util.guid() + '-' + prop + '.jpg'
476
+ } else {
477
+ fileName = Util.getFileName(this.deal[prop])
478
+ }
479
+ //tag
480
+ //tag
481
+ HostApp._open_a_page({
482
+ type: 'boomerang',
483
+ page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
484
+ param: {
485
+ file: fileName,
486
+ requestCode: 111,
487
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
488
+ watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
489
+ }
490
+ })
491
+ },
492
+ selfSearch() {
493
+ let condition = `tcp.f_userinfo_code = '${this.row.f_userinfo_code}'`
494
+ this.model.search(condition)
495
+ },
496
+
497
+ hidden() {
498
+ this.criteriaShow = !this.criteriaShow
499
+ }
500
+ }
501
+ }
502
+ </script>
@@ -261,7 +261,7 @@
261
261
  <div class="col-xs-12">
262
262
  <button type="button" name="button" class="btn btn-primary"
263
263
  style="background-color:#499edf;float: right"
264
- @click="$parent.$parent.$parent.inspect(row)">处理</button>
264
+ @click="$parent.$parent.$parent.inspectRepair (row)">处理</button>
265
265
  </div>
266
266
  </div>
267
267
  </div>
@@ -368,6 +368,36 @@ export default {
368
368
  window.removeEventListener('popstate', this.fun, false)
369
369
  },
370
370
  methods: {
371
+ inspectRepair(row){
372
+ var _this = this
373
+ let http = new HttpResetClass()
374
+ http.load('POST',`${this.$androidUtil.getProxyUrl()}/rs/sql/AndroidDealWith`, {data: {condition: `tcp.f_userinfo_code = '${row.f_userinfo_code}'`,f_filialeids:Vue.user.orgid}},
375
+ {resolveMsg: null, rejectMsg: null}).then(resp=>{
376
+ if (resp.data.length>0){
377
+ this.$showMessage('该用户有隐患未处理,是否先处理隐患?', ['cancel', 'confirm']).then(
378
+ (response) => {
379
+ if (response === 'confirm') {
380
+ var pardate = {
381
+ _this:_this,
382
+ title:'隐患处理',
383
+ safe:true
384
+ }
385
+ _this.$dispatch('gotoson',pardate)
386
+ _this.$goto('android-defect-deal-before-safe', {row: row}, 'self', function () {
387
+ _this.inspect(row)
388
+ })
389
+ }else {
390
+ this.inspect(row)
391
+ }
392
+ }
393
+ )
394
+ }else {
395
+ this.inspect(row)
396
+ }
397
+ }).catch(()=>{
398
+ this.inspect(row)
399
+ })
400
+ },
371
401
  scan() {
372
402
  HostApp.__this__ = this,
373
403
  HostApp.scanCode({ callback: "javascript:HostApp.__this__.getCode();" })
@@ -0,0 +1,446 @@
1
+ <template>
2
+ <div class="auto">
3
+ <criteria-paged :model="model" v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='search' v-ref:cri>
5
+ <div partial>
6
+ <form>
7
+ <div class="row app-row">
8
+ <div class="col-xs-4">
9
+ <img src="../../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
10
+ <label class="font text-left">用户编号:</label>
11
+ </div>
12
+ <div class="col-xs-8" >
13
+ <input class="search_input input-font"
14
+ v-model=model.f_userinfo_code condition="f_userinfo_code = '{}'" placeholder="请输入用户编号" />
15
+ </div>
16
+ </div>
17
+ <div class="row app-row">
18
+ <div class="col-xs-4">
19
+ <img src="../../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
20
+ <label class="font text-left">表 &nbsp;&nbsp; &nbsp;&nbsp; 号:</label>
21
+ </div>
22
+ <div class="col-xs-8" >
23
+ <input class="search_input input-font"
24
+ v-model=model.f_meternumber condition="f_meternumber = '{}'" style="width: 70%" placeholder="请输入表号" />
25
+ <button type="button" name="button" class="btn btn-primary" style="width: 25%" @click="$parent.$parent.scan">扫码</button>
26
+ </div>
27
+ </div>
28
+ <div class="row app-row">
29
+ <div class="col-xs-4">
30
+ <img src="../../../assets/用户姓名.png" style="width: 20px;margin-bottom: 5px" alt="">
31
+ <label class="font text-left">用户名称:</label>
32
+ </div>
33
+ <div class="col-xs-8" >
34
+ <input class="search_input input-font" v-model="model.f_username" placeholder="请输入用户名称(可模糊查询)">
35
+ </div>
36
+ </div>
37
+ <div class="row app-row">
38
+ <div class="col-xs-4">
39
+ <img src="../../../assets/用户类型.png" style="width: 20px;margin-bottom: 5px" alt="">
40
+ <label class="font text-left">用户类型:</label>
41
+ </div>
42
+ <div class="col-xs-8" >
43
+ <v-select :value.sync="$parent.$parent.model.f_user_type" class="input-font"
44
+ :options='$parent.$parent.user_types' placeholder='请选择用户类型' :value-single="true"
45
+ v-model="$parent.$parent.model.f_user_type" close-on-select clear-button></v-select>
46
+ </div>
47
+ </div>
48
+ <div class="row app-row">
49
+ <div class="col-xs-4">
50
+ <img src="../../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
51
+ <label class="font text-left">小区名称:</label>
52
+ </div>
53
+ <div class="col-xs-8" >
54
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_districtname" placeholder="请输入用户小区(可模糊查询)">
55
+ </div>
56
+ </div>
57
+ <div class="row app-row">
58
+ <div class="col-xs-4">
59
+ <img src="../../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
60
+ <label class="font text-left">楼&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:</label>
61
+ </div>
62
+ <div class="col-xs-8" >
63
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_building" placeholder="请输入用户楼号">
64
+ </div>
65
+ </div>
66
+ <div class="row app-row">
67
+ <div class="col-xs-4">
68
+ <img src="../../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
69
+ <label class="font text-left">单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;元:</label>
70
+ </div>
71
+ <div class="col-xs-8" >
72
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_unit" placeholder="请输入用户单元">
73
+ </div>
74
+ </div>
75
+ <div class="row app-row">
76
+ <div class="col-xs-4">
77
+ <img src="../../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
78
+ <label class="font text-left">用户地址:</label>
79
+ </div>
80
+ <div class="col-xs-8" >
81
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_address" placeholder="请输入用户地址(可模糊查询)">
82
+ </div>
83
+ </div>
84
+ <div class="row app-row">
85
+ <div class="col-xs-4">
86
+ <img src="../../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
87
+ <label class="font text-left">表&nbsp;&nbsp;封&nbsp;&nbsp;号:</label>
88
+ </div>
89
+ <div class="col-xs-8" >
90
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_metertitles" placeholder="请输入表封号" condition="uf.f_metertitles='{}'">
91
+ </div>
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">电&nbsp;&nbsp;话&nbsp;&nbsp;号:</label>
97
+ </div>
98
+ <div class="col-xs-8" >
99
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_user_phone" placeholder="请输入电话号" condition="ui.f_user_phone like '%{}%'">
100
+ </div>
101
+ </div>
102
+ <div class="row app-row">
103
+ <div class="col-xs-4">
104
+ <img src="../../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
105
+ <label class="font text-left">卡&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:</label>
106
+ </div>
107
+ <div class="col-xs-8" >
108
+ <input style="width: 100%" class="search_input input-font" v-model="model.f_card_id" placeholder="请输入卡号" condition="uf.f_card_id like '%{}%'">
109
+ </div>
110
+ </div>
111
+ <div class="row app-row">
112
+ <div class="col-xs-4">
113
+ <img src="../../../assets/安检状态.png" style="width: 20px;margin-bottom: 5px" alt="">
114
+ <label class="font text-left">抄&nbsp;&nbsp;表&nbsp;&nbsp;册:</label>
115
+ </div>
116
+ <div class="col-xs-8" >
117
+ <v-select class="input-font"
118
+ placeholder='请选择抄表册'
119
+ :value.sync="model.f_meter_book_num"
120
+ v-model="model.f_meter_book_num"
121
+ :options='$parent.$parent.cbc'
122
+ condition="uf.f_meter_book_num='{}'"
123
+ close-on-select clear-button></v-select>
124
+ </div>
125
+ </div>
126
+ <div class="row text-center" style="margin-top: 20px;">
127
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 45%;" @click="search">查询</button>
128
+ </div>
129
+ <div style="height:30px;"></div>
130
+ </form>
131
+ </div>
132
+ </criteria>
133
+
134
+ <list :model="model" partial='list'>
135
+ <div partial>
136
+ <div @click="$parent.$parent.$parent.inspectRepair(row)" class="auto app-text" style="margin-top: 5px;">
137
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
138
+ <div class="panel-body panel-self">
139
+ <div class="row">
140
+ <p class="panel-title col-xs-4 text-left font">用户编号</p>
141
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_userinfo_code }}</p>
142
+ </div>
143
+ <div class="row">
144
+ <p class="panel-title col-xs-4 text-left font">用户名称</p>
145
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_user_name }}</p>
146
+ </div>
147
+ <div class="row">
148
+ <p class="panel-title col-xs-4 text-left font">表号</p>
149
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_meternumber }}</p>
150
+ </div>
151
+ <div class="row">
152
+ <p class="panel-title col-xs-4 text-left font">用户类型</p>
153
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_user_type }}</p>
154
+ </div>
155
+ <div class="row">
156
+ <p class="panel-title col-xs-4 text-left font">用户电话</p>
157
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_user_phone2 ? row.f_user_phone2 : row.f_user_phone }}</p>
158
+ </div>
159
+
160
+ <div class="row">
161
+ <p class="panel-title col-xs-4 text-left font">小区名称</p>
162
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_residential_area }}</p>
163
+ </div>
164
+ <div class="row">
165
+ <p class="panel-title col-xs-4 text-left font">用户地址</p>
166
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_address }}</p>
167
+ </div>
168
+ <div class="row">
169
+ <p class="panel-title col-xs-4 text-left font">最后安检日期</p>
170
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_last_check_date }}</p>
171
+ </div>
172
+ <div class="row">
173
+ <p class="panel-title col-xs-4 text-left font">最后安检状态</p>
174
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_last_check_state }}</p>
175
+ </div>
176
+ </div>
177
+ </div>
178
+
179
+ </div>
180
+ </div>
181
+ </list>
182
+ </criteria-paged>
183
+ <!--<back-page :need-back='true' @flag="$back()"></back-page>-->
184
+ </div>
185
+ </template>
186
+
187
+ <script>
188
+ import {HttpResetClass, PagedList} from 'vue-client'
189
+ import Vue from 'vue'
190
+ import * as Util from '../../Util'
191
+
192
+ export default {
193
+ title: '安检员B',
194
+ data () {
195
+ let model = new PagedList(`${this.$androidUtil.getProxyUrl()}/rs/sql/提取用户档案`, 20, { groupitem: '""', orderitem: '"f_residential_area,CAST(build as int),f_unit,CAST(floor1 as int),f_room"',f_check_type:'this.f_check_type[0]',
196
+ f_user_name:'this.model.f_username',myCycle: 'this.myCycle',fyCycle: 'this.fyCycle', f_user_type:'this.f_user_type',f_sign: 'this.f_sign[0]', f_residential_area:'this.model.f_districtname', f_address:'this.model.f_address',f_user_state: 'this.f_user_state[0]',f_orgids:'this.f_orgids',f_unit:'this.model.f_unit',f_building:'this.model.f_building',f_filialeid:'this.f_filialeid'})
197
+ model.f_sign = ['']
198
+ model.f_user_type = ''
199
+ model.f_user_state =['']
200
+ model.f_check_type =['']
201
+ model.myCycle = 0
202
+ model.fyCycle = 0
203
+ model.f_filialeid = Vue.user.orgid
204
+ //model.f_filialeid = 287
205
+ return {
206
+ model: model,
207
+ cbc:[],
208
+ showModal:false,
209
+ signs: [
210
+ {label:'请选择录入状态', value:''},
211
+ {label:'录入', value:'1'},
212
+ {label:'非录入', value:'0'},
213
+ ],
214
+ ischecks: [
215
+ ],
216
+ user_types: [
217
+ {label: '请选择用户类型', value: ''},
218
+ {label: '民用', value: '民用'},
219
+ {label: '非民用', value: '非民用'},
220
+ ],
221
+ f_user_states: [
222
+ {label:'请选择档案状态', value:''},
223
+ {label:'正常', value:'正常'},
224
+ {label:'点火', value:'点火'},
225
+ ],
226
+ f_check_types: [
227
+ {label:'请选择安检类型', value:''},
228
+ {label:'应检', value:'应检'},
229
+ {label:'超期', value:'超期'},
230
+ ],
231
+ }
232
+ },
233
+ ready () {
234
+ // this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/getSafeCheckCycle`,{},{resolveMsg: null, rejectMsg: null}).then((res) => {
235
+ // //tag)
236
+ // if(res.data.code == 200){
237
+ // this.model.myCycle = res.data.civil.value
238
+ // this.model.fyCycle = res.data.civilian.value
239
+ // }else{
240
+ // //this.$showMessage(res.data.msg)
241
+ // }
242
+ //
243
+ // })
244
+ // this.getCheckTime()
245
+ // this.Mreadibook()
246
+ },
247
+ computed: {
248
+ reload(){
249
+ this.$refs.paged.loadPage(this.$refs.paged.model.pageIndex)
250
+ },
251
+ selected () {
252
+ return this.$refs.paged.$refs.grid.selected
253
+ }
254
+ },
255
+ methods:{
256
+ inspectRepair(row){
257
+ var _this = this
258
+ let http = new HttpResetClass()
259
+ http.load('POST',`${this.$androidUtil.getProxyUrl()}/rs/sql/AndroidDealWith`, {data: {condition: `tcp.f_userinfo_code = '${row.f_userinfo_code}'`,f_filialeids:Vue.user.orgid}},
260
+ {resolveMsg: null, rejectMsg: null}).then(resp=>{
261
+ if (resp.data.length>0){
262
+ this.$showMessage('该用户有隐患未处理,是否先处理隐患?', ['cancel', 'confirm']).then(
263
+ (response) => {
264
+ if (response === 'confirm') {
265
+ var pardate = {
266
+ _this:_this,
267
+ title:'隐患处理',
268
+ safe:true
269
+ }
270
+ _this.$dispatch('gotoson',pardate)
271
+ _this.$goto('android-defect-deal-before-safe', {row: row}, 'self', function () {
272
+ _this.inspect(row)
273
+ })
274
+ }else {
275
+ this.inspect(row)
276
+ }
277
+ }
278
+ )
279
+ }else {
280
+ this.inspect(row)
281
+ }
282
+ }).catch(()=>{
283
+ this.inspect(row)
284
+ })
285
+ },
286
+ scan(){
287
+ HostApp.__this__=this,
288
+ HostApp.scanCode({callback:"javascript:HostApp.__this__.getCode();"})
289
+ },
290
+ getCode(){
291
+ let datapa = HostApp.getCode().data;
292
+ let indexnum = datapa.indexOf("]C1")
293
+ if(indexnum != -1){
294
+ datapa = datapa.substring(indexnum+3,datapa.length)
295
+ }
296
+ this.$refs.paged.$refs.cri.model.f_meternumber=datapa
297
+ },
298
+ getCheckTime(){
299
+ //tag
300
+ new HttpResetClass().load('post',`${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`,{data: {
301
+ items: 'f_circle,f_start_time',
302
+ tablename: 't_safe_circle',
303
+ condition: `f_filialeid = '${Vue.user.orgid}'`,
304
+ orderitem: 'id'
305
+ }}).then(res=>{
306
+ //tag)
307
+ let nocheck=''
308
+ let ischeck=''
309
+ if (res.data[0]){
310
+ if (res.data[0].f_circle=='1'){
311
+ nocheck=`(ua.f_last_check_date<'${res.data[0].f_start_time}' or ua.f_last_check_date is null)`
312
+ ischeck=`ua.f_last_check_date>'${res.data[0].f_start_time}'`
313
+
314
+ }else{
315
+ let addtime= (Util.toStandardTimeString().substring(0,4)-res.data[0].f_start_time.substring(0,4))%res.data[0].f_circle
316
+ //tag
317
+ let time =(Util.toStandardTimeString().substring(0,4)-addtime)+'-01-01 00:00:00'
318
+ //tag
319
+ nocheck=`(ua.f_last_check_date<'${time}' or ua.f_last_check_date is null)`
320
+ ischeck=`ua.f_last_check_date>'${time}'`
321
+ }
322
+ //tag
323
+ this.ischecks=[
324
+ {label: '全部', value: ''},
325
+ {label: '已检', value: ischeck },
326
+ {label: '未检', value: nocheck},
327
+ ]
328
+ //tag
329
+ }else{
330
+ this.$showMessage("未配置安检周期")
331
+ }
332
+
333
+ })
334
+ //tag
335
+ },
336
+ inspect (info){
337
+ if(info.f_last_check_date){
338
+ this.$showMessage("该用户最后一次安检时间为 "+info.f_last_check_date+" 是否继续对该用户进行安检",['confirm', 'cancel']).then((butt)=>{
339
+ if(butt=="confirm"){
340
+ info.id = ''
341
+ info.f_state = '未检'
342
+ info.f_no_checkplan = '无计划安检'
343
+ //tag
344
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/查询计划项表信息`,{data:{f_userid:info.f_userinfo_id}}).then((response)=>{
345
+ //tag)
346
+ info['f_plan_meters'] = response.data
347
+ var pardate = {
348
+ _this:this,
349
+ tittle:'安检详情',
350
+ safe:true
351
+ }
352
+ this.$dispatch('gotoson',pardate)
353
+ this.$goto('safecheck-order-v', {item: info, role: 'inspect',parentPage:'AddPlanItem'}, 'self', this.reload)
354
+
355
+ })
356
+ }
357
+ })
358
+ }else{
359
+ info.id = ''
360
+ info.f_state = '未检'
361
+ info.f_no_checkplan = '无计划安检'
362
+ //tag
363
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/查询计划项表信息`,{data:{f_userid:info.f_userinfo_id}}).then((response)=>{
364
+ //tag)
365
+ info['f_plan_meters'] = response.data
366
+ var pardate = {
367
+ _this:this,
368
+ tittle:'安检详情',
369
+ safe:true
370
+ }
371
+ this.$dispatch('gotoson',pardate)
372
+ this.$goto('safecheck-order-v', {item: info, role: 'inspect',parentPage:'AddPlanItem'}, 'self', this.reload)
373
+
374
+ })
375
+ }
376
+ },
377
+ Mreadibook(){
378
+ this.cbc=[]
379
+ let http = new HttpResetClass()
380
+ http.load('POST',`${this.$androidUtil.getProxyUrl()}/rs/logic/getMeterBooksData`,
381
+ {data: {f_orgid: "('"+Vue.user.orgid+"')"}},
382
+ {resolveMsg: null, rejectMsg: '获取失败!!!'}).then((getMeterReadingBooks)=>{
383
+ this.cbc = [{label: '全部', value: ''}]
384
+ //tag
385
+ //tag)
386
+ //tag
387
+ getMeterReadingBooks.data.meterbooks.forEach((res) => {
388
+ this.cbc.push({label: res.f_book_name, value: res.id})
389
+ /*if(res.f_book_slice_area){
390
+ if(this.sliceArea.indexOf(res.f_book_slice_area)<0){
391
+ this.sliceArea.push(res.f_book_slice_area)
392
+ }
393
+ }*/
394
+ })
395
+ })
396
+
397
+
398
+ }
399
+ }
400
+ }
401
+ </script>
402
+ <style scoped>
403
+ .app-row {
404
+ background-color: white;
405
+ padding: 10px 10px 0 10px;
406
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
407
+ }
408
+ .search_input {
409
+ border: 0;
410
+ outline: none;
411
+ }
412
+ .font{
413
+ font: 15px PingFang-SC-Medium;
414
+ color: #666666;
415
+ }
416
+ .input-font{
417
+ font: 15px PingFang-SC-Medium;
418
+ color: #333333;
419
+ }
420
+ .btn-font{
421
+ font:600 16px PingFang-SC-Bold;
422
+ color: #499EDF;
423
+ }
424
+ .btn-color{
425
+ background-color: #FFFFFF;
426
+ border-radius: 10px ;
427
+ border: 1px solid #499EDF;
428
+ }
429
+ .app-text {
430
+ font-size: 12px;
431
+ }
432
+ .panel-self{
433
+ border-radius: 10px;
434
+ border:1px solid #499EDF;
435
+ background-color: #F8F8F8;
436
+ }
437
+ .yybtn-color{
438
+ border-radius: 4px ;
439
+ border: 1px solid #499EDF;
440
+ }
441
+ .qxbtn-color{
442
+ background-color: #FFFFFF;
443
+ border-radius: 4px ;
444
+ border: 1px solid #499EDF;
445
+ }
446
+ </style>
@@ -1,11 +1,12 @@
1
- // 分公司特殊组件页面注册
2
- import Vue from "vue";
3
-
4
- // 手机特殊目录注册到该文件中
5
- let specialComp = {
6
- 'phone-record-info': (resolve) => { require(['./android/PhoneRecordInfo.vue'], resolve) },
7
- 'safecheck-userinfo': (resolve) => { require(['./android/SafecheckUserInfo.vue'], resolve) },
8
- }
9
-
10
- exports.specialComp = specialComp
11
-
1
+ // 分公司特殊组件页面注册
2
+ import Vue from "vue";
3
+
4
+ // 手机特殊目录注册到该文件中
5
+ let specialComp = {
6
+ 'phone-record-info': (resolve) => { require(['./android/PhoneRecordInfo.vue'], resolve) },
7
+ 'safecheck-userinfo': (resolve) => { require(['./android/SafecheckUserInfo.vue'], resolve) },
8
+ 'add-plan-item': (resolve) => { require(['./android/AddPlanItem'], resolve) },
9
+ }
10
+
11
+ exports.specialComp = specialComp
12
+
@@ -200,6 +200,7 @@ export default function (filiale) {
200
200
  // 安检用户信息查看
201
201
  Vue.component('safecheck-userinfo', (resolve) => { require(['./components/android/userinfo/SafecheckUserInfo'], resolve) })
202
202
  Vue.component('android-defect-deal', (resolve) => { require(['./components/android/AndroidDefectDeal'], resolve) })
203
+ Vue.component('android-defect-deal-before-safe', (resolve) => { require(['./components/android/AndroidDefectDealBeforeSafe'], resolve) })
203
204
  // 在线用户档案核对
204
205
  //Vue.component('user-safe-app', (resolve) => { require(['../examples/UserFiles/App'], resolve) })
205
206
  //手机报表查询