manage-client 3.2.262 → 3.2.264

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 (39) hide show
  1. package/build/dev-server.js +180 -180
  2. package/package.json +1 -1
  3. package/src/components/SellReport/ManageBusSummary.vue +2 -0
  4. package/src/filiale/ningjin/CallReport/CallReportMainPage.vue +146 -0
  5. package/src/filiale/ningjin/CallReport/DropDownBox.vue +64 -0
  6. package/src/filiale/ningjin/CallReport/IncomingTelegram.vue +187 -0
  7. package/src/filiale/ningjin/CallReport/PercentageComplete.vue +413 -0
  8. package/src/filiale/ningjin/CallReport/PercentageCompleteEchart.vue +150 -0
  9. package/src/filiale/ningjin/CallReport/RateBottom.vue +143 -0
  10. package/src/filiale/ningjin/CallReport/RateTop.vue +144 -0
  11. package/src/filiale/ningjin/CallReport/ScrollContent.vue +143 -0
  12. package/src/filiale/ningjin/CallReport/ServiceStatus.vue +371 -0
  13. package/src/filiale/ningjin/CallReport/SwiperTools.vue +145 -0
  14. package/src/filiale/ningjin/CallReport/SwiperTools2.vue +176 -0
  15. package/src/filiale/ningjin/CallReport/Time.vue +100 -0
  16. package/src/filiale/ningjin/CallReport/Userinfo.vue +69 -0
  17. package/src/filiale/ningjin/CallReport/WeatherData.vue +108 -0
  18. package/src/filiale/ningjin/CallReport/WorkOrderPage.vue +260 -0
  19. package/src/filiale/ningjin/FillCardQuery.vue +581 -0
  20. package/src/filiale/ningjin/GasStatistics.vue +39 -20
  21. package/src/filiale/ningjin/LostContactAnalysisList.vue +676 -0
  22. package/src/filiale/ningjin/ManageBusSummaryPeng.vue +241 -0
  23. package/src/filiale/ningjin/ManageHandSellMoney.vue +247 -0
  24. package/src/filiale/ningjin/ManageSellType.vue +284 -0
  25. package/src/filiale/ningjin/MeterExceptionList.vue +54 -9
  26. package/src/filiale/ningjin/UserLostContactAnalysis.vue +592 -0
  27. package/src/filiale/ningjin/config/exportConfig.js +35 -34
  28. package/src/filiale/ningjin/reportManage.js +6 -1
  29. package/src/filiale/ningjin/sale.js +26 -0
  30. package/src/filiale/ningjin/webmeterManage.js +5 -1
  31. package/src/filiale/wenxi/ChargeQuery.vue +26 -112
  32. package/src/filiale/wenxi/FmyGasDeviceQuery.vue +144 -17
  33. package/src/filiale/wenxi/GasDeviceQuery.vue +975 -0
  34. package/src/filiale/wenxi/RecordInfoQuery.vue +1 -1
  35. package/src/filiale/wenxi/sale.js +2 -0
  36. package/src/filiale/yuansheng/DayReportList.vue +15 -1
  37. package/node_modules.zip +0 -0
  38. package/static/newStyle/new_stretch_bottom.png +0 -0
  39. package/static/newStyle/new_stretch_top.png +0 -0
