telephone-clients 3.0.104-10 → 3.0.104-101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/package.json +3 -3
  2. package/src/App.vue +54 -54
  3. package/src/components/android/ImgArea.vue +80 -0
  4. package/src/components/guoxin/Console.vue +42 -14
  5. package/src/components/guoxin/call.state.api.js +3 -1
  6. package/src/components/pc/ComplainWork.vue +3 -0
  7. package/src/components/pc/NewRepairPaper.vue +378 -370
  8. package/src/components/pc/RecordListLeft.vue +80 -10
  9. package/src/components/pc/RepairsWork.vue +33 -3
  10. package/src/components/pc/RoleSelector.vue +7 -1
  11. package/src/components/pc/Seekwork.vue +3 -0
  12. package/src/components/pc/SiteSend.vue +38 -1
  13. package/src/components/pc/TelLossList.vue +20 -3
  14. package/src/components/pc/WorkHistory.vue +1 -1
  15. package/src/components/pc/WorkList.vue +4 -3
  16. package/src/components/pc/WorkListAllNew.vue +16 -8
  17. package/src/components/pc/WorkListNew.vue +722 -712
  18. package/src/components/sendsingle/onlinequeryuser.vue +1 -1
  19. package/src/components/telcount/TelByOrderMan.vue +22 -4
  20. package/src/components/telreport/RepairsDetailsReport.vue +2 -2
  21. package/src/components/telreport/TrafficClassificationReport.vue +13 -13
  22. package/src/components/telreport/Trafficassess.vue +2 -2
  23. package/src/components/temp/HandplanInfo.vue +5 -1
  24. package/src/components/temp/InstructInfo.vue +1 -1
  25. package/src/components/temp/SecuritycheckInfo.vue +14 -0
  26. package/src/components/workorder/RepairDetails.vue +8 -2
  27. package/src/components/workorder/RepairInfo.vue +3 -3
  28. package/src/components/workorder/RepairPaperAndroid.vue +351 -0
  29. package/src/components/workorder/ServiceOnlineQuery.vue +306 -0
  30. package/src/components/workorder/TemporarySingle.vue +346 -302
  31. package/src/filiale/furuike/pc/QueryVisitHistory.vue +14 -1
  32. package/src/filiale/furuike/pc/WorkHistory.vue +576 -576
  33. package/src/filiale/hanzhong/telephone.js +1 -1
  34. package/src/filiale/jiaocheng/android/createQRcode.vue +204 -0
  35. package/src/filiale/jiaocheng/android/onlineBuyGas.vue +637 -0
  36. package/src/filiale/jiaocheng/telephone.js +8 -0
  37. package/src/filiale/jiaocheng/telephoneAndroid.js +15 -0
  38. package/src/filiale/lixian/onlineChangeMeter.vue +481 -0
  39. package/src/filiale/lixian/onlineoperation.vue +606 -0
  40. package/src/filiale/lixian/onlinequeryuser.vue +509 -0
  41. package/src/filiale/lixian/telephoneAndroid.js +23 -0
  42. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +880 -845
  43. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -537
  44. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -260
  45. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  46. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -992
  47. package/src/filiale/qianneng/pc/WorkListAllNew.vue +757 -757
  48. package/src/filiale/qianneng/pc/changetable.vue +273 -273
  49. package/src/filiale/qianneng/telephone.js +22 -22
  50. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +0 -1
  51. package/src/filiale/rizhao/pc/RepairsWork.vue +0 -1
  52. package/src/filiale/rizhao/pc/WorkListAllNew.vue +11 -5
  53. package/src/filiale/rizhao/telephone.js +1 -1
  54. package/src/filiale/shanxian/android/RepairFirstV.vue +3 -0
  55. package/src/filiale/shanxian/pc/TelFindUser.vue +310 -0
  56. package/src/filiale/shanxian/pc/WorkList.vue +2 -2
  57. package/src/filiale/shanxian/telephone.js +1 -0
  58. package/src/filiale/shexian/android/AddMyTask.vue +7 -0
  59. package/src/filiale/shexian/android/RepairFirstV.vue +5 -0
  60. package/src/filiale/shexian/android/RepairInfo.vue +1 -0
  61. package/src/filiale/shexian/pc/TelAgentVoiceReport.vue +9 -9
  62. package/src/filiale/shexian/pc/TelByRepairType.vue +3 -3
  63. package/src/filiale/shexian/pc/WorkList.vue +4 -1
  64. package/src/filiale/shexian/pc/WorkListAllNew.vue +14 -1
  65. package/src/filiale/tongchuan/android/RepairDetails.vue +623 -0
  66. package/src/filiale/tongchuan/pc/AnalysisMain.vue +7 -7
  67. package/src/filiale/tongchuan/pc/RepairsWork.vue +8 -0
  68. package/src/filiale/tongchuan/pc/UserWork.vue +8 -0
  69. package/src/filiale/tongchuan/telephoneAndroid.js +1 -0
  70. package/src/filiale/wenxi/android/FaultAll.vue +710 -0
  71. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +73 -162
  72. package/src/filiale/wenxi/android/RepairOrderV.vue +1 -1
  73. package/src/filiale/wenxi/android/ZHihuanFirst.vue +149 -129
  74. package/src/filiale/wenxi/pc/DistributeWork.vue +1 -1
  75. package/src/filiale/wenxi/pc/RecordListLeft.vue +272 -0
  76. package/src/filiale/wenxi/pc/RepairsWork.vue +143 -64
  77. package/src/filiale/wenxi/pc/TelAgentVoiceReport.vue +290 -0
  78. package/src/filiale/wenxi/pc/TelLossList.vue +272 -0
  79. package/src/filiale/wenxi/telephone.js +4 -0
  80. package/src/filiale/wenxi/telephoneAndroid.js +2 -1
  81. package/src/filiale/wuhai/telephone.js +1 -1
  82. package/src/filiale/yuncheng/android/LdapHelper.js +75 -0
  83. package/src/filiale/yuncheng/android/Outlay.vue +201 -0
  84. package/src/filiale/yuncheng/android/RepairInfo.vue +163 -0
  85. package/src/filiale/yuncheng/android/RepairOrderV.vue +1483 -0
  86. package/src/filiale/yuncheng/android/RepairUserInfo.vue +390 -0
  87. package/src/filiale/yuncheng/android/RightTree.vue +218 -0
  88. package/src/filiale/yuncheng/android/TemporarySingle.vue +522 -0
  89. package/src/filiale/yuncheng/android/ZHihuanFirst.vue +541 -0
  90. package/src/filiale/yuncheng/pc/DistributeWork.vue +199 -0
  91. package/src/filiale/yuncheng/pc/GasWork.vue +773 -0
  92. package/src/filiale/yuncheng/pc/TelFindUser.vue +31 -11
  93. package/src/filiale/yuncheng/pc/WorkList.vue +823 -0
  94. package/src/filiale/yuncheng/pc/WorkListAllNew.vue +781 -0
  95. package/src/filiale/yuncheng/telephone.js +5 -1
  96. package/src/filiale/yuncheng/telephoneAndroid.js +19 -0
  97. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +2 -1
  98. package/src/main.js +22 -22
  99. package/src/telephone-android.js +7 -0
  100. package/src/telephone.js +1 -1
