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
@@ -76,7 +76,7 @@
76
76
  <label class="font text-left">用户姓名:</label>
77
77
  </div>
78
78
  <div class="col-xs-8" >
79
- <input class="search_input input-font" v-model="model.f_user_name" condition="ui.f_user_name = '{}'" />
79
+ <input class="search_input input-font" v-model="model.f_user_name" condition="ui.f_user_name like '%{}%'" />
80
80
  </div>
81
81
  </div>
82
82
  <div class="row app-row">
@@ -6,8 +6,8 @@
6
6
  <div novalidate class="form-inline" partial>
7
7
  <div class="row" >
8
8
  <div class="col-sm-3 form-group form-input-group" style="width: 20%">
9
- <label class="font_normal_body" style="width: 40%">开始时间</label>
10
- <datepicker placeholder="开始时间"
9
+ <label class="font_normal_body" style="width: 40%">派单时间</label>
10
+ <datepicker placeholder="派单开始时间"
11
11
  :value.sync="model.f_created_startdate"
12
12
  v-model="model.f_created_startdate"
13
13
  :format="'yyyy-MM-dd 00:00:00'"
@@ -15,14 +15,32 @@
15
15
  ></datepicker>
16
16
  </div>
17
17
  <div class="col-sm-3 form-group form-input-group" style="width: 20%">
18
- <label class="font_normal_body" style="width: 40%">结束时间</label>
19
- <datepicker placeholder="结束时间"
18
+ <label class="font_normal_body" style="width: 40%">派单时间</label>
19
+ <datepicker placeholder="派单结束时间"
20
20
  :value.sync="model.f_created_enddate"
21
21
  v-model="model.f_created_enddate"
22
22
  :format="'yyyy-MM-dd 23:59:59'"
23
23
  condition="swo.f_created_date < '{}'"
24
24
  ></datepicker>
25
25
  </div>
26
+ <div class="col-sm-3 form-group form-input-group" style="width: 20%">
27
+ <label class="font_normal_body" style="width: 40%">完工时间</label>
28
+ <datepicker placeholder="完工起始时间"
29
+ :value.sync="model.f_leave_startdate"
30
+ v-model="model.f_leave_startdate"
31
+ :format="'yyyy-MM-dd 00:00:00'"
32
+ condition="sw.f_date_leave> '{}'"
33
+ ></datepicker>
34
+ </div>
35
+ <div class="col-sm-3 form-group form-input-group" style="width: 20%">
36
+ <label class="font_normal_body" style="width: 40%">完工时间</label>
37
+ <datepicker placeholder="完工截止时间"
38
+ :value.sync="model.f_leave_enddate"
39
+ v-model="model.f_leave_enddate"
40
+ :format="'yyyy-MM-dd 23:59:59'"
41
+ condition="sw.f_date_leave < '{}'"
42
+ ></datepicker>
43
+ </div>
26
44
  <div class="col-sm-3 form-group form-input-group" style="width: 20%">
27
45
  <button type="button" name="button" style="float: right;margin-top: 8px" class="button_search button_spacing" @click="search(),$dispatch('search')">查询</button>
28
46
  <export-excel-tel :data="$parent.$parent.searchData"
@@ -11,7 +11,7 @@
11
11
  :value.sync="model.startDate"
12
12
  style="width: 60%;"
13
13
  :disabled-days-of-Week="[]"
14
- :format="'yyyy-MM-dd'"
14
+ :format="'yyyy-MM-dd HH:mm:ss'"
15
15
  :show-reset-button="reset">
16
16
  </datepicker>
17
17
  </div>
@@ -22,7 +22,7 @@
22
22
  :value.sync="model.endDate"
23
23
  :disabled-days-of-Week="[]"
24
24
  style="width: 60%;"
25
- :format="'yyyy-MM-dd'"
25
+ :format="'yyyy-MM-dd HH:mm:ss'"
26
26
  :show-reset-button="reset">
27
27
  </datepicker>
28
28
  </div>
@@ -11,7 +11,7 @@
11
11
  :value.sync="model.startDate"
12
12
  style="width: 60%;"
13
13
  :disabled-days-of-Week="[]"
14
- :format="'yyyy-MM-dd 00:00:00'"
14
+ :format="'yyyy-MM-dd HH:mm:ss'"
15
15
  :show-reset-button="reset">
