telephone-clients 3.0.103-9 → 3.0.103-90

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 (98) hide show
  1. package/package.json +3 -3
  2. package/src/App.vue +5 -3
  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/pc/NewRepairPaper.vue +2 -2
  8. package/src/components/pc/RepairsWork.vue +19 -0
  9. package/src/components/pc/RoleSelectorDep.vue +158 -0
  10. package/src/components/pc/TelFindUser.vue +1 -1
  11. package/src/components/pc/TelListener.vue +47 -16
  12. package/src/components/pc/WorkCenter.vue +1 -1
  13. package/src/components/pc/WorkCenterList.vue +1 -1
  14. package/src/components/pc/WorkHistory.vue +14 -2
  15. package/src/components/pc/WorkListAllNew.vue +1 -1
  16. package/src/components/pc/WorkListNew.vue +9 -3
  17. package/src/components/telreport/RepairsDetailsReport.vue +98 -0
  18. package/src/components/telreport/TableFaultReport.vue +96 -0
  19. package/src/components/telreport/Traffic.vue +3 -3
  20. package/src/components/temp/ChangemeterInfo.vue +4 -16
  21. package/src/components/temp/DeviceInfo.vue +2 -4
  22. package/src/components/temp/InfoTable.vue +5 -2
  23. package/src/components/temp/OldRepairList.vue +100 -0
  24. package/src/components/temp/RepairList.vue +2 -2
  25. package/src/components/weinan/RecordList.vue +2 -2
  26. package/src/components/weinan/SiteSend.vue +2 -2
  27. package/src/components/weinan/SiteSendWeixiu.vue +7 -16
  28. package/src/components/weinan/StandWorkWeixiu.vue +1 -1
  29. package/src/components/weinan/WorkList.vue +73 -0
  30. package/src/components/weinan/WorkListAll.vue +90 -14
  31. package/src/components/weinan/WorkListWeixiu.vue +1 -1
  32. package/src/components/workorder/CompletedRepair.vue +269 -183
  33. package/src/components/workorder/FaultAll.vue +9 -9
  34. package/src/components/workorder/PhoneUpDetail.vue +3 -0
  35. package/src/components/workorder/RepairDetails.vue +12 -2
  36. package/src/components/workorder/RepairFirstV.vue +1 -1
  37. package/src/filiale/kelai/android/AppTakePic.vue +143 -0
  38. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -0
  39. package/src/filiale/kelai/pc/WorkCenterList.vue +20 -3
  40. package/src/filiale/kelai/pc/WorkListAllNew.vue +47 -9
  41. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -0
  42. package/src/filiale/kelai/telephone.js +9 -8
  43. package/src/filiale/kelai/telephoneAndroid.js +3 -1
  44. package/src/filiale/qianneng/android/FaultAll.vue +1 -1
  45. package/src/filiale/qianneng/android/TemporarySingle.vue +25 -0
  46. package/src/filiale/qianneng/pc/MaterialDetailed.vue +10 -0
  47. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -0
  48. package/src/filiale/qianneng/pc/NewRepairPaper.vue +4 -4
  49. package/src/filiale/qianneng/pc/RepairsWork.vue +12 -2
  50. package/src/filiale/qianneng/pc/WorkHistory.vue +2 -2
  51. package/src/filiale/qianneng/pc/WorkListAllNew.vue +53 -5
  52. package/src/filiale/qianneng/pc/changetable.vue +273 -0
  53. package/src/filiale/qianneng/telephone.js +2 -0
  54. package/src/filiale/rizhao/pc/DispatchMan.vue +3 -3
  55. package/src/filiale/rizhao/pc/DispatchWork.vue +3 -3
  56. package/src/filiale/rizhao/pc/Traffic.vue +3 -3
  57. package/src/filiale/rizhao/pc/WorkListAllNew.vue +8 -3
  58. package/src/filiale/rongcheng/CliWorkListAll.vue +442 -407
  59. package/src/filiale/rongcheng/FaultAll.vue +3 -3
  60. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -0
  61. package/src/filiale/rongcheng/telephoneAndroid.js +3 -1
  62. package/src/filiale/shanxian/android/RepairFirstV.vue +5 -1
  63. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -0
  64. package/src/filiale/shanxian/telephone.js +2 -1
  65. package/src/filiale/shexian/android/AddMyTask.vue +7 -0
  66. package/src/filiale/shexian/android/CompletedRepair.vue +280 -0
  67. package/src/filiale/shexian/android/FaultAll.vue +16 -0
  68. package/src/filiale/shexian/android/Outlay.vue +182 -165
  69. package/src/filiale/shexian/android/RepairFirstV.vue +16 -2
  70. package/src/filiale/shexian/android/RepairInfo.vue +1 -0
  71. package/src/filiale/shexian/pc/TelByOrderManCount.vue +10 -2
  72. package/src/filiale/shexian/pc/WorkList.vue +25 -1
  73. package/src/filiale/shexian/pc/WorkListAllNew.vue +21 -15
  74. package/src/filiale/shexian/telephoneAndroid.js +3 -0
  75. package/src/filiale/tongchuan/android/TicketDetails.vue +3 -0
  76. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +2 -2
  77. package/src/filiale/wenxi/android/FailureShow.vue +61 -0
  78. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +1047 -0
  79. package/src/filiale/wenxi/android/RepairInfo.vue +158 -74
  80. package/src/filiale/wenxi/android/RepairOrderV.vue +1 -9
  81. package/src/filiale/wenxi/android/RepairUserInfo.vue +532 -0
  82. package/src/filiale/wenxi/android/ZHihuanFirst.vue +502 -0
  83. package/src/filiale/wenxi/pc/DistributeWork.vue +107 -121
  84. package/src/filiale/wenxi/pc/FailureEdit.vue +1 -1
  85. package/src/filiale/wenxi/pc/GasWork.vue +747 -0
  86. package/src/filiale/wenxi/pc/MetereadInfo.vue +82 -0
  87. package/src/filiale/wenxi/pc/RepairsWork.vue +15 -0
  88. package/src/filiale/wenxi/pc/TelFindUser.vue +213 -116
  89. package/src/filiale/wenxi/pc/WorkListAll.vue +5 -2
  90. package/src/filiale/wenxi/telephone.js +4 -6
  91. package/src/filiale/wenxi/telephoneAndroid.js +4 -1
  92. package/src/filiale/yuncheng/pc/TelFindUser.vue +302 -0
  93. package/src/filiale/yuncheng/telephone.js +12 -0
  94. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -0
  95. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +241 -214
  96. package/src/filiale/zhongsheng/telephoneAndroid.js +2 -1
  97. package/src/telephone.js +10 -0
  98. package/src/weinan.js +6 -0
