manage-client 3.2.263 → 3.2.265

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 (33) hide show
  1. package/build/dev-server.js +180 -180
  2. package/package.json +111 -111
  3. package/src/filiale/kelai/ChargeQuery.vue +1341 -0
  4. package/src/filiale/kelai/sale.js +2 -1
  5. package/src/filiale/ningjin/CallReport/CallReportMainPage.vue +146 -0
  6. package/src/filiale/ningjin/CallReport/DropDownBox.vue +64 -0
  7. package/src/filiale/ningjin/CallReport/IncomingTelegram.vue +187 -0
  8. package/src/filiale/ningjin/CallReport/PercentageComplete.vue +413 -0
  9. package/src/filiale/ningjin/CallReport/PercentageCompleteEchart.vue +150 -0
  10. package/src/filiale/ningjin/CallReport/RateBottom.vue +143 -0
  11. package/src/filiale/ningjin/CallReport/RateTop.vue +144 -0
  12. package/src/filiale/ningjin/CallReport/ScrollContent.vue +143 -0
  13. package/src/filiale/ningjin/CallReport/ServiceStatus.vue +371 -0
  14. package/src/filiale/ningjin/CallReport/SwiperTools.vue +145 -0
  15. package/src/filiale/ningjin/CallReport/SwiperTools2.vue +176 -0
  16. package/src/filiale/ningjin/CallReport/Time.vue +100 -0
  17. package/src/filiale/ningjin/CallReport/Userinfo.vue +69 -0
  18. package/src/filiale/ningjin/CallReport/WeatherData.vue +108 -0
  19. package/src/filiale/ningjin/CallReport/WorkOrderPage.vue +260 -0
  20. package/src/filiale/ningjin/FillCardQuery.vue +581 -0
  21. package/src/filiale/ningjin/GasStatistics.vue +39 -20
  22. package/src/filiale/ningjin/LostContactAnalysisList.vue +676 -0
  23. package/src/filiale/ningjin/ManageBusSummaryPeng.vue +241 -0
  24. package/src/filiale/ningjin/ManageHandSellMoney.vue +247 -0
  25. package/src/filiale/ningjin/ManageSellType.vue +284 -0
  26. package/src/filiale/ningjin/MeterExceptionList.vue +54 -9
  27. package/src/filiale/ningjin/UserLostContactAnalysis.vue +592 -0
  28. package/src/filiale/ningjin/config/exportConfig.js +35 -34
  29. package/src/filiale/ningjin/reportManage.js +6 -1
  30. package/src/filiale/ningjin/sale.js +26 -0
  31. package/src/filiale/ningjin/webmeterManage.js +5 -1
  32. package/src/filiale/wenxi/GasDeviceQuery.vue +975 -0
  33. package/src/filiale/wenxi/sale.js +2 -0