@@ -1,537 +1,537 @@
1
- <template>
2
- <div style="height: auto;width: 100%">
3
- <div class="row app-row">
4
- <div class="col-xs-4">
5
- <label>用户姓名</label>
6
- </div>
7
- <div class="col-xs-8">
8
- <input class="inputText4" v-model=model.f_user_name style="width: 100%"></input>
9
- </div>
10
-
11
- </div>
12
- <div class="row app-row">
13
- <div class="col-xs-4">
14
- <label >联系电话</label>
15
- </div>
16
- <div class="col-xs-8">
17
- <input class="input-font inputText4 " v-model=model.f_contact_phone style="width: 100%"></input>
18
- </div>
19
-
20
- </div>
21
- <div class="row app-row">
22
- <div class="col-xs-4">
23
- <label >详细地址</label>
24
- </div>
25
- <div class="col-xs-8">
26
- <input class="input-font inputText4 " v-model=model.f_address style="width: 100%"></input>
27
- </div>
28
-
29
- </div>
30
- <div class="row app-row">
31
- <div class="col-xs-4">
32
- <label>用户类型</label>
33
- </div>
34
- <div class="col-xs-8">
35
- <v-select id="f_user_type" :value.sync="model.f_user_type" class="input-font"
36
- :options='user_types' placeholder='请选择用户类型'
37
- class="inputText4"
38
- :width="'100%'"
39
- :value-single="true"
40
- v-model="model.f_user_type" close-on-select clear-button></v-select>
41
-
42
- </div>
43
-
44
- </div>
45
-
46
- <div class="row app-row">
47
- <div class="col-xs-4">
48
- <label>是否上报</label>
49
- </div>
50
- <div class="col-xs-8">
51
- <v-select id="f_user_paidan" :value.sync="model.f_handlingtype" class="input-font"
52
- :options='handling_types' placeholder='请选择是否上报'
53
- class="inputText4"
54
- :width="'100%'"
55
- :value-single="true"
56
- v-model="model.f_handlingtype" close-on-select clear-button></v-select>
57
- </div>
58
-
59
- </div>
60
- <div class="row app-row" v-if="model.f_handlingtype=='转站点'">
61
- <div class="col-xs-4">
62
- <label>选择站点</label>
63
- </div>
64
- <div class="col-xs-8">
65
- <right-tree islist :userid="userid" :source="source" v-on:re-res="reres" v-ref:f_reciever width="100%" style="width: 100%">
66
-
67
- </right-tree>
68
- </div>
69
-
70
- </div>
71
- <div class="row app-row">
72
- <div class="col-xs-4">
73
- <label>警情类别</label>
74
- </div>
75
- <div class="col-xs-8">
76
- <v-select id="f_qiangxiu" :value.sync="model.f_repairtype" class="input-font"
77
- :options='repairstypes' placeholder='警情类别'
78
- class="inputText4"
79
- :width="'100%'"
80
- :value-single="true"
81
- v-model="model.f_repairtype" close-on-select clear-button></v-select>
82
- </div>
83
-
84
- </div>
85
- <div class="row app-row">
86
- <div class="col-xs-4">
87
- <label>报警内容类别</label>
88
- </div>
89
- <div class="col-xs-8" @click="getParamFailureTypes()">
90
- <v-select id="f_guzhang" :value.sync="failure" class="input-font"
91
- :options='failuretypes' placeholder='报警内容类别'
92
- class="inputText4"
93
- :width="'100%'"
94
- multiple
95
- v-model="failure" clear-button></v-select>
96
- </div>
97
-
98
- </div>
99
- <div class="row app-row">
100
- <div class="col-xs-4">
101
- <label>备注</label>
102
- </div>
103
- <div class="col-xs-8">
104
- <textarea class="input-font " v-model=model.f_remarks style="width: 100%"></textarea>
105
- </div>
106
-
107
- </div>
108
- 隐患前照片:
109
- <div class="form-group col-sm-12">
110
-
111
- <div class="panel" style="padding: 10px 10px 5px 10px;">
112
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 90%;margin-left:5%;height: 220px;position: relative">
113
- <div class="row" style="height: 180px;overflow: scroll;top: 1px">
114
- <div class="col-sm-4">
115
- <img-self :src="model.f_single_path" alt="抢修照片" :width="140" :height="170" capture="camera" type="file" @change="upload"></img-self>
116
- </div>
117
- </div>
118
-
119
- <div class="row text-right div-photo" style="height: 50px">
120
- <img src="../../../assets/remove.png" @click="delfile('f_single_path', model.f_single_path)" ></img>
121
- <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_single_path','抢修照片')" >拍照</button>
122
-
123
- </div>
124
- </div>
125
- </div>
126
-
127
- </div>
128
- <div class="form-group col-sm-12">
129
-
130
- <div class="panel" style="padding: 10px 10px 5px 10px;">
131
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 90%;margin-left:5%;height: 220px;position: relative">
132
- <div class="row" style="height: 180px;overflow: scroll;top: 1px">
133
- <div class="col-sm-4">
134
- <img-self :src="model.f_singlea_path" alt="抢修照片" :width="140" :height="170" capture="camera" type="file" @change="upload"></img-self>
135
- </div>
136
- </div>
137
-
138
- <div class="row text-right div-photo" style="height: 50px">
139
- <img src="../../../assets/remove.png" @click="delfile('f_singlea_path', model.f_singlea_path)" ></img>
140
- <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic1('f_singlea_path','抢修照片')" >拍照</button>
141
-
142
- </div>
143
- </div>
144
- </div>
145
-
146
- </div>
147
- <div class="form-group col-sm-12">
148
-
149
- <div class="panel" style="padding: 10px 10px 5px 10px;">
150
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 90%;margin-left:5%;height: 220px;position: relative">
151
- <div class="row" style="height: 180px;overflow: scroll;top: 1px">
152
- <div class="col-sm-4">
153
- <img-self :src="model.f_singleb_path" alt="抢修照片" :width="140" :height="170" capture="camera" type="file" @change="upload"></img-self>
154
- </div>
155
- </div>
156
-
157
- <div class="row text-right div-photo" style="height: 50px">
158
- <img src="../../../assets/remove.png" @click="delfile('f_singleb_path', model.f_singleb_path)" ></img>
159
- <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic2('f_singleb_path','抢修照片')" >拍照</button>
160
-
161
- </div>
162
- </div>
163
- </div>
164
-
165
- </div>
166
- <div class="row app-row text-center" style="margin-top: 20px;">
167
- <button type="button" class="btn btn-lg btn-font btn-color" style="width: 25%;" @click="save">保存</button>
168
- </div>
169
-
170
- </div>
171
- </template>
172
-
173
- <script>
174
- import Vue from 'vue'
175
- import * as Util from '../../../components/Util'
176
- export default {
177
- title: '在线维修处理',
178
- props: {
179
- userinfo:{
180
- type: Object,
181
- default: null
182
- }
183
- },
184
- data() {
185
- return {
186
- source:
187
- 'dep=this.getParentByType($organization$).getSpecialResByType($department$),' +
188
- 'tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))',
189
- userid: Vue.user.id,
190
- failure:[],
191
- model:{
192
- f_userinfo_id:'',
193
- f_userinfo_code:'',
194
- aState: null,
195
- f_address: '',
196
- f_area: "",
197
- f_attendant: Vue.user.name,
198
- f_building: "",
199
- f_card_id: "",
200
- f_contact_phone: "",
201
- f_depid:Vue.user.depids,
202
- f_filiale_id: "",
203
- f_floor: "",
204
- f_handlingtype: "转维修员",
205
- f_enter_number:'',
206
- f_meetunit: "",
207
- f_operator:Vue.user.name,
208
- f_operatorid:Vue.user.id,
209
- f_orgid:Vue.user.orgid,
210
- f_orgname:Vue.user.orgs,
211
- f_outlets: "",
212
- f_phone: "",
213
- f_reciever: "",
214
- f_remarks: "",
215
- f_repair_date: Util.getNowDate(),
216
- f_repairman_phone: "",
217
- f_repairtype: "",
218
- f_residential_area: "",
219
- f_room: "",
220
- f_service_id: "",
221
- f_source: "临时派单",
222
- f_street: "",
223
- f_unit: "",
224
- f_unit_name: "",
225
- f_user_name: "",
226
- f_user_type: "",
227
- failure: "",
228
- f_single_path:'',
229
- f_singlea_path:'',
230
- f_singleb_path:'',
231
- serviceacitivity:[{
232
- f_service_acitivity_type: "派单",
233
- f_reciever: Vue.user.name
234
- }],
235
- f_alarm_accident:'',
236
- f_alarm_details:''
237
- },
238
- failuresAll : this.$appdata.getParam('报警内容类别'),
239
- repairstypes : this.$appdata.getParam('报修类型'),
240
- failuretypes: [],
241
- user_types:[{label:"民用",value:"民用"},
242
- {label:"非民用",value:"非民用"}],
243
- repair_types:[{label:"民用",value:"民用"},
244
- {label:"非民用",value:"非民用"}],
245
- handling_types:[{label:"是",value:"转站点"},
246
- {label:"否",value:"转维修员"}]
247
- }
248
- },
249
- methods: {
250
- getParamFailureTypes(){
251
- this.failuretypes=[]
252
- if (!this.model.f_repairtype){
253
- return
254
- }
255
- for (let i = 0; i < this.failuresAll.length; i++) {
256
- if (!this.failuresAll[i].label.startsWith(this.model.f_repairtype)){
257
- continue
258
- }
259
- let tempData = {
260
- label: this.failuresAll[i].label.split('-')[this.failuresAll[i].label.split('-').length-1],
261
- value: this.failuresAll[i].value.split('-')[this.failuresAll[i].label.split('-').length-1]
262
- }
263
- this.failuretypes.push(tempData)
264
- }
265
- },
266
- delfile(prop, fileName) {
267
- if (fileName == Vue.nopic)
268
- return
269
- else {
270
- HostApp.delfile(fileName)
271
- this.model[prop] = Vue.nopic
272
- }
273
- },
274
- cameraCallBack(prop, fileName) {
275
- HostApp.__this__.model.f_single_path = fileName + '?' + Math.random()
276
- HostApp.__callback__ = null
277
- HostApp.__this__ = null
278
- },
279
- cameraCallBack1(prop, fileName) {
280
- HostApp.__this__.model.f_singlea_path = fileName + '?' + Math.random()
281
- HostApp.__callback__ = null
282
- HostApp.__this__ = null
283
- },
284
- cameraCallBack2(prop, fileName) {
285
- HostApp.__this__.model.f_singleb_path = fileName + '?' + Math.random()
286
- HostApp.__callback__ = null
287
- HostApp.__this__ = null
288
- },
289
-
290
- takePic(prop, title) {
291
- HostApp.__callback__ = this.cameraCallBack
292
- HostApp.__this__ = this
293
- let fileName
294
- if (!this.model.f_single_path || this.model.f_single_path.includes("nopic.png")) {
295
- fileName = Util.guid() + '-' + prop + '.jpg'
296
- } else {
297
- fileName = Util.getFileName(this.model.f_single_path)
298
- }
299
- //tag
300
- //tag
301
- HostApp._open_a_page({
302
- type: 'boomerang',
303
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
304
- param: {
305
- file: fileName,
306
- requestCode: 111,
307
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
308
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
309
- }
310
- })
311
- },
312
- takePic1(prop, title) {
313
- HostApp.__callback__ = this.cameraCallBack1
314
- HostApp.__this__ = this
315
- let fileName
316
- if (!this.model.f_singlea_path || this.model.f_singlea_path.includes("nopic.png")) {
317
- fileName = Util.guid() + '-' + prop + '.jpg'
318
- } else {
319
- fileName = Util.getFileName(this.model.f_singlea_path)
320
- }
321
- //tag
322
- //tag
323
- HostApp._open_a_page({
324
- type: 'boomerang',
325
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
326
- param: {
327
- file: fileName,
328
- requestCode: 111,
329
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
330
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
331
- }
332
- })
333
- },
334
- takePic2(prop, title) {
335
- HostApp.__callback__ = this.cameraCallBack2
336
- HostApp.__this__ = this
337
- let fileName
338
- if (!this.model.f_singleb_path || this.model.f_singleb_path.includes("nopic.png")) {
339
- fileName = Util.guid() + '-' + prop + '.jpg'
340
- } else {
341
- fileName = Util.getFileName(this.model.f_singleb_path)
342
- }
343
- //tag
344
- //tag
345
- HostApp._open_a_page({
346
- type: 'boomerang',
347
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
348
- param: {
349
- file: fileName,
350
- requestCode: 111,
351
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
352
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
353
- }
354
- })
355
- },
356
-
357
- save() {
358
- if (!this.model.f_address){
359
- this.$showMessage('请填写地址信息')
360
- return
361
- }
362
- debugger
363
- if (!this.model.f_repairtype){
364
- this.$showMessage('请填写警情类别')
365
- return
366
- }
367
- if (this.failure.length == 0){
368
- this.$showMessage('请填写报警内容类别')
369
- return
370
- }
371
- //tag)
372
- let data = {
373
- model: this.model, loginUser: {
374
- name: Vue.user.name,
375
- ename: Vue.user.ename
376
- }, user: null, callObj: null
377
- }
378
- if(data.model.failure){
379
- data.model.f_json = this.trouble(data.model.failure)
380
- }
381
- if(this.model.f_handlingtype=='转维修员'){
382
- data.toRepair = '一级派单'
383
- this.model.f_meetunit = Vue.user.deps
384
- this.model.f_orgid = Vue.user.orgid
385
- this.model.f_filiale = Vue.user.org
386
- this.model.f_outlets = Vue.user.deps
387
- this.model.f_filiale_id = Vue.user.orgid
388
- this.model.serviceacitivity[0].f_reciever = Vue.user.name
389
- this.model.serviceacitivity[0].f_meetunit = null
390
- }
391
- //tag
392
- HostApp.__this__ = this
393
- HostApp.logicWithHint({'logic': 'callerSendPhone', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
394
- 'data': data, 'backresult':1
395
- })
396
- },
397
- commitCallBack(jo){
398
- console.log('shujui',jo)
399
- if (jo.state == "ok"&&this.model.f_handlingtype=='转站点'){
400
- this.$showMessage('抢修上报成功', ['confirm']).then((req) => {
401
- if (req === 'confirm') {
402
- this.$dispatch('confirm')
403
- }
404
- })
405
- }
406
- else if (jo.state == "ok"&&this.model.f_handlingtype=='转维修员'){
407
- this.$showMessage('抢修上报成功,请前往待办工单页面查看', ['confirm']).then((req) => {
408
- if (req === 'confirm') {
409
- this.$dispatch('confirm')
410
- }
411
- })
412
- }else{
413
- this.$showMessage('服务器内部错误')
414
- }
415
- },
416
- reres(val){
417
- if(val.res == undefined || val.res[0] == undefined || val.res[0] == ''){
418
- return
419
- }
420
- this.model.serviceacitivity[0].f_meetunit = val.res[0]
421
- this.model.f_meetunit = val.res[0]
422
- this.model.f_filiale_id = val.orgobj[0].parentid
423
- this.model.f_filiale = val.orgobj[0].parentname
424
- this.model.f_outlets = val.res[0]
425
- this.model.serviceacitivity[0].f_reciever = val.resids[0]
426
- },
427
- changeFailure(val) {
428
- let failure = []
429
- for (let i = 0; i < val.length; i++) {
430
- failure.push({"f_failure_type": val[i], "failurecase": []})
431
- }
432
- this.model.failure=JSON.stringify(failure)
433
- },
434
- trouble (val) {
435
- let failureall=''
436
- let failure = JSON.parse(val)
437
- for (let i = 0; i <failure.length; i++) {
438
- if (failure[i].failurecase.length>0){
439
- failureall+=failure[i].f_failure_type+":"
440
- for (let j = 0; j < failure[i].failurecase.length; j++) {
441
- failureall+=failure[i].failurecase[j]
442
- if (j+1!=failure[i].failurecase.length){
443
- failureall+=","
444
- }
445
- }
446
-
447
- }else{
448
- failureall+=failure[i].f_failure_type
449
- }
450
- if (i+1!=failure.length){
451
- failureall+=';'
452
- }
453
- }
454
- return failureall
455
- }
456
- },
457
- ready(){
458
- this.changeFailure(this.failure)
459
- // let gen = select(this)
460
- // co(gen)
461
- },
462
- watch: {
463
- 'failure'(val){
464
- this.changeFailure(val)
465
- },
466
- 'userinfo'(val){
467
- if(val){
468
- this.model.f_user_name = val.f_user_name
469
- this.model.f_contact_phone = val.f_user_phone
470
- this.model.f_userinfo_id = val.f_userinfo_id
471
- this.model.f_userinfo_code = val.f_userinfo_code
472
- this.model.f_address = val.f_address
473
- this.model.f_user_type = val.f_user_type
474
- this.model.f_enter_number = val.f_enter_number
475
- }
476
- }
477
- }
478
- }
479
- </script>
480
-
481
- <style scoped>
482
- .inputText4 {
483
- font-family:Arial,Helvetica,sans-serif;
484
- background:none repeat scroll 0 0 #F5F7FD;
485
- border:1px solid #B8BFE9;
486
- padding:5px 7px;
487
- width:100px;
488
- vertical-align:middle;
489
- height:30px;
490
- font-size:12px;
491
- margin:0;
492
- list-style:none outside none;
493
- }
494
- .input-font{
495
- font: 15px PingFang-SC-Medium;
496
- color: #333333;
497
- }
498
- .app-row {
499
- background-color: white;
500
- padding: 10px 10px 0 10px;
501
- border-bottom: 1px solid rgba(235, 235, 235, 0.5);
502
- }
503
- .bg {
504
- background-color: blue;
505
- height: 1px;
506
- border: 0;
507
- }
508
- .app-row {
509
- background-color: white;
510
- padding: 10px 10px 0 10px;
511
- border-bottom: 1px solid rgba(235, 235, 235, 0.5);
512
- }
513
- .search_input {
514
- border: 0;
515
- outline: none;
516
- }
517
- .font{
518
- font: 15px PingFang-SC-Medium;
519
- color: #666666;
520
- }
521
- .input-font{
522
- font: 15px PingFang-SC-Medium;
523
- color: #333333;
524
- }
525
- .btn-font{
526
- font:600 16px PingFang-SC-Bold;
527
- color: #499EDF;
528
- }
529
- .btn-color{
530
- background-color: #FFFFFF;
531
- border-radius: 10px ;
532
- border: 1px solid #499EDF;
533
- }
534
- .app-text {
535
- font-size: 12px;
536
- }
537
- </style>
1
+ <template>
2
+ <div style="height: auto;width: 100%">
3
+ <div class="row app-row">
4
+ <div class="col-xs-4">
5
+ <label>用户姓名</label>
6
+ </div>
7
+ <div class="col-xs-8">
8
+ <input class="inputText4" v-model=model.f_user_name style="width: 100%"></input>
9
+ </div>
10
+
11
+ </div>
12
+ <div class="row app-row">
13
+ <div class="col-xs-4">
14
+ <label >联系电话</label>
15
+ </div>
16
+ <div class="col-xs-8">
17
+ <input class="input-font inputText4 " v-model=model.f_contact_phone style="width: 100%"></input>
18
+ </div>
19
+
20
+ </div>
21
+ <div class="row app-row">
22
+ <div class="col-xs-4">
23
+ <label >详细地址</label>
24
+ </div>
25
+ <div class="col-xs-8">
26
+ <input class="input-font inputText4 " v-model=model.f_address style="width: 100%"></input>
27
+ </div>
28
+
29
+ </div>
30
+ <div class="row app-row">
31
+ <div class="col-xs-4">
32
+ <label>用户类型</label>
33
+ </div>
34
+ <div class="col-xs-8">
35
+ <v-select id="f_user_type" :value.sync="model.f_user_type" class="input-font"
36
+ :options='user_types' placeholder='请选择用户类型'
37
+ class="inputText4"
38
+ :width="'100%'"
39
+ :value-single="true"
40
+ v-model="model.f_user_type" close-on-select clear-button></v-select>
41
+
42
+ </div>
43
+
44
+ </div>
45
+
46
+ <div class="row app-row">
47
+ <div class="col-xs-4">
48
+ <label>是否上报</label>
49
+ </div>
50
+ <div class="col-xs-8">
51
+ <v-select id="f_user_paidan" :value.sync="model.f_handlingtype" class="input-font"
52
+ :options='handling_types' placeholder='请选择是否上报'
53
+ class="inputText4"
54
+ :width="'100%'"
55
+ :value-single="true"
56
+ v-model="model.f_handlingtype" close-on-select clear-button></v-select>
57
+ </div>
58
+
59
+ </div>
60
+ <div class="row app-row" v-if="model.f_handlingtype=='转站点'">
61
+ <div class="col-xs-4">
62
+ <label>选择站点</label>
63
+ </div>
64
+ <div class="col-xs-8">
65
+ <right-tree islist :userid="userid" :source="source" v-on:re-res="reres" v-ref:f_reciever width="100%" style="width: 100%">
66
+
67
+ </right-tree>
68
+ </div>
69
+
70
+ </div>
71
+ <div class="row app-row">
72
+ <div class="col-xs-4">
73
+ <label>警情类别</label>
74
+ </div>
75
+ <div class="col-xs-8">
76
+ <v-select id="f_qiangxiu" :value.sync="model.f_repairtype" class="input-font"
77
+ :options='repairstypes' placeholder='警情类别'
78
+ class="inputText4"
79
+ :width="'100%'"
80
+ :value-single="true"
81
+ v-model="model.f_repairtype" close-on-select clear-button></v-select>
82
+ </div>
83
+
84
+ </div>
85
+ <div class="row app-row">
86
+ <div class="col-xs-4">
87
+ <label>报警内容类别</label>
88
+ </div>
89
+ <div class="col-xs-8" @click="getParamFailureTypes()">
90
+ <v-select id="f_guzhang" :value.sync="failure" class="input-font"
91
+ :options='failuretypes' placeholder='报警内容类别'
92
+ class="inputText4"
93
+ :width="'100%'"
94
+ multiple
95
+ v-model="failure" clear-button></v-select>
96
+ </div>
97
+
98
+ </div>
99
+ <div class="row app-row">
100
+ <div class="col-xs-4">
101
+ <label>备注</label>
102
+ </div>
103
+ <div class="col-xs-8">
104
+ <textarea class="input-font " v-model=model.f_remarks style="width: 100%"></textarea>
105
+ </div>
106
+
107
+ </div>
108
+ 隐患前照片:
109
+ <div class="form-group col-sm-12">
110
+
111
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
112
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 90%;margin-left:5%;height: 220px;position: relative">
113
+ <div class="row" style="height: 180px;overflow: scroll;top: 1px">
114
+ <div class="col-sm-4">
115
+ <img-self :src="model.f_single_path" alt="抢修照片" :width="140" :height="170" capture="camera" type="file" @change="upload"></img-self>
116
+ </div>
117
+ </div>
118
+
119
+ <div class="row text-right div-photo" style="height: 50px">
120
+ <img src="../../../assets/remove.png" @click="delfile('f_single_path', model.f_single_path)" ></img>
121
+ <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_single_path','抢修照片')" >拍照</button>
122
+
123
+ </div>
124
+ </div>
125
+ </div>
126
+
127
+ </div>
128
+ <div class="form-group col-sm-12">
129
+
130
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
131
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 90%;margin-left:5%;height: 220px;position: relative">
132
+ <div class="row" style="height: 180px;overflow: scroll;top: 1px">
133
+ <div class="col-sm-4">
134
+ <img-self :src="model.f_singlea_path" alt="抢修照片" :width="140" :height="170" capture="camera" type="file" @change="upload"></img-self>
135
+ </div>
136
+ </div>
137
+
138
+ <div class="row text-right div-photo" style="height: 50px">
139
+ <img src="../../../assets/remove.png" @click="delfile('f_singlea_path', model.f_singlea_path)" ></img>
140
+ <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic1('f_singlea_path','抢修照片')" >拍照</button>
141
+
142
+ </div>
143
+ </div>
144
+ </div>
145
+
146
+ </div>
147
+ <div class="form-group col-sm-12">
148
+
149
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
150
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 90%;margin-left:5%;height: 220px;position: relative">
151
+ <div class="row" style="height: 180px;overflow: scroll;top: 1px">
152
+ <div class="col-sm-4">
153
+ <img-self :src="model.f_singleb_path" alt="抢修照片" :width="140" :height="170" capture="camera" type="file" @change="upload"></img-self>
154
+ </div>
155
+ </div>
156
+
157
+ <div class="row text-right div-photo" style="height: 50px">
158
+ <img src="../../../assets/remove.png" @click="delfile('f_singleb_path', model.f_singleb_path)" ></img>
159
+ <button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic2('f_singleb_path','抢修照片')" >拍照</button>
160
+
161
+ </div>
162
+ </div>
163
+ </div>
164
+
165
+ </div>
166
+ <div class="row app-row text-center" style="margin-top: 20px;">
167
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 25%;" @click="save">保存</button>
168
+ </div>
169
+
170
+ </div>
171
+ </template>
172
+
173
+ <script>
174
+ import Vue from 'vue'
175
+ import * as Util from '../../../components/Util'
176
+ export default {
177
+ title: '在线维修处理',
178
+ props: {
179
+ userinfo:{
180
+ type: Object,
181
+ default: null
182
+ }
183
+ },
184
+ data() {
185
+ return {
186
+ source:
187
+ 'dep=this.getParentByType($organization$).getSpecialResByType($department$),' +
188
+ 'tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))',
189
+ userid: Vue.user.id,
190
+ failure:[],
191
+ model:{
192
+ f_userinfo_id:'',
193
+ f_userinfo_code:'',
194
+ aState: null,
195
+ f_address: '',
196
+ f_area: "",
197
+ f_attendant: Vue.user.name,
198
+ f_building: "",
199
+ f_card_id: "",
200
+ f_contact_phone: "",
201
+ f_depid:Vue.user.depids,
202
+ f_filiale_id: "",
203
+ f_floor: "",
204
+ f_handlingtype: "转维修员",
205
+ f_enter_number:'',
206
+ f_meetunit: "",
207
+ f_operator:Vue.user.name,
208
+ f_operatorid:Vue.user.id,
209
+ f_orgid:Vue.user.orgid,
210
+ f_orgname:Vue.user.orgs,
211
+ f_outlets: "",
212
+ f_phone: "",
213
+ f_reciever: "",
214
+ f_remarks: "",
215
+ f_repair_date: Util.getNowDate(),
216
+ f_repairman_phone: "",
217
+ f_repairtype: "",
218
+ f_residential_area: "",
219
+ f_room: "",
220
+ f_service_id: "",
221
+ f_source: "临时派单",
222
+ f_street: "",
223
+ f_unit: "",
224
+ f_unit_name: "",
225
+ f_user_name: "",
226
+ f_user_type: "",
227
+ failure: "",
228
+ f_single_path:'',
229
+ f_singlea_path:'',
230
+ f_singleb_path:'',
231
+ serviceacitivity:[{
232
+ f_service_acitivity_type: "派单",
233
+ f_reciever: Vue.user.name
234
+ }],
235
+ f_alarm_accident:'',
236
+ f_alarm_details:''
237
+ },
238
+ failuresAll : this.$appdata.getParam('报警内容类别'),
239
+ repairstypes : this.$appdata.getParam('报修类型'),
240
+ failuretypes: [],
241
+ user_types:[{label:"民用",value:"民用"},
242
+ {label:"非民用",value:"非民用"}],
243
+ repair_types:[{label:"民用",value:"民用"},
244
+ {label:"非民用",value:"非民用"}],
245
+ handling_types:[{label:"是",value:"转站点"},
246
+ {label:"否",value:"转维修员"}]
247
+ }
248
+ },
249
+ methods: {
250
+ getParamFailureTypes(){
251
+ this.failuretypes=[]
252
+ if (!this.model.f_repairtype){
253
+ return
254
+ }
255
+ for (let i = 0; i < this.failuresAll.length; i++) {
256
+ if (!this.failuresAll[i].label.startsWith(this.model.f_repairtype)){
257
+ continue
258
+ }
259
+ let tempData = {
260
+ label: this.failuresAll[i].label.split('-')[this.failuresAll[i].label.split('-').length-1],
261
+ value: this.failuresAll[i].value.split('-')[this.failuresAll[i].label.split('-').length-1]
262
+ }
263
+ this.failuretypes.push(tempData)
264
+ }
265
+ },
266
+ delfile(prop, fileName) {
267
+ if (fileName == Vue.nopic)
268
+ return
269
+ else {
270
+ HostApp.delfile(fileName)
271
+ this.model[prop] = Vue.nopic
272
+ }
273
+ },
274
+ cameraCallBack(prop, fileName) {
275
+ HostApp.__this__.model.f_single_path = fileName + '?' + Math.random()
276
+ HostApp.__callback__ = null
277
+ HostApp.__this__ = null
278
+ },
279
+ cameraCallBack1(prop, fileName) {
280
+ HostApp.__this__.model.f_singlea_path = fileName + '?' + Math.random()
281
+ HostApp.__callback__ = null
282
+ HostApp.__this__ = null
283
+ },
284
+ cameraCallBack2(prop, fileName) {
285
+ HostApp.__this__.model.f_singleb_path = fileName + '?' + Math.random()
286
+ HostApp.__callback__ = null
287
+ HostApp.__this__ = null
288
+ },
289
+
290
+ takePic(prop, title) {
291
+ HostApp.__callback__ = this.cameraCallBack
292
+ HostApp.__this__ = this
293
+ let fileName
294
+ if (!this.model.f_single_path || this.model.f_single_path.includes("nopic.png")) {
295
+ fileName = Util.guid() + '-' + prop + '.jpg'
296
+ } else {
297
+ fileName = Util.getFileName(this.model.f_single_path)
298
+ }
299
+ //tag
300
+ //tag
301
+ HostApp._open_a_page({
302
+ type: 'boomerang',
303
+ page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
304
+ param: {
305
+ file: fileName,
306
+ requestCode: 111,
307
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
308
+ watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
309
+ }
310
+ })
311
+ },
312
+ takePic1(prop, title) {
313
+ HostApp.__callback__ = this.cameraCallBack1
314
+ HostApp.__this__ = this
315
+ let fileName
316
+ if (!this.model.f_singlea_path || this.model.f_singlea_path.includes("nopic.png")) {
317
+ fileName = Util.guid() + '-' + prop + '.jpg'
318
+ } else {
319
+ fileName = Util.getFileName(this.model.f_singlea_path)
320
+ }
321
+ //tag
322
+ //tag
323
+ HostApp._open_a_page({
324
+ type: 'boomerang',
325
+ page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
326
+ param: {
327
+ file: fileName,
328
+ requestCode: 111,
329
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
330
+ watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
331
+ }
332
+ })
333
+ },
334
+ takePic2(prop, title) {
335
+ HostApp.__callback__ = this.cameraCallBack2
336
+ HostApp.__this__ = this
337
+ let fileName
338
+ if (!this.model.f_singleb_path || this.model.f_singleb_path.includes("nopic.png")) {
339
+ fileName = Util.guid() + '-' + prop + '.jpg'
340
+ } else {
341
+ fileName = Util.getFileName(this.model.f_singleb_path)
342
+ }
343
+ //tag
344
+ //tag
345
+ HostApp._open_a_page({
346
+ type: 'boomerang',
347
+ page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
348
+ param: {
349
+ file: fileName,
350
+ requestCode: 111,
351
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
352
+ watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
353
+ }
354
+ })
355
+ },
356
+
357
+ save() {
358
+ if (!this.model.f_address){
359
+ this.$showMessage('请填写地址信息')
360
+ return
361
+ }
362
+ debugger
363
+ if (!this.model.f_repairtype){
364
+ this.$showMessage('请填写警情类别')
365
+ return
366
+ }
367
+ if (this.failure.length == 0){
368
+ this.$showMessage('请填写报警内容类别')
369
+ return
370
+ }
371
+ //tag)
372
+ let data = {
373
+ model: this.model, loginUser: {
374
+ name: Vue.user.name,
375
+ ename: Vue.user.ename
376
+ }, user: null, callObj: null
377
+ }
378
+ if(data.model.failure){
379
+ data.model.f_json = this.trouble(data.model.failure)
380
+ }
381
+ if(this.model.f_handlingtype=='转维修员'){
382
+ data.toRepair = '一级派单'
383
+ this.model.f_meetunit = Vue.user.deps
384
+ this.model.f_orgid = Vue.user.orgid
385
+ this.model.f_filiale = Vue.user.org
386
+ this.model.f_outlets = Vue.user.deps
387
+ this.model.f_filiale_id = Vue.user.orgid
388
+ this.model.serviceacitivity[0].f_reciever = Vue.user.name
389
+ this.model.serviceacitivity[0].f_meetunit = null
390
+ }
391
+ //tag
392
+ HostApp.__this__ = this
393
+ HostApp.logicWithHint({'logic': 'callerSendPhone', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
394
+ 'data': data, 'backresult':1
395
+ })
396
+ },
397
+ commitCallBack(jo){
398
+ console.log('shujui',jo)
399
+ if (jo.state == "ok"&&this.model.f_handlingtype=='转站点'){
400
+ this.$showMessage('抢修上报成功', ['confirm']).then((req) => {
401
+ if (req === 'confirm') {
402
+ this.$dispatch('confirm')
403
+ }
404
+ })
405
+ }
406
+ else if (jo.state == "ok"&&this.model.f_handlingtype=='转维修员'){
407
+ this.$showMessage('抢修上报成功,请前往待办工单页面查看', ['confirm']).then((req) => {
408
+ if (req === 'confirm') {
409
+ this.$dispatch('confirm')
410
+ }
411
+ })
412
+ }else{
413
+ this.$showMessage('服务器内部错误')
414
+ }
415
+ },
416
+ reres(val){
417
+ if(val.res == undefined || val.res[0] == undefined || val.res[0] == ''){
418
+ return
419
+ }
420
+ this.model.serviceacitivity[0].f_meetunit = val.res[0]
421
+ this.model.f_meetunit = val.res[0]
422
+ this.model.f_filiale_id = val.orgobj[0].parentid
423
+ this.model.f_filiale = val.orgobj[0].parentname
424
+ this.model.f_outlets = val.res[0]
425
+ this.model.serviceacitivity[0].f_reciever = val.resids[0]
426
+ },
427
+ changeFailure(val) {
428
+ let failure = []
429
+ for (let i = 0; i < val.length; i++) {
430
+ failure.push({"f_failure_type": val[i], "failurecase": []})
431
+ }
432
+ this.model.failure=JSON.stringify(failure)
433
+ },
434
+ trouble (val) {
435
+ let failureall=''
436
+ let failure = JSON.parse(val)
437
+ for (let i = 0; i <failure.length; i++) {
438
+ if (failure[i].failurecase.length>0){
439
+ failureall+=failure[i].f_failure_type+":"
440
+ for (let j = 0; j < failure[i].failurecase.length; j++) {
441
+ failureall+=failure[i].failurecase[j]
442
+ if (j+1!=failure[i].failurecase.length){
443
+ failureall+=","
444
+ }
445
+ }
446
+
447
+ }else{
448
+ failureall+=failure[i].f_failure_type
449
+ }
450
+ if (i+1!=failure.length){
451
+ failureall+=';'
452
+ }
453
+ }
454
+ return failureall
455
+ }
456
+ },
457
+ ready(){
458
+ this.changeFailure(this.failure)
459
+ // let gen = select(this)
460
+ // co(gen)
461
+ },
462
+ watch: {
463
+ 'failure'(val){
464
+ this.changeFailure(val)
465
+ },
466
+ 'userinfo'(val){
467
+ if(val){
468
+ this.model.f_user_name = val.f_user_name
469
+ this.model.f_contact_phone = val.f_user_phone
470
+ this.model.f_userinfo_id = val.f_userinfo_id
471
+ this.model.f_userinfo_code = val.f_userinfo_code
472
+ this.model.f_address = val.f_address
473
+ this.model.f_user_type = val.f_user_type
474
+ this.model.f_enter_number = val.f_enter_number
475
+ }
476
+ }
477
+ }
478
+ }
479
+ </script>
480
+
481
+ <style scoped>
482
+ .inputText4 {
483
+ font-family:Arial,Helvetica,sans-serif;
484
+ background:none repeat scroll 0 0 #F5F7FD;
485
+ border:1px solid #B8BFE9;
486
+ padding:5px 7px;
487
+ width:100px;
488
+ vertical-align:middle;
489
+ height:30px;
490
+ font-size:12px;
491
+ margin:0;
492
+ list-style:none outside none;
493
+ }
494
+ .input-font{
495
+ font: 15px PingFang-SC-Medium;
496
+ color: #333333;
497
+ }
498
+ .app-row {
499
+ background-color: white;
500
+ padding: 10px 10px 0 10px;
501
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
502
+ }
503
+ .bg {
504
+ background-color: blue;
505
+ height: 1px;
506
+ border: 0;
507
+ }
508
+ .app-row {
509
+ background-color: white;
510
+ padding: 10px 10px 0 10px;
511
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
512
+ }
513
+ .search_input {
514
+ border: 0;
515
+ outline: none;
516
+ }
517
+ .font{
518
+ font: 15px PingFang-SC-Medium;
519
+ color: #666666;
520
+ }
521
+ .input-font{
522
+ font: 15px PingFang-SC-Medium;
523
+ color: #333333;
524
+ }
525
+ .btn-font{
526
+ font:600 16px PingFang-SC-Bold;
527
+ color: #499EDF;
528
+ }
529
+ .btn-color{
530
+ background-color: #FFFFFF;
531
+ border-radius: 10px ;
532
+ border: 1px solid #499EDF;
533
+ }
534
+ .app-text {
535
+ font-size: 12px;
536
+ }
537
+ </style>