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.
- package/package.json +3 -3
- package/src/App.vue +54 -56
- package/src/assets//345/210/240/351/231/244.png +0 -0
- package/src/components/Util/RightTreeSafe.vue +2 -2
- package/src/components/Util/RightTreeSafeDep.vue +350 -0
- package/src/components/android/AddMyTask.vue +7 -0
- package/src/components/guoxin/Console.vue +9 -0
- package/src/components/guoxin/VisitInfo.vue +0 -11
- package/src/components/pc/NewRepairPaper.vue +370 -370
- package/src/components/pc/RepairsWork.vue +23 -2
- package/src/components/pc/RoleSelectorDep.vue +158 -0
- package/src/components/pc/TelFindUser.vue +1 -1
- package/src/components/pc/TelListener.vue +47 -16
- package/src/components/pc/VisitInfo.vue +44 -17
- package/src/components/pc/WorkCenter.vue +1 -1
- package/src/components/pc/WorkCenterList.vue +1 -1
- package/src/components/pc/WorkHistory.vue +20 -2
- package/src/components/pc/WorkListAll.vue +1 -1
- package/src/components/pc/WorkListAllNew.vue +10 -3
- package/src/components/pc/WorkListNew.vue +9 -3
- package/src/components/pc/olddata/OldWorkList.vue +193 -0
- package/src/components/telreport/RepairsDetailsReport.vue +98 -0
- package/src/components/telreport/TableFaultReport.vue +96 -0
- package/src/components/telreport/Traffic.vue +3 -3
- package/src/components/telreport/TrafficClassificationReport.vue +134 -0
- package/src/components/temp/ChangemeterInfo.vue +75 -87
- package/src/components/temp/DeviceInfo.vue +80 -82
- package/src/components/temp/HandplanInfo.vue +14 -3
- package/src/components/temp/InfoTable.vue +5 -2
- package/src/components/temp/MetereadInfo.vue +1 -4
- package/src/components/temp/OldRepairList.vue +100 -0
- package/src/components/temp/RepairList.vue +2 -2
- package/src/components/weinan/Console.vue +1 -1
- package/src/components/weinan/RecordList.vue +2 -2
- package/src/components/weinan/SiteSend.vue +2 -2
- package/src/components/weinan/SiteSendWeixiu.vue +7 -16
- package/src/components/weinan/StandWorkWeixiu.vue +1 -1
- package/src/components/weinan/WorkList.vue +73 -0
- package/src/components/weinan/WorkListAll.vue +90 -14
- package/src/components/weinan/WorkListWeixiu.vue +1 -1
- package/src/components/workorder/CompletedRepair.vue +269 -183
- package/src/components/workorder/FaultAll.vue +826 -826
- package/src/components/workorder/PhoneStandWork.vue +354 -354
- package/src/components/workorder/PhoneUpDetail.vue +3 -0
- package/src/components/workorder/RepairDetails.vue +12 -2
- package/src/components/workorder/RepairFirstV.vue +1 -1
- package/src/components/workorder/RepairOrderV.vue +1446 -1446
- package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
- package/src/filiale/furuike/pc/Seekwork.vue +352 -352
- package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
- package/src/filiale/hanzhong/telephone.js +1 -1
- package/src/filiale/kelai/android/AppTakePic.vue +143 -0
- package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -0
- package/src/filiale/kelai/pc/WorkCenterList.vue +20 -3
- package/src/filiale/kelai/pc/WorkListAllNew.vue +47 -9
- package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -0
- package/src/filiale/kelai/telephone.js +9 -8
- package/src/filiale/kelai/telephoneAndroid.js +3 -1
- package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
- package/src/filiale/qianneng/android/FaultAll.vue +883 -883
- package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
- package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
- package/src/filiale/qianneng/android/TemporarySingle.vue +25 -0
- package/src/filiale/qianneng/android/chargesList.vue +161 -161
- package/src/filiale/qianneng/pc/MaterialDetailed.vue +15 -3
- package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -0
- package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
- package/src/filiale/qianneng/pc/RepairsWork.vue +992 -982
- package/src/filiale/qianneng/pc/WorkHistory.vue +2 -2
- package/src/filiale/qianneng/pc/WorkListAllNew.vue +53 -5
- package/src/filiale/qianneng/pc/changetable.vue +273 -0
- package/src/filiale/qianneng/telephone.js +2 -0
- package/src/filiale/rizhao/pc/DispatchMan.vue +3 -3
- package/src/filiale/rizhao/pc/DispatchWork.vue +3 -3
- package/src/filiale/rizhao/pc/Traffic.vue +3 -3
- package/src/filiale/rizhao/pc/WorkListAllNew.vue +8 -3
- package/src/filiale/rizhao/telephone.js +1 -1
- package/src/filiale/rongcheng/CliWorkListAll.vue +442 -407
- package/src/filiale/rongcheng/FaultAll.vue +3 -3
- package/src/filiale/rongcheng/RepairOrderV.vue +1445 -0
- package/src/filiale/rongcheng/telephoneAndroid.js +3 -1
- package/src/filiale/shanxian/android/RepairFirstV.vue +5 -1
- package/src/filiale/shanxian/pc/RepairsWork.vue +826 -0
- package/src/filiale/shanxian/pc/WorkList.vue +1 -1
- package/src/filiale/shanxian/telephone.js +13 -12
- package/src/filiale/shexian/android/AddMyTask.vue +7 -0
- package/src/filiale/shexian/android/CompletedRepair.vue +280 -0
- package/src/filiale/shexian/android/FaultAll.vue +847 -0
- package/src/filiale/shexian/android/Outlay.vue +182 -165
- package/src/filiale/shexian/android/RepairFirstV.vue +16 -2
- package/src/filiale/shexian/android/RepairInfo.vue +1 -0
- package/src/filiale/shexian/pc/QueryVisitHistory.vue +237 -0
- package/src/filiale/shexian/pc/TelAgentVoiceReport.vue +271 -0
- package/src/filiale/shexian/pc/TelByOrderManCount.vue +10 -2
- package/src/filiale/shexian/pc/WorkList.vue +782 -740
- package/src/filiale/shexian/pc/WorkListAllNew.vue +75 -67
- package/src/filiale/shexian/telephone.js +21 -18
- package/src/filiale/shexian/telephoneAndroid.js +32 -26
- package/src/filiale/tongchuan/android/RepairDetails.vue +623 -0
- package/src/filiale/tongchuan/android/TicketDetails.vue +3 -0
- package/src/filiale/tongchuan/pc/UserWork.vue +805 -805
- package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +2 -2
- package/src/filiale/tongchuan/telephone.js +52 -52
- package/src/filiale/tongchuan/telephoneAndroid.js +23 -22
- package/src/filiale/wenxi/android/FailureShow.vue +61 -0
- package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +1053 -0
- package/src/filiale/wenxi/android/RepairInfo.vue +158 -74
- package/src/filiale/wenxi/android/RepairOrderV.vue +805 -1419
- package/src/filiale/wenxi/android/RepairUserInfo.vue +532 -0
- package/src/filiale/wenxi/android/ZHihuanFirst.vue +502 -0
- package/src/filiale/wenxi/pc/DistributeWork.vue +107 -121
- package/src/filiale/wenxi/pc/FailureEdit.vue +1 -1
- package/src/filiale/wenxi/pc/GasWork.vue +747 -0
- package/src/filiale/wenxi/pc/MetereadInfo.vue +82 -0
- package/src/filiale/wenxi/pc/RepairsWork.vue +15 -0
- package/src/filiale/wenxi/pc/TelFindUser.vue +213 -116
- package/src/filiale/wenxi/pc/WorkListAll.vue +348 -297
- package/src/filiale/wenxi/telephone.js +4 -5
- package/src/filiale/wenxi/telephoneAndroid.js +4 -1
- package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
- package/src/filiale/wuhai/telephone.js +1 -1
- package/src/filiale/yuncheng/pc/TelFindUser.vue +302 -0
- package/src/filiale/yuncheng/telephone.js +12 -0
- package/src/filiale/zhongsheng/android/FaultAll.vue +741 -0
- package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
- package/src/filiale/zhongsheng/android/RepairUserInfo.vue +241 -214
- package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
- package/src/filiale/zhongsheng/telephone.js +23 -23
- package/src/filiale/zhongsheng/telephoneAndroid.js +2 -1
- package/src/main.js +1 -1
- package/src/telephone.js +17 -1
- 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
|
-
|
|
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
|
|
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
|
-
|
|
111
|
-
|
|
131
|
+
listen(val){
|
|
132
|
+
let valaChannel = val.aChannel + ''
|
|
112
133
|
let http1 = new HttpResetClass()
|
|
113
|
-
http1.load('POST', data.voiceUrl, {aId:
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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
|
-
|
|
256
|
+
this.$showAlert(`${e.data},呼出失败`, 'danger', 0)
|
|
257
|
+
this.callContent = '呼出失败'
|
|
225
258
|
}
|
|
226
259
|
}else{
|
|
227
|
-
|
|
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 === '结案'"
|
|
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
|
|
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="
|
|
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 =
|
|
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 = []
|