@@ -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
 
@@ -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,6 +114,18 @@
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>
@@ -276,7 +288,7 @@
276
288
  <div class="col-sm-12 form-input-group" >
277
289
  <label class="font_normal_body" style="width: 10%" v-if="rowOne.f_workorder_type === '咨询单'">咨询内容</label>
278
290
  <label class="font_normal_body" style="width: 10%" v-if="rowOne.f_workorder_type === '投诉单'">投诉内容</label>
279
- <textarea name="name" rows="3" v-model="rowOne.f_content"
291
+ <textarea name="name" rows="3" v-model="rowOne.f_content || service.f_content"
280
292
  class="form-control ver-textarea" id="f_content" name="f_content" readonly="readonly"></textarea>
281
293
  </div>
282
294
  <div class="col-sm-4 form-group form-input-group" >
@@ -301,7 +313,7 @@
301
313
  </div>
302
314
  <div class="col-sm-12 form-input-group">
303
315
  <label class="font_normal_body" style="width: 10%">处理结果</label>
304
- <textarea name="name" rows="3" v-model="complanResult.f_complaint_results"
316
+ <textarea name="name" rows="3" v-model="complanResult.f_complaint_results || '已处理'"
305
317
  class="form-control ver-textarea" readonly="readonly"></textarea>
306
318
  </div>
307
319
  </div>
