safecheck-client 3.0.34-70 → 3.0.34-72

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,702 +1,714 @@
1
- <style scoped>
2
- .app-row {
3
- background-color: white;
4
- padding: 10px 10px 0 10px;
5
- border-bottom: 1px solid rgba(235, 235, 235, 0.5);
6
- }
7
-
8
- .search_input {
9
- border: 0;
10
- outline: none;
11
- }
12
-
13
- .font {
14
- font: 15px PingFang-SC-Medium;
15
- color: #666666;
16
- }
17
-
18
- .input-font {
19
- font: 15px PingFang-SC-Medium;
20
- color: #333333;
21
- }
22
-
23
- .btn-font {
24
- font: 600 16px PingFang-SC-Bold;
25
- color: #499EDF;
26
- }
27
-
28
- .btn-color {
29
- background-color: #FFFFFF;
30
- border-radius: 10px;
31
- border: 1px solid #499EDF;
32
- }
33
-
34
- .app-text {
35
- font-size: 12px;
36
- }
37
-
38
- .panel-self {
39
- border-radius: 10px;
40
- border: 1px solid #499EDF;
41
- background-color: #F8F8F8;
42
- }
43
-
44
- .button_shrink_top {
45
- width: 35px;
46
- height: 35px;
47
- background-size: 100%;
48
- background-image: url("../../../static/newStyle/stretch_top.png")
49
- }
50
-
51
- .button_shrink_bottom {
52
- width: 35px;
53
- height: 35px;
54
- background-size: 100%;
55
- background-image: url("../../../static/newStyle/stretch_bottom.png")
56
- }
57
- </style>
58
- <template>
59
- <div style="height: auto;width: 100%">
60
- <criteria-paged :model="model" v-ref:paged>
61
- <criteria partial='criteria' @condition-changed='search' v-ref:cri>
62
- <div partial>
63
- <form>
64
- <div class="row app-row">
65
- <div class="col-xs-4">
66
- <img src="../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
67
- <label for="f_userinfo_code" class="font text-left">用户编号:</label>
68
- </div>
69
- <div class="col-xs-8">
70
- <input id="f_userinfo_code" class="search_input input-font"
71
- v-model=model.f_userinfo_code condition="f_userinfo_code like '%{}%'" />
72
- </div>
73
- </div>
74
- <div class="row app-row">
75
- <div class="col-xs-4">
76
- <img src="../../assets/用户姓名.png" style="width: 20px;margin-bottom: 5px" alt="">
77
- <label class="font text-left">用户姓名:</label>
78
- </div>
79
- <div class="col-xs-8">
80
- <input class="search_input input-font" v-model=model.f_user_name
81
- condition="f_user_name like '%{}%'" />
82
- </div>
83
- </div>
84
-
85
- <div class="row app-row">
86
- <div class="col-xs-4">
87
- <img src="../../assets/安检状态.png" style="width: 20px;margin-bottom: 5px" alt="">
88
- <label class="font text-left">用户证号:</label>
89
- </div>
90
- <div class="col-xs-8">
91
- <input class="search_input input-font" v-model=model.f_enter_number
92
- condition="f_enter_number like '%{}%'" />
93
- </div>
94
- </div>
95
- <div class="row app-row" v-if="$parent.$parent.criteriaShow">
96
- <div class="col-xs-4">
97
- <img src="../../assets/是否已检.png" style="width: 20px;margin-bottom: 5px" alt="">
98
- <label for="f_state" class="font text-left">是否已检:</label>
99
- </div>
100
- <v-select id="f_state" :value.sync="model.f_state" class="input-font"
101
- :options='$parent.$parent.check_states' placeholder='是否已检' :width="'60%'"
102
- v-model="model.f_state" condition="f_state='{}'" close-on-select clear-button>
103
- </v-select>
104
- </div>
105
- <div class="row app-row" v-if="$parent.$parent.criteriaShow">
106
- <div class="col-xs-4">
107
- <img src="../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
108
- <label class="font text-left">表&emsp;&emsp;号:</label>
109
- </div>
110
- <div class="col-xs-5">
111
- <input class="search_input input-font" v-model=model.f_meter_no
112
- condition="f_meter_no like '%{}%'" />
113
- </div>
114
- <div class="col-xs-3">
115
- <button type="button" class="btn btn-lg btn-font btn-color"
116
- @click="$parent.$parent.scan()">扫码</button>
117
- </div>
118
- </div>
119
- <div class="row app-row" v-if="$parent.$parent.criteriaShow">
120
- <div class="col-xs-4">
121
- <img src="../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
122
- <label class="font text-left">客户电话:</label>
123
- </div>
124
- <div class="col-xs-8">
125
- <input class="search_input input-font" v-model=model.f_user_phone
126
- condition="f_user_phone like '%{}%'" />
127
- </div>
128
- </div>
129
-
130
- <div class="row app-row" v-if="$parent.$parent.criteriaShow">
131
- <div class="col-xs-4">
132
- <img src="../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
133
- <label class="font text-left">用户地址:</label>
134
- </div>
135
- <div class="col-xs-8">
136
- <input class="search_input input-font" v-model=model.f_keyword
137
- condition="f_address like '%{}%'" />
138
- </div>
139
- </div>
140
- <div class="row app-row" v-if="$parent.$parent.criteriaShow">
141
- <div class="col-xs-4">
142
- <img src="../../assets/用户类型.png" style="width: 20px;margin-bottom: 5px" alt="">
143
- <label for="f_user_type" class="font text-left">用户类型:</label>
144
- </div>
145
- <v-select id="f_user_type" :value.sync="model.f_user_type" class="input-font" :width="'60%'"
146
- :options='$parent.$parent.user_types' placeholder='请选择用户类型' v-model="model.f_user_type"
147
- condition="f_user_type='{}'" close-on-select clear-button></v-select>
148
- </div>
149
- <div class="row app-row" v-if="$parent.$parent.criteriaShow">
150
- <div class="col-xs-6">
151
- <img src="../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
152
- <label class="font text-left">到访不遇:</label>
153
- </div>
154
- <div class="col-xs-8">
155
- <input class="search_input input-font" type="number" v-model=model.f_check_version
156
- condition="f_check_version <= '{}'" />
157
- </div>
158
- </div>
159
- <div class="row text-center" style="margin-top: 20px;">
160
- <button type="button" class="btn btn-lg btn-font btn-color" style="width: 25%;"
161
- @click="$parent.$parent.selfSearch">查询</button>
162
- <div style="float: right;margin-right: 3% " class="button_spacing"
163
- :class="{ 'button_shrink_top': $parent.$parent.criteriaShow, 'button_shrink_bottom': !$parent.$parent.criteriaShow }"
164
- @click="$parent.$parent.hidden()"></div>
165
- <img v-if="!$parent.$parent.planName" style="float: right;margin-right: 3% "
166
- @click="$parent.$parent.getNewOrder" src="../../assets/shuaxindaiban1.png"
167
- style="width: 40px;padding: 5px; float:right">
168
- </div>
169
- <div class="col-sm-12">
170
-
171
- </div>
172
- <div style="height:30px;"></div>
173
- </form>
174
- </div>
175
- </criteria>
176
- <list :model="model" partial='list'>
177
- <div partial>
178
- <div class="auto app-text" style="margin-top: 5px;">
179
- <div class="panel" style="padding: 10px 10px 5px 10px;">
180
- <div class="panel-body panel-self">
181
- <div class="col-xs-12">
182
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left">
183
- <b>用户编号:</b></p>
184
- <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{
185
- row.f_userinfo_code }}</p>
186
- <p class="panel-title col-xs-2 text-left input-font" style="width: 5%;float:right">
187
- <input type="checkbox"
188
- @click="$parent.$parent.$parent.setPlanParam(row.id, $event)" />
189
- </p>
190
- </div>
191
- <div class="col-xs-12">
192
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left">
193
- <b>用户名称:</b></p>
194
- <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{
195
- row.f_user_name }}</p>
196
- </div>
197
- <div class="col-xs-6">
198
- <p class="panel-title col-xs-5 text-left font"><b>用户类型:</b></p>
199
- <p class="panel-title col-xs-7 text-left input-font">{{ row.f_user_type }}
200
- </p>
201
- </div>
202
- <div class="col-xs-6">
203
- <p class="panel-title col-xs-5 text-left font"><b>计划名称:</b></p>
204
- <p class="panel-title col-xs-7 text-left input-font">{{ row.f_plan_name }}</p>
205
- </div>
206
- <div class="col-xs-12">
207
- <p class="panel-title text-left font" style="width: 23%;float: left"><b>用户电话:</b>
208
- </p>
209
- <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_user_phone
210
- }}
211
- <img src="../../assets/phone.png" style="width: 6%"
212
- v-on:click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_user_phone)' />
213
- </p>
214
- </div>
215
- <div class="col-xs-12">
216
- <p class="panel-title text-left font" style="width: 23%;float: left"><b>备用电话:</b>
217
- </p>
218
- <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_rent_phone }}
219
- <img v-if="row.f_rent_phone" src="../../assets/phone.png" style="width: 6%"
220
- v-on:click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_rent_phone)' />
221
- </p>
222
- </div>
223
- <div class="col-xs-12">
224
- <p class="panel-title text-left font" style="width: 23%;float: left"><b>租户电话:</b>
225
- </p>
226
- <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_zuhu_phone
227
- }}
228
- <img v-if="row.f_zuhu_phone" src="../../assets/phone.png" style="width: 6%"
229
- v-on:click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_zuhu_phone)' />
230
- </p>
231
- </div>
232
- <div class="col-xs-12">
233
- <p class="panel-title text-left font" style="width: 21%;float: left"><b>用户地址:</b>
234
- </p>
235
- <p class="panel-title text-left input-font" style="width: 79%">{{ row.f_address }}
236
- </p>
237
- </div>
238
- <div class="col-xs-6">
239
- <p class="panel-title col-xs-5 text-left font"><b>安检状态:</b></p>
240
- <p class="panel-title col-xs-7 text-left input-font">{{ row.f_state ==
241
- '已检'?'临时保存':row.f_state }}</p>
242
- </div>
243
- <div class="col-xs-6">
244
- <p class="panel-title col-xs-5 text-left font"><b>上传状态:</b></p>
245
- <p class="panel-title col-xs-7 text-left input-font">{{ row.f_upload_state }}</p>
246
- </div>
247
- <div class="col-xs-12" v-if="row.f_prearranged_date != null">
248
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left">
249
- <b>预约时间:</b></p>
250
- <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{
251
- row.f_prearranged_date }}</p>
252
- </div>
253
- <div class="col-xs-6">
254
- <p class="panel-title col-xs-5 text-left font"><b>安检类型:</b></p>
255
- <p class="panel-title col-xs-7 text-left input-font">{{ row.f_safecheck_type }}</p>
256
- </div>
257
- <div class="col-xs-12">
258
- <p class="panel-title col-xs-5 text-left font"><b>到访不遇次数:</b></p>
259
- <p class="panel-title col-xs-7 text-left input-font">{{ row.f_check_version }}</p>
260
- </div>
261
- <div class="col-xs-12">
262
- <button type="button" name="button" class="btn btn-primary"
263
- style="background-color:#499edf;float: right"
264
- @click="$parent.$parent.$parent.inspectRepair (row)">处理</button>
265
- </div>
266
- </div>
267
- </div>
268
- </div>
269
- </div>
270
- </list>
271
- </criteria-paged>
272
- </div>
273
- </template>
274
-
275
- <script>
276
- import LocalPagedList from '../../plugins/LocalPagedList'
277
- import Vue from 'vue'
278
- import { PagedList, HttpResetClass } from 'vue-client'
279
- import * as Util from '../Util'
280
- import co from 'co'
281
- let select = function* (self) {
282
- let http = new HttpResetClass()
283
- http.load('POST', `${self.$androidUtil.getProxyUrl()}/rs/search`, {
284
- source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))',
285
- userid: Vue.user.id
286
- }, { resolveMsg: null, rejectMsg: null }).then((res) => {
287
- self.checkers.push({ label: '全部', value: '' })
288
- res.data.forEach((checker) => {
289
- self.checkers.push({ label: checker.name, value: checker.id })
290
- })
291
- })
292
- }
293
- export default {
294
- title: 'userinfo-select',
295
- props: ['row'],
296
- data() {
297
- return {
298
- f_filialeids: '(' + Vue.user.orgid + ')',
299
- planparam: [],
300
- check: '',
301
- plan: '',
302
- planid: '',
303
- model: Vue.android ? new LocalPagedList('androidGetuserinfo', 20, { condition: 'this.condition' }) : new PagedList('AndroidRest/rs/sql/androidGetuserinfo', 20, { condition: 'this.condition' }),
304
- showModal: false,
305
- showModal2: false,
306
- showModal3: false,
307
- needid: '',
308
- criteriaShow: false,
309
- planoption: [],
310
- condition: '',
311
- checkers: [],
312
- param: null,
313
- f_preset_dt: Util.to3339TimeString(),
314
- flow_direction: [
315
- { label: '请选择挂表方式', value: '' },
316
- { label: '左表', value: '左表' },
317
- { label: '右表', value: '右表' }
318
- ],
319
- check_states: [
320
- { label: '请选择安检状态', value: '' },
321
- { label: '未检', value: '未检' },
322
- { label: '临时保存', value: '已检' },
323
- ],
324
- last_check_states: [
325
- { label: '请选择上次安检状态', value: '' },
326
- { label: '入户', value: '入户' },
327
- { label: '拒检', value: '拒检' },
328
- { label: '到访不遇', value: '到访不遇' },
329
- { label: '未使用天然气', value: '未使用天然气' }
330
- ],
331
- upload_states: [
332
- { label: '请选择上传状态', value: '' },
333
- { label: '未传', value: '未传' },
334
- { label: '已传', value: '已传' }
335
- ],
336
- user_types: [
337
- { label: '请选择用户类型', value: '' },
338
- { label: '民用', value: '民用' },
339
- { label: '非民用', value: '非民用' },
340
- ],
341
- verify_state: [
342
- { label: '请选择审核状态', value: '' },
343
- { label: '未审核', value: '未审核' },
344
- { label: '打回', value: '打回' }
345
- ],
346
- residentialAreaOptions: [],
347
- buildOptions: [],
348
- unitOptions: [],
349
- planNameOptions: [],
350
- upcomingCount: 0,
351
- doneCount: 0,
352
- tempSaveCount: 0,
353
- allPlanCount: 0
354
- }
355
- },
356
- ready() {
357
- this.selfSearch()
358
- let gen = select(this)
359
- co(gen)
360
- },
361
- mounted() {
362
- if (window.history && window.history.pushState) {
363
- history.pushState(null, null, document.URL);
364
- window.addEventListener('popstate', this.fun, false)
365
- }
366
- },
367
- destroyed() {
368
- window.removeEventListener('popstate', this.fun, false)
369
- },
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
- },
401
- scan() {
402
- HostApp.__this__ = this,
403
- HostApp.scanCode({ callback: "javascript:HostApp.__this__.getCode();" })
404
- },
405
- getCode() {
406
- const datapa = HostApp.getCode().data;
407
- this.$refs.paged.$refs.cri.model.f_meter_no = datapa
408
-
409
- },
410
- fun() {
411
-
412
- },
413
- iscancel() {
414
- this.showModal2 = false
415
- this.showModal3 = false
416
- this.planoption = []
417
- },
418
- timeSet(val) {
419
- return val
420
- },
421
- async isok() {
422
- if (this.planoption.length == 0) {
423
- this.$showMessage("请选择计划")
424
- return false
425
- }
426
- for (let i = 0; i < this.planoption.length; i++) {
427
- if (this.planoption[i]["selected"] == true) {
428
- this.planid = this.planoption[i].value
429
- break
430
- }
431
- }
432
- if (this.planid == '') {
433
- this.$showMessage("请选择计划")
434
- return false
435
- }
436
- await this.okput()
437
- },
438
- async manyisok() {
439
- if (this.planoption.length == 0) {
440
- this.$showMessage("请选择计划")
441
- return false
442
- }
443
- for (let i = 0; i < this.planoption.length; i++) {
444
- if (this.planoption[i]["selected"] == true) {
445
- this.planid = this.planoption[i].value
446
- break
447
- }
448
- }
449
- if (this.planid == '') {
450
- this.$showMessage("请选择计划")
451
- return false
452
- }
453
- await this.manyokput()
454
- },
455
- changenull() {
456
- this.showModal2 = false
457
- this.showModal3 = false
458
- this.planoption = []
459
- this.plan = ''
460
- this.check = ''
461
- },
462
- async okput() {
463
- let res = await this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/UpCheckPlanItem`, {
464
- data: {
465
- condition: `i.id='` + this.needid + `'`,
466
- f_plan_id: this.planid,
467
- switchCheckAll: false,
468
- checkAll: false,
469
- f_operator: Vue.user.name
470
- }
471
- })
472
- this.$showMessage("上传成功,请等待审核")
473
- await this.changenull()
474
- await this.getNewOrder()
475
- },
476
- async manyokput() {
477
- let res = await this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/UpCheckPlanItem`, {
478
- data: {
479
- columnName: "i.id",
480
- condition: "1=1",
481
- f_plan_id: this.planid,
482
- switchCheckAll: true,
483
- param: this.planparam,
484
- checkAll: false,
485
- f_operator: Vue.user.name
486
- }
487
- })
488
- await this.changenull()
489
- await this.getNewOrder()
490
- },
491
- async plansearch() {
492
- this.planoption = []
493
- let condition = ` f_plan_year=${new Date().getFullYear()}`
494
- if (this.check) {
495
- condition += ` and f_checker_id= '${this.check}'`
496
- }
497
- if (this.plan) {
498
- condition += ` and f_plan_name like '%${this.plan}%'`
499
- }
500
- let res = await this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/预约计划下发`, {
501
- data: {
502
- condition: condition,
503
- f_filialeids: this.f_filialeids,
504
- groupitem: '',
505
- orderitem: 'id'
506
- }
507
- })
508
- let resoult = res.data
509
- for (let i = 0; i < resoult.length; i++) {
510
- this.planoption.push({ label: resoult[i].f_plan_name, selected: false, value: resoult[i].id })
511
- }
512
- },
513
-
514
- select(row, idx) {
515
- this.$set('planoption[' + idx + '].selected', true)
516
- for (let i = 0; i < this.planoption.length; i++) {
517
- if (i != idx) {
518
- this.planoption[i]["selected"] = false
519
- }
520
- }
521
- },
522
- planclose() {
523
- this.showModal2 = false
524
- this.showModal3 = false
525
- },
526
- queryplan(val) {
527
- this.needid = val
528
- this.showModal2 = true
529
- },
530
- queryplanmany() {
531
-
532
- this.showModal3 = true
533
- },
534
- reload() {
535
- this.selfSearch()
536
- },
537
- cancelReserve(idx, id) {
538
- if (Vue.android) {
539
- let res = this.$androidUtil.bzLogic('BookingCheck', { dt: '', id: id })
540
- this.$set('model.rows[' + idx + '].f_prearranged_date', null)
541
- if (res.code == 200) {
542
- this.$showMessage("取消预约成功")
543
- }
544
- } else {
545
- this.$androidUtil.bzLogic('PCbookingCheck', { dt: '', id: id }).then((repanse) => {
546
- this.$set('model.rows[' + idx + '].f_prearranged_date', null)
547
- if (repanse.data.code == 200) {
548
- alert("取消预约成功!")
549
- }
550
- })
551
- }
552
- },
553
- genuineReserve() {
554
- if (Vue.android) {
555
- if (!this.f_preset_dt) {
556
- this.$showMessage('请选择一个日期')
557
- return
558
- }
559
- let pdt = this.f_preset_dt.replace('T', ' ')
560
- let respanse = this.$androidUtil.bzLogic('BookingCheck', { id: this.model.rows[this.param].id, dt: pdt })
561
- this.$set('model.rows[' + this.param + '].f_prearranged_date', pdt)
562
- if (respanse.code == 200) {
563
- this.$showMessage("预约成功!")
564
- }
565
- this.showModal = false
566
- } else {
567
- if (!this.f_preset_dt) {
568
- alert('请选择一个日期')
569
- return
570
- }
571
- let pdt = this.f_preset_dt.replace('T', ' ')
572
- this.$androidUtil.bzLogic('PCbookingCheck', { id: this.model.rows[this.param].id, dt: pdt }).then((res) => {
573
- this.$set('model.rows[' + this.param + '].f_prearranged_date', pdt)
574
- if (res.data.code == 200) {
575
- alert("预约成功!")
576
- }
577
- this.showModal = false
578
- })
579
- }
580
- },
581
- inspect(row) {
582
- var _this = this
583
- let http = new HttpResetClass()
584
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {
585
- data: {
586
- items: 'id',
587
- tablename: 't_check_plan_item',
588
- condition: `id = '${row.id}'`,
589
- orderitem: ' id '
590
- }
591
- }, { resolveMsg: null, rejectMsg: null }).then((getcheckplan) => {
592
- console.log('getcheckplan=', JSON.stringify(getcheckplan))
593
- this.getcheckplandata = getcheckplan.data[0]
594
- if (this.getcheckplandata) {
595
- if (row.f_upload_state == '未传' || (row.f_upload_state == '已传' && row.f_state == '未检' && row.f_no_checkplan != '无计划安检')) {
596
- _this.$resetpost(`${_this.$androidUtil.getProxyUrl()}/rs/sql/查询计划项表信息`, { data: { f_userid: row.f_userinfoid } }, { resolveMsg: null, rejectMsg: null }).then((response) => {
597
- row['f_plan_meters'] = response.data
598
- var pardate = {
599
- _this: _this,
600
- title: '安全检查',
601
- safe: true
602
- }
603
- _this.$dispatch('gotoson', pardate)
604
- _this.$goto('safecheck-order-v', { f_plan_id: row.f_plan_id, item: row, role: 'inspect', parentPage: 'CurrentCreate' }, 'self', _this.reload)
605
- }).catch((msg) => {
606
- this.$showMessage("网络异常,请检查网络后再试!")
607
- })
608
- } else {
609
- this.$showMessage("该安检单已被上传!")
610
- }
611
- } else {
612
- this.$showMessage("该用户安检单已被移除,请联系管理员确认!")
613
- }
614
- })
615
- },
616
- makeAPhoneCall(phoneNumber) {
617
- this.$androidUtil.makeAPhoneCall(phoneNumber)
618
- },
619
- reserve(idx) {
620
- this.param = idx
621
- this.showModal = true
622
- },
623
- search(args) {
624
- this.model.rows = []
625
- this.model.search(args.condition, args.model)
626
- },
627
- selfSearch() {
628
- let condition = ""
629
- if (Array.isArray(this.$refs.paged.$refs.cri.model.f_residential_area) && this.$refs.paged.$refs.cri.model.f_residential_area.length > 0) {
630
- condition += " and ti.f_residential_area = '" + this.$refs.paged.$refs.cri.model.f_residential_area[0] + "'"
631
- } else if (this.$refs.paged.$refs.cri.model.f_residential_area instanceof String && this.$refs.paged.$refs.cri.model.f_residential_area) {
632
- condition += " and ti.f_residential_area = '" + this.$refs.paged.$refs.cri.model.f_residential_area + "'"
633
- }
634
- if (this.$refs.paged.$refs.cri.model.f_building)
635
- condition += ` and ti.f_building = '${this.$refs.paged.$refs.cri.model.f_building}'`
636
- if (this.$refs.paged.$refs.cri.model.f_unit)
637
- condition += ` and ti.f_unit = '${this.$refs.paged.$refs.cri.model.f_unit}'`
638
- if (this.planName) {
639
- condition += " and f_plan_name like '%" + this.planName + "%'"
640
- } else {
641
- if (this.$refs.paged.$refs.cri.model.f_plan_name)
642
- condition += " and f_plan_name like '%" + this.$refs.paged.$refs.cri.model.f_plan_name + "%'"
643
- }
644
- condition += " and ti.f_userinfo_code like '%" + this.$refs.paged.$refs.cri.model.f_userinfo_code + "%'"
645
- if (this.$refs.paged.$refs.cri.model.f_keyword)
646
- condition += " and ti.f_address like '%" + this.$refs.paged.$refs.cri.model.f_keyword + "%'"
647
- if (this.$refs.paged.$refs.cri.model.f_user_name)
648
- condition += " and ti.f_user_name like '%" + this.$refs.paged.$refs.cri.model.f_user_name + "%'"
649
- if (this.$refs.paged.$refs.cri.model.f_state[0])
650
- condition += " and ti.f_state='" + this.$refs.paged.$refs.cri.model.f_state[0] + "'"
651
- if (this.$refs.paged.$refs.cri.model.f_user_type[0])
652
- condition += " and ti.f_user_type='" + this.$refs.paged.$refs.cri.model.f_user_type[0] + "'"
653
- if (this.$refs.paged.$refs.cri.model.f_meter_no)
654
- condition += " and tm.f_meter_no like '%" + this.$refs.paged.$refs.cri.model.f_meter_no + "%'"
655
- if (this.$refs.paged.$refs.cri.model.f_user_phone) {
656
- condition += `and ti.f_user_phone like '%${this.$refs.paged.$refs.cri.model.f_user_phone}%'`
657
- }
658
- if (this.$refs.paged.$refs.cri.model.f_enter_number)
659
- condition += " and ti.f_enter_number like '%" + this.$refs.paged.$refs.cri.model.f_enter_number + "%'"
660
- if (this.$refs.paged.$refs.cri.model.f_check_version)
661
- condition += " and ti.f_check_version <= " + this.$refs.paged.$refs.cri.model.f_check_version
662
- condition += ` and ti.f_plan_id = '${this.row.f_plan_id}' and ti.f_residential_area = '${this.row.f_residential_area}' and ti.f_building = '${this.row.f_building}'`
663
- this.model.search("((f_complete = '' or f_complete = null or f_complete = '未完成') or (f_state = '未检')) and ti.f_no_checkplan = '有计划安检'" + condition)
664
- },
665
- getNewOrder() {
666
- HostApp.__this__ = this
667
- HostApp.logicWithHint({
668
- 'logic': 'SafeCheckServiceTimeOut',
669
- 'callback': 'javascript:HostApp.__this__.getNewOrderCallBack()',
670
- 'data': { params: '' },
671
- 'backresult': 1
672
- })
673
- HostApp.logicWithHint({
674
- 'logic': 'FreshPlanItem',
675
- 'callback': 'javascript:HostApp.__this__.getNewOrderCallBack()',
676
- 'data': { params: '' },
677
- 'backresult': 1
678
- })
679
- },
680
- getNewOrderCallBack() {
681
- this.selfSearch()
682
- },
683
- hidden() {
684
- this.criteriaShow = !this.criteriaShow
685
- },
686
- setPlanParam(detailsType, event) {
687
- if (event.srcElement.checked) {
688
- this.planparam.push(detailsType)
689
- } else {
690
- if (this.planparam.length > 0) {
691
- let planid = this.planparam.findIndex((value) => {
692
- return value === detailsType
693
- })
694
- this.planparam.splice(planid, 1)
695
-
696
- }
697
-
698
- }
699
- }
700
- }
701
- }
702
- </script>
1
+ <style scoped>
2
+ .app-row {
3
+ background-color: white;
4
+ padding: 10px 10px 0 10px;
5
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
6
+ }
7
+
8
+ .search_input {
9
+ border: 0;
10
+ outline: none;
11
+ }
12
+
13
+ .font {
14
+ font: 15px PingFang-SC-Medium;
15
+ color: #666666;
16
+ }
17
+
18
+ .input-font {
19
+ font: 15px PingFang-SC-Medium;
20
+ color: #333333;
21
+ }
22
+
23
+ .btn-font {
24
+ font: 600 16px PingFang-SC-Bold;
25
+ color: #499EDF;
26
+ }
27
+
28
+ .btn-color {
29
+ background-color: #FFFFFF;
30
+ border-radius: 10px;
31
+ border: 1px solid #499EDF;
32
+ }
33
+
34
+ .app-text {
35
+ font-size: 12px;
36
+ }
37
+
38
+ .panel-self {
39
+ border-radius: 10px;
40
+ border: 1px solid #499EDF;
41
+ background-color: #F8F8F8;
42
+ }
43
+
44
+ .button_shrink_top {
45
+ width: 35px;
46
+ height: 35px;
47
+ background-size: 100%;
48
+ background-image: url("../../../static/newStyle/stretch_top.png")
49
+ }
50
+
51
+ .button_shrink_bottom {
52
+ width: 35px;
53
+ height: 35px;
54
+ background-size: 100%;
55
+ background-image: url("../../../static/newStyle/stretch_bottom.png")
56
+ }
57
+ </style>
58
+ <template>
59
+ <div style="height: auto;width: 100%">
60
+ <criteria-paged :model="model" v-ref:paged>
61
+ <criteria partial='criteria' @condition-changed='search' v-ref:cri>
62
+ <div partial>
63
+ <form>
64
+ <div class="row app-row">
65
+ <div class="col-xs-4">
66
+ <img src="../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
67
+ <label for="f_userinfo_code" class="font text-left">用户编号:</label>
68
+ </div>
69
+ <div class="col-xs-8">
70
+ <input id="f_userinfo_code" class="search_input input-font"
71
+ v-model=model.f_userinfo_code condition="f_userinfo_code like '%{}%'" />
72
+ </div>
73
+ </div>
74
+ <div class="row app-row">
75
+ <div class="col-xs-4">
76
+ <img src="../../assets/用户姓名.png" style="width: 20px;margin-bottom: 5px" alt="">
77
+ <label class="font text-left">用户姓名:</label>
78
+ </div>
79
+ <div class="col-xs-8">
80
+ <input class="search_input input-font" v-model=model.f_user_name
81
+ condition="f_user_name like '%{}%'" />
82
+ </div>
83
+ </div>
84
+
85
+ <div class="row app-row">
86
+ <div class="col-xs-4">
87
+ <img src="../../assets/安检状态.png" style="width: 20px;margin-bottom: 5px" alt="">
88
+ <label class="font text-left">用户证号:</label>
89
+ </div>
90
+ <div class="col-xs-8">
91
+ <input class="search_input input-font" v-model=model.f_enter_number
92
+ condition="f_enter_number like '%{}%'" />
93
+ </div>
94
+ </div>
95
+ <div class="row app-row" v-if="$parent.$parent.criteriaShow">
96
+ <div class="col-xs-4">
97
+ <img src="../../assets/是否已检.png" style="width: 20px;margin-bottom: 5px" alt="">
98
+ <label for="f_state" class="font text-left">是否已检:</label>
99
+ </div>
100
+ <v-select id="f_state" :value.sync="model.f_state" class="input-font"
101
+ :options='$parent.$parent.check_states' placeholder='是否已检' :width="'60%'"
102
+ v-model="model.f_state" condition="f_state='{}'" close-on-select clear-button>
103
+ </v-select>
104
+ </div>
105
+ <div class="row app-row" v-if="$parent.$parent.criteriaShow">
106
+ <div class="col-xs-4">
107
+ <img src="../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
108
+ <label class="font text-left">表&emsp;&emsp;号:</label>
109
+ </div>
110
+ <div class="col-xs-5">
111
+ <input class="search_input input-font" v-model=model.f_meter_no
112
+ condition="f_meter_no like '%{}%'" />
113
+ </div>
114
+ <div class="col-xs-3">
115
+ <button type="button" class="btn btn-lg btn-font btn-color"
116
+ @click="$parent.$parent.scan()">扫码</button>
117
+ </div>
118
+ </div>
119
+ <div class="row app-row" v-if="$parent.$parent.criteriaShow">
120
+ <div class="col-xs-4">
121
+ <img src="../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
122
+ <label class="font text-left">客户电话:</label>
123
+ </div>
124
+ <div class="col-xs-8">
125
+ <input class="search_input input-font" v-model=model.f_user_phone
126
+ condition="f_user_phone like '%{}%'" />
127
+ </div>
128
+ </div>
129
+
130
+ <div class="row app-row" v-if="$parent.$parent.criteriaShow">
131
+ <div class="col-xs-4">
132
+ <img src="../../assets/小区.png" style="width: 20px;margin-bottom: 5px" alt="">
133
+ <label class="font text-left">用户地址:</label>
134
+ </div>
135
+ <div class="col-xs-8">
136
+ <input class="search_input input-font" v-model=model.f_keyword
137
+ condition="f_address like '%{}%'" />
138
+ </div>
139
+ </div>
140
+ <div class="row app-row" v-if="$parent.$parent.criteriaShow">
141
+ <div class="col-xs-4">
142
+ <img src="../../assets/用户类型.png" style="width: 20px;margin-bottom: 5px" alt="">
143
+ <label for="f_user_type" class="font text-left">用户类型:</label>
144
+ </div>
145
+ <v-select id="f_user_type" :value.sync="model.f_user_type" class="input-font" :width="'60%'"
146
+ :options='$parent.$parent.user_types' placeholder='请选择用户类型' v-model="model.f_user_type"
147
+ condition="f_user_type='{}'" close-on-select clear-button></v-select>
148
+ </div>
149
+ <div class="row app-row" v-if="$parent.$parent.criteriaShow">
150
+ <div class="col-xs-6">
151
+ <img src="../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
152
+ <label class="font text-left">到访不遇:</label>
153
+ </div>
154
+ <div class="col-xs-8">
155
+ <input class="search_input input-font" type="number" v-model=model.f_check_version
156
+ condition="f_check_version <= '{}'" />
157
+ </div>
158
+ </div>
159
+ <div class="row text-center" style="margin-top: 20px;">
160
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 25%;"
161
+ @click="$parent.$parent.selfSearch">查询</button>
162
+ <div style="float: right;margin-right: 3% " class="button_spacing"
163
+ :class="{ 'button_shrink_top': $parent.$parent.criteriaShow, 'button_shrink_bottom': !$parent.$parent.criteriaShow }"
164
+ @click="$parent.$parent.hidden()"></div>
165
+ <img v-if="!$parent.$parent.planName" style="float: right;margin-right: 3% "
166
+ @click="$parent.$parent.getNewOrder" src="../../assets/shuaxindaiban1.png"
167
+ style="width: 40px;padding: 5px; float:right">
168
+ </div>
169
+ <div class="col-sm-12">
170
+
171
+ </div>
172
+ <div style="height:30px;"></div>
173
+ </form>
174
+ </div>
175
+ </criteria>
176
+ <list :model="model" partial='list'>
177
+ <div partial>
178
+ <div class="auto app-text" style="margin-top: 5px;">
179
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
180
+ <div class="panel-body panel-self">
181
+ <div class="col-xs-12">
182
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left">
183
+ <b>用户编号:</b></p>
184
+ <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{
185
+ row.f_userinfo_code }}</p>
186
+ <p class="panel-title col-xs-2 text-left input-font" style="width: 5%;float:right">
187
+ <input type="checkbox"
188
+ @click="$parent.$parent.$parent.setPlanParam(row.id, $event)" />
189
+ </p>
190
+ </div>
191
+ <div class="col-xs-12">
192
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left">
193
+ <b>用户名称:</b></p>
194
+ <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{
195
+ row.f_user_name }}</p>
196
+ </div>
197
+ <div class="col-xs-6">
198
+ <p class="panel-title col-xs-5 text-left font"><b>用户类型:</b></p>
199
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_user_type }}
200
+ </p>
201
+ </div>
202
+ <div class="col-xs-6">
203
+ <p class="panel-title col-xs-5 text-left font"><b>计划名称:</b></p>
204
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_plan_name }}</p>
205
+ </div>
206
+ <div class="col-xs-12">
207
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>用户电话:</b>
208
+ </p>
209
+ <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_user_phone
210
+ }}
211
+ <img src="../../assets/phone.png" style="width: 6%"
212
+ v-on:click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_user_phone)' />
213
+ </p>
214
+ </div>
215
+ <div class="col-xs-12">
216
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>备用电话:</b>
217
+ </p>
218
+ <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_rent_phone }}
219
+ <img v-if="row.f_rent_phone" src="../../assets/phone.png" style="width: 6%"
220
+ v-on:click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_rent_phone)' />
221
+ </p>
222
+ </div>
223
+ <div class="col-xs-12">
224
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>租户电话:</b>
225
+ </p>
226
+ <p class="panel-title text-left input-font" style="width: 77%">{{ row.f_zuhu_phone
227
+ }}
228
+ <img v-if="row.f_zuhu_phone" src="../../assets/phone.png" style="width: 6%"
229
+ v-on:click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_zuhu_phone)' />
230
+ </p>
231
+ </div>
232
+ <div class="col-xs-12">
233
+ <p class="panel-title text-left font" style="width: 21%;float: left"><b>用户地址:</b>
234
+ </p>
235
+ <p class="panel-title text-left input-font" style="width: 79%">{{ row.f_address }}
236
+ </p>
237
+ </div>
238
+ <div class="col-xs-6">
239
+ <p class="panel-title col-xs-5 text-left font"><b>安检状态:</b></p>
240
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_state ==
241
+ '已检'?'临时保存':row.f_state }}</p>
242
+ </div>
243
+ <div class="col-xs-6">
244
+ <p class="panel-title col-xs-5 text-left font"><b>上传状态:</b></p>
245
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_upload_state }}</p>
246
+ </div>
247
+ <div class="col-xs-12" v-if="row.f_prearranged_date != null">
248
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left">
249
+ <b>预约时间:</b></p>
250
+ <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{
251
+ row.f_prearranged_date }}</p>
252
+ </div>
253
+ <div class="col-xs-6">
254
+ <p class="panel-title col-xs-5 text-left font"><b>安检类型:</b></p>
255
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_safecheck_type }}</p>
256
+ </div>
257
+ <div class="col-xs-12">
258
+ <p class="panel-title col-xs-5 text-left font"><b>到访不遇次数:</b></p>
259
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_check_version }}</p>
260
+ </div>
261
+ <div class="col-xs-12">
262
+ <button type="button" name="button" class="btn btn-primary"
263
+ style="background-color:#499edf;float: right"
264
+ @click="$parent.$parent.$parent.inspectRepair (row)">处理</button>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+ </list>
271
+ </criteria-paged>
272
+ </div>
273
+ </template>
274
+
275
+ <script>
276
+ import LocalPagedList from '../../plugins/LocalPagedList'
277
+ import Vue from 'vue'
278
+ import { PagedList, HttpResetClass } from 'vue-client'
279
+ import * as Util from '../Util'
280
+ import co from 'co'
281
+ let select = function* (self) {
282
+ let http = new HttpResetClass()
283
+ http.load('POST', `${self.$androidUtil.getProxyUrl()}/rs/search`, {
284
+ source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))',
285
+ userid: Vue.user.id
286
+ }, { resolveMsg: null, rejectMsg: null }).then((res) => {
287
+ self.checkers.push({ label: '全部', value: '' })
288
+ res.data.forEach((checker) => {
289
+ self.checkers.push({ label: checker.name, value: checker.id })
290
+ })
291
+ })
292
+ }
293
+ export default {
294
+ title: 'userinfo-select',
295
+ props: ['row'],
296
+ data() {
297
+ return {
298
+ f_filialeids: '(' + Vue.user.orgid + ')',
299
+ planparam: [],
300
+ check: '',
301
+ plan: '',
302
+ planid: '',
303
+ model: Vue.android ? new LocalPagedList('androidGetuserinfo', 20, { condition: 'this.condition' }) : new PagedList('AndroidRest/rs/sql/androidGetuserinfo', 20, { condition: 'this.condition' }),
304
+ showModal: false,
305
+ showModal2: false,
306
+ showModal3: false,
307
+ needid: '',
308
+ criteriaShow: false,
309
+ planoption: [],
310
+ condition: '',
311
+ checkers: [],
312
+ param: null,
313
+ f_preset_dt: Util.to3339TimeString(),
314
+ flow_direction: [
315
+ { label: '请选择挂表方式', value: '' },
316
+ { label: '左表', value: '左表' },
317
+ { label: '右表', value: '右表' }
318
+ ],
319
+ check_states: [
320
+ { label: '请选择安检状态', value: '' },
321
+ { label: '未检', value: '未检' },
322
+ { label: '临时保存', value: '已检' },
323
+ ],
324
+ last_check_states: [
325
+ { label: '请选择上次安检状态', value: '' },
326
+ { label: '入户', value: '入户' },
327
+ { label: '拒检', value: '拒检' },
328
+ { label: '到访不遇', value: '到访不遇' },
329
+ { label: '未使用天然气', value: '未使用天然气' }
330
+ ],
331
+ upload_states: [
332
+ { label: '请选择上传状态', value: '' },
333
+ { label: '未传', value: '未传' },
334
+ { label: '已传', value: '已传' }
335
+ ],
336
+ user_types: [
337
+ { label: '请选择用户类型', value: '' },
338
+ { label: '民用', value: '民用' },
339
+ { label: '非民用', value: '非民用' },
340
+ ],
341
+ verify_state: [
342
+ { label: '请选择审核状态', value: '' },
343
+ { label: '未审核', value: '未审核' },
344
+ { label: '打回', value: '打回' }
345
+ ],
346
+ residentialAreaOptions: [],
347
+ buildOptions: [],
348
+ unitOptions: [],
349
+ planNameOptions: [],
350
+ upcomingCount: 0,
351
+ doneCount: 0,
352
+ tempSaveCount: 0,
353
+ allPlanCount: 0
354
+ }
355
+ },
356
+ ready() {
357
+ this.selfSearch()
358
+ let gen = select(this)
359
+ co(gen)
360
+ },
361
+ mounted() {
362
+ if (window.history && window.history.pushState) {
363
+ history.pushState(null, null, document.URL);
364
+ window.addEventListener('popstate', this.fun, false)
365
+ }
366
+ },
367
+ destroyed() {
368
+ window.removeEventListener('popstate', this.fun, false)
369
+ },
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
+ },
401
+ scan() {
402
+ HostApp.__this__ = this,
403
+ HostApp.scanCode({ callback: "javascript:HostApp.__this__.getCode();" })
404
+ },
405
+ getCode() {
406
+ const datapa = HostApp.getCode().data;
407
+ this.$refs.paged.$refs.cri.model.f_meter_no = datapa
408
+
409
+ },
410
+ fun() {
411
+
412
+ },
413
+ iscancel() {
414
+ this.showModal2 = false
415
+ this.showModal3 = false
416
+ this.planoption = []
417
+ },
418
+ timeSet(val) {
419
+ return val
420
+ },
421
+ async isok() {
422
+ if (this.planoption.length == 0) {
423
+ this.$showMessage("请选择计划")
424
+ return false
425
+ }
426
+ for (let i = 0; i < this.planoption.length; i++) {
427
+ if (this.planoption[i]["selected"] == true) {
428
+ this.planid = this.planoption[i].value
429
+ break
430
+ }
431
+ }
432
+ if (this.planid == '') {
433
+ this.$showMessage("请选择计划")
434
+ return false
435
+ }
436
+ await this.okput()
437
+ },
438
+ async manyisok() {
439
+ if (this.planoption.length == 0) {
440
+ this.$showMessage("请选择计划")
441
+ return false
442
+ }
443
+ for (let i = 0; i < this.planoption.length; i++) {
444
+ if (this.planoption[i]["selected"] == true) {
445
+ this.planid = this.planoption[i].value
446
+ break
447
+ }
448
+ }
449
+ if (this.planid == '') {
450
+ this.$showMessage("请选择计划")
451
+ return false
452
+ }
453
+ await this.manyokput()
454
+ },
455
+ changenull() {
456
+ this.showModal2 = false
457
+ this.showModal3 = false
458
+ this.planoption = []
459
+ this.plan = ''
460
+ this.check = ''
461
+ },
462
+ async okput() {
463
+ let res = await this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/UpCheckPlanItem`, {
464
+ data: {
465
+ condition: `i.id='` + this.needid + `'`,
466
+ f_plan_id: this.planid,
467
+ switchCheckAll: false,
468
+ checkAll: false,
469
+ f_operator: Vue.user.name
470
+ }
471
+ })
472
+ this.$showMessage("上传成功,请等待审核")
473
+ await this.changenull()
474
+ await this.getNewOrder()
475
+ },
476
+ async manyokput() {
477
+ let res = await this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/UpCheckPlanItem`, {
478
+ data: {
479
+ columnName: "i.id",
480
+ condition: "1=1",
481
+ f_plan_id: this.planid,
482
+ switchCheckAll: true,
483
+ param: this.planparam,
484
+ checkAll: false,
485
+ f_operator: Vue.user.name
486
+ }
487
+ })
488
+ await this.changenull()
489
+ await this.getNewOrder()
490
+ },
491
+ async plansearch() {
492
+ this.planoption = []
493
+ let condition = ` f_plan_year=${new Date().getFullYear()}`
494
+ if (this.check) {
495
+ condition += ` and f_checker_id= '${this.check}'`
496
+ }
497
+ if (this.plan) {
498
+ condition += ` and f_plan_name like '%${this.plan}%'`
499
+ }
500
+ let res = await this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/预约计划下发`, {
501
+ data: {
502
+ condition: condition,
503
+ f_filialeids: this.f_filialeids,
504
+ groupitem: '',
505
+ orderitem: 'id'
506
+ }
507
+ })
508
+ let resoult = res.data
509
+ for (let i = 0; i < resoult.length; i++) {
510
+ this.planoption.push({ label: resoult[i].f_plan_name, selected: false, value: resoult[i].id })
511
+ }
512
+ },
513
+
514
+ select(row, idx) {
515
+ this.$set('planoption[' + idx + '].selected', true)
516
+ for (let i = 0; i < this.planoption.length; i++) {
517
+ if (i != idx) {
518
+ this.planoption[i]["selected"] = false
519
+ }
520
+ }
521
+ },
522
+ planclose() {
523
+ this.showModal2 = false
524
+ this.showModal3 = false
525
+ },
526
+ queryplan(val) {
527
+ this.needid = val
528
+ this.showModal2 = true
529
+ },
530
+ queryplanmany() {
531
+
532
+ this.showModal3 = true
533
+ },
534
+ reload() {
535
+ this.selfSearch()
536
+ },
537
+ cancelReserve(idx, id) {
538
+ if (Vue.android) {
539
+ let res = this.$androidUtil.bzLogic('BookingCheck', { dt: '', id: id })
540
+ this.$set('model.rows[' + idx + '].f_prearranged_date', null)
541
+ if (res.code == 200) {
542
+ this.$showMessage("取消预约成功")
543
+ }
544
+ } else {
545
+ this.$androidUtil.bzLogic('PCbookingCheck', { dt: '', id: id }).then((repanse) => {
546
+ this.$set('model.rows[' + idx + '].f_prearranged_date', null)
547
+ if (repanse.data.code == 200) {
548
+ alert("取消预约成功!")
549
+ }
550
+ })
551
+ }
552
+ },
553
+ genuineReserve() {
554
+ if (Vue.android) {
555
+ if (!this.f_preset_dt) {
556
+ this.$showMessage('请选择一个日期')
557
+ return
558
+ }
559
+ let pdt = this.f_preset_dt.replace('T', ' ')
560
+ let respanse = this.$androidUtil.bzLogic('BookingCheck', { id: this.model.rows[this.param].id, dt: pdt })
561
+ this.$set('model.rows[' + this.param + '].f_prearranged_date', pdt)
562
+ if (respanse.code == 200) {
563
+ this.$showMessage("预约成功!")
564
+ }
565
+ this.showModal = false
566
+ } else {
567
+ if (!this.f_preset_dt) {
568
+ alert('请选择一个日期')
569
+ return
570
+ }
571
+ let pdt = this.f_preset_dt.replace('T', ' ')
572
+ this.$androidUtil.bzLogic('PCbookingCheck', { id: this.model.rows[this.param].id, dt: pdt }).then((res) => {
573
+ this.$set('model.rows[' + this.param + '].f_prearranged_date', pdt)
574
+ if (res.data.code == 200) {
575
+ alert("预约成功!")
576
+ }
577
+ this.showModal = false
578
+ })
579
+ }
580
+ },
581
+ inspect(row) {
582
+ var _this = this
583
+ let http = new HttpResetClass()
584
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {
585
+ data: {
586
+ items: 'id',
587
+ tablename: 't_check_plan_item',
588
+ condition: `id = '${row.id}'`,
589
+ orderitem: ' id '
590
+ }
591
+ }, { resolveMsg: null, rejectMsg: null }).then((getcheckplan) => {
592
+ console.log('getcheckplan=', JSON.stringify(getcheckplan))
593
+ this.getcheckplandata = getcheckplan.data[0]
594
+ if (this.getcheckplandata) {
595
+ if (row.f_upload_state == '未传' || (row.f_upload_state == '已传' && row.f_state == '未检' && row.f_no_checkplan != '无计划安检')) {
596
+ _this.$resetpost(`${_this.$androidUtil.getProxyUrl()}/rs/sql/查询计划项表信息`, { data: { f_userid: row.f_userinfoid } }, { resolveMsg: null, rejectMsg: null }).then((response) => {
597
+ row['f_plan_meters'] = response.data
598
+ var pardate = {
599
+ _this: _this,
600
+ title: '安全检查',
601
+ safe: true
602
+ }
603
+ _this.$dispatch('gotoson', pardate)
604
+ _this.$goto('safecheck-order-v', { f_plan_id: row.f_plan_id, item: row, role: 'inspect', parentPage: 'CurrentCreate' }, 'self', _this.reload)
605
+ }).catch((msg) => {
606
+ this.$showMessage("网络异常,请检查网络后再试!")
607
+ })
608
+ } else {
609
+ this.$showMessage("该安检单已被上传!")
610
+ }
611
+ } else {
612
+ this.$showMessage("该用户安检单已被移除,请联系管理员确认!")
613
+ }
614
+ })
615
+ },
616
+ makeAPhoneCall(phoneNumber) {
617
+ this.$androidUtil.makeAPhoneCall(phoneNumber)
618
+ },
619
+ reserve(idx) {
620
+ this.param = idx
621
+ this.showModal = true
622
+ },
623
+ search(args) {
624
+ this.model.rows = []
625
+ this.model.search(args.condition, args.model)
626
+ },
627
+ selfSearch() {
628
+ let condition = ""
629
+ if (Array.isArray(this.$refs.paged.$refs.cri.model.f_residential_area) && this.$refs.paged.$refs.cri.model.f_residential_area.length > 0) {
630
+ condition += " and ti.f_residential_area = '" + this.$refs.paged.$refs.cri.model.f_residential_area[0] + "'"
631
+ } else if (this.$refs.paged.$refs.cri.model.f_residential_area instanceof String && this.$refs.paged.$refs.cri.model.f_residential_area) {
632
+ condition += " and ti.f_residential_area = '" + this.$refs.paged.$refs.cri.model.f_residential_area + "'"
633
+ }
634
+ if (this.$refs.paged.$refs.cri.model.f_building)
635
+ condition += ` and ti.f_building = '${this.$refs.paged.$refs.cri.model.f_building}'`
636
+ if (this.$refs.paged.$refs.cri.model.f_unit)
637
+ condition += ` and ti.f_unit = '${this.$refs.paged.$refs.cri.model.f_unit}'`
638
+ if (this.planName) {
639
+ condition += " and f_plan_name like '%" + this.planName + "%'"
640
+ } else {
641
+ if (this.$refs.paged.$refs.cri.model.f_plan_name)
642
+ condition += " and f_plan_name like '%" + this.$refs.paged.$refs.cri.model.f_plan_name + "%'"
643
+ }
644
+ condition += " and ti.f_userinfo_code like '%" + this.$refs.paged.$refs.cri.model.f_userinfo_code + "%'"
645
+ if (this.$refs.paged.$refs.cri.model.f_keyword)
646
+ condition += " and ti.f_address like '%" + this.$refs.paged.$refs.cri.model.f_keyword + "%'"
647
+ if (this.$refs.paged.$refs.cri.model.f_user_name)
648
+ condition += " and ti.f_user_name like '%" + this.$refs.paged.$refs.cri.model.f_user_name + "%'"
649
+ if (this.$refs.paged.$refs.cri.model.f_state[0])
650
+ condition += " and ti.f_state='" + this.$refs.paged.$refs.cri.model.f_state[0] + "'"
651
+ if (this.$refs.paged.$refs.cri.model.f_user_type[0])
652
+ condition += " and ti.f_user_type='" + this.$refs.paged.$refs.cri.model.f_user_type[0] + "'"
653
+ if (this.$refs.paged.$refs.cri.model.f_meter_no)
654
+ condition += " and tm.f_meter_no like '%" + this.$refs.paged.$refs.cri.model.f_meter_no + "%'"
655
+ if (this.$refs.paged.$refs.cri.model.f_user_phone) {
656
+ condition += `and ti.f_user_phone like '%${this.$refs.paged.$refs.cri.model.f_user_phone}%'`
657
+ }
658
+ if (this.$refs.paged.$refs.cri.model.f_enter_number)
659
+ condition += " and ti.f_enter_number like '%" + this.$refs.paged.$refs.cri.model.f_enter_number + "%'"
660
+ if (this.$refs.paged.$refs.cri.model.f_check_version)
661
+ condition += " and ti.f_check_version <= " + this.$refs.paged.$refs.cri.model.f_check_version
662
+ if (this.row.f_plan_id){
663
+ condition += ` and ti.f_plan_id = '${this.row.f_plan_id}'`
664
+ }
665
+ if(this.row.f_residential_area){
666
+ condition += ` and ti.f_residential_area = '${this.row.f_residential_area}'`
667
+ }else {
668
+ condition += ` and ti.f_residential_area is null`
669
+ }
670
+ if (this.row.f_building){
671
+ condition += ` and ti.f_building = '${this.row.f_building}'`
672
+ }else {
673
+ condition += ` and ti.f_building is null`
674
+ }
675
+ this.model.search("((f_complete = '' or f_complete = null or f_complete = '未完成') or (f_state = '未检')) and ti.f_no_checkplan = '有计划安检'" + condition)
676
+ },
677
+ getNewOrder() {
678
+ HostApp.__this__ = this
679
+ HostApp.logicWithHint({
680
+ 'logic': 'SafeCheckServiceTimeOut',
681
+ 'callback': 'javascript:HostApp.__this__.getNewOrderCallBack()',
682
+ 'data': { params: '' },
683
+ 'backresult': 1
684
+ })
685
+ HostApp.logicWithHint({
686
+ 'logic': 'FreshPlanItem',
687
+ 'callback': 'javascript:HostApp.__this__.getNewOrderCallBack()',
688
+ 'data': { params: '' },
689
+ 'backresult': 1
690
+ })
691
+ },
692
+ getNewOrderCallBack() {
693
+ this.selfSearch()
694
+ },
695
+ hidden() {
696
+ this.criteriaShow = !this.criteriaShow
697
+ },
698
+ setPlanParam(detailsType, event) {
699
+ if (event.srcElement.checked) {
700
+ this.planparam.push(detailsType)
701
+ } else {
702
+ if (this.planparam.length > 0) {
703
+ let planid = this.planparam.findIndex((value) => {
704
+ return value === detailsType
705
+ })
706
+ this.planparam.splice(planid, 1)
707
+
708
+ }
709
+
710
+ }
711
+ }
712
+ }
713
+ }
714
+ </script>