telephone-clients 3.0.101 → 3.0.103

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 (32) hide show
  1. package/package.json +116 -116
  2. package/src/App.vue +56 -52
  3. package/src/components/pc/NewRepairPaper.vue +370 -370
  4. package/src/components/pc/WorkListAllNew.vue +17 -23
  5. package/src/components/temp/ChangemeterInfo.vue +87 -87
  6. package/src/components/temp/DeviceInfo.vue +82 -82
  7. package/src/components/workorder/FaultAll.vue +826 -826
  8. package/src/components/workorder/PhoneStandWork.vue +354 -354
  9. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  10. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  11. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  12. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  13. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  14. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  15. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  16. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  17. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  18. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  19. package/src/filiale/qianneng/pc/RepairsWork.vue +982 -982
  20. package/src/filiale/qianneng/pc/WorkListAllNew.vue +14 -24
  21. package/src/filiale/shanxian/telephone.js +12 -12
  22. package/src/filiale/shexian/android/AddMyTask.vue +347 -0
  23. package/src/filiale/shexian/pc/WorkList.vue +740 -0
  24. package/src/filiale/shexian/telephone.js +18 -17
  25. package/src/filiale/shexian/telephoneAndroid.js +26 -23
  26. package/src/filiale/tongchuan/pc/UserWork.vue +805 -805
  27. package/src/filiale/wenxi/android/RepairOrderV.vue +1419 -1419
  28. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  29. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  30. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  31. package/src/filiale/zhongsheng/telephone.js +23 -23
  32. package/src/main.js +22 -22
@@ -248,11 +248,6 @@
248
248
  <th>
249
249
  <nobr>截止时间</nobr>
250
250
  </th>
251
- <th>
252
- <nobr>逾期时间</nobr>
253
- </th>
254
-
255
-
256
251
  <th>
257
252
  <nobr>工单结果</nobr>
258
253
  </th>
@@ -326,18 +321,12 @@
326
321
  <td style="text-align: center;">
327
322
  <nobr>{{ row.f_finish_date == '1900-01-01 00:00:00' ? '' : row.f_finish_date }}</nobr>
328
323
  </td>
329
- <td style="text-align: center;">
330
- <nobr>{{ $parent.$parent.$parent.d2(row) }}</nobr>
331
- </td>
332
-
333
-
334
324
  <td style="text-align: center;">
335
325
  <nobr>{{ row.f_result_status }}</nobr>
336
326
  </td>
337
327
  <td style="text-align: center;">
338
328
  <nobr>{{ row.f_handlingtype }}</nobr>
339
329
  </td>
340
-
341
330
  </template>
342
331
  </data-grid>
343
332
  </criteria-paged>
@@ -429,28 +418,30 @@ export default {
429
418
  thead: '',
430
419
  tfoot: '',
431
420
  zhihuans: [{label: '全部', value: ''}, {label: '正常', value: '正常'}, {label: '异常', value: '异常'}],
432
- headData: ['工单类型', '报修类型', '工单编号','派单时间', '用户姓名', '用户地址', '用户电话', '报修电话', '报修原因','派单人','受理人','工单状态', '结单时间','到达时间','离开时间','维修人','工单结果','派单类型'],
433
- bodyData: ['f_workorder_type', 'f_repairtype', 'f_service_id', 'f_created_date','f_user_name', 'f_address', 'f_phone', 'f_contact_phone', 'f_remarks','f_single_man','f_attendant','defname','f_date','f_date_come','f_date_leave','f_order_man','f_result_status','f_handlingtype'],
421
+ headData: ['工单类型', '工单编号', '派单时间','客户信息', '联系电话', '故障明细', '工单状态', '派单人', '话务员','接单员',
422
+ '结单时间','到达时间', '离开时间','逾期状态','截止时间','工单结果','派单类型'],
423
+ bodyData: ['f_workorder_type', 'f_service_id', 'f_created_date', 'f_customer_info_show','f_contact_phone', 'f_json',
424
+ 'f_state_show', 'f_single_man','f_attendant','f_order_man','f_date','f_date_come','f_date_leave',
425
+ 'f_overdue_show','f_finish_time_show','f_result_status','f_handlingtype'],
434
426
  searchData: {
435
427
  condition: '1=1'
436
428
  },
437
429
  excelHeaders: {
438
430
  'f_workorder_type': '工单类型',
439
- 'f_repairtype': '报修类型',
440
431
  'f_service_id': '工单编号',
441
432
  'f_created_date': '派单时间',
442
- 'f_user_name': '用户姓名',
443
- 'f_address': '用户地址',
444
- 'f_phone': '用户电话',
445
- 'f_contact_phone': '报修电话',
446
- 'f_remarks': '报修原因',
433
+ 'f_customer_info_show': '客户信息',
434
+ 'f_contact_phone': '联系电话',
435
+ 'f_json': '故障明细',
436
+ 'f_state_show': '工单状态',
447
437
  'f_single_man': '派单人',
448
- 'f_attendant': '受理人',
449
- 'f_order_man': '维修人',
450
- 'defname': '工单状态',
438
+ 'f_attendant': '话务员',
439
+ 'f_order_man': '接单员',
451
440
  'f_date': '结单时间',
452
441
  'f_date_come': '到达时间',
453
442
  'f_date_leave': '离开时间',
443
+ 'f_overdue_show': '逾期状态',
444
+ 'f_finish_time_show': '截止时间',
454
445
  'f_result_status': '工单结果',
455
446
  'f_handlingtype': '派单类型'
456
447
  },
@@ -475,7 +466,6 @@ export default {
475
466
  }
476
467
  },
