safecheck-client 3.0.35-1 → 3.0.35-11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. package/package.json +1 -1
  2. package/src/components/Util/SafecheckUpload.vue +269 -265
  3. package/src/components/android/CivilCurrentCreate.vue +46 -41
  4. package/src/components/android/examples/UserExamples.vue +136 -136
  5. package/src/components/rongcheng/AspiratedPaperFeedbackm.vue +1049 -1045
  6. package/src/filiale/bayan/android/AddPlanItem.vue +13 -2
  7. package/src/filiale/bayan/android/CheckPlanDown.vue +2 -2
  8. package/src/filiale/bayan/android/PaperFeedback.vue +1669 -1669
  9. package/src/filiale/bayan/android/PhoneUpUserinfo.vue +908 -905
  10. package/src/filiale/bayan/android/SafecheckOrderV.vue +76 -20
  11. package/src/filiale/bayan/android/SafecheckUserInfo.vue +4 -0
  12. package/src/filiale/bayan/pc/CheckPlanAreaList.vue +42 -0
  13. package/src/filiale/bayan/pc/HiddenSituation.vue +295 -295
  14. package/src/filiale/bayan/pc/NewCheckpaper.vue +1992 -1992
  15. package/src/filiale/bayan/pc/PaperList.vue +900 -900
  16. package/src/filiale/bayan/pc/PlanManage.vue +2 -0
  17. package/src/filiale/bayan/pc/SelectCheckPlan.vue +58 -0
  18. package/src/filiale/huaran/android/CheckPlanDown.vue +212 -0
  19. package/src/filiale/huaran/android.js +13 -12
  20. package/src/filiale/shanxian/android/AddPlanItem.vue +1 -1
  21. package/src/filiale/shanxian/android/SafecheckOrderV.vue +1 -1
  22. package/src/filiale/tongchuan/android/SafecheckDevices.vue +1207 -1207
  23. package/src/filiale/tongchuan/android/SafecheckOrderV.vue +3035 -3035
  24. package/src/filiale/tongchuan/pc/CheckSearchUser.vue +1053 -1053
  25. package/src/filiale/tongchuan/pc/checkUserList.vue +639 -639
  26. package/src/filiale/xilan/android/AddPlanItem.vue +4 -0
  27. package/src/filiale/xilan/android/CurrentCreate.vue +6 -2
  28. package/src/filiale/yangchunboneng/pc/CheckPlanAreaList.vue +642 -642
  29. package/src/main.js +1 -1
