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
@@ -0,0 +1,290 @@
1
+ <template>
2
+ <div class="flex">
3
+ <section>
4
+ <div class="basic-main row" style="height: 100%">
5
+ <criteria-paged :model="model" v-ref:paged>
6
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
7
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
8
+ <div class="row">
9
+ <div class="col-sm-4 form-group" style="width: 20%">
10
+ <label class="font_normal_body">&nbsp;公&nbsp;&nbsp;&nbsp;&nbsp;司&nbsp;</label>
11
+ <right-tree :userid.sync='$parent.$parent.userid' style="width: 60%;"
12
+ :source.sync='$parent.$parent.source' @re-res="$parent.$parent.getRes"></right-tree>
13
+ </div>
14
+ <div class="form-group col-sm-2">
15
+ <label for="startDate" class="font_normal_body">开始日期:</label>
16
+ <datepicker id="startDate" placeholder="开始日期"
17
+ v-model="$parent.$parent.startDate"
18
+ :value.sync="$parent.$parent.startDate"
19
+ style="width: 60%;"
20
+ :disabled-days-of-Week="[]"
21
+ :format="'yyyy-MM-dd 00:00:00'"
22
+ :show-reset-button="reset">
23
+ </datepicker>
24
+ </div>
25
+ <div class="form-group col-sm-2">
26
+ <label for="endDate" class="font_normal_body">结束日期:</label>
27
+ <datepicker id="endDate" placeholder="结束日期"
28
+ v-model="$parent.$parent.endDate"
29
+ :value.sync="$parent.$parent.endDate"
30
+ :disabled-days-of-Week="[]"
31
+ style="width: 60%;"
32
+ :format="'yyyy-MM-dd 23:59:59'"
33
+ :show-reset-button="reset">
34
+ </datepicker>
35
+ </div>
36
+ <div class="col-sm-3 form-group form-input-group" style="width: 20%;left: 35%">
37
+ <button type="button" name="button" class="button_search" @click="search">查询</button>
38
+ <export-excel-tel :data="$parent.$parent.searchData"
39
+ :field="$parent.$parent.excelHeaders"
40
+ sqlurl="rs/logic/telephoneExport" sql-name="manage_telman" :template-name="$parent.$parent.excelTitle"></export-excel-tel>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </criteria>
45
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid >
46
+ <template partial='head'>
47
+ <tr >
48
+ <th colspan="20" class="tableinfo">
49
+ <h3 style="text-align: center;color: #00A3F0;font-size: 26px" >{{$parent.$parent.$parent.orgname }}话务统计报表</h3>
50
+ </th>
51
+ </tr>
52
+ <tr>
53
+ <th>
54
+ <nobr>话务员</nobr>
55
+ </th>
56
+ <th>
57
+ <nobr>工号</nobr>
58
+ </th>
59
+ <th>
60
+ <nobr>来电总数</nobr>
61
+ </th>
62
+ <th>
63
+ <nobr>接线率</nobr>
64
+ </th>
65
+ <!-- <th>-->
66
+ <!-- <nobr>置忙次数</nobr>-->
67
+ <!-- </th>-->
68
+ <th>
69
+ <nobr>已接</nobr>
70
+ </th>
71
+ <th>
72
+ <nobr>未接</nobr>
73
+ </th>
74
+ <th>
75
+ <nobr>外拨</nobr>
76
+ </th>
77
+ <th>
78
+ <nobr>咨询单</nobr>
79
+ </th>
80
+ <th>
81
+ <nobr>投诉单</nobr>
82
+ </th>
83
+ <th>
84
+ <nobr>报修单</nobr>
85
+ </th>
86
+ <th>
87
+ <nobr>话务来电</nobr>
88
+ </th>
89
+ <th>
90
+ <nobr>部门派单</nobr>
91
+ </th>
92
+ <th >
93
+ <nobr>报修单(抢修)</nobr>
94
+ </th>
95
+ <th >
96
+ <nobr>报修单(服务)</nobr>
97
+ </th>
98
+ <th >
99
+ <nobr>报修单(整改)</nobr>
100
+ </th>
101
+ <th >
102
+ <nobr>报修单(置换通气)</nobr>
103
+ </th>
104
+ </tr>
105
+ </template>
106
+ <template partial='body'>
107
+ <tr>
108
+ <td style="text-align:center">
109
+ <nobr>{{ row.nam }}</nobr>
110
+ </td>
111
+ <td style="text-align:center">
112
+ <nobr>{{ row.id }}</nobr>
113
+ </td>
114
+ <td style="text-align:center">
115
+ <nobr>{{ row.zongji }}</nobr>
116
+ </td>
117
+ <td style="text-align:center">
118
+ <nobr>{{ row.scale }}</nobr>
119
+ </td>
120
+ <!-- <td style="text-align:center">-->
121
+ <!-- <nobr>{{ row.zhimangcishu }}</nobr>-->
122
+ <!-- </td>-->
123
+ <td style="text-align:center" >
124
+ <nobr>{{ row.yijie }}</nobr>
125
+ </td>
126
+ <td style="text-align:center">
127
+ <nobr>{{ row.weijie }}</nobr>
128
+ </td>
129
+ <td style="text-align:center">
130
+ <nobr>{{ row.waibo }}</nobr>
131
+ </td>
132
+ <td style="text-align:center">
133
+ <nobr>{{ row.zixundan}}</nobr>
134
+ </td>
135
+ <td style="text-align:center">
136
+ <nobr>{{ row.tousudan}}</nobr>
137
+ </td>
138
+ <td style="text-align:center">
139
+ <nobr>{{ row.baoxiudan}}</nobr>
140
+ </td>
141
+ <td style="text-align:center">
142
+ <nobr>{{ row.huawunum}}</nobr>
143
+ </td>
144
+ <td style="text-align:center">
145
+ <nobr>{{ row.bumennum}}</nobr>
146
+ </td>
147
+ <td style="text-align:center" >
148
+ <nobr >{{ row.qiangxius}}</nobr>
149
+ </td>
150
+ <td style="text-align:center" >
151
+ <nobr >{{ row.fuwus}}</nobr>
152
+ </td>
153
+ <td style="text-align:center" >
154
+ <nobr >{{ row.zhenggais}}</nobr>
155
+ </td>
156
+ <td style="text-align:center" >
157
+ <nobr >{{ row.zhihuantongqis}}</nobr>
158
+ </td>
159
+ </tr>
160
+ </template>
161
+ <template partial="foot">
162
+ <td style="text-align: center"><span><b>合计:</b></span></td>
163
+ <td style="text-align: center"><span><b> </b></span></td>
164
+ <td style="text-align: center">{{model.sums.zongji}}</td>
165
+ <td style="text-align: center">{{((model.sums.yijie/model.sums.zongji)*100).toFixed(2)+'%'}}</td>
166
+ <!-- <td style="text-align: center">{{model.sums.zhimangcishu}}</td>-->
167
+ <td style="text-align: center">{{model.sums.yijie}}</td>
168
+ <td style="text-align: center">{{model.sums.weijie}}</td>
169
+ <td style="text-align: center">{{model.sums.waibo}}</td>
170
+ <td style="text-align: center">{{model.sums.zixundan}}</td>
171
+ <td style="text-align: center">{{model.sums.tousudan}}</td>
172
+ <td style="text-align: center">{{model.sums.baoxiudan}}</td>
173
+ <td style="text-align: center">{{model.sums.huawunum}}</td>
174
+ <td style="text-align: center">{{model.sums.bumennum}}</td>
175
+ <td style="text-align: center" >{{model.sums.qiangxius}}</td>
176
+ <td style="text-align: center" >{{model.sums.fuwus}}</td>
177
+ <td style="text-align: center" >{{model.sums.zhenggais}}</td>
178
+ <td style="text-align: center" >{{model.sums.zhihuantongqis}}</td>
179
+ </template>
180
+ </data-grid>
181
+ </criteria-paged>
182
+ </div>
183
+ </section>
184
+ </div>
185
+ </template>
186
+ <script>
187
+ import {PagedList, HttpResetClass} from 'vue-client'
188
+ import * as Util from '../../../components/Util'
189
+
190
+ export default {
191
+ title: '话务员报表',
192
+ data () {
193
+ let model = new PagedList('rs/sql/manage_telman', 20, {
194
+ startDate: 'this.startDate',
195
+ endDate: 'this.endDate',
196
+ f_filiale_id: 'this.f_filiale_id'
197
+ },{zongji:'',yijie:'',weijie:'',waibo:'',zixundan:'',tousudan:'',baoxiudan:'',huawunum:'',bumennum:'',qiangxius:'',fuwus:'',zhenggais:'',zhihuantongqis:''})
198
+ model.f_filiale_id = `('${this.$login.f.orgid}')`
199
+ model.startDate=Util.getYesterDay() + ' 00:00:00'//昨天时间
200
+ model.endDate=Util.toStandardDateString()+ ' 23:59:59'//当前时间
201
+ return {
202
+ f_filiale_id: `('${this.$login.f.orgid}')`, // 分公司id
203
+ model: model,
204
+ source: 'tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() == $organization$))', //获取公司参数
205
+ userid: this.$login.f.id,
206
+ orgname: '',
207
+ startDate:Util.getYesterDay() + ' 00:00:00',
208
+ endDate:Util.toStandardDateString()+ ' 23:59:59',
209
+ searchData: {
210
+ condition: '',
211
+ startDate: '',
212
+ endDate: '',
213
+ f_filiale_id: ''
214
+ },
215
+ excelHeaders: {
216
+ 'nam': '话务员',
217
+ 'id': '工号',
218
+ 'quanbujieting': '接线数',
219
+ 'scale': '接线率',
220
+ // 'zhimangcishu': '置忙次数',
221
+ 'yijie': '已接',
222
+ 'weijie': '未接',
223
+ 'waibo': '外拨',
224
+ 'zixundan': '咨询单',
225
+ 'tousudan': '投诉单',
226
+ 'baoxiudan': '报修单',
227
+ 'huawunum': '话务来电',
228
+ 'bumennum': '部门派单',
229
+ 'qiangxius': '报修单(抢修)',
230
+ 'fuwus': '报修单(服务)',
231
+ 'zhenggais': '报修单(整改)',
232
+ 'zhihuantongqis': '报修单(置换通气)'
233
+ }
234
+ }
235
+ },
236
+ methods: {
237
+ getRes (obj) {
238
+ this.f_filiale_id = this.$login.convertToIn(obj.resids)
239
+ this.orgname = obj.res[0]
240
+ this.$set('orgname', obj.res[0])
241
+ console.log(
242
+ `%c 来电内容明细 %c 呼叫模块 %c`,
243
+ 'background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff',
244
+ 'background:#41b883 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff',
245
+ 'background:transparent',
246
+ this.orgname
247
+ )
248
+ },
249
+ selfSearch (args) {
250
+ if (!this.f_filiale_id) {
251
+ return this.$showMessage("请选择公司进行查询!!!")
252
+ }
253
+ this.model.f_filiale_id = this.f_filiale_id // 只有选择了下面的条件才会变化
254
+ this.searchData.f_filiale_id = this.f_filiale_id //导出
255
+ this.searchData.condition=args.condition //导出
256
+ this.model.startDate = this.startDate
257
+ this.searchData.startDate = this.startDate //导出
258
+ this.model.endDate = this.endDate
259
+ this.searchData.endDate = this.endDate //导出
260
+ this.model.search(args.condition, args.model)
261
+ }
262
+ },
263
+ computed: {
264
+ excelTitle() {
265
+ return `${this.orgname }话务员统计报表`
266
+ },
267
+ },
268
+ watch: {
269
+ },
270
+ ready () {
271
+ // //tag)
272
+ // this.$refs.paged.$refs.cri.search()
273
+ //tag + ' 00:00:00')
274
+ //tag+ ' 23:59:59')
275
+ this.orgname = this.$login.f.orgs
276
+ //tag)
277
+ //tag
278
+ }
279
+
280
+ }
281
+ </script>
282
+
283
+ <style lang="less" >
284
+ .tableinfo {
285
+ text-align: center;
286
+ background-color: #00A3F0;
287
+ color: #0c2e4d;
288
+ font-size: 26px;
289
+ }
290
+ </style>
@@ -0,0 +1,272 @@
1
+ <template >
2
+ <div class="flex-row">
3
+ <div id="stand-work-list" class="flex bg-white p-10 basic-main" style="flex-direction: row">
4
+ <div style="width: 40%;height: 100%" v-show="leftShow">
5
+ <div class="row" style="height: 10%;width: 50%">
6
+ <div class="form-group form-input-group" style="display: flex;justify-content: flex-start">
7
+ <label class="font_normal_body" style="width: 40%">查询日期</label>
8
+ <datepicker placeholder="查询日期"
9
+ :value.sync="searchDate"
10
+ v-model="searchDate"
11
+ :format="'yyyy-MM-dd 00:00:00'"
12
+ ></datepicker>
13
+ <button type="button" name="button"
14
+ class="button_search button_spacing" style="z-index: 2" @click="searchEcharts()">查询</button>
15
+ </div>
16
+ </div>
17
+ <div style="height: 45%;" id="husunzhexian1"></div>
18
+ <div style="height: 45%;" id="husunzhexian2"></div>
19
+ </div>
20
+ <div class="span" style="width: 60%;overflow: auto">
21
+ <visit-info v-if="showVisit" :phone="wavflie" :idwavfile="idwavfile" :outltime="outltime" @show-obj="watchShow"></visit-info>
22
+ <criteria-paged :model="model" v-else v-ref:paged>
23
+ <criteria partial='criteria' v-ref:criteria @condition-changed='$parent.search'>
24
+ <div novalidate class="form-inline" partial>
25
+ <div class="row">
26
+ <div class="col-sm-3 form-group form-input-group">
27
+ <label class="font_normal_body" style="width: 35%">电话号码</label>
28
+ <input type="text" class="input_search" v-model="model.telnum" placeholder='电话号码'
29
+ condition="telnum like '%{}%'"
30
+ :size="model.telnum ? model.telnum.length : 7">
31
+ </div>
32
+
33
+ <div class="col-sm-3 form-group form-input-group">
34
+ <label class="font_normal_body" style="width: 40%">开始时间</label>
35
+ <datepicker placeholder="开始时间"
36
+ :value.sync="model.f_date_start"
37
+ v-model="model.f_date_start"
38
+ :format="'yyyy-MM-dd 00:00:01'"
39
+ condition="outltime > '{}'"
40
+ ></datepicker>
41
+ </div>
42
+ <div class="col-sm-3 form-group form-input-group">
43
+ <label class="font_normal_body" style="width: 40%">结束时间</label>
44
+ <datepicker placeholder="结束时间"
45
+ :value.sync="model.f_date_end"
46
+ v-model="model.f_date_end"
47
+ :format="'yyyy-MM-dd 23:59:59'"
48
+ condition="outltime < '{}'"
49
+ ></datepicker>
50
+ </div>
51
+ <div class="col-sm-3 form-group form-input-group">
52
+ <label class="font_normal_body" style="width: 35%">回访状态</label>
53
+ <v-select :value.sync="model.f_flghuifang"
54
+ :options='$parent.$parent.huifangs'
55
+ :value-single="true"
56
+ placeholder='请选择回访状态'
57
+ close-on-select
58
+ style="width: 60%"
59
+ ></v-select>
60
+ </div>
61
+ <div style="float: right;" class="form-group span">
62
+ <button type="button" name="button"
63
+ class="button_search button_spacing" @click="search(),$dispatch('search')" style="z-index: 2">查询</button>
64
+ <export-excel-tel
65
+ :data="$parent.$parent.searchData"
66
+ :field="$parent.$parent.excelHeaders"
67
+ sqlurl="rs/logic/telephoneExport" sql-name="tel_singleTable_OrderBy" template-name='呼损记录导出'
68
+ :choose-col="false">
69
+ </export-excel-tel>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </criteria>
74
+ <data-grid partial='list' v-ref:grid :model="model" class="list_area table_sy">
75
+ <template partial='head'>
76
+ <tr>
77
+ <th><nobr>电话号码</nobr></th>
78
+ <th><nobr>来电时间</nobr></th>
79
+ <th><nobr>操作</nobr></th>
80
+ </tr>
81
+ </template>
82
+ <template partial='body'>
83
+ <td style="text-align: center">{{row.telnum}}</td>
84
+ <td style="text-align: center">{{row.outltime}}</td>
85
+ <td style="text-align: center">
86
+ <button-link v-show="!row.f_flghuifang" type="button" class="btn btn-link" @click="$parent.$parent.$parent.playWav(row.telnum,row.id)">回拨</button-link>
87
+ </td>
88
+ </template>
89
+ </data-grid>
90
+ </criteria-paged>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <!-- <modal :show.sync="showVisit" v-ref:modal backdrop="false">-->
95
+ <!-- <header slot="modal-header" class="modal-header">-->
96
+ <!-- </header>-->
97
+ <!-- <article slot="modal-body" class="modal-body">-->
98
+ <!-- <visit-info v-if="showVisit" :phone="wavflie" :idwavfile="idwavfile" :outltime="outltime" @show-obj="watchShow"></visit-info>-->
99
+ <!-- </article>-->
100
+ <!-- <footer slot="modal-footer" class="modal-footer">-->
101
+ <!-- </footer>-->
102
+ <!-- </modal>-->
103
+ </template>
104
+
105
+ <script>
106
+ import {HttpResetClass, PagedList} from 'vue-client'
107
+ import * as Util from '../../../components/Util'
108
+ export default {
109
+ title: '呼损记录',
110
+ data () {
111
+ return {
112
+ model: new PagedList('rs/sql/tel_singleTable_OrderBy', 20, {items: "'*'", tablename: "'t_records'", orderitem: "'outltime desc'" }),
113
+ row: null,
114
+ show: false,
115
+ wavflie : '',
116
+ idwavfile:'',
117
+ leftShow:true,
118
+ searchDate:Util.toStandardDateString(),
119
+ orderMan: '',
120
+ msgs: [],
121
+ huifangs:[{label:"全部",value:""},{label:"已回访",value:"已回访"},{label:"未回访",value:"未回访"}],
122
+ service: Object,
123
+ pendingCount: 0,
124
+ serobj:Object,
125
+ showVisit:false,
126
+ outltime:this.getNowFormatDate(),
127
+ searchData:{
128
+ items: "*",
129
+ tablename: "t_records",
130
+ orderitem: "outltime desc",
131
+ condition: '1=1'
132
+ },
133
+ excelHeaders: {
134
+ 'telnum': '电话号码',
135
+ 'outltime': '来电时间',
136
+ },
137
+ }
138
+ },
139
+ ready () {
140
+ this.$refs.paged.$refs.criteria.model.f_flghuifang = '未回访'
141
+ this.leftShow = (this.$parent.leftShow == undefined ? true : this.$parent.leftShow)
142
+ this.renderEcharts(Util.toStandardDateString())
143
+ // this.selfSearch()
144
+
145
+ },
146
+ methods: {
147
+ searchEcharts(){
148
+ console.log("9334",this.searchDate)
149
+ this.renderEcharts(this.searchDate)
150
+ },
151
+ //获取当前日期
152
+ renderEcharts(date){
153
+ console.log("933",Util.addDate(3,date),Util.addDate(-3),date)
154
+ new HttpResetClass().load("post",'rs/sql/getLossPhoneByTime',{
155
+ data:{
156
+ groupitem:'SUBSTRING(outltime, 0, 11)',
157
+ condition:`outltime>='${Util.addDate(-3,date)} 00:00:00' and outltime<='${Util.addDate(3,date)} 23:59:59'`
158
+ }
159
+ },{resolveMsg:null,rejectMsg:null}).then(res=>{
160
+ let myChart1 = this.$echarts.init(document.getElementById(("husunzhexian1")))
161
+ myChart1.setOption(this.getAOptions("呼损日分析表",res.data))
162
+ })
163
+
164
+ new HttpResetClass().load("post",'rs/sql/getLossPhoneByTime',{
165
+ data:{
166
+ groupitem:"SUBSTRING(outltime, 12, 2)+':00'",
167
+ condition:`outltime>='${Util.toStandardDateString(date)} 08:00:00' and outltime<='${Util.toStandardDateString(date)} 18:59:59'`
168
+ }
169
+ },{resolveMsg:null,rejectMsg:null}).then(res=>{
170
+ let myChart1 = this.$echarts.init(document.getElementById(("husunzhexian2")))
171
+ myChart1.setOption(this.getAOptions("呼损时分析表",res.data))
172
+ })
173
+ },
174
+ getAOptions(title,arr){
175
+
176
+ return {
177
+ color: ['rgb(155,214,129)', '#73c0de'],
178
+ title: {
179
+ text: title
180
+ },
181
+ tooltip: {
182
+ trigger: 'axis'
183
+ },
184
+ legend: {
185
+ data: ['忙线', '未接']
186
+ },
187
+ grid: {
188
+ left: '3%',
189
+ right: '4%',
190
+ bottom: '3%',
191
+ containLabel: true
192
+ },
193
+ toolbox: {
194
+ feature: {
195
+ saveAsImage: {}
196
+ }
197
+ },
198
+ xAxis: {
199
+ type: 'category',
200
+ boundaryGap: false,
201
+ data: arr.map(item=>{
202
+ if(title === '呼损日分析表'){
203
+ return item.timearea.substr(5,5)
204
+ }
205
+ return item.timearea
206
+ })
207
+ },
208
+ yAxis: {
209
+ type: 'value'
210
+ },
211
+ series: [
212
+ {
213
+ name: '未接',
214
+ type: 'line',
215
+ stack: 'Total',
216
+ data: arr.map(item=>item.weijie)
217
+ },
218
+ {
219
+ name: '忙线',
220
+ type: 'line',
221
+ stack: 'Total',
222
+ data: arr.map(item=>item.zhanxian)
223
+ },
224
+ ]
225
+ }
226
+ },
227
+ getNowFormatDate() {
228
+ var date = new Date();
229
+ var seperator1 = "-";
230
+ var month = date.getMonth() + 1;
231
+ var strDate = date.getDate();
232
+ if (month >= 1 && month <= 9) {
233
+ month = "0" + month;
234
+ }
235
+ if (strDate >= 0 && strDate <= 9) {
236
+ strDate = "0" + strDate;
237
+ }
238
+ var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + ' 23:59:59'
239
+ return currentdate;
240
+ },
241
+ watchShow(val){
242
+ this.showVisit = val
243
+ },
244
+ clearVisit(){
245
+ this.show = false
246
+ },
247
+ playWav(val,val1){
248
+ if (!this.leftShow){
249
+ this.$parent.setUserPhone(val)
250
+ }
251
+ this.wavflie=val;
252
+ this.idwavfile=val1
253
+ this.showVisit = true
254
+ },
255
+ closemodel () {
256
+ this.showVisit = false
257
+ },
258
+ search(args) {
259
+ if(args.model.f_flghuifang){
260
+ if(args.model.f_flghuifang==='已回访'){
261
+ args.condition += ` and f_flghuifang = '已回访'`
262
+ }else{
263
+ args.condition += ` and f_flghuifang is null`
264
+ }
265
+ }
266
+ args.condition += " AND isnull(starttime,'') = '' AND isnull(findtime,'') != ''"
267
+ this.searchData.condition = args.condition
268
+ this.model.search(args.condition)
269
+ },
270
+ },
271
+ }
272
+ </script>
@@ -9,6 +9,10 @@ let specialComp = {
9
9
  'distribute-work':(resolve) => { require(['./pc/DistributeWork'], resolve) },
10
10
  'tel-meteread-info':(resolve) => { require(['./pc/MetereadInfo'], resolve) },
11
11
  'work-listall':(resolve) => { require(['./pc/WorkListAll'], resolve) },
12
+ 'record-list-left':(resolve) => { require(['./pc/RecordListLeft'], resolve) },
13
+ 'telloss-list':(resolve) => { require(['./pc/TelLossList'], resolve) },
14
+ // 'repairs-work':(resolve) => { require(['./pc/RepairsWork'], resolve) },
15
+ 'tel-agentvoice-report':(resolve) => { require(['./pc/TelAgentVoiceReport'], resolve) }
12
16
  }