16
16
  </datepicker>
17
17
  </div>
@@ -22,7 +22,7 @@
22
22
  :value.sync="model.endDate"
23
23
  :disabled-days-of-Week="[]"
24
24
  style="width: 60%;"
25
- :format="'yyyy-MM-dd 23:59:59'"
25
+ :format="'yyyy-MM-dd HH:mm:ss'"
26
26
  :show-reset-button="reset">
27
27
  </datepicker>
28
28
  </div>
@@ -31,6 +31,7 @@
31
31
  <v-select :value.sync="model.attendants"
32
32
  :options='$parent.$parent.operators'
33
33
  placeholder='请选择话务员'
34
+ :multiple="true"
34
35
  style="width: 60%"
35
36
  ></v-select>
36
37
  </div>
@@ -99,27 +100,26 @@
99
100
  this.model.f_filialeid = this.$login.convertToIn(obj.resids);
100
101
  },
101
102
  search(args){
102
- debugger
103
103
  if (args.model.attendants && args.model.attendants.length>0){
104
- // let attStr = "("
105
- // for (let attendantKey in args.model.attendants) {
106
- // attStr +=`'${args.model.attendants[attendantKey]}',`
107
- // }
108
- // attStr+="'')"
109
- // args.model.attendant = attStr
110
- args.model.attendant = args.model.attendants[0]
104
+ let attStr = ""
105
+ for (let attendantKey in args.model.attendants) {
106
+ attStr +=`'${args.model.attendants[attendantKey]}',',',`
107
+ }
108
+ attStr=attStr.substring(0, attStr.length-1)
109
+ args.model.attendant = attStr
110
+ // args.model.attendant = args.model.attendants[0]
111
111
  }else {
112
- args.model.attendant = ""
112
+ this.$showMessage('请选择话务员')
113
+ return
113
114
  }
114
115
  this.model.search('1=1',args.model)
115
116
  }
116
117
  },
117
118
  ready() {
118
119
  let date = new Date()
119
- let month = date.getMonth()
120
120
  let realMonth = date.getMonth()+1
121
121
  let day = date.getDate()
122
- this.$refs.paged.$refs.criteria.model.startDate = date.getFullYear() + '-' + (month<10? '0'+ month : month) + '-' + (day<10? '0'+ day : day) + ' 00:00:00'
122
+ this.$refs.paged.$refs.criteria.model.startDate = date.getFullYear() + '-' + (realMonth<10? '0'+ realMonth : realMonth) + '-' + (day<10? '0'+ day : day) + ' 00:00:00'
123
123
  this.$refs.paged.$refs.criteria.model.endDate = date.getFullYear() + '-' + (realMonth<10? '0'+ realMonth : realMonth) + '-' + (day<10? '0'+ day : day) + ' 23:59:59'
124
124
  this.getOperators('话务员')
125
125
  },
@@ -16,7 +16,7 @@
16
16
  :value.sync="model.startDate"
17
17
  style="width: 60%;"
18
18
  :disabled-days-of-Week="[]"
19
- :format="'yyyy-MM-dd 00:00:00'"
19
+ :format="'yyyy-MM-dd HH:mm:ss'"
20
20
  :show-reset-button="reset">
21
21
  </datepicker>
22
22
  </div>
@@ -27,7 +27,7 @@
27
27
  :value.sync="model.endDate"
28
28
  :disabled-days-of-Week="[]"
29
29
  style="width: 60%;"
30
- :format="'yyyy-MM-dd 23:59:59'"
30
+ :format="'yyyy-MM-dd HH:mm:ss'"
31
31
  :show-reset-button="reset">
32
32
  </datepicker>
33
33
  </div>
@@ -45,7 +45,7 @@
45
45
  title: '抄表记录',
46
46
  data () {
47
47
  return {
48
- model: new PagedList((this.user && this.user.isphone) ? '${this.$androidUtil.getProxyUrl()}/' : '' + 'rs/sql/tel_singleTable_OrderBy', 8, {items: '"*"', tablename: 'this.tablename', orderitem: '"id desc"'}),
48
+ model: new PagedList((this.user && this.user.isphone) ? '${this.$androidUtil.getProxyUrl()}/' : '' + 'rs/sql/tel_singleTable_OrderBy', 8, {items: '"*"', tablename: 'this.tablename', orderitem: '"f_hand_date desc"'}),
49
49
  show: false,
50
50
  row: Object
51
51
  }
@@ -74,6 +74,10 @@
74
74
  this.model.rows = []
75
75
  }