@@ -1,1045 +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
- getFile.data[i].f_downloadURL = "http://" + location.host + "/" + URL
460
- }
461
- }
462
- this.fileInfoData = []
463
- this.fileInfoData = getFile.data
464
- })
465
- },
466
- check(index) {
467
- //tag
468
- // 先取消所有选中项
469
- for (let item of this.radios){
470
- item.isChecked = false;
471
- }
472
- //再设置当前点击项选中
473
- this.paper.f_client_evaluation = this.radios[index].label;
474
- // 设置值,以供传递
475
- this.radios[index].isChecked = true;
476
- //tag;
477
- },
478
- getSignValue(fileName) {
479
- this.f_signname = fileName
480
- },
481
- cameraCallBack(prop, fileName) {
482
- HostApp.__this__.paper[prop] = fileName + '?' + Math.random()
483
- HostApp.__callback__ = null
484
- HostApp.__this__ = null
485
- },
486
- takePic(prop, title) {
487
- HostApp.__callback__ = this.cameraCallBack
488
- HostApp.__this__ = this
489
- //tag
490
- //tag
491
- let fileName
492
- if (!this.paper[prop] || this.paper[prop].includes("nopic.png")) {
493
- fileName = Util.guid() + '-' + prop + '.jpg'
494
- } else {
495
- fileName = Util.getFileName(this.paper[prop])
496
- }
497
- HostApp._open_a_page({
498
- type: 'boomerang',
499
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
500
- param: {
501
- file: fileName,
502
- requestCode: 111,
503
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
504
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
505
- }
506
- })
507
- },
508
- amrCallBack(fileName) {
509
- HostApp.__this__.$set('paper.f_recording1_path', fileName)
510
- HostApp.__callback__ = null
511
- HostApp.__this__ = null
512
- },
513
- record() {
514
- if (this.$parent.role != 'inspect') {
515
- if (this.paper.f_recording1_path != '') {
516
- window.location = this.paper.f_recording1_path
517
- }
518
- } else {
519
- HostApp.__callback__ = this.amrCallBack
520
- HostApp.__this__ = this
521
- let fileName
522
- if (!this.paper.f_recording1_path) {
523
- fileName = Util.guid() + '.amr'
524
- } else {
525
- fileName = Util.getFileName(this.paper.f_recording1_path)
526
- }
527
- HostApp._open_a_page({
528
- type: 'boomerang',
529
- page: 'com.aofeng.hybrid.android.peripheral.AudioClipActivity',
530
- param: {file: fileName, requestCode: 111, callback: 'javascript:HostApp.__callback__("%s");'}
531
- })
532
- }
533
- },
534
- // 签名回调
535
- signCallback(prop, fileName) {
536
- // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
537
- HostApp.__this__.$set('paper.f_sign_path', fileName)
538
- HostApp.__callback__ = null
539
- HostApp.__this__ = null
540
- },
541
- // 用户签名
542
- sign() {
543
- this.delAudioFile('f_sign_path', this.paper.f_sign_path)
544
- let prop = 'f_sign_path'
545
- let idx = 'aofeng'
546
- let fileName
547
- if (!this.paper.f_sign_path) {
548
- fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
549
- } else {
550
- fileName = Util.getFileName(this.paper.f_sign_path)
551
- }
552
- HostApp.__callback__ = this.signCallback
553
- HostApp.__this__ = this
554
- HostApp.getSignature({
555
- file: fileName,
556
- requestCode: 111,
557
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
558
- })
559
- },
560
- delfile(prop, fileName) {
561
- if (fileName == Vue.nopic)
562
- return
563
- else {
564
- HostApp.delfile(fileName)
565
- this.paper[prop] = Vue.nopic
566
- }
567
- },
568
- delAudioFile(prop, fileName) {
569
- if (!fileName)
570
- return
571
- else {
572
- HostApp.delfile(fileName)
573
- this.paper[prop] = null
574
- }
575
- },
576
- //获取打印用户信息
577
- getUser() {
578
- if (this.paper.f_user_name == undefined)
579
- this.paper.f_user_name = ''
580
- this.printContent.push({type: 3, text: '用户名称:' + this.paper.f_user_name, fontsize: 2, isbold: false, align: 'left'})
581
- if (this.paper.f_userinfo_code == undefined)
582
- this.paper.f_userinfo_code = ''
583
- this.printContent.push({type: 3, text: '用户编号:' + this.paper.f_userinfo_code, fontsize: 2, isbold: false, align: 'left'})
584
- if (this.paper.f_address == undefined)
585
- this.paper.f_address = ''
586
- this.printContent.push({type: 3, text: '地址:' + this.paper.f_address, fontsize: 2, isbold: false, align: 'left'})
587
- if (this.paper.f_user_phone == undefined)
588
- this.paper.f_user_phone = ''
589
- this.printContent.push({type: 3, text: '电话:' + this.paper.f_user_phone, fontsize: 2, isbold: false, align: 'left'})
590
- },
591
- verify(){
592
- let hasError = this.$parent.verifyUser()
593
- if(hasError)
594
- return hasError
595
- hasError = this.$parent.verifyDevices()
596
- if(hasError)
597
- return hasError
598
- },
599
- print() {
600
- let errString = this.verify()
601
- if (errString) {
602
- //tag
603
- if (Vue.android)
604
- this.$showMessage(errString)
605
- return
606
- }
607
- // 文本
608
- let templatename = '安检结果单'
609
- if(Vue.config.safecheck != undefined) {
610
- if (Vue.config.safecheck.ApproveConfig != undefined) {
611
- if (Vue.config.safecheck.ApproveConfig.templatename != undefined) {
612
- templatename = Vue.config.safecheck.ApproveConfig.templatename
613
- }
614
- }
615
- }
616
- let textHead = {type: 3, text: templatename, fontsize: 3, isbold: true, align: 'center'}
617
- let feedPageHead = {type: 4, value: 2, unit: 'line'}
618
- let feedPageEnd = {type: 4, value: 4, unit: 'line'}
619
- this.printContent.push(textHead)
620
- this.printContent.push(feedPageHead)
621
- this.getUser()
622
- this.getDefect()
623
- this.getCheck()
624
- this.printContent.push(feedPageEnd)
625
- let arrstr = JSON.stringify(this.printContent)
626
- //tag
627
- this.$androidUtil.print(arrstr)
628
- this.$set('printContent', [])
629
- },
630
- //打印安检信息
631
- getCheck() {
632
- let telephone = '96777'
633
- if(Vue.config.safecheck != undefined) {
634
- if (Vue.config.safecheck.ApproveConfig != undefined) {
635
- if (Vue.config.safecheck.ApproveConfig.checkphone != undefined) {
636
- telephone = Vue.config.safecheck.ApproveConfig.checkphone
637
- }
638
- }
639
- }
640
- this.printContent.push({type: 3, text: '*******************************', fontsize: 3, isbold: false, align: 'center'})
641
- this.printContent.push({type: 3, text: '咨询电话;'+telephone, fontsize: 2, isbold: false, align: 'left'})
642
- this.printContent.push({type: 3, text: '安检人:'+Vue.user.name, fontsize: 2, isbold: false, align: 'left'})
643
- this.printContent.push({type: 3, text: '安检时间:' + this.getNowFormatDate(), fontsize: 2, isbold: false, align: 'left'})
644
- this.printContent.push({type: 3, text: '用户签字:', fontsize: 2, isbold: false, align: 'left'})
645
- this.printContent.push({type: 4, value: 4, unit: 'line'})
646
- },
647
-
648
- getDefect() {
649
- let showmore = false
650
- if(Vue.config.safecheck != undefined) {
651
- if (Vue.config.safecheck.ApproveConfig != undefined) {
652
- if (Vue.config.safecheck.ApproveConfig.showmore != undefined) {
653
- showmore = Vue.config.safecheck.ApproveConfig.showmore
654
- }
655
- }
656
- }
657
-
658
- let backData = this.$parent.getAllDefect()
659
- // 对隐患信息进行遍历
660
- let res = JSON.parse(backData.f_defect_content)
661
- this.printContent.push({
662
- type: 3,
663
- text: '安检结果:' + res.result,
664
- fontsize: 2,
665
- isbold: false,
666
- align: 'left'
667
- })
668
- this.printContent.push({type: 3, text: '*******************************', fontsize: 3, isbold: false, align: 'center'})
669
-
670
-
671
- if(showmore) {
672
- //全部打印
673
- for (let dev in this.$parent.config) {
674
- for (let device in backData) {
675
- if (device.startsWith("device")) {
676
- for (let item in backData[device]) {
677
- //遍历结果
678
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
679
- let error = true
680
- for (let i in backData[device][item].f_items) {
681
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
682
- error = false
683
- }
684
- }
685
- if (error) {
686
- this.printContent.push({
687
- type: 3,
688
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':正常',
689
- fontsize: 2,
690
- isbold: false,
691
- align: 'left'
692
- })
693
- } else {
694
- this.printContent.push({
695
- type: 3,
696
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':有隐患',
697
- fontsize: 2,
698
- isbold: true,
699
- align: 'left'
700
- })
701
- }
702
-
703
- for (let i in backData[device][item].f_items) {
704
- if (backData[device][item].f_items[i].f_item_value != '' && backData[device][item].f_items[i].f_item_value != null) {
705
- this.printContent.push({
706
- type: 3,
707
- text: backData[device][item].f_items[i].f_item_name + backData[device][item].f_items[i].f_item_value,
708
- fontsize: 2,
709
- isbold: false,
710
- align: 'left'
711
- })
712
- }
713
- }
714
- this.printContent.push({type: 4, value: 2, unit: 'line'})
715
- }
716
- }
717
- }
718
- }
719
- }
720
-
721
- for (let dev in this.$parent.config) {
722
- for (let device in backData) {
723
- if (device.startsWith("device")) {
724
- for (let item in backData[device]) {
725
- //遍历结果
726
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
727
- let error = true
728
- for (let i in backData[device][item].f_items) {
729
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
730
- error = false
731
- }
732
- }
733
- if (!error) {
734
- this.printContent.push({
735
- type: 3,
736
- text: '隐患:',
737
- fontsize: 2,
738
- isbold: true,
739
- align: 'left'
740
- })
741
- }
742
- }
743
- }
744
- }
745
- }
746
- for (let device in backData) {
747
- if (device.startsWith("device")) {
748
- for (let item in backData[device]) {
749
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
750
- for (let i in backData[device][item].f_items) {
751
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
752
- this.printContent.push({
753
- type: 3,
754
- text: backData[device][item].f_items[i].f_item_name + ' ' + backData[device][item].f_items[i].f_item_value,
755
- fontsize: 2,
756
- isbold: true,
757
- align: 'left'
758
- })
759
- }
760
- }
761
- }
762
- }
763
- }
764
- }
765
-
766
- }
767
- }else {
768
- for (let dev in this.$parent.config) {
769
- for (let device in backData) {
770
- if (device.startsWith("device")) {
771
- for (let item in backData[device]) {
772
- //遍历结果
773
- if (backData[device].length != 0 && backData[device][item].f_device_type == dev) {
774
- let error = true
775
- for (let i in backData[device][item].f_items) {
776
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
777
- error = false
778
- }
779
- }
780
- if (error) {
781
- this.printContent.push({
782
- type: 3,
783
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':正常',
784
- fontsize: 2,
785
- isbold: false,
786
- align: 'left'
787
- })
788
- } else {
789
- this.printContent.push({
790
- type: 3,
791
- text: dev + (backData[device].indexOf(backData[device][item]) + 1) + ':有隐患',
792
- fontsize: 2,
793
- isbold: false,
794
- align: 'left'
795
- })
796
- }
797
-
798
- for (let i in backData[device][item].f_items) {
799
- if (backData[device][item].f_items[i].f_is_defect == true || backData[device][item].f_items[i].f_is_defect == 'true') {
800
- this.printContent.push({
801
- type: 3,
802
- text: '隐患:' + backData[device][item].f_items[i].f_item_name + backData[device][item].f_items[i].f_item_value,
803
- fontsize: 2,
804
- isbold: false,
805
- align: 'left'
806
- })
807
- }
808
- }
809
- this.printContent.push({type: 4, value: 2, unit: 'line'})
810
- }
811
- }
812
- }
813
- }
814
- }
815
- }
816
- },
817
- //获取当前时间
818
- getNowFormatDate(){
819
- var date = new Date();
820
- var seperator1 = "-";
821
- var seperator2 = ":";
822
- var month = date.getMonth() + 1;
823
- var strDate = date.getDate();
824
- if (month >= 1 && month <= 9) {
825
- month = "0" + month;
826
- }
827
- if (strDate >= 0 && strDate <= 9) {
828
- strDate = "0" + strDate;
829
- }
830
- var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
831
- + " " + date.getHours() + seperator2 + date.getMinutes()
832
- + seperator2 + date.getSeconds();
833
- return currentdate;
834
- },
835
- readRepair () {
836
- let url = this.$androidUtil.getProxyUrl()
837
- let gen = getRepairs(this,url)
838
- return co(gen)
839
- },
840
- showToRepair(){
841
- let res = this.hasDefect()
842
- //tag
843
- //tag
844
- if(res == '正常'){
845
- this.showrepair = false
846
- }else{
847
- this.showrepair = true
848
- this.assignObj()
849
- }
850
- this.showCheckToRepair = !this.showCheckToRepair
851
- },
852
- // 选中部门
853
- reres(val){
854
- if(val.res == undefined){
855
- return
856
- }
857
- this.model.serviceacitivity[0].f_meetunit = val.res
858
- this.model.f_meetunit = val.res
859
- this.model.f_orgstr = val.resids
860
- var arr = val.res.split('.')
861
- this.model.f_outlets = arr[arr.length - 1]
862
- this.model.serviceacitivity[0].f_reciever = val.resids
863
- },
864
- assignObj(){
865
- this.model.f_contact_phone = this.paper.f_user_phone
866
- this.model.f_user_name = this.paper.f_user_name
867
- this.model.f_address = this.paper.f_address
868
- this.model.f_user_type = this.paper.f_check_type
869
- this.model.f_street = this.paper.f_street
870
- this.model.f_residential_area = this.paper.f_residential_area
871
- this.model.f_building = this.paper.f_building
872
- this.model.f_unit = this.paper.f_unit
873
- this.model.f_floor = this.paper.f_floor
874
- this.model.f_room = this.paper.f_room
875
- this.model.f_floor = this.paper.f_floor
876
- this.model.f_userinfo_id = this.paper.f_userinfoid
877
- this.model.f_userinfo_code = this.paper.f_userinfo_code
878
- },
879
- hasDefect(){
880
- let checkResult = '正常'
881
- let codata = JSON.parse(JSON.stringify(this.paper))
882
- for(let device in this.paper){
883
- if(device.startsWith("device")){
884
- for(let item in this.paper[device]) {
885
- for(let i in this.paper[device][item].f_items){
886
- let items = this.paper[device][item].f_items[i]
887
- //tag
888
- if(items.f_is_defect == true || items.f_is_defect == 'true'){
889
- checkResult = '有隐患'
890
- }
891
- }
892
- }
893
- }
894
- }
895
- return checkResult
896
- },
897
- uploadPaper() {
898
- if(this.showrepair){
899
- this.$parent.isToRepair = true
900
- this.$parent.savePaper(false).then((res) => {
901
- //tag
902
- if(res != true){
903
- //tag
904
- return
905
- }else{
906
- //TODO 上传成功 转维修失败
907
- this.todo()
908
- }
909
- })
910
- }else{
911
- this.undo()
912
- }
913
-
914
- },
915
- //确认安检转维修
916
- todo(){
917
- let gen = getRepairParam(this)
918
- co(gen)
919
- },
920
- undo(){
921
- this.showCheckToRepair = !this.showCheckToRepair
922
- this.model.serviceacitivity[0].f_reciever = ''
923
- this.model.serviceacitivity[0].f_meetunit = ''
924
- this.model.f_repairtype = ''
925
- this.meading = '转站点'
926
- },
927
- repiarmancg(val){
928
- if(val){
929
- //tag
930
- this.model.serviceacitivity[0].f_reciever = val.name
931
- let http1 = new HttpResetClass()
932
- http1.load('POST',`${this.Url}/rs/sql/tel_singleTable_OrderBy`, {data: {
933
- items: 'f_user_telephone',
934
- tablename: 't_user',
935
- condition: `name = '${val}'`,
936
- orderitem: 'id'
937
- }}, {resolveMsg: null, rejectMsg: null}).then((ress) => {
938
- this.model.f_repairman_phone = ress.data[0].f_user_telephone
939
- })
940
- }
941
- },
942
- },
943
- ready() {
944
- for (let item of this.radios){
945
- if(this.paper.f_client_evaluation == item.label){
946
- item.isChecked = true;
947
- }
948
- }
949
- //tag
950
- //tag
951
- //tag
952
- //tag
953
- if (!this.paper.f_notified_path)
954
- this.$set('paper.f_notified_path', Vue.nopic)
955
- if (!this.paper.f_sign_path)
956
- this.$set('paper.f_sign_path', Vue.nopic)
957
- if (!this.paper.f_overall_imgs){
958
- let imgs = []
959
- // imgs.push({f_overall_path:Vue.nopic})
960
- this.$set('paper.f_overall_imgs', imgs)
961
- //tag
962
- }
963
- if (!this.paper.f_overall2_path)
964
- this.$set('paper.f_overall2_path', Vue.nopic)
965
-
966
- this.userid = this.role == 'view'? this.$login.f.id:Vue.user.id
967
- if(Vue.config.safecheck != undefined){
968
- if(Vue.config.safecheck.ApproveConfig != undefined){
969
- if(Vue.config.safecheck.ApproveConfig.safeCheckToRepair != undefined) {
970
- this.safeCheckToRepair = Vue.config.safecheck.ApproveConfig.safeCheckToRepair
971
- }
972
- }
973
- }
974
- //tag
975
- //tag
976
- this.getGaspic()
977
- },
978
- watch:{
979
- '$parent.isUpload'(val){
980
- //tag
981
- }
982
- }
983
- }
984
- </script>
985
- <style>
986
- .text-left{
987
- text-align:left;
988
- }
989
- .font{
990
- font: 15px PingFang-SC-Medium;
991
- color: #333333;
992
- }
993
- .showInput{
994
- font: 14px PingFang-SC-Medium;
995
- color: #666666;
996
- }
997
- .info{
998
- margin-top: 15px;
999
- border-radius: 5px;
1000
- background-color: #f3faff;
1001
- }
1002
- .btn-photo{
1003
- border: 0;
1004
- border-radius: 7px;
1005
- background-color: #7dc1f4;
1006
- font: 15px PingFang-SC-Bold;
1007
- height: 20%;
1008
- }
1009
- .div-photo{
1010
- width: auto;
1011
- height: auto;
1012
- /* margin-top: 10px; */
1013
- position: absolute;
1014
- bottom: 10px;
1015
- right: 10px;
1016
- }
1017
- .btn-voice{
1018
- border-radius: 7px;
1019
- border: 1px solid #dedede;
1020
- background-color: #f5fbff;
1021
- font: 15px PingFang-SC-Bold;
1022
- color: #499edf;
1023
- }
1024
- .save-btn{
1025
- width: 25%;
1026
- background-color:#499edf;
1027
- border-radius: 6px;
1028
- color: #FFFFFF;
1029
- font: 15px PingFang-SC-Bold;
1030
- }
1031
- .upload-btn{
1032
- width: 25%;
1033
- background-color:#ffffff;
1034
- border: 1px solid #499edf;
1035
- border-radius: 6px;
1036
- color: #499edf;
1037
- font: 15px PingFang-SC-Bold;
1038
- }
1039
- .repair-btn{
1040
- width: 25%;
1041
- border: 1px solid #499edf;
1042
- border-radius: 6px;
1043
- font: 15px PingFang-SC-Bold;
1044
- }
1045
- </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>