cloud-web-corejs 1.0.0 → 1.0.2

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