safecheck-client 3.0.35-10 → 3.0.35-12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,1049 +1,1049 @@
1
- <template>
2
- <div class="auto">
3
- <div style="width: 100%;height: 36px;background-color: #f1f8ff">
4
- <div style="width: 8px;height: 100%;background-color: #6aa6e2;margin-right: 20px;float: left"></div>
5
- <div style="width: auto;height:100%;float: left;"><p class="title-font" style="margin-top: 5px">拍照选项:</p></div>
6
- </div>
7
- <form novalidate class="form-horizontal" style="width: 100%;margin: auto">
8
- <div class="form-group col-sm-12 col-xs-12 col-md-12 info" style="width:100%;">
9
- <div class="text-center">
10
- <label class="font">检查说明:</label>
11
- </div>
12
- <div class="col-md-12 col-sm-12 col-xs-12" style="width: 90%;margin-left: 5px">
13
- <ol class="showInput" style="width: 90%;margin-left: 40px">
14
- <li>已对客户燃气设施进行了安全检查</li>
15
- <li>已对客户进行了安全知识宣传,并发放宣传资料</li>
16
- <li>已对客户的资料进行了登记</li>
17
- <li>已对违章及隐患之客户下发隐患整改告知书</li>
18
- </ol>
19
- </div>
20
- </div>
21
-
22
- <div class="form-group col-sm-12" style="margin-top: 10px">
23
- <div class="auto" style="width: 100%;float: left;" >
24
- <label class="text-left font">总体送气照片</label>
25
- <div class="auto">
26
- <div class="panel">
27
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
28
- <div class="row" style="height: 240px;overflow: scroll;top: 1px">
29
- <div class="row">
30
- <div class="col-xs-4 col-sm-3 col-md-2" style="margin-bottom: 10px;margin-right: 75px" v-for="(index,img) in paper.f_overall_imgs">
31
- <img-self :src="img.f_overall_path" alt="总体送气照片" :width="150" :height="200"></img-self>
32
- </div>
33
- <div class="col-xs-4 col-sm-3 col-md-2" style="margin-bottom: 10px;margin-right: 75px" v-for="(index,img) in fileInfoData">
34
- <img-self :src="img.f_downloadURL" alt="总体送气照片" :width="150" :height="200"></img-self>
35
- </div>
36
- </div>
37
- </div>
38
- <div class="row text-right div-photo">
39
- <!--<button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_overall_path', '总体安检照片1')">拍照</button>-->
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- </div>
45
- <!--<div class="auto" style="width: 49%;float: left;margin-left: 20px">-->
46
- <!--<label class="text-left font">总体安检照片2</label>-->
47
- <!--<div class="auto">-->
48
- <!--<div class="panel">-->
49
- <!--<div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">-->
50
- <!--<div class="row" style="height: 240px;overflow: scroll;top: 1px">-->
51
- <!--<div class="col-sm-4">-->
52
- <!--<img-self :src="paper.f_overall2_path" alt="总体安检照片2" width="150" height="200"></img-self>-->
53
- <!--</div>-->
54
- <!--</div>-->
55
- <!--<div class="row text-right div-photo">-->
56
- <!--<button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_overall2_path', '总体安检照片2')">拍照</button>-->
57
- <!--</div>-->
58
- <!--</div>-->
59
- <!--</div>-->
60
- <!--</div>-->
61
- <!--</div>-->
62
- </div>
63
- <div class="form-group col-sm-12" style="margin-top: 20px">
64
- <label class="text-left font">用户签名</label>
65
- <div class="auto">
66
- <div class="panel">
67
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
68
- <div class="row" style="height: 240px;overflow: scroll;top: 1px">
69
- <div class="col-sm-4">
70
- <img :class="style__" :src="paper.f_sign_path" :width="200" :height="150" />
71
- </div>
72
- </div>
73
- <!--<div class="row text-right div-photo">-->
74
- <!--&lt;!&ndash;<button type="button" name="button" class="btn btn-primary btn-photo" @click="sign">签名</button>&ndash;&gt;-->
75
- <!--</div>-->
76
- </div>
77
- </div>
78
- </div>
79
- </div>
80
- <div class="form-group col-sm-12" v-if="paper.f_exceed_reason">
81
- <label>送气超期原因:</label><br/>
82
- <textarea style="width: 100%;" v-model="paper.f_exceed_reason"></textarea>
83
- </div>
84
- <!--<div class="form-group col-sm-12" style="margin-top: 20px">
85
- <input type="checkbox" :readonly="true" :checked="paper.f_blacklist=='是'"/><label class="text-left font" >限制该用户购气</label>
86
- <textarea if="paper.f_blacklist=='是'" id="el_ca_tx" v-model.trim="paper.f_blocking_cause" style="border-radius:4px;width: 100%;" >
87
- </textarea>
88
- </div>-->
89
- <div class="form-group col-md-12 col-sm-12 col-xs-12">
90
- <!--<div class="form-group col-md-12 col-sm-12 col-xs-12">
91
- <input type="checkbox" v-model="paper.f_defect_notified" class="showInput"/>安检通知书/隐患整改通知书
92
- </div>
93
- <div class="form-group col-md-12 col-sm-12 col-xs-12" v-if="paper.f_defect_notified">
94
- <div class="form-group col-md-12 col-sm-12 col-xs-12">
95
- <button type="button" @click="print()">打印隐患整改单</button>
96
- </div>
97
- <div class="form-group col-md-12 col-sm-12 col-xs-12">
98
- <label class="text-left font">安检通知书/隐患整改通知书照片(要求能清晰反应安检通知单和用户签字内容):</label>
99
- <div class="auto" >
100
- <div class="panel" style="padding: 10px 10px 5px 10px;">
101
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
102
- <div class="row" style="height: 240px;overflow: scroll;top: 1px">
103
- <div class="col-sm-4">
104
- <img-self :src="paper.f_notified_path" alt="安检通知书/隐患整改通知书照片" width="150" height="200"></img-self>
105
- </div>
106
- </div>
107
- <div class="row text-right div-photo">
108
- <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_notified_path', '安检通知书/隐患整改通知书照片')">拍照</button>
109
- &nbsp;&nbsp;&nbsp;&nbsp;<img src="../../assets/remove.png" :class="style__" @click="delfile('f_notified_path', this.paper.f_notified_path)" style="width: 25%;"></img>
110
- </div>
111
- </div>
112
- </div>
113
- </div>
114
- </div>
115
- </div>
116
- -->
117
- <div class="form-group col-md-12 col-sm-12 col-xs-12">
118
- <div class="row">
119
- <label class="text-left">请对我们的服务做出评价:</label>
120
- </div>
121
- <div class="col-xs-4 col-sm-4" v-for="item in radios">
122
- <input v-model="paper.f_client_evaluation" :value="item.label" :checked='item.isChecked' @click="check(item.value)" type="radio">{{item.label}}
123
- </div>
124
- </div>
125
- <!-- <div class="form-group col-md-12 col-sm-12 col-xs-12">-->
126
- <!-- <label class="text-left font">反馈录音:</label>-->
127
- <!-- <div class="col-md-12 col-sm-12 col-xs-12" v-if="!paper.f_recording1_path">-->
128
- <!-- <audio :src="paper.f_recording1_path" v-el:audio controls @click="palyAudio(row)"></audio>-->
129
- <!-- </div>-->
130
- <!-- </div>-->
131
- <div class="text-center form-group col-md-12 col-sm-12 col-xs-12">
132
- <button type="button" v-show="$parent.actionEnabled" class="btn save-btn" @click="$parent.savePaper(true)">保存</button>
133
- <button id="upload" type="button" v-show="$parent.actionEnabled && !$parent.isBusy" class="btn upload-btn" @click="$parent.uploadPaper" >上传</button>
134
- <button v-if="safeCheckToRepair && $parent.actionEnabled" class="btn repair-btn btn-warning" type="button" @click="showToRepair">转维修</button>
135
- </div>
136
- </div>
137
- </form>
138
-
139
- <modal :show.sync="showCheckToRepair" v-ref:modal :backdrop="isback">
140
- <div slot="modal-header" class="modal-header">
141
- <h4 class="modal-title">
142
- 安检转维修
143
- </h4>
144
- </div>
145
- <div slot="modal-body" class="modal-body">
146
- <div v-if="showrepair">
147
- <div class="row">
148
- <label class="col-xs-4 col-md-4 control-label text-left">派单方式</label>
149
- <div class="col-xs-8 col-md-8">
150
- <label v-for="handling1 in handling" >
151
- <input type="radio"
152
- v-model="meading"
153
- value="{{handling1.label}}">
154
- {{handling1.label}}
155
- </label>
156
- </div>
157
- </div>
158
- <div class="row" v-if="meading == '转站点'">
159
- <label class="col-xs-4 col-md-4 control-label font text-left" for="f_reciever">站点</label>
160
- <div class="col-xs-8 col-md-8">
161
- <right-tree @ready="onReady" islist :Url="Url" :userid="userid" :source="source" v-on:re-res="reres" :textContent="选择站点管理员" :selectData="" v-ref:f_reciever>
162
- </right-tree>
163
- </div>
164
- </div>
165
-
166
- <div class="row" style="margin-top: 6px" v-if="meading == '转维修员'">
167
- <label class="col-xs-4 col-md-4 control-label font text-left">维修人</label>
168
- <div class="col-xs-8">
169
- <v-select :value="model.serviceacitivity[0].f_reciever" :value-single="true"
170
- :options='f_repair_person' placeholder='请选择维修员'
171
- close-on-select v-on:change="repiarmancg"></v-select>
172
- </div>
173
-
174
- </div>
175
- <div class="row" style="margin-top: 6px">
176
- <label for="f_repair" class="col-xs-4 col-md-4 control-label font text-left">报修类型</label>
177
- <div class="col-xs-8 col-md-8">
178
- <v-select :value.sync="model.f_repairtype" :value-single="true"
179
- :options='repairstypes' placeholder='报修类型'
180
- close-on-select>
181
- </v-select>
182
- </div>
183
- </div>
184
-
185
- <div class="row" style="margin-top: 6px">
186
- <label class="control-label font text-left col-md-4 col-xs-4">备注</label>
187
- <div class="col-xs-8 col-md-8">
188
- <input type="text" v-model="model.f_remarks"/>
189
- </div>
190
-
191
- </div>
192
-
193
- </div>
194
- <div v-if="!showrepair">
195
- 暂无隐患设备信息
196
- </div>
197
- </div>
198
- <div slot="modal-footer" class="modal-footer">
199
- <button type="button" class="btn btn-default" @click="uploadPaper()">确定</button>
200
- <button type="button" class="btn btn-default" @click="undo()">取消</button>
201
- </div>
202
- </modal>
203
- </div>
204
- </template>
205
-
206
- <script>
207
- import Vue from 'vue'
208
- import * as Util from '../Util'
209
- import { HttpResetClass } from 'vue-client'
210
- import RadioGroup from 'vue-client/src/vue-strap/src/radioGroup'
211
- import Radio from 'vue-client/src/vue-strap/src/radioBtn'
212
- import co from 'co'
213
-
214
- let getRepairParam = function * (self){
215
- let data = {
216
- model: self.model, loginUser: {
217
- name: self.role == 'view'?self.$login.f.name:Vue.user.name,
218
- ename: self.role == 'view'?self.$login.f.ename:Vue.user.ename
219
- }, user: self.user, callObj: self.callObj
220
- }
221
- if(self.meading == '转维修员'){
222
- data.toRepair = '一级派单'
223
- }
224
- data.model.f_attendant = data.loginUser.name
225
- //tag
226
- //tag
227
- let res
228
- let errString = self.$parent.errorVerify()
229
- if(errString){
230
- //tag
231
- if (Vue.android)
232
- self.undo()
233
- this.$showMessage(errString)
234
- return
235
- } else {
236
- if(self.role == 'inspect'){
237
- if(self.meading == '转维修员' && (self.model.serviceacitivity[0].f_reciever == '' || self.model.serviceacitivity[0].f_reciever == undefined)){
238
- this.$showMessage("请选择维修员!")
239
- return
240
- }
241
- if(self.meading == '转站点' && (self.model.serviceacitivity[0].f_reciever == '' || self.model.serviceacitivity[0].f_reciever == undefined)){
242
- this.$showMessage("请选择站点!")
243
- return
244
- }
245
- if(self.model.f_repairtype == ''){
246
- this.$showMessage("请选择报修类型!")
247
- return
248
- }
249
- //tag)
250
- let checkResult = '正常'
251
- let options = [{"data": "已处理"},{"data": "未处理"}]
252
- let value = ''
253
- let codata = JSON.parse(JSON.stringify(self.paper))
254
- for(let device in codata){
255
- //tag)
256
- let f_device_type
257
- if(device.startsWith("device")){
258
- for(let item in codata[device]) {
259
- if(codata[device].length > 1 ){
260
- let j = Number.parseInt(item)+1
261
- f_device_type = `${codata[device][item].f_device_type}${j}`
262
- }else{
263
- f_device_type = codata[device][item].f_device_type
264
- }
265
- // //tag
266
- let details = []
267
- for(let i in codata[device][item].f_items){
268
- let items = codata[device][item].f_items[i]
269
- //tag
270
- if(items.f_is_defect == true || items.f_is_defect == 'true'){
271
- checkResult = '有隐患'
272
- //tag
273
- let res = yield self.$resetpost(`${self.Url}/rs/sql/getDeviceItem`,{data:{f_device_id:codata[device][item].f_device_id,f_item_name:items.f_item_name}})
274
- //tag)
275
- self.$set('detail.f_defect_id', res.data[0].id)
276
- self.$set('detail.f_project',`${items.f_item_name}:${items.f_item_value}`)
277
- self.$set('detail.type',items.type)
278
- self.$set('detail.options',options)
279
- details.push(JSON.parse(JSON.stringify(self.detail)))
280
- }
281
- if(items.type == 'selector'){
282
- items.selected = ''
283
- }
284
- self.detail = {}
285
- }
286
- //tag
287
- self.$set('defectDevice.f_type',f_device_type)
288
- self.$set('defectDevice.details',details)
289
- if(self.defectDevice.details.length >0 ){
290
- self.repairitems.push(JSON.parse(JSON.stringify(self.defectDevice)))
291
- }
292
- self.defectDevice = {}
293
- //tag
294
- }
295
- }
296
- }
297
- self.$set('model.f_repairitems.data',self.repairitems)
298
-
299
-
300
- //tag)
301
- res = self.$androidUtil.bzLogic('safecheckToRepair',data)
302
- //tag
303
- //tag
304
- //tag
305
- if(res.code == 200){
306
- self.$parent.isSafeCheckToRepair = true
307
- self.undo()
308
- self.$set('paper.f_SafeToRepair_id',res.data.f_service_id)
309
- //tag
310
- self.$resetpost(`${self.Url}/rs/logic/updatePaperRepair`,{data:{f_paper_id:self.paper.f_paper_id,f_SafeToRepair_id:res.data.f_service_id}}).then((ret)=>{
311
- //tag
312
- if(ret.data.code ==200){
313
- //tag
314
- self.$parent.$back()
315
- }else{
316
- self.$showMessage('安检转维修失败!')
317
- }
318
- }).catch(v=>{
319
- //tag)
320
- self.$showMessage('安检转维修失败!')
321
- })
322
- }else{
323
- self.$showMessage('安检转维修失败!')
324
- }
325
- }
326
- }
327
- }
328
-
329
-
330
-
331
- let getRepairs = async function(self,url) {
332
- // 获取配置信息
333
- try {
334
- let val = {source: 'this.getParentByType($department$).getChildByName($维修员$).getUsers()', userid: `${Vue.$login.jwt}`}
335
- let repairs =[]
336
- let res = await Vue.resetpost(`${url}/rs/search`,{data: val},{resolveMsg: null, rejectMsg: null})
337
- res.data.forEach((item) => {
338
- repairs.push({label: item.name, value: item})
339
- })
340
- self.f_repair_person = repairs
341
- if(self.$parent.role == 'inspect'){
342
- let res = self.$androidUtil.bzLogic('getUserInfo',{id:self.paper.f_userinfoid})
343
- if(res.code == 200){
344
- self.user = res.data[0]
345
- self.model.f_area = self.user.f_area
346
- }
347
- }else{
348
- //tag
349
- self.$resetpost(`${self.Url}/rs/sql/safeCheckgetUserInfo`,{data:{id:self.paper.f_userinfoid}},{resolveMsg: null, rejectMsg: null}).then((res)=>{
350
- //tag
351
- if(res.data.length != 0){
352
- self.user = res.data[0]
353
- self.model.f_area = self.user.f_area
354
- }
355
- })
356
- // path({alias:'getUserInfo',data:{id:this.paper.f_userinfoid}})
357
- }
358
- } catch (error) {
359
- //tag
360
- }
361
- }
362
-
363
- export default {
364
- title: '用户反馈',
365
- data() {
366
- return {
367
- fileInfoData:[],
368
- paper:this.$parent.data,
369
- printContent:[],
370
- radios:[
371
- {
372
- label: '满意',
373
- value: 0,
374
- isChecked: false,
375
- },
376
- {
377
- label: '基本满意',
378
- value:1,
379
- isChecked: false,
380
- },
381
- {
382
- label: '不满意',
383
- value:2,
384
- isChecked: false,
385
- },
386
- ],
387
- model: {
388
- // 一次派单
389
- serviceacitivity: [{
390
- f_service_acitivity_type: '派单'
391
- }],
392
- f_source:'安检',
393
- f_service_id: '',
394
- f_contact_phone: '',
395
- f_meetunit: '',
396
- f_phone: '',
397
- f_user_name: '',
398
- f_address: '',
399
- f_repair_date: Util.toStandardTimeString(),
400
- f_card_id: '',
401
- // f_department: '', 站点选择
402
- f_reciever:'',
403
- f_remarks: '',
404
- f_user_type: '',
405
- f_area: '',
406
- f_unit_name:'',
407
- f_street: '',
408
- f_residential_area: '',
409
- f_building: '',
410
- f_unit: '',
411
- f_floor: '',
412
- f_room: '',
413
- aState: null,
414
- f_repairtype: '',
415
- f_repairitems:{},
416
- },
417
- repairitems:[],
418
- repairstypes:this.$appdata.getParam('报修类型'),
419
- //f_repair_person: this.readRepair(),
420
- showrepair: false,
421
- safeCheckToRepair:'',
422
- showCheckToRepair:false,
423
- userid: '',
424
- source:
425
- 'dep=this.getParentByType($organization$).getSpecialResByType($department$),' +
426
- 'tool.getFullTree(dep.where(row.getChildByName($派单员$) != null))',
427
- isback:false,
428
- defectDevice:{},
429
- detail:{},
430
- callObj:null,
431
- user:{},
432
- role:this.$parent.role,
433
- handling:[{label:'转站点',value:'转站点'},{label:'转维修员',value:'转维修员'}],
434
- meading:'转站点',
435
- Url:this.$androidUtil.getProxyUrl()
436
- }
437
- },
438
- props: ['idx','item'],
439
- components: {
440
- RadioGroup,
441
- Radio
442
- },
443
- methods: {
444
- //获取pc上传的送气全景照片
445
- getGaspic() {
446
- let data = {
447
- tablename: 't_files',
448
- condition: `f_blobid = '${this.item.id}' order by f_uploaddate desc `
449
- }
450
- let http = new HttpResetClass()
451
- http.load('post', 'rs/sql/singleTable', {data: data}, {
452
- resolveMsg: null,
453
- rejectMsg: null
454
- }).then(getFile=> {
455
- for (var i = 0; i < getFile.data.length; i++) {
456
- let temp = getFile.data[i].f_downloadpath
457
- if (temp) {
458
- let URL = temp.substring(temp.lastIndexOf(":\\") + 2)
459
- if (temp.startsWith('E:')){
460
- URL = `rs/image/file/${getFile.data[i].f_filename}`
461
- }
462
- console.log(URL)
463
- getFile.data[i].f_downloadURL = "http://" + location.host + "/" + URL
464
- }
465
- }
466
- this.fileInfoData = []
467
- this.fileInfoData = getFile.data
468
- })
469
- },
470
- check(index) {
471
- //tag
472
- // 先取消所有选中项
473
- for (let item of this.radios){
474
- item.isChecked = false;
475
- }
476
- //再设置当前点击项选中
477
- this.paper.f_client_evaluation = this.radios[index].label;
478
- // 设置值,以供传递
479
- this.radios[index].isChecked = true;
480
- //tag;
481
- },
482
- getSignValue(fileName) {
483
- this.f_signname = fileName
484
- },
485
- cameraCallBack(prop, fileName) {
486
- HostApp.__this__.paper[prop] = fileName + '?' + Math.random()
487
- HostApp.__callback__ = null
488
- HostApp.__this__ = null
489
- },
490
- takePic(prop, title) {
491
- HostApp.__callback__ = this.cameraCallBack
492
- HostApp.__this__ = this
493
- //tag
494
- //tag
495
- let fileName
496
- if (!this.paper[prop] || this.paper[prop].includes("nopic.png")) {
497
- fileName = Util.guid() + '-' + prop + '.jpg'
498
- } else {
499
- fileName = Util.getFileName(this.paper[prop])
500
- }
501
- HostApp._open_a_page({
502
- type: 'boomerang',
503
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
504
- param: {
505
- file: fileName,
506
- requestCode: 111,
507
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
508
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
509
- }
510
- })
511
- },
512
- amrCallBack(fileName) {
513
- HostApp.__this__.$set('paper.f_recording1_path', fileName)
514
- HostApp.__callback__ = null
515
- HostApp.__this__ = null
516
- },
517
- record() {
518
- if (this.$parent.role != 'inspect') {
519
- if (this.paper.f_recording1_path != '') {
520
- window.location = this.paper.f_recording1_path
521
- }
522
- } else {
523
- HostApp.__callback__ = this.amrCallBack
524
- HostApp.__this__ = this
525
- let fileName
526
- if (!this.paper.f_recording1_path) {
527
- fileName = Util.guid() + '.amr'
528
- } else {
529
- fileName = Util.getFileName(this.paper.f_recording1_path)
530
- }
531
- HostApp._open_a_page({
532
- type: 'boomerang',
533
- page: 'com.aofeng.hybrid.android.peripheral.AudioClipActivity',
534
- param: {file: fileName, requestCode: 111, callback: 'javascript:HostApp.__callback__("%s");'}
535
- })
536
- }
537
- },
538
- // 签名回调
539
- signCallback(prop, fileName) {
540
- // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
541
- HostApp.__this__.$set('paper.f_sign_path', fileName)
542
- HostApp.__callback__ = null
543
- HostApp.__this__ = null
544
- },
545
- // 用户签名
546
- sign() {
547
- this.delAudioFile('f_sign_path', this.paper.f_sign_path)
548
- let prop = 'f_sign_path'
549
- let idx = 'aofeng'
550
- let fileName
551
- if (!this.paper.f_sign_path) {
552
- fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
553
- } else {
554
- fileName = Util.getFileName(this.paper.f_sign_path)
555
- }
556
- HostApp.__callback__ = this.signCallback
557
- HostApp.__this__ = this
558
- HostApp.getSignature({
559
- file: fileName,
560
- requestCode: 111,
561
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
562
- })
563
- },
564
- delfile(prop, fileName) {
565
- if (fileName == Vue.nopic)
566
- return
567
- else {
568
- HostApp.delfile(fileName)
569
- this.paper[prop] = Vue.nopic
570
- }
571
- },
572
- delAudioFile(prop, fileName) {
573
- if (!fileName)
574
- return
575
- else {
576
- HostApp.delfile(fileName)
577
- this.paper[prop] = null
578
- }
579
- },
580
- //获取打印用户信息
581
- getUser() {
582
- if (this.paper.f_user_name == undefined)
583
- this.paper.f_user_name = ''
584
- this.printContent.push({type: 3, text: '用户名称:' + this.paper.f_user_name, fontsize: 2, isbold: false, align: 'left'})
585
- if (this.paper.f_userinfo_code == undefined)
586
- this.paper.f_userinfo_code = ''
587
- this.printContent.push({type: 3, text: '用户编号:' + this.paper.f_userinfo_code, fontsize: 2, isbold: false, align: 'left'})
588
- if (this.paper.f_address == undefined)
589
- this.paper.f_address = ''
590
- this.printContent.push({type: 3, text: '地址:' + this.paper.f_address, fontsize: 2, isbold: false, align: 'left'})
591
- if (this.paper.f_user_phone == undefined)
592
- this.paper.f_user_phone = ''
593
- this.printContent.push({type: 3, text: '电话:' + this.paper.f_user_phone, fontsize: 2, isbold: false, align: 'left'})
594
- },
595
- verify(){
596
- let hasError = this.$parent.verifyUser()
597
- if(hasError)
598
- return hasError
599
- hasError = this.$parent.verifyDevices()
600
- if(hasError)
601
- return hasError
602
- },
603
- print() {
604
- let errString = this.verify()
605
- if (errString) {
606
- //tag
607
- if (Vue.android)
608
- this.$showMessage(errString)
609
- return
610
- }
611
- // 文本
612
- let templatename = '安检结果单'
613
- if(Vue.config.safecheck != undefined) {
614
- if (Vue.config.safecheck.ApproveConfig != undefined) {
615
- if (Vue.config.safecheck.ApproveConfig.templatename != undefined) {
616
- templatename = Vue.config.safecheck.ApproveConfig.templatename
617
- }
618
- }
619
- }
620
- let textHead = {type: 3, text: templatename, fontsize: 3, isbold: true, align: 'center'}
621
- let feedPageHead = {type: 4, value: 2, unit: 'line'}
622
- let feedPageEnd = {type: 4, value: 4, unit: 'line'}
623
- this.printContent.push(textHead)
624
- this.printContent.push(feedPageHead)
625
- this.getUser()
626
- this.getDefect()
627
- this.getCheck()
628
- this.printContent.push(feedPageEnd)
629
- let arrstr = JSON.stringify(this.printContent)
630
- //tag
631
- this.$androidUtil.print(arrstr)
632
- this.$set('printContent', [])
633
- },
634
- //打印安检信息
635
- getCheck() {
636
- let telephone = '96777'
637
- if(Vue.config.safecheck != undefined) {
638
- if (Vue.config.safecheck.ApproveConfig != undefined) {
639
- if (Vue.config.safecheck.ApproveConfig.checkphone != undefined) {
640
- telephone = Vue.config.safecheck.ApproveConfig.checkphone
641
- }
642
- }
643
- }
644
- this.printContent.push({type: 3, text: '*******************************', fontsize: 3, isbold: false, align: 'center'})
645
- this.printContent.push({type: 3, text: '咨询电话;'+telephone, fontsize: 2, isbold: false, align: 'left'})
646
- this.printContent.push({type: 3, text: '安检人:'+Vue.user.name, fontsize: 2, isbold: false, align: 'left'})
647
- this.printContent.push({type: 3, text: '安检时间:' + this.getNowFormatDate(), fontsize: 2, isbold: false, align: 'left'})
648
- this.printContent.push({type: 3, text: '用户签字:', fontsize: 2, isbold: false, align: 'left'})
649
- this.printContent.push({type: 4, value: 4, unit: 'line'})
650
- },
651
-
652
- getDefect() {
653
- let showmore = false
654
- if(Vue.config.safecheck != undefined) {
655
- if (Vue.config.safecheck.ApproveConfig != undefined) {
656
- if (Vue.config.safecheck.ApproveConfig.showmore != undefined) {
657
- showmore = Vue.config.safecheck.ApproveConfig.showmore
658
- }
659
- }
660
- }
661
-
662
- let backData = this.$parent.getAllDefect()
663
- // 对隐患信息进行遍历
664
- let res = JSON.parse(backData.f_defect_content)
665
- this.printContent.push({
666
- type: 3,
667
- text: '安检结果:' + res.result,
668
- fontsize: 2,
669
- isbold: false,
670
- align: 'left'
671
- })
672
- this.printContent.push({type: 3, text: '*******************************', fontsize: 3, isbold: false, align: 'center'})
673
-
674
-
675
- if(showmore) {
676
- //全部打印
677
- for (let dev in this.$parent.config) {
678
- for (let device in backData) {
679
- if (device.startsWith("device")) {
680
- for (let item in backData[device]) {
681
- //遍历结果
682
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
683
- let error = true
684
- for (let i in backData[device][item].f_items) {
685
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
686
- error = false
687
- }
688
- }
689
- if (error) {
690
- this.printContent.push({
691
- type: 3,
692
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':正常',
693
- fontsize: 2,
694
- isbold: false,
695
- align: 'left'
696
- })
697
- } else {
698
- this.printContent.push({
699
- type: 3,
700
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':有隐患',
701
- fontsize: 2,
702
- isbold: true,
703
- align: 'left'
704
- })
705
- }
706
-
707
- for (let i in backData[device][item].f_items) {
708
- if (backData[device][item].f_items[i].f_item_value != '' && backData[device][item].f_items[i].f_item_value != null) {
709
- this.printContent.push({
710
- type: 3,
711
- text: backData[device][item].f_items[i].f_item_name + backData[device][item].f_items[i].f_item_value,
712
- fontsize: 2,
713
- isbold: false,
714
- align: 'left'
715
- })
716
- }
717
- }
718
- this.printContent.push({type: 4, value: 2, unit: 'line'})
719
- }
720
- }
721
- }
722
- }
723
- }
724
-
725
- for (let dev in this.$parent.config) {
726
- for (let device in backData) {
727
- if (device.startsWith("device")) {
728
- for (let item in backData[device]) {
729
- //遍历结果
730
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
731
- let error = true
732
- for (let i in backData[device][item].f_items) {
733
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
734
- error = false
735
- }
736
- }
737
- if (!error) {
738
- this.printContent.push({
739
- type: 3,
740
- text: '隐患:',
741
- fontsize: 2,
742
- isbold: true,
743
- align: 'left'
744
- })
745
- }
746
- }
747
- }
748
- }
749
- }
750
- for (let device in backData) {
751
- if (device.startsWith("device")) {
752
- for (let item in backData[device]) {
753
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
754
- for (let i in backData[device][item].f_items) {
755
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
756
- this.printContent.push({
757
- type: 3,
758
- text: backData[device][item].f_items[i].f_item_name + ' ' + backData[device][item].f_items[i].f_item_value,
759
- fontsize: 2,
760
- isbold: true,
761
- align: 'left'
762
- })
763
- }
764
- }
765
- }
766
- }
767
- }
768
- }
769
-
770
- }
771
- }else {
772
- for (let dev in this.$parent.config) {
773
- for (let device in backData) {
774
- if (device.startsWith("device")) {
775
- for (let item in backData[device]) {
776
- //遍历结果
777
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
778
- let error = true
779
- for (let i in backData[device][item].f_items) {
780
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
781
- error = false
782
- }
783
- }
784
- if (error) {
785
- this.printContent.push({
786
- type: 3,
787
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':正常',
788
- fontsize: 2,
789
- isbold: false,
790
- align: 'left'
791
- })
792
- } else {
793
- this.printContent.push({
794
- type: 3,
795
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':有隐患',
796
- fontsize: 2,
797
- isbold: false,
798
- align: 'left'
799
- })
800
- }
801
-
802
- for (let i in backData[device][item].f_items) {
803
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
804
- this.printContent.push({
805
- type: 3,
806
- text: '隐患:' + backData[device][item].f_items[i].f_item_name + backData[device][item].f_items[i].f_item_value,
807
- fontsize: 2,
808
- isbold: false,
809
- align: 'left'
810
- })
811
- }
812
- }
813
- this.printContent.push({type: 4, value: 2, unit: 'line'})
814
- }
815
- }
816
- }
817
- }
818
- }
819
- }
820
- },
821
- //获取当前时间
822
- getNowFormatDate(){
823
- var date = new Date();
824
- var seperator1 = "-";
825
- var seperator2 = ":";
826
- var month = date.getMonth() + 1;
827
- var strDate = date.getDate();
828
- if (month >= 1 && month <= 9) {
829
- month = "0" + month;
830
- }
831
- if (strDate >= 0 && strDate <= 9) {
832
- strDate = "0" + strDate;
833
- }
834
- var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
835
- + " " + date.getHours() + seperator2 + date.getMinutes()
836
- + seperator2 + date.getSeconds();
837
- return currentdate;
838
- },
839
- readRepair () {
840
- let url = this.$androidUtil.getProxyUrl()
841
- let gen = getRepairs(this,url)
842
- return co(gen)
843
- },
844
- showToRepair(){
845
- let res = this.hasDefect()
846
- //tag
847
- //tag
848
- if(res == '正常'){
849
- this.showrepair = false
850
- }else{
851
- this.showrepair = true
852
- this.assignObj()
853
- }
854
- this.showCheckToRepair = !this.showCheckToRepair
855
- },
856
- // 选中部门
857
- reres(val){
858
- if(val.res == undefined){
859
- return
860
- }
861
- this.model.serviceacitivity[0].f_meetunit = val.res
862
- this.model.f_meetunit = val.res
863
- this.model.f_orgstr = val.resids
864
- var arr = val.res.split('.')
865
- this.model.f_outlets = arr[arr.length - 1]
866
- this.model.serviceacitivity[0].f_reciever = val.resids
867
- },
868
- assignObj(){
869
- this.model.f_contact_phone = this.paper.f_user_phone
870
- this.model.f_user_name = this.paper.f_user_name
871
- this.model.f_address = this.paper.f_address
872
- this.model.f_user_type = this.paper.f_check_type
873
- this.model.f_street = this.paper.f_street
874
- this.model.f_residential_area = this.paper.f_residential_area
875
- this.model.f_building = this.paper.f_building
876
- this.model.f_unit = this.paper.f_unit
877
- this.model.f_floor = this.paper.f_floor
878
- this.model.f_room = this.paper.f_room
879
- this.model.f_floor = this.paper.f_floor
880
- this.model.f_userinfo_id = this.paper.f_userinfoid
881
- this.model.f_userinfo_code = this.paper.f_userinfo_code
882
- },
883
- hasDefect(){
884
- let checkResult = '正常'
885
- let codata = JSON.parse(JSON.stringify(this.paper))
886
- for(let device in this.paper){
887
- if(device.startsWith("device")){
888
- for(let item in this.paper[device]) {
889
- for(let i in this.paper[device][item].f_items){
890
- let items = this.paper[device][item].f_items[i]
891
- //tag
892
- if(items.f_is_defect == true || items.f_is_defect == 'true'){
893
- checkResult = '有隐患'
894
- }
895
- }
896
- }
897
- }
898
- }
899
- return checkResult
900
- },
901
- uploadPaper() {
902
- if(this.showrepair){
903
- this.$parent.isToRepair = true
904
- this.$parent.savePaper(false).then((res) => {
905
- //tag
906
- if(res != true){
907
- //tag
908
- return
909
- }else{
910
- //TODO 上传成功 转维修失败
911
- this.todo()
912
- }
913
- })
914
- }else{
915
- this.undo()
916
- }
917
-
918
- },
919
- //确认安检转维修
920
- todo(){
921
- let gen = getRepairParam(this)
922
- co(gen)
923
- },
924
- undo(){
925
- this.showCheckToRepair = !this.showCheckToRepair
926
- this.model.serviceacitivity[0].f_reciever = ''
927
- this.model.serviceacitivity[0].f_meetunit = ''
928
- this.model.f_repairtype = ''
929
- this.meading = '转站点'
930
- },
931
- repiarmancg(val){
932
- if(val){
933
- //tag
934
- this.model.serviceacitivity[0].f_reciever = val.name
935
- let http1 = new HttpResetClass()
936
- http1.load('POST',`${this.Url}/rs/sql/tel_singleTable_OrderBy`, {data: {
937
- items: 'f_user_telephone',
938
- tablename: 't_user',
939
- condition: `name = '${val}'`,
940
- orderitem: 'id'
941
- }}, {resolveMsg: null, rejectMsg: null}).then((ress) => {
942
- this.model.f_repairman_phone = ress.data[0].f_user_telephone
943
- })
944
- }
945
- },
946
- },
947
- ready() {
948
- for (let item of this.radios){
949
- if(this.paper.f_client_evaluation == item.label){
950
- item.isChecked = true;
951
- }
952
- }
953
- //tag
954
- //tag
955
- //tag
956
- //tag
957
- if (!this.paper.f_notified_path)
958
- this.$set('paper.f_notified_path', Vue.nopic)
959
- if (!this.paper.f_sign_path)
960
- this.$set('paper.f_sign_path', Vue.nopic)
961
- if (!this.paper.f_overall_imgs){
962
- let imgs = []
963
- // imgs.push({f_overall_path:Vue.nopic})
964
- this.$set('paper.f_overall_imgs', imgs)
965
- //tag
966
- }
967
- if (!this.paper.f_overall2_path)
968
- this.$set('paper.f_overall2_path', Vue.nopic)
969
-
970
- this.userid = this.role == 'view'? this.$login.f.id:Vue.user.id
971
- if(Vue.config.safecheck != undefined){
972
- if(Vue.config.safecheck.ApproveConfig != undefined){
973
- if(Vue.config.safecheck.ApproveConfig.safeCheckToRepair != undefined) {
974
- this.safeCheckToRepair = Vue.config.safecheck.ApproveConfig.safeCheckToRepair
975
- }
976
- }
977
- }
978
- //tag
979
- //tag
980
- this.getGaspic()
981
- },
982
- watch:{
983
- '$parent.isUpload'(val){
984
- //tag
985
- }
986
- }
987
- }
988
- </script>
989
- <style>
990
- .text-left{
991
- text-align:left;
992
- }
993
- .font{
994
- font: 15px PingFang-SC-Medium;
995
- color: #333333;
996
- }
997
- .showInput{
998
- font: 14px PingFang-SC-Medium;
999
- color: #666666;
1000
- }
1001
- .info{
1002
- margin-top: 15px;
1003
- border-radius: 5px;
1004
- background-color: #f3faff;
1005
- }
1006
- .btn-photo{
1007
- border: 0;
1008
- border-radius: 7px;
1009
- background-color: #7dc1f4;
1010
- font: 15px PingFang-SC-Bold;
1011
- height: 20%;
1012
- }
1013
- .div-photo{
1014
- width: auto;
1015
- height: auto;
1016
- /* margin-top: 10px; */
1017
- position: absolute;
1018
- bottom: 10px;
1019
- right: 10px;
1020
- }
1021
- .btn-voice{
1022
- border-radius: 7px;
1023
- border: 1px solid #dedede;
1024
- background-color: #f5fbff;
1025
- font: 15px PingFang-SC-Bold;
1026
- color: #499edf;
1027
- }
1028
- .save-btn{
1029
- width: 25%;
1030
- background-color:#499edf;
1031
- border-radius: 6px;
1032
- color: #FFFFFF;
1033
- font: 15px PingFang-SC-Bold;
1034
- }
1035
- .upload-btn{
1036
- width: 25%;
1037
- background-color:#ffffff;
1038
- border: 1px solid #499edf;
1039
- border-radius: 6px;
1040
- color: #499edf;
1041
- font: 15px PingFang-SC-Bold;
1042
- }
1043
- .repair-btn{
1044
- width: 25%;
1045
- border: 1px solid #499edf;
1046
- border-radius: 6px;
1047
- font: 15px PingFang-SC-Bold;
1048
- }
1049
- </style>
1
+ <template>
2
+ <div class="auto">
3
+ <div style="width: 100%;height: 36px;background-color: #f1f8ff">
4
+ <div style="width: 8px;height: 100%;background-color: #6aa6e2;margin-right: 20px;float: left"></div>
5
+ <div style="width: auto;height:100%;float: left;"><p class="title-font" style="margin-top: 5px">拍照选项:</p></div>
6
+ </div>
7
+ <form novalidate class="form-horizontal" style="width: 100%;margin: auto">
8
+ <div class="form-group col-sm-12 col-xs-12 col-md-12 info" style="width:100%;">
9
+ <div class="text-center">
10
+ <label class="font">检查说明:</label>
11
+ </div>
12
+ <div class="col-md-12 col-sm-12 col-xs-12" style="width: 90%;margin-left: 5px">
13
+ <ol class="showInput" style="width: 90%;margin-left: 40px">
14
+ <li>已对客户燃气设施进行了安全检查</li>
15
+ <li>已对客户进行了安全知识宣传,并发放宣传资料</li>
16
+ <li>已对客户的资料进行了登记</li>
17
+ <li>已对违章及隐患之客户下发隐患整改告知书</li>
18
+ </ol>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="form-group col-sm-12" style="margin-top: 10px">
23
+ <div class="auto" style="width: 100%;float: left;" >
24
+ <label class="text-left font">总体送气照片</label>
25
+ <div class="auto">
26
+ <div class="panel">
27
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
28
+ <div class="row" style="height: 240px;overflow: scroll;top: 1px">
29
+ <div class="row">
30
+ <div class="col-xs-4 col-sm-3 col-md-2" style="margin-bottom: 10px;margin-right: 75px" v-for="(index,img) in paper.f_overall_imgs">
31
+ <img-self :src="img.f_overall_path" alt="总体送气照片" :width="150" :height="200"></img-self>
32
+ </div>
33
+ <div class="col-xs-4 col-sm-3 col-md-2" style="margin-bottom: 10px;margin-right: 75px" v-for="(index,img) in fileInfoData">
34
+ <img-self :src="img.f_downloadURL" alt="总体送气照片" :width="150" :height="200"></img-self>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="row text-right div-photo">
39
+ <!--<button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_overall_path', '总体安检照片1')">拍照</button>-->
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <!--<div class="auto" style="width: 49%;float: left;margin-left: 20px">-->
46
+ <!--<label class="text-left font">总体安检照片2</label>-->
47
+ <!--<div class="auto">-->
48
+ <!--<div class="panel">-->
49
+ <!--<div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">-->
50
+ <!--<div class="row" style="height: 240px;overflow: scroll;top: 1px">-->
51
+ <!--<div class="col-sm-4">-->
52
+ <!--<img-self :src="paper.f_overall2_path" alt="总体安检照片2" width="150" height="200"></img-self>-->
53
+ <!--</div>-->
54
+ <!--</div>-->
55
+ <!--<div class="row text-right div-photo">-->
56
+ <!--<button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_overall2_path', '总体安检照片2')">拍照</button>-->
57
+ <!--</div>-->
58
+ <!--</div>-->
59
+ <!--</div>-->
60
+ <!--</div>-->
61
+ <!--</div>-->
62
+ </div>
63
+ <div class="form-group col-sm-12" style="margin-top: 20px">
64
+ <label class="text-left font">用户签名</label>
65
+ <div class="auto">
66
+ <div class="panel">
67
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
68
+ <div class="row" style="height: 240px;overflow: scroll;top: 1px">
69
+ <div class="col-sm-4">
70
+ <img :class="style__" :src="paper.f_sign_path" :width="200" :height="150" />
71
+ </div>
72
+ </div>
73
+ <!--<div class="row text-right div-photo">-->
74
+ <!--&lt;!&ndash;<button type="button" name="button" class="btn btn-primary btn-photo" @click="sign">签名</button>&ndash;&gt;-->
75
+ <!--</div>-->
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ <div class="form-group col-sm-12" v-if="paper.f_exceed_reason">
81
+ <label>送气超期原因:</label><br/>
82
+ <textarea style="width: 100%;" v-model="paper.f_exceed_reason"></textarea>
83
+ </div>
84
+ <!--<div class="form-group col-sm-12" style="margin-top: 20px">
85
+ <input type="checkbox" :readonly="true" :checked="paper.f_blacklist=='是'"/><label class="text-left font" >限制该用户购气</label>
86
+ <textarea if="paper.f_blacklist=='是'" id="el_ca_tx" v-model.trim="paper.f_blocking_cause" style="border-radius:4px;width: 100%;" >
87
+ </textarea>
88
+ </div>-->
89
+ <div class="form-group col-md-12 col-sm-12 col-xs-12">
90
+ <!--<div class="form-group col-md-12 col-sm-12 col-xs-12">
91
+ <input type="checkbox" v-model="paper.f_defect_notified" class="showInput"/>安检通知书/隐患整改通知书
92
+ </div>
93
+ <div class="form-group col-md-12 col-sm-12 col-xs-12" v-if="paper.f_defect_notified">
94
+ <div class="form-group col-md-12 col-sm-12 col-xs-12">
95
+ <button type="button" @click="print()">打印隐患整改单</button>
96
+ </div>
97
+ <div class="form-group col-md-12 col-sm-12 col-xs-12">
98
+ <label class="text-left font">安检通知书/隐患整改通知书照片(要求能清晰反应安检通知单和用户签字内容):</label>
99
+ <div class="auto" >
100
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
101
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
102
+ <div class="row" style="height: 240px;overflow: scroll;top: 1px">
103
+ <div class="col-sm-4">
104
+ <img-self :src="paper.f_notified_path" alt="安检通知书/隐患整改通知书照片" width="150" height="200"></img-self>
105
+ </div>
106
+ </div>
107
+ <div class="row text-right div-photo">
108
+ <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_notified_path', '安检通知书/隐患整改通知书照片')">拍照</button>
109
+ &nbsp;&nbsp;&nbsp;&nbsp;<img src="../../assets/remove.png" :class="style__" @click="delfile('f_notified_path', this.paper.f_notified_path)" style="width: 25%;"></img>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ -->
117
+ <div class="form-group col-md-12 col-sm-12 col-xs-12">
118
+ <div class="row">
119
+ <label class="text-left">请对我们的服务做出评价:</label>
120
+ </div>
121
+ <div class="col-xs-4 col-sm-4" v-for="item in radios">
122
+ <input v-model="paper.f_client_evaluation" :value="item.label" :checked='item.isChecked' @click="check(item.value)" type="radio">{{item.label}}
123
+ </div>
124
+ </div>
125
+ <!-- <div class="form-group col-md-12 col-sm-12 col-xs-12">-->
126
+ <!-- <label class="text-left font">反馈录音:</label>-->
127
+ <!-- <div class="col-md-12 col-sm-12 col-xs-12" v-if="!paper.f_recording1_path">-->
128
+ <!-- <audio :src="paper.f_recording1_path" v-el:audio controls @click="palyAudio(row)"></audio>-->
129
+ <!-- </div>-->
130
+ <!-- </div>-->
131
+ <div class="text-center form-group col-md-12 col-sm-12 col-xs-12">
132
+ <button type="button" v-show="$parent.actionEnabled" class="btn save-btn" @click="$parent.savePaper(true)">保存</button>
133
+ <button id="upload" type="button" v-show="$parent.actionEnabled && !$parent.isBusy" class="btn upload-btn" @click="$parent.uploadPaper" >上传</button>
134
+ <button v-if="safeCheckToRepair && $parent.actionEnabled" class="btn repair-btn btn-warning" type="button" @click="showToRepair">转维修</button>
135
+ </div>
136
+ </div>
137
+ </form>
138
+
139
+ <modal :show.sync="showCheckToRepair" v-ref:modal :backdrop="isback">
140
+ <div slot="modal-header" class="modal-header">
141
+ <h4 class="modal-title">
142
+ 安检转维修
143
+ </h4>
144
+ </div>
145
+ <div slot="modal-body" class="modal-body">
146
+ <div v-if="showrepair">
147
+ <div class="row">
148
+ <label class="col-xs-4 col-md-4 control-label text-left">派单方式</label>
149
+ <div class="col-xs-8 col-md-8">
150
+ <label v-for="handling1 in handling" >
151
+ <input type="radio"
152
+ v-model="meading"
153
+ value="{{handling1.label}}">
154
+ {{handling1.label}}
155
+ </label>
156
+ </div>
157
+ </div>
158
+ <div class="row" v-if="meading == '转站点'">
159
+ <label class="col-xs-4 col-md-4 control-label font text-left" for="f_reciever">站点</label>
160
+ <div class="col-xs-8 col-md-8">
161
+ <right-tree @ready="onReady" islist :Url="Url" :userid="userid" :source="source" v-on:re-res="reres" :textContent="选择站点管理员" :selectData="" v-ref:f_reciever>
162
+ </right-tree>
163
+ </div>
164
+ </div>
165
+
166
+ <div class="row" style="margin-top: 6px" v-if="meading == '转维修员'">
167
+ <label class="col-xs-4 col-md-4 control-label font text-left">维修人</label>
168
+ <div class="col-xs-8">
169
+ <v-select :value="model.serviceacitivity[0].f_reciever" :value-single="true"
170
+ :options='f_repair_person' placeholder='请选择维修员'
171
+ close-on-select v-on:change="repiarmancg"></v-select>
172
+ </div>
173
+
174
+ </div>
175
+ <div class="row" style="margin-top: 6px">
176
+ <label for="f_repair" class="col-xs-4 col-md-4 control-label font text-left">报修类型</label>
177
+ <div class="col-xs-8 col-md-8">
178
+ <v-select :value.sync="model.f_repairtype" :value-single="true"
179
+ :options='repairstypes' placeholder='报修类型'
180
+ close-on-select>
181
+ </v-select>
182
+ </div>
183
+ </div>
184
+
185
+ <div class="row" style="margin-top: 6px">
186
+ <label class="control-label font text-left col-md-4 col-xs-4">备注</label>
187
+ <div class="col-xs-8 col-md-8">
188
+ <input type="text" v-model="model.f_remarks"/>
189
+ </div>
190
+
191
+ </div>
192
+
193
+ </div>
194
+ <div v-if="!showrepair">
195
+ 暂无隐患设备信息
196
+ </div>
197
+ </div>
198
+ <div slot="modal-footer" class="modal-footer">
199
+ <button type="button" class="btn btn-default" @click="uploadPaper()">确定</button>
200
+ <button type="button" class="btn btn-default" @click="undo()">取消</button>
201
+ </div>
202
+ </modal>
203
+ </div>
204
+ </template>
205
+
206
+ <script>
207
+ import Vue from 'vue'
208
+ import * as Util from '../Util'
209
+ import { HttpResetClass } from 'vue-client'
210
+ import RadioGroup from 'vue-client/src/vue-strap/src/radioGroup'
211
+ import Radio from 'vue-client/src/vue-strap/src/radioBtn'
212
+ import co from 'co'
213
+
214
+ let getRepairParam = function * (self){
215
+ let data = {
216
+ model: self.model, loginUser: {
217
+ name: self.role == 'view'?self.$login.f.name:Vue.user.name,
218
+ ename: self.role == 'view'?self.$login.f.ename:Vue.user.ename
219
+ }, user: self.user, callObj: self.callObj
220
+ }
221
+ if(self.meading == '转维修员'){
222
+ data.toRepair = '一级派单'
223
+ }
224
+ data.model.f_attendant = data.loginUser.name
225
+ //tag
226
+ //tag
227
+ let res
228
+ let errString = self.$parent.errorVerify()
229
+ if(errString){
230
+ //tag
231
+ if (Vue.android)
232
+ self.undo()
233
+ this.$showMessage(errString)
234
+ return
235
+ } else {
236
+ if(self.role == 'inspect'){
237
+ if(self.meading == '转维修员' && (self.model.serviceacitivity[0].f_reciever == '' || self.model.serviceacitivity[0].f_reciever == undefined)){
238
+ this.$showMessage("请选择维修员!")
239
+ return
240
+ }
241
+ if(self.meading == '转站点' && (self.model.serviceacitivity[0].f_reciever == '' || self.model.serviceacitivity[0].f_reciever == undefined)){
242
+ this.$showMessage("请选择站点!")
243
+ return
244
+ }
245
+ if(self.model.f_repairtype == ''){
246
+ this.$showMessage("请选择报修类型!")
247
+ return
248
+ }
249
+ //tag)
250
+ let checkResult = '正常'
251
+ let options = [{"data": "已处理"},{"data": "未处理"}]
252
+ let value = ''
253
+ let codata = JSON.parse(JSON.stringify(self.paper))
254
+ for(let device in codata){
255
+ //tag)
256
+ let f_device_type
257
+ if(device.startsWith("device")){
258
+ for(let item in codata[device]) {
259
+ if(codata[device].length > 1 ){
260
+ let j = Number.parseInt(item)+1
261
+ f_device_type = `${codata[device][item].f_device_type}${j}`
262
+ }else{
263
+ f_device_type = codata[device][item].f_device_type
264
+ }
265
+ // //tag
266
+ let details = []
267
+ for(let i in codata[device][item].f_items){
268
+ let items = codata[device][item].f_items[i]
269
+ //tag
270
+ if(items.f_is_defect == true || items.f_is_defect == 'true'){
271
+ checkResult = '有隐患'
272
+ //tag
273
+ let res = yield self.$resetpost(`${self.Url}/rs/sql/getDeviceItem`,{data:{f_device_id:codata[device][item].f_device_id,f_item_name:items.f_item_name}})
274
+ //tag)
275
+ self.$set('detail.f_defect_id', res.data[0].id)
276
+ self.$set('detail.f_project',`${items.f_item_name}:${items.f_item_value}`)
277
+ self.$set('detail.type',items.type)
278
+ self.$set('detail.options',options)
279
+ details.push(JSON.parse(JSON.stringify(self.detail)))
280
+ }
281
+ if(items.type == 'selector'){
282
+ items.selected = ''
283
+ }
284
+ self.detail = {}
285
+ }
286
+ //tag
287
+ self.$set('defectDevice.f_type',f_device_type)
288
+ self.$set('defectDevice.details',details)
289
+ if(self.defectDevice.details.length >0 ){
290
+ self.repairitems.push(JSON.parse(JSON.stringify(self.defectDevice)))
291
+ }
292
+ self.defectDevice = {}
293
+ //tag
294
+ }
295
+ }
296
+ }
297
+ self.$set('model.f_repairitems.data',self.repairitems)
298
+
299
+
300
+ //tag)
301
+ res = self.$androidUtil.bzLogic('safecheckToRepair',data)
302
+ //tag
303
+ //tag
304
+ //tag
305
+ if(res.code == 200){
306
+ self.$parent.isSafeCheckToRepair = true
307
+ self.undo()
308
+ self.$set('paper.f_SafeToRepair_id',res.data.f_service_id)
309
+ //tag
310
+ self.$resetpost(`${self.Url}/rs/logic/updatePaperRepair`,{data:{f_paper_id:self.paper.f_paper_id,f_SafeToRepair_id:res.data.f_service_id}}).then((ret)=>{
311
+ //tag
312
+ if(ret.data.code ==200){
313
+ //tag
314
+ self.$parent.$back()
315
+ }else{
316
+ self.$showMessage('安检转维修失败!')
317
+ }
318
+ }).catch(v=>{
319
+ //tag)
320
+ self.$showMessage('安检转维修失败!')
321
+ })
322
+ }else{
323
+ self.$showMessage('安检转维修失败!')
324
+ }
325
+ }
326
+ }
327
+ }
328
+
329
+
330
+
331
+ let getRepairs = async function(self,url) {
332
+ // 获取配置信息
333
+ try {
334
+ let val = {source: 'this.getParentByType($department$).getChildByName($维修员$).getUsers()', userid: `${Vue.$login.jwt}`}
335
+ let repairs =[]
336
+ let res = await Vue.resetpost(`${url}/rs/search`,{data: val},{resolveMsg: null, rejectMsg: null})
337
+ res.data.forEach((item) => {
338
+ repairs.push({label: item.name, value: item})
339
+ })
340
+ self.f_repair_person = repairs
341
+ if(self.$parent.role == 'inspect'){
342
+ let res = self.$androidUtil.bzLogic('getUserInfo',{id:self.paper.f_userinfoid})
343
+ if(res.code == 200){
344
+ self.user = res.data[0]
345
+ self.model.f_area = self.user.f_area
346
+ }
347
+ }else{
348
+ //tag
349
+ self.$resetpost(`${self.Url}/rs/sql/safeCheckgetUserInfo`,{data:{id:self.paper.f_userinfoid}},{resolveMsg: null, rejectMsg: null}).then((res)=>{
350
+ //tag
351
+ if(res.data.length != 0){
352
+ self.user = res.data[0]
353
+ self.model.f_area = self.user.f_area
354
+ }
355
+ })
356
+ // path({alias:'getUserInfo',data:{id:this.paper.f_userinfoid}})
357
+ }
358
+ } catch (error) {
359
+ //tag
360
+ }
361
+ }
362
+
363
+ export default {
364
+ title: '用户反馈',
365
+ data() {
366
+ return {
367
+ fileInfoData:[],
368
+ paper:this.$parent.data,
369
+ printContent:[],
370
+ radios:[
371
+ {
372
+ label: '满意',
373
+ value: 0,
374
+ isChecked: false,
375
+ },
376
+ {
377
+ label: '基本满意',
378
+ value:1,
379
+ isChecked: false,
380
+ },
381
+ {
382
+ label: '不满意',
383
+ value:2,
384
+ isChecked: false,
385
+ },
386
+ ],
387
+ model: {
388
+ // 一次派单
389
+ serviceacitivity: [{
390
+ f_service_acitivity_type: '派单'
391
+ }],
392
+ f_source:'安检',
393
+ f_service_id: '',
394
+ f_contact_phone: '',
395
+ f_meetunit: '',
396
+ f_phone: '',
397
+ f_user_name: '',
398
+ f_address: '',
399
+ f_repair_date: Util.toStandardTimeString(),
400
+ f_card_id: '',
401
+ // f_department: '', 站点选择
402
+ f_reciever:'',
403
+ f_remarks: '',
404
+ f_user_type: '',
405
+ f_area: '',
406
+ f_unit_name:'',
407
+ f_street: '',
408
+ f_residential_area: '',
409
+ f_building: '',
410
+ f_unit: '',
411
+ f_floor: '',
412
+ f_room: '',
413
+ aState: null,
414
+ f_repairtype: '',
415
+ f_repairitems:{},
416
+ },
417
+ repairitems:[],
418
+ repairstypes:this.$appdata.getParam('报修类型'),
419
+ //f_repair_person: this.readRepair(),
420
+ showrepair: false,
421
+ safeCheckToRepair:'',
422
+ showCheckToRepair:false,
423
+ userid: '',
424
+ source:
425
+ 'dep=this.getParentByType($organization$).getSpecialResByType($department$),' +
426
+ 'tool.getFullTree(dep.where(row.getChildByName($派单员$) != null))',
427
+ isback:false,
428
+ defectDevice:{},
429
+ detail:{},
430
+ callObj:null,
431
+ user:{},
432
+ role:this.$parent.role,
433
+ handling:[{label:'转站点',value:'转站点'},{label:'转维修员',value:'转维修员'}],
434
+ meading:'转站点',
435
+ Url:this.$androidUtil.getProxyUrl()
436
+ }
437
+ },
438
+ props: ['idx','item'],
439
+ components: {
440
+ RadioGroup,
441
+ Radio
442
+ },
443
+ methods: {
444
+ //获取pc上传的送气全景照片
445
+ getGaspic() {
446
+ let data = {
447
+ tablename: 't_files',
448
+ condition: `f_blobid = '${this.item.id}' order by f_uploaddate desc `
449
+ }
450
+ let http = new HttpResetClass()
451
+ http.load('post', 'rs/sql/singleTable', {data: data}, {
452
+ resolveMsg: null,
453
+ rejectMsg: null
454
+ }).then(getFile=> {
455
+ for (var i = 0; i < getFile.data.length; i++) {
456
+ let temp = getFile.data[i].f_downloadpath
457
+ if (temp) {
458
+ let URL = temp.substring(temp.lastIndexOf(":\\") + 2)
459
+ if (temp.startsWith('E:')){
460
+ URL = `rs/image/file/${getFile.data[i].f_filename}`
461
+ }
462
+ console.log(URL)
463
+ getFile.data[i].f_downloadURL = "http://" + location.host + "/" + URL
464
+ }
465
+ }
466
+ this.fileInfoData = []
467
+ this.fileInfoData = getFile.data
468
+ })
469
+ },
470
+ check(index) {
471
+ //tag
472
+ // 先取消所有选中项
473
+ for (let item of this.radios){
474
+ item.isChecked = false;
475
+ }
476
+ //再设置当前点击项选中
477
+ this.paper.f_client_evaluation = this.radios[index].label;
478
+ // 设置值,以供传递
479
+ this.radios[index].isChecked = true;
480
+ //tag;
481
+ },
482
+ getSignValue(fileName) {
483
+ this.f_signname = fileName
484
+ },
485
+ cameraCallBack(prop, fileName) {
486
+ HostApp.__this__.paper[prop] = fileName + '?' + Math.random()
487
+ HostApp.__callback__ = null
488
+ HostApp.__this__ = null
489
+ },
490
+ takePic(prop, title) {
491
+ HostApp.__callback__ = this.cameraCallBack
492
+ HostApp.__this__ = this
493
+ //tag
494
+ //tag
495
+ let fileName
496
+ if (!this.paper[prop] || this.paper[prop].includes("nopic.png")) {
497
+ fileName = Util.guid() + '-' + prop + '.jpg'
498
+ } else {
499
+ fileName = Util.getFileName(this.paper[prop])
500
+ }
501
+ HostApp._open_a_page({
502
+ type: 'boomerang',
503
+ page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
504
+ param: {
505
+ file: fileName,
506
+ requestCode: 111,
507
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
508
+ watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
509
+ }
510
+ })
511
+ },
512
+ amrCallBack(fileName) {
513
+ HostApp.__this__.$set('paper.f_recording1_path', fileName)
514
+ HostApp.__callback__ = null
515
+ HostApp.__this__ = null
516
+ },
517
+ record() {
518
+ if (this.$parent.role != 'inspect') {
519
+ if (this.paper.f_recording1_path != '') {
520
+ window.location = this.paper.f_recording1_path
521
+ }
522
+ } else {
523
+ HostApp.__callback__ = this.amrCallBack
524
+ HostApp.__this__ = this
525
+ let fileName
526
+ if (!this.paper.f_recording1_path) {
527
+ fileName = Util.guid() + '.amr'
528
+ } else {
529
+ fileName = Util.getFileName(this.paper.f_recording1_path)
530
+ }
531
+ HostApp._open_a_page({
532
+ type: 'boomerang',
533
+ page: 'com.aofeng.hybrid.android.peripheral.AudioClipActivity',
534
+ param: {file: fileName, requestCode: 111, callback: 'javascript:HostApp.__callback__("%s");'}
535
+ })
536
+ }
537
+ },
538
+ // 签名回调
539
+ signCallback(prop, fileName) {
540
+ // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
541
+ HostApp.__this__.$set('paper.f_sign_path', fileName)
542
+ HostApp.__callback__ = null
543
+ HostApp.__this__ = null
544
+ },
545
+ // 用户签名
546
+ sign() {
547
+ this.delAudioFile('f_sign_path', this.paper.f_sign_path)
548
+ let prop = 'f_sign_path'
549
+ let idx = 'aofeng'
550
+ let fileName
551
+ if (!this.paper.f_sign_path) {
552
+ fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
553
+ } else {
554
+ fileName = Util.getFileName(this.paper.f_sign_path)
555
+ }
556
+ HostApp.__callback__ = this.signCallback
557
+ HostApp.__this__ = this
558
+ HostApp.getSignature({
559
+ file: fileName,
560
+ requestCode: 111,
561
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
562
+ })
563
+ },
564
+ delfile(prop, fileName) {
565
+ if (fileName == Vue.nopic)
566
+ return
567
+ else {
568
+ HostApp.delfile(fileName)
569
+ this.paper[prop] = Vue.nopic
570
+ }
571
+ },
572
+ delAudioFile(prop, fileName) {
573
+ if (!fileName)
574
+ return
575
+ else {
576
+ HostApp.delfile(fileName)
577
+ this.paper[prop] = null
578
+ }
579
+ },
580
+ //获取打印用户信息
581
+ getUser() {
582
+ if (this.paper.f_user_name == undefined)
583
+ this.paper.f_user_name = ''
584
+ this.printContent.push({type: 3, text: '用户名称:' + this.paper.f_user_name, fontsize: 2, isbold: false, align: 'left'})
585
+ if (this.paper.f_userinfo_code == undefined)
586
+ this.paper.f_userinfo_code = ''
587
+ this.printContent.push({type: 3, text: '用户编号:' + this.paper.f_userinfo_code, fontsize: 2, isbold: false, align: 'left'})
588
+ if (this.paper.f_address == undefined)
589
+ this.paper.f_address = ''
590
+ this.printContent.push({type: 3, text: '地址:' + this.paper.f_address, fontsize: 2, isbold: false, align: 'left'})
591
+ if (this.paper.f_user_phone == undefined)
592
+ this.paper.f_user_phone = ''
593
+ this.printContent.push({type: 3, text: '电话:' + this.paper.f_user_phone, fontsize: 2, isbold: false, align: 'left'})
594
+ },
595
+ verify(){
596
+ let hasError = this.$parent.verifyUser()
597
+ if(hasError)
598
+ return hasError
599
+ hasError = this.$parent.verifyDevices()
600
+ if(hasError)
601
+ return hasError
602
+ },
603
+ print() {
604
+ let errString = this.verify()
605
+ if (errString) {
606
+ //tag
607
+ if (Vue.android)
608
+ this.$showMessage(errString)
609
+ return
610
+ }
611
+ // 文本
612
+ let templatename = '安检结果单'
613
+ if(Vue.config.safecheck != undefined) {
614
+ if (Vue.config.safecheck.ApproveConfig != undefined) {
615
+ if (Vue.config.safecheck.ApproveConfig.templatename != undefined) {
616
+ templatename = Vue.config.safecheck.ApproveConfig.templatename
617
+ }
618
+ }
619
+ }
620
+ let textHead = {type: 3, text: templatename, fontsize: 3, isbold: true, align: 'center'}
621
+ let feedPageHead = {type: 4, value: 2, unit: 'line'}
622
+ let feedPageEnd = {type: 4, value: 4, unit: 'line'}
623
+ this.printContent.push(textHead)
624
+ this.printContent.push(feedPageHead)
625
+ this.getUser()
626
+ this.getDefect()
627
+ this.getCheck()
628
+ this.printContent.push(feedPageEnd)
629
+ let arrstr = JSON.stringify(this.printContent)
630
+ //tag
631
+ this.$androidUtil.print(arrstr)
632
+ this.$set('printContent', [])
633
+ },
634
+ //打印安检信息
635
+ getCheck() {
636
+ let telephone = '96777'
637
+ if(Vue.config.safecheck != undefined) {
638
+ if (Vue.config.safecheck.ApproveConfig != undefined) {
639
+ if (Vue.config.safecheck.ApproveConfig.checkphone != undefined) {
640
+ telephone = Vue.config.safecheck.ApproveConfig.checkphone
641
+ }
642
+ }
643
+ }
644
+ this.printContent.push({type: 3, text: '*******************************', fontsize: 3, isbold: false, align: 'center'})
645
+ this.printContent.push({type: 3, text: '咨询电话;'+telephone, fontsize: 2, isbold: false, align: 'left'})
646
+ this.printContent.push({type: 3, text: '安检人:'+Vue.user.name, fontsize: 2, isbold: false, align: 'left'})
647
+ this.printContent.push({type: 3, text: '安检时间:' + this.getNowFormatDate(), fontsize: 2, isbold: false, align: 'left'})
648
+ this.printContent.push({type: 3, text: '用户签字:', fontsize: 2, isbold: false, align: 'left'})
649
+ this.printContent.push({type: 4, value: 4, unit: 'line'})
650
+ },
651
+
652
+ getDefect() {
653
+ let showmore = false
654
+ if(Vue.config.safecheck != undefined) {
655
+ if (Vue.config.safecheck.ApproveConfig != undefined) {
656
+ if (Vue.config.safecheck.ApproveConfig.showmore != undefined) {
657
+ showmore = Vue.config.safecheck.ApproveConfig.showmore
658
+ }
659
+ }
660
+ }
661
+
662
+ let backData = this.$parent.getAllDefect()
663
+ // 对隐患信息进行遍历
664
+ let res = JSON.parse(backData.f_defect_content)
665
+ this.printContent.push({
666
+ type: 3,
667
+ text: '安检结果:' + res.result,
668
+ fontsize: 2,
669
+ isbold: false,
670
+ align: 'left'
671
+ })
672
+ this.printContent.push({type: 3, text: '*******************************', fontsize: 3, isbold: false, align: 'center'})
673
+
674
+
675
+ if(showmore) {
676
+ //全部打印
677
+ for (let dev in this.$parent.config) {
678
+ for (let device in backData) {
679
+ if (device.startsWith("device")) {
680
+ for (let item in backData[device]) {
681
+ //遍历结果
682
+ if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
683
+ let error = true
684
+ for (let i in backData[device][item].f_items) {
685
+ if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
686
+ error = false
687
+ }
688
+ }
689
+ if (error) {
690
+ this.printContent.push({
691
+ type: 3,
692
+ text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':正常',
693
+ fontsize: 2,
694
+ isbold: false,
695
+ align: 'left'
696
+ })
697
+ } else {
698
+ this.printContent.push({
699
+ type: 3,
700
+ text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':有隐患',
701
+ fontsize: 2,
702
+ isbold: true,
703
+ align: 'left'
704
+ })
705
+ }
706
+
707
+ for (let i in backData[device][item].f_items) {
708
+ if (backData[device][item].f_items[i].f_item_value != '' && backData[device][item].f_items[i].f_item_value != null) {
709
+ this.printContent.push({
710
+ type: 3,
711
+ text: backData[device][item].f_items[i].f_item_name + backData[device][item].f_items[i].f_item_value,
712
+ fontsize: 2,
713
+ isbold: false,
714
+ align: 'left'
715
+ })
716
+ }
717
+ }
718
+ this.printContent.push({type: 4, value: 2, unit: 'line'})
719
+ }
720
+ }
721
+ }
722
+ }
723
+ }
724
+
725
+ for (let dev in this.$parent.config) {
726
+ for (let device in backData) {
727
+ if (device.startsWith("device")) {
728
+ for (let item in backData[device]) {
729
+ //遍历结果
730
+ if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
731
+ let error = true
732
+ for (let i in backData[device][item].f_items) {
733
+ if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
734
+ error = false
735
+ }
736
+ }
737
+ if (!error) {
738
+ this.printContent.push({
739
+ type: 3,
740
+ text: '隐患:',
741
+ fontsize: 2,
742
+ isbold: true,
743
+ align: 'left'
744
+ })
745
+ }
746
+ }
747
+ }
748
+ }
749
+ }
750
+ for (let device in backData) {
751
+ if (device.startsWith("device")) {
752
+ for (let item in backData[device]) {
753
+ if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
754
+ for (let i in backData[device][item].f_items) {
755
+ if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
756
+ this.printContent.push({
757
+ type: 3,
758
+ text: backData[device][item].f_items[i].f_item_name + ' ' + backData[device][item].f_items[i].f_item_value,
759
+ fontsize: 2,
760
+ isbold: true,
761
+ align: 'left'
762
+ })
763
+ }
764
+ }
765
+ }
766
+ }
767
+ }
768
+ }
769
+
770
+ }
771
+ }else {
772
+ for (let dev in this.$parent.config) {
773
+ for (let device in backData) {
774
+ if (device.startsWith("device")) {
775
+ for (let item in backData[device]) {
776
+ //遍历结果
777
+ if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
778
+ let error = true
779
+ for (let i in backData[device][item].f_items) {
780
+ if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
781
+ error = false
782
+ }
783
+ }
784
+ if (error) {
785
+ this.printContent.push({
786
+ type: 3,
787
+ text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':正常',
788
+ fontsize: 2,
789
+ isbold: false,
790
+ align: 'left'
791
+ })
792
+ } else {
793
+ this.printContent.push({
794
+ type: 3,
795
+ text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':有隐患',
796
+ fontsize: 2,
797
+ isbold: false,
798
+ align: 'left'
799
+ })
800
+ }
801
+
802
+ for (let i in backData[device][item].f_items) {
803
+ if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
804
+ this.printContent.push({
805
+ type: 3,
806
+ text: '隐患:' + backData[device][item].f_items[i].f_item_name + backData[device][item].f_items[i].f_item_value,
807
+ fontsize: 2,
808
+ isbold: false,
809
+ align: 'left'
810
+ })
811
+ }
812
+ }
813
+ this.printContent.push({type: 4, value: 2, unit: 'line'})
814
+ }
815
+ }
816
+ }
817
+ }
818
+ }
819
+ }
820
+ },
821
+ //获取当前时间
822
+ getNowFormatDate(){
823
+ var date = new Date();
824
+ var seperator1 = "-";
825
+ var seperator2 = ":";
826
+ var month = date.getMonth() + 1;
827
+ var strDate = date.getDate();
828
+ if (month >= 1 && month <= 9) {
829
+ month = "0" + month;
830
+ }
831
+ if (strDate >= 0 && strDate <= 9) {
832
+ strDate = "0" + strDate;
833
+ }
834
+ var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
835
+ + " " + date.getHours() + seperator2 + date.getMinutes()
836
+ + seperator2 + date.getSeconds();
837
+ return currentdate;
838
+ },
839
+ readRepair () {
840
+ let url = this.$androidUtil.getProxyUrl()
841
+ let gen = getRepairs(this,url)
842
+ return co(gen)
843
+ },
844
+ showToRepair(){
845
+ let res = this.hasDefect()
846
+ //tag
847
+ //tag
848
+ if(res == '正常'){
849
+ this.showrepair = false
850
+ }else{
851
+ this.showrepair = true
852
+ this.assignObj()
853
+ }
854
+ this.showCheckToRepair = !this.showCheckToRepair
855
+ },
856
+ // 选中部门
857
+ reres(val){
858
+ if(val.res == undefined){
859
+ return
860
+ }
861
+ this.model.serviceacitivity[0].f_meetunit = val.res
862
+ this.model.f_meetunit = val.res
863
+ this.model.f_orgstr = val.resids
864
+ var arr = val.res.split('.')
865
+ this.model.f_outlets = arr[arr.length - 1]
866
+ this.model.serviceacitivity[0].f_reciever = val.resids
867
+ },
868
+ assignObj(){
869
+ this.model.f_contact_phone = this.paper.f_user_phone
870
+ this.model.f_user_name = this.paper.f_user_name
871
+ this.model.f_address = this.paper.f_address
872
+ this.model.f_user_type = this.paper.f_check_type
873
+ this.model.f_street = this.paper.f_street
874
+ this.model.f_residential_area = this.paper.f_residential_area
875
+ this.model.f_building = this.paper.f_building
876
+ this.model.f_unit = this.paper.f_unit
877
+ this.model.f_floor = this.paper.f_floor
878
+ this.model.f_room = this.paper.f_room
879
+ this.model.f_floor = this.paper.f_floor
880
+ this.model.f_userinfo_id = this.paper.f_userinfoid
881
+ this.model.f_userinfo_code = this.paper.f_userinfo_code
882
+ },
883
+ hasDefect(){
884
+ let checkResult = '正常'
885
+ let codata = JSON.parse(JSON.stringify(this.paper))
886
+ for(let device in this.paper){
887
+ if(device.startsWith("device")){
888
+ for(let item in this.paper[device]) {
889
+ for(let i in this.paper[device][item].f_items){
890
+ let items = this.paper[device][item].f_items[i]
891
+ //tag
892
+ if(items.f_is_defect == true || items.f_is_defect == 'true'){
893
+ checkResult = '有隐患'
894
+ }
895
+ }
896
+ }
897
+ }
898
+ }
899
+ return checkResult
900
+ },
901
+ uploadPaper() {
902
+ if(this.showrepair){
903
+ this.$parent.isToRepair = true
904
+ this.$parent.savePaper(false).then((res) => {
905
+ //tag
906
+ if(res != true){
907
+ //tag
908
+ return
909
+ }else{
910
+ //TODO 上传成功 转维修失败
911
+ this.todo()
912
+ }
913
+ })
914
+ }else{
915
+ this.undo()
916
+ }
917
+
918
+ },
919
+ //确认安检转维修
920
+ todo(){
921
+ let gen = getRepairParam(this)
922
+ co(gen)
923
+ },
924
+ undo(){
925
+ this.showCheckToRepair = !this.showCheckToRepair
926
+ this.model.serviceacitivity[0].f_reciever = ''
927
+ this.model.serviceacitivity[0].f_meetunit = ''
928
+ this.model.f_repairtype = ''
929
+ this.meading = '转站点'
930
+ },
931
+ repiarmancg(val){
932
+ if(val){
933
+ //tag
934
+ this.model.serviceacitivity[0].f_reciever = val.name
935
+ let http1 = new HttpResetClass()
936
+ http1.load('POST',`${this.Url}/rs/sql/tel_singleTable_OrderBy`, {data: {
937
+ items: 'f_user_telephone',
938
+ tablename: 't_user',
939
+ condition: `name = '${val}'`,
940
+ orderitem: 'id'
941
+ }}, {resolveMsg: null, rejectMsg: null}).then((ress) => {
942
+ this.model.f_repairman_phone = ress.data[0].f_user_telephone
943
+ })
944
+ }
945
+ },
946
+ },
947
+ ready() {
948
+ for (let item of this.radios){
949
+ if(this.paper.f_client_evaluation == item.label){
950
+ item.isChecked = true;
951
+ }
952
+ }
953
+ //tag
954
+ //tag
955
+ //tag
956
+ //tag
957
+ if (!this.paper.f_notified_path)
958
+ this.$set('paper.f_notified_path', Vue.nopic)
959
+ if (!this.paper.f_sign_path)
960
+ this.$set('paper.f_sign_path', Vue.nopic)
961
+ if (!this.paper.f_overall_imgs){
962
+ let imgs = []
963
+ // imgs.push({f_overall_path:Vue.nopic})
964
+ this.$set('paper.f_overall_imgs', imgs)
965
+ //tag
966
+ }
967
+ if (!this.paper.f_overall2_path)
968
+ this.$set('paper.f_overall2_path', Vue.nopic)
969
+
970
+ this.userid = this.role == 'view'? this.$login.f.id:Vue.user.id
971
+ if(Vue.config.safecheck != undefined){
972
+ if(Vue.config.safecheck.ApproveConfig != undefined){
973
+ if(Vue.config.safecheck.ApproveConfig.safeCheckToRepair != undefined) {
974
+ this.safeCheckToRepair = Vue.config.safecheck.ApproveConfig.safeCheckToRepair
975
+ }
976
+ }
977
+ }
978
+ //tag
979
+ //tag
980
+ this.getGaspic()
981
+ },
982
+ watch:{
983
+ '$parent.isUpload'(val){
984
+ //tag
985
+ }
986
+ }
987
+ }
988
+ </script>
989
+ <style>
990
+ .text-left{
991
+ text-align:left;
992
+ }
993
+ .font{
994
+ font: 15px PingFang-SC-Medium;
995
+ color: #333333;
996
+ }
997
+ .showInput{
998
+ font: 14px PingFang-SC-Medium;
999
+ color: #666666;
1000
+ }
1001
+ .info{
1002
+ margin-top: 15px;
1003
+ border-radius: 5px;
1004
+ background-color: #f3faff;
1005
+ }
1006
+ .btn-photo{
1007
+ border: 0;
1008
+ border-radius: 7px;
1009
+ background-color: #7dc1f4;
1010
+ font: 15px PingFang-SC-Bold;
1011
+ height: 20%;
1012
+ }
1013
+ .div-photo{
1014
+ width: auto;
1015
+ height: auto;
1016
+ /* margin-top: 10px; */
1017
+ position: absolute;
1018
+ bottom: 10px;
1019
+ right: 10px;
1020
+ }
1021
+ .btn-voice{
1022
+ border-radius: 7px;
1023
+ border: 1px solid #dedede;
1024
+ background-color: #f5fbff;
1025
+ font: 15px PingFang-SC-Bold;
1026
+ color: #499edf;
1027
+ }
1028
+ .save-btn{
1029
+ width: 25%;
1030
+ background-color:#499edf;
1031
+ border-radius: 6px;
1032
+ color: #FFFFFF;
1033
+ font: 15px PingFang-SC-Bold;
1034
+ }
1035
+ .upload-btn{
1036
+ width: 25%;
1037
+ background-color:#ffffff;
1038
+ border: 1px solid #499edf;
1039
+ border-radius: 6px;
1040
+ color: #499edf;
1041
+ font: 15px PingFang-SC-Bold;
1042
+ }
1043
+ .repair-btn{
1044
+ width: 25%;
1045
+ border: 1px solid #499edf;
1046
+ border-radius: 6px;
1047
+ font: 15px PingFang-SC-Bold;
1048
+ }
1049
+ </style>