@@ -0,0 +1,371 @@
1
+ <template>
2
+ <!-- 客服状态组件 -->
3
+ <div class="service-status">
4
+ <div v-for="serviceData in service" >
5
+ <div v-if="serviceData.aState!=='未登录'">
6
+ <i class="service1"></i>
7
+ <span>{{ serviceData.aName || '未登录' }}</span>
8
+ </div>
9
+ <div v-if="serviceData.aState==='未登录'">
10
+ <i class="service2"></i>
11
+ <span>{{ serviceData.aName || '未登录' }}</span>
12
+ </div>
13
+ <div v-if="serviceData.aState==='正在振铃'"><i class="status1"></i></div>
14
+ <div v-if="['忙','正在保存', '回访通话','通话中'].indexOf(serviceData.aState) >= 0"><i class="status2"></i></div>
15
+ <div v-if="serviceData.aState==='空闲'"><i class="status3"></i></div>
16
+ <div v-if="serviceData.aState==='未登录'"><i class="status4"></i></div>
17
+ </div>
18
+ </div>
19
+ <div class="status-count">
20
+ <div>
21
+ <i class="answer"></i>
22
+ <span class="answer-text">接听中</span>
23
+ <span class="answer-num">{{ data.answerNum }}</span>
24
+ </div>
25
+ <div>
26
+ <i class="await"></i>
27
+ <span class="await-text">闲置</span>
28
+ <span class="await-num">{{ data.awaitNum }}</span>
29
+ </div>
30
+ <div>
31
+ <i class="ring"></i>
32
+ <span class="ring-text">响铃中</span>
33
+ <span class="ring-num">{{ data.ringNum }}</span>
34
+ </div>
35
+ <div>
36
+ <i class="off-line"></i>
37
+ <span class="off-line-text">离线</span>
38
+ <span class="off-line-num">{{ data.offLineNum }}</span>
39
+ </div>
40
+
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import {HttpResetClass} from "vue-client";
46
+ import * as Util from "../../../Util";
47
+ import axios from "axios";
48
+
49
+ export default {
50
+
51
+ name: "ServiceStatus",
52
+ components:{
53
+
54
+ },
55
+ data(){
56
+ return{
57
+ data:{
58
+ answerNum:0,
59
+ awaitNum:0,
60
+ ringNum:0,
61
+ offLineNum:0,
62
+
63
+ },
64
+ service:[],
65
+
66
+
67
+ }
68
+ },
69
+
70
+ ready(){
71
+ this.getRecordwork()
72
+ setInterval(() => {
73
+ this.getRecordwork()
74
+ }, 2000)
75
+ },
76
+ methods:{
77
+ getRecordwork(){
78
+ let http = new HttpResetClass()
79
+ http.load('GET', '/Dual/GetALLAttendant', {}, {resolveMsg: null, rejectMsg: null}).then((res) => {
80
+ //tag
81
+ console.log("getRecordwork"+JSON.stringify(res.data))
82
+ this.data.answerNum = 0
83
+ this.data.awaitNum = 0
84
+ this.data.ringNum = 0
85
+ this.data.offLineNum = 0
86
+ this.service=res.data.packets
87
+ console.log('this.service='+JSON.stringify(this.service));
88
+ for (const serviceData of this.service) {
89
+ switch (serviceData.aState) {
90
+ case '未登录':
91
+ this.data.offLineNum ++
92
+ break
93
+
94
+ case '忙':
95
+ // case '回访通话':
96
+ case '通话中':
97
+ this.data.answerNum ++
98
+ break
99
+ case '空闲':
100
+ this.data.awaitNum ++
101
+ break
102
+ case '正在振铃':
103
+ case '正在保存':
104
+ this.data.ringNum ++
105
+ break
106
+ }
107
+ }
108
+ })
109
+ // axios.get('/Dual/GetALLAttendant')
110
+ // .then((response) => {
111
+ // console.log("getRecordwork"+JSON.stringify(response.data))
112
+ // this.data.answerNum = 0
113
+ // this.data.awaitNum = 0
114
+ // this.data.ringNum = 0
115
+ // this.data.offLineNum = 0
116
+ // this.service=response.data.packets
117
+ // console.log('this.service='+JSON.stringify(this.service));
118
+ // for (const serviceData of this.service) {
119
+ // switch (serviceData.aState) {
120
+ // case '未登录':
121
+ // this.data.offLineNum ++
122
+ // break
123
+ //
124
+ // case '忙':
125
+ // // case '回访通话':
126
+ // case '通话中':
127
+ // this.data.answerNum ++
128
+ // break
129
+ // case '空闲':
130
+ // this.data.awaitNum ++
131
+ // break
132
+ // case '正在振铃':
133
+ // case '正在保存':
134
+ // this.data.ringNum ++
135
+ // break
136
+ // }
137
+ // }
138
+ // })
139
+ },
140
+
141
+
142
+ }
143
+ }
144
+ </script>
145
+
146
+ <style scoped>
147
+
148
+
149
+ .service-status {
150
+ width: 36.458vw;
151
+ height: 31.944vh;
152
+ position: absolute;
153
+ top: 23.241vh;
154
+ left: 36vw;
155
+ /* background: rgba(255, 255, 255, .04); */
156
+ display: flex;
157
+ flex-flow: row wrap;
158
+ }
159
+
160
+ .service-status div {
161
+ height: 15.741vh;
162
+ display: flex;
163
+ width: 200px;
164
+ }
165
+
166
+ .move-down {
167
+ margin-top: 2.13vh;
168
+ }
169
+
170
+ .service-status div div {
171
+ width: 7.552vw;
172
+ height: 10.463vh;
173
+ position: relative;
174
+ }
175
+
176
+ .service1 {
177
+ width: 3.49vw;
178
+ height: 8.148vh;
179
+ background-image: url("../../../../static/images/zhongyi/service1.png");
180
+ background-repeat: no-repeat;
181
+ background-position: 0 0;
182
+ background-size: contain;
183
+ position: absolute;
184
+ left: 0.78125vw;
185
+ }
186
+ .service2 {
187
+ width: 3.49vw;
188
+ height: 8.148vh;
189
+ background-image: url("../../../../static/images/zhongyi/service2.png");
190
+ background-repeat: no-repeat;
191
+ background-position: 0 0;
192
+ background-size: contain;
193
+ position: absolute;
194
+ left: 0.78125vw;
195
+ }
196
+
197
+
198
+
199
+
200
+
201
+
202
+ .status1 {
203
+ width: 1.875vw;
204
+ background-image: url("../../../../static/images/zhongyi/ring.png");
205
+ height: 4.333vh;
206
+ background-repeat: no-repeat;
207
+ background-position: 0 0;
208
+ background-size: contain;
209
+ position: absolute;
210
+ bottom: 0.185vh;
211
+ }
212
+
213
+ .status2 {
214
+ width: 1.875vw;
215
+ background-image: url("../../../../static/images/zhongyi/phone1.png");
216
+ height: 4.333vh;
217
+ background-repeat: no-repeat;
218
+ background-position: 0 0;
219
+ background-size: contain;
220
+ position: absolute;
221
+ bottom: 0.104vw;
222
+ }
223
+
224
+ .status3 {
225
+ width: 2.34375vw;
226
+ background-image: url("../../../../static/images/zhongyi/telephone1.png");
227
+ height: 4.333vh;
228
+ background-repeat: no-repeat;
229
+ background-position: 0 0;
230
+ background-size: contain;
231
+ position: absolute;
232
+ bottom: 0.185vh;
233
+ }
234
+
235
+ .status4 {
236
+ width: 1.875vw;
237
+ background-image: url("../../../../static/images/zhongyi/phone2.png");
238
+ height: 4.333vh;
239
+ background-repeat: no-repeat;
240
+ background-position: 0 0;
241
+ background-size: contain;
242
+ position: absolute;
243
+ bottom: 0.185vh;
244
+ }
245
+
246
+ .service-status div span {
247
+ width: 5.208vw;
248
+ height: 2.037vh;
249
+ font-size: 2.037vh;
250
+ font-weight: bold;
251
+ color: #FFFEFE;
252
+ display: block;
253
+ text-align: center;
254
+ position: absolute;
255
+ top: 9.537vh;
256
+ }
257
+
258
+
259
+
260
+ .status-count {
261
+ width: 41.667vw;
262
+ height: 4.63vh;
263
+ /* background-color: rgb(131, 238, 188); */
264
+ position: absolute;
265
+ top: 59.537vh;
266
+ left: 30.573vw;
267
+ display: flex;
268
+ }
269
+
270
+ .answer{
271
+ width: 1.875vw;
272
+ height: 4.333vh;
273
+ background-image: url("../../../../static/images/zhongyi/phone1.png");
274
+ background-repeat: no-repeat;
275
+ background-position: 0 0;
276
+ background-size: contain;
277
+ position: absolute;
278
+ top: 1.389vh;
279
+ }
280
+ .answer-text{
281
+ position: absolute;
282
+ top: 1.852vh;
283
+ left: 3.125vw;
284
+ }
285
+ .answer-num{
286
+ font-size: 2.593vh;
287
+ color: #00FFEA;
288
+ position: absolute;
289
+ top: 1.204vh;
290
+ left: 7.24vw;
291
+ }
292
+
293
+ .await{
294
+ width: 2.34375vw;
295
+ height: 4.333vh;
296
+ background-image: url("../../../../static/images/zhongyi/telephone1.png");
297
+ background-repeat: no-repeat;
298
+ background-position: 0 0;
299
+ background-size: contain;
300
+ position: absolute;
301
+ top: 1.389vh;
302
+ left: 10.417vw;
303
+ }
304
+ .await-text{
305
+ position: absolute;
306
+ top: 1.852vh;
307
+ left: 14.0625vw;
308
+ }
309
+ .await-num{
310
+ font-size: 2.593vh;
311
+ color: #FFCD00;
312
+ position: absolute;
313
+ top: 1.204vh;
314
+ left: 17.271vw;
315
+ }
316
+
317
+ .ring{
318
+ width: 1.875vw;
319
+ height: 4.333vh;
320
+ background-image: url("../../../../static/images/zhongyi/ring.png");
321
+ background-repeat: no-repeat;
322
+ background-position: 0 0;
323
+ background-size: contain;
324
+ position: absolute;
325
+ top: 1.389vh;
326
+ left: 21vw;
327
+ }
328
+ .ring-text{
329
+ position: absolute;
330
+ top: 1.852vh;
331
+ left: 24vw;
332
+ }
333
+ .ring-num{
334
+ font-size: 2.593vh;
335
+ color: #FF7E00;
336
+ position: absolute;
337
+ top: 1.204vh;
338
+ left: 28.90625vw;
339
+ }
340
+
341
+ .off-line{
342
+ width: 1.875vw;
343
+ height: 4.333vh;
344
+ background-image: url("../../../../static/images/zhongyi/phone2.png");
345
+ background-repeat: no-repeat;
346
+ background-position: 0 0;
347
+ background-size: contain;
348
+ position: absolute;
349
+ top: 1.389vh;
350
+ left: 32.03125vw;
351
+ }
352
+ .off-line-text{
353
+ position: absolute;
354
+ top: 1.852vh;
355
+ left: 35.417vw;
356
+ }
357
+ .off-line-num{
358
+ font-size: 2.593vh;
359
+ color: #DBDBDB;
360
+ position: absolute;
361
+ top: 1.204vh;
362
+ left: 38.802vw;
363
+ }
364
+
365
+
366
+ .status-count div span:nth-of-type(1) {
367
+ font-size: 2.037vh;
368
+ color: #FFFFFF;
369
+ line-height: 2.315vh;
370
+ }
371
+ </style>
@@ -0,0 +1,145 @@
1
+ <template>
2
+ <div class="title-area">
3
+ <div v-for="value in titleList">{{ value }}</div>
4
+ </div>
5
+ <div class="userinfo-data">
6
+ <div class="swiper-container">
7
+ <div class="swiper-wrapper">
8
+ <div class="swiper-slide" v-for="item in noticeList">
9
+ <div>{{item.f_created_date||'无'}}</div>
10
+ <div>{{item.f_user_name||'无'}}</div>
11
+ <div>{{item.f_workorder_type||'无'}}</div>
12
+ <div>{{item.f_address||'无'}}</div>
13
+ <div>{{item.f_single_man||'无'}}</div>
14
+ <div v-if="item.f_workorder_type=='报修单'||item.f_workorder_type=='置换通气单'">{{'下派'}}</div>
15
+ <div v-else>{{item.f_handlings||'无'}}</div>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+ import Swiper from "swiper"
24
+ import 'swiper/css/swiper.min.css'
25
+ export default {
26
+ name: "SwiperSlide",
27
+ watch:{
28
+ noticeList: {
29
+ immediate: true,
30
+ deep:true,//深度监听,也是看情况使用
31
+ handler() {
32
+ this.$nextTick(()=>{
33
+ new Swiper ('.swiper-container', {
34
+ slidesPerView : this.rowSpeed.row,
35
+ speed:this.rowSpeed.speed*1000,
36
+ //垂直播放
37
+ direction: 'vertical',
38
+ autoplay: {
39
+ delay: 0,
40
+ stopOnLastSlide: false,
41
+ disableOnInteraction: true,
42
+ // waitForTransition: false,
43
+ },
44
+ loop: true // 循环模式选项
45
+ });
46
+ })
47
+ },
48
+ }
49
+ },
50
+ props:{
51
+ rowSpeed:{
52
+ /* 行数 row 速度 speed */
53
+ type:Object,
54
+ default: {
55
+ row:6,
56
+ speed:3
57
+ }
58
+ },
59
+ titleList:{
60
+ type:Object,
61
+ default:{
62
+ }
63
+ }
64
+ ,
65
+ noticeList:{
66
+ type:Array,
67
+ default:[
68
+ {
69
+ f_created_date: '',
70
+ f_user_name:'',
71
+ f_workorder_type:'',
72
+ f_address:'',
73
+ f_single_man:'',
74
+ f_handlings:''
75
+ },
76
+ ]
77
+ }
78
+ },
79
+ ready(){
80
+ }
81
+ }
82
+ </script>
83
+
84
+ <style lang="less" scoped>
85
+ .title-area {
86
+ color: #00D2FF;
87
+ font-size: 2.5vh;
88
+ display: flex;
89
+ height: 5.093vh;
90
+ align-items: center;
91
+ position: relative;
92
+ margin-top: 2.407vh;
93
+ text-align: center;
94
+ div:nth-of-type(1){width: 260px}
95
+ div:nth-of-type(2){width: 180px}
96
+ div:nth-of-type(3){width: 170px}
97
+ div:nth-of-type(4){width: 400px}
98
+ div:nth-of-type(5){width: 150px}
99
+ div:nth-of-type(6){width: 150px}
100
+ }
101
+
102
+ .userinfo-data {
103
+ height: 19.63vh;
104
+ pointer-events: none;
105
+ }
106
+ .swiper-slide{
107
+ display: flex;
108
+ color: #ffffff;
109
+ font-size: 22px;
110
+ line-height: 41px;
111
+
112
+ div:nth-of-type(1){
113
+ width: 260px;
114
+ text-align: center;
115
+ }
116
+ div:nth-of-type(2){
117
+ width: 180px;
118
+ text-align: center;
119
+ }
120
+ div:nth-of-type(3){
121
+ width: 170px;
122
+ text-align: center;
123
+ }
124
+ div:nth-of-type(4){
125
+ height: 100%;
126
+ width: 400px;
127
+ text-align: center;
128
+ div{
129
+ overflow: hidden;
130
+ text-overflow: ellipsis;
131
+ white-space: nowrap;
132
+ }
133
+ }
134
+ div:nth-of-type(5){
135
+ width: 150px;
136
+ text-align: center;
137
+ }
138
+ div:nth-of-type(6){
139
+ width: 150px;
140
+ color: #F7DB35;
141
+ text-align: center;
142
+ }
143
+ }
144
+
145
+ </style>
@@ -0,0 +1,176 @@
1
+ <template>
2
+ <div>
3
+ <table style="width: 100%">
4
+ <thead>
5
+ <tr class="title-area" >
6
+ <td v-for="value in titleList">{{ value }}</td>
7
+ </tr>
8
+ </thead>
9
+ <!-- 显示不出来-->
10
+ <tbody class="swiper-container">
11
+ <template class="swiper-wrapper">
12
+ <tr class="swiper-slide" v-for="item in noticeList">
13
+ <td v-for="value in item">{{value}}</td>
14
+ </tr>
15
+ </template>
16
+ </tbody>
17
+ <!-- 格式不对-->
18
+ <!-- <tbody class="swiper-container">-->
19
+ <!-- <tr class="swiper-wrapper">-->
20
+ <!-- <td class="swiper-slide" v-for="item in noticeList">-->
21
+ <!-- <span v-for="value in item">{{value}}</span>-->
22
+ <!-- </td>-->
23
+ <!-- </tr>-->
24
+ <!-- </tbody>-->
25
+ <!-- 动不了的-->
26
+ <!-- <tbody class="swiper-container">-->
27
+ <!-- <tr class="swiper-slide" v-for="item in noticeList">-->
28
+ <!-- <td v-for="value in item">{{value}}</td>-->
29
+ <!-- </tr>-->
30
+ <!-- </tbody>-->
31
+ </table>
32
+ </div>
33
+ </template>
34
+
35
+ <script>
36
+ import Swiper from "swiper";
37
+ import 'swiper/css/swiper.min.css'
38
+ export default {
39
+ name: "SwiperTools2",
40
+ watch:{
41
+ noticeList: {
42
+ immediate: true,
43
+ deep:true,//深度监听,也是看情况使用
44
+ handler() {
45
+ this.$nextTick(()=>{
46
+ new Swiper ('.swiper-container', {
47
+ slidesPerView : this.rowSpeed.row,
48
+ speed:this.rowSpeed.speed*1000,
49
+ //垂直播放
50
+ direction: 'vertical',
51
+ autoplay: {
52
+ delay: 0,
53
+ stopOnLastSlide: false,
54
+ disableOnInteraction: true,
55
+ // waitForTransition: false,
56
+ },
57
+ loop: true // 循环模式选项
58
+ });
59
+ })
60
+ },
61
+
62
+ }
63
+ },
64
+ props:{
65
+ rowSpeed:{
66
+ /* 行数 row 速度 speed */
67
+ type:Object,
68
+ default: {
69
+ row:5,
70
+ speed:3
71
+ }
72
+ },
73
+ titleList:{
74
+ type:Object,
75
+ default:{
76
+ }
77
+ }
78
+ ,
79
+ noticeList:{
80
+ type:Array,
81
+ default:[
82
+ {
83
+ date: "2022-09-01 10:25:06",
84
+ duration:'2min',
85
+ name:'赵王莉1',
86
+ orderType:'报修',
87
+ address:'建设小区21号112室',
88
+ receptionist:'候倩楠',
89
+ state:'接听'
90
+ },
91
+ {
92
+ date: "2022-09-01 10:25:06",
93
+ duration:'2min',
94
+ name:'林妹妹1',
95
+ orderType:'报修',
96
+ address:'建设小区21号112室',
97
+ receptionist:'候倩楠',
98
+ state:'接听'
99
+ },
100
+ {
101
+ date: "2022-09-01 10:25:06",
102
+ duration:'2min',
103
+ name:'赵王莉2',
104
+ orderType:'报修',
105
+ address:'建设小区21号112室',
106
+ receptionist:'候倩楠',
107
+ state:'接听'
108
+ },
109
+ {
110
+ date: "2022-09-01 10:25:06",
111
+ duration:'2min',
112
+ name:'林妹妹2',
113
+ orderType:'报修',
114
+ address:'建设小区21号112室',
115
+ receptionist:'候倩楠',
116
+ state:'接听'
117
+ },
118
+ {
119
+ date: "2022-09-01 10:25:06",
120
+ duration:'2min',
121
+ name:'赵王莉3',
122
+ orderType:'报修',
123
+ address:'建设小区21号112室',
124
+ receptionist:'候倩楠',
125
+ state:'接听'
126
+ },
127
+ {
128
+ date: "2022-09-01 10:25:06",
129
+ duration:'2min',
130
+ name:'林妹妹3',
131
+ orderType:'报修',
132
+ address:'建设小区21号112室',
133
+ receptionist:'候倩楠',
134
+ state:'接听'
135
+ },
136
+ ],
137
+ }
138
+ }
139
+ }
140
+ </script>
141
+
142
+ <style lang="less" scoped>
143
+ .title-area {
144
+ width: 100%;
145
+ height: 100%;
146
+ color: #00D2FF;
147
+ font-size: 2.5vh;
148
+ /*display: flex;*/
149
+ /*height: 5.093vh;*/
150
+ /*flex-direction: row;*/
151
+ /*align-items: center;*/
152
+ position: relative;
153
+ text-align: center;
154
+ }
155
+
156
+ .userinfo-data {
157
+ width: 100%;
158
+ height: 100%;
159
+ /*position: absolute;*/
160
+ /*top: 8.148vh;*/
161
+ /*left: 0.521vw;*/
162
+ /*width: 71.354vw;*/
163
+ //pointer-events: none;
164
+ }
165
+ .swiper-slide {
166
+ /*display: flex;*/
167
+ width: 100%;
168
+ color: #ffffff;
169
+ font-size: 22px;
170
+ line-height: 41px;
171
+ text-align: center;
172
+ /*justify-content: space-evenly;*/
173
+ height: 20%;
174
+ }
175
+
176
+ </style>