telephone-clients 3.0.103 → 3.0.104-11

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 (132) hide show
  1. package/package.json +3 -3
  2. package/src/App.vue +54 -56
  3. package/src/assets//345/210/240/351/231/244.png +0 -0
  4. package/src/components/Util/RightTreeSafe.vue +2 -2
  5. package/src/components/Util/RightTreeSafeDep.vue +350 -0
  6. package/src/components/android/AddMyTask.vue +7 -0
  7. package/src/components/guoxin/Console.vue +9 -0
  8. package/src/components/guoxin/VisitInfo.vue +0 -11
  9. package/src/components/pc/NewRepairPaper.vue +370 -370
  10. package/src/components/pc/RepairsWork.vue +23 -2
  11. package/src/components/pc/RoleSelectorDep.vue +158 -0
  12. package/src/components/pc/TelFindUser.vue +1 -1
  13. package/src/components/pc/TelListener.vue +47 -16
  14. package/src/components/pc/VisitInfo.vue +44 -17
  15. package/src/components/pc/WorkCenter.vue +1 -1
  16. package/src/components/pc/WorkCenterList.vue +1 -1
  17. package/src/components/pc/WorkHistory.vue +20 -2
  18. package/src/components/pc/WorkListAll.vue +1 -1
  19. package/src/components/pc/WorkListAllNew.vue +10 -3
  20. package/src/components/pc/WorkListNew.vue +9 -3
  21. package/src/components/pc/olddata/OldWorkList.vue +193 -0
  22. package/src/components/telreport/RepairsDetailsReport.vue +98 -0
  23. package/src/components/telreport/TableFaultReport.vue +96 -0
  24. package/src/components/telreport/Traffic.vue +3 -3
  25. package/src/components/telreport/TrafficClassificationReport.vue +134 -0
  26. package/src/components/temp/ChangemeterInfo.vue +75 -87
  27. package/src/components/temp/DeviceInfo.vue +80 -82
  28. package/src/components/temp/HandplanInfo.vue +14 -3
  29. package/src/components/temp/InfoTable.vue +5 -2
  30. package/src/components/temp/MetereadInfo.vue +1 -4
  31. package/src/components/temp/OldRepairList.vue +100 -0
  32. package/src/components/temp/RepairList.vue +2 -2
  33. package/src/components/weinan/Console.vue +1 -1
  34. package/src/components/weinan/RecordList.vue +2 -2
  35. package/src/components/weinan/SiteSend.vue +2 -2
  36. package/src/components/weinan/SiteSendWeixiu.vue +7 -16
  37. package/src/components/weinan/StandWorkWeixiu.vue +1 -1
  38. package/src/components/weinan/WorkList.vue +73 -0
  39. package/src/components/weinan/WorkListAll.vue +90 -14
  40. package/src/components/weinan/WorkListWeixiu.vue +1 -1
  41. package/src/components/workorder/CompletedRepair.vue +269 -183
  42. package/src/components/workorder/FaultAll.vue +826 -826
  43. package/src/components/workorder/PhoneStandWork.vue +354 -354
  44. package/src/components/workorder/PhoneUpDetail.vue +3 -0
  45. package/src/components/workorder/RepairDetails.vue +12 -2
  46. package/src/components/workorder/RepairFirstV.vue +1 -1
  47. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  48. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  49. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  50. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  51. package/src/filiale/hanzhong/telephone.js +1 -1
  52. package/src/filiale/kelai/android/AppTakePic.vue +143 -0
  53. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -0
  54. package/src/filiale/kelai/pc/WorkCenterList.vue +20 -3
  55. package/src/filiale/kelai/pc/WorkListAllNew.vue +47 -9
  56. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -0
  57. package/src/filiale/kelai/telephone.js +9 -8
  58. package/src/filiale/kelai/telephoneAndroid.js +3 -1
  59. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  60. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  61. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  62. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  63. package/src/filiale/qianneng/android/TemporarySingle.vue +25 -0
  64. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  65. package/src/filiale/qianneng/pc/MaterialDetailed.vue +15 -3
  66. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -0
  67. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  68. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -982
  69. package/src/filiale/qianneng/pc/WorkHistory.vue +2 -2
  70. package/src/filiale/qianneng/pc/WorkListAllNew.vue +53 -5
  71. package/src/filiale/qianneng/pc/changetable.vue +273 -0
  72. package/src/filiale/qianneng/telephone.js +2 -0
  73. package/src/filiale/rizhao/pc/DispatchMan.vue +3 -3
  74. package/src/filiale/rizhao/pc/DispatchWork.vue +3 -3
  75. package/src/filiale/rizhao/pc/Traffic.vue +3 -3
  76. package/src/filiale/rizhao/pc/WorkListAllNew.vue +8 -3
  77. package/src/filiale/rizhao/telephone.js +1 -1
  78. package/src/filiale/rongcheng/CliWorkListAll.vue +442 -407
  79. package/src/filiale/rongcheng/FaultAll.vue +3 -3
  80. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -0
  81. package/src/filiale/rongcheng/telephoneAndroid.js +3 -1
  82. package/src/filiale/shanxian/android/RepairFirstV.vue +5 -1
  83. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -0
  84. package/src/filiale/shanxian/pc/WorkList.vue +1 -1
  85. package/src/filiale/shanxian/telephone.js +13 -12
  86. package/src/filiale/shexian/android/AddMyTask.vue +7 -0
  87. package/src/filiale/shexian/android/CompletedRepair.vue +280 -0
  88. package/src/filiale/shexian/android/FaultAll.vue +847 -0
  89. package/src/filiale/shexian/android/Outlay.vue +182 -165
  90. package/src/filiale/shexian/android/RepairFirstV.vue +16 -2
  91. package/src/filiale/shexian/android/RepairInfo.vue +1 -0
  92. package/src/filiale/shexian/pc/QueryVisitHistory.vue +237 -0
  93. package/src/filiale/shexian/pc/TelAgentVoiceReport.vue +271 -0
  94. package/src/filiale/shexian/pc/TelByOrderManCount.vue +10 -2
  95. package/src/filiale/shexian/pc/WorkList.vue +782 -740
  96. package/src/filiale/shexian/pc/WorkListAllNew.vue +75 -67
  97. package/src/filiale/shexian/telephone.js +21 -18
  98. package/src/filiale/shexian/telephoneAndroid.js +32 -26
  99. package/src/filiale/tongchuan/android/RepairDetails.vue +623 -0
  100. package/src/filiale/tongchuan/android/TicketDetails.vue +3 -0
  101. package/src/filiale/tongchuan/pc/UserWork.vue +805 -805
  102. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +2 -2
  103. package/src/filiale/tongchuan/telephone.js +52 -52
  104. package/src/filiale/tongchuan/telephoneAndroid.js +23 -22
  105. package/src/filiale/wenxi/android/FailureShow.vue +61 -0
  106. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +1053 -0
  107. package/src/filiale/wenxi/android/RepairInfo.vue +158 -74
  108. package/src/filiale/wenxi/android/RepairOrderV.vue +805 -1419
  109. package/src/filiale/wenxi/android/RepairUserInfo.vue +532 -0
  110. package/src/filiale/wenxi/android/ZHihuanFirst.vue +502 -0
  111. package/src/filiale/wenxi/pc/DistributeWork.vue +107 -121
  112. package/src/filiale/wenxi/pc/FailureEdit.vue +1 -1
  113. package/src/filiale/wenxi/pc/GasWork.vue +747 -0
  114. package/src/filiale/wenxi/pc/MetereadInfo.vue +82 -0
  115. package/src/filiale/wenxi/pc/RepairsWork.vue +15 -0
  116. package/src/filiale/wenxi/pc/TelFindUser.vue +213 -116
  117. package/src/filiale/wenxi/pc/WorkListAll.vue +348 -297
  118. package/src/filiale/wenxi/telephone.js +4 -5
  119. package/src/filiale/wenxi/telephoneAndroid.js +4 -1
  120. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  121. package/src/filiale/wuhai/telephone.js +1 -1
  122. package/src/filiale/yuncheng/pc/TelFindUser.vue +302 -0
  123. package/src/filiale/yuncheng/telephone.js +12 -0
  124. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -0
  125. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  126. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +241 -214
  127. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  128. package/src/filiale/zhongsheng/telephone.js +23 -23
  129. package/src/filiale/zhongsheng/telephoneAndroid.js +2 -1
  130. package/src/main.js +1 -1
  131. package/src/telephone.js +17 -1
  132. package/src/weinan.js +6 -0
