system-clients 3.2.66 → 3.2.67-wuhai
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
@@ -1,105 +1,105 @@
|
|
1
|
-
{
|
2
|
-
"name": "system-clients",
|
3
|
-
"version": "3.2.
|
4
|
-
"description": "系统基础框架",
|
5
|
-
"main": "src/index.js",
|
6
|
-
"directories": {
|
7
|
-
"doc": "doc",
|
8
|
-
"example": "examples",
|
9
|
-
"test": "test"
|
10
|
-
},
|
11
|
-
"scripts": {
|
12
|
-
"example": "node build/example-server.js",
|
13
|
-
"dev": "node build/dev-server.js",
|
14
|
-
"lint": "eslint src/**.js test/e2e/**.js test/unit/specs/** build/**.js",
|
15
|
-
"build": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
|
16
|
-
"e2e": "node test/e2e/runner.js",
|
17
|
-
"unit": "karma start test/unit/karma.conf.js",
|
18
|
-
"makeall": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_OPTIONS=--max_old_space_size=4096 NODE_ENV=production webpack --progress --hide-modules --config build/webpack.example.conf.js",
|
19
|
-
"release": "npm set registry http://registry.npmjs.org && npm publish && npm set registry http://registry.npm.taobao.org"
|
20
|
-
},
|
21
|
-
"dependencies": {
|
22
|
-
"base64-js": "^1.3.0",
|
23
|
-
"js-base64": "^2.4.9",
|
24
|
-
"less": "^2.7.1",
|
25
|
-
"less-loader": "^2.2.3",
|
26
|
-
"nyc": "^15.1.0",
|
27
|
-
"src": "^1.1.2",
|
28
|
-
"vue": "^1.0.17"
|
29
|
-
},
|
30
|
-
"devDependencies": {
|
31
|
-
"babel-core": "^6.0.0",
|
32
|
-
"babel-loader": "^6.0.0",
|
33
|
-
"babel-plugin-transform-runtime": "^6.0.0",
|
34
|
-
"babel-preset-es2015": "^6.0.0",
|
35
|
-
"babel-preset-stage-2": "^6.0.0",
|
36
|
-
"chai": "^3.5.0",
|
37
|
-
"connect-history-api-fallback": "^1.1.0",
|
38
|
-
"cross-env": "^1.0.7",
|
39
|
-
"cross-spawn": "^2.1.5",
|
40
|
-
"css-loader": "^0.23.0",
|
41
|
-
"eslint": "^2.0.0",
|
42
|
-
"eslint-config-standard": "^5.1.0",
|
43
|
-
"eslint-friendly-formatter": "^1.2.2",
|
44
|
-
"eslint-loader": "^1.3.0",
|
45
|
-
"eslint-plugin-html": "^1.3.0",
|
46
|
-
"eslint-plugin-promise": "^1.0.8",
|
47
|
-
"eslint-plugin-standard": "^1.3.2",
|
48
|
-
"eslint-plugin-vue": "^0.1.1",
|
49
|
-
"eventsource-polyfill": "^0.9.6",
|
50
|
-
"express": "^4.13.3",
|
51
|
-
"extract-text-webpack-plugin": "^1.0.1",
|
52
|
-
"file-loader": "^0.8.4",
|
53
|
-
"function-bind": "^1.0.2",
|
54
|
-
"html-webpack-plugin": "^2.8.1",
|
55
|
-
"http-proxy-middleware": "^0.11.0",
|
56
|
-
"inject-loader": "^2.0.1",
|
57
|
-
"isparta-loader": "^2.0.0",
|
58
|
-
"jasmine-core": "^2.4.1",
|
59
|
-
"jquery": "^3.3.1",
|
60
|
-
"jsencrypt": "^3.0.0-rc.1",
|
61
|
-
"json-loader": "^0.5.4",
|
62
|
-
"karma": "^1.4.1",
|
63
|
-
"karma-chrome-launcher": "^2.2.0",
|
64
|
-
"karma-coverage": "^1.1.1",
|
65
|
-
"karma-mocha": "^1.3.0",
|
66
|
-
"karma-sinon-chai": "^1.3.1",
|
67
|
-
"karma-sourcemap-loader": "^0.3.7",
|
68
|
-
"karma-spec-reporter": "0.0.31",
|
69
|
-
"karma-webpack": "^2.0.2",
|
70
|
-
"manage-client": "^1.4.20",
|
71
|
-
"mkdirp": "^0.5.1",
|
72
|
-
"mocha": "^3.2.0",
|
73
|
-
"ncp": "^2.0.0",
|
74
|
-
"nightwatch": "^0.8.18",
|
75
|
-
"rimraf": "^2.5.0",
|
76
|
-
"selenium-server": "2.52.0",
|
77
|
-
"sinon": "^2.1.0",
|
78
|
-
"sinon-chai": "^2.8.0",
|
79
|
-
"style": "0.0.3",
|
80
|
-
"style-loader": "^0.20.3",
|
81
|
-
"url-loader": "^0.5.7",
|
82
|
-
"vue-client": "1.24.79",
|
83
|
-
"vue-hot-reload-api": "^1.2.0",
|
84
|
-
"vue-html-loader": "^1.0.0",
|
85
|
-
"vue-loader": "^8.2.1",
|
86
|
-
"vue-resource": "^1.5.0",
|
87
|
-
"vue-router": "^0.7.13",
|
88
|
-
"vue-strap": "^1.0.9",
|
89
|
-
"vue-style-loader": "^1.0.0",
|
90
|
-
"vue-validator": "2.1.7",
|
91
|
-
"webpack": "^1.12.2",
|
92
|
-
"webpack-dev-middleware": "^1.4.0",
|
93
|
-
"webpack-hot-middleware": "^2.6.0",
|
94
|
-
"webpack-merge": "^0.8.3"
|
95
|
-
},
|
96
|
-
"repository": {
|
97
|
-
"type": "git",
|
98
|
-
"url": "https://gitee.com/aotu/System"
|
99
|
-
},
|
100
|
-
"keywords": [
|
101
|
-
"system_clients"
|
102
|
-
],
|
103
|
-
"author": "杨文宇",
|
104
|
-
"license": "ISC"
|
105
|
-
}
|
1
|
+
{
|
2
|
+
"name": "system-clients",
|
3
|
+
"version": "3.2.67-wuhai",
|
4
|
+
"description": "系统基础框架",
|
5
|
+
"main": "src/index.js",
|
6
|
+
"directories": {
|
7
|
+
"doc": "doc",
|
8
|
+
"example": "examples",
|
9
|
+
"test": "test"
|
10
|
+
},
|
11
|
+
"scripts": {
|
12
|
+
"example": "node build/example-server.js",
|
13
|
+
"dev": "node build/dev-server.js",
|
14
|
+
"lint": "eslint src/**.js test/e2e/**.js test/unit/specs/** build/**.js",
|
15
|
+
"build": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
|
16
|
+
"e2e": "node test/e2e/runner.js",
|
17
|
+
"unit": "karma start test/unit/karma.conf.js",
|
18
|
+
"makeall": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_OPTIONS=--max_old_space_size=4096 NODE_ENV=production webpack --progress --hide-modules --config build/webpack.example.conf.js",
|
19
|
+
"release": "npm set registry http://registry.npmjs.org && npm publish && npm set registry http://registry.npm.taobao.org"
|
20
|
+
},
|
21
|
+
"dependencies": {
|
22
|
+
"base64-js": "^1.3.0",
|
23
|
+
"js-base64": "^2.4.9",
|
24
|
+
"less": "^2.7.1",
|
25
|
+
"less-loader": "^2.2.3",
|
26
|
+
"nyc": "^15.1.0",
|
27
|
+
"src": "^1.1.2",
|
28
|
+
"vue": "^1.0.17"
|
29
|
+
},
|
30
|
+
"devDependencies": {
|
31
|
+
"babel-core": "^6.0.0",
|
32
|
+
"babel-loader": "^6.0.0",
|
33
|
+
"babel-plugin-transform-runtime": "^6.0.0",
|
34
|
+
"babel-preset-es2015": "^6.0.0",
|
35
|
+
"babel-preset-stage-2": "^6.0.0",
|
36
|
+
"chai": "^3.5.0",
|
37
|
+
"connect-history-api-fallback": "^1.1.0",
|
38
|
+
"cross-env": "^1.0.7",
|
39
|
+
"cross-spawn": "^2.1.5",
|
40
|
+
"css-loader": "^0.23.0",
|
41
|
+
"eslint": "^2.0.0",
|
42
|
+
"eslint-config-standard": "^5.1.0",
|
43
|
+
"eslint-friendly-formatter": "^1.2.2",
|
44
|
+
"eslint-loader": "^1.3.0",
|
45
|
+
"eslint-plugin-html": "^1.3.0",
|
46
|
+
"eslint-plugin-promise": "^1.0.8",
|
47
|
+
"eslint-plugin-standard": "^1.3.2",
|
48
|
+
"eslint-plugin-vue": "^0.1.1",
|
49
|
+
"eventsource-polyfill": "^0.9.6",
|
50
|
+
"express": "^4.13.3",
|
51
|
+
"extract-text-webpack-plugin": "^1.0.1",
|
52
|
+
"file-loader": "^0.8.4",
|
53
|
+
"function-bind": "^1.0.2",
|
54
|
+
"html-webpack-plugin": "^2.8.1",
|
55
|
+
"http-proxy-middleware": "^0.11.0",
|
56
|
+
"inject-loader": "^2.0.1",
|
57
|
+
"isparta-loader": "^2.0.0",
|
58
|
+
"jasmine-core": "^2.4.1",
|
59
|
+
"jquery": "^3.3.1",
|
60
|
+
"jsencrypt": "^3.0.0-rc.1",
|
61
|
+
"json-loader": "^0.5.4",
|
62
|
+
"karma": "^1.4.1",
|
63
|
+
"karma-chrome-launcher": "^2.2.0",
|
64
|
+
"karma-coverage": "^1.1.1",
|
65
|
+
"karma-mocha": "^1.3.0",
|
66
|
+
"karma-sinon-chai": "^1.3.1",
|
67
|
+
"karma-sourcemap-loader": "^0.3.7",
|
68
|
+
"karma-spec-reporter": "0.0.31",
|
69
|
+
"karma-webpack": "^2.0.2",
|
70
|
+
"manage-client": "^1.4.20",
|
71
|
+
"mkdirp": "^0.5.1",
|
72
|
+
"mocha": "^3.2.0",
|
73
|
+
"ncp": "^2.0.0",
|
74
|
+
"nightwatch": "^0.8.18",
|
75
|
+
"rimraf": "^2.5.0",
|
76
|
+
"selenium-server": "2.52.0",
|
77
|
+
"sinon": "^2.1.0",
|
78
|
+
"sinon-chai": "^2.8.0",
|
79
|
+
"style": "0.0.3",
|
80
|
+
"style-loader": "^0.20.3",
|
81
|
+
"url-loader": "^0.5.7",
|
82
|
+
"vue-client": "1.24.79",
|
83
|
+
"vue-hot-reload-api": "^1.2.0",
|
84
|
+
"vue-html-loader": "^1.0.0",
|
85
|
+
"vue-loader": "^8.2.1",
|
86
|
+
"vue-resource": "^1.5.0",
|
87
|
+
"vue-router": "^0.7.13",
|
88
|
+
"vue-strap": "^1.0.9",
|
89
|
+
"vue-style-loader": "^1.0.0",
|
90
|
+
"vue-validator": "2.1.7",
|
91
|
+
"webpack": "^1.12.2",
|
92
|
+
"webpack-dev-middleware": "^1.4.0",
|
93
|
+
"webpack-hot-middleware": "^2.6.0",
|
94
|
+
"webpack-merge": "^0.8.3"
|
95
|
+
},
|
96
|
+
"repository": {
|
97
|
+
"type": "git",
|
98
|
+
"url": "https://gitee.com/aotu/System"
|
99
|
+
},
|
100
|
+
"keywords": [
|
101
|
+
"system_clients"
|
102
|
+
],
|
103
|
+
"author": "杨文宇",
|
104
|
+
"license": "ISC"
|
105
|
+
}
|
package/src/components/Main.vue
CHANGED
@@ -202,217 +202,197 @@ let createWaterMark = function (userName) {
|
|
202
202
|
(document.head.append || document.head.appendChild).apply(document.head, [style]);
|
203
203
|
}
|
204
204
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
205
|
+
window.onunload = () => {
|
206
|
+
vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
|
207
|
+
}
|
208
|
+
window.onbeforeunload = () => {
|
209
|
+
vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
|
210
|
+
}
|
211
|
+
export default {
|
212
|
+
title: '主界面',
|
213
|
+
props: ['functions', 'userid', 'config'],
|
214
|
+
data() {
|
215
|
+
return {
|
216
|
+
// 页面提示信息定时器
|
217
|
+
interval: null,
|
218
|
+
newTipShow: false,
|
219
|
+
newTipContextShow: false,
|
220
|
+
AppDaiBan: '',
|
221
|
+
OrderDaiBan: '',
|
222
|
+
// 左侧树下部三个小图标
|
223
|
+
imgs: {
|
224
|
+
open: '/images/lefticon/菜单伸缩.png',
|
225
|
+
set: '/images/lefticon/系统设置.png',
|
226
|
+
out: '/images/lefticon/退出系统.png',
|
227
|
+
img1: '/images/newStyle/login-user.png',
|
228
|
+
logoimg: '/static/newStyle/fife.png'
|
229
|
+
// img2: '/images/lefticon/退出系统.png',
|
230
|
+
},
|
231
|
+
treeOrIcon: false,
|
232
|
+
qrCode:false,
|
233
|
+
isManger: false,
|
234
|
+
show: false,
|
235
|
+
orgpathnames: `${this.$login.f.orgs}-${this.$login.f.deps}-${this.$login.f.name}`,
|
236
|
+
systemname: '客服系统',
|
237
|
+
date: this.$login.toStandardDateString(),
|
238
|
+
tabs: [], //已初始化页签数组
|
239
|
+
selecttab: '',
|
240
|
+
setting: true,
|
241
|
+
srcsetting: '../../static/newStyle/setting.png',
|
242
|
+
showwatermakeflag: false,
|
243
|
+
// headerHint: true, // 右侧顶部提示信息
|
244
|
+
// value: 25645.26,
|
245
|
+
// AddChangeMsgShow: false,
|
246
|
+
// showsum: false
|
247
|
+
}
|
248
|
+
},
|
249
|
+
ready() {
|
250
|
+
getwartermakr(this);
|
251
|
+
let component = this.$login.getUrlCompileParames('component')
|
252
|
+
if (component) {
|
253
|
+
this.isManger = true
|
254
|
+
this.$refs.route.init(component, {data: this.functions.functions})
|
255
|
+
}
|
256
|
+
if (this.$login.f.password == '1') {
|
257
|
+
this.$showMessage('本地登录系统为此账户的初始密码,请确认修改密码!!!', ['confirm', 'cancel']).then((res) => {
|
258
|
+
if (res == 'confirm')
|
259
|
+
this.show = true
|
260
|
+
})
|
261
|
+
}
|
262
|
+
console.log("系统名称", this.$appdata.getSingleValue("系统名称"))
|
263
|
+
this.systemname = this.$appdata.getSingleValue("系统名称") ? this.$appdata.getSingleValue("系统名称") : '客服系统'
|
264
|
+
// let oBox = this.getElement("box")
|
265
|
+
// let oTop = this.getElement("top")
|
266
|
+
// let oBottom = this.getElement("bottom")
|
267
|
+
// let oLine = this.getElement("line")
|
268
|
+
// let that = this
|
269
|
+
// oLine.onmousedown = function(e) {
|
270
|
+
// let disX = (e || event).clientX
|
271
|
+
// oLine.left = oLine.offsetLeft
|
272
|
+
// document.onmousemove = function(e) {
|
273
|
+
// let iT = oLine.left + ((e || event).clientX - disX)
|
274
|
+
// var e = e || window.event
|
275
|
+
// let tarnameb = e.target || e.srcElement
|
276
|
+
// let maxT = oBox.clientWight - oLine.offsetWidth
|
277
|
+
// oLine.style.margin = 0
|
278
|
+
// iT < 0 && (iT = 0)
|
279
|
+
// iT > maxT && (iT = maxT)
|
280
|
+
// oLine.style.left = oTop.style.width = iT + "px"
|
281
|
+
// oBottom.style.width = oBox.clientWidth - iT + "px"
|
282
|
+
// that.$set('treeWidth', iT)
|
283
|
+
// return false
|
284
|
+
// }
|
285
|
+
// document.onmouseup = function() {
|
286
|
+
// document.onmousemove = null
|
287
|
+
// document.onmouseup = null
|
288
|
+
// oLine.releaseCapture && oLine.releaseCapture()
|
289
|
+
// }
|
290
|
+
// oLine.setCapture && oLine.setCapture()
|
291
|
+
// return false
|
292
|
+
// }
|
293
|
+
this.changeShow()
|
294
|
+
this.gotoWorkOrderSite()
|
295
|
+
// 获取预约列表
|
296
|
+
this.functions.f_role_name && this.functions.f_role_name.includes(this.config.msgRole) && this.config.isTip && this.getOrderList()
|
297
|
+
},
|
298
|
+
methods: {
|
299
|
+
getOrderList(){
|
300
|
+
let times = this.config.times * 60 * 1000
|
301
|
+
console.log("=定时提示间隔=", times)
|
302
|
+
try {
|
303
|
+
this.interval = setInterval(() => {
|
304
|
+
this.getDaiBan()
|
305
|
+
}, times)
|
306
|
+
} catch (error) {
|
307
|
+
console.log('捕获到异常', error)
|
248
308
|
}
|
249
309
|
},
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
310
|
+
async getDaiBan(){
|
311
|
+
this.OrderDaiBan = ''
|
312
|
+
this.AppDaiBan = ''
|
313
|
+
let http = new HttpResetClass()
|
314
|
+
await http.load('POST', '/rs/sql/singleTable', {data: {
|
315
|
+
tablename:'t_order_center',
|
316
|
+
condition:` (f_orderstate != '预约成功' and f_orgstr ='${this.$login.f.orgid}' and f_orderstate != '预约失败' ) or f_orderstate is null`
|
317
|
+
}}, {
|
318
|
+
resolveMsg: null,
|
319
|
+
rejectMsg: null
|
320
|
+
}).then((res) => {
|
321
|
+
let OrderDaiBan = {}
|
322
|
+
res.data.forEach(item=>{
|
323
|
+
OrderDaiBan[item.f_ordertype] = OrderDaiBan[item.f_ordertype] || []
|
324
|
+
OrderDaiBan[item.f_ordertype].push(item)
|
261
325
|
})
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
// let oBox = this.getElement("box")
|
266
|
-
// let oTop = this.getElement("top")
|
267
|
-
// let oBottom = this.getElement("bottom")
|
268
|
-
// let oLine = this.getElement("line")
|
269
|
-
// let that = this
|
270
|
-
// oLine.onmousedown = function(e) {
|
271
|
-
// let disX = (e || event).clientX
|
272
|
-
// oLine.left = oLine.offsetLeft
|
273
|
-
// document.onmousemove = function(e) {
|
274
|
-
// let iT = oLine.left + ((e || event).clientX - disX)
|
275
|
-
// var e = e || window.event
|
276
|
-
// let tarnameb = e.target || e.srcElement
|
277
|
-
// let maxT = oBox.clientWight - oLine.offsetWidth
|
278
|
-
// oLine.style.margin = 0
|
279
|
-
// iT < 0 && (iT = 0)
|
280
|
-
// iT > maxT && (iT = maxT)
|
281
|
-
// oLine.style.left = oTop.style.width = iT + "px"
|
282
|
-
// oBottom.style.width = oBox.clientWidth - iT + "px"
|
283
|
-
// that.$set('treeWidth', iT)
|
284
|
-
// return false
|
285
|
-
// }
|
286
|
-
// document.onmouseup = function() {
|
287
|
-
// document.onmousemove = null
|
288
|
-
// document.onmouseup = null
|
289
|
-
// oLine.releaseCapture && oLine.releaseCapture()
|
290
|
-
// }
|
291
|
-
// oLine.setCapture && oLine.setCapture()
|
292
|
-
// return false
|
293
|
-
// }
|
294
|
-
this.changeShow()
|
295
|
-
const istelRemindTimes =this.$appdata.getSingleValue("是否开启工单提醒定时器")
|
296
|
-
if(istelRemindTimes=='是'){
|
297
|
-
this.getTimesgotoWorkOrderSite()
|
298
|
-
}
|
299
|
-
const isapplyRemind =this.$appdata.getSingleValue("是否开启提醒")
|
300
|
-
const times =this.$appdata.getSingleValue("提示间隔分钟")
|
301
|
-
if(isapplyRemind=='是'){
|
302
|
-
this.config.isTip = true
|
303
|
-
this.config.times = times
|
304
|
-
}
|
305
|
-
// 获取预约列表
|
306
|
-
this.functions.f_role_name && this.functions.f_role_name.includes(this.config.msgRole) && this.config.isTip && this.getOrderList()
|
307
|
-
},
|
308
|
-
methods: {
|
309
|
-
getOrderList(){
|
310
|
-
let times = this.config.times * 60 * 1000
|
311
|
-
console.log("=定时提示间隔=", times)
|
312
|
-
try {
|
313
|
-
this.interval = setInterval(() => {
|
314
|
-
this.getDaiBan()
|
315
|
-
}, times)
|
316
|
-
} catch (error) {
|
317
|
-
console.log('捕获到异常', error)
|
326
|
+
if (res.data.length> 0){
|
327
|
+
this.OrderDaiBan = `您有${res.data.length}条需要处理的微信预约业务!`
|
328
|
+
this.OrderDaiBan += `其中 ${Object.keys(OrderDaiBan).map(key=>`${key}:${OrderDaiBan[key].length}条`).join(', ')}`
|
318
329
|
}
|
319
|
-
}
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
this.
|
324
|
-
|
325
|
-
},teltimes)
|
326
|
-
}catch (e) {
|
327
|
-
console.log('捕获到异常', e)
|
328
|
-
}
|
329
|
-
},
|
330
|
-
async getDaiBan(){
|
331
|
-
this.OrderDaiBan = ''
|
332
|
-
this.AppDaiBan = ''
|
333
|
-
let http = new HttpResetClass()
|
334
|
-
await http.load('POST', '/rs/sql/singleTable', {data: {
|
335
|
-
tablename:'t_order_center',
|
336
|
-
condition:` (f_orderstate != '预约成功' and f_orgstr ='${this.$login.f.orgid}' and f_orderstate != '预约失败' ) or f_orderstate is null`
|
337
|
-
}}, {
|
338
|
-
resolveMsg: null,
|
339
|
-
rejectMsg: null
|
340
|
-
}).then((res) => {
|
341
|
-
let OrderDaiBan = {}
|
342
|
-
res.data.forEach(item=>{
|
343
|
-
OrderDaiBan[item.f_ordertype] = OrderDaiBan[item.f_ordertype] || []
|
344
|
-
OrderDaiBan[item.f_ordertype].push(item)
|
345
|
-
})
|
346
|
-
if (res.data.length> 0){
|
347
|
-
this.OrderDaiBan = `您有${res.data.length}条需要处理的微信预约业务!`
|
348
|
-
this.OrderDaiBan += `其中 ${Object.keys(OrderDaiBan).map(key=>`${key}:${OrderDaiBan[key].length}条`).join(', ')}`
|
349
|
-
}
|
350
|
-
})
|
351
|
-
let data = {
|
352
|
-
condition: '1 = 1',
|
353
|
-
data: {
|
354
|
-
orgid: this.$login.f.orgid,
|
355
|
-
id: this.$login.f.id
|
356
|
-
}
|
330
|
+
})
|
331
|
+
let data = {
|
332
|
+
condition: '1 = 1',
|
333
|
+
data: {
|
334
|
+
orgid: this.$login.f.orgid,
|
335
|
+
id: this.$login.f.id
|
357
336
|
}
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
if (res.data.length> 0){
|
368
|
-
this.AppDaiBan = `您有${res.data.length}条需要处理的报建待办业务!`
|
369
|
-
this.AppDaiBan += `其中 ${Object.keys(AppDaiBan).map(key=>`${key}:${AppDaiBan[key].length}条`).join(', ')}`
|
370
|
-
}
|
371
|
-
}).catch((e)=>{
|
372
|
-
console.error(e)
|
337
|
+
}
|
338
|
+
await http.load('POST', '/rs/sql/checkuser', {data: data}, {
|
339
|
+
resolveMsg: null,
|
340
|
+
rejectMsg: null
|
341
|
+
}).then((res) => {
|
342
|
+
let AppDaiBan = {}
|
343
|
+
res.data.forEach(item=>{
|
344
|
+
AppDaiBan[item.defname] = AppDaiBan[item.defname] || []
|
345
|
+
AppDaiBan[item.defname].push(item)
|
373
346
|
})
|
374
|
-
if(
|
375
|
-
this.
|
347
|
+
if (res.data.length> 0){
|
348
|
+
this.AppDaiBan = `您有${res.data.length}条需要处理的报建待办业务!`
|
349
|
+
this.AppDaiBan += `其中 ${Object.keys(AppDaiBan).map(key=>`${key}:${AppDaiBan[key].length}条`).join(', ')}`
|
376
350
|
}
|
377
|
-
}
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
this.
|
382
|
-
}
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
351
|
+
}).catch((e)=>{
|
352
|
+
console.error(e)
|
353
|
+
})
|
354
|
+
if(this.AppDaiBan || this.OrderDaiBan){
|
355
|
+
this.newTipShow = true
|
356
|
+
}
|
357
|
+
},
|
358
|
+
// 提醒框被点击
|
359
|
+
tipClick(){
|
360
|
+
this.newTipShow = false
|
361
|
+
this.newTipContextShow = true
|
362
|
+
},
|
363
|
+
gotoWorkOrderSite(){
|
364
|
+
const isRemind =this.$appdata.getSingleValue("站点工单提醒")
|
365
|
+
console.log('站点工单是否提醒',isRemind)
|
366
|
+
if(isRemind && isRemind !== '是'){
|
367
|
+
return
|
368
|
+
}
|
369
|
+
if(this.functions && this.functions.f_role_name && this.functions.f_role_name.indexOf('派单员') !== -1){
|
370
|
+
const data = {
|
371
|
+
"condition":
|
372
|
+
{
|
373
|
+
"condition":" 1=1 and processins.activities[ state='开始活动' and (defname in('站点接单'))].count(*) > 0 ",
|
374
|
+
"sign":"1=1"
|
375
|
+
},
|
376
|
+
"userid":this.functions.name
|
388
377
|
}
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
{
|
393
|
-
"condition":" 1=1 and processins.activities[ state='开始活动' and (defname in('站点接单'))].count(*) > 0 ",
|
394
|
-
"sign":"1=1"
|
395
|
-
},
|
396
|
-
"userid":this.functions.name
|
378
|
+
new HttpResetClass().load('POST','rs/path/operatorService/n', {data}, {resolveMsg: null, rejectMsg: null}).then(res=>{
|
379
|
+
if(res.data && res.data.n !== 0){
|
380
|
+
this.$showMessage('你有'+res.data.n+'个工单待处理,请尽快前往站点工单页面进行处理')
|
397
381
|
}
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
this.
|
411
|
-
|
412
|
-
this.srcsetting = '../../static/newStyle/setting.png'
|
413
|
-
} else {
|
414
|
-
this.srcsetting = '../../static/newStyle/setting1.png'
|
415
|
-
}
|
382
|
+
})
|
383
|
+
}
|
384
|
+
},
|
385
|
+
openUrl() {
|
386
|
+
var url = `http://aote-office.8866.org:8406/submitTicket?contact=${this.$login.f.name}&orgName=${this.$login.f.orgs}&phone=${this.$login.f.f_user_telephone}`
|
387
|
+
window.open(url, '_blank')
|
388
|
+
},
|
389
|
+
hindsetting() {
|
390
|
+
this.setting = !this.setting
|
391
|
+
if (this.setting) {
|
392
|
+
this.srcsetting = '../../static/newStyle/setting.png'
|
393
|
+
} else {
|
394
|
+
this.srcsetting = '../../static/newStyle/setting1.png'
|
395
|
+
}
|
416
396
|
|
417
397
|
},
|
418
398
|
hindsetting1() {
|
@@ -241,6 +241,11 @@ let saveGen = function *(self) {
|
|
241
241
|
msg = ret.data
|
242
242
|
} else if (ret.status === 555) {
|
243
243
|
msg = ret.data
|
244
|
+
}else if(ret.status === 789){
|
245
|
+
yield self.$showMessage(msg=ret.data, ['confirm']).then(() => {
|
246
|
+
self.modifyPwShow = true
|
247
|
+
})
|
248
|
+
return
|
244
249
|
}
|
245
250
|
self.createCode()
|
246
251
|
self.picLyanzhengma = ''
|
@@ -5,9 +5,10 @@
|
|
5
5
|
<div class="col-sm-2" >
|
6
6
|
<img v-if="isFolder(row)" :src="row.data.icon" alt="">
|
7
7
|
</div>
|
8
|
-
<div class="col-sm-
|
9
|
-
<span class="unreadResumeWarning11" v-show="row.data.name === '微信管理' && $parent.$parent.
|
8
|
+
<div class="col-sm-10" style="padding-left:6%;text-align: left" title="{{row.data.name}}">{{row.data.name}}
|
9
|
+
<span class="unreadResumeWarning11" v-show="row.data.name === '微信管理' && $parent.$parent.todo"></span>
|
10
10
|
<span class="unreadResumeWarning" v-show="row.data.name === '投诉咨询' && $parent.$parent.wechatnub">{{$parent.$parent.wechatnub}}</span>
|
11
|
+
<span class="unreadResumeWarning" v-show="row.data.name === '预约中心' && $parent.$parent.ordernum">{{$parent.$parent.ordernum}}</span>
|
11
12
|
</div>
|
12
13
|
</span>
|
13
14
|
</tree>
|
@@ -21,16 +22,23 @@ export default {
|
|
21
22
|
title: '左侧树菜单',
|
22
23
|
data () {
|
23
24
|
return {
|
25
|
+
todo: false,
|
24
26
|
index: -1,
|
25
27
|
wechatnub: 0,
|
28
|
+
ordernum: 0,
|
26
29
|
name: null,
|
27
30
|
tbcg:[]
|
28
31
|
}
|
29
32
|
},
|
30
33
|
methods: {
|
31
|
-
setNum(val){
|
34
|
+
setNum(type,val){
|
35
|
+
this.todo = true
|
32
36
|
console.log("=====",val)
|
33
|
-
|
37
|
+
if (type === '投诉咨询') {
|
38
|
+
this.wechatnub = val
|
39
|
+
} else if (type === '预约中心') {
|
40
|
+
this.ordernum = val
|
41
|
+
}
|
34
42
|
},
|
35
43
|
open (row) {
|
36
44
|
if (row.data.name === '资源管理') {
|
@@ -128,14 +136,17 @@ export default {
|
|
128
136
|
position: absolute;
|
129
137
|
left: 70px;
|
130
138
|
top: 0px;
|
139
|
+
margin-left: 10px;
|
131
140
|
}
|
132
141
|
.unreadResumeWarning {
|
133
|
-
|
142
|
+
text-align: center;
|
143
|
+
min-width: 20px;
|
134
144
|
height: 20px;
|
135
|
-
border-radius:
|
145
|
+
border-radius: 10px;
|
136
146
|
background-color: #FF3B30;
|
137
147
|
position: absolute;
|
138
148
|
left: 60px;
|
139
149
|
top: 0px;
|
150
|
+
margin-left: 10px;
|
140
151
|
}
|
141
152
|
</style>
|
@@ -72,7 +72,7 @@
|
|
72
72
|
<div class="span system-left-tree " style="height:85%">
|
73
73
|
<h3>{{ systemname }}</h3>
|
74
74
|
<!-- <div class="span" style="margin-bottom:10px;padding-bottom:5px;padding-top:5px;flex: 1;border-top: 1px solid #e5e5e5;border-bottom: 1px solid #e5e5e5;">-->
|
75
|
-
<left-tree :functions='functions.functions' :wechatnub='WeChatNub' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon"
|
75
|
+
<left-tree :functions='functions.functions' :wechatnub='WeChatNub' :ordernum='OrderNum' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon"
|
76
76
|
:tabs="tabs" v-ref:tree></left-tree>
|
77
77
|
<!--<!– <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>–>-->
|
78
78
|
</div>
|
@@ -242,6 +242,8 @@ export default {
|
|
242
242
|
showwatermakeflag: false,
|
243
243
|
//获取微信投诉和咨询条数
|
244
244
|
WeChatNub: undefined,
|
245
|
+
// 咨询条数
|
246
|
+
OrderNum: undefined,
|
245
247
|
// headerHint: true, // 右侧顶部提示信息
|
246
248
|
// value: 25645.26,
|
247
249
|
// AddChangeMsgShow: false,
|
@@ -299,6 +301,7 @@ export default {
|
|
299
301
|
},
|
300
302
|
created () {
|
301
303
|
this.WechatOfComplaintAndConsult()
|
304
|
+
this.orderCount()
|
302
305
|
},
|
303
306
|
methods: {
|
304
307
|
getOrderList(){
|
@@ -479,15 +482,29 @@ export default {
|
|
479
482
|
data:{
|
480
483
|
items: 'f_isreply',
|
481
484
|
tablename: 't_comment',
|
482
|
-
condition:
|
485
|
+
condition: " 1=1 and f_isreply = '0' and f_orgid = '37710' and f_pid = '0'",
|
483
486
|
orderitem: 'f_isreply'
|
484
487
|
}
|
485
488
|
},{resolveMsg: null, rejectMsg: null});
|
486
489
|
if (WeChatData.data.length > 0){
|
487
490
|
this.WeChatNub = WeChatData.data.length
|
491
|
+
console.log('获取数值为:'+ this.WeChatNub)
|
492
|
+
this.$refs.tree.setNum('投诉咨询', this.WeChatNub)
|
493
|
+
}
|
494
|
+
},
|
495
|
+
async orderCount() {
|
496
|
+
let orderData = await new HttpResetClass().load('POST','rs/sql/singleTable_OrderBy', {
|
497
|
+
data: {
|
498
|
+
items: 'id',
|
499
|
+
tablename: 't_order_center',
|
500
|
+
condition: ` f_orgstr ='${this.$login.f.orgid}' and f_orderstate is null `,
|
501
|
+
orderitem: 'f_orderdate'
|
502
|
+
}
|
503
|
+
}, {resolveMsg: null, rejectMsg: null});
|
504
|
+
if (orderData.data.length > 0) {
|
505
|
+
this.OrderNum = orderData.data.length
|
506
|
+
this.$refs.tree.setNum('预约中心', this.OrderNum)
|
488
507
|
}
|
489
|
-
console.log('获取数值为:'+ this.WeChatNub)
|
490
|
-
this.$refs.tree.setNum(this.WeChatNub)
|
491
508
|
}
|
492
509
|
},
|
493
510
|
computed: {
|
@@ -235,9 +235,6 @@ export default {
|
|
235
235
|
}
|
236
236
|
},
|
237
237
|
ready() {
|
238
|
-
//使用socket发送代办消息提醒
|
239
|
-
vue.prototype.$connectNumber = this.connectNumber
|
240
|
-
this.initWebSocket()
|
241
238
|
getwartermakr(this);
|
242
239
|
let component = this.$login.getUrlCompileParames('component')
|
243
240
|
if (component) {
|
@@ -287,94 +284,6 @@ export default {
|
|
287
284
|
this.functions.f_role_name && this.functions.f_role_name.includes(this.config.msgRole) && this.config.isTip && this.getOrderList()
|
288
285
|
},
|
289
286
|
methods: {
|
290
|
-
// 清除
|
291
|
-
reset () {
|
292
|
-
clearTimeout(this.timeoutObj)
|
293
|
-
clearTimeout(this.serverTimeoutObj)
|
294
|
-
},
|
295
|
-
//每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息
|
296
|
-
//如果服务端在一定时间内没有收到信息,就认为客户端断开了,服务端就会断开连接
|
297
|
-
// 发送心跳--确保连接有效
|
298
|
-
start () {
|
299
|
-
// 重置
|
300
|
-
vue.prototype.$connectNumber = this.connectNumber // 重置重连次数
|
301
|
-
this.timeoutObj = setTimeout(() => {
|
302
|
-
this.$socket.send('ping')
|
303
|
-
console.log('ping!')
|
304
|
-
this.serverTimeoutObj = setTimeout(() => {
|
305
|
-
this.$socket.close()
|
306
|
-
}, this.timeout)
|
307
|
-
}, this.timeout)
|
308
|
-
},
|
309
|
-
// 重连
|
310
|
-
reconnect () {
|
311
|
-
if (this.lockReconnect) return
|
312
|
-
// if (this.$connectNumber <= 0) {
|
313
|
-
// vue.showMessage('连接已断开,将无法接收消息,请重新登录', ['confirm']).then((res) => {
|
314
|
-
// if (res === 'confirm') {
|
315
|
-
// location.reload()
|
316
|
-
// }
|
317
|
-
// })
|
318
|
-
// return
|
319
|
-
// }
|
320
|
-
// this.$connectNumber--
|
321
|
-
setTimeout(() => {
|
322
|
-
console.log('连接异常,尝试重新连接。。。。')
|
323
|
-
this.initWebSocket()
|
324
|
-
this.lockReconnect = false
|
325
|
-
}, 1000 * 60)
|
326
|
-
},
|
327
|
-
// 初始化
|
328
|
-
initWebSocket () {
|
329
|
-
let path = `ws://${location.host}/ws?token=${this.$login.f.id}`
|
330
|
-
try {
|
331
|
-
if ('WebSocket' in window) {
|
332
|
-
// 创建对象
|
333
|
-
vue.prototype.$socket = new WebSocket(path)
|
334
|
-
} else {
|
335
|
-
this.$showMessage('您的浏览器不支持websocket的协议,建议使用新版谷歌浏览器,请勿使用IE浏览器,360浏览器请使用极速模式,不要使用兼容模式!"')
|
336
|
-
}
|
337
|
-
} catch (e) {
|
338
|
-
this.reconnect()
|
339
|
-
}
|
340
|
-
|
341
|
-
this.$socket.onopen = this.onOpen // 连接成功
|
342
|
-
this.$socket.onmessage = this.onMessage // 收到消息时回调
|
343
|
-
this.$socket.onclose = this.onClose // 连接关闭时回调
|
344
|
-
this.$socket.onerror = this.onError // 通讯异常
|
345
|
-
},
|
346
|
-
// 通讯异常
|
347
|
-
onError () {
|
348
|
-
console.log('通讯异常')
|
349
|
-
this.reconnect()
|
350
|
-
},
|
351
|
-
// 连接成功
|
352
|
-
onOpen () {
|
353
|
-
console.log('webSocket连接成功')
|
354
|
-
this.start()//每十秒发送心跳包,确保连接状态有效
|
355
|
-
},
|
356
|
-
// 收到消息时回调函数
|
357
|
-
onMessage (event) {
|
358
|
-
if (event.data === 'pong') { //建立心跳机制发送ping,返回pong
|
359
|
-
this.reset() // 重置心跳
|
360
|
-
this.start() // 重新开始心跳
|
361
|
-
return
|
362
|
-
}
|
363
|
-
//不是pong消息,就是服务器返回的消息(提示消息)
|
364
|
-
|
365
|
-
let data = JSON.parse(event.data)
|
366
|
-
console.log('收到消息', data)
|
367
|
-
//向所有子组件广播一个名为'onMessage'的事件,并传递一个数据参数'data'。
|
368
|
-
this.$broadcast('onMessage', data)
|
369
|
-
//作用是显示一个消息。
|
370
|
-
this.$showMessage(data.message)
|
371
|
-
},
|
372
|
-
// 关闭连接时回调函数
|
373
|
-
onClose () {
|
374
|
-
console.log('webSocket连接断开')
|
375
|
-
this.reset()
|
376
|
-
this.reconnect() // 重连
|
377
|
-
},
|
378
287
|
getOrderList(){
|
379
288
|
let times = this.config.times * 60 * 1000
|
380
289
|
console.log("=定时提示间隔=", times)
|
@@ -205,9 +205,13 @@ let loginGen = async function (name, password, cue) {
|
|
205
205
|
}
|
206
206
|
|
207
207
|
} else {
|
208
|
-
|
209
|
-
|
210
|
-
|
208
|
+
if(getLogin.data.states.includes('您的密码已经使用超过')){
|
209
|
+
throw {status: 789, data: getLogin.data.states}
|
210
|
+
}else{
|
211
|
+
let error = {status: 401, data: getLogin.data.states}
|
212
|
+
// 抛出错误
|
213
|
+
throw error
|
214
|
+
}
|
211
215
|
}
|
212
216
|
}
|
213
217
|
|