@@ -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%">
@@ -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 = []
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <div id='app' class="basic-main" style="height: 100%">
3
+ <criteria-paged :model="model" :pager='false' v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='$parent.search' class="search_area" v-ref:criteria>
5
+ <div novalidate class="form-inline auto" partial>
6
+ <div class="row">
7
+ <div class="col-sm-2 form-group">
8
+ <label for="startDate" class="font_normal_body">开始日期:</label>
9
+ <datepicker id="startDate" placeholder="开始日期"
10
+ v-model="model.startDate"
11
+ :value.sync="model.startDate"
12
+ style="width: 60%;"
13
+ :disabled-days-of-Week="[]"
14
+ :format="'yyyy-MM-dd'"
15
+ :show-reset-button="reset">
16
+ </datepicker>
17
+ </div>
18
+ <div class="col-sm-2 form-group">
19
+ <label for="endDate" class="font_normal_body">结束日期:</label>
20
+ <datepicker id="endDate" placeholder="结束日期"
21
+ v-model="model.endDate"
22
+ :value.sync="model.endDate"
23
+ :disabled-days-of-Week="[]"
24
+ style="width: 60%;"
25
+ :format="'yyyy-MM-dd'"
26
+ :show-reset-button="reset">
27
+ </datepicker>
28
+ </div>
29
+ <div class="col-sm-3 form-group" style="margin-top: 8px">
30
+ <button class="button_search button_spacing" @click="search()">查询</button>
31
+ <report-print class="button_export button_spacing" style="width:28%" ></report-print>
32
+ <report-excel class="button_export button_spacing" style="width:28%" ></report-excel>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </criteria>
37
+ <div partial='list' class="list_area" style="overflow-y: scroll;position:relative">
38
+ <table class='tableprint' style="margin: 0px auto">
39
+ <thead>
40
+ <tr>
41
+ <th colspan='5' style="font-weight: normal; text-align: left;">
42
+ <h3 style="text-align: center">维修报表统计</h3>
43
+ </th>
44
+ </tr>
45
+ </thead>
46
+ <tr>
47
+ <th colspan='5' style="font-weight: normal;">
48
+ {{{ model.data.substring(26,model.data.length-8) }}}
49
+ </th>
50
+ </tr>
51
+ </table>
52
+ </div>
53
+ </criteria-paged>
54
+ </div>
55
+
56
+ </template>
57
+
58
+ <script>
59
+ import {DataModel} from 'vue-client'
60
+
61
+ export default {
62
+ title: '维修报表',
63
+ data() {
64
+ let model = new DataModel('rs/telephone/report/repairsDetailsReport')
65
+ return {
66
+ filialeNameStr: '',
67
+ filialeCodeStr: '',
68
+ userid: this.$login.f.id,
69
+ source: `tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() == $organization$))`,
70
+ model: model
71
+ }
72
+ },
73
+ methods: {
74
+ getRes(obj) {
75
+ this.model.f_filialeid = this.$login.convertToIn(obj.resids);
76
+ },
77
+ search(args){
78
+ let condition = ' and 1 = 1 '
79
+ if (args.model.startDate){
80
+ condition += ` and ts1.f_date_leave >= '${args.model.startDate} 00:00:00' `
81
+ }
82
+ if (args.model.endDate){
83
+ condition += ` and ts1.f_date_leave <= '${args.model.endDate} 23:59:59' `
84
+ }
85
+ this.model.search(condition,args.model)
86
+ }
87
+ },
88
+ ready() {
89
+ },
90
+ computed: {
91
+ }
92
+ }
93
+ </script>
94
+ <style>
95
+ th>tr>td {
96
+ width: 200px;
97
+ }
98
+ </style>
@@ -0,0 +1,96 @@
1
+ <template>
2
+ <div id='app' class="basic-main" style="height: 100%">
3
+ <criteria-paged :model="model" :pager='false' v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='$parent.search' class="search_area" v-ref:criteria>
5
+ <div novalidate class="form-inline auto" partial>
6
+ <div class="row">
7
+ <div class="col-sm-2 form-group">
8
+ <label for="startDate" class="font_normal_body">开始日期:</label>
9
+ <datepicker id="startDate" placeholder="开始日期"
10
+ v-model="model.startDate"
11
+ :value.sync="model.startDate"
12
+ style="width: 60%;"
13
+ :disabled-days-of-Week="[]"
14
+ :format="'yyyy-MM-dd'"
15
+ :show-reset-button="reset">
16
+ </datepicker>
17
+ </div>
18
+ <div class="col-sm-2 form-group">
19
+ <label for="endDate" class="font_normal_body">结束日期:</label>
20
+ <datepicker id="endDate" placeholder="结束日期"
21
+ v-model="model.endDate"
22
+ :value.sync="model.endDate"
23
+ :disabled-days-of-Week="[]"
24
+ style="width: 60%;"
25
+ :format="'yyyy-MM-dd'"
26
+ :show-reset-button="reset">
27
+ </datepicker>
28
+ </div>
29
+ <div class="col-sm-3 form-group" style="margin-top: 8px">
30
+ <button class="button_search button_spacing" @click="search()">查询</button>
31
+ <report-print class="button_export button_spacing" style="width:28%" ></report-print>
32
+ <report-excel class="button_export button_spacing" style="width:28%" ></report-excel>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </criteria>
37
+ <div partial='list' class="list_area" style="overflow-y: scroll">
38
+ <table class='tableprint' style="margin: 0px auto">
39
+ <thead>
40
+ <tr>
41
+ <th colspan='5' style="font-weight: normal; text-align: left;">
42
+ <h3 style="text-align: center">表具故障统计</h3>
43
+ </th>
44
+ </tr>
45
+ </thead>
46
+ <tr>
47
+ <th colspan='5' style="font-weight: normal;">
48
+ {{{ model.data.substring(26,model.data.length-8) }}}
49
+ </th>
50
+ </tr>
51
+ </table>
52
+ </div>
53
+ </criteria-paged>
54
+ </div>
55
+
56
+ </template>
57
+
58
+ <script>
59
+ import {DataModel} from 'vue-client'
60
+
61
+ export default {
62
+ title: '表具故障统计',
63
+ data() {
64
+ let model = new DataModel('rs/telephone/report/tableFaultReport')
65
+ return {
66
+ filialeNameStr: '',
67
+ filialeCodeStr: '',
68
+ userid: this.$login.f.id,
69
+ source: `tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() == $organization$))`,
70
+ model: model
71
+ }
72
+ },
73
+ methods: {
74
+ getRes(obj) {
75
+ this.model.f_filialeid = this.$login.convertToIn(obj.resids);
76
+ },
77
+ search(args){
78
+ let condition = ' 1 = 1 '
79
+ if (args.model.startDate){
80
+ condition += ` and tf.f_failure_date >= '${args.model.startDate} 00:00:00' `
81
+ }
82
+ if (args.model.endDate){
83
+ condition += ` and tf.f_failure_date <= '${args.model.endDate} 23:59:59' `
84
+ }
85
+ this.model.search(condition,args.model)
86
+ }
87
+ },
88
+ ready() {
89
+ },
90
+ computed: {
91
+ selected() {
92
+ return this.$refs.grid.selected
93
+ },
94
+ }
95
+ }
96
+ </script>
@@ -24,14 +24,14 @@
24
24
  <!-- <input type="text" class="form-control" v-model="model.f_single_man"-->
