system-clients 3.1.94-aode → 3.1.96

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 (77) hide show
  1. package/.eslintrc.js +16 -16
  2. package/.gradle/{5.5 → 5.2.1}/gc.properties +0 -0
  3. package/{dist/static/.gitkeep → .gradle/buildOutputCleanup/built.bin} +0 -0
  4. package/.gradle/buildOutputCleanup/cache.properties +2 -2
  5. package/.gradle/buildOutputCleanup/cache.properties.lock +1 -0
  6. package/SystemClient.iml +1 -1
  7. package/build/webpack.base.conf.js +17 -14
  8. package/package.json +4 -4
  9. package/src/components/Main.vue +622 -508
  10. package/src/components/TabButton.vue +201 -0
  11. package/src/components/Tabs.vue +67 -0
  12. package/src/components/equipment/EquipmentManage.vue +65 -65
  13. package/src/components/equipment/PcAdd.vue +5 -5
  14. package/src/components/equipment/PcList.vue +5 -5
  15. package/src/components/equipment/PhoneAdd.vue +4 -4
  16. package/src/components/equipment/PhoneList.vue +4 -4
  17. package/src/components/equipment/PosAdd.vue +323 -137
  18. package/src/components/equipment/PosList.vue +294 -164
  19. package/src/components/equipment/PosManage.vue +138 -67
  20. package/src/components/equipment/PosManageBoth.vue +125 -0
  21. package/src/components/equipment/PosParamAdd.vue +236 -0
  22. package/src/components/equipment/PosParamList.vue +121 -0
  23. package/src/components/equipment/PosParamManage.vue +51 -0
  24. package/src/components/parammanage/ParamManage.vue +2 -2
  25. package/src/components/parammanage/ParamPage.vue +7 -7
  26. package/src/components/parammanage/SinglePage.vue +4 -4
  27. package/src/components/server/ImageVieweTest.vue +56 -0
  28. package/src/components/server/ImageViewer.vue +350 -0
  29. package/src/components/server/Login.vue +70 -47
  30. package/src/components/server/PcdBuildingSelect.vue +241 -0
  31. package/src/components/server/ResSelect.vue +5 -0
  32. package/src/components/server/ResSelectGroup.vue +155 -118
  33. package/src/components/server/RightTree.vue +262 -257
  34. package/src/plugins/GetLoginInfoService.js +514 -514
  35. package/src/styles/less/aofeng/standard.less +446 -60
  36. package/src/styles/less/aofeng/themeOne/BinaryTemplate.less +13 -13
  37. package/src/styles/less/aofeng/themeOne/systemStyle.less +18 -18
  38. package/src/styles/less/manageStyle/manageStyle/manageChile.less +180 -0
  39. package/src/styles/less/manageStyle/manageStyle/manageStyle.less +1102 -0
  40. package/src/styles/less/manageStyle/manageStyle/safeStyle.less +498 -0
  41. package/src/styles/less/tables.less +50 -0
  42. package/src/styles/less/type.less +16 -3
  43. package/src/styles/less/variables.less +6 -3
  44. package/src/system.js +93 -83
  45. package/static/{ewmlogo.png → logo.png} +0 -0
  46. package/static/newStyle/about-us.png +0 -0
  47. package/yarn-error.log +6896 -0
  48. package/.gradle/5.5/fileChanges/last-build.bin +0 -0
  49. package/.gradle/5.5/fileHashes/fileHashes.lock +0 -0
  50. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  51. package/.npmignore +0 -10
  52. package/build/.npmignore +0 -1
  53. package/dist/static/batchleft.png +0 -0
  54. package/dist/static/batchright.png +0 -0
  55. package/dist/static/bluemainbg.jpg +0 -0
  56. package/dist/static/huangtengbiaozhi.png +0 -0
  57. package/dist/static/login_bg.jpg +0 -0
  58. package/dist/static/login_title.png +0 -0
  59. package/dist/static/login_title1.png +0 -0
  60. package/dist/static/loginbg.jpg +0 -0
  61. package/dist/static/loginlogo.png +0 -0
  62. package/dist/static/main_logo.png +0 -0
  63. package/dist/static/mainbg.jpg +0 -0
  64. package/dist/static/menulogo.png +0 -0
  65. package/dist/static/newmainbg.jpg +0 -0
  66. package/dist/static/psicon.png +0 -0
  67. package/dist/static/singleleft.png +0 -0
  68. package/dist/static/singleright.png +0 -0
  69. package/dist/static/treeopen.png +0 -0
  70. package/dist/static/treeout.png +0 -0
  71. package/dist/static/treeset.png +0 -0
  72. package/dist/static/usericon.png +0 -0
  73. package/dist/static/xinxi.png +0 -0
  74. package/package-lock.json +0 -10507
  75. package/src/.npmignore +0 -1
  76. package/static/aodelogo.png +0 -0
  77. package/static/aodenewlogo.png +0 -0
