cloud-web-corejs 1.0.76 → 1.0.77

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