25
25
  <!-- placeholder='操作员'>-->
26
26
  <button class="btn btn-default" @click="search()">查询</button>
27
- <export-excel class="button_search button_spacing"
27
+ <export-excel-tel class="button_search button_spacing"
28
28
  :data="{startDate: this.model.startDate,endDate: this.model.endDate}"
29
29
  :field="{'cetime':'时段','hwzl':'话务总量','weijie':'未接数',
30
30
  'yijie':'已接数','jtl':'接听率(%)',
31
31
  'zthsc':'总通话时长(分)'}"
32
32
  style="margin-top: 20px"
33
- sqlurl="rs/logic/exportfile" sql-name="getTraffic" template-name='话务量报表导出'
34
- :choose-col="true"></export-excel>
33
+ sqlurl="rs/logic/telephoneExport" sql-name="getTraffic" template-name='话务量报表导出'
34
+ :choose-col="true"></export-excel-tel>
35
35
  </div>
36
36
  </div>
37
37
  </criteria>
@@ -7,8 +7,6 @@
7
7
  class="list_area table_sy">
8
8
  <template partial='head'>
9
9
  <tr>
10
- <!--<th><nobr>用户编号</nobr></th>-->
11
- <!--<th><nobr>用户姓名</nobr></th>-->
12
10
  <th><nobr>新表号</nobr></th>