477
468
  ready () {
478
-
479
469
  this.selfSearch()
480
470
  console.log(this.model)
481
471
  },
@@ -501,7 +491,7 @@ export default {
501
491
  },
502
492
  methods: {
503
493
  d1(row){
504
- return row.f_workorder_type == '报修单'?(row.f_result_status == '已完成'?(this.datejisuan(row.f_finish_date,row.f_date)<0?'已逾期':'未逾期'):(this.datejisuan(row.f_finish_date,'')<0?'已逾期':'未逾期')):''
494
+ return row.f_workorder_type == '报修单'?(row.f_result_status == '已完成'?(this.datejisuan(row.f_finish_date,row.f_date)<0?'已逾期':'未逾期'):(this.datejisuan(row.f_finish_date,this.getNowFormatDate())<0?'已逾期':'未逾期')):''
505
495
  },
506
496
  d2(row){
507
497
  const result = row.f_workorder_type == '报修单'?(row.f_result_status == '已完成'?(this.datejisuan(row.f_finish_date,row.f_date)<0?this.formatDuring(new Date(row.f_date).getTime(),new Date(row.f_finish_date).getTime()):'未逾期'):(this.datejisuan(row.f_finish_date,'')<0?this.formatDuring(new Date().getTime(),new Date(row.f_finish_date).getTime()):'未逾期')):''
@@ -1,12 +1,12 @@
1
- // 分公司特殊组件页面注册
2
- import Vue from "vue";
3
-
4
- //pc和手机分别注册到两个文件中
5
- let specialComp = {
6
- 'work-list': (resolve) => { require(['./pc/WorkList'], resolve) }
7
- }
8
- exports.specialComp = specialComp
9
-
10
-
11
-
12
-
1
+ // 分公司特殊组件页面注册
2
+ import Vue from "vue";
3
+
4
+ //pc和手机分别注册到两个文件中
5
+ let specialComp = {
6
+ 'work-list': (resolve) => { require(['./pc/WorkList'], resolve) }
7
+ }
8
+ exports.specialComp = specialComp
9
+
10
+
11
+
12
+
@@ -0,0 +1,347 @@
1
+ <style scoped>
2
+ .bg {
3
+ background-color: blue;
4
+ height: 1px;
5
+ border: 0;
6
+ }
7
+ .app-row {
8
+ background-color: white;
9
+ padding: 10px 10px 0 10px;
10
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
11
+ }
12
+ .search_input {
13
+ border: 0;
14
+ outline: none;
15
+ }
16
+ .font{
17
+ font: 15px PingFang-SC-Medium;
18
+ color: #666666;
19
+ }
20
+ .input-font{
21
+ font: 15px PingFang-SC-Medium;
22
+ color: #333333;
23
+ }
24
+ .btn-font{
25
+ font:600 16px PingFang-SC-Bold;
26
+ color: #499EDF;
27
+ }
28
+ .btn-color{
29
+ background-color: #FFFFFF;
30
+ border-radius: 10px ;
31
+ border: 1px solid #499EDF;
32
+ }
33
+ .app-text {
34
+ font-size: 12px;
35
+ }
36
+ .panel-self{
37
+ border-radius: 10px;
38
+ border:1px solid #499EDF;
39
+ background-color: #F8F8F8;
40
+ }
41
+ .yybtn-color{
42
+ background-color:#499edf;
43
+ border-radius: 4px ;
44
+ border: 1px solid #499EDF;
45
+ color: #FFFFFF;
46
+ font: 14px PingFang-SC-Bold;
47
+ }
48
+ .qxbtn-color{
49
+ background-color: #FFFFFF;
50
+ border-radius: 4px ;
51
+ color: #499edf;
52
+ font: 14px PingFang-SC-Bold;
53
+ border: 1px solid #499EDF;
54
+ }
55
+
56
+ .button_shrink_top {width: 35px; height: 35px; background-size:100%;background-image: url("../../../../static/newStyle/stretch_top.png")}
57
+ .button_shrink_bottom {width: 35px; height: 35px; background-size:100%;background-image: url("../../../../static/newStyle/stretch_bottom.png")}
58
+ .button_shrink_left {width: 35px; height: 35px; background-size:100%;background-image: url("../../../../static/newStyle/stretch_left.png")}
59
+ .button_shrink_right {width: 35px; height: 35px; background-size:100%;background-image: url("../../../../static/newStyle/stretch_right.png")}
60
+ </style>
61
+
62
+ <template>
63
+ <div style="height: auto;width: 100%">
64
+ <criteria-paged :model="model" v-ref:paged>
65
+ <criteria partial='criteria' @condition-changed='$parent.search' v-ref:cri>
66
+ <div partial>
67
+ <form>
68
+ <div class="row app-row">
69
+ <div class="col-xs-4">
70
+ <img src="../../../assets/用户姓名.png" style="width: 20px;margin-bottom: 5px" alt="">
71
+ <label for="user-name-id" class="font text-left">用户姓名:</label>
72
+ </div>
73
+ <div class="col-xs-8" >
74
+ <input class="search_input input-font" id="user-name-id"
75
+ v-model=model.f_user_name condition="f_user_name like '%{}%'" />
76
+ </div>
77
+ </div>
78
+
79
+ <div class="row app-row" >
80
+ <div class="col-xs-4">
81
+ <img src="../../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
82
+ <label for="user-info-id" class="font text-left">工单编号:</label>
83
+ </div>
84
+ <input id="user-info-id" class="search_input input-font" v-model="model.f_service_id"
85
+ condition="f_service_id like '%{}%'">
86
+ </div>
87
+
88
+ <div class="row app-row">
89
+ <div class="col-xs-4">
90
+ <img src="../../../assets/用户类型.png" style="width: 20px;margin-bottom: 5px" alt="">
91
+ <label for="f_f_address" class="font text-left">用户地址:</label>
92
+ </div>
93
+ <div class="col-xs-8" >
94
+ <input id="f_f_address" class="search_input input-font"
95
+ v-model=model.f_address condition="f_address like '%{}%'" />
96
+ </div>
97
+ </div>
98
+
99
+ <div class="row app-row">
100
+ <div class="col-xs-4">
101
+ <img src="../../../assets/用户类型.png" style="width: 20px;margin-bottom: 5px" alt="">
102
+ <label for="f_f_address" class="font text-left">报修类型:</label>
103
+ </div>
104
+ <div class="col-xs-8" >
105
+ <v-select
106
+ :value.sync="model.f_repairtype"
107
+ v-model="model.f_repairtype"
108
+ :options='$parent.$parent.repairTypeOptions'
109
+ placeholder='请选择'
110
+ :multiple="true"
111
+ condition="f_repairtype in {}"
112
+ ></v-select>
113
+ </div>
114
+ </div>
115
+
116
+ <div class="row text-center" style="margin-top: 20px;">
117
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 25%;" @click="search()">查询</button>
118
+ </div>
119
+ <div style="height:30px;"></div>
120
+ <table style="margin-left: 15px;text-align: center;font-size: 16px" border="1">
121
+ <tr style="background-color: #f2f2f2;height: 20px">
122
+ <td style="width: 15%" v-for="row in $parent.$parent.typeData">{{ row.type }}</td>
123
+ </tr>
124
+ <tr>
125
+ <td style="width: 15%" v-for="row in $parent.$parent.typeData">{{ row.type_num || '0' }}</td>
126
+ </tr>
127
+ </table>
128
+ </form>
129
+ </div>
130
+ </criteria>
131
+ <list :model="model" partial='list' >
132
+ <div partial>
133
+ <div class="auto app-text" style="margin-top: 5px;">
134
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
135
+ <div class="panel-body panel-self" :style="row.f_repairtype === '抢险维修'?'border: 1px solid red;':''">
136
+ <div class="col-xs-6">
137
+ <p class="panel-title col-xs-5 text-left font" style="float: left"><b>工单类型:</b></p>
138
+ <p class="panel-title col-xs-7 text-left input-font" >{{ row.f_workorder_type }}</p>
139
+ </div>
140
+ <div class="col-xs-6">
141
+ <p class="panel-title col-xs-5 text-left font" style="float: left"><b>报修类型:</b></p>
142
+ <p class="panel-title col-xs-7 text-left input-font"><span :style="row.f_repairtype === '抢险维修'?'color:red;':''">{{ row.f_repairtype }}</span>
143
+ </p>
144
+ </div>
145
+ <div class="col-xs-12">
146
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>工单编号:</b></p>
147
+ <p class="panel-title col-xs-5 text-left input-font" style="width: 74%"><span :style="row.f_repairtype === '抢险维修'?'color:red;':''">{{ row.f_service_id }}</span>
148
+ </p>
149
+ </div>
150
+
151
+ <div class="col-xs-12">
152
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>派单时间:</b></p>
153
+ <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{ row.f_created_date }}</p>
154
+ </div>
155
+ <div class="col-xs-12">
156
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>用户名称:</b></p>
157
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_user_name }}
158
+ </p>
159
+ </div>
160
+ <div class="col-xs-12">
161
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>用户地址:</b></p>
162
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_address }} &nbsp;&nbsp; {{row.f_contact_name}} </p>
163
+ </div>
164
+ <div class="col-xs-12">
165
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>联系电话:</b></p>
166
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_contact_phone || '无' }}
167
+ <img src="../../../assets/telphonesend.png" style="width: 12px;"
168
+ @click.stop.prevent='$parent.$parent.$parent.makeAPhoneCall(row.f_contact_phone)'>
169
+ </p>
170
+ </div>
171
+ <div class="col-xs-6">
172
+ <p class="panel-title col-xs-5 text-left font" style="float: left"><b>派单员:</b></p>
173
+ <p class="panel-title col-xs-7 text-left input-font">{{row.f_attendant}} </p>
174
+ </div>
175
+ <div class="col-xs-12">
176
+ <p class="panel-title col-xs-5 text-left font" style="float: left"><b>故障明细:</b></p>
177
+ <p class="panel-title col-xs-7 text-left input-font">{{$parent.$parent.$parent.getfailure(row.failure)}} </p>
178
+ </div>
179
+ <div class="col-xs-12" v-show="row.f_remarks">
180
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>工单备注:</b></p>
181
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_remarks }}</p>
182
+ </div>
183
+ <div class="col-xs-12" v-show="row.f_back_remarks">
184
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>退回原因:</b></p>
185
+ <p class="panel-title col-xs-7 text-left input-font">{{ row.f_back_remarks }}</p>
186
+ </div>
187
+ <div class="col-xs-12">
188
+ <button type="button" name="button" class="btn btn-primary" style="background-color:#499edf;float: right" @click="$parent.$parent.$parent.inspect(row)">接单</button>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </list>
195
+ </criteria-paged>
196
+ </div>
197
+
198
+ </template>
199
+
200
+ <script>
201
+ import Vue from 'vue'
202
+ import { PagedList,HttpResetClass } from 'vue-client'
203
+
204
+ export default {
205
+ title: '在线接单',
206
+ data() {
207
+ return {
208
+ model: new PagedList(`${this.$androidUtil.getProxyUrl()}/rs/sql/phoneOperatorService`, 20, { userid: `"${Vue.user.name}"` }, null, false),
209
+ searchData: {
210
+ condition:{
211
+ condition: '1=1',
212
+ sign:'1=1'
213
+ },
214
+ // userid: Vue.user.ename
215
+ },
216
+ repairTypeOptions: [],
217
+ typeData: [],
218
+ showMessage: true
219
+ }
220
+ },
221
+ ready(){
222
+ this.$refs.paged.$refs.cri.search()
223
+ if (this.$appdata.getSingleValue('取消在线接单二次确定') === '是') {
224
+ this.showMessage = false
225
+ }
226
+ this.repairTypeOptions = this.$appdata.getParam('报修类型')
227
+ },
228
+ mounted(){
229
+
230
+ },
231
+ destroyed(){
232
+
233
+ },
234
+ methods: {
235
+ // 获取现有的报修类型对应的数量
236
+ async initRepairTypeNum(condition) {
237
+ condition += ` and f_filiale_id = '${Vue.user.orgid}' and f_outlets='维修部'`
238
+ const http = new HttpResetClass()
239
+ const res = await http.load('post',`${this.$androidUtil.getProxyUrl()}/rs/sql/getOperatorServiceTypeNum`,{data: {condition: condition}},{resolveMsg: null, rejectMsg: null})
240
+ const typeData = []
241
+ for (let i = 0; i < this.repairTypeOptions.length; i++) {
242
+ let one = {
243
+ type: this.repairTypeOptions[i].label,
244
+ type_num: 0
245
+ }
246
+ for (const data of res.data) {
247
+ if (this.repairTypeOptions[i].label == data.type) {
248
+ one.type_num = data.type_num
249
+ } else {
250
+ continue
251
+ }
252
+ }
253
+ typeData.push(one)
254
+ }
255
+ this.typeData = typeData
256
+ },
257
+ getfailure(val){
258
+ if (val) {
259
+ var result = ''
260
+ // 把字符串转换成故障列表对象
261
+ var array = JSON.parse(val)
262
+ if(Array.isArray(array)) {
263
+ array.forEach((value) => {
264
+ result += value.f_failure_type + ':'
265
+ value.failurecase.forEach((failure) => {
266
+ result += failure + ' '
267
+ })
268
+ result += ';'
269
+ })
270
+ }
271
+ return result
272
+ }
273
+ },
274
+ search (args) {
275
+ //tag
276
+ //tag
277
+ let data = {}
278
+ data.condition = this.$refs.paged.$refs.cri.condition?this.$refs.paged.$refs.cri.condition:'1=1'
279
+ data.condition += ` and f_workorder_type like '%报修单%' and f_outlets='维修部'`;
280
+ data.condition += " "+`and f_filiale_id = '${Vue.user.orgid}'`;
281
+ data.sign = this.$refs.paged.$refs.cri.select ? `defname = '${this.$refs.paged.$refs.cri.select.defname[0]}'`:'1=1'
282
+ this.searchData.condition = data
283
+ this.searchData = Object.assign(this.searchData,args.model)
284
+ this.initRepairTypeNum( args.condition)
285
+ console.log(data)
286
+ return this.model.search(data, args.model)
287
+ },
288
+ inspect(row){
289
+ if (this.showMessage) {
290
+ this.$showMessage(`确定要接编号为${row.f_service_id}的单子吗?`, ['confirm', 'cancel']).then((isconfirm)=>{
291
+ //tag)
292
+ if (isconfirm === 'confirm') {
293
+ let userdata = Object.assign({}, userdata, row)
294
+ userdata.f_advice = '自我接单'
295
+ userdata.serviceacitivity = [] //Vue.user.name
296
+ userdata.serviceacitivity.push({f_reciever: Vue.user.name})
297
+ let data = ''
298
+ data = {
299
+ model: userdata,
300
+ // loginUser: {name: '何文强', ename: 'hwq'}
301
+ loginUser: {name: Vue.user.name, ename: Vue.user.ename}
302
+ }
303
+ let HttpReset = new HttpResetClass()
304
+ HttpReset.load("POST",`${this.$androidUtil.getProxyUrl()}/rs/logic/siteSend`,data).then((res)=>{
305
+ if (res.data.code==300){
306
+ this.$refs.paged.$refs.cri.search()
307
+ return this.$showMessage('没有抢到该单哦!')
308
+ }else {
309
+ this.$refs.paged.$refs.cri.search()
310
+ return this.$showMessage('接单成功!请及时处理。')
311
+ }
312
+ })
313
+ }
314
+ })
315
+ } else {
316
+ let userdata = Object.assign({}, userdata, row)
317
+ userdata.f_advice = '自我接单'
318
+ userdata.serviceacitivity = [] //Vue.user.name
319
+ userdata.serviceacitivity.push({f_reciever: Vue.user.name})
320
+ let data = ''
321
+ data = {
322
+ model: userdata,
323
+ // loginUser: {name: '何文强', ename: 'hwq'}
324
+ loginUser: {name: Vue.user.name, ename: Vue.user.ename}
325
+ }
326
+ let HttpReset = new HttpResetClass()
327
+ HttpReset.load("POST",`${this.$androidUtil.getProxyUrl()}/rs/logic/siteSend`,data).then((res)=>{
328
+ if (res.data.code==300){
329
+ this.$refs.paged.$refs.cri.search()
330
+ return this.$showMessage('没有抢到该单哦!')
331
+ }else {
332
+ this.$refs.paged.$refs.cri.search()
333
+ return this.$showMessage('接单成功!请及时处理。')
334
+ }
335
+ })
336
+ }
337
+ },
338
+ makeAPhoneCall(phoneNumber) {
339
+ this.$androidUtil.makeAPhoneCall(phoneNumber)
340
+ },
341
+ },
342
+ computed:{
343
+
344
+ }
345
+
346
+ }
347
+ </script>