@@ -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>
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <div class="time">
3
+ <div class="timeHMS">{{ hourMinuteSecond }}</div>
4
+ <div class="timeYMD">{{ yearMonthDay }}</div>
5
+ <!-- <div class="timeWeek">{{ week }}</div>-->
6
+
7
+ </div>
8
+ </template>
9
+
10
+ <script>
11
+ import {HttpResetClass} from "vue-client";
12
+ import '../../../../static/fonts/font.css'
13
+
14
+ export default {
15
+ name: "Time",
16
+ data(){
17
+ return{
18
+ nextTime:"",
19
+ hourMinuteSecond:"",
20
+ yearMonthDay:"",
21
+ week:"",
22
+ }
23
+ },
24
+ ready(){
25
+ this.showTime()
26
+ // this.getInitData()
27
+ },
28
+ methods:{
29
+ getInitData(){
30
+ let http = new HttpResetClass()
31
+ http.load('post','rs/sql/getCallSumData',{}).then((res)=>{
32
+ console.log("===========",res.data)
33
+ // this.data = res.data[0]
34
+ })
35
+ },
36
+ showTime() {
37
+ this.interval = setInterval(() => {
38
+ //開始运行
39
+ this.nextTime = ''
40
+ let dt = new Date();
41
+ let weekList=new Array('日','一','二','三','四','五','六',);
42
+ let y = dt.getFullYear();
43
+ let mt = dt.getMonth() + 1;
44
+ let day = dt.getDate();
45
+ let h = dt.getHours(); //获取时
46
+ let m = dt.getMinutes(); //获取分
47
+ let s = dt.getSeconds(); //获取秒
48
+ let week=dt.getDay();
49
+ let weekStr=weekList[week];
50
+ //时分秒<10前面拼接0
51
+ h = this.check(h);
52
+ m = this.check(m);
53
+ s = this.check(s);
54
+ // this.nextTime = h + ":" + m + ":" + s + " " + y + "/" + mt + "/" + day + "星期"+ weekStr;
55
+ this.hourMinuteSecond = h + ":" + m + ":" + s;
56
+ this.yearMonthDay = y + "-" + mt + "-" + day+"星期"+ weekStr;
57
+ // this.week="星期"+ weekStr;
58
+
59
+ }, 1000); //设定定时器,循环运行
60
+ },
61
+ //检查时分秒如果<10前面拼接0
62
+ check(i){
63
+ let num;
64
+ i<10?num="0"+i:num=i;
65
+ return num;
66
+ },
67
+ }
68
+ }
69
+ </script>
70
+
71
+ <style scoped>
72
+ .time {
73
+ width: 17.625vw;
74
+ height: 5.222vh;
75
+ position: absolute;
76
+ top: -1.389vh;
77
+ right: 0.365vw;
78
+ display: flex;
79
+ font-family: alhy;
80
+ justify-content: space-around;
81
+ }
82
+ .timeHMS{
83
+ width: 6vw;
84
+ height: 5.037vh;
85
+ font-size: 2.315vh;
86
+ font-weight: 400;
87
+ color: #C3DEFF;
88
+ line-height: 8.796vh;
89
+ }
90
+ .timeYMD {
91
+ width: 10vw;
92
+ height: 5.574vh;
93
+ font-size: 1.667vh;
94
+ font-weight: 400;
95
+ color: #C3DEFF;
96
+ line-height: 8.796vh;
97
+ opacity: 0.7;
98
+ }
99
+ .timeWeek{}
100
+ </style>
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <!-- 用户信息 -->
3
+ <div class="userinfo">
4
+ <swiper-tools :notice-list="noticeList" :title-list="titleList"></swiper-tools>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ import SwiperTools from "./SwiperTools"
10
+ import {HttpResetClass} from "vue-client";
11
+ export default {
12
+ name: "Userinfo",
13
+ components:{
14
+ SwiperTools
15
+ },
16
+ data(){
17
+ return{
18
+ noticeList:[],
19
+ titleList:{
20
+ date: '派单时间',
21
+ name:'用户姓名',
22
+ orderType:'工单类型',
23
+ address:'用户地址',
24
+ receptionist:'话务员',
25
+ state:'工单状态'
26
+ }
27
+ }
28
+ },
29
+ props:['filialeId'],
30
+ methods:{
31
+ getworkuser(){
32
+ let http = new HttpResetClass()
33
+ http.load('post','rs/logic/Workorderinformation',{
34
+ data: {
35
+ f_orgid: this.filialeId?this.filialeId:23145 // 分公司id
36
+ }
37
+ },{rejectMsg:null,resolveMsg:null}).then((ress)=>{
38
+ console.log("getworkuser"+JSON.stringify(ress.data))
39
+ this.noticeList = ress.data.data
40
+ console.log("this.noticeList"+JSON.stringify(this.noticeList))
41
+ })
42
+ }
43
+ },
44
+ ready(){
45
+ this.getworkuser()
46
+ setInterval(() => {
47
+ this.getworkuser()
48
+ }, 300000)
49
+ },
50
+ watch: {
51
+ 'filialeId'(val){
52
+ console.log("filialeId>>>=====",val)
53
+ this.getworkuser()
54
+ }
55
+ }
56
+ }
57
+ </script>
58
+
59
+ <style lang="less" scoped>
60
+ .userinfo {
61
+ width: 71.40625vw;
62
+ height: 28.426vh;
63
+ background: rgba(255, 255, 255, .04);
64
+ position: absolute;
65
+ right: 1.09375vw;
66
+ bottom: 3.889vh;
67
+ padding: 0 1vw;
68
+ }
69
+ </style>
@@ -0,0 +1,108 @@
1
+ <template>
2
+ <div class="weather">
3
+ <div id="scan" class="weather-icon"></div>
4
+ <span class="weather-text">
5
+ {{weatherList.wea}}&nbsp;{{weatherList.tem_night}}℃~{{weatherList.tem_day}}℃&nbsp;&nbsp;风速:{{weatherList.win_meter}}
6
+ &nbsp;风向:{{weatherList.win}}
7
+ </span>
8
+ </div>
9
+ </template>
10
+
11
+ <script>
12
+ import axios from "axios";
13
+ export default {
14
+ name: "WeatherData",
15
+ data(){
16
+ return{
17
+ cityid: '',
18
+ weatherList: {},
19
+ }
20
+ },
21
+ props:['filiale'],
22
+ ready(){
23
+ this.serchWeather()
24
+ setInterval(() => {
25
+ this.serchWeather()
26
+ }, 28800000)
27
+ console.log("ssss"+JSON.stringify(this.filiale))
28
+
29
+ },
30
+ methods: {
31
+ serchWeather(){
32
+ // 调用天气接口
33
+ axios.get('https://www.tianqiapi.com/free/day?appid=85841439&appsecret=EKCDLT4I&cityid=' + this.cityid)
34
+ .then((response) => {
35
+ console.log("天气"+JSON.stringify(response.data))
36
+ this.weatherList = response.data
37
+ console.log("22222"+JSON.stringify(this.weatherList))
38
+ })
39
+ }
40
+ },
41
+
42
+ watch: {
43
+ 'weatherList.wea':{
44
+ handler(val){
45
+ if(val=='多云'||val=='阴转多云'){
46
+ document.getElementById('scan').style.backgroundImage = 'url("../../../../static/images/zhongyi/cloudy.png")'
47
+ }if(val=='晴'){
48
+ document.getElementById('scan').style.backgroundImage = 'url("../../../../static/images/zhongyi/天气-晴.png")'
49
+ }if(val=='霾'){
50
+ document.getElementById('scan').style.backgroundImage = 'url("../../../../static/images/zhongyi/雾.png")'
51
+ }if(val=='暴雨'){
52
+ document.getElementById('scan').style.backgroundImage = 'url("../../../../static/images/zhongyi/暴雨到大暴雨.png")'
53
+ }
54
+ this.serchWeather()
55
+ console.log('f_orgname==>',val)
56
+ },
57
+ immediate: true
58
+ },
59
+ 'filiale': {
60
+ handler(val){
61
+ if(val=='山东彤运天燃气有限公司'||val=='临邑中邑燃气有限公司'){
62
+ this.cityid=101120401
63
+ }if(val=='夏津中邑燃气有限公司'){
64
+ this.cityid=101120410
65
+ }if(val=='庆云浩通天燃气有限公司'){
66
+ this.cityid=101120407
67
+ }if(val=='山东中邑燃气有限公司'){
68
+ this.cityid=101120409
69
+ }
70
+ this.serchWeather()
71
+ console.log('f_orgname==>',val)
72
+ },
73
+ immediate: true
74
+ }
75
+
76
+ }
77
+ }
78
+ </script>
79
+
80
+ <style scoped>
81
+ .weather {
82
+ width: 24.021vw;
83
+ height: 2.222vh;
84
+ position: absolute;
85
+ top: 0.926vh;
86
+ left: 1.604vw;
87
+ display: flex;
88
+ }
89
+
90
+ .weather-icon {
91
+ width: 1.667vw;
92
+ height: 2.037vh;
93
+ background-image: url("../../../../static/images/zhongyi/cloudy.png");
94
+ background-repeat: no-repeat;
95
+ background-position: 0 0;
96
+ background-size: contain;
97
+ margin-top: 0.278vh;
98
+
99
+ }
100
+
101
+ .weather-text {
102
+ font-family: alhy;
103
+ font-size: 1.9vh;
104
+ font-weight: 400;
105
+ color: #C3DEFF;
106
+ line-height: 3.333vh;
107
+ }
108
+ </style>