13
11
  <th><nobr>旧表号</nobr></th>
14
12
  <th><nobr>补气量</nobr></th>
@@ -18,23 +16,13 @@
18
16
  </tr>
19
17
  </template>
20
18
  <template partial='body'>
21
- <!--<td><nobr>{{row.f_userinfo_id}}</nobr></td>-->
22
- <!--<td><nobr>{{row.f_user_name}}</nobr></td>-->
23
- <td><nobr>{{row.f_newmeternumber}}</nobr></td>
24
19
  <td><nobr>{{row.f_meternumber}}</nobr></td>
25
- <td><nobr>{{row.f_newremanent_gas}}</nobr></td>
26
- <td><nobr>{{row.f_changemeter_type}}</nobr></td>
20
+ <td><nobr>{{row.f_meternumber_old}}</nobr></td>
21
+ <td><nobr>{{row.f_remanent_gas}}</nobr></td>
22
+ <td><nobr>{{row.f_type}}</nobr></td>
27
23
  <th><nobr>{{row.f_operator}}</nobr></th>
28
24
  <td><nobr>{{row.f_operate_date}}</nobr></td>
29
25
  </template>
30
- <!--<template partial='foot'>
31
- <td style="text-align:center">汇总</td>
32
- <td></td>
33
- <td></td>
34
- <td >累计购气量:{{model.sums.f_pregas}}</td>
35
- <td >累计金额:{{model.sums.f_totalcost}}</td>
36
- <td >共{{model.count}}条</td>
37
- </template>-->
38
26
  </data-grid>
39
27
  </criteria-paged>
40
28
  </div>
@@ -46,7 +34,7 @@
46
34
  title: '换表记录',
47
35
  data () {
48
36
  return {
49
- model: new PagedList((this.user && this.user.isphone) ? '${this.$androidUtil.getProxyUrl()}/' : '' + 'rs/sql/tel_singleTable_OrderBy', 5, {items: '"*"', tablename: '"t_changemeter"', orderitem: '"f_operate_date desc"'}),
37
+ model: new PagedList((this.user && this.user.isphone) ? '${this.$androidUtil.getProxyUrl()}/' : '' + 'rs/sql/tel_singleTable_OrderBy', 5, {items: '"*"', tablename: '"t_changetables"', orderitem: '"f_operate_date desc"'}),
50
38
  show: false,
51
39
  row: Object
52
40
  }
@@ -7,7 +7,6 @@
7
7
  class="list_area table_sy">
8
8
  <template partial='head'>
9
9
  <tr>
10
- <!--<th><nobr>用户编号</nobr></th>-->
11
10
  <th><nobr>设备类型</nobr></th>
12
11
  <th><nobr>设备品牌</nobr></th>
13
12
  <th><nobr>设备数量</nobr></th>
@@ -16,11 +15,10 @@
16
15
  </tr>
17
16
  </template>
18
17
  <template partial='body'>
19
- <!--<td><nobr>{{row.f_user_id}}</nobr></td>-->
20
18
  <td><nobr>{{row.f_devices_type}}</nobr></td>
21
19
  <td><nobr>{{row.f_brand}}</nobr></td>
22
20
  <td><nobr>{{row.f_devices_num}}</nobr></td>
23
- <td><nobr>{{row.f_devices_state}}</nobr></td>
21
+ <td><nobr>{{row.f_userinfodevices_state}}</nobr></td>
24
22
  <td><nobr>{{row.f_operate_date}}</nobr></td>
25
23
  </template>
26
24
  </data-grid>
@@ -32,7 +30,7 @@
32
30
  import { PagedList } from 'vue-client'
33
31
  import co from 'co'
34
32
  let getmodelGen = function * (self, val) {
35
- yield self.model.search((`f_userinfo_id = '${self.user.f_userinfo_id}'`))
33
+ yield self.model.search((`f_user_id = '${self.user.f_user_id}'`))
36
34
  .then(() => {
37
35
  // self.getdata()
38
36
  })