@@ -248,6 +248,7 @@
248
248
  f_meetunit: '',
249
249
  f_phone: '',
250
250
  f_user_name: '',
251
+ failure:'',
251
252
  f_address: '',
252
253
  f_json: '',
253
254
  f_repair_date: Util.getNowDate(),
@@ -256,6 +257,7 @@
256
257
  f_reciever:'',
257
258
  f_remarks: '',
258
259
  f_user_type: '',
260
+ failure_str:'',
259
261
  f_area: '',
260
262
  f_unit_name:'',
261
263
  f_street: '',
@@ -354,8 +356,9 @@
354
356
  http.load('POST', '/rs/search', {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
355
357
  // let result = res.data.filter(res=>res.orgid==this.$login.f.orgid)
356
358
  res.data.forEach((item) => {
357
- this.repairers.push({label: `${item.name}`, value: item.name})
358
-
359
+ if (item.state == '在职'){
360
+ this.repairers.push({label: `${item.name}`, value: item.name})
361
+ }
359
362
  })
360
363
  })
361
364
  },
@@ -478,6 +481,7 @@
478
481
  },
479
482
  assignObj() {
480
483
  if (this.data) {
484
+ this.model.failure_str = ''
481
485
  this.model.f_address = this.data.f_address
482
486
  this.model.f_user_name = this.data.f_user_name
483
487
  this.model.f_user_type = this.data.f_user_type
@@ -524,6 +528,7 @@
524
528
  f_user_name: '',
525
529
  failure: '',
526
530
  f_userinfo_id: '',
531
+ failure_str:'',
527
532
  f_address: '',
528
533
  f_json: '',
529
534
  f_repair_date: Util.getNowDate(),
@@ -581,6 +586,18 @@
581
586
  this.model.f_outlets = this.$login.f.deps
582
587
  this.model.f_filiale_id = this.$login.f.orgid
583
588
  }
589
+ let failureStr = ''
590
+ if(this.model.failure.startsWith("[")){
591
+ const failureData = JSON.parse(this.model.failure)
592
+ failureData.forEach(item=>{
593
+ if (item.failurecase.length>0){
594
+ failureStr+=item.f_failure_type+":"+item.failurecase.toString()+";"
595
+ }else {
596
+ failureStr+=item.f_failure_type+";"
597
+ }
598
+ })
599
+ this.model.failure_str = failureStr
600
+ }
584
601
  let data = {
585
602
  model: this.model, loginUser: {
586
603
  name: this.loginUser.name,
@@ -603,6 +620,7 @@
603
620
  url = config[this.operType].url
604
621
  data.toRepair = '一级派单'
605
622
  }
623
+ data.model.f_state = null
606
624
  this.saveing = true
607
625
  return this.$resetpost(url, data).then((data) => {
608
626
  if(data.data && data.data.id){
@@ -681,6 +699,9 @@
681
699
  watch: {
682
700
  // 转接类型
683
701
  'model.f_handlingtype'(){
702
+ if(this.operType === '修改工单'){
703
+ return
704
+ }
684
705
  // 清楚上次记录
685
706
  this.model.serviceacitivity[0].f_reciever = ''
686
707
  this.model.serviceacitivity[0].f_meetunit =''
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <div style="width: 100%;height: 100%">
3
+ <div class="col-sm-6 form-group" style="margin-bottom: 0px">
4
+ <label class="font_normal_body">所属部门</label>
5
+ <right-tree-safe-dep :width="leftWidth" @re-res="getRes" :resobjprop.sync="resobjprop"></right-tree-safe-dep>
6
+ </div>
7
+ <div class="col-sm-6 form-group" style="margin-bottom: 0px">
8
+ <label class="font_normal_body">{{ roleLable }}</label>
9
+ <v-select :value="selVal" v-model='selVal'
10
+ :value-single="!valueMultiple"
11
+ class="select_list select"
12
+ :options='users' :placeholder='roleName'
13
+ :close-on-select = 'valueClose'
14
+ :multiple="valueMultiple"
15
+ :width="rightWidth"
16
+ @change="valuechange">
17
+ </v-select>
18
+ </div>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+ import {HttpResetClass} from 'vue-client'
24
+
25
+ export default {
26
+ name: "RoleSelector",
27
+ props: {
28
+ valueMultiple: {
29
+ type: Boolean,
30
+ default: false
31
+ },
32
+ roleName: {
33
+ type: String,
34
+ default: '安检员'
35
+ },
36
+ roleLable: {
37
+ type: String,
38
+ default: '安检员'
39
+ },
40
+ leftWidth: {
41
+ type: String,
42
+ default: '60%'
43
+ },
44
+ rightWidth: {
45
+ type: String,
46
+ default: '60%'
47
+ },
48
+ value: {
49
+ default: ''
50
+ },
51
+ resobjprop: {
52
+ default: {}
53
+ },
54
+ valueClose: {
55
+ type: Boolean,
56
+ default: true
57
+ }
58
+ },
59
+ data() {
60
+ return {
61
+ // source: `tool.getChildrenOfResName($${this.roleName}$)`,
62
+ source: `root.getResourceById($${this.$login.f.depids}$,$department$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($${this.roleName}$) != -1)`,
63
+ allUsers: [],
64
+ users: [],
65
+ selVal: '',
66
+ organizationname:this.$login.f.organizationname,
67
+ resids: [],
68
+ changeval: ''
69
+ }
70
+ },
71
+ watch: {
72
+ 'value'(val) {
73
+ console.log("969696", val)
74
+ if (val) {
75
+ if (this.valueMultiple) {
76
+
77
+ } else {
78
+ this.selVal = val
79
+ }
80
+
81
+ }
82
+ }
83
+ },
84
+ async ready() {
85
+ await this.search()
86
+ await this.filterUser(this.resids)
87
+ },
88
+ methods: {
89
+ async search() {
90
+ let http = new HttpResetClass()
91
+ const res = await http.load('POST', '/rs/search', {
92
+ data: {
93
+ source: this.source,
94
+ userid: this.$login.f.id
95
+ }
96
+ }, {resolveMsg: null, rejectMsg: null})
97
+ this.allUsers = res.data
98
+ },
99
+ valuechange(val) {
100
+ console.log(`val instanceof Array======${!val instanceof Array}`)
101
+ if ((typeof val === 'object' && !val instanceof Array) || (val instanceof Event)) {
102
+ return
103
+ }
104
+ if (this.valueMultiple && Array.isArray(val)) {
105
+ if (val && val.length > 0) {
106
+ let valuesele = `(`
107
+ for (let i = 0; i < val.length; i++) {
108
+ valuesele += `'${val[i]}',`
109
+ }
110
+ this.value = valuesele.substring(0, valuesele.length - 1) + ')'
111
+ } else {
112
+ this.value = ''
113
+ }
114
+ } else {
115
+ this.value = val
116
+ }
117
+ // this.changeval = val
118
+ },
119
+ getRes(obj) {
120
+ this.resids = obj.resids
121
+ this.organizationname = obj.res[0]
122
+ this.filterUser(this.resids)
123
+ this.$dispatch('re-res', obj)
124
+ },
125
+ async filterUser(resids) {
126
+ // 处理第一次进入页面值异常问题
127
+ if (resids.length > 0 && typeof resids[0] == "object") {
128
+ resids = resids[0]
129
+ }
130
+ if (resids[0]) {
131
+ this.source = `root.getResourceById($${resids[0]}$,$department$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($${this.roleName}$) != -1)`
132
+ await this.search()
133
+ }
134
+ this.users = []
135
+ this.allUsers.forEach(user => {
136
+ this.users.push({label: user.name, value: user.name})
137
+ })
138
+ if (!this.valueMultiple && this.users.length > 0) {
139
+ this.users = [{label: '全部', value: ''}, ...this.users]
140
+ }
141
+ let temp = []
142
+ this.users = this.users.filter(item => {
143
+ if (!temp.includes(item.label)) {
144
+ temp.push(item.label)
145
+ return true
146
+ }
147
+ return false
148
+ })
149
+ this.$emit('alluser', this.allUsers)
150
+ //tag
151
+ }
152
+ }
153
+ }
154
+ </script>
155
+
156
+ <style scoped>
157
+
158
+ </style>
@@ -206,7 +206,7 @@ export default {
206
206
  }else if(this.$login.f.orgid == 46997 && this.$login.f.fullnames.indexOf("铜川市天然气")!= -1){
207
207
  args.condition += ` and ti.f_user_state = '正常'`
208
208
  }else {
209
- args.condition += ` and ti.f_filialeid = '${this.$login.f.orgid}' and ti.f_user_state = '正常'`
209
+ args.condition += ` and ti.f_filialeid = '${this.$login.f.orgid}' and ti.f_user_state in('正常','停用','预备')`
210
210
  }
211
211
  this.model.search(args.condition, args.model)
212
212
  },
@@ -24,7 +24,7 @@
24
24
  <td style="text-align: center;">{{inlinemodel1.aState}}</td>
25
25
  <td style="text-align: center;">{{inlinemodel1.callingNo}}</td>
26
26
  <td style="text-align: center;">
27
- <button-link type="button" class="btn btn-link" @click="listen(inlinemodel1.aChannel)">监听</button-link>
27
+ <button-link type="button" class="btn btn-link" @click="listen(inlinemodel1)">监听</button-link>
28
28
  </td>
29
29
  </tr>
30
30
  <tr v-for="outlinemodel1 in outlinemodel" >
@@ -39,6 +39,25 @@
39
39
  </table>
40
40
  </div>
41
41
  </div>
42
+ <modal :show.sync="showlisten" width="50%" backdrop="false">
43
+ <header slot="modal-header" class="modal-header">
44
+ <center><h4 class="modal-title ">话务监听信息</h4></center>
45
+ </header>
46
+ <article slot="modal-body" class="modal-body" style="height: 100px;padding-top: 15px!important;">
47
+ <div class="row auto">
48
+ <label>坐席号码</label><span>{{lisachanl.aChannel}}</span>
49
+ </div>
50
+ <div class="row auto">
51
+ <label>话务人员</label><span>{{lisachanl.aName}}</span>
52
+ </div>
53
+ <div class="row auto">
54
+ <label>通话号码</label><span>{{lisachanl.callingNo}}</span>
55
+ </div>
56
+ </article>
57
+ <footer slot="modal-footer" class="modal-footer">
58
+ <button type="button" class="btn btn-success" @click='canal'>取消</button>
59
+ </footer>
60
+ </modal>
42
61
  </template>
43
62
 
44
63
  <script>
@@ -68,6 +87,12 @@
68
87
  },
69
88
  data () {
70
89
  return {
90
+ showlisten:false,
91
+ lisachanl:{
92
+ aChannel:0,
93
+ aName:'',
94
+ callingNo:''
95
+ },
71
96
  interval: null, // 循环函数返回值,用来停止循环
72
97
  inlinemodel:{
73
98
  type: Object,
@@ -81,18 +106,6 @@
81
106
  }
82
107
  },
83
108
  ready () {
84
- // 循环读取通道状态
85
- // let sql = 'tel_singleTable_OrderBy'
86
- // let condition = {
87
- // items: 'tongdao',
88
- // tablename: 'T_IPTONGDAO',
89
- // condition: `loginip = '${this.$login.f.loginip}'`,
90
- // orderitem: 'id'
91
- // }
92
- // let http = new HttpResetClass()
93
- // http.load('POST', `rs/logic/tel_getOneData`, {data: {sql: sql, params: condition}}, {resolveMsg: null, rejectMsg: null}).then((req) => {
94
- // this.aChannel = parseInt(req.data.tongdao);
95
- // })
96
109
  if(this.aChannel) {
97
110
  let gen = stateGen(this)
98
111
  co(gen)
@@ -105,13 +118,31 @@
105
118
 
106
119
  },
107
120
  methods: {
121
+ canal(){
122
+ this.lisachanl = {
123
+ aChannel:0,
124
+ aName:'',
125
+ callingNo:''
126
+ }
127
+ this.showlisten = false
128
+ },
108
129
  // 所有控制函数
109
130
  // 循环获取通道状态
110
- listen(val){
111
- val = val + ''
131
+ listen(val){
132
+ let valaChannel = val.aChannel + ''
112
133
  let http1 = new HttpResetClass()
113
- http1.load('POST', data.voiceUrl, {aId: Util.f.id, RecordsID:'',aChannel:this.aChannel, aModule:1, aBzType:"listen", bzExtra: val, bzId: "1", aName: Util.f.name,RoleId:"话务员"}, {resolveMsg: null, rejectMsg: null}).then((req) => {
134
+ http1.load('POST', data.voiceUrl, {aId: this.$login.f.id,aName: this.$login.f.name,aChannel:this.aChannel, aModule:1, aBzType:"listen", bzExtra: valaChannel, bzId: "1",RoleId:"话务员"}, {resolveMsg: null, rejectMsg: null}).then((req) => {
114
135
  //tag
136
+ if(req.data && req.data.msg == '开始监听'){
137
+ this.showlisten = true
138
+ this.lisachanl = {
139
+ aChannel:val.aChannel,
140
+ aName:val.aName,
141
+ callingNo:val.callingNo
142
+ }
143
+ }else{
144
+ this.$showMessage(`操作结果:${req.data.msg}`)
145
+ }
115
146
  })
116
147
  },
117
148
 
@@ -79,6 +79,28 @@
79
79
  </div>
80
80
  </div>
81
81
  </div>
82
+ <modal :show.sync="showcalloutResult" width="50%" backdrop="false">
83
+ <header slot="modal-header" class="modal-header">
84
+ <center><h4 class="modal-title ">{{showTitle}}结果</h4></center>
85
+ </header>
86
+ <article slot="modal-body" class="modal-body" style="height: 100px;padding-top: 15px!important;">
87
+ <div v-show="!calloutResult"><label>正在{{ showTitle }},请稍后。。。。。。</label></div>
88
+ <div v-show="calloutResult">
89
+ <div class="row auto" v-show="calloutResult.area">
90
+ <label>真实归属地:</label><span>{{calloutResult.area}}</span>
91
+ </div>
92
+ <div class="row auto" v-show="calloutResult.calloutNo">
93
+ <label>真实呼出号码:</label><span>{{calloutResult.calloutNo}}</span>
94
+ </div>
95
+ <div class="row auto" v-show="calloutResult.err">
96
+ <label>其他信息:</label><span>{{calloutResult.err}}</span>
97
+ </div>
98
+ </div>
99
+ </article>
100
+ <footer slot="modal-footer" class="modal-footer">
101
+ <button type="button" class="btn btn-success" @click='calloutConfirm()'>确认</button>
102
+ </footer>
103
+ </modal>
82
104
  </div>
83
105
  </template>
84
106
 
@@ -90,11 +112,14 @@
90
112
  title: '回访单',
91
113
  props: {
92
114
  contextxianshi:null,
93
- show: false,
94
115
  row:Object,
95
116
  phone:'',
96
117
  idwavfile:'',
97
- outltime:''
118
+ outltime:'',
119
+ showcalloutResult:false,
120
+ calloutResult:null,
121
+ showTitle:'呼出'
122
+
98
123
  },
99
124
  data () {
100
125
  return {
@@ -118,6 +143,10 @@
118
143
  }
119
144
  },
120
145
  methods: {
146
+ calloutConfirm(){
147
+ this.calloutResult=null
148
+ this.showcalloutResult=false
149
+ },
121
150
  //获取当前时间
122
151
  getNowFormatDate() {
123
152
  var date = new Date();
@@ -191,20 +220,17 @@
191
220
  f_visitdate:this.getNowFormatDate(),
192
221
  f_record_sound:''
193
222
  })
194
- this.show=false
195
223
  this.$emit('visitback','commit')
196
224
  })
197
225
  },
198
226
  // 取消
199
227
  clearVisit () {
200
228
  this.$emit('visitback','nodo')
201
- this.show=false
202
229
  },
203
230
  callout(telnum){
204
231
  if(telnum){
205
232
  let http = new HttpResetClass()
206
233
  try{
207
- this.$showMessage("号码"+telnum+" 正在呼出...")
208
234
  http.load('POST', wxcon.voiceUrl, {
209
235
  aId: this.$login.f.id,
210
236
  aChannel: Util.attendant.aChannel,
@@ -216,26 +242,27 @@
216
242
  RoleId:this.$login.f.rolesnames,
217
243
  sendTime:Util.toStandardTimeString()
218
244
  }, {resolveMsg: null, rejectMsg: null}).then((req) => {
219
- // 返回录音ID 存在回访数据里
220
- this.model.f_record_sound = req.data.RecordsID
221
- //tag
245
+ this.calloutResult = req.data.calloutResult
246
+ if (req.data.desc === '呼出失败') {
247
+ this.$showAlert(`呼出${telnum}失败`, 'danger', 0)
248
+ }else{
249
+ this.showcalloutResult=true
250
+ this.showTitle='呼出'
251
+ // 返回录音ID 存在回访数据里
252
+ this.model.f_record_sound = req.data.RecordsID
253
+ }
222
254
  })
223
255
  }catch(e){
224
- //tag
256
+ this.$showAlert(`${e.data},呼出失败`, 'danger', 0)
257
+ this.callContent = '呼出失败'
225
258
  }
226
259
  }else{
227
- //tag
260
+ this.$showAlert(`无电话号码`, 'danger', 0)
261
+ this.callContent = '呼出失败'
228
262
  }
229
263
  },
230
264
  },
231
265
  watch: {
232
- 'show' () {
233
- this.$emit('show-obj', {showVisit: this.show})
234
- },
235
- 'row' () {
236
- this.show=this.row;
237
- this.$emit('show-obj', {showVisit: this.show})
238
- },
239
266
  'phone'(val){
240
267
  this.model.f_phone = val
241
268
  }
@@ -14,7 +14,7 @@
14
14
  <reminder-order :call-obj="callObj" :login-user="loginUser" :row="row" @success="component = 'list'" @cancel="component = 'list'"></reminder-order>
15
15
  </div>
16
16
  <!-- 撤销-->
17
- <div class="" v-if="component === '结案'" style="height: 200px;">
17
+ <div class="" v-if="component === '结案' || component == 'serviceDelete'" style="height: 200px;">
18
18
  <service-delete-order :call-obj="callObj" :login-user="loginUser" :row="row" @success="sucs" @cancel="component = 'list'" ></service-delete-order>
19
19
  </div>
20
20
  <div class="" v-if="component === 'modify'">
@@ -122,7 +122,7 @@
122
122
  </div>
123
123
  <div v-show="$parent.$parent.$parent.canRemindChange(row) && row.f_workorder_type == '报修单' && row.f_state!='完成' ">
124
124
  <button type="button" class="btn btn-link" @click.stop="$parent.$parent.$parent.$emit('do', 'remind', row)" style="min-width: 30px;">催单</button>
125
- <button type="button" class="btn btn-link" @click.stop="$parent.$parent.$parent.$emit('do', 'modify', row)" style="min-width: 30px;">修改</button>
125
+ <button type="button" class="btn btn-link" @click.stop="$parent.$parent.$parent.$emit('do', 'modify', row)" v-show="row.f_source != '安检'" style="min-width: 30px;">修改</button>
126
126
  </div>
127
127
  <div v-show="$parent.$parent.$parent.canRemindChange(row) && row.f_workorder_type == '置换通气单' && row.f_state!='完成' ">
128
128
  <button type="button" class="btn btn-link" @click.stop="$parent.$parent.$parent.$emit('do', 'remind', row)" style="min-width: 30px;">催单</button>
@@ -114,12 +114,30 @@
114
114
  <p>{{ activity.f_operator }}将工单{{activity.f_back_type}}</p>
115
115
  <p v-if="activity.f_remarks">原因:{{ activity.f_remarks }}</p>
116
116
  </div>
117
+ <!-- 工单打回 工单打回旧版使用t_site_back,兼容之前的逻辑。新版本无需调整此项-->
118
+ <div style="margin-top: 5px" v-if="activity.type === 't_site_back'">
119
+ <p>{{ activity.f_site_back_date }}</p>
120
+ <p>{{ activity.f_site_back_name }}将工单打回</p>
121
+ <p>原因:{{ activity.f_site_back_reason }}</p>
122
+ </div>
123
+ <!-- 未维修,属于维修员打回 兼容之前的逻辑。新版本无需调整此项 -->
124
+ <div style="margin-top: 5px" v-if="activity.type === 't_notwork'">
125
+ <p>{{ activity.f_date }}</p>
126
+ <p>{{ activity.f_name }}未处理</p>
127
+ <p>原因:{{ activity.f_reason }}</p>
128
+ </div>
117
129
  <!-- 用户催单 -->
118
130
  <div style="margin-top: 5px" v-if="activity.type === 't_reminder'">
119
131
  <p>{{ activity.f_reminder_date }}</p>
120
132
  <p>用户催单</p>
121
133
  <p>催单内容:{{ activity.f_content }}</p>
122
134
  </div>
135
+ <!-- 工单撤回 -->
136
+ <div style="margin-top: 5px" v-if="activity.type === 't_recall'">
137
+ <p>{{ activity.f_recall_date }}</p>
138
+ <p>{{ activity.f_recall_name }}撤回工单</p>
139
+ <p>备注:{{ activity.f_remarks }}</p>
140
+ </div>
123
141
  <!-- 工单信息补充 -->
124
142
  <div style="margin-top: 5px" v-if="activity.type === 't_telinformation'">
125
143
  <p>{{ activity.f_information_date }}</p>
@@ -270,7 +288,7 @@
270
288
  <div class="col-sm-12 form-input-group" >
271
289
  <label class="font_normal_body" style="width: 10%" v-if="rowOne.f_workorder_type === '咨询单'">咨询内容</label>
272
290
  <label class="font_normal_body" style="width: 10%" v-if="rowOne.f_workorder_type === '投诉单'">投诉内容</label>
273
- <textarea name="name" rows="3" v-model="rowOne.f_content"
291
+ <textarea name="name" rows="3" v-model="rowOne.f_content || service.f_content"
274
292
  class="form-control ver-textarea" id="f_content" name="f_content" readonly="readonly"></textarea>
275
293
  </div>
276
294
  <div class="col-sm-4 form-group form-input-group" >
@@ -295,7 +313,7 @@
295
313
  </div>
296
314
  <div class="col-sm-12 form-input-group">
297
315
  <label class="font_normal_body" style="width: 10%">处理结果</label>
298
- <textarea name="name" rows="3" v-model="complanResult.f_complaint_results"
316
+ <textarea name="name" rows="3" v-model="complanResult.f_complaint_results || '已处理'"
299
317
  class="form-control ver-textarea" readonly="readonly"></textarea>
300
318
  </div>
301
319
  </div>
@@ -267,7 +267,7 @@
267
267
  <header slot="modal-header" class="modal-header">
268
268
  </header>
269
269
  <article slot="modal-body" class="modal-body">
270
- <visit-info-xin v-if="showVisit" :row="visitrow" :phone="wavflie" :outltime="outltime" @show-obj="watchShow"></visit-info-xin>
270
+ <visit-info v-if="showVisit" :row="visitrow" :phone="wavflie" :outltime="outltime" @show-obj="watchShow"></visit-info>
271
271
  </article>
272
272
  <footer slot="modal-footer" class="modal-footer">
273
273
  </footer>
@@ -8,7 +8,7 @@
8
8
  <div class="col-sm-3 form-group form-input-group" style="width: 20%">
9
9
  <label class="font_normal_body" style="width: 40%">工单编号</label>
10
10
  <input type="text" class="input_search" v-model="model.f_service_id" placeholder='工单编号'
11
- condition="f_service_id like '%{}%'"
11
+ condition="tswo.f_service_id like '%{}%'"
12
12
  :size="model.f_service_id ? model.f_service_id.length : 6">
13
13
  </div>
14
14
  <div class="col-sm-3 form-group form-input-group" style="width: 20%">
@@ -248,6 +248,9 @@
248
248
  <th>
249
249
  <nobr>工单结果</nobr>
250
250
  </th>
251
+ <th>
252
+ <nobr>维护信息</nobr>
253
+ </th>
251
254
  </tr>
252
255
  </template>
253
256
  <template partial='body'>
@@ -321,6 +324,9 @@
321
324
  <td style="text-align: center;">
322
325
  <nobr>{{ row.f_result_status }}</nobr>
323
326
  </td>
327
+ <td style="text-align: center;">
328
+ <nobr>{{ row.f_content }}</nobr>
329
+ </td>
324
330
 
325
331
 
326
332
  </template>
@@ -415,10 +421,10 @@ export default {
415
421
  tfoot: '',
416
422
  zhihuans: [{label: '全部', value: ''}, {label: '正常', value: '正常'}, {label: '异常', value: '异常'}],
417
423
  headData: ['工单类型', '工单编号', '派单时间','客户信息', '联系电话', '故障明细', '工单来源', '工单状态', '派单人', '话务员','接单员',
418
- '结单时间','到达时间', '离开时间','逾期状态','截止时间','工单结果'],
424
+ '结单时间','到达时间', '离开时间','逾期状态','截止时间','工单结果','维护信息'],
419
425
  bodyData: ['f_workorder_type', 'f_service_id', 'f_created_date', 'f_customer_info_show','f_contact_phone', 'f_json', 'f_source',
420
426
  'f_state_show', 'f_single_man','f_attendant','f_order_man','f_date','f_date_come','f_date_leave',
421
- 'f_overdue_show','f_finish_time_show','f_result_status'],
427
+ 'f_overdue_show','f_finish_time_show','f_result_status','f_content'],
422
428
  searchData: {
423
429
  condition: '1=1'
424
430
  },
@@ -440,6 +446,7 @@ export default {
440
446
  'f_overdue_show': '逾期状态',
441
447
  'f_finish_time_show': '截止时间',
442
448
  'f_result_status': '工单结果',
449
+ 'f_content': '维护信息'
443
450
  },
444
451
  criteriaShow: false
445
452
  }
@@ -232,8 +232,10 @@
232
232
  在线抢修照片
233
233
  </header>
234
234
  <article slot="modal-body" class="modal-body">
235
- <div class="from-group">
236
- <img-self :src="imgfilename" width="500" height="500"></img-self>
235
+ <div class="from-group" style="display: flex">
236
+ <img-self :src="'rs/image/file/'+imgfilename" width="220" height="300"></img-self>
237
+ <img-self v-if="imgfilename1" :src="'rs/image/file/'+imgfilename1" style="margin-left: 10px" width="220" height="300"></img-self>
238
+ <img-self v-if="imgfilename2" :src="'rs/image/file/'+imgfilename2" style="margin-left: 10px" width="220" height="300"></img-self>
237
239
  </div>
238
240
  </article>
239
241
  <footer slot="modal-footer" class="modal-footer">
@@ -374,6 +376,8 @@ export default {
374
376
  service: Object,
375
377
  pendingCount: 0,
376
378
  imgfilename: '',
379
+ imgfilename1: '',
380
+ imgfilename2: '',
377
381
  select: {
378
382
  defname: ''
379
383
  },
@@ -650,7 +654,9 @@ export default {
650
654
  //tag
651
655
  //tag)
652
656
  this.imgshow = true
653
- this.imgfilename = 'rs/image/file/' + val.f_single_path
657
+ this.imgfilename = val.f_single_path
658
+ this.imgfilename1 = val.f_singlea_path
659
+ this.imgfilename2 = val.f_singleb_path
654
660
  },
655
661
  search (args) {
656
662
  this.serlist = []