@@ -1,508 +1,622 @@
1
- <template>
2
- <div @click="hindsetting1()">
3
-
4
- <div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
5
-
6
- <div class="auto " :class="{'login-operator1':$refs.mic.tabs.length === 0,'login-operator':$refs.mic.tabs.length != 0}">
7
- <span class="glyphicon glyphicon-asterisk" style="color:#a1d0f5"></span>
8
- <span>组织编码:</span>
9
- <label style="margin-right:14px;">{{$login.f.number}}</label>
10
- <span class="glyphicon glyphicon-user" style="color:#a1d0f5"></span>
11
- <span>登录人:</span>
12
- <label>{{orgpathnames}}</label>
13
- </div>
14
- <div class="system-left tree-flex" :class="{'tree-flex-icon': !treeOrIcon}" id="top" v-el:top >
15
- <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}" >
16
- <div class="span system-left-tree " style="height:85%">
17
- <div class="logopicaode" >
18
- <div class="aodeloginedlogo"></div>
19
- </div>
20
- <h3 style="margin-bottom: 12px;height: 35px;">&nbsp;&nbsp;</h3>
21
- <!-- <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;">-->
22
- <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon" :tabs="tabs" v-ref:tree></left-tree>
23
- </div>
24
-
25
- <div class="tree-flex-footer">
26
- <!-- <a @click="changeShow()"><img :src="imgs.open" alt=""><span v-if="treeOrIcon">菜单伸缩</span></a>-->
27
- <!-- <a><img src="../../../static/treeset.png" alt="">系统设置</a> -->
28
- <dropdown class="auto">
29
- <button type="button" data-toggle="dropdown">
30
- <img :src="imgs.set" alt=""><span v-if="treeOrIcon">系统设置</span>
31
- </button>
32
- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up">
33
- <li>系统信息及设置</li>
34
- <!-- <li>{{name}}</li> -->
35
- <li>{{date}}</li>
36
- <li @click="show=true">修改密码</li>
37
- <li @click="AddChangeMsgShow=true">系统版本:1.0.0</li>
38
- </ul>
39
-
40
- </dropdown>
41
- <a href="index.html" @click.prevent="logOut">
42
- <img :src="imgs.out" alt="" ><span v-if="treeOrIcon">退出系统</span>
43
- </a>
44
- </div>
45
- </div>
46
- </div>
47
- <!-- <div class="line" id="line" v-show="treeOrIcon" v-el:line></div> -->
48
-
49
- <div class="flex right-bg system-right" id="bottom" v-el:bottom>
50
- <!-- <operator-badge></operator-badge> -->
51
- <div class="span">
52
- <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>
53
- <dynamic :comps='[]' name='main' :selecttab.sync="selecttab" @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>
54
- </div>
55
- </div>
56
- </div>
57
- <div v-show="isManger">
58
- <route v-ref:route></route>
59
- </div>
60
-
61
- <!-- 变更录入 模态框 -->
62
- <add-changemsg :show="AddChangeMsgShow" v-on:toggle = "AddChangeMsgShow = false"></add-changemsg>
63
- <!-- 修改密码组件 -->
64
- <modify-pw :show.sync="show" v-if="show"></modify-pw>
65
- <!-- 修改密码模态框 -->
66
- </div>
67
- </template>
68
-
69
- <script>
70
- import vue from 'vue'
71
- import co from 'co'
72
-
73
- window.onunload = () => {
74
- vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
75
- }
76
- window.onbeforeunload = () => {
77
- vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
78
- }
79
- export default {
80
- title: '主界面',
81
- props: ['functions', 'userid'],
82
- data () {
83
- return {
84
- // 左侧树下部三个小图标
85
- imgs: {
86
- open: '/images/lefticon/菜单伸缩.png',
87
- set: '/images/lefticon/系统设置.png',
88
- out: '/images/lefticon/退出系统.png',
89
- img1: '/images/newStyle/login-user.png',
90
- logoimg: '/static/newStyle/fife.png'
91
- // img2: '/images/lefticon/退出系统.png',
92
- },
93
- treeOrIcon: false,
94
- isManger: false,
95
- show: false,
96
- orgpathnames: `${this.$login.f.orgs}-${this.$login.f.deps}-${this.$login.f.name}`,
97
- systemname: '客服系统',
98
- date: this.$login.toStandardDateString(),
99
- tabs:[], //已初始化页签数组
100
- selecttab:'',
101
- setting:true,
102
- srcsetting:'../../static/newStyle/setting.png'
103
-
104
- // headerHint: true, // 右侧顶部提示信息
105
- // value: 25645.26,
106
- // AddChangeMsgShow: false,
107
- // showsum: false
108
- }
109
- },
110
- ready () {
111
- let component = this.$login.getUrlCompileParames('component')
112
- if (component) {
113
- this.isManger = true
114
- this.$refs.route.init(component, {data: this.functions.functions})
115
- }
116
- if(this.$login.f.password == '1'){
117
- this.$showMessage('本地登录系统为此账户的初始密码,请确认修改密码!!!', ['confirm', 'cancel']).then((res) => {
118
- if(res == 'confirm')
119
- this.show = true
120
- })
121
- }
122
- console.log("系统名称",this.$appdata.getSingleValue("系统名称"))
123
- this.systemname = this.$appdata.getSingleValue("系统名称")? this.$appdata.getSingleValue("系统名称"):'客服系统'
124
- // let oBox = this.getElement("box")
125
- // let oTop = this.getElement("top")
126
- // let oBottom = this.getElement("bottom")
127
- // let oLine = this.getElement("line")
128
- // let that = this
129
- // oLine.onmousedown = function(e) {
130
- // let disX = (e || event).clientX
131
- // oLine.left = oLine.offsetLeft
132
- // document.onmousemove = function(e) {
133
- // let iT = oLine.left + ((e || event).clientX - disX)
134
- // var e = e || window.event
135
- // let tarnameb = e.target || e.srcElement
136
- // let maxT = oBox.clientWight - oLine.offsetWidth
137
- // oLine.style.margin = 0
138
- // iT < 0 && (iT = 0)
139
- // iT > maxT && (iT = maxT)
140
- // oLine.style.left = oTop.style.width = iT + "px"
141
- // oBottom.style.width = oBox.clientWidth - iT + "px"
142
- // that.$set('treeWidth', iT)
143
- // return false
144
- // }
145
- // document.onmouseup = function() {
146
- // document.onmousemove = null
147
- // document.onmouseup = null
148
- // oLine.releaseCapture && oLine.releaseCapture()
149
- // }
150
- // oLine.setCapture && oLine.setCapture()
151
- // return false
152
- // }
153
- this.changeShow()
154
- },
155
- methods: {
156
- hindsetting(){
157
-
158
- this.setting=!this.setting
159
- if(this.setting){
160
- this.srcsetting='../../static/newStyle/setting.png'
161
- }else {
162
- this.srcsetting='../../static/newStyle/setting1.png'
163
- }
164
-
165
- },
166
- hindsetting1(){
167
-
168
- if(!this.setting){
169
- this.srcsetting='../../static/newStyle/setting.png'
170
- this.setting=true
171
- }
172
-
173
- },
174
- isnodo(val){
175
- console.log(val,'ss')
176
- this.selecttab = val
177
- },
178
- unfurl () {
179
- if(this.showsum){
180
- this.showsum = false
181
- } else {
182
- this.showsum = true
183
- }
184
- },
185
- // getElement(id) {
186
- // return document.getElementById(id)
187
- // },
188
- changeShow () {
189
- // this.treeOrIcon = !this.treeOrIcon
190
- // let oBox = this.getElement("box")
191
- // let oTop = this.getElement("top")
192
- // let oBottom = this.getElement("bottom")
193
- // let oLine = this.getElement("line")
194
- // if (this.treeOrIcon) {
195
- // // oLine.style.left = oTop.style.width = 300 + "px"
196
- // oTop.style.width = 150 + "px"
197
- // oBottom.style.width = oBox.clientWidth - 150 + "px"
198
- // }else {
199
- // oLine.style.left = oTop.style.width = 50 + "px"
200
- // oBottom.style.width = oBox.clientWidth - 50 + "px"
201
- // }
202
- // }
203
- this.treeOrIcon = !this.treeOrIcon
204
- // if (this.treeOrIcon) {
205
- // this.$els.top.style.width = 14 + "%"
206
- // this.$els.bottom.style.width = this.$els.box.clientWidth - 14 + "%"
207
- // }else {
208
- // this.$els.top.style.width = 8 + "%"
209
- // this.$els.bottom.style.width = this.$els.box.clientWidth - 8 + "%"
210
- // }
211
- },
212
- changeMain(userid) {
213
- this.$goto('res-main', {userid: this.userid}, 'self')
214
- },
215
- tabChange (name) {
216
- console.log(name,'tabchanage')
217
- this.selecttab = name
218
- this.$refs.tree.changeSelect(name)
219
- },
220
- tabcg(val){
221
- console.log(val)
222
- this.tabs = val
223
- },
224
- logOut () {
225
- console.log(this.$login.f)
226
- this.$showMessage('您确定要退出系统吗?', ['confirm', 'cancel']).then(async (res) => {
227
- if (res == 'confirm') {
228
- let data = {
229
- userid: this.$login.f.id,
230
- username: this.$login.f.name,
231
- usertelephone: this.$login.f.f_user_telephone
232
- }
233
- await this.$resetpost('rs/logic/logOut', data, {resolveMsg: '退出成功', rejectMsg: null})
234
- window.location.reload()
235
- }
236
- })
237
- }
238
- },
239
- computed: {
240
- nowDate () {
241
- return this.$login.getNowDate()
242
- }
243
- }
244
- }
245
- </script>
246
- <style lang="less">
247
- /* 组件内通用样式 */
248
- .select-error {
249
- button {
250
- border-bottom: 1px solid #a94442!important;
251
- }
252
- }
253
- // input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{
254
- // -webkit-appearance:textfield;
255
- // }
256
- /* 表单输入框组 */
257
- .form-input-group {
258
- display: flex;
259
-
260
- label {
261
- width: 100px;
262
- text-align: right;
263
- + * {
264
- flex: 1;
265
- }
266
- }
267
- }
268
- // 日期组件在表单中沾满
269
- .form-horizontal .datepicker {
270
- width: 100%;
271
- }
272
- // 下拉选择框占据剩余全部空间
273
- .select-overspread {
274
- .form-group {
275
- // margin: 0px 5px 10px 0px;
276
- .form-control {
277
- margin-right: 0px;
278
- }
279
- }
280
- .btn-group, .btn-group-vertical {
281
- width: 100%;
282
- // padding-right: 5px;
283
- button {
284
- width: 100%;
285
- display: flex;
286
- justify-content: space-between;
287
- align-items: center;
288
- }
289
- }
290
- .dropdown-menu {
291
- width: 100%
292
- }
293
- }
294
- // 需要特定宽度的的样式
295
- .width-60 {
296
- width: 60px;
297
- }
298
- .userpanel {
299
- font-weight: 300;
300
- color: #333;
301
- position: fixed;
302
- right: 30px;
303
- top: 45px;
304
- background-color: white;
305
- box-shadow: darkgrey 0.5px 0.5px 0.5px 0.5px ;
306
- padding: 4px 10px 4px 10px;
307
- border-radius:2px;
308
- }
309
- .width-80 {
310
- width: 80px;
311
- }
312
- .width-100 {
313
- width: 100px;
314
- }
315
-
316
-
317
-
318
- /*右侧区域的背景*/
319
- .right-bg {
320
- width: 100%;
321
- flex: 1;
322
- color: #304A66;
323
- }
324
- .tree-flex {
325
- height: 100%;
326
- // width: 150px;
327
- /*width: 60px;*/
328
- background: #4a7cae;
329
- color: #fff;
330
-
331
- }
332
- .tree-flex-icon {
333
- width: 50px;
334
- /*transition: 0.5s;*/
335
- > .span {
336
- overflow-x: visible;
337
- }
338
- }
339
- .tree-flex h3 {
340
- text-align: center;
341
- margin: 1em 0;
342
- }
343
-
344
- .tree-flex-footer {
345
- height: 50px;
346
- display: flex;
347
- flex-direction:column;
348
- color: #fff;
349
- }
350
- .tree-flex-footer a,.tree-flex-footer button{
351
- flex: 1;
352
- padding: 8px 5px;
353
- font-size: 1.2em;
354
- // border-top: 1px solid #697D93;
355
- border-top: 1px solid #4a7cae;
356
- text-decoration: none;
357
- color: #fff;
358
- cursor: pointer;
359
- }
360
- .tree-flex-footer button {
361
- height: auto;
362
- width: 100%;
363
- border-radius: 0px;
364
- background-color: rgba(255,255,255,0);
365
- border: none;
366
- border-top: 1px solid #4a7cae;
367
- // border-top: 1px solid #697D93;
368
- text-align: left;
369
- }
370
- .tree-flex-footer button:hover{
371
- outline: none;
372
- background-color: rgba(255,255,255,0.2);
373
- }
374
- .tree-flex-footer button:focus {
375
- outline: none;
376
- background-color: rgba(255,255,255,0.5);
377
- }
378
- .tree-flex-footer a:hover {
379
- color: #FFF;
380
- background-color: rgba(255,255,255,0.2);
381
- }
382
- .tree-flex .btn-group {
383
- height: 50px!important;
384
- }
385
-
386
- .tree-flex .dropdown-menu {
387
- /* 控制显示列表的样式 */
388
- background: #4a7cae;
389
- border-radius: 0px;
390
- color: #fff;
391
- width: auto;
392
- margin: 0px;
393
- padding: 0px;
394
- }
395
- .tree-flex .dropdown-menu-up {
396
- /* bottom,top控制上下,left和right控制左右*/
397
- left: 100%!important;
398
- top: auto!important;
399
- bottom: 0;
400
- }
401
- .tree-flex .dropdown-menu-down {
402
- /* bottom,top控制上下,left和right控制左右*/
403
- left: 100%!important;
404
- top: 0!important;
405
- }
406
- .tree-flex .dropdown-menu li{
407
- text-align: center;
408
- line-height: 50px;
409
- border-bottom: 1px solid #697D93;
410
- font-size: 1.2em;
411
- width: auto;
412
- white-space: nowrap;
413
- cursor: default;
414
-
415
- }
416
- .tree-flex .dropdown-menu li + li {
417
- text-align: left;
418
- border: 0;
419
- line-height: 40px;
420
- padding-left: 15px;
421
- padding-right: 15px;
422
- font-size: 1em;
423
- cursor: pointer;
424
- }
425
- .tree-flex .dropdown-menu li + li:hover {
426
- background-color: rgba(255,255,255,0.2);
427
- }
428
- .tree-flex .dropdown-menu li a {
429
- border: none;
430
- color: #fff;
431
- height: 40px;
432
- line-height: 40px;
433
- font-size: 1em;
434
- padding: 0px;
435
- }
436
- .tree-flex .dropdown-menu li a:hover {
437
- color: #fff;
438
- background-color: rgba(255,255,255,0);
439
- }
440
- .tree-flex img{
441
- height: 1.2em;
442
- width: 1.2em;
443
- margin-right: 15px;
444
- margin-left: 5px;
445
- }
446
- .line {
447
- height: 100%;
448
- width: 5px;
449
- background: #4C637B;
450
- cursor: e-resize;
451
- }
452
- /*为树(tree)组件写的样式*/
453
- .tree-img {
454
- font-size: 1.2em;
455
- }
456
- .aodeloginedlogo {
457
- background:url(../../static/aodenewlogo.png);
458
- background-size:80%;
459
- background-repeat: no-repeat;
460
- }
461
- .logopicaode{
462
- width: 100%;
463
- height: 61px;
464
- float: left;
465
- margin-left: 2.5%;
466
- margin-top: 10px;
467
- }
468
-
469
- /*将较长信息截断显示,鼠标悬停显示全部信息*/
470
- .cutout50 {
471
- max-width: 50px;
472
- overflow:hidden;
473
- text-overflow: ellipsis;
474
- white-space: nowrap;
475
- }
476
-
477
- /* 滚动条样式 */
478
- /*---滚动条默认显示样式--*/
479
- ::-webkit-scrollbar-thumb{
480
- // display: none;
481
- background-color:rgba(0,0,0,0.4);
482
- /*background-color:red;*/
483
- height:50px;
484
- outline-offset:-2px;
485
- /*outline:2px solid #fff;*/
486
- -webkit-border-radius:4px;
487
- /*border: 2px solid #fff;*/
488
- }
489
-
490
- /*---鼠标点击滚动条显示样式--*/
491
- ::-webkit-scrollbar-thumb:hover{
492
- // display: inherit;
493
- background-color:rgba(0,0,0,0.4);
494
- height:50px;
495
- -webkit-border-radius:4px;
496
- }
497
- /*---滚动条大小--*/
498
- ::-webkit-scrollbar{
499
- width:8px;
500
- height:8px;
501
- }
502
- /*---滚动框背景样式--*/
503
- ::-webkit-scrollbar-track-piece{
504
- /* 全透明,不显示 */
505
- background-color:rgba(255,255,255,0);
506
- -webkit-border-radius:0;
507
- }
508
- </style>
1
+ <template>
2
+ <div @click="hindsetting1()" :class="{'with-watermark':showwatermakeflag}">
3
+ <!-- <div class="system-main" id="box" v-el:box v-if="!isManger">-->
4
+ <!-- <div class="system-logo" style="height: auto">-->
5
+ <!-- <img :src="imgs.logoimg" alt=""/>-->
6
+ <!-- <label>{{systemname}}</label>-->
7
+ <!-- <div class="system-logo-chi" >-->
8
+ <!-- <div v-if="userpane" class="auto system-logo-prompt" style="float: right">-->
9
+ <!-- <span>{{orgpathnames}}</span>-->
10
+ <!-- </div>-->
11
+ <!-- &lt;!&ndash;<div class="system-logo-chi-img1" style="float: right" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()"></div>&ndash;&gt;-->
12
+ <!-- <span style="float: right; padding-top: 2px" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()" class="system-logo-chi-span-1">{{$login.f.name}}</span>-->
13
+ <!-- <span style="border-left: 1px solid;float: right;padding-top: 2px" class="system-logo-chi-span-1"> <img src="../../static/newStyle/login-f.png" height="20" width="20"> </span>-->
14
+ <!-- <a href="index.html" onclick="return confirm('您确定要退出系统吗?');" style="float: right;padding-top: 2px">-->
15
+ <!-- <img src="../../static/newStyle/system-off.png" alt="" >-->
16
+ <!-- <span class="system-logo-chi-span-1">退出系统</span>-->
17
+ <!-- </a>-->
18
+ <!-- <div style="float: right" :class="{'dropstyle':setting,'dropstyle-1':!setting}">-->
19
+ <!-- <dropdown class="auto" >-->
20
+ <!-- <span data-toggle="dropdown" @click="hindsetting()" >-->
21
+ <!-- <img :src="srcsetting" alt=""><span>系统设置</span>-->
22
+ <!-- </span>-->
23
+ <!-- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up dropstyle-chi" >-->
24
+ <!-- &lt;!&ndash; <li>系统信息及设置</li>&ndash;&gt;-->
25
+ <!-- <li style="color: #ffffff;white-space: nowrap" @click="show=true">修改密码</li>-->
26
+ <!-- <li style="color: #ffffff;white-space: nowrap" @click="AddChangeMsgShow=true">系统版本</li>-->
27
+ <!-- </ul>-->
28
+ <!-- </dropdown>-->
29
+ <!-- </div>-->
30
+
31
+ <!-- </div>-->
32
+ <!-- </div>-->
33
+ <!-- <div class="system-left tree-flex" :class="{'system-left-1': !treeOrIcon}" id="top" v-el:top >-->
34
+ <!-- <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}" >-->
35
+ <!-- <div class="span system-left-tree" >-->
36
+ <!-- <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" :treeOrIcon="treeOrIcon" :tabs="tabs" v-ref:tree></left-tree>-->
37
+ <!-- &lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
38
+ <!-- </div>-->
39
+ <!-- </div>-->
40
+ <!-- <div class="system-foot-stretch" >-->
41
+ <!-- <a @click="changeShow()"><img src="../../static/images/lefticon/菜单伸缩.png" alt=""></a>-->
42
+ <!-- </div>-->
43
+ <!-- </div>-->
44
+
45
+
46
+ <!-- <div class="system-right" :class="{'system-right-1': !treeOrIcon}" id="bottom" v-el:bottom>-->
47
+ <!-- <div class="span">-->
48
+ <!-- <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>-->
49
+ <!-- <dynamic :comps='[]' :showup="true" :showhide="false" name='main' :selecttab.sync="selecttab" @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>-->
50
+ <!-- </div>-->
51
+ <!-- </div>-->
52
+ <!-- <div class="system-foot" v-el:bottom>-->
53
+
54
+ <!-- <div class="system-foot-box">-->
55
+
56
+ <!-- </div>-->
57
+ <!-- </div>-->
58
+ <!-- </div>-->
59
+ <div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
60
+ <div class="auto login-operator1" v-if="$refs.mic.tabs.length === 0">
61
+ <span>
62
+ <img
63
+ src="../assets/people.png" height="15" width="15">
64
+ 登录人:</span>
65
+ <label>{{ orgpathnames }}</label>
66
+ </div>
67
+ <div class="system-left tree-flex" :class="{'tree-flex-icon': !treeOrIcon}" id="top" v-el:top>
68
+ <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}">
69
+ <div class="span system-left-tree " style="height:85%">
70
+ <h3>{{ systemname }}</h3>
71
+ <!-- <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;">-->
72
+ <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon"
73
+ :tabs="tabs" v-ref:tree></left-tree>
74
+ <!--&lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
75
+ </div>
76
+
77
+ <div class="tree-flex-footer">
78
+ <!-- <a @click="changeShow()"><img :src="imgs.open" alt=""><span v-if="treeOrIcon">菜单伸缩</span></a>-->
79
+ <!-- <a><img src="../../../static/treeset.png" alt="">系统设置</a> -->
80
+ <dropdown class="auto">
81
+ <button type="button" data-toggle="dropdown">
82
+ <img :src="imgs.set" alt=""><span v-if="treeOrIcon">系统设置</span>
83
+ </button>
84
+ <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up">
85
+ <li>系统信息及设置</li>
86
+ <!-- <li>{{name}}</li> -->
87
+ <li>{{ date }}</li>
88
+ <li @click="show=true">修改密码</li>
89
+ <li @click="AddChangeMsgShow=true">系统版本:1.0.0</li>
90
+ </ul>
91
+
92
+ </dropdown>
93
+ <a href="index.html" @click.prevent="logOut">
94
+ <img :src="imgs.out" alt=""><span v-if="treeOrIcon">退出系统</span>
95
+ </a>
96
+ </div>
97
+ </div>
98
+ </div>
99
+ <!-- <div class="line" id="line" v-show="treeOrIcon" v-el:line></div> -->
100
+
101
+ <div class="flex right-bg system-right" id="bottom" v-el:bottom>
102
+ <!-- <operator-badge></operator-badge> -->
103
+ <div class="span">
104
+ <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>
105
+ <dynamic :comps='[]' name='main' :selecttab.sync="selecttab" :orgpathnames="orgpathnames"
106
+ @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ <div v-show="isManger">
111
+ <route v-ref:route></route>
112
+ </div>
113
+
114
+ <!-- 变更录入 模态框 -->
115
+ <add-changemsg :show="AddChangeMsgShow" v-on:toggle="AddChangeMsgShow = false"></add-changemsg>
116
+ <!-- 修改密码组件 -->
117
+ <modify-pw :show.sync="show" v-if="show"></modify-pw>
118
+ <!-- 修改密码模态框 -->
119
+ </div>
120
+ </template>
121
+
122
+ <script>
123
+ import vue from 'vue'
124
+ import co from 'co'
125
+
126
+ let getwartermakr = async function (self) {
127
+ let param = {
128
+ tablename: 't_singlevalue',
129
+ condition: " 1=1 and name=\'水印内容\'"
130
+ };
131
+ let result = await self.$resetpost('rs/sql/saleSingleTable', {data: param}, {resolveMsg: null, rejectMsg: null});
132
+ if (result && result.data.length > 0) {
133
+ self.showwatermakeflag = true;
134
+ createWaterMark(result.data[0].value);
135
+ } else {
136
+ self.showwatermakeflag = false;
137
+ }
138
+ }
139
+
140
+ let createWaterMark = function (userName) {
141
+ let style;
142
+ if (style) style.remove();
143
+ let width = window.parseInt(document.body.clientWidth);
144
+ let canvasWidth = width / window.parseInt(width / 320);
145
+ let fontFamily = window.getComputedStyle(document.body)["font-family"];
146
+ let canvas = document.createElement("canvas");
147
+ canvas.width = canvasWidth;
148
+ canvas.height = 200;
149
+ let ctx = canvas.getContext("2d");
150
+ ctx.rotate((-20 * Math.PI) / 180);
151
+ ctx.font = `20px ${fontFamily}`;
152
+ ctx.fillStyle = "rgba(8,8,8,.1)";
153
+ ctx.fillText(userName, 50, 200);
154
+ let imgSrc = canvas.toDataURL("image/png");
155
+ style = document.createElement("style");
156
+ style.innerHTML = `.with-watermark:before{
157
+ content: "";
158
+ width: 100%;
159
+ height: 100%;
160
+ display: block;
161
+ position: absolute;
162
+ background-image: url("${imgSrc}");
163
+ }`;
164
+ (document.head.append || document.head.appendChild).apply(document.head, [style]);
165
+ }
166
+
167
+ window.onunload = () => {
168
+ vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
169
+ }
170
+ window.onbeforeunload = () => {
171
+ vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
172
+ }
173
+ export default {
174
+ title: '主界面',
175
+ props: ['functions', 'userid'],
176
+ data() {
177
+ return {
178
+ // 左侧树下部三个小图标
179
+ imgs: {
180
+ open: '/images/lefticon/菜单伸缩.png',
181
+ set: '/images/lefticon/系统设置.png',
182
+ out: '/images/lefticon/退出系统.png',
183
+ img1: '/images/newStyle/login-user.png',
184
+ logoimg: '/static/newStyle/fife.png'
185
+ // img2: '/images/lefticon/退出系统.png',
186
+ },
187
+ treeOrIcon: false,
188
+ isManger: false,
189
+ show: false,
190
+ orgpathnames: `${this.$login.f.orgs}-${this.$login.f.deps}-${this.$login.f.name}`,
191
+ systemname: '客服系统',
192
+ date: this.$login.toStandardDateString(),
193
+ tabs: [], //已初始化页签数组
194
+ selecttab: '',
195
+ setting: true,
196
+ srcsetting: '../../static/newStyle/setting.png',
197
+ showwatermakeflag: false,
198
+ // headerHint: true, // 右侧顶部提示信息
199
+ // value: 25645.26,
200
+ // AddChangeMsgShow: false,
201
+ // showsum: false
202
+ }
203
+ },
204
+ ready() {
205
+ getwartermakr(this);
206
+ let component = this.$login.getUrlCompileParames('component')
207
+ if (component) {
208
+ this.isManger = true
209
+ this.$refs.route.init(component, {data: this.functions.functions})
210
+ }
211
+ if (this.$login.f.password == '1') {
212
+ this.$showMessage('本地登录系统为此账户的初始密码,请确认修改密码!!!', ['confirm', 'cancel']).then((res) => {
213
+ if (res == 'confirm')
214
+ this.show = true
215
+ })
216
+ }
217
+ console.log("系统名称", this.$appdata.getSingleValue("系统名称"))
218
+ this.systemname = this.$appdata.getSingleValue("系统名称") ? this.$appdata.getSingleValue("系统名称") : '客服系统'
219
+ // let oBox = this.getElement("box")
220
+ // let oTop = this.getElement("top")
221
+ // let oBottom = this.getElement("bottom")
222
+ // let oLine = this.getElement("line")
223
+ // let that = this
224
+ // oLine.onmousedown = function(e) {
225
+ // let disX = (e || event).clientX
226
+ // oLine.left = oLine.offsetLeft
227
+ // document.onmousemove = function(e) {
228
+ // let iT = oLine.left + ((e || event).clientX - disX)
229
+ // var e = e || window.event
230
+ // let tarnameb = e.target || e.srcElement
231
+ // let maxT = oBox.clientWight - oLine.offsetWidth
232
+ // oLine.style.margin = 0
233
+ // iT < 0 && (iT = 0)
234
+ // iT > maxT && (iT = maxT)
235
+ // oLine.style.left = oTop.style.width = iT + "px"
236
+ // oBottom.style.width = oBox.clientWidth - iT + "px"
237
+ // that.$set('treeWidth', iT)
238
+ // return false
239
+ // }
240
+ // document.onmouseup = function() {
241
+ // document.onmousemove = null
242
+ // document.onmouseup = null
243
+ // oLine.releaseCapture && oLine.releaseCapture()
244
+ // }
245
+ // oLine.setCapture && oLine.setCapture()
246
+ // return false
247
+ // }
248
+ this.changeShow()
249
+ },
250
+ methods: {
251
+ hindsetting() {
252
+
253
+ this.setting = !this.setting
254
+ if (this.setting) {
255
+ this.srcsetting = '../../static/newStyle/setting.png'
256
+ } else {
257
+ this.srcsetting = '../../static/newStyle/setting1.png'
258
+ }
259
+
260
+ },
261
+ hindsetting1() {
262
+
263
+ if (!this.setting) {
264
+ this.srcsetting = '../../static/newStyle/setting.png'
265
+ this.setting = true
266
+ }
267
+
268
+ },
269
+ isnodo(val) {
270
+ console.log(val, 'ss')
271
+ this.selecttab = val
272
+ },
273
+ unfurl() {
274
+ if (this.showsum) {
275
+ this.showsum = false
276
+ } else {
277
+ this.showsum = true
278
+ }
279
+ },
280
+ // getElement(id) {
281
+ // return document.getElementById(id)
282
+ // },
283
+ changeShow() {
284
+ // this.treeOrIcon = !this.treeOrIcon
285
+ // let oBox = this.getElement("box")
286
+ // let oTop = this.getElement("top")
287
+ // let oBottom = this.getElement("bottom")
288
+ // let oLine = this.getElement("line")
289
+ // if (this.treeOrIcon) {
290
+ // // oLine.style.left = oTop.style.width = 300 + "px"
291
+ // oTop.style.width = 150 + "px"
292
+ // oBottom.style.width = oBox.clientWidth - 150 + "px"
293
+ // }else {
294
+ // oLine.style.left = oTop.style.width = 50 + "px"
295
+ // oBottom.style.width = oBox.clientWidth - 50 + "px"
296
+ // }
297
+ // }
298
+ this.treeOrIcon = !this.treeOrIcon
299
+ // if (this.treeOrIcon) {
300
+ // this.$els.top.style.width = 14 + "%"
301
+ // this.$els.bottom.style.width = this.$els.box.clientWidth - 14 + "%"
302
+ // }else {
303
+ // this.$els.top.style.width = 8 + "%"
304
+ // this.$els.bottom.style.width = this.$els.box.clientWidth - 8 + "%"
305
+ // }
306
+ },
307
+ changeMain(userid) {
308
+ this.$goto('res-main', {userid: this.userid}, 'self')
309
+ },
310
+ tabChange(name) {
311
+ console.log(name, 'tabchanage')
312
+ this.selecttab = name
313
+ this.$refs.tree.changeSelect(name)
314
+ },
315
+ tabcg(val) {
316
+ console.log(val)
317
+ this.tabs = val
318
+ },
319
+ logOut() {
320
+ console.log(this.$login.f)
321
+ this.$showMessage('您确定要退出系统吗?', ['confirm', 'cancel']).then(async (res) => {
322
+ if (res == 'confirm') {
323
+ let data = {
324
+ userid: this.$login.f.id,
325
+ username: this.$login.f.name,
326
+ usertelephone: this.$login.f.f_user_telephone
327
+ }
328
+ await this.$resetpost('rs/logic/logOut', data, {resolveMsg: '退出成功', rejectMsg: null})
329
+ window.location.reload()
330
+ }
331
+ })
332
+ }
333
+ },
334
+ computed: {
335
+ nowDate() {
336
+ return this.$login.getNowDate()
337
+ }
338
+ }
339
+ }
340
+ </script>
341
+ <style lang="less">
342
+ /* 组件内通用样式 */
343
+ .select-error {
344
+ button {
345
+ border-bottom: 1px solid #a94442 !important;
346
+ }
347
+ }
348
+
349
+ // input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{
350
+ // -webkit-appearance:textfield;
351
+ // }
352
+ /* 表单输入框组 */
353
+ .form-input-group {
354
+ display: flex;
355
+
356
+ label {
357
+ width: 100px;
358
+ text-align: right;
359
+
360
+ + * {
361
+ flex: 1;
362
+ }
363
+ }
364
+ }
365
+
366
+ // 日期组件在表单中沾满
367
+ .form-horizontal .datepicker {
368
+ width: 100%;
369
+ }
370
+
371
+ // 下拉选择框占据剩余全部空间
372
+ .select-overspread {
373
+ .form-group {
374
+ // margin: 0px 5px 10px 0px;
375
+ .form-control {
376
+ margin-right: 0px;
377
+ }
378
+ }
379
+
380
+ .btn-group, .btn-group-vertical {
381
+ width: 100%;
382
+ // padding-right: 5px;
383
+ button {
384
+ width: 100%;
385
+ display: flex;
386
+ justify-content: space-between;
387
+ align-items: center;
388
+ }
389
+ }
390
+
391
+ .dropdown-menu {
392
+ width: 100%
393
+ }
394
+ }
395
+
396
+ // 需要特定宽度的的样式
397
+ .width-60 {
398
+ width: 60px;
399
+ }
400
+
401
+ .userpanel {
402
+ font-weight: 300;
403
+ color: #333;
404
+ position: fixed;
405
+ right: 30px;
406
+ top: 45px;
407
+ background-color: white;
408
+ box-shadow: darkgrey 0.5px 0.5px 0.5px 0.5px;
409
+ padding: 4px 10px 4px 10px;
410
+ border-radius: 2px;
411
+ }
412
+
413
+ .width-80 {
414
+ width: 80px;
415
+ }
416
+
417
+ .width-100 {
418
+ width: 100px;
419
+ }
420
+
421
+
422
+ /*右侧区域的背景*/
423
+ .right-bg {
424
+ width: 100%;
425
+ flex: 1;
426
+ color: #304A66;
427
+ }
428
+
429
+ .tree-flex {
430
+ height: 100%;
431
+ // width: 150px;
432
+ /*width: 60px;*/
433
+ background: #4a7cae;
434
+ color: #fff;
435
+
436
+ }
437
+
438
+ .tree-flex-icon {
439
+ width: 50px;
440
+ /*transition: 0.5s;*/
441
+
442
+ > .span {
443
+ overflow-x: visible;
444
+ }
445
+ }
446
+
447
+ .tree-flex h3 {
448
+ text-align: center;
449
+ margin: 1em 0;
450
+ }
451
+
452
+ .tree-flex-footer {
453
+ height: 50px;
454
+ display: flex;
455
+ flex-direction: column;
456
+ color: #fff;
457
+ }
458
+
459
+ .tree-flex-footer a, .tree-flex-footer button {
460
+ flex: 1;
461
+ padding: 8px 5px;
462
+ font-size: 1.2em;
463
+ // border-top: 1px solid #697D93;
464
+ border-top: 1px solid #4a7cae;
465
+ text-decoration: none;
466
+ color: #fff;
467
+ cursor: pointer;
468
+ }
469
+
470
+ .tree-flex-footer button {
471
+ height: auto;
472
+ width: 100%;
473
+ border-radius: 0px;
474
+ background-color: rgba(255, 255, 255, 0);
475
+ border: none;
476
+ border-top: 1px solid #4a7cae;
477
+ // border-top: 1px solid #697D93;
478
+ text-align: left;
479
+ }
480
+
481
+ .tree-flex-footer button:hover {
482
+ outline: none;
483
+ background-color: rgba(255, 255, 255, 0.2);
484
+ }
485
+
486
+ .tree-flex-footer button:focus {
487
+ outline: none;
488
+ background-color: rgba(255, 255, 255, 0.5);
489
+ }
490
+
491
+ .tree-flex-footer a:hover {
492
+ color: #FFF;
493
+ background-color: rgba(255, 255, 255, 0.2);
494
+ }
495
+
496
+ .tree-flex .btn-group {
497
+ height: 50px !important;
498
+ }
499
+
500
+ .tree-flex .dropdown-menu {
501
+ /* 控制显示列表的样式 */
502
+ background: #4a7cae;
503
+ border-radius: 0px;
504
+ color: #fff;
505
+ width: auto;
506
+ margin: 0px;
507
+ padding: 0px;
508
+ }
509
+
510
+ .tree-flex .dropdown-menu-up {
511
+ /* bottom,top控制上下,left和right控制左右*/
512
+ left: 100% !important;
513
+ top: auto !important;
514
+ bottom: 0;
515
+ }
516
+
517
+ .tree-flex .dropdown-menu-down {
518
+ /* bottom,top控制上下,left和right控制左右*/
519
+ left: 100% !important;
520
+ top: 0 !important;
521
+ }
522
+
523
+ .tree-flex .dropdown-menu li {
524
+ text-align: center;
525
+ line-height: 50px;
526
+ border-bottom: 1px solid #697D93;
527
+ font-size: 1.2em;
528
+ width: auto;
529
+ white-space: nowrap;
530
+ cursor: default;
531
+
532
+ }
533
+
534
+ .tree-flex .dropdown-menu li + li {
535
+ text-align: left;
536
+ border: 0;
537
+ line-height: 40px;
538
+ padding-left: 15px;
539
+ padding-right: 15px;
540
+ font-size: 1em;
541
+ cursor: pointer;
542
+ }
543
+
544
+ .tree-flex .dropdown-menu li + li:hover {
545
+ background-color: rgba(255, 255, 255, 0.2);
546
+ }
547
+
548
+ .tree-flex .dropdown-menu li a {
549
+ border: none;
550
+ color: #fff;
551
+ height: 40px;
552
+ line-height: 40px;
553
+ font-size: 1em;
554
+ padding: 0px;
555
+ }
556
+
557
+ .tree-flex .dropdown-menu li a:hover {
558
+ color: #fff;
559
+ background-color: rgba(255, 255, 255, 0);
560
+ }
561
+
562
+ .tree-flex img {
563
+ height: 1.2em;
564
+ width: 1.2em;
565
+ margin-right: 15px;
566
+ margin-left: 5px;
567
+ }
568
+
569
+ .line {
570
+ height: 100%;
571
+ width: 5px;
572
+ background: #4C637B;
573
+ cursor: e-resize;
574
+ }
575
+
576
+ /*为树(tree)组件写的样式*/
577
+ .tree-img {
578
+ font-size: 1.2em;
579
+ }
580
+
581
+ /*将较长信息截断显示,鼠标悬停显示全部信息*/
582
+ .cutout50 {
583
+ max-width: 50px;
584
+ overflow: hidden;
585
+ text-overflow: ellipsis;
586
+ white-space: nowrap;
587
+ }
588
+
589
+ /* 滚动条样式 */
590
+ /*---滚动条默认显示样式--*/
591
+ ::-webkit-scrollbar-thumb {
592
+ // display: none;
593
+ background-color: rgba(0, 0, 0, 0.4);
594
+ /*background-color:red;*/
595
+ height: 50px;
596
+ outline-offset: -2px;
597
+ /*outline:2px solid #fff;*/
598
+ -webkit-border-radius: 4px;
599
+ /*border: 2px solid #fff;*/
600
+ }
601
+
602
+ /*---鼠标点击滚动条显示样式--*/
603
+ ::-webkit-scrollbar-thumb:hover {
604
+ // display: inherit;
605
+ background-color: rgba(0, 0, 0, 0.4);
606
+ height: 50px;
607
+ -webkit-border-radius: 4px;
608
+ }
609
+
610
+ /*---滚动条大小--*/
611
+ ::-webkit-scrollbar {
612
+ width: 8px;
613
+ height: 8px;
614
+ }
615
+
616
+ /*---滚动框背景样式--*/
617
+ ::-webkit-scrollbar-track-piece {
618
+ /* 全透明,不显示 */
619
+ background-color: rgba(255, 255, 255, 0);
620
+ -webkit-border-radius: 0;
621
+ }
622
+ </style>