cloud-web-corejs 1.0.54-dev.9 → 1.0.55

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 (45) hide show
  1. package/package.json +1 -1
  2. package/src/components/excelExport/index.js +5 -5
  3. package/src/components/excelExport/index.vue +0 -1
  4. package/src/components/excelExport/mixins.js +1 -4
  5. package/src/components/excelImport/index.js +13 -13
  6. package/src/components/excelImport/index.vue +5 -7
  7. package/src/components/excelImport/mixins.js +1 -1
  8. package/src/components/fileLibrary/fileObjAuthDialog.vue +103 -125
  9. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +1 -6
  10. package/src/components/fileLibrary/index.vue +2 -2
  11. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +6 -21
  12. package/src/components/fileLibrary/mixins/indexMixins.js +0 -11
  13. package/src/components/jsonImport/index.js +17 -17
  14. package/src/components/table/index.js +1 -1
  15. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +1 -0
  16. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +1 -0
  17. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +2 -2
  18. package/src/components/xform/form-designer/form-widget/dialog/preformDialog.vue +2 -2
  19. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +5 -4
  20. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +2 -2
  21. package/src/components/xform/form-designer/setting-panel/form-setting.vue +2 -36
  22. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +0 -2
  23. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +33 -277
  24. package/src/components/xform/form-render/indexMixin.js +1 -24
  25. package/src/layout/components/Sidebar/default.vue +1222 -1222
  26. package/src/layout/components/notify_message/unreadDialog.vue +5 -11
  27. package/src/utils/vab.js +1 -1
  28. package/src/views/bd/setting/bd_attach_setting/edit.vue +1 -1
  29. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +1 -1
  30. package/src/views/bd/setting/form_template/edit.vue +0 -4
  31. package/src/views/bd/setting/form_template/mixins/edit.js +1 -1
  32. package/src/views/bd/setting/form_template/mixins/list.js +1 -1
  33. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +7 -7
  34. package/src/views/user/access_log/list.vue +349 -349
  35. package/src/views/user/company_info/edit.vue +1 -9
  36. package/src/views/user/home/index.vue +2 -4
  37. package/src/views/user/system_notice/infoDialog.vue +1 -25
  38. package/src/views/user/user/list.vue +563 -563
  39. package/src/views/user/wf/wf_obj_config/edit.vue +1 -5
  40. package/src/views/user/wf/wf_obj_config/list.vue +0 -15
  41. package/src/components/excelExport/exportFieldDialog.vue +0 -201
  42. package/src/components/fileLibrary/fileObjNotifyEdit.vue +0 -170
  43. package/src/components/xform/form-designer/setting-panel/property-editor/showRuleFlag-editor.vue +0 -223
  44. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +0 -62
  45. package/src/components/xform/form-designer/setting-panel/wfObjConfigDialog.vue +0 -189
