telephone-clients 4.0.0-1-59 → 4.0.0-1-61

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/CHANGELOG.md CHANGED
@@ -1,37 +1,37 @@
1
- # Change Log
2
- 所有关于本产品的变化都在该文档里。
3
-
4
- ## [Unreleased]
5
-
6
- ## 1.1.7 - 2018-11-23 @ 王智鹏
7
- - 添加安卓端可以查询购气信息
8
-
9
- ## 1.1.0 - 2018-11-11 @ 何宁社
10
- - 去掉样式
11
-
12
- ## 1.0.19 - 2018-11-1 @ 何宁社
13
- - 派通气单时,自动建档
14
-
15
- ## 1.0.11 - 2018-9-11 @ 文明
16
- ### Fixed
17
- - 修改获取参数的方式及登入人的信息
18
-
19
- ## 1.0.10 - 2018-9-3 @ 何宁社
20
- ### Fixed
21
- - 删除错误的局部组件注册
22
-
23
- ## 1.0.9 - 2018-9-3 @ 何宁社
24
- ### Fixed
25
- - 解决部分组件的大写问题
26
-
27
- ## 1.0.7 - 2018-9-3 @ 何宁社
28
- ### Fixed
29
- - 解决Console的大写问题
30
-
31
- ## 0.0.2 - 2018-5-6 @ 何宁社
32
- ### Added
33
- - 把故障编辑及故障显示组件独立出来了
34
-
35
- ## 0.0.1 - 2017-12-01
36
- ### Added
37
- - pc端,微信端界面完成,接下来主要完成文字客服,语音客服,业务逻辑,手机app等功能
1
+ # Change Log
2
+ 所有关于本产品的变化都在该文档里。
3
+
4
+ ## [Unreleased]
5
+
6
+ ## 1.1.7 - 2018-11-23 @ 王智鹏
7
+ - 添加安卓端可以查询购气信息
8
+
9
+ ## 1.1.0 - 2018-11-11 @ 何宁社
10
+ - 去掉样式
11
+
12
+ ## 1.0.19 - 2018-11-1 @ 何宁社
13
+ - 派通气单时,自动建档
14
+
15
+ ## 1.0.11 - 2018-9-11 @ 文明
16
+ ### Fixed
17
+ - 修改获取参数的方式及登入人的信息
18
+
19
+ ## 1.0.10 - 2018-9-3 @ 何宁社
20
+ ### Fixed
21
+ - 删除错误的局部组件注册
22
+
23
+ ## 1.0.9 - 2018-9-3 @ 何宁社
24
+ ### Fixed
25
+ - 解决部分组件的大写问题
26
+
27
+ ## 1.0.7 - 2018-9-3 @ 何宁社
28
+ ### Fixed
29
+ - 解决Console的大写问题
30
+
31
+ ## 0.0.2 - 2018-5-6 @ 何宁社
32
+ ### Added
33
+ - 把故障编辑及故障显示组件独立出来了
34
+
35
+ ## 0.0.1 - 2017-12-01
36
+ ### Added
37
+ - pc端,微信端界面完成,接下来主要完成文字客服,语音客服,业务逻辑,手机app等功能
package/README.md CHANGED
@@ -1,39 +1,39 @@
1
- # TelephoneClient
2
-
3
- #### 项目介绍
4
- {**以下是码云平台说明,您可以替换为您的项目简介**
5
- 码云是开源中国推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
6
- 无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
7
-
8
- #### 软件架构
9
- 软件架构说明
10
-
11
-
12
- #### 安装教程
13
-
14
- 1. xxxx
15
- 2. xxxx
16
- 3. xxxx
17
-
18
- #### 使用说明
19
-
20
- 1. xxxx
21
- 2. xxxx
22
- 3. xxxx
23
-
24
- #### 参与贡献
25
-
26
- 1. Fork 本项目
27
- 2. 新建 Feat_xxx 分支
28
- 3. 提交代码
29
- 4. 新建 Pull Request
30
-
31
-
32
- #### 码云特技
33
-
34
- 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
35
- 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
36
- 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
37
- 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
38
- 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
1
+ # TelephoneClient
2
+
3
+ #### 项目介绍
4
+ {**以下是码云平台说明,您可以替换为您的项目简介**
5
+ 码云是开源中国推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
6
+ 无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
7
+
8
+ #### 软件架构
9
+ 软件架构说明
10
+
11
+
12
+ #### 安装教程
13
+
14
+ 1. xxxx
15
+ 2. xxxx
16
+ 3. xxxx
17
+
18
+ #### 使用说明
19
+
20
+ 1. xxxx
21
+ 2. xxxx
22
+ 3. xxxx
23
+
24
+ #### 参与贡献
25
+
26
+ 1. Fork 本项目
27
+ 2. 新建 Feat_xxx 分支
28
+ 3. 提交代码
29
+ 4. 新建 Pull Request
30
+
31
+
32
+ #### 码云特技
33
+
34
+ 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
35
+ 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
36
+ 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
37
+ 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
38
+ 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
39
39
  6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "telephone-clients",
3
- "version": "4.0.0-1-59",
3
+ "version": "4.0.0-1-61",
4
4
  "description": "呼叫模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "directories": {
package/release.bat CHANGED
@@ -1,5 +1,5 @@
1
- git add -A
2
- git commit -m "[build] %1"
3
- git tag -a V%1 -m "Release version %1"
4
- git push origin --tags
5
- git push
1
+ git add -A
2
+ git commit -m "[build] %1"
3
+ git tag -a V%1 -m "Release version %1"
4
+ git push origin --tags
5
+ git push
@@ -1,186 +1,186 @@
1
- <template>
2
- <div style="height: auto;width: 100%">
3
- <div partial>
4
- <div align="center" class="">
5
- <div class=""><img src="../../../assets/scanCode.png">请扫描下方二维码进行购气</div>
6
- <div class="row app-row">
7
- <div class="col-xs-4">
8
- <label class="font text-left">订单编号:</label>
9
- </div>
10
- <div class="col-xs-8">
11
- <input v-model="oderInfo.out_trade_no" class="search_input input-font" type="text"/>
12
- </div>
13
- </div>
14
- <div class="row app-row">
15
- <div class="col-xs-4">
16
- <label class="font text-left">订单状态:</label>
17
- </div>
18
- <div class="col-xs-8">
19
- <input v-model="oderInfo.msg" class="search_input input-font" type="text"/>
20
- </div>
21
- </div>
22
- <!--<div @click="callBack('支付成功')">返回</div>-->
23
- </div>
24
- <div align="center" class="">
25
- <div class="QR-code">
26
- <img v-show="isTimeout" height="266" src="../../../assets/qrcode_no.png" width="266"/>
27
- <div id="scan" style="margin-top: 25px"></div>
28
- </div>
29
- </div>
30
- </div>
31
- </div>
32
- </template>
33
- <script>
34
- import QRCode from 'qrcodejs2'
35
- import {HttpResetClass} from "vue-client";
36
-
37
- export default {
38
- title: '二维码扫码',
39
- prop: ['row'],
40
-
41
- data() {
42
- return {
43
- // 订单状态定时器
44
- timer1: {},
45
- timer2: {},
46
- // 订单信息
47
- oderInfo: {
48
- out_trade_no: "",
49
- msg: ''
50
- },
51
- // 下单信息
52
- parameter: {
53
- },
54
- isTimeout: true // 二维码图片
55
-
56
- }
57
- },
58
- methods: {
59
- callBack(para) {
60
- //tag
61
- this.$back(para)
62
- },
63
- // 生成二维码
64
- async createOrder() {
65
- console.log(this.row)
66
- let data = {
67
- config: this.row.model.f_orgid,
68
- f_revenue: 'productV3',
69
- pay_way: this.row.model.f_payment,
70
- money: `${Number(Number(this.row.money)*100).toFixed(2)}`,
71
- body: '购气订单',
72
- attach: {
73
- f_userfiles_id: this.row.model.f_userfiles_id,
74
- f_pregas: this.row.model.f_pregas,
75
- f_preamount: this.row.money,
76
- f_payment: this.row.money,
77
- f_terminal_num: HostApp.getSN().data,
78
- f_collection: this.row.money,
79
- f_totalcost: this.row.money,
80
- isHand: this.row.model.isHand || '',
81
- hand_ids: this.row.model.hand_ids || [],
82
- f_meterid: this.row.model.f_meterid || '',
83
- isGasValue: this.row.model.isGasValue || '',
84
- f_card_id: this.row.model.f_card_id || '',
85
- f_times: this.row.model.f_times || 0
86
- }
87
- }
88
- let result = await new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/pos/rs/logic/CCBGetCode`, data, {})
89
- if (result.data && result.data.code == 200){
90
- this.oderInfo.out_trade_no = result.data.f_out_trade_no
91
- new QRCode(document.getElementById('scan'), {'text': result.data.url, width: 266, height: 266})
92
- this.isTimeout = false
93
- if (this.oderInfo.out_trade_no) {
94
- this.timer1 = window.setInterval(this.queryOrderSatus, 3000)
95
- }
96
- }
97
- },
98
- // 查询订单状态
99
- async queryOrderSatus() {
100
- let http1 = new HttpResetClass()
101
- let resp = await http1.load('POST', `${this.$androidUtil.getProxyUrl()}/pos/rs/sql/getSellGasInfo`, {
102
- "data": {
103
- "condition": `f_serial_id = '${this.oderInfo.out_trade_no}'`
104
- }
105
- }, {resolveMsg: null, rejectMsg: null})
106
- if (resp.data.length == 1){
107
- this.oderInfo.msg = '支付成功'
108
- await this.destroyed()
109
- await this.callBack(this.oderInfo.out_trade_no)
110
- }else {
111
- this.oderInfo.msg = '订单未支付'
112
- }
113
- },
114
- destroyed() {
115
- // 停止计时器
116
- //tag
117
- window.clearInterval(this.timer1)
118
- // window.clearInterval(this.timer2)
119
- }
120
- },
121
- async ready() {
122
- let http1 = new HttpResetClass()
123
- let resp = await http1.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/tel_singleTable_OrderBy`, {
124
- data: {
125
- items: "*",
126
- tablename: "t_userfiles",
127
- condition: `f_userfiles_id = '${this.row.model.f_userfiles_id}' and f_table_state != '换表'`,
128
- orderitem: "f_userfiles_id"
129
- }
130
- }, {resolveMsg: null, rejectMsg: null})
131
- console.log(resp)
132
- if (resp.data[0].f_meter_classify.includes('卡表')) {
133
- this.row.model.isHand = '0'
134
- this.row.model.f_meterid = resp.data[0].f_meterid
135
- this.row.model.isGasValue = resp.data[0].f_meter_classify.includes('气量') ? '0' : '1'
136
- this.row.model.f_card_id = resp.data[0].f_card_id
137
- this.row.model.f_times = resp.data[0].f_times
138
- }else if (resp.data[0].f_meter_classify.includes('机表')){
139
- this.row.model.isHand = '1'
140
- this.row.model.hand_ids = []
141
- let resp2 = await http1.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/tel_singleTable_OrderBy`, {
142
- data: {
143
- items: "id",
144
- tablename: "t_handplan",
145
- condition: `f_userfiles_id = '${this.row.model.f_userfiles_id}' and f_whether_pay = '否'`,
146
- orderitem: "id desc"
147
- }
148
- }, {resolveMsg: null, rejectMsg: null})
149
- if (resp2.data.length >0 ){
150
- this.row.model.hand_ids = resp2.data.map(item=>{return item.id})
151
- }
152
- }else {
153
- this.row.model.isHand = '-1'
154
- }
155
- await this.createOrder()
156
- },
157
- destroyed() {
158
- // 停止计时器
159
- //tag
160
- window.clearInterval(this.timer1)
161
- // window.clearInterval(this.timer2)
162
- }
163
- }
164
- </script>
165
- <style>
166
- .app-row {
167
- background-color: white;
168
- padding: 10px 10px 0 10px;
169
- border-bottom: 1px solid rgba(235, 235, 235, 0.7);
170
- }
171
-
172
- .search_input {
173
- border: 0;
174
- outline: none;
175
- }
176
-
177
- .font {
178
- font: 15px PingFang-SC-Medium;
179
- color: #666666;
180
- }
181
-
182
- .input-font {
183
- font: 15px PingFang-SC-Medium;
184
- color: #333333;
185
- }
186
- </style>
1
+ <template>
2
+ <div style="height: auto;width: 100%">
3
+ <div partial>
4
+ <div align="center" class="">
5
+ <div class=""><img src="../../../assets/scanCode.png">请扫描下方二维码进行购气</div>
6
+ <div class="row app-row">
7
+ <div class="col-xs-4">
8
+ <label class="font text-left">订单编号:</label>
9
+ </div>
10
+ <div class="col-xs-8">
11
+ <input v-model="oderInfo.out_trade_no" class="search_input input-font" type="text"/>
12
+ </div>
13
+ </div>
14
+ <div class="row app-row">
15
+ <div class="col-xs-4">
16
+ <label class="font text-left">订单状态:</label>
17
+ </div>
18
+ <div class="col-xs-8">
19
+ <input v-model="oderInfo.msg" class="search_input input-font" type="text"/>
20
+ </div>
21
+ </div>
22
+ <!--<div @click="callBack('支付成功')">返回</div>-->
23
+ </div>
24
+ <div align="center" class="">
25
+ <div class="QR-code">
26
+ <img v-show="isTimeout" height="266" src="../../../assets/qrcode_no.png" width="266"/>
27
+ <div id="scan" style="margin-top: 25px"></div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </template>
33
+ <script>
34
+ import QRCode from 'qrcodejs2'
35
+ import {HttpResetClass} from "vue-client";
36
+
37
+ export default {
38
+ title: '二维码扫码',
39
+ prop: ['row'],
40
+
41
+ data() {
42
+ return {
43
+ // 订单状态定时器
44
+ timer1: {},
45
+ timer2: {},
46
+ // 订单信息
47
+ oderInfo: {
48
+ out_trade_no: "",
49
+ msg: ''
50
+ },
51
+ // 下单信息
52
+ parameter: {
53
+ },
54
+ isTimeout: true // 二维码图片
55
+
56
+ }
57
+ },
58
+ methods: {
59
+ callBack(para) {
60
+ //tag
61
+ this.$back(para)
62
+ },
63
+ // 生成二维码
64
+ async createOrder() {
65
+ console.log(this.row)
66
+ let data = {
67
+ config: this.row.model.f_orgid,
68
+ f_revenue: 'productV3',
69
+ pay_way: this.row.model.f_payment,
70
+ money: `${Number(Number(this.row.money)*100).toFixed(2)}`,
71
+ body: '购气订单',
72
+ attach: {
73
+ f_userfiles_id: this.row.model.f_userfiles_id,
74
+ f_pregas: this.row.model.f_pregas,
75
+ f_preamount: this.row.money,
76
+ f_payment: this.row.money,
77
+ f_terminal_num: HostApp.getSN().data,
78
+ f_collection: this.row.money,
79
+ f_totalcost: this.row.money,
80
+ isHand: this.row.model.isHand || '',
81
+ hand_ids: this.row.model.hand_ids || [],
82
+ f_meterid: this.row.model.f_meterid || '',
83
+ isGasValue: this.row.model.isGasValue || '',
84
+ f_card_id: this.row.model.f_card_id || '',
85
+ f_times: this.row.model.f_times || 0
86
+ }
87
+ }
88
+ let result = await new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/pos/rs/logic/CCBGetCode`, data, {})
89
+ if (result.data && result.data.code == 200){
90
+ this.oderInfo.out_trade_no = result.data.f_out_trade_no
91
+ new QRCode(document.getElementById('scan'), {'text': result.data.url, width: 266, height: 266})
92
+ this.isTimeout = false
93
+ if (this.oderInfo.out_trade_no) {
94
+ this.timer1 = window.setInterval(this.queryOrderSatus, 3000)
95
+ }
96
+ }
97
+ },
98
+ // 查询订单状态
99
+ async queryOrderSatus() {
100
+ let http1 = new HttpResetClass()
101
+ let resp = await http1.load('POST', `${this.$androidUtil.getProxyUrl()}/pos/rs/sql/getSellGasInfo`, {
102
+ "data": {
103
+ "condition": `f_serial_id = '${this.oderInfo.out_trade_no}'`
104
+ }
105
+ }, {resolveMsg: null, rejectMsg: null})
106
+ if (resp.data.length == 1){
107
+ this.oderInfo.msg = '支付成功'
108
+ await this.destroyed()
109
+ await this.callBack(this.oderInfo.out_trade_no)
110
+ }else {
111
+ this.oderInfo.msg = '订单未支付'
112
+ }
113
+ },
114
+ destroyed() {
115
+ // 停止计时器
116
+ //tag
117
+ window.clearInterval(this.timer1)
118
+ // window.clearInterval(this.timer2)
119
+ }
120
+ },
121
+ async ready() {
122
+ let http1 = new HttpResetClass()
123
+ let resp = await http1.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/tel_singleTable_OrderBy`, {
124
+ data: {
125
+ items: "*",
126
+ tablename: "t_userfiles",
127
+ condition: `f_userfiles_id = '${this.row.model.f_userfiles_id}' and f_table_state != '换表'`,
128
+ orderitem: "f_userfiles_id"
129
+ }
130
+ }, {resolveMsg: null, rejectMsg: null})
131
+ console.log(resp)
132
+ if (resp.data[0].f_meter_classify.includes('卡表')) {
133
+ this.row.model.isHand = '0'
134
+ this.row.model.f_meterid = resp.data[0].f_meterid
135
+ this.row.model.isGasValue = resp.data[0].f_meter_classify.includes('气量') ? '0' : '1'
136
+ this.row.model.f_card_id = resp.data[0].f_card_id
137
+ this.row.model.f_times = resp.data[0].f_times
138
+ }else if (resp.data[0].f_meter_classify.includes('机表')){
139
+ this.row.model.isHand = '1'
140
+ this.row.model.hand_ids = []
141
+ let resp2 = await http1.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/tel_singleTable_OrderBy`, {
142
+ data: {
143
+ items: "id",
144
+ tablename: "t_handplan",
145
+ condition: `f_userfiles_id = '${this.row.model.f_userfiles_id}' and f_whether_pay = '否'`,
146
+ orderitem: "id desc"
147
+ }
148
+ }, {resolveMsg: null, rejectMsg: null})
149
+ if (resp2.data.length >0 ){
150
+ this.row.model.hand_ids = resp2.data.map(item=>{return item.id})
151
+ }
152
+ }else {
153
+ this.row.model.isHand = '-1'
154
+ }
155
+ await this.createOrder()
156
+ },
157
+ destroyed() {
158
+ // 停止计时器
159
+ //tag
160
+ window.clearInterval(this.timer1)
161
+ // window.clearInterval(this.timer2)
162
+ }
163
+ }
164
+ </script>
165
+ <style>
166
+ .app-row {
167
+ background-color: white;
168
+ padding: 10px 10px 0 10px;
169
+ border-bottom: 1px solid rgba(235, 235, 235, 0.7);
170
+ }
171
+
172
+ .search_input {
173
+ border: 0;
174
+ outline: none;
175
+ }
176
+
177
+ .font {
178
+ font: 15px PingFang-SC-Medium;
179
+ color: #666666;
180
+ }
181
+
182
+ .input-font {
183
+ font: 15px PingFang-SC-Medium;
184
+ color: #333333;
185
+ }
186
+ </style>
@@ -1,278 +1,285 @@
1
- <template >
2
- <div class="flex-row">
3
- <div id="stand-work-list" class="flex bg-white p-10 basic-main" style="flex-direction: row">
4
- <div style="width: 40%;height: 100%" v-show="leftShow">
5
- <div class="row" style="height: 10%;width: 50%">
6
- <div class="form-group form-input-group" style="display: flex;justify-content: flex-start">
7
- <label class="font_normal_body" style="width: 40%">查询日期</label>
8
- <datepicker placeholder="查询日期"
9
- :value.sync="searchDate"
10
- v-model="searchDate"
11
- :format="'yyyy-MM-dd HH:mm:ss'"
12
- ></datepicker>
13
- <button type="button" name="button"
14
- class="button_search button_spacing" style="z-index: 2" @click="searchEcharts()">查询</button>
15
- </div>
16
- </div>
17
- <div style="height: 45%;" id="husunzhexian1"></div>
18
- <div style="height: 45%;" id="husunzhexian2"></div>
19
- </div>
20
- <div class="span" style="width: 60%;overflow: auto">
21
- <visit-info v-if="showVisit" :phone="wavflie" :idwavfile="idwavfile" :outltime="outltime" @show-obj="watchShow" v-on:visitback="visitback" ></visit-info>
22
- <criteria-paged :model="model" v-else v-ref:paged>
23
- <criteria partial='criteria' v-ref:criteria @condition-changed='$parent.search'>
24
- <div novalidate class="form-inline" partial>
25
- <div class="row">
26
- <div class="col-sm-3 form-group form-input-group">
27
- <label class="font_normal_body" style="width: 35%">电话号码</label>
28
- <input type="text" class="input_search" v-model="model.telnum" placeholder='电话号码'
29
- condition="telnum like '%{}%'"
30
- :size="model.telnum ? model.telnum.length : 7">
31
- </div>
32
-
33
- <div class="col-sm-3 form-group form-input-group">
34
- <label class="font_normal_body" style="width: 40%">来电时间</label>
35
- <datepicker placeholder="开始时间"
36
- :value.sync="model.f_date"
37
- v-model="model.f_date"
38
- :format="'yyyy-MM-dd HH:mm:ss'"
39
- condition="outltime > '{}'"
40
- ></datepicker>
41
- </div>
42
- <div class="col-sm-3 form-group form-input-group">
43
- <label class="font_normal_body" style="width: 40%">来电时间</label>
44
- <datepicker placeholder="结束时间"
45
- :value.sync="model.f_end_date"
46
- v-model="model.f_end_date"
47
- :format="'yyyy-MM-dd HH:mm:ss'"
48
- condition="outltime < '{}'"
49
- ></datepicker>
50
- </div>
51
- <div class="col-sm-3 form-group form-input-group">
52
- <label class="font_normal_body" style="width: 35%">回访状态</label>
53
- <v-select :value.sync="model.f_flghuifang"
54
- :options='$parent.$parent.huifangs'
55
- :value-single="true"
56
- placeholder='请选择回访状态'
57
- close-on-select
58
- style="width: 60%"
59
- ></v-select>
60
- </div>
61
- <div style="float: right;" class="form-group span">
62
- <button type="button" name="button"
63
- class="button_search button_spacing" @click="search(),$dispatch('search')" style="z-index: 2">查询</button>
64
- <export-excel-tel
65
- :data="$parent.$parent.searchData"
66
- :field="$parent.$parent.excelHeaders"
67
- sqlurl="af-telephone/rs/logic/telephoneExport" sql-name="tel_singleTable_OrderBy" template-name='呼损记录导出'
68
- :choose-col="true">
69
- </export-excel-tel>
70
- </div>
71
- </div>
72
- </div>
73
- </criteria>
74
- <data-grid partial='list' v-ref:grid :model="model" class="list_area table_sy">
75
- <template partial='head'>
76
- <tr>
77
- <th><nobr>电话号码</nobr></th>
78
- <th><nobr>来电时间</nobr></th>
79
- <th><nobr>操作</nobr></th>
80
- </tr>
81
- </template>
82
- <template partial='body'>
83
- <td style="text-align: center">{{row.telnum}}</td>
84
- <td style="text-align: center">{{row.outltime}}</td>
85
- <td style="text-align: center">
86
- <button-link v-show="!row.f_flghuifang" type="button" class="btn btn-link" @click="$parent.$parent.$parent.playWav(row.telnum,row.id)">回拨</button-link>
87
- </td>
88
- </template>
89
- </data-grid>
90
- </criteria-paged>
91
- </div>
92
- </div>
93
- </div>
94
- <!-- <modal :show.sync="showVisit" v-ref:modal backdrop="false">-->
95
- <!-- <header slot="modal-header" class="modal-header">-->
96
- <!-- </header>-->
97
- <!-- <article slot="modal-body" class="modal-body">-->
98
- <!-- <visit-info v-if="showVisit" :phone="wavflie" :idwavfile="idwavfile" :outltime="outltime" @show-obj="watchShow"></visit-info>-->
99
- <!-- </article>-->
100
- <!-- <footer slot="modal-footer" class="modal-footer">-->
101
- <!-- </footer>-->
102
- <!-- </modal>-->
103
- </template>
104
-
105
- <script>
106
- import {HttpResetClass, PagedList} from 'vue-client'
107
- import * as Util from '../../../components/Util'
108
- export default {
109
- title: '呼损记录',
110
- data () {
111
- return {
112
- model: new PagedList('af-telephone/rs/sql/tel_singleTable_OrderBy', 20, {items: "'*'", tablename: "'t_records'", orderitem: "'outltime desc'" }),
113
- row: null,
114
- show: false,
115
- wavflie : '',
116
- idwavfile:'',
117
- leftShow:true,
118
- searchDate:Util.toStandardDateString(),
119
- orderMan: '',
120
- msgs: [],
121
- huifangs:[{label:"全部",value:""},{label:"已回访",value:"已回访"},{label:"未回访",value:"未回访"}],
122
- service: Object,
123
- pendingCount: 0,
124
- serobj:Object,
125
- showVisit:false,
126
- outltime:this.getNowFormatDate(),
127
- searchData:{
128
- items: "*",
129
- tablename: "t_records",
130
- orderitem: "outltime desc",
131
- condition: '1=1'
132
- },
133
- excelHeaders: {
134
- 'telnum': '电话号码',
135
- 'outltime': '来电时间',
136
- },
137
- }
138
- },
139
- ready () {
140
- this.$refs.paged.$refs.criteria.model.f_flghuifang = '未回访'
141
- this.leftShow = (this.$parent.leftShow == undefined ? true : this.$parent.leftShow)
142
- this.renderEcharts(Util.toStandardDateString())
143
- // this.selfSearch()
144
-
145
- },
146
- methods: {
147
- visitback(val){
148
- this.showVisit = false
149
- if(val == 'commit'){
150
- this.$refs.paged.$refs.criteria.search()
151
- }
152
- },
153
- searchEcharts(){
154
- console.log("9334",this.searchDate)
155
- this.renderEcharts(this.searchDate)
156
- },
157
- //获取当前日期
158
- renderEcharts(date){
159
- console.log("933",Util.addDate(3,date),Util.addDate(-3),date)
160
- new HttpResetClass().load("post",'af-telephone/rs/sql/getLossPhoneByTime',{
161
- data:{
162
- groupitem:'SUBSTRING(outltime, 0, 11)',
163
- condition:`outltime>='${Util.addDate(-3,date)} 00:00:00' and outltime<='${Util.addDate(3,date)} 23:59:59' and f_filiale_id = '${this.$login.f.orgid}'`
164
- }
165
- },{resolveMsg:null,rejectMsg:null}).then(res=>{
166
- let myChart1 = this.$echarts.init(document.getElementById(("husunzhexian1")))
167
- myChart1.setOption(this.getAOptions("呼损日分析表",res.data))
168
- })
169
-
170
- new HttpResetClass().load("post",'af-telephone/rs/sql/getLossPhoneByTime',{
171
- data:{
172
- groupitem:"SUBSTRING(outltime, 12, 2)+':00'",
173
- condition:`outltime>='${Util.toStandardDateString(date)} 08:00:00' and outltime<='${Util.toStandardDateString(date)} 18:59:59' and f_filiale_id = '${this.$login.f.orgid}'`
174
- }
175
- },{resolveMsg:null,rejectMsg:null}).then(res=>{
176
- let myChart1 = this.$echarts.init(document.getElementById(("husunzhexian2")))
177
- myChart1.setOption(this.getAOptions("呼损时分析表",res.data))
178
- })
179
- },
180
- getAOptions(title,arr){
181
-
182
- return {
183
- color: ['rgb(155,214,129)', '#73c0de'],
184
- title: {
185
- text: title
186
- },
187
- tooltip: {
188
- trigger: 'axis'
189
- },
190
- legend: {
191
- data: ['忙线', '未接']
192
- },
193
- grid: {
194
- left: '3%',
195
- right: '4%',
196
- bottom: '3%',
197
- containLabel: true
198
- },
199
- toolbox: {
200
- feature: {
201
- saveAsImage: {}
202
- }
203
- },
204
- xAxis: {
205
- type: 'category',
206
- boundaryGap: false,
207
- data: arr.map(item=>{
208
- if(title === '呼损日分析表'){
209
- return item.timearea.substr(5,5)
210
- }
211
- return item.timearea
212
- })
213
- },
214
- yAxis: {
215
- type: 'value'
216
- },
217
- series: [
218
- {
219
- name: '未接',
220
- type: 'line',
221
- stack: 'Total',
222
- data: arr.map(item=>item.weijie)
223
- },
224
- {
225
- name: '忙线',
226
- type: 'line',
227
- stack: 'Total',
228
- data: arr.map(item=>item.zhanxian)
229
- },
230
- ]
231
- }
232
- },
233
- getNowFormatDate() {
234
- var date = new Date();
235
- var seperator1 = "-";
236
- var month = date.getMonth() + 1;
237
- var strDate = date.getDate();
238
- if (month >= 1 && month <= 9) {
239
- month = "0" + month;
240
- }
241
- if (strDate >= 0 && strDate <= 9) {
242
- strDate = "0" + strDate;
243
- }
244
- var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + ' 23:59:59'
245
- return currentdate;
246
- },
247
- watchShow(val){
248
- this.showVisit = val
249
- },
250
- clearVisit(){
251
- this.show = false
252
- },
253
- playWav(val,val1){
254
- if (!this.leftShow){
255
- this.$parent.setUserPhone(val)
256
- }
257
- this.wavflie=val;
258
- this.idwavfile=val1
259
- this.showVisit = true
260
- },
261
- closemodel () {
262
- this.showVisit = false
263
- },
264
- search(args) {
265
- if(args.model.f_flghuifang){
266
- if(args.model.f_flghuifang==='已回访'){
267
- args.condition += ` and f_flghuifang = '已回访'`
268
- }else{
269
- args.condition += ` and f_flghuifang is null`
270
- }
271
- }
272
- args.condition += " AND isnull(starttime,'') = '' AND isnull(findtime,'') != ''"
273
- this.searchData.condition = args.condition
274
- this.model.search(args.condition)
275
- },
276
- },
277
- }
278
- </script>
1
+ <template >
2
+ <div class="flex-row">
3
+ <div id="stand-work-list" class="flex bg-white p-10 basic-main" style="flex-direction: row">
4
+ <div style="width: 40%;height: 100%" v-show="leftShow">
5
+ <div class="row" style="height: 10%;width: 50%">
6
+ <div class="form-group form-input-group" style="display: flex;justify-content: flex-start">
7
+ <label class="font_normal_body" style="width: 40%">查询日期</label>
8
+ <datepicker placeholder="查询日期"
9
+ :value.sync="searchDate"
10
+ v-model="searchDate"
11
+ :format="'yyyy-MM-dd HH:mm:ss'"
12
+ ></datepicker>
13
+ <button type="button" name="button"
14
+ class="button_search button_spacing" style="z-index: 2" @click="searchEcharts()">查询</button>
15
+ </div>
16
+ </div>
17
+ <div style="height: 45%;" id="husunzhexian1"></div>
18
+ <div style="height: 45%;" id="husunzhexian2"></div>
19
+ </div>
20
+ <div class="span" style="width: 60%;overflow: auto">
21
+ <visit-info v-if="showVisit" :phone="wavflie" :idwavfile="idwavfile" :outltime="outltime" @show-obj="watchShow" v-on:visitback="visitback" ></visit-info>
22
+ <criteria-paged :model="model" v-else v-ref:paged>
23
+ <criteria partial='criteria' v-ref:criteria @condition-changed='$parent.search'>
24
+ <div novalidate class="form-inline" partial>
25
+ <div class="row">
26
+ <div class="col-sm-3 form-group form-input-group">
27
+ <label class="font_normal_body" style="width: 35%">电话号码</label>
28
+ <input type="text" class="input_search" v-model="model.telnum" placeholder='电话号码'
29
+ condition="telnum like '%{}%'"
30
+ :size="model.telnum ? model.telnum.length : 7">
31
+ </div>
32
+
33
+ <div class="col-sm-3 form-group form-input-group">
34
+ <label class="font_normal_body" style="width: 40%">来电时间</label>
35
+ <datepicker placeholder="开始时间"
36
+ :value.sync="model.f_date"
37
+ v-model="model.f_date"
38
+ :format="'yyyy-MM-dd HH:mm:ss'"
39
+ condition="outltime > '{}'"
40
+ ></datepicker>
41
+ </div>
42
+ <div class="col-sm-3 form-group form-input-group">
43
+ <label class="font_normal_body" style="width: 40%">来电时间</label>
44
+ <datepicker placeholder="结束时间"
45
+ :value.sync="model.f_end_date"
46
+ v-model="model.f_end_date"
47
+ :format="'yyyy-MM-dd HH:mm:ss'"
48
+ condition="outltime < '{}'"
49
+ ></datepicker>
50
+ </div>
51
+ <div class="col-sm-3 form-group form-input-group">
52
+ <label class="font_normal_body" style="width: 35%">回访状态</label>
53
+ <v-select :value.sync="model.f_flghuifang"
54
+ :options='$parent.$parent.huifangs'
55
+ :value-single="true"
56
+ placeholder='请选择回访状态'
57
+ close-on-select
58
+ style="width: 60%"
59
+ ></v-select>
60
+ </div>
61
+ <div style="float: right;" class="form-group span">
62
+ <button type="button" name="button"
63
+ class="button_search button_spacing" @click="search(),$dispatch('search')" style="z-index: 2">查询</button>
64
+ <export-excel-tel
65
+ :data="$parent.$parent.searchData"
66
+ :field="$parent.$parent.excelHeaders"
67
+ sqlurl="af-telephone/rs/logic/telephoneExport" sql-name="tel_singleTable_OrderBy" template-name='呼损记录导出'
68
+ :choose-col="true">
69
+ </export-excel-tel>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </criteria>
74
+ <data-grid partial='list' v-ref:grid :model="model" class="list_area table_sy">
75
+ <template partial='head'>
76
+ <tr>
77
+ <th><nobr>电话号码</nobr></th>
78
+ <th><nobr>来电时间</nobr></th>
79
+ <th><nobr>操作</nobr></th>
80
+ </tr>
81
+ </template>
82
+ <template partial='body'>
83
+ <td style="text-align: center">{{row.telnum}}</td>
84
+ <td style="text-align: center">{{row.outltime}}</td>
85
+ <td style="text-align: center">
86
+ <button-link v-show="!row.f_flghuifang" type="button" class="btn btn-link" @click="$parent.$parent.$parent.playWav(row.telnum,row.id)">回拨</button-link>
87
+ </td>
88
+ </template>
89
+ </data-grid>
90
+ </criteria-paged>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <!-- <modal :show.sync="showVisit" v-ref:modal backdrop="false">-->
95
+ <!-- <header slot="modal-header" class="modal-header">-->
96
+ <!-- </header>-->
97
+ <!-- <article slot="modal-body" class="modal-body">-->
98
+ <!-- <visit-info v-if="showVisit" :phone="wavflie" :idwavfile="idwavfile" :outltime="outltime" @show-obj="watchShow"></visit-info>-->
99
+ <!-- </article>-->
100
+ <!-- <footer slot="modal-footer" class="modal-footer">-->
101
+ <!-- </footer>-->
102
+ <!-- </modal>-->
103
+ </template>
104
+
105
+ <script>
106
+ import {HttpResetClass, PagedList} from 'vue-client'
107
+ import * as Util from '../../../components/Util'
108
+ export default {
109
+ title: '呼损记录',
110
+ data () {
111
+ return {
112
+ model: new PagedList('af-telephone/rs/sql/tel_singleTable_OrderBy', 20, {items: "'*'", tablename: "'t_records'", orderitem: "'outltime desc'" }),
113
+ row: null,
114
+ show: false,
115
+ wavflie : '',
116
+ idwavfile:'',
117
+ leftShow:true,
118
+ searchDate:Util.toStandardDateString(),
119
+ orderMan: '',
120
+ msgs: [],
121
+ huifangs:[{label:"全部",value:""},{label:"已回访",value:"已回访"},{label:"未回访",value:"未回访"}],
122
+ service: Object,
123
+ pendingCount: 0,
124
+ serobj:Object,
125
+ showVisit:false,
126
+ outltime:this.getNowFormatDate(),
127
+ searchData:{
128
+ items: "*",
129
+ tablename: "t_records",
130
+ orderitem: "outltime desc",
131
+ condition: '1=1'
132
+ },
133
+ excelHeaders: {
134
+ 'telnum': '电话号码',
135
+ 'outltime': '来电时间',
136
+ },
137
+ f_filiale:'',
138
+ f_filiale_id:'',
139
+ }
140
+ },
141
+ ready () {
142
+ this.f_filiale = this.$login.f.orgs
143
+ this.f_filiale_id = this.$login.f.orgid
144
+ this.$refs.paged.$refs.criteria.model.f_flghuifang = '未回访'
145
+ this.leftShow = (this.$parent.leftShow == undefined ? true : this.$parent.leftShow)
146
+ this.renderEcharts(Util.toStandardDateString())
147
+ // this.selfSearch()
148
+
149
+ },
150
+ methods: {
151
+ visitback(val){
152
+ this.showVisit = false
153
+ if(val == 'commit'){
154
+ this.$refs.paged.$refs.criteria.search()
155
+ }
156
+ },
157
+ searchEcharts(){
158
+ console.log("9334",this.searchDate)
159
+ this.renderEcharts(this.searchDate)
160
+ },
161
+ //获取当前日期
162
+ renderEcharts(date){
163
+ console.log("933",Util.addDate(3,date),Util.addDate(-3),date)
164
+ new HttpResetClass().load("post",'af-telephone/rs/sql/getLossPhoneByTime',{
165
+ data:{
166
+ groupitem:'SUBSTRING(outltime, 0, 11)',
167
+ condition:`outltime>='${Util.addDate(-3,date)} 00:00:00' and outltime<='${Util.addDate(3,date)} 23:59:59' and f_filiale_id = '${this.$login.f.orgid}'`
168
+ }
169
+ },{resolveMsg:null,rejectMsg:null}).then(res=>{
170
+ let myChart1 = this.$echarts.init(document.getElementById(("husunzhexian1")))
171
+ myChart1.setOption(this.getAOptions("呼损日分析表",res.data))
172
+ })
173
+
174
+ new HttpResetClass().load("post",'af-telephone/rs/sql/getLossPhoneByTime',{
175
+ data:{
176
+ groupitem:"SUBSTRING(outltime, 12, 2)+':00'",
177
+ condition:`outltime>='${Util.toStandardDateString(date)} 08:00:00' and outltime<='${Util.toStandardDateString(date)} 18:59:59' and f_filiale_id = '${this.$login.f.orgid}'`
178
+ }
179
+ },{resolveMsg:null,rejectMsg:null}).then(res=>{
180
+ let myChart1 = this.$echarts.init(document.getElementById(("husunzhexian2")))
181
+ myChart1.setOption(this.getAOptions("呼损时分析表",res.data))
182
+ })
183
+ },
184
+ getAOptions(title,arr){
185
+
186
+ return {
187
+ color: ['rgb(155,214,129)', '#73c0de'],
188
+ title: {
189
+ text: title
190
+ },
191
+ tooltip: {
192
+ trigger: 'axis'
193
+ },
194
+ legend: {
195
+ data: ['忙线', '未接']
196
+ },
197
+ grid: {
198
+ left: '3%',
199
+ right: '4%',
200
+ bottom: '3%',
201
+ containLabel: true
202
+ },
203
+ toolbox: {
204
+ feature: {
205
+ saveAsImage: {}
206
+ }
207
+ },
208
+ xAxis: {
209
+ type: 'category',
210
+ boundaryGap: false,
211
+ data: arr.map(item=>{
212
+ if(title === '呼损日分析表'){
213
+ return item.timearea.substr(5,5)
214
+ }
215
+ return item.timearea
216
+ })
217
+ },
218
+ yAxis: {
219
+ type: 'value'
220
+ },
221
+ series: [
222
+ {
223
+ name: '未接',
224
+ type: 'line',
225
+ stack: 'Total',
226
+ data: arr.map(item=>item.weijie)
227
+ },
228
+ {
229
+ name: '忙线',
230
+ type: 'line',
231
+ stack: 'Total',
232
+ data: arr.map(item=>item.zhanxian)
233
+ },
234
+ ]
235
+ }
236
+ },
237
+ getNowFormatDate() {
238
+ var date = new Date();
239
+ var seperator1 = "-";
240
+ var month = date.getMonth() + 1;
241
+ var strDate = date.getDate();
242
+ if (month >= 1 && month <= 9) {
243
+ month = "0" + month;
244
+ }
245
+ if (strDate >= 0 && strDate <= 9) {
246
+ strDate = "0" + strDate;
247
+ }
248
+ var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + ' 23:59:59'
249
+ return currentdate;
250
+ },
251
+ watchShow(val){
252
+ this.showVisit = val
253
+ },
254
+ clearVisit(){
255
+ this.show = false
256
+ },
257
+ playWav(val,val1){
258
+ if (!this.leftShow){
259
+ this.$parent.setUserPhone(val)
260
+ }
261
+ this.wavflie=val;
262
+ this.idwavfile=val1
263
+ this.showVisit = true
264
+ },
265
+ closemodel () {
266
+ this.showVisit = false
267
+ },
268
+ search(args) {
269
+ if(args.model.f_flghuifang){
270
+ if(args.model.f_flghuifang==='已回访'){
271
+ args.condition += ` and f_flghuifang = '已回访'`
272
+ }else{
273
+ args.condition += ` and f_flghuifang is null`
274
+ }
275
+ }
276
+ args.condition += " AND isnull(starttime,'') = '' AND isnull(findtime,'') != ''"
277
+ if(this.f_filiale_id){
278
+ args.condition += ` and f_filiale_id = '${this.f_filiale_id}'`
279
+ }
280
+ this.searchData.condition = args.condition
281
+ this.model.search(args.condition)
282
+ },
283
+ },
284
+ }
285
+ </script>