76
76
  },
77
+ /*
78
+ 1.12月18 2W
79
+ 2.1月18
80
+ */
77
81
  ready () {
78
82
  if (this.user && this.user.f_userinfo_id) {
79
83
  if(this.user.f_meter_classify == '物联网表'){
@@ -45,7 +45,7 @@
45
45
  title: '指令查看',
46
46
  data () {
47
47
  return {
48
- model: new PagedList('rs/sql/tel_singleTable_OrderBy', 8, {items: '"f_callback_date,f_instruct_date,f_receive_state,f_instruct_state,f_instruct_title,f_meternumber,f_instruct_type,f_manufacturers"', tablename: '"t_instruct with (nolock)"', orderitem: '"f_callback_date desc"'}),
48
+ model: new PagedList('rs/sql/tel_singleTable_OrderBy', 8, {items: '"f_callback_date,f_instruct_date,f_receive_state,f_instruct_state,f_instruct_title,f_meternumber,f_instruct_type,f_manufacturers"', tablename: '"t_instruct with (nolock)"', orderitem: '"f_instruct_date desc"'}),
49
49
  show: false,
50
50
  row: Object
51
51
  }
@@ -10,6 +10,7 @@
10
10
  <th><nobr>安检日期</nobr></th>
11
11
  <th><nobr>入户情况</nobr></th>
12
12
  <th><nobr>安检员</nobr></th>
13
+ <th> <nobr>隐患明细</nobr></th>>
13
14
  </tr>
14
15
  </template>
15
16
  <template partial='body'>
@@ -17,6 +18,7 @@
17
18
  <td style="text-align: center"><nobr>{{row.f_onsite_time.substring(0,11)}}</nobr></td>
18
19
  <td style="text-align: center"><nobr>{{row.f_entry_status}}</nobr></td>
19
20
  <td style="text-align: center"><nobr>{{row.f_checker_name}}</nobr></td>
21
+ <td style="text-align: center" ><nobr>{{row.f_defect_text?row.f_defect_text:$parent.$parent.$parent.getjsonData(row.f_defect_content)}}</nobr></td>
20
22
  </template>
21
23
  </data-grid>
22
24
  </criteria-paged>
@@ -28,6 +30,7 @@
28
30
  *用户档案相关信息组件
29
31
  */
30
32
  import { PagedList } from 'vue-client'
33
+ import {isEmpty} from "../Util";
31
34
  export default {
32
35
  title: '用户安检历史',
33
36
  data () {
@@ -43,6 +46,17 @@
43
46
  clearflg:0
44
47
  },
45
48
  methods: {
49
+ getjsonData(value){
50
+ //将value字符串转换成json对象
51
+ let jsonStr= JSON.parse(value);
52
+ let str = jsonStr.data;
53
+ if(jsonStr.result=='正常'){
54
+ return '正常'
55
+ }else{
56
+ return str
57
+ }
58
+
59
+ },
46
60
  selected (row) {
47
61
  if (this.row === row) {
48
62
  this.row = null
@@ -30,7 +30,7 @@
30
30
  ></datepicker>
31
31
  <input v-show="ischecked == '有'" type="text" class="form-control" v-model="row.f_content" v-if="!show && row.type == 'string' && row.f_project.indexOf('表号') == -1" :disabled="(!(ischecked == '有')) || issee" :readonly="issee">
32
32
  <input v-show="ischecked == '有'" type="text" class="form-control" v-model="row.f_content" v-if="!show && row.type == 'string' && row.f_project.indexOf('表号') != -1 " :disabled="(!(ischecked == '有')) || issee" :readonly="issee" >
33
- <button v-show="ischecked == '有'" type="button" name="button" class="btn btn-primary" @click="scan(row.f_project)" v-if="!show && row.f_project.indexOf('表号') != -1 ">扫码</button>
33
+ <button v-show="ischecked == '有'" type="button" name="button" class="btn btn-primary" @click="scan(row.f_project)" v-if="!show && row.f_project.indexOf('表号') != -1 && row.type == 'string'">扫码</button>
34
34
  <v-select v-show="ischecked == '有'"
35
35
  :value.sync="row.f_content"
36
36
  :options='getOptions(row.f_project)'
@@ -154,6 +154,7 @@
154
154
  title: '维修列表信息',
155
155
  data() {
156
156
  return {
157
+ is_has_jingweidu: this.$appdata.getSingleValue('照片水印加经纬度') || 'false',
157
158
  telphoneValid: '/^((0\\d{2,3}-\\d{7,8})|(1[3584]\\d{9}))$/',
158
159
  meterstyle:[],
159
160
  shuclass:'col-xs-6 col-sm-6 col-md-6 form-input-group mg8',
@@ -404,6 +405,7 @@
404
405
  }
405
406
  },
406
407
  takePic(prop, title,order) {
408
+ const obj = HostApp.getGpsDetailAddress()
407
409
 
408
410
  HostApp.__callback__ = this.cameraCallBack
409
411
  HostApp.__this__ = this
@@ -414,9 +416,13 @@
414
416
  }else if(order==2 && (!this.Detail.details[prop].f_second_repairimg || this.Detail.details[prop].f_second_repairimg.includes("nopic.png"))) {
415
417
  fileName = Util.guid() + '-' + 'details'+prop + '-' +'f_items'+prop+ '.jpg'
416
418
  }
419
+ let jingweidu = ''
420
+ if (this.is_has_jingweidu == 'true'){
421
+ jingweidu = '\t经度:' + obj.longitude+ '\t纬度:' + obj.latitude
422
+ }
417
423
  HostApp._open_a_page({type: 'boomerang',
418
424
  page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
419
- param: {file: fileName, requestCode: 111, callback:'javascript:HostApp.__callback__("'+ prop +'", "%s",'+order+');', watermark: title + '\t时间:'+ Util.toStandardTimeString() + '\t' + Vue.user.name}
425
+ param: {file: fileName, requestCode: 111, callback:'javascript:HostApp.__callback__("'+ prop +'", "%s",'+order+');', watermark: title + '\t时间:'+ Util.toStandardTimeString() + '\t' + Vue.user.name +jingweidu}
420
426
  })
421
427
  },
422
428
  cameraCallBack(prop, fileName,order) {
@@ -24,9 +24,9 @@
24
24
  <phone-sell-info-lite v-if="showSellInfo" :user="{}" :f_userinfo_id="service.f_userinfo_id"></phone-sell-info-lite>
25
25
  </div>
26
26
  <div class="from-group">
27
- <img-self v-if="service.f_single_path" :src="imgfilename" width="200" height="200"></img-self>
28
- <img-self v-if="service.f_singlea_path" :src="imgfilenamea" width="200" height="200"></img-self>
29
- <img-self v-if="service.f_singleb_path" :src="imgfilenameb" width="200" height="200"></img-self>
27
+ <img-self style="float: left;margin: 2px" v-if="service.f_single_path" :src="imgfilename" width="200" height="200"></img-self>
28
+ <img-self style="float: left;margin: 2px" v-if="service.f_singlea_path" :src="imgfilenamea" width="200" height="200"></img-self>
29
+ <img-self style="float: left;margin: 2px" v-if="service.f_singleb_path" :src="imgfilenameb" width="200" height="200"></img-self>
30
30
  </div>
31
31
  <route name="info-route" ></route>
32
32
  </div>
@@ -0,0 +1,351 @@
1
+ <template>
2
+ <div class="basic-main" style="height: 100%">
3
+ <!-- <div class="page-header app-header auto" style="padding: 15px;margin-right: 10px;right: 0%;height: 7%">-->
4
+ <!-- <div @click="back()">-->
5
+ <!-- <img src="../../assets/back.png" style="margin: 0px"/>-->
6
+ <!-- </div>-->
7
+ <!-- </div>-->
8
+ <work-busy :is-busy="loading"></work-busy>
9
+ <div class="container-fluid" style="overflow: scroll">
10
+ <div class="col-md-5" style="margin-right: 2%;margin-left: 2%;height: 100%;overflow: scroll">
11
+ <div style="width: 100%;margin: auto">
12
+ <table class="table table-striped table-bordered" style="margin-bottom: 6px">
13
+ <thead>
14
+ <tr>
15
+ <th colspan="6" style="text-align: center;background-color: #dfedfb;color:black;">客户工单信息</th>
16
+ </tr>
17
+ </thead>
18
+ <tbody>
19
+ <tr>
20
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">用户名称:</td>
21
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ baseuserinfo.f_user_name }}</td>
22
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">用户编号:</td>
23
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ baseuserinfo.f_userinfo_code }}</td>
24
+ </tr>
25
+ <tr>
26
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">详细地址:</td>
27
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{ baseuserinfo.f_address }}</td>
28
+ </tr>
29
+ <tr v-if="serviceall.f_workorder_type=='报修单'">
30
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">故障明细:</td>
31
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{ changefailure(serviceall.f_new_failure) }}</td>
32
+ </tr>
33
+ <tr v-if="serviceall.f_workorder_type=='报修单'">
34
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">{{usermeter.f_collection_type=='按金额'?'累购金额:':'累购气量:'}}</td>
35
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ usermeter.f_collection_type=='按金额'?usermeter.f_total_fee:usermeter.f_total_gas }}</td>
36
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">左右表:</td>
37
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ usermeter.f_aroundmeter }}</td>
38
+ </tr>
39
+ <tr v-if="serviceall.f_workorder_type=='报修单'">
40
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">气表品牌:</td>
41
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{ usermeter.f_meter_brand }}</td>
42
+ </tr>
43
+ <tr v-if="serviceall.f_workorder_type=='报修单'">
44
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">气表型号:</td>
45
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{ usermeter.f_meter_style }}</td>
46
+ </tr>
47
+ <tr v-if="serviceall.f_workorder_type=='置换通气单'">
48
+
49
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">用户姓名:</td>
50
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ baseuserinfo.f_user_name }}</td>
51
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">用气性质:</td>
52
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ baseuserinfo.f_gasproperties }}</td>
53
+ </tr>
54
+ <tr v-if="serviceall.f_workorder_type=='置换通气单'">
55
+
56
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">联系电话:</td>
57
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ baseuserinfo.f_user_phone }}</td>
58
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">住户类型:</td>
59
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ baseuserinfo.f_house_type }}</td>
60
+ </tr>
61
+ <tr v-if="serviceall.f_workorder_type=='置换通气单'">
62
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">身份证号:</td>
63
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{baseuserinfo.f_shenfenzheng}}</td>
64
+ </tr>
65
+ <tr v-if="serviceall.f_workorder_type=='置换通气单'">
66
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">用户地址:</td>
67
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{baseuserinfo.f_address}}</td>
68
+ </tr>
69
+ <!-- <tr>-->
70
+
71
+ <!-- <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">派单时间:</td>-->
72
+ <!-- <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ service.f_created_date }}</td>-->
73
+ <!-- <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">完成时间:</td>-->
74
+ <!-- <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ service.f_repair_date }}</td>-->
75
+ <!-- </tr>-->
76
+ <tr>
77
+
78
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">到达时间:</td>
79
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ serviceall.f_date_come }}</td>
80
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 17%">离开时间:</td>
81
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ serviceall.f_date_leave }}</td>
82
+ </tr>
83
+ <tr>
84
+ <td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px">备注:</td>
85
+ <td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px">{{ serviceall.f_remarks }}</td>
86
+ </tr>
87
+ </tbody>
88
+ </table>
89
+ <table class="table table-striped table-bordered">
90
+ <thead>
91
+ <tr>
92
+ <th style="text-align: center;background-color: #dfedfb;color:black;">燃气设施全景</th>
93
+ </tr>
94
+ </thead>
95
+ <tbody>
96
+ <tr>
97
+ <td style="margin: auto;text-align: center">
98
+ <div class="container" style="max-width: 550px;background: #FFFFFF">
99
+ <div class="img" v-for="img in serviceall.imgs">
100
+ <img-self :src="getimg(img.android_file)" style="float: left" width="150"
101
+ height="200"></img-self>
102
+ </div>
103
+ </div>
104
+ </td>
105
+ </tr>
106
+ </tbody>
107
+ </table>
108
+ <table class="table table-striped table-bordered">
109
+ <thead>
110
+ <tr>
111
+ <th style="text-align: center;background-color: #dfedfb;color:black;">用户签名照片</th>
112
+ </tr>
113
+ </thead>
114
+ <tr>
115
+ <td style="margin: auto;text-align: center">
116
+ <div class="container" style="max-width: 500px;background: #FFFFFF">
117
+ <div class="img" style="float: none">
118
+ <img-self :src="getimg(serviceall.f_signname)" width="200" height="200"></img-self>
119
+ </div>
120
+ </div>
121
+ </td>
122
+ </tr>
123
+ </table>
124
+ </div>
125
+ </div>
126
+ <div class style="width: 1%;height: 100%;background-color: #F1F8FF;float: left;"></div>
127
+ <div class="col-md-6" style="height: 100%;overflow: scroll">
128
+ <div style="width: 95%;margin-left: 5%">
129
+ <table class="table table-striped table-bordered" v-for=" serviceone in servicerepair">
130
+ <thead>
131
+ <tr>
132
+ <th style="text-align: center;background-color: #dfedfb;color:black;">{{ serviceone.f_type }}</th>
133
+ </tr>
134
+ </thead>
135
+ <tbody>
136
+ <tr v-for="detail in serviceone.details">
137
+ <td>
138
+ <div class="row">
139
+ <div class="col-md-8" style="text-align: center;">{{ detail.f_project }}</div>
140
+ <div class="col-md-4" style="text-align: center;" v-if="detail.type!='picture'">
141
+ {{ detail.f_content?detail.f_content:'无' }}
142
+ </div>
143
+ <div class="col-md-4" style="text-align: center;" v-if="detail.type=='picture'&&ispicture(serviceone.imgs,detail.f_project)">
144
+ <button-link style="color: black" type="button" class="btn btn-link"
145
+ @click="showpath(serviceone.imgs,detail.f_project)">查看照片
146
+ </button-link>
147
+ </div>
148
+ <div class="col-md-4" style="text-align: center;" v-if="detail.type=='picture'&&!ispicture(serviceone.imgs,detail.f_project)">
149
+ 无照片
150
+ </div>
151
+ </div>
152
+ </td>
153
+
154
+
155
+ </tr>
156
+ </tbody>
157
+ </table>
158
+
159
+
160
+ </div>
161
+
162
+ </div>
163
+ </div>
164
+ </div>
165
+ <modal :show.sync="imgshow" v-ref:modal backdrop="true">
166
+ <header slot="modal-header" class="modal-header">
167
+ {{ picturename }}
168
+ </header>
169
+ <article slot="modal-body" class="modal-body">
170
+ <div class="from-group">
171
+ <div class="row">
172
+ <div class="col-md-6" v-for="item in showimgs">
173
+ <img-self :src="getimg(item)" width="300" height="400"></img-self>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </article>
178
+ <footer slot="modal-footer" class="modal-footer" v-show="false">
179
+ <button type="button" class="btn btn-success" @click='imgclose'>关闭</button>
180
+ </footer>
181
+ </modal>
182
+ </template>
183
+
184
+ <script>
185
+ import {HttpResetClass} from 'vue-client'
186
+
187
+ export default {
188
+ title: '工单详情',
189
+ props: ['curActivity', 'service'],
190
+ data () {
191
+ return {
192
+ imgshow:false,
193
+ picturename:'',
194
+ showimg:'',
195
+ baseuserinfo: {},
196
+ showimgs:[],
197
+ allimgs: [],
198
+ servicerepair: [],
199
+ serviceall: {},
200
+ usermeter:{},
201
+ loading: false
202
+ }
203
+ },
204
+ ready () {
205
+ this.loading=true
206
+ ////tag
207
+ ////tag)
208
+ let http = new HttpResetClass()
209
+ ////tag
210
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/path/serviceWork`, {data: {id: this.curActivity.id}}, {
211
+ resolveMsg: null,
212
+ rejectMsg: null
213
+ }).then(res => {
214
+ ////tag)
215
+ for (let i = 0; i < res.data.length; i++) {
216
+ if (res.data[i].id == this.curActivity.id) {
217
+ this.serviceall = res.data[i]
218
+ this.baseuserinfo = res.data[i].baseuserinfo
219
+ this.servicerepair = res.data[i].servicerepair
220
+ this.allimgs = res.data[i].imgs
221
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/rs/sql/getBaseMeterInfo`,{data:{f_userinfo_id:this.baseuserinfo.f_userinfo_id}},{
222
+ resolveMsg: null,
223
+ rejectMsg: null
224
+ }).then(res=>{
225
+ this.usermeter=res.data[0]
226
+ })
227
+ }
228
+ }
229
+
230
+ ////tag)
231
+ ////tag)
232
+ ////tag)
233
+ ////tag)
234
+ this.loading=false
235
+ })
236
+ },
237
+ methods: {
238
+ getimg(val){
239
+ console.log(`${this.$androidUtil.getProxyUrl()}/rs/image/file/${val}`)
240
+
241
+ return `${this.$androidUtil.getProxyUrl()}/rs/image/file/${val}`
242
+ },
243
+ changefailure(val){
244
+ let failureall=''
245
+ // val=[{"f_failure_type":"抽油烟机","failurecase":[],"f_equipment":""},{"f_failure_type":"抽油烟机","failurecase":[],"f_equipment":""},{"f_failure_type":"抽油烟机","failurecase":[],"f_equipment":""}]
246
+ let failure = JSON.parse(val)
247
+ for (let i = 0; i <failure.length; i++) {
248
+ if (failure[i].failurecase.length>0){
249
+ failureall+=failure[i].f_failure_type+":"
250
+ for (let j = 0; j < failure[i].failurecase.length; j++) {
251
+ failureall+=failure[i].failurecase[j]
252
+ if (j+1!=failure[i].failurecase.length){
253
+ failureall+=","
254
+ }
255
+ }
256
+
257
+ }else{
258
+ failureall+=failure[i].f_failure_type
259
+ }
260
+ if (i+1!=failure.length){
261
+ failureall+=';'
262
+ }
263
+ }
264
+ return failureall
265
+ },
266
+ imgclose(){
267
+ this.imgshow=false
268
+ },
269
+ ispicture(imgs,imgid){
270
+ let imgstr=''
271
+ let imgpath=''
272
+ for (let i = 0; i < imgs.length; i++) {
273
+ if (imgs[i].imgpath==imgid){
274
+ imgstr=imgs[i].android_file
275
+ imgpath=imgs[i].imgpath
276
+ }
277
+ }
278
+ ////tag
279
+ ////tag
280
+ if (imgstr){
281
+ return true
282
+ }
283
+ return false
284
+ },
285
+ showpath (imgs,imgid) {
286
+ const img = imgs.filter(res => res.imgpath === imgid).map(res => res.android_file)
287
+ if (img.length > 0) {
288
+ this.showimgs = img
289
+ this.picturename = imgid
290
+ this.imgshow = true
291
+ }
292
+ },
293
+ back () {
294
+ this.$back()
295
+ }
296
+ }
297
+ }
298
+ </script>
299
+
300
+ <style scoped>
301
+ .img {
302
+ border: 1px solid #9773ed;
303
+ width: auto;
304
+ height: auto;
305
+ float: left;
306
+ text-align: center;
307
+ margin: 6px;
308
+ }
309
+
310
+ img {
311
+ margin: 6px;
312
+ }
313
+
314
+
315
+ .container {
316
+ margin: 10px auto;
317
+ width: 80%;
318
+ height: auto;
319
+ }
320
+
321
+ div::-webkit-scrollbar {
322
+ width: 0 !important;
323
+ height: 0 !important;
324
+ }
325
+
326
+ div {
327
+ -ms-overflow-style: none;
328
+ overflow: -moz-scrollbars-none;
329
+ }
330
+
331
+ .divmask {
332
+ pointer-events: none;
333
+ }
334
+
335
+ .app-header {
336
+ border-radius: 50%;
337
+ background: rgba(73, 158, 223, 0.4);
338
+ color: #FFF;
339
+ padding: 20px;
340
+ text-align: center;
341
+ font-size: 1.2em;
342
+ z-index: 10;
343
+ opacity: 0.5;
344
+ bottom: 50px;
345
+ margin-top: -20px;
346
+ position: absolute;
347
+ top: 10%;
348
+ right: 2%;
349
+ height: 8%;
350
+ }
351
+ </style>