@@ -1,1222 +1,1222 @@
1
- <template>
2
- <div :class="{ 'has-logo': showLogo }">
3
- <!-- <logo v-if="showLogo" :collapse="isCollapse" /> -->
4
-
5
- <div class="hamburger-box" ref="hamhurger" @click="openUserInfo">
6
- <!-- <hamburger :is-active="sidebar.opened" @toggleClick="toggleSideBar" /> -->
7
- <div>
8
- <p class="name"><i class="iconfont icon-ziyuan"></i><span>{{ userInfo.nickName }}</span></p>
9
- </div>
10
- </div>
11
- <div class="business-name" ref="business">
12
- <el-tooltip :enterable="false" effect="dark" :content="companyInfo.companyName" :placement="direction">
13
- <p v-show="getMenuFlag()">{{ companyInfo.companyName }}</p>
14
- </el-tooltip>
15
- </div>
16
- <div class="fase-box" ref="fase" @mouseleave="$emit('selfClose')" @mouseenter="$emit('selfEnter')">
17
- <langTool v-if="getMenuFlag()"></langTool>
18
- <div class="item" @click="openCompanyDialog" v-if="getMenuFlag()">
19
- <el-tooltip :enterable="false" effect="dark" :content="$t1('切换组织')" :placement="direction">
20
- <i class="el-icon-set-up"/>
21
- </el-tooltip>
22
- </div>
23
- <div class="item" v-if="getMenuFlag()">
24
- <el-tooltip :enterable="false" effect="dark" :content="$t1('流程待办')" :placement="direction">
25
- <i class="iconfont icon-liuchengdaiban" @click="$router.push('/basic/wf/wf_manage/list')"/>
26
- </el-tooltip>
27
- </div>
28
- <div class="item" @click="logout()">
29
- <el-tooltip :enterable="false" effect="dark" :content="$t1('退出')" :placement="direction">
30
- <i class="el-icon-switch-button"/>
31
- </el-tooltip>
32
- </div>
33
- </div>
34
- <template v-for="router1 in viewRouter">
35
- <template v-for="router2 in router1.children">
36
- <div
37
- class="second-list"
38
- :key="router1.id + 't'+router2.id"
39
- :class="{ on: router2.id == nowNavID }"
40
- @mouseenter="stopFlag = 1"
41
- @mouseleave="showNav()"
42
- v-show="router2.id == nowNavID"
43
- :ref="'seconMenus' + router2.id"
44
- >
45
- <i class="ico-arrow"></i>
46
- <div>
47
- <div class="tit"><i :class="getMenuClass(router2,2)"></i><span>{{ getMenuName(router2) }}</span></div>
48
- <dl v-for="(router3,index3) in router2.children" :key="'router3'+index3">
49
-
50
- <div class="item" v-if="!router3.hidden" @click="rourteTo(router3,router1)">
51
- <!--<i class="el-icon-caret-right"></i>-->
52
- <i :class="getMenuClass(router3,3)"></i>
53
- <a>{{ getMenuName(router3) }}</a>
54
- </div>
55
- </dl>
56
- </div>
57
- </div>
58
- </template>
59
- </template>
60
- <el-menu
61
- class="menu-box"
62
- :class="{'lang-zh':$i18n.locale=='zh'}"
63
- text-color="#fff"
64
- active-text-color="#fff"
65
- :unique-opened="true"
66
- @mouseleave="showNav()"
67
- ref="seconMenus"
68
- >
69
- <el-scrollbar wrap-class="scrollbar-wrapper" id="menuUl">
70
- <el-submenu v-for="menuModule in menuModules" :index="''+menuModule.id" :key="'menuModule'+menuModule.id"
71
- @click.native="rourteTo(menuModule)">
72
- <template slot="title">
73
- <i :class="getMenuClass(menuModule,1)"></i>
74
- <span>{{ getMenuName(menuModule) }}</span>
75
- </template>
76
- <el-menu-item v-for="(router1, index1) in menuModule.children" :key="index1" :index="''+router1.id"
77
- :class="getMenuClass(router1,2)"
78
- @mouseenter.native="showNav(router1, $event)" @mouseleave.native="showNav()"
79
- @click="rourteTo(router1)">
80
- {{ getMenuName(router1) }}
81
- <i class="el-icon-caret-right" v-if="router1.children.length > 0"/>
82
- </el-menu-item>
83
- </el-submenu>
84
- </el-scrollbar>
85
- </el-menu>
86
- <div class="menu-btn">
87
- <i class="el-icon-arrow-up" @click="toUpMove()"></i>
88
- <i class="el-icon-arrow-down" @click="toDownMove()"></i>
89
- </div>
90
- <div id="tta" style="position: absolute;height: 100%;top: 0;right: 0;z-index: 9999;width: 800px;left: 100%;"
91
- v-if="showMenuModal"></div>
92
- <el-dialog
93
- title="切换组织"
94
- width="355px"
95
- custom-class="dialog-style list-dialog"
96
- v-if="showCompanyDialog"
97
- :visible.sync="showCompanyDialog"
98
- :append-to-body="true"
99
- :modal-append-to-body="true"
100
- :close-on-click-modal="false"
101
- v-el-drag-dialog
102
- v-el-dialog-center
103
- @close="changeCompanyClose"
104
- >
105
- <div class="cont">
106
- <el-input placeholder="搜索" class="search-btn" v-model="filterText"></el-input>
107
- <el-tree
108
- :props="defaultProps"
109
- :load="loadNode"
110
- node-key="id"
111
- ref="tree"
112
- highlight-current
113
- lazy
114
- :expand-on-click-node="true"
115
- @node-click="handleNodeClick"
116
- class="organization-tree"
117
- icon-class="el-icon-arrow-right"
118
- :filter-node-method="filterNode"
119
- ></el-tree>
120
- </div>
121
- <!-- <span slot="footer" class="dialog-footer">
122
- <el-button type="primary" plain class="button-sty" @click="changeCompanyClose">
123
- <i class="el-icon-close el-icon"></i>
124
- 取 消
125
- </el-button>
126
- <el-button type="primary" @click="changeCompany" class="button-sty">
127
- <i class="el-icon-check el-icon"></i>
128
- 确 定
129
- </el-button>
130
- </span> -->
131
- </el-dialog>
132
-
133
- <infoIframeDialog v-if="showInfoIframeDialog" :visiable.sync="showInfoIframeDialog"
134
- :dataId="userInfo.id"></infoIframeDialog>
135
- <userInfo v-if="showUserInfoDialog" :visiable.sync="showUserInfoDialog" :_dataId="userInfo.id" topValue="128px"
136
- @reload="userInfoReload"></userInfo>
137
-
138
- <onlineTalk></onlineTalk>
139
- </div>
140
- </template>
141
-
142
- <script>
143
- import {mapGetters} from 'vuex';
144
- import variables from '@/styles/variables.scss';
145
- import userInfo from '@base/views/user/user/info.vue';
146
- import onlineTalk from "@base/components/onlineTalk";
147
- import {
148
- getToken
149
- } from '@base/utils/auth';
150
- import indexUtil from "@base/utils/index.js"
151
- import langTool from "../langTool.vue";
152
-
153
- export default {
154
- props: {
155
- option: Object
156
- },
157
- data() {
158
- return {
159
- direction: 'bottom',
160
- defaultOpenedsArray: [],
161
- viewRouter: [],
162
- showMenuModal: false,
163
- menuheight: {
164
- height: ''
165
- },
166
- defaultProps: {
167
- label: 'label', //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
168
- children: [],
169
- isLeaf: 'leaf'
170
- },
171
- filterText: null,
172
- showCompanyDialog: false,
173
- choose_company_info: '',
174
- userInfo: {},
175
- companyInfo: {},
176
- showUserInfoDialog: false,
177
- hoverStatus: false,
178
- nowNavID: 'null',
179
- stopFlag: 0,
180
- showInfoIframeDialog: false,
181
- currentMenu: null,
182
- menuModules: [],
183
- firstMenuHeight: 0, // 第一个菜单的高度
184
- eveyMenuHeight: 48, // 每一个菜单的高度
185
- };
186
- },
187
- components: {userInfo, onlineTalk, langTool},
188
- computed: {
189
- ...mapGetters(['permission_routes', 'sidebar', 'sidebarRouters', 'isBdAdmin']),
190
- activeMenu() {
191
- const route = this.$route;
192
- const {meta, path} = route;
193
- // if set path, the sidebar will highlight the path you set
194
- if (meta.activeMenu) {
195
- return meta.activeMenu;
196
- }
197
- return path;
198
- },
199
- showLogo() {
200
- return this.$store.state.settings.sidebarLogo;
201
- },
202
- variables() {
203
- return variables;
204
- },
205
- /*isCollapse() {
206
- if (this.sidebar.opened) {
207
- this.direction = 'bottom';
208
- } else {
209
- this.direction = 'right-start';
210
- }
211
- return !this.sidebar.opened;
212
- }*/
213
- },
214
- watch: {
215
- filterText(val) {
216
- this.$refs.tree.filter(val);
217
- }
218
- },
219
- created() {
220
- indexUtil.initI18nMessage('menus')
221
- },
222
- mounted() {
223
- this.getUserInfo();
224
- setTimeout(() => {
225
- this.filterRoute();
226
- }, 100);
227
- this.countHeight();
228
- let query = this.$route.query;
229
- if (query && query.flag == 1) {
230
- this.showCompanyDialog = true;
231
- }
232
- },
233
- methods: {
234
- getMenuFlag() {
235
- return !this.isBdAdmin;
236
- },
237
- getMenuName(item) {
238
- let locale = this.$i18n?.locale;
239
- let zhTitle = (item.meta ? item.meta.title : '');
240
- let enTitle = (item.meta ? item.meta.enTitle : '');
241
- let title;
242
- if (locale == "en") {
243
- title = enTitle || zhTitle;
244
- } else {
245
- title = zhTitle
246
- }
247
- if (!enTitle || locale !== "en") {
248
- title = zhTitle
249
- }
250
- if (this.$t1) {
251
- title = this.$t1(title)
252
- }
253
-
254
- return title;
255
- },
256
- jumpOutLink(route) {
257
- let path = route.url || route.path;
258
- if (route.type == 4 && path) {
259
- if (path.indexOf('token={token}') >= 0) {
260
- path = path.replace('token={token}', 'token=' + getToken())
261
- }
262
- window.open(path);
263
- }
264
- },
265
- changeModules(row, cRow) {
266
- if (!row.route) return;
267
- localStorage.setItem('currentMenuId', row.id);
268
- let route = row.route ? '/' + row.route : '';
269
- sessionStorage.setItem('reUrl', cRow.path)
270
- sessionStorage.setItem('reCid', row.id)
271
- location.href = route + '/index.html/#/home';
272
-
273
- // location.reload();
274
- },
275
- filterRoute() {
276
- var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
277
- var nRoute1s = [];
278
- oldRoutes.forEach((route1, index1) => {
279
- let nRoute2s = [];
280
- if (!route1.hidden) {
281
- route1.children.forEach((route2, index2) => {
282
- let nRoute3s = [];
283
- if (!route2.hidden) {
284
- route2.children.forEach((route3, index3) => {
285
- if (!route3.hidden) {
286
- nRoute3s.push(route3);
287
- }
288
- });
289
- }
290
- if (route2.type == 4 || route2.url || nRoute3s.length > 0) {
291
- route2.children = nRoute3s;
292
- nRoute2s.push(route2);
293
- }
294
- });
295
- }
296
- if (route1.type == 4 || route1.url || nRoute2s.length > 0) {
297
- route1.children = nRoute2s;
298
- nRoute1s.push(route1);
299
- }
300
- });
301
- this.viewRouter = nRoute1s || [];
302
- this.menuModules = nRoute1s || [];
303
-
304
- let reUrl = sessionStorage.getItem('reUrl');
305
- let reCid = sessionStorage.getItem('reCid');
306
- if (reUrl) {
307
- this.$nextTick(() => {
308
- this.$refs.seconMenus.open(reCid);
309
- })
310
- this.$router.push(reUrl);
311
- sessionStorage.removeItem('reUrl');
312
- sessionStorage.removeItem('reCid');
313
- }
314
- },
315
- filterRoute1() {
316
- var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
317
- var nRoute1s = [];
318
- oldRoutes.forEach((route1, index1) => {
319
- let nRoute2s = [];
320
- if (!route1.hidden && route1.route) {
321
- route1.children.forEach((route2, index2) => {
322
- let nRoute3s = [];
323
- if (!route2.hidden) {
324
- route2.children.forEach((route3, index3) => {
325
- if (!route3.hidden) {
326
- nRoute3s.push(route3);
327
- }
328
- });
329
- }
330
- if (nRoute3s.length > 0) {
331
- route2.children = nRoute3s;
332
- nRoute2s.push(route2);
333
- }
334
- });
335
- }
336
- if (nRoute2s.length > 0) {
337
- route1.children = nRoute2s;
338
- nRoute1s.push(route1);
339
- }
340
- });
341
- let rows = nRoute1s;
342
- if (rows.length) {
343
- let currentMenu;
344
- if (nRoute1s.length) {
345
- var currentMenuId = localStorage.getItem('currentMenuId');
346
- if (currentMenuId) {
347
- currentMenu = nRoute1s.find(row => row.id == currentMenuId);
348
- }
349
- if (!currentMenu) {
350
- currentMenu = nRoute1s[0];
351
- }
352
- this.viewRouter = currentMenu.children;
353
- }
354
- this.currentMenu = currentMenu;
355
- this.menuModules = rows || [];
356
-
357
- /*if (currentMenu) {
358
- if (currentMenu.route != WEB_PREFIX.substring(1, WEB_PREFIX.length)) {
359
- this.changeModules(currentMenu, 1);
360
- } else {
361
- localStorage.setItem('currentMenuId', currentMenu.id);
362
- }
363
- } else {
364
- localStorage.removeItem('currentMenuId');
365
- }*/
366
- }
367
- },
368
- rourteTo(route) {
369
- let path = route.url || route.path;
370
- if (!path) {
371
- return
372
- }
373
- this.showMenuModal = true;
374
- setTimeout(() => {
375
- this.showMenuModal = false;
376
- }, 200);
377
- try {
378
- if (route.linkType == 4) {
379
- this.jumpOutLink(route)
380
- } else if (route.linkType == 3) {
381
- this.$router.push({path: path, query: {url: route.outLink, route: route.route}});
382
- } else {
383
- this.$router.push(path);
384
- }
385
- } catch (e) {
386
- console.error(e);
387
- }
388
- },
389
- logout() {
390
- this.$store.dispatch('user/logout2').then(res => {
391
- this.$router.push(`/login?redirect=${this.$route.fullPath}`);
392
- });
393
- },
394
- toggleSideBar() {
395
- this.$store.dispatch('app/toggleSideBar');
396
- },
397
- countHeight() {
398
- var h = this.$refs.hamhurger.offsetHeight + this.$refs.fase.offsetHeight + this.$refs.business.offsetHeight;
399
- this.menuheight.height = window.innerHeight - h + 'px';
400
- },
401
- handleNodeClick(data, node, v) {
402
- if (!data.hasChild) {
403
- this.choose_company_info = data;
404
- this.changeCompany();
405
- } else {
406
- this.choose_company_info = {};
407
- }
408
- },
409
- // 异步树叶子节点懒加载逻辑
410
- loadNode(node, resolve) {
411
- let companyCode = node && node.data && node.data.companyCode ? node.data.companyCode || '' : '';
412
- let url = !companyCode ? USER_PREFIX + '/user_company_info/getAllList' : USER_PREFIX + '/user_company_info/getChildren';
413
-
414
- this.$http({
415
- url: url,
416
- method: 'post',
417
- data: {
418
- parentCompanyCode: companyCode
419
- },
420
- success: res => {
421
- let datas = res.objx || [];
422
- let parentLabel = companyCode ? node.label : null;
423
- datas.forEach(item => {
424
- item.leaf = !item.hasChild;
425
- let label = item.companyName;
426
- /*if(companyCode){
427
- label = label + '('+companyTypeMap[item.companyType]+')'
428
- }*/
429
- item.label = label;
430
- item.parentLabel = parentLabel;
431
- });
432
-
433
- if (node.level === 0) {
434
- if (datas.length > 0 && datas[0].hasChild) {
435
- this.$nextTick(() => {
436
- let nodedata = node.childNodes[0];
437
- nodedata.expanded = true;
438
- nodedata.loadData();
439
- });
440
- }
441
- }
442
- resolve(datas);
443
- }
444
- });
445
- },
446
- filterNode(value, data) {
447
- if (!value) return true;
448
- let flag1 = data.label.indexOf(value) !== -1;
449
- let flag2 = data.parentLabel && data.parentLabel.indexOf(value) !== -1;
450
- return flag1 || flag2;
451
- },
452
- openCompanyDialog() {
453
- this.filterText = null;
454
- this.showCompanyDialog = true;
455
- },
456
- getWebPrefix(callback) {
457
- this.$http({
458
- url: USER_PREFIX + '/auth/getWebPrefix',
459
- method: `post`,
460
- data: {},
461
- isLoading: true,
462
- success: res => {
463
- let webPrefix = res.objx
464
- callback && callback(webPrefix)
465
- }
466
- });
467
- },
468
- changeCompany() {
469
- let row = this.choose_company_info;
470
- let query = this.$route.query;
471
- let flag = query && query.flag == 1 ? 1 : null;
472
- this.showCompanyDialog = false;
473
- if (row && row.companyCode) {
474
- this.$baseLoading({target: document.body, fullscreen: true});
475
- this.$http({
476
- url: USER_PREFIX + '/auth/switchCompany',
477
- method: 'post',
478
- data: {stringOne: row.companyCode},
479
- isLoading: true,
480
- success: res => {
481
- this.getWebPrefix((prefix) => {
482
- let webPrefix = prefix ? ("/" + prefix) : window.MAIN_WEB_PREFIX;
483
- sessionStorage.removeItem("out-token");
484
- this.$store.dispatch('user/changeCompanyInfo', row);
485
- this.$store.dispatch('tagsView/delAllViews');
486
- window.location.href = webPrefix + '/index.html';
487
- });
488
- }
489
- });
490
- } else {
491
- if (flag == 1) {
492
- this.$router.push({
493
- path: '/'
494
- });
495
- }
496
- }
497
- },
498
- changeCompanyClose() {
499
- let query = this.$route.query;
500
- let flag = query && query.flag == 1 ? 1 : null;
501
- if (flag == 1) {
502
- this.$router.push({
503
- path: '/'
504
- });
505
- }
506
- this.showCompanyDialog = false;
507
- },
508
- getUserInfo() {
509
- this.$http({
510
- url: USER_PREFIX + '/user/currentUser',
511
- method: 'post',
512
- success: res => {
513
- let userInfo = res.objx;
514
- this.headPhotoUrl = userInfo.headPhotoUrl ? userInfo.headPhotoUrl : require('@/resources/images' + '/default-header.png');
515
- this.userInfo = userInfo;
516
- }
517
- });
518
-
519
- this.$http({
520
- url: USER_PREFIX + '/company_info/getCurrent',
521
- method: `post`,
522
- success: res => {
523
- this.companyInfo = res.objx || {};
524
- }
525
- });
526
- },
527
- openUserInfo() {
528
- this.showUserInfoDialog = true;
529
- // this.showInfoIframeDialog = true;
530
- },
531
- userInfoReload() {
532
- this.showUserInfoDialog = true;
533
- },
534
- showNav(route, event) {
535
- let id = route && route.id ? route.id : null;
536
- if (id != null) {
537
- if (!route.children || !route.children.length) {
538
- return;
539
- }
540
- this.stopFlag = 1;
541
- this.nowNavID = id;
542
- this.$nextTick(() => {
543
- var wh = window.innerHeight;
544
- let dom = event.target;
545
- let domAttr = dom.getBoundingClientRect();
546
- // var sh1 = dom.offsetTop;
547
- var sh1 = domAttr.top;
548
- let $snav = this.$refs['seconMenus' + id][0];
549
- let snavAttr = $snav.getBoundingClientRect();
550
-
551
- // var sh2 = $snav.outerHeight;
552
- var sh2 = snavAttr.height;
553
- var sh = wh - (sh1 + sh2);
554
-
555
- var hd = 20;
556
- var xhd = sh - hd; //移动距离+固定值
557
- if (sh >= 0) {
558
-
559
- $snav.style['margin-top'] = sh1 + 'px';
560
- } else if (sh < 0) {
561
- let bd = sh1 + sh;
562
-
563
- $snav.style['margin-top'] = bd + 'px';
564
- $snav.querySelector(".ico-arrow").style['margin-top'] = (sh1 - bd) + 'px';
565
- }
566
- });
567
- } else {
568
- this.stopFlag = 0;
569
- setTimeout(() => {
570
- if (this.stopFlag == 0) {
571
- this.nowNavID = id;
572
- }
573
- }, 200);
574
- }
575
- },
576
- jumpTo(row, firstRow) {
577
- let route = firstRow.route ? '/' + firstRow.route : '';
578
- if (route == WEB_PREFIX) {
579
- this.$router.push({
580
- path: row.path
581
- });
582
- } else {
583
- this.changeModules(firstRow, row);
584
- }
585
- },
586
- toDownMove() {
587
- let containter = document.getElementById('menuUl').querySelector(".scrollbar-wrapper");
588
- let menuscrollTop = containter.scrollTop
589
- let scrollHeight = containter.scrollHeight
590
- let val = menuscrollTop + this.eveyMenuHeight;
591
- if (val < scrollHeight) {
592
- containter.scrollTop = val
593
- } else {
594
- containter.scrollTop = scrollHeight
595
- }
596
- },
597
- toUpMove() {
598
- let containter = document.getElementById('menuUl').querySelector(".scrollbar-wrapper");
599
- let menuscrollTop = containter.scrollTop
600
- let val = menuscrollTop - this.eveyMenuHeight;
601
- if (val > 0) {
602
- containter.scrollTop = val
603
- } else {
604
- containter.scrollTop = 0
605
- }
606
- },
607
- getMenuClass(menu, flag) {
608
- let res = "";
609
- if (menu.menuImg) {
610
- res = "iconfont " + menu.menuImg;
611
- } else if (flag == 1) {
612
- res = "iconfont icon-jinggao";//一级默认图标
613
- } else if (flag == 2) {
614
- res = "iconfont icon-circle";//二级默认图标
615
- } else if (flag == 3) {
616
- res = "iconfont icon-thirdMemu";//三级级默认图标
617
- }
618
-
619
- if (flag == 2) {
620
- if (menu.id == this.nowNavID) {
621
- res += " on";
622
- }
623
- }
624
- return res;
625
- }
626
- }
627
- };
628
- </script>
629
- <style lang="scss">
630
- @import '~@/styles/variables.scss';
631
-
632
- .hamburger-box {
633
- background-color: #0000004d;
634
- height: 42px;
635
- /* line-height: 30px; */
636
- text-align: center;
637
- /* box-shadow: 0 2px 6px rgb(0 0 0 / 10%); */
638
- position: relative;
639
- z-index: 2;
640
- overflow: hidden;
641
- font-size: 12px;
642
- color: rgba(255, 255, 255, 0.65);
643
-
644
- > div {
645
- color: #fff;
646
- font-size: 13px;
647
- margin-bottom: 4px;
648
- cursor: pointer;
649
- height: 36px;
650
- border-radius: 7px;
651
- margin: 6px 10px 6px 8px;
652
- overflow: hidden;
653
- background: #2a6494;
654
- }
655
-
656
- p {
657
- color: #fff;
658
- font-size: 13px;
659
- margin-bottom: 4px;
660
- cursor: pointer;
661
- /* border: solid 1px #ffffff61; */
662
- display: block;
663
- line-height: 27px;
664
- /* width: 88%; */
665
- margin-top: 6px;
666
- border-radius: 7px;
667
- margin: 6px 10px 6px 8px;
668
- background: #2a6494;
669
-
670
- i {
671
- font-size: 14px;
672
- vertical-align: middle;
673
- margin: 0 4px 0 6px;
674
- height: 36px;
675
- line-height: 36px;
676
- width: 21px;
677
- }
678
-
679
- span {
680
- width: 94px;
681
- display: table-cell;
682
- height: 32px;
683
- word-break: break-word;
684
- line-height: 16px;
685
- overflow: hidden;
686
- vertical-align: middle;
687
- }
688
-
689
- &.name {
690
- display: table-row;
691
- margin: 0;
692
- }
693
- }
694
- }
695
-
696
- .business-name {
697
- height: 47px;
698
- color: #ffffffb8;
699
- background: #0000004d;
700
- /* padding-top: 12px; */
701
- font-size: 12px;
702
- /* padding-left: 5px; */
703
- display: table-cell;
704
- vertical-align: middle;
705
- width: 140px;
706
- padding: 6px 10px;
707
- text-align: center;
708
-
709
- p {
710
- margin: 0;
711
- }
712
- }
713
-
714
- .fase-box {
715
- color: #fff;
716
- /* border-bottom: solid 1px rgba(255, 255, 255, 0.12); */
717
- border-top: solid 1px rgba(255, 255, 255, 0.12);
718
- background: #225076;
719
- padding: 4px 0 8px;
720
- width: 100%;
721
- z-index: 999;
722
- position: relative;
723
- /* display: flex;*/
724
- //text-align: left !important;
725
- // &:hover {
726
- // color: $baseColor;
727
- // background-color: #fbfdfe;
728
- // .fase-list {
729
- // display: block;
730
- // }
731
- // }
732
- .item {
733
- flex: 1;
734
- text-align: center;
735
- font-size: 16px;
736
- height: 40px;
737
- line-height: 40px;
738
- cursor: pointer;
739
- display: inline-block;
740
- min-width: 30px;
741
- }
742
-
743
- .fase-list {
744
- position: absolute;
745
- left: 100%;
746
- color: $baseColor;
747
- background-color: #fbfdfe;
748
- border: solid 1px $baseColor;
749
- border-left: none;
750
- top: -0.5px;
751
- padding: 10px 0 10px 24px;
752
- height: 43px;
753
- width: 413px;
754
- display: none;
755
-
756
- .l-item {
757
- display: inline-block;
758
- font-size: 12px;
759
- margin-right: 36px;
760
- line-height: 20px;
761
- cursor: pointer;
762
-
763
- i {
764
- vertical-align: middle;
765
- margin-right: 4px;
766
- font-size: 15px;
767
- margin-bottom: 2px;
768
- }
769
-
770
- &:hover {
771
- border-bottom: solid 1px $baseColor;
772
- }
773
- }
774
- }
775
- }
776
-
777
- .openSidebar .fase-box {
778
- text-align: center;
779
- //padding: 0;
780
- }
781
-
782
- #app .sidebar-container {
783
- overflow: visible;
784
- z-index: 1003;
785
-
786
- &.hover {
787
- z-index: 1003;
788
- }
789
-
790
- &.hover1 .fase-box {
791
- width: 138px;
792
- color: $baseColor;
793
- background-color: #fbfdfe;
794
- border-color: $baseColor;
795
- }
796
-
797
- .el-menu.menu-box {
798
- height: calc(100vh - 173px);
799
- font-size: 13px;
800
- z-index: -1;
801
- position: relative;
802
- background-color: rgba(0, 0, 0, .2);
803
- word-break: break-word;
804
-
805
- .el-submenu {
806
- overflow: hidden; //有点电脑分辨率问题
807
- .el-submenu__title {
808
- padding: 0 11px !important;
809
- height: 48px;
810
- line-height: 48px;
811
-
812
- i {
813
- color: #fff;
814
- font-size: 13px;
815
- margin-right: 0;
816
- width: 18px;
817
-
818
- &.iconfont {
819
- margin-right: 5px;
820
- font-size: 19px;
821
- float: left;
822
- }
823
-
824
- &.el-submenu__icon-arrow {
825
- right: 3px;
826
- text-align: center;
827
- font-size: 12px;
828
- margin-top: -5px;
829
- display: none;
830
- }
831
- }
832
-
833
- > span {
834
- height: 48px;
835
- display: table-cell;
836
- width: 114px;
837
- vertical-align: middle;
838
- font-size: 13px;
839
- white-space: normal;
840
- line-height: 16px;
841
- }
842
- }
843
-
844
- &.is-opened .el-submenu__title {
845
- //background-color: rgba(27, 66, 97) !important;
846
- }
847
- }
848
-
849
- .el-submenu {
850
- .el-menu {
851
- background: rgba(0, 0, 0, 0.35) !important;
852
- box-shadow: 0px -5px 8px #00000014 inset;
853
- //padding:4px 0;
854
- }
855
-
856
- .el-menu-item {
857
- height: auto;
858
- line-height: 1.4;
859
- padding-left: 33px !important;
860
- font-size: 12px;
861
- opacity: 0.8;
862
- margin: 10px 0 10px 14px;
863
- padding: 7px 2px 7px 0px;
864
- border-radius: 8px;
865
- text-align: left;
866
- min-width: 81px !important;
867
- white-space: normal;
868
- margin-right: 10px;
869
- word-break: break-word;
870
-
871
- &:before {
872
- position: absolute;
873
- top: 50%;
874
- height: 20px;
875
- margin-top: -10px;
876
- line-height: 20px;
877
- left: 7px;
878
- font-size: 18px;
879
- }
880
-
881
- [class^=el-icon-] {
882
- font-size: 12px;
883
- color: #FFF;
884
- position: absolute;
885
- right: 2px;
886
- top: 50%;
887
- margin-top: -5px;
888
- width: 14px;
889
- zoom: 0.8;
890
- display: none;
891
- }
892
-
893
- &:hover, &.on {
894
- opacity: 1;
895
- background-color: #FBFDFE !important;
896
- color: $baseColor !important;
897
-
898
- .el-icon-arrow-right {
899
- color: $baseColor
900
- }
901
- }
902
- }
903
- }
904
-
905
- &.lang-zh {
906
- font-size: 14px;
907
-
908
- .el-submenu {
909
- .el-submenu__title {
910
- > span {
911
- font-size: 14px;
912
- text-align: center
913
- }
914
-
915
- i.iconfont {
916
- margin-right: 2px;
917
- }
918
- }
919
-
920
- .el-menu-item {
921
- font-size: 13px
922
- }
923
- }
924
-
925
- }
926
- }
927
- }
928
-
929
- .main-container {
930
- z-index: 1002;
931
- }
932
-
933
- .menu-btn {
934
- background-color: #0000001c;
935
- height: 30px;
936
- line-height: 30px;
937
- text-align: center;
938
- box-shadow: 0 -10px 6px rgb(0 0 0 / 10%);
939
- display: flex;
940
- color: #FFF;
941
- font-size: 16px;
942
-
943
- i {
944
- display: inline-block;
945
- flex: 1;
946
- line-height: 30px;
947
- cursor: pointer;
948
- border-right: solid 1px rgba(0, 0, 0, 0.2);
949
-
950
- &:last-child {
951
- border-right: none;
952
- }
953
-
954
- &:hover {
955
- background-color: rgba(255, 255, 255, 0.12);
956
- }
957
- }
958
- }
959
-
960
- /*.menu-box {
961
- background-color: #0000002e !important;
962
- font-size: 14px;
963
- z-index: -1;
964
- position: relative;
965
- &.hover .el-scrollbar {
966
- width: 1000px;
967
- }
968
- .el-scrollbar {
969
- .el-scrollbar__view {
970
- padding-top: 1px;
971
- }
972
- .el-scrollbar__bar.is-vertical {
973
- left: 104px;
974
- }
975
- }
976
- .first-item {
977
- position: relative;
978
- width: 104px;
979
- &:nth-child(-n + 6) .second-list {
980
- bottom: inherit !important;
981
- top: -40.5px !important;
982
- }
983
- &:nth-child(1) .second-list {
984
- top: 0 !important;
985
- }
986
- &:nth-last-child(-n + 6) .second-list {
987
- bottom: -1%;
988
- top: inherit;
989
- }
990
- .f-name {
991
- height: 55px;
992
- line-height: 55px;
993
- padding-left: 9px;
994
- color: #fff;
995
- cursor: pointer;
996
- position: relative;
997
- padding-right: 6px;
998
- -webkit-transition: all 0.2s ease-in;
999
- -moz-transition: all 0.2s ease-in;
1000
- -o-transition: all 0.2s ease-in;
1001
- transition: all 0.2s ease-in;
1002
- width: 104px;
1003
- i.el-icon-arrow-right {
1004
- position: absolute;
1005
- right: 3px;
1006
- top: 21.5px;
1007
- width: 14px;
1008
- height: 14px;
1009
- }
1010
- .el-icon-s-opportunity {
1011
- opacity: 0.92;
1012
- font-size: 13px;
1013
- vertical-align: middle;
1014
- margin-right: 2px;
1015
- }
1016
- span{display: inline-block;width: calc(100% - 20px);vertical-align: middle;line-height: 1.2;}
1017
- }
1018
-
1019
- &:hover,
1020
- &.current {
1021
- .f-name {
1022
- background-color: #fbfdfe;
1023
- color: $baseColor;
1024
- }
1025
- .second-list {
1026
- display: block;
1027
- }
1028
- }
1029
- }
1030
- }
1031
-
1032
-
1033
- */
1034
- .second-list {
1035
- display: none;
1036
- position: absolute;
1037
- left: $sideBarWidth;
1038
- padding-left: 2px;
1039
- top: 0.5px;
1040
- // &:before {
1041
- // content: "";
1042
- // top: 22px;
1043
- // bottom: 22px;
1044
- // background-color: $baseColor;
1045
- // width: 2px;
1046
- // position: absolute;
1047
- // left: 24px;
1048
- // }
1049
- > div {
1050
- background: #fbfdfe;
1051
- border: solid 1px $baseColor;
1052
- top: -0.5px;
1053
- padding: 24px 0;
1054
- border-radius: 8px;
1055
- margin-left: 9px;
1056
- max-height: calc(84vh);
1057
- overflow-y: auto;
1058
- overflow-x: hidden;
1059
- width: 458px;
1060
- }
1061
-
1062
- .ico-arrow {
1063
- border-top: solid 7px transparent;
1064
- border-bottom: solid 7px transparent;
1065
- border-right: solid 7px $baseColor;
1066
- position: absolute;
1067
- left: 2px;
1068
- top: 8px;
1069
- }
1070
-
1071
- &.on {
1072
- display: block;
1073
- }
1074
-
1075
- .tit {
1076
- width: auto;
1077
- /* text-align: center; */
1078
- /* background: #22507614; */
1079
- color: $baseColor;
1080
- /* border: dashed 1px #1d4667; */
1081
- padding: 0 0 10px;
1082
- /* border-radius: 6px; */
1083
- /* margin: 5px auto; */
1084
- margin: 0 22px;
1085
- display: block;
1086
- border-bottom: solid 1px #eee;
1087
-
1088
- i, span {
1089
- opacity: 1;
1090
- vertical-align: middle;
1091
- margin-right: 7px;
1092
- font-size: 18px;
1093
- }
1094
-
1095
- span {
1096
- font-size: 14px
1097
- }
1098
- }
1099
-
1100
- dl {
1101
- padding: 8px 16px 3px 24px;
1102
- margin-top: 0;
1103
- margin-bottom: 0;
1104
- display: inline-block;
1105
- width: 50%;
1106
- position: relative;
1107
- word-break: break-all;
1108
-
1109
- &:after {
1110
- content: "";
1111
- width: 1px;
1112
- height: 14px;
1113
- background: #e4e4e4;
1114
- display: inline-block;
1115
- position: absolute;
1116
- right: -5px;
1117
- top: 50%;
1118
- margin-top: -3px;
1119
- }
1120
-
1121
- .s-name {
1122
- color: $baseColor;
1123
- display: inline-block;
1124
- width: 190px;
1125
- font-size: 14px;
1126
- vertical-align: top;
1127
- margin-top: 11px;
1128
- text-align: right;
1129
-
1130
- i {
1131
- margin-left: 5px;
1132
-
1133
- &.icon {
1134
- font-size: 13px;
1135
- opacity: 0.92;
1136
- margin-left: 2px;
1137
- margin-right: 4px;
1138
- }
1139
- }
1140
- }
1141
-
1142
- .item {
1143
- position: relative;
1144
- border: dashed 1px #FFF;
1145
- border-radius: 6px;
1146
- display: block;
1147
- padding: 6px 8px 6px 27px;
1148
- cursor: pointer;
1149
-
1150
- &:hover {
1151
- border-color: $baseColor;
1152
- color: $baseColor;
1153
-
1154
- i, a {
1155
- color: $baseColor;
1156
- }
1157
- }
1158
-
1159
- // &:after {
1160
- // content: "";
1161
- // width: 1px;
1162
- // height: 12px;
1163
- // background: #dcdcdc;
1164
- // position: absolute;
1165
- // right: -25px;
1166
- // top: 2px
1167
- // }
1168
-
1169
- i {
1170
- opacity: 0.8;
1171
- margin-right: 8px;
1172
- vertical-align: middle;
1173
- position: absolute;
1174
- left: 4px;
1175
- top: 50%;
1176
- margin-top: -11px;
1177
- height: 22px;
1178
- line-height: 22px;
1179
- font-size: 16px;
1180
- }
1181
-
1182
- a {
1183
- color: rgba(0, 0, 0, 0.82);
1184
- display: inline-block;
1185
- font-size: 13px;
1186
- position: relative;
1187
- overflow: initial !important;
1188
- -webkit-transition: all 0.2s ease-in;
1189
- -moz-transition: all 0.2s ease-in;
1190
- -o-transition: all 0.2s ease-in;
1191
- transition: all 0.2s ease-in;
1192
- width: auto !important;
1193
- vertical-align: middle;
1194
- word-break: break-word;
1195
-
1196
- &:hover {
1197
- color: $baseColor;
1198
-
1199
- // &:after {
1200
- // content: '';
1201
- // position: absolute;
1202
- // bottom: -4px;
1203
- // left: 0;
1204
- // right: 0;
1205
- // border-bottom: solid 1px $baseColor;
1206
- // }
1207
- }
1208
- }
1209
- }
1210
-
1211
- &:last-child {
1212
- .list-box {
1213
- border-bottom: none;
1214
- }
1215
- }
1216
- }
1217
- }
1218
-
1219
- // .el-submenu .el-menu {
1220
- // height: auto !important;
1221
- // }
1222
- </style>
1
+ <template>
2
+ <div :class="{ 'has-logo': showLogo }">
3
+ <!-- <logo v-if="showLogo" :collapse="isCollapse" /> -->
4
+
5
+ <div class="hamburger-box" ref="hamhurger" @click="openUserInfo">
6
+ <!-- <hamburger :is-active="sidebar.opened" @toggleClick="toggleSideBar" /> -->
7
+ <div>
8
+ <p class="name"><i class="iconfont icon-ziyuan"></i><span>{{ userInfo.nickName }}</span></p>
9
+ </div>
10
+ </div>
11
+ <div class="business-name" ref="business">
12
+ <el-tooltip :enterable="false" effect="dark" :content="companyInfo.companyName" :placement="direction">
13
+ <p v-show="getMenuFlag()">{{ companyInfo.companyName }}</p>
14
+ </el-tooltip>
15
+ </div>
16
+ <div class="fase-box" ref="fase" @mouseleave="$emit('selfClose')" @mouseenter="$emit('selfEnter')">
17
+ <langTool v-if="getMenuFlag()"></langTool>
18
+ <div class="item" @click="openCompanyDialog" v-if="getMenuFlag()">
19
+ <el-tooltip :enterable="false" effect="dark" :content="$t1('切换组织')" :placement="direction">
20
+ <i class="el-icon-set-up"/>
21
+ </el-tooltip>
22
+ </div>
23
+ <div class="item" v-if="getMenuFlag()">
24
+ <el-tooltip :enterable="false" effect="dark" :content="$t1('流程待办')" :placement="direction">
25
+ <i class="iconfont icon-liuchengdaiban" @click="$router.push('/basic/wf/wf_manage/list')"/>
26
+ </el-tooltip>
27
+ </div>
28
+ <div class="item" @click="logout()">
29
+ <el-tooltip :enterable="false" effect="dark" :content="$t1('退出')" :placement="direction">
30
+ <i class="el-icon-switch-button"/>
31
+ </el-tooltip>
32
+ </div>
33
+ </div>
34
+ <template v-for="router1 in viewRouter">
35
+ <template v-for="router2 in router1.children">
36
+ <div
37
+ class="second-list"
38
+ :key="router1.id + 't'+router2.id"
39
+ :class="{ on: router2.id == nowNavID }"
40
+ @mouseenter="stopFlag = 1"
41
+ @mouseleave="showNav()"
42
+ v-show="router2.id == nowNavID"
43
+ :ref="'seconMenus' + router2.id"
44
+ >
45
+ <i class="ico-arrow"></i>
46
+ <div>
47
+ <div class="tit"><i :class="getMenuClass(router2,2)"></i><span>{{ getMenuName(router2) }}</span></div>
48
+ <dl v-for="(router3,index3) in router2.children" :key="'router3'+index3">
49
+
50
+ <div class="item" v-if="!router3.hidden" @click="rourteTo(router3,router1)">
51
+ <!--<i class="el-icon-caret-right"></i>-->
52
+ <i :class="getMenuClass(router3,3)"></i>
53
+ <a>{{ getMenuName(router3) }}</a>
54
+ </div>
55
+ </dl>
56
+ </div>
57
+ </div>
58
+ </template>
59
+ </template>
60
+ <el-menu
61
+ class="menu-box"
62
+ :class="{'lang-zh':$i18n.locale=='zh'}"
63
+ text-color="#fff"
64
+ active-text-color="#fff"
65
+ :unique-opened="true"
66
+ @mouseleave="showNav()"
67
+ ref="seconMenus"
68
+ >
69
+ <el-scrollbar wrap-class="scrollbar-wrapper" id="menuUl">
70
+ <el-submenu v-for="menuModule in menuModules" :index="''+menuModule.id" :key="'menuModule'+menuModule.id"
71
+ @click.native="rourteTo(menuModule)">
72
+ <template slot="title">
73
+ <i :class="getMenuClass(menuModule,1)"></i>
74
+ <span>{{ getMenuName(menuModule) }}</span>
75
+ </template>
76
+ <el-menu-item v-for="(router1, index1) in menuModule.children" :key="index1" :index="''+router1.id"
77
+ :class="getMenuClass(router1,2)"
78
+ @mouseenter.native="showNav(router1, $event)" @mouseleave.native="showNav()"
79
+ @click="rourteTo(router1)">
80
+ {{ getMenuName(router1) }}
81
+ <i class="el-icon-caret-right" v-if="router1.children.length > 0"/>
82
+ </el-menu-item>
83
+ </el-submenu>
84
+ </el-scrollbar>
85
+ </el-menu>
86
+ <div class="menu-btn">
87
+ <i class="el-icon-arrow-up" @click="toUpMove()"></i>
88
+ <i class="el-icon-arrow-down" @click="toDownMove()"></i>
89
+ </div>
90
+ <div id="tta" style="position: absolute;height: 100%;top: 0;right: 0;z-index: 9999;width: 800px;left: 100%;"
91
+ v-if="showMenuModal"></div>
92
+ <el-dialog
93
+ title="切换组织"
94
+ width="355px"
95
+ custom-class="dialog-style list-dialog"
96
+ v-if="showCompanyDialog"
97
+ :visible.sync="showCompanyDialog"
98
+ :append-to-body="true"
99
+ :modal-append-to-body="true"
100
+ :close-on-click-modal="false"
101
+ v-el-drag-dialog
102
+ v-el-dialog-center
103
+ @close="changeCompanyClose"
104
+ >
105
+ <div class="cont">
106
+ <el-input placeholder="搜索" class="search-btn" v-model="filterText"></el-input>
107
+ <el-tree
108
+ :props="defaultProps"
109
+ :load="loadNode"
110
+ node-key="id"
111
+ ref="tree"
112
+ highlight-current
113
+ lazy
114
+ :expand-on-click-node="true"
115
+ @node-click="handleNodeClick"
116
+ class="organization-tree"
117
+ icon-class="el-icon-arrow-right"
118
+ :filter-node-method="filterNode"
119
+ ></el-tree>
120
+ </div>
121
+ <!-- <span slot="footer" class="dialog-footer">
122
+ <el-button type="primary" plain class="button-sty" @click="changeCompanyClose">
123
+ <i class="el-icon-close el-icon"></i>
124
+ 取 消
125
+ </el-button>
126
+ <el-button type="primary" @click="changeCompany" class="button-sty">
127
+ <i class="el-icon-check el-icon"></i>
128
+ 确 定
129
+ </el-button>
130
+ </span> -->
131
+ </el-dialog>
132
+
133
+ <infoIframeDialog v-if="showInfoIframeDialog" :visiable.sync="showInfoIframeDialog"
134
+ :dataId="userInfo.id"></infoIframeDialog>
135
+ <userInfo v-if="showUserInfoDialog" :visiable.sync="showUserInfoDialog" :_dataId="userInfo.id" topValue="128px"
136
+ @reload="userInfoReload"></userInfo>
137
+
138
+ <onlineTalk></onlineTalk>
139
+ </div>
140
+ </template>
141
+
142
+ <script>
143
+ import {mapGetters} from 'vuex';
144
+ import variables from '@/styles/variables.scss';
145
+ import userInfo from '@base/views/user/user/info.vue';
146
+ import onlineTalk from "@base/components/onlineTalk";
147
+ import {
148
+ getToken
149
+ } from '@base/utils/auth';
150
+ import indexUtil from "@base/utils/index.js"
151
+ import langTool from "../langTool.vue";
152
+
153
+ export default {
154
+ props: {
155
+ option: Object
156
+ },
157
+ data() {
158
+ return {
159
+ direction: 'bottom',
160
+ defaultOpenedsArray: [],
161
+ viewRouter: [],
162
+ showMenuModal: false,
163
+ menuheight: {
164
+ height: ''
165
+ },
166
+ defaultProps: {
167
+ label: 'label', //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
168
+ children: [],
169
+ isLeaf: 'leaf'
170
+ },
171
+ filterText: null,
172
+ showCompanyDialog: false,
173
+ choose_company_info: '',
174
+ userInfo: {},
175
+ companyInfo: {},
176
+ showUserInfoDialog: false,
177
+ hoverStatus: false,
178
+ nowNavID: 'null',
179
+ stopFlag: 0,
180
+ showInfoIframeDialog: false,
181
+ currentMenu: null,
182
+ menuModules: [],
183
+ firstMenuHeight: 0, // 第一个菜单的高度
184
+ eveyMenuHeight: 48, // 每一个菜单的高度
185
+ };
186
+ },
187
+ components: {userInfo, onlineTalk, langTool},
188
+ computed: {
189
+ ...mapGetters(['permission_routes', 'sidebar', 'sidebarRouters', 'isBdAdmin']),
190
+ activeMenu() {
191
+ const route = this.$route;
192
+ const {meta, path} = route;
193
+ // if set path, the sidebar will highlight the path you set
194
+ if (meta.activeMenu) {
195
+ return meta.activeMenu;
196
+ }
197
+ return path;
198
+ },
199
+ showLogo() {
200
+ return this.$store.state.settings.sidebarLogo;
201
+ },
202
+ variables() {
203
+ return variables;
204
+ },
205
+ /*isCollapse() {
206
+ if (this.sidebar.opened) {
207
+ this.direction = 'bottom';
208
+ } else {
209
+ this.direction = 'right-start';
210
+ }
211
+ return !this.sidebar.opened;
212
+ }*/
213
+ },
214
+ watch: {
215
+ filterText(val) {
216
+ this.$refs.tree.filter(val);
217
+ }
218
+ },
219
+ created() {
220
+ indexUtil.initI18nMessage('menus')
221
+ },
222
+ mounted() {
223
+ this.getUserInfo();
224
+ setTimeout(() => {
225
+ this.filterRoute();
226
+ }, 100);
227
+ this.countHeight();
228
+ let query = this.$route.query;
229
+ if (query && query.flag == 1) {
230
+ this.showCompanyDialog = true;
231
+ }
232
+ },
233
+ methods: {
234
+ getMenuFlag() {
235
+ return !this.isBdAdmin;
236
+ },
237
+ getMenuName(item) {
238
+ let locale = this.$i18n?.locale;
239
+ let zhTitle = (item.meta ? item.meta.title : '');
240
+ let enTitle = (item.meta ? item.meta.enTitle : '');
241
+ let title;
242
+ if (locale == "en") {
243
+ title = enTitle || zhTitle;
244
+ } else {
245
+ title = zhTitle
246
+ }
247
+ if (!enTitle || locale !== "en") {
248
+ title = zhTitle
249
+ }
250
+ if (this.$t1) {
251
+ title = this.$t1(title)
252
+ }
253
+
254
+ return title;
255
+ },
256
+ jumpOutLink(route) {
257
+ let path = route.url || route.path;
258
+ if (route.type == 4 && path) {
259
+ if (path.indexOf('token={token}') >= 0) {
260
+ path = path.replace('token={token}', 'token=' + getToken())
261
+ }
262
+ window.open(path);
263
+ }
264
+ },
265
+ changeModules(row, cRow) {
266
+ if (!row.route) return;
267
+ localStorage.setItem('currentMenuId', row.id);
268
+ let route = row.route ? '/' + row.route : '';
269
+ sessionStorage.setItem('reUrl', cRow.path)
270
+ sessionStorage.setItem('reCid', row.id)
271
+ location.href = route + '/index.html/#/home';
272
+
273
+ // location.reload();
274
+ },
275
+ filterRoute() {
276
+ var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
277
+ var nRoute1s = [];
278
+ oldRoutes.forEach((route1, index1) => {
279
+ let nRoute2s = [];
280
+ if (!route1.hidden) {
281
+ route1.children.forEach((route2, index2) => {
282
+ let nRoute3s = [];
283
+ if (!route2.hidden) {
284
+ route2.children.forEach((route3, index3) => {
285
+ if (!route3.hidden) {
286
+ nRoute3s.push(route3);
287
+ }
288
+ });
289
+ }
290
+ if (route2.type == 4 || route2.url || nRoute3s.length > 0) {
291
+ route2.children = nRoute3s;
292
+ nRoute2s.push(route2);
293
+ }
294
+ });
295
+ }
296
+ if (route1.type == 4 || route1.url || nRoute2s.length > 0) {
297
+ route1.children = nRoute2s;
298
+ nRoute1s.push(route1);
299
+ }
300
+ });
301
+ this.viewRouter = nRoute1s || [];
302
+ this.menuModules = nRoute1s || [];
303
+
304
+ let reUrl = sessionStorage.getItem('reUrl');
305
+ let reCid = sessionStorage.getItem('reCid');
306
+ if (reUrl) {
307
+ this.$nextTick(() => {
308
+ this.$refs.seconMenus.open(reCid);
309
+ })
310
+ this.$router.push(reUrl);
311
+ sessionStorage.removeItem('reUrl');
312
+ sessionStorage.removeItem('reCid');
313
+ }
314
+ },
315
+ filterRoute1() {
316
+ var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
317
+ var nRoute1s = [];
318
+ oldRoutes.forEach((route1, index1) => {
319
+ let nRoute2s = [];
320
+ if (!route1.hidden && route1.route) {
321
+ route1.children.forEach((route2, index2) => {
322
+ let nRoute3s = [];
323
+ if (!route2.hidden) {
324
+ route2.children.forEach((route3, index3) => {
325
+ if (!route3.hidden) {
326
+ nRoute3s.push(route3);
327
+ }
328
+ });
329
+ }
330
+ if (nRoute3s.length > 0) {
331
+ route2.children = nRoute3s;
332
+ nRoute2s.push(route2);
333
+ }
334
+ });
335
+ }
336
+ if (nRoute2s.length > 0) {
337
+ route1.children = nRoute2s;
338
+ nRoute1s.push(route1);
339
+ }
340
+ });
341
+ let rows = nRoute1s;
342
+ if (rows.length) {
343
+ let currentMenu;
344
+ if (nRoute1s.length) {
345
+ var currentMenuId = localStorage.getItem('currentMenuId');
346
+ if (currentMenuId) {
347
+ currentMenu = nRoute1s.find(row => row.id == currentMenuId);
348
+ }
349
+ if (!currentMenu) {
350
+ currentMenu = nRoute1s[0];
351
+ }
352
+ this.viewRouter = currentMenu.children;
353
+ }
354
+ this.currentMenu = currentMenu;
355
+ this.menuModules = rows || [];
356
+
357
+ /*if (currentMenu) {
358
+ if (currentMenu.route != WEB_PREFIX.substring(1, WEB_PREFIX.length)) {
359
+ this.changeModules(currentMenu, 1);
360
+ } else {
361
+ localStorage.setItem('currentMenuId', currentMenu.id);
362
+ }
363
+ } else {
364
+ localStorage.removeItem('currentMenuId');
365
+ }*/
366
+ }
367
+ },
368
+ rourteTo(route) {
369
+ let path = route.url || route.path;
370
+ if (!path) {
371
+ return
372
+ }
373
+ this.showMenuModal = true;
374
+ setTimeout(() => {
375
+ this.showMenuModal = false;
376
+ }, 200);
377
+ try {
378
+ if (route.linkType == 4) {
379
+ this.jumpOutLink(route)
380
+ } else if (route.linkType == 3) {
381
+ this.$router.push({path: path, query: {url: route.outLink, route: route.route}});
382
+ } else {
383
+ this.$router.push(path);
384
+ }
385
+ } catch (e) {
386
+ console.error(e);
387
+ }
388
+ },
389
+ logout() {
390
+ this.$store.dispatch('user/logout2').then(res => {
391
+ this.$router.push(`/login?redirect=${this.$route.fullPath}`);
392
+ });
393
+ },
394
+ toggleSideBar() {
395
+ this.$store.dispatch('app/toggleSideBar');
396
+ },
397
+ countHeight() {
398
+ var h = this.$refs.hamhurger.offsetHeight + this.$refs.fase.offsetHeight + this.$refs.business.offsetHeight;
399
+ this.menuheight.height = window.innerHeight - h + 'px';
400
+ },
401
+ handleNodeClick(data, node, v) {
402
+ if (!data.hasChild) {
403
+ this.choose_company_info = data;
404
+ this.changeCompany();
405
+ } else {
406
+ this.choose_company_info = {};
407
+ }
408
+ },
409
+ // 异步树叶子节点懒加载逻辑
410
+ loadNode(node, resolve) {
411
+ let companyCode = node && node.data && node.data.companyCode ? node.data.companyCode || '' : '';
412
+ let url = !companyCode ? USER_PREFIX + '/user_company_info/getAllList' : USER_PREFIX + '/user_company_info/getChildren';
413
+
414
+ this.$http({
415
+ url: url,
416
+ method: 'post',
417
+ data: {
418
+ parentCompanyCode: companyCode
419
+ },
420
+ success: res => {
421
+ let datas = res.objx || [];
422
+ let parentLabel = companyCode ? node.label : null;
423
+ datas.forEach(item => {
424
+ item.leaf = !item.hasChild;
425
+ let label = item.companyName;
426
+ /*if(companyCode){
427
+ label = label + '('+companyTypeMap[item.companyType]+')'
428
+ }*/
429
+ item.label = label;
430
+ item.parentLabel = parentLabel;
431
+ });
432
+
433
+ if (node.level === 0) {
434
+ if (datas.length > 0 && datas[0].hasChild) {
435
+ this.$nextTick(() => {
436
+ let nodedata = node.childNodes[0];
437
+ nodedata.expanded = true;
438
+ nodedata.loadData();
439
+ });
440
+ }
441
+ }
442
+ resolve(datas);
443
+ }
444
+ });
445
+ },
446
+ filterNode(value, data) {
447
+ if (!value) return true;
448
+ let flag1 = data.label.indexOf(value) !== -1;
449
+ let flag2 = data.parentLabel && data.parentLabel.indexOf(value) !== -1;
450
+ return flag1 || flag2;
451
+ },
452
+ openCompanyDialog() {
453
+ this.filterText = null;
454
+ this.showCompanyDialog = true;
455
+ },
456
+ getWebPrefix(callback) {
457
+ this.$http({
458
+ url: USER_PREFIX + '/auth/getWebPrefix',
459
+ method: `post`,
460
+ data: {},
461
+ isLoading: true,
462
+ success: res => {
463
+ let webPrefix = res.objx
464
+ callback && callback(webPrefix)
465
+ }
466
+ });
467
+ },
468
+ changeCompany() {
469
+ let row = this.choose_company_info;
470
+ let query = this.$route.query;
471
+ let flag = query && query.flag == 1 ? 1 : null;
472
+ this.showCompanyDialog = false;
473
+ if (row && row.companyCode) {
474
+ this.$baseLoading({target: document.body, fullscreen: true});
475
+ this.$http({
476
+ url: USER_PREFIX + '/auth/switchCompany',
477
+ method: 'post',
478
+ data: {stringOne: row.companyCode},
479
+ isLoading: true,
480
+ success: res => {
481
+ this.getWebPrefix((prefix) => {
482
+ let webPrefix = prefix ? ("/" + prefix) : window.MAIN_WEB_PREFIX;
483
+ sessionStorage.removeItem("out-token");
484
+ this.$store.dispatch('user/changeCompanyInfo', row);
485
+ this.$store.dispatch('tagsView/delAllViews');
486
+ window.location.href = webPrefix + '/index.html';
487
+ });
488
+ }
489
+ });
490
+ } else {
491
+ if (flag == 1) {
492
+ this.$router.push({
493
+ path: '/'
494
+ });
495
+ }
496
+ }
497
+ },
498
+ changeCompanyClose() {
499
+ let query = this.$route.query;
500
+ let flag = query && query.flag == 1 ? 1 : null;
501
+ if (flag == 1) {
502
+ this.$router.push({
503
+ path: '/'
504
+ });
505
+ }
506
+ this.showCompanyDialog = false;
507
+ },
508
+ getUserInfo() {
509
+ this.$http({
510
+ url: USER_PREFIX + '/user/currentUser',
511
+ method: 'post',
512
+ success: res => {
513
+ let userInfo = res.objx;
514
+ this.headPhotoUrl = userInfo.headPhotoUrl ? userInfo.headPhotoUrl : require('@/resources/images' + '/default-header.png');
515
+ this.userInfo = userInfo;
516
+ }
517
+ });
518
+
519
+ this.$http({
520
+ url: USER_PREFIX + '/company_info/getCurrent',
521
+ method: `post`,
522
+ success: res => {
523
+ this.companyInfo = res.objx || {};
524
+ }
525
+ });
526
+ },
527
+ openUserInfo() {
528
+ this.showUserInfoDialog = true;
529
+ // this.showInfoIframeDialog = true;
530
+ },
531
+ userInfoReload() {
532
+ this.showUserInfoDialog = true;
533
+ },
534
+ showNav(route, event) {
535
+ let id = route && route.id ? route.id : null;
536
+ if (id != null) {
537
+ if (!route.children || !route.children.length) {
538
+ return;
539
+ }
540
+ this.stopFlag = 1;
541
+ this.nowNavID = id;
542
+ this.$nextTick(() => {
543
+ var wh = window.innerHeight;
544
+ let dom = event.target;
545
+ let domAttr = dom.getBoundingClientRect();
546
+ // var sh1 = dom.offsetTop;
547
+ var sh1 = domAttr.top;
548
+ let $snav = this.$refs['seconMenus' + id][0];
549
+ let snavAttr = $snav.getBoundingClientRect();
550
+
551
+ // var sh2 = $snav.outerHeight;
552
+ var sh2 = snavAttr.height;
553
+ var sh = wh - (sh1 + sh2);
554
+
555
+ var hd = 20;
556
+ var xhd = sh - hd; //移动距离+固定值
557
+ if (sh >= 0) {
558
+
559
+ $snav.style['margin-top'] = sh1 + 'px';
560
+ } else if (sh < 0) {
561
+ let bd = sh1 + sh;
562
+
563
+ $snav.style['margin-top'] = bd + 'px';
564
+ $snav.querySelector(".ico-arrow").style['margin-top'] = (sh1 - bd) + 'px';
565
+ }
566
+ });
567
+ } else {
568
+ this.stopFlag = 0;
569
+ setTimeout(() => {
570
+ if (this.stopFlag == 0) {
571
+ this.nowNavID = id;
572
+ }
573
+ }, 200);
574
+ }
575
+ },
576
+ jumpTo(row, firstRow) {
577
+ let route = firstRow.route ? '/' + firstRow.route : '';
578
+ if (route == WEB_PREFIX) {
579
+ this.$router.push({
580
+ path: row.path
581
+ });
582
+ } else {
583
+ this.changeModules(firstRow, row);
584
+ }
585
+ },
586
+ toDownMove() {
587
+ let containter = document.getElementById('menuUl').querySelector(".scrollbar-wrapper");
588
+ let menuscrollTop = containter.scrollTop
589
+ let scrollHeight = containter.scrollHeight
590
+ let val = menuscrollTop + this.eveyMenuHeight;
591
+ if (val < scrollHeight) {
592
+ containter.scrollTop = val
593
+ } else {
594
+ containter.scrollTop = scrollHeight
595
+ }
596
+ },
597
+ toUpMove() {
598
+ let containter = document.getElementById('menuUl').querySelector(".scrollbar-wrapper");
599
+ let menuscrollTop = containter.scrollTop
600
+ let val = menuscrollTop - this.eveyMenuHeight;
601
+ if (val > 0) {
602
+ containter.scrollTop = val
603
+ } else {
604
+ containter.scrollTop = 0
605
+ }
606
+ },
607
+ getMenuClass(menu, flag) {
608
+ let res = "";
609
+ if (menu.menuImg) {
610
+ res = "iconfont " + menu.menuImg;
611
+ } else if (flag == 1) {
612
+ res = "iconfont icon-jinggao";//一级默认图标
613
+ } else if (flag == 2) {
614
+ res = "iconfont icon-circle";//二级默认图标
615
+ } else if (flag == 3) {
616
+ res = "iconfont icon-thirdMemu";//三级级默认图标
617
+ }
618
+
619
+ if (flag == 2) {
620
+ if (menu.id == this.nowNavID) {
621
+ res += " on";
622
+ }
623
+ }
624
+ return res;
625
+ }
626
+ }
627
+ };
628
+ </script>
629
+ <style lang="scss">
630
+ @import '~@/styles/variables.scss';
631
+
632
+ .hamburger-box {
633
+ background-color: #0000004d;
634
+ height: 42px;
635
+ /* line-height: 30px; */
636
+ text-align: center;
637
+ /* box-shadow: 0 2px 6px rgb(0 0 0 / 10%); */
638
+ position: relative;
639
+ z-index: 2;
640
+ overflow: hidden;
641
+ font-size: 12px;
642
+ color: rgba(255, 255, 255, 0.65);
643
+
644
+ > div {
645
+ color: #fff;
646
+ font-size: 13px;
647
+ margin-bottom: 4px;
648
+ cursor: pointer;
649
+ height: 36px;
650
+ border-radius: 7px;
651
+ margin: 6px 10px 6px 8px;
652
+ overflow: hidden;
653
+ background: #2a6494;
654
+ }
655
+
656
+ p {
657
+ color: #fff;
658
+ font-size: 13px;
659
+ margin-bottom: 4px;
660
+ cursor: pointer;
661
+ /* border: solid 1px #ffffff61; */
662
+ display: block;
663
+ line-height: 27px;
664
+ /* width: 88%; */
665
+ margin-top: 6px;
666
+ border-radius: 7px;
667
+ margin: 6px 10px 6px 8px;
668
+ background: #2a6494;
669
+
670
+ i {
671
+ font-size: 14px;
672
+ vertical-align: middle;
673
+ margin: 0 4px 0 6px;
674
+ height: 36px;
675
+ line-height: 36px;
676
+ width: 21px;
677
+ }
678
+
679
+ span {
680
+ width: 94px;
681
+ display: table-cell;
682
+ height: 32px;
683
+ word-break: break-word;
684
+ line-height: 16px;
685
+ overflow: hidden;
686
+ vertical-align: middle;
687
+ }
688
+
689
+ &.name {
690
+ display: table-row;
691
+ margin: 0;
692
+ }
693
+ }
694
+ }
695
+
696
+ .business-name {
697
+ height: 47px;
698
+ color: #ffffffb8;
699
+ background: #0000004d;
700
+ /* padding-top: 12px; */
701
+ font-size: 12px;
702
+ /* padding-left: 5px; */
703
+ display: table-cell;
704
+ vertical-align: middle;
705
+ width: 140px;
706
+ padding: 6px 10px;
707
+ text-align: center;
708
+
709
+ p {
710
+ margin: 0;
711
+ }
712
+ }
713
+
714
+ .fase-box {
715
+ color: #fff;
716
+ /* border-bottom: solid 1px rgba(255, 255, 255, 0.12); */
717
+ border-top: solid 1px rgba(255, 255, 255, 0.12);
718
+ background: #225076;
719
+ padding: 4px 0 8px;
720
+ width: 100%;
721
+ z-index: 999;
722
+ position: relative;
723
+ /* display: flex;*/
724
+ //text-align: left !important;
725
+ // &:hover {
726
+ // color: $baseColor;
727
+ // background-color: #fbfdfe;
728
+ // .fase-list {
729
+ // display: block;
730
+ // }
731
+ // }
732
+ .item {
733
+ flex: 1;
734
+ text-align: center;
735
+ font-size: 16px;
736
+ height: 40px;
737
+ line-height: 40px;
738
+ cursor: pointer;
739
+ display: inline-block;
740
+ min-width: 30px;
741
+ }
742
+
743
+ .fase-list {
744
+ position: absolute;
745
+ left: 100%;
746
+ color: $baseColor;
747
+ background-color: #fbfdfe;
748
+ border: solid 1px $baseColor;
749
+ border-left: none;
750
+ top: -0.5px;
751
+ padding: 10px 0 10px 24px;
752
+ height: 43px;
753
+ width: 413px;
754
+ display: none;
755
+
756
+ .l-item {
757
+ display: inline-block;
758
+ font-size: 12px;
759
+ margin-right: 36px;
760
+ line-height: 20px;
761
+ cursor: pointer;
762
+
763
+ i {
764
+ vertical-align: middle;
765
+ margin-right: 4px;
766
+ font-size: 15px;
767
+ margin-bottom: 2px;
768
+ }
769
+
770
+ &:hover {
771
+ border-bottom: solid 1px $baseColor;
772
+ }
773
+ }
774
+ }
775
+ }
776
+
777
+ .openSidebar .fase-box {
778
+ text-align: center;
779
+ //padding: 0;
780
+ }
781
+
782
+ #app .sidebar-container {
783
+ overflow: visible;
784
+ z-index: 1003;
785
+
786
+ &.hover {
787
+ z-index: 1003;
788
+ }
789
+
790
+ &.hover1 .fase-box {
791
+ width: 138px;
792
+ color: $baseColor;
793
+ background-color: #fbfdfe;
794
+ border-color: $baseColor;
795
+ }
796
+
797
+ .el-menu.menu-box {
798
+ height: calc(100vh - 173px);
799
+ font-size: 13px;
800
+ z-index: -1;
801
+ position: relative;
802
+ background-color: rgba(0, 0, 0, .2);
803
+ word-break: break-word;
804
+
805
+ .el-submenu {
806
+ overflow: hidden; //有点电脑分辨率问题
807
+ .el-submenu__title {
808
+ padding: 0 11px !important;
809
+ height: 48px;
810
+ line-height: 48px;
811
+
812
+ i {
813
+ color: #fff;
814
+ font-size: 13px;
815
+ margin-right: 0;
816
+ width: 18px;
817
+
818
+ &.iconfont {
819
+ margin-right: 5px;
820
+ font-size: 19px;
821
+ float: left;
822
+ }
823
+
824
+ &.el-submenu__icon-arrow {
825
+ right: 3px;
826
+ text-align: center;
827
+ font-size: 12px;
828
+ margin-top: -5px;
829
+ display: none;
830
+ }
831
+ }
832
+
833
+ > span {
834
+ height: 48px;
835
+ display: table-cell;
836
+ width: 114px;
837
+ vertical-align: middle;
838
+ font-size: 13px;
839
+ white-space: normal;
840
+ line-height: 16px;
841
+ }
842
+ }
843
+
844
+ &.is-opened .el-submenu__title {
845
+ //background-color: rgba(27, 66, 97) !important;
846
+ }
847
+ }
848
+
849
+ .el-submenu {
850
+ .el-menu {
851
+ background: rgba(0, 0, 0, 0.35) !important;
852
+ box-shadow: 0px -5px 8px #00000014 inset;
853
+ //padding:4px 0;
854
+ }
855
+
856
+ .el-menu-item {
857
+ height: auto;
858
+ line-height: 1.4;
859
+ padding-left: 33px !important;
860
+ font-size: 12px;
861
+ opacity: 0.8;
862
+ margin: 10px 0 10px 14px;
863
+ padding: 7px 2px 7px 0px;
864
+ border-radius: 8px;
865
+ text-align: left;
866
+ min-width: 81px !important;
867
+ white-space: normal;
868
+ margin-right: 10px;
869
+ word-break: break-word;
870
+
871
+ &:before {
872
+ position: absolute;
873
+ top: 50%;
874
+ height: 20px;
875
+ margin-top: -10px;
876
+ line-height: 20px;
877
+ left: 7px;
878
+ font-size: 18px;
879
+ }
880
+
881
+ [class^=el-icon-] {
882
+ font-size: 12px;
883
+ color: #FFF;
884
+ position: absolute;
885
+ right: 2px;
886
+ top: 50%;
887
+ margin-top: -5px;
888
+ width: 14px;
889
+ zoom: 0.8;
890
+ display: none;
891
+ }
892
+
893
+ &:hover, &.on {
894
+ opacity: 1;
895
+ background-color: #FBFDFE !important;
896
+ color: $baseColor !important;
897
+
898
+ .el-icon-arrow-right {
899
+ color: $baseColor
900
+ }
901
+ }
902
+ }
903
+ }
904
+
905
+ &.lang-zh {
906
+ font-size: 14px;
907
+
908
+ .el-submenu {
909
+ .el-submenu__title {
910
+ > span {
911
+ font-size: 14px;
912
+ text-align: center
913
+ }
914
+
915
+ i.iconfont {
916
+ margin-right: 2px;
917
+ }
918
+ }
919
+
920
+ .el-menu-item {
921
+ font-size: 13px
922
+ }
923
+ }
924
+
925
+ }
926
+ }
927
+ }
928
+
929
+ .main-container {
930
+ z-index: 1002;
931
+ }
932
+
933
+ .menu-btn {
934
+ background-color: #0000001c;
935
+ height: 30px;
936
+ line-height: 30px;
937
+ text-align: center;
938
+ box-shadow: 0 -10px 6px rgb(0 0 0 / 10%);
939
+ display: flex;
940
+ color: #FFF;
941
+ font-size: 16px;
942
+
943
+ i {
944
+ display: inline-block;
945
+ flex: 1;
946
+ line-height: 30px;
947
+ cursor: pointer;
948
+ border-right: solid 1px rgba(0, 0, 0, 0.2);
949
+
950
+ &:last-child {
951
+ border-right: none;
952
+ }
953
+
954
+ &:hover {
955
+ background-color: rgba(255, 255, 255, 0.12);
956
+ }
957
+ }
958
+ }
959
+
960
+ /*.menu-box {
961
+ background-color: #0000002e !important;
962
+ font-size: 14px;
963
+ z-index: -1;
964
+ position: relative;
965
+ &.hover .el-scrollbar {
966
+ width: 1000px;
967
+ }
968
+ .el-scrollbar {
969
+ .el-scrollbar__view {
970
+ padding-top: 1px;
971
+ }
972
+ .el-scrollbar__bar.is-vertical {
973
+ left: 104px;
974
+ }
975
+ }
976
+ .first-item {
977
+ position: relative;
978
+ width: 104px;
979
+ &:nth-child(-n + 6) .second-list {
980
+ bottom: inherit !important;
981
+ top: -40.5px !important;
982
+ }
983
+ &:nth-child(1) .second-list {
984
+ top: 0 !important;
985
+ }
986
+ &:nth-last-child(-n + 6) .second-list {
987
+ bottom: -1%;
988
+ top: inherit;
989
+ }
990
+ .f-name {
991
+ height: 55px;
992
+ line-height: 55px;
993
+ padding-left: 9px;
994
+ color: #fff;
995
+ cursor: pointer;
996
+ position: relative;
997
+ padding-right: 6px;
998
+ -webkit-transition: all 0.2s ease-in;
999
+ -moz-transition: all 0.2s ease-in;
1000
+ -o-transition: all 0.2s ease-in;
1001
+ transition: all 0.2s ease-in;
1002
+ width: 104px;
1003
+ i.el-icon-arrow-right {
1004
+ position: absolute;
1005
+ right: 3px;
1006
+ top: 21.5px;
1007
+ width: 14px;
1008
+ height: 14px;
1009
+ }
1010
+ .el-icon-s-opportunity {
1011
+ opacity: 0.92;
1012
+ font-size: 13px;
1013
+ vertical-align: middle;
1014
+ margin-right: 2px;
1015
+ }
1016
+ span{display: inline-block;width: calc(100% - 20px);vertical-align: middle;line-height: 1.2;}
1017
+ }
1018
+
1019
+ &:hover,
1020
+ &.current {
1021
+ .f-name {
1022
+ background-color: #fbfdfe;
1023
+ color: $baseColor;
1024
+ }
1025
+ .second-list {
1026
+ display: block;
1027
+ }
1028
+ }
1029
+ }
1030
+ }
1031
+
1032
+
1033
+ */
1034
+ .second-list {
1035
+ display: none;
1036
+ position: absolute;
1037
+ left: $sideBarWidth;
1038
+ padding-left: 2px;
1039
+ top: 0.5px;
1040
+ // &:before {
1041
+ // content: "";
1042
+ // top: 22px;
1043
+ // bottom: 22px;
1044
+ // background-color: $baseColor;
1045
+ // width: 2px;
1046
+ // position: absolute;
1047
+ // left: 24px;
1048
+ // }
1049
+ > div {
1050
+ background: #fbfdfe;
1051
+ border: solid 1px $baseColor;
1052
+ top: -0.5px;
1053
+ padding: 24px 0;
1054
+ border-radius: 8px;
1055
+ margin-left: 9px;
1056
+ max-height: calc(84vh);
1057
+ overflow-y: auto;
1058
+ overflow-x: hidden;
1059
+ width: 458px;
1060
+ }
1061
+
1062
+ .ico-arrow {
1063
+ border-top: solid 7px transparent;
1064
+ border-bottom: solid 7px transparent;
1065
+ border-right: solid 7px $baseColor;
1066
+ position: absolute;
1067
+ left: 2px;
1068
+ top: 8px;
1069
+ }
1070
+
1071
+ &.on {
1072
+ display: block;
1073
+ }
1074
+
1075
+ .tit {
1076
+ width: auto;
1077
+ /* text-align: center; */
1078
+ /* background: #22507614; */
1079
+ color: $baseColor;
1080
+ /* border: dashed 1px #1d4667; */
1081
+ padding: 0 0 10px;
1082
+ /* border-radius: 6px; */
1083
+ /* margin: 5px auto; */
1084
+ margin: 0 22px;
1085
+ display: block;
1086
+ border-bottom: solid 1px #eee;
1087
+
1088
+ i, span {
1089
+ opacity: 1;
1090
+ vertical-align: middle;
1091
+ margin-right: 7px;
1092
+ font-size: 18px;
1093
+ }
1094
+
1095
+ span {
1096
+ font-size: 14px
1097
+ }
1098
+ }
1099
+
1100
+ dl {
1101
+ padding: 8px 16px 3px 24px;
1102
+ margin-top: 0;
1103
+ margin-bottom: 0;
1104
+ display: inline-block;
1105
+ width: 50%;
1106
+ position: relative;
1107
+ word-break: break-all;
1108
+
1109
+ &:after {
1110
+ content: "";
1111
+ width: 1px;
1112
+ height: 14px;
1113
+ background: #e4e4e4;
1114
+ display: inline-block;
1115
+ position: absolute;
1116
+ right: -5px;
1117
+ top: 50%;
1118
+ margin-top: -3px;
1119
+ }
1120
+
1121
+ .s-name {
1122
+ color: $baseColor;
1123
+ display: inline-block;
1124
+ width: 190px;
1125
+ font-size: 14px;
1126
+ vertical-align: top;
1127
+ margin-top: 11px;
1128
+ text-align: right;
1129
+
1130
+ i {
1131
+ margin-left: 5px;
1132
+
1133
+ &.icon {
1134
+ font-size: 13px;
1135
+ opacity: 0.92;
1136
+ margin-left: 2px;
1137
+ margin-right: 4px;
1138
+ }
1139
+ }
1140
+ }
1141
+
1142
+ .item {
1143
+ position: relative;
1144
+ border: dashed 1px #FFF;
1145
+ border-radius: 6px;
1146
+ display: block;
1147
+ padding: 6px 8px 6px 27px;
1148
+ cursor: pointer;
1149
+
1150
+ &:hover {
1151
+ border-color: $baseColor;
1152
+ color: $baseColor;
1153
+
1154
+ i, a {
1155
+ color: $baseColor;
1156
+ }
1157
+ }
1158
+
1159
+ // &:after {
1160
+ // content: "";
1161
+ // width: 1px;
1162
+ // height: 12px;
1163
+ // background: #dcdcdc;
1164
+ // position: absolute;
1165
+ // right: -25px;
1166
+ // top: 2px
1167
+ // }
1168
+
1169
+ i {
1170
+ opacity: 0.8;
1171
+ margin-right: 8px;
1172
+ vertical-align: middle;
1173
+ position: absolute;
1174
+ left: 4px;
1175
+ top: 50%;
1176
+ margin-top: -11px;
1177
+ height: 22px;
1178
+ line-height: 22px;
1179
+ font-size: 16px;
1180
+ }
1181
+
1182
+ a {
1183
+ color: rgba(0, 0, 0, 0.82);
1184
+ display: inline-block;
1185
+ font-size: 13px;
1186
+ position: relative;
1187
+ overflow: initial !important;
1188
+ -webkit-transition: all 0.2s ease-in;
1189
+ -moz-transition: all 0.2s ease-in;
1190
+ -o-transition: all 0.2s ease-in;
1191
+ transition: all 0.2s ease-in;
1192
+ width: auto !important;
1193
+ vertical-align: middle;
1194
+ word-break: break-word;
1195
+
1196
+ &:hover {
1197
+ color: $baseColor;
1198
+
1199
+ // &:after {
1200
+ // content: '';
1201
+ // position: absolute;
1202
+ // bottom: -4px;
1203
+ // left: 0;
1204
+ // right: 0;
1205
+ // border-bottom: solid 1px $baseColor;
1206
+ // }
1207
+ }
1208
+ }
1209
+ }
1210
+
1211
+ &:last-child {
1212
+ .list-box {
1213
+ border-bottom: none;
1214
+ }
1215
+ }
1216
+ }
1217
+ }
1218
+
1219
+ // .el-submenu .el-menu {
1220
+ // height: auto !important;
1221
+ // }
1222
+ </style>