13
17
  exports.specialComp = specialComp
14
18
 
@@ -10,7 +10,8 @@ let specialComp = {
10
10
  'zhihuan-first': (resolve) => { require(['./android/ZHihuanFirst'], resolve) },
11
11
  'PhoneUpUserinfoTel': (resolve) => { require(['./android/PhoneUpUserinfo'], resolve) },
12
12
  'repair-info': (resolve) => { require(['./android/RepairInfo'], resolve) },
13
- 'repair-user-info': (resolve) => { require(['./android/RepairUserInfo.vue'], resolve) },
13
+ 'repair-user-info': (resolve) => { require(['./android/RepairUserInfo'], resolve) },
14
+ 'fault-all': (resolve) => { require(['./android/FaultAll'], resolve) },
14
15
  }
15
16
  exports.specialComp = specialComp
16
17
 
@@ -4,7 +4,7 @@ import Vue from "vue";
4
4
  //pc和手机分别注册到两个文件中
5
5
  let specialComp = {
6
6
  // 工单详情子组件
7
- 'console': (resolve) => { require(['./pc/console'], resolve) },
7
+ 'console': (resolve) => { require(['./pc/Console'], resolve) },
8
8
  'distribute-work': (resolve) => { require(['./pc/DistributeWork'], resolve) },
9
9
  'seek-work': (resolve) => { require(['./pc/Seekwork'], resolve) },
10
10
  'complain-work': (resolve) => { require(['./pc/ComplainWork'], resolve) },
@@ -0,0 +1,75 @@
1
+ /**
2
+ * 获得给定资源的名称全路径
3
+ * @param res: 资源
4
+ * @param name: 全路径字段
5
+ */
6
+ export function getFullName (res, name) {
7
+ let result = ''
8
+ while (res != null) {
9
+ if (result === '') {
10
+ result = res[name]
11
+ } else {
12
+ result = res[name] + '.' + result
13
+ }
14
+ res = res.parent
15
+ }
16
+ return result
17
+ }
18
+
19
+ /**
20
+ * 给拿到的资源添加父关系
21
+ * @param res
22
+ */
23
+ export function procParent (reses) {
24
+ for (let value of reses) {
25
+ procInnerParent(value)
26
+ }
27
+ }
28
+
29
+ // 给资源res的所有子,添加父关系
30
+ function procInnerParent (res) {
31
+ for (let value of res.children) {
32
+ value.parent = res
33
+ procInnerParent(value)
34
+ }
35
+ }
36
+
37
+ /**
38
+ * 从给定一批资源中,递归找到给定号码的资源
39
+ * @param model:给定的一批资源
40
+ * @param id:要查找的资源id串
41
+ */
42
+ export function find (model, id) {
43
+ // 返回最后一个id信息
44
+ let index = id.lastIndexOf('.')
45
+ if (index !== -1) {
46
+ id = id.substr(index + 1)
47
+ }
48
+
49
+ // 子中有,返回子里的
50
+ for (let value of model) {
51
+ let ret = getInnerResourceById(value, id)
52
+ if (ret) {
53
+ return ret
54
+ }
55
+ }
56
+
57
+ return null
58
+ }
59
+
60
+ // 根据id号取资源,自己不是,递归从子中找
61
+ function getInnerResourceById (res, id) {
62
+ if (res.id === id) {
63
+ return res
64
+ }
65
+
66
+ // 子中有,返回子里的
67
+ for (let value of res.children) {
68
+ let ret = getInnerResourceById(value, id)
69
+ if (ret) {
70
+ return ret
71
+ }
72
+ }
73
+
74
+ return null
75
+ }