eoss-ui 0.7.68 → 0.7.70

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.
@@ -42,7 +42,7 @@
42
42
  <div slot="reference" class="es-simplicity-pannel-user">
43
43
  <!-- <avatar :user="user" :size="56" :show-name="true"></avatar> -->
44
44
  <div class="es-simplicitytop-greeting">
45
- {{ user.username }},{{ greeting }}
45
+ {{ user.username || '-' }},{{ greeting }}
46
46
  </div>
47
47
  <!-- <div class="es-simplicity-username"></div> -->
48
48
  </div>
@@ -60,25 +60,27 @@
60
60
  </span>
61
61
  </div>
62
62
  <div class="es-simplicitytop-menu-children">
63
- <div
64
- class="es-simplicitytop-menu-children-item"
65
- v-for="(child, i) in myRemind"
66
- :key="i"
67
- @click="handleSelect(child)"
68
- >
69
- <div class="es-simplicitytop-menu-children-icon">
70
- <i :class="child.icon"></i>
71
- </div>
72
- <div class="es-simplicitytop-menu-children-name">
73
- {{ child.text || child.name }}
74
- </div>
63
+ <template v-for="(child, i) in myRemind">
75
64
  <div
76
- class="es-simplicitytop-menu-children-badge"
77
- v-if="child.badge && child.num"
65
+ class="es-simplicitytop-menu-children-item"
66
+ v-if="child.hasPermission"
67
+ :key="i"
68
+ @click="handleSelect(child)"
78
69
  >
79
- {{ child.num }}
70
+ <div class="es-simplicitytop-menu-children-icon">
71
+ <i :class="child.icon"></i>
72
+ </div>
73
+ <div class="es-simplicitytop-menu-children-name">
74
+ {{ child.text || child.name }}
75
+ </div>
76
+ <div
77
+ class="es-simplicitytop-menu-children-badge"
78
+ v-if="child.badge && child.num"
79
+ >
80
+ {{ child.num }}
81
+ </div>
80
82
  </div>
81
- </div>
83
+ </template>
82
84
  </div>
83
85
  </div>
84
86
  <div
@@ -93,8 +95,9 @@
93
95
  <div
94
96
  class="es-simplicitytop-menu-children-item"
95
97
  v-for="(child, i) in userCommonMenuList"
98
+ v-if="child.hasPermission"
96
99
  :key="i"
97
- @click="handleSelect(child, 'wujie')"
100
+ @click="handleSelect(child)"
98
101
  >
99
102
  <div class="es-simplicitytop-menu-children-icon">
100
103
  <i
@@ -120,7 +123,23 @@
120
123
  @select="(res) => handleSelect(res)"
121
124
  ></es-menu>
122
125
  </div>
123
-
126
+ <div
127
+ class="es-simplicitytop-main-fourth-tabs"
128
+ v-if="currentPage.appCode && currentPage.appCode !== 'indexUrl'"
129
+ >
130
+ <el-tabs
131
+ ref="fourthTab"
132
+ v-model="tabActiveName"
133
+ @tab-click="fourthTabClick"
134
+ >
135
+ <el-tab-pane
136
+ :label="item.text"
137
+ v-for="(item, index) in fourthTabs"
138
+ :key="index"
139
+ :name="item.id"
140
+ ></el-tab-pane>
141
+ </el-tabs>
142
+ </div>
124
143
  <div class="es-simplicitytop-main-router">
125
144
  <router-page
126
145
  v-if="currentPage.method === 'router'"
@@ -244,285 +263,6 @@
244
263
  <!-- AI/IM end -->
245
264
  </div>
246
265
  </div>
247
-
248
- <div class="es-simplicity-side" v-if="false">
249
- <img class="es-simplicity-logo" v-if="mainLogo" :src="mainLogo" />
250
- <div
251
- class="es-simplicity-org-name es-text-ellipsis-row4"
252
- :title="simpleUserInfo.orgShortName || simpleUserInfo.orgName"
253
- >
254
- {{ simpleUserInfo.orgShortName || simpleUserInfo.orgName }}
255
- </div>
256
- <el-dropdown
257
- v-if="user.identityList && user.identityList.length > 1"
258
- trigger="click"
259
- placement="bottom-start"
260
- @command="handleDepSelect"
261
- >
262
- <div class="es-simplicity-dep-post">
263
- <span class="es-simplicity-dep-name"> {{ user.depName }}</span>
264
- <template v-if="user.postName">
265
- |
266
- <span class="es-simplicity-post-name">{{
267
- user.position || user.postName
268
- }}</span>
269
- </template>
270
- <i class="es-icon-qiehuangangwei"></i>
271
- </div>
272
- <el-dropdown-menu slot="dropdown">
273
- <el-dropdown-item
274
- v-for="item in user.identityList"
275
- :key="item.id"
276
- :command="item"
277
- :class="{ 'is-active': user.identityId == item.id }"
278
- >{{ item.name }}</el-dropdown-item
279
- >
280
- </el-dropdown-menu>
281
- </el-dropdown>
282
- <el-popover
283
- class="es-simplicity-user-popover"
284
- placement="right-start"
285
- width="360"
286
- trigger="click"
287
- >
288
- <!-- 用户信息 -->
289
- <user
290
- ref="user"
291
- :user="user"
292
- :notifyList="notifyList"
293
- :notify="notify"
294
- :contents="userInfoContents"
295
- @success="handleSuccess"
296
- @change="handleChangeConfig"
297
- @close="handlerClose"
298
- ></user>
299
- <div slot="reference" class="es-simplicity-pannel-user">
300
- <avatar
301
- v-show="showAvatar"
302
- :user="user"
303
- :size="56"
304
- :show-name="true"
305
- ></avatar>
306
- <div class="es-simplicity-greeting" v-show="!showAvatar">
307
- {{ greeting }}
308
- </div>
309
- <div class="es-simplicity-username">{{ user.username }}</div>
310
- </div>
311
- <!-- 用户信息 end -->
312
- </el-popover>
313
- <div class="es-simplicity-side-Application">
314
- <!-- 常用应用 -->
315
- <el-scrollbar>
316
- <div
317
- class="es-simplicity-side-app"
318
- v-for="item in userApps"
319
- :class="{ 'is-active': active == item.id }"
320
- :key="item.id"
321
- :title="item.text || item.name"
322
- @click="handlerClickApp(item)"
323
- >
324
- <el-badge
325
- class="es-simplicity-side-app-badge"
326
- v-bind="getBadge(item)"
327
- >
328
- <es-icon
329
- class="es-simplicity-side-app-icon"
330
- :contents="item.icons || item.icon || menuIcon"
331
- ></es-icon>
332
- <div class="es-simplicity-side-app-text">
333
- {{ item.text || item.name }}
334
- </div>
335
- </el-badge>
336
- </div>
337
- <div
338
- class="es-simplicity-side-app"
339
- @click="handlerClickApp()"
340
- v-show="applications.length"
341
- >
342
- <es-icon
343
- class="es-simplicity-side-app-icon"
344
- contents="es-icon-more"
345
- ></es-icon>
346
- <div class="es-simplicity-side-app-text">更多</div>
347
- </div>
348
- <div
349
- class="es-simplicity-side-app"
350
- v-for="(item, index) in newApps"
351
- :class="{ 'is-active': active == item.id }"
352
- :key="item.id"
353
- :title="item.text || item.name"
354
- @click.stop="handlerClickApp(item)"
355
- >
356
- <i
357
- class="el-icon-circle-close"
358
- @click.stop="handleDelete(index)"
359
- ></i>
360
- <el-badge v-bind="getBadge(item)">
361
- <es-icon
362
- class="es-simplicity-side-app-icon"
363
- :contents="item.icons || item.icon || menuIcon"
364
- ></es-icon>
365
- <div class="es-simplicity-side-app-text">
366
- {{ item.text || item.name }}
367
- </div>
368
- </el-badge>
369
- </div>
370
- </el-scrollbar>
371
- <!-- 常用应用 end -->
372
- </div>
373
- <div class="es-simplicity-side-app" v-if="_aiConfig && showAi">
374
- <img
375
- :src="_aiConfig.icon"
376
- class="es-simplicity-ai-icon"
377
- @click="handlerSetDrawer(_aiConfig, 'ai')"
378
- />
379
- </div>
380
- </div>
381
- <div class="es-simplicity-main" v-if="false">
382
- <!-- 路由、iframe -->
383
- <div class="es-simplicity-tabs-handler-mask" v-show="showTabsHandler">
384
- <el-card class="es-simplicity-tabs-handler" ref="tabsHandler">
385
- <div
386
- class="es-simplicity-tabs-handler-item"
387
- :class="{ 'is-disabled': isDisabled.refresh }"
388
- @click="isDisabled.refresh ? '' : handleTabsEvents(0)"
389
- >
390
- 刷新
391
- </div>
392
- <div
393
- class="es-simplicity-tabs-handler-item"
394
- @click="handleTabsEvents(1)"
395
- >
396
- 关闭标签
397
- </div>
398
- <div
399
- class="es-simplicity-tabs-handler-item"
400
- :class="{ 'is-disabled': isDisabled.other }"
401
- @click="isDisabled.other ? '' : handleTabsEvents(2)"
402
- >
403
- 关闭其他
404
- </div>
405
- <div
406
- class="es-simplicity-tabs-handler-item"
407
- :class="{ 'is-disabled': isDisabled.left }"
408
- @click="isDisabled.left ? '' : handleTabsEvents(3)"
409
- >
410
- 关闭左侧
411
- </div>
412
- <div
413
- class="es-simplicity-tabs-handler-item"
414
- :class="{ 'is-disabled': isDisabled.right }"
415
- @click="isDisabled.right ? '' : handleTabsEvents(4)"
416
- >
417
- 关闭右侧
418
- </div>
419
- </el-card>
420
- </div>
421
- <el-tabs
422
- class="es-simplicity-iframe"
423
- :class="{ 'is-open': showMenu, 'is-fold': fold }"
424
- v-model="activeName"
425
- closable
426
- hide-bar
427
- opacity
428
- @tab-click="handleTabClick"
429
- @tab-remove="handleRemove"
430
- @tab-contextmenu="handleContextmenu"
431
- >
432
- <!-- 操作栏 -->
433
- <!-- <handler
434
- slot="append"
435
- v-bind="handleConfig"
436
- :show-title-type="showTitleType"
437
- :data="_handleDatas"
438
- :nums="handleNums"
439
- @click="handleClick"
440
- ></handler> -->
441
- <!-- 操作栏 end-->
442
-
443
- <!-- 菜单 -->
444
- <sub-menu
445
- v-if="subMenus"
446
- :collapse="isCollapse"
447
- :mode="mode"
448
- :visible.sync="showMenu"
449
- :closed.sync="fold"
450
- :size="menuWidth"
451
- :title="title"
452
- :color="menuColor"
453
- :backgroundColor="menuBackgroundColor"
454
- :menu-icon="menuIcon"
455
- :active="subActive"
456
- v-bind="subMenus"
457
- @command="handlerClickMenu"
458
- ></sub-menu>
459
- <!-- 菜单 end -->
460
- <el-tab-pane
461
- v-for="item in tabs"
462
- :key="item.id"
463
- :label="item.text || item.name"
464
- :name="item.id"
465
- >
466
- <router-page
467
- v-if="item.method === 'router'"
468
- v-bind="item"
469
- :query="$parent.params"
470
- ></router-page>
471
- <iframe
472
- v-else-if="isIE || item.method == 'iframe'"
473
- v-loading="item.loading"
474
- frameborder="0"
475
- width="100%"
476
- height="100%"
477
- :id="activeName == item.id ? iframeId : item.id || item.appCode"
478
- :name="activeName == item.id ? iframeId : item.id || item.appCode"
479
- :onload="handleLoadIframe(item)"
480
- :src="item.url"
481
- ></iframe>
482
- <es-wujie
483
- v-else-if="item.method === 'wujie' && item.url"
484
- :host="host"
485
- :show="true"
486
- :props="wjProps"
487
- :attrs="wjAttrs"
488
- :name="item.appCode"
489
- :url="item.url"
490
- ></es-wujie>
491
- </el-tab-pane>
492
- </el-tabs>
493
- <!-- 路由、iframe end -->
494
-
495
- <!-- 消息提醒 -->
496
- <notice :data="sysMsg" :winopen="winopen" @opened="handleOpened"></notice>
497
- <!-- 消息提醒 end -->
498
-
499
- <es-dialog
500
- class="es-public-search-dialog"
501
- :visible.sync="showSearch"
502
- size="lg"
503
- >
504
- <search
505
- :apps="applications"
506
- :menus="menus"
507
- :menuIcon="menuIcon"
508
- @select="handleSelect"
509
- ></search>
510
- </es-dialog>
511
- <!-- 公用弹窗 -->
512
- <es-dialog :title="dialog.title" :visible.sync="dialog.show" size="md">
513
- <template v-if="dialog.title == '查看在线人员' && !dialog.src">
514
- <online></online>
515
- </template>
516
- <iframe
517
- v-else-if="dialog.show"
518
- width="100%"
519
- height="100%"
520
- frameborder="0"
521
- :src="dialog.src"
522
- ></iframe>
523
- </es-dialog>
524
- <!-- 公用弹窗 end -->
525
- </div>
526
266
  <!-- 设置 -->
527
267
  <settings
528
268
  v-bind="$attrs"
@@ -535,6 +275,20 @@
535
275
  @layout="handleLayout"
536
276
  ></settings>
537
277
  <!-- 设置 end-->
278
+ <!-- 公用弹窗 -->
279
+ <es-dialog :title="dialog.title" :visible.sync="dialog.show" size="md">
280
+ <template v-if="dialog.title == '查看在线人员' && !dialog.src">
281
+ <online></online>
282
+ </template>
283
+ <iframe
284
+ v-else-if="dialog.show"
285
+ width="100%"
286
+ height="100%"
287
+ frameborder="0"
288
+ :src="dialog.src"
289
+ ></iframe>
290
+ </es-dialog>
291
+ <!-- 公用弹窗 end -->
538
292
  </div>
539
293
  </template>
540
294
 
@@ -629,7 +383,7 @@ export default {
629
383
  return {
630
384
  esMain: this,
631
385
  refresh: this.handleRefresh,
632
- jumpMenu: this.jumpMenu
386
+ jumpMenu: this.jumpTopMenu
633
387
  };
634
388
  },
635
389
  components: {
@@ -824,210 +578,7 @@ export default {
824
578
  }
825
579
  },
826
580
  icons: Object,
827
- myRemind: {
828
- type: Array,
829
- default: () => {
830
- return [
831
- {
832
- badge: true,
833
- icon: 'es-icon-solid-shijian',
834
- id: '589cdcff17f44a58bccb5b44de0e90c5',
835
- text: '待办事项',
836
- icons: '',
837
- url: '/bpm/wfPending/wfPending/makeList.dhtml',
838
- target: 'stage',
839
- sort: 1,
840
- remindurl:
841
- 'http://boot-gateway:8080/bpm/wfPending/wfPending/getMakeNum.dhtml',
842
- pid: 'd92e4c724cc74b13a4119f644eff0be8',
843
- level: 3,
844
- quickicons: '',
845
- appType: '0',
846
- urlopenmode: 0,
847
- hasPermission: false,
848
- appId: '',
849
- extendData: {
850
- businessStatus: 1,
851
- businessWarnMsg: ''
852
- },
853
- fourthTabs: [],
854
- children: [],
855
- method: 'iframe',
856
- loading: false,
857
- num: 0
858
- },
859
- {
860
- badge: false,
861
- icon: 'es-icon-solid-yiban',
862
- id: '259600a64a6840a4952251fe0a7bd890',
863
- text: '已办事项',
864
- icons: '',
865
- url: '/bpm/wfpened/wfPended/list.dhtml?viewName=yibing',
866
- target: 'stage',
867
- sort: 3,
868
- remindurl: '',
869
- pid: 'd92e4c724cc74b13a4119f644eff0be8',
870
- level: 3,
871
- quickicons: '',
872
- appType: '0',
873
- appCode: 'yibingwdyb',
874
- urlopenmode: 0,
875
- hasPermission: false,
876
- appId: '',
877
- fourthTabs: [],
878
- children: [],
879
- method: 'iframe',
880
- loading: false,
881
- num: 0
882
- },
883
- {
884
- text: '待签公文',
885
- badge: true,
886
- num: 0,
887
- icon: 'es-icon-solid-daiqiangongwen',
888
- id: '03158b72e0d644f6ae97e55ee598a17d',
889
- url: '/archives-ui/webpack/index.html#/sign/signList',
890
- remindurl: '',
891
- pid: 'ec4a6e89b1b346a4a2e8f4245e315da3',
892
- appCode: 'signList',
893
- appId: 'q291a124fc151se5b4b890191c65e485',
894
- fourthTabs: [],
895
- children: [],
896
- method: 'wujie'
897
- },
898
- {
899
- badge: true,
900
- icon: 'es-icon-juqiangongwen',
901
- id: 'bbc03189766441e6a46550c556d61f03',
902
- text: '拒签公文',
903
- icons: '',
904
- url: '/archives-ui/webpack/index.html#/dispatch/rejectedList',
905
- target: 'stage',
906
- sort: 4,
907
- remindurl: '',
908
- pid: '7fd13c86f596417b95d2b7622906f70f',
909
- level: 3,
910
- quickicons: '',
911
- appType: '0',
912
- appCode: 'rejectedList',
913
- urlopenmode: 0,
914
- hasPermission: false,
915
- appId: 'q291a124fc151se5b4b890191c65e485',
916
- extendData: {
917
- businessStatus: 1,
918
- businessWarnMsg: ''
919
- },
920
- fourthTabs: [],
921
- children: [],
922
- method: 'wujie'
923
- },
924
- {
925
- badge: true,
926
- num: 0,
927
- icon: 'es-icon-solid-ziliao',
928
- routerName: '',
929
- id: 'df9d1baedf6a4107bfa9f5d763a98fc0',
930
- text: '待收资料',
931
- icons: '',
932
- url: '/oa/sharefiles/receive/list.dhtml',
933
- target: 'stage',
934
- sort: 0,
935
- remindurl: '',
936
- pid: 'd648a3e7ae16458a823fdbe911e4d76e',
937
- level: 2,
938
- quickicons: '',
939
- appType: '1',
940
- appCode: 'sharefilesReceive',
941
- urlopenmode: 0,
942
- hasPermission: false,
943
- appId: 'q291a124fc151se5b4b890191c65e485',
944
- extendData: {
945
- businessStatus: 1,
946
- businessWarnMsg: ''
947
- },
948
- fourthTabs: [],
949
- children: [],
950
- method: 'iframe',
951
- loading: false
952
- },
953
- {
954
- text: '待签会议',
955
- badge: true,
956
- num: 0,
957
- icon: 'es-icon-solid-huiyileixing',
958
- id: '407eff212ecd4355ad1fb28c8de6e882',
959
- icons: '',
960
- url: '/conference/meetingReceive/receive_list.dhtml?meetState=-5',
961
- target: 'stage',
962
- sort: 0,
963
- remindurl: '',
964
- pid: 'bc1b01feafc64ae68beed2da5559ff7c',
965
- level: 3,
966
- quickicons: '',
967
- appType: '0',
968
- appCode: 'hyqs',
969
- urlopenmode: 0,
970
- hasPermission: false,
971
- appId: '',
972
- extendData: {
973
- businessStatus: 1,
974
- businessWarnMsg: ''
975
- },
976
- fourthTabs: [
977
- {
978
- id: 'c2d3fb3c7d684b06b4511233a6b5f03b',
979
- text: '未签收',
980
- icons: '',
981
- url: '/conference/meetingReceive/receive_list.dhtml?meetState=-5',
982
- target: 'stage',
983
- sort: 1,
984
- remindurl: '',
985
- pid: '407eff212ecd4355ad1fb28c8de6e882',
986
- level: 4,
987
- quickicons: '',
988
- appType: '0',
989
- appCode: 'wqsmeeting',
990
- urlopenmode: 0,
991
- hasPermission: false,
992
- appId: '',
993
- extendData: {
994
- businessStatus: 1,
995
- businessWarnMsg: ''
996
- },
997
- fourthTabs: [],
998
- children: []
999
- },
1000
- {
1001
- id: '9990c8064694403ba5ee85f098738aab',
1002
- text: '已签收',
1003
- icons: '',
1004
- url: '/conference/meetingReceive/receive_list.dhtml?meetState=-6',
1005
- target: 'stage',
1006
- sort: 2,
1007
- remindurl: '',
1008
- pid: '407eff212ecd4355ad1fb28c8de6e882',
1009
- level: 4,
1010
- quickicons: '',
1011
- appType: '0',
1012
- appCode: 'yqs',
1013
- urlopenmode: 0,
1014
- hasPermission: false,
1015
- appId: '',
1016
- extendData: {
1017
- businessStatus: 1,
1018
- businessWarnMsg: ''
1019
- },
1020
- fourthTabs: [],
1021
- children: []
1022
- }
1023
- ],
1024
- children: [],
1025
- method: 'iframe',
1026
- loading: false
1027
- }
1028
- ];
1029
- }
1030
- },
581
+
1031
582
  userCommonMenu: {
1032
583
  type: String,
1033
584
  default: queryUseCommonMenu
@@ -1035,6 +586,7 @@ export default {
1035
586
  },
1036
587
  data() {
1037
588
  return {
589
+ tabActiveName: '',
1038
590
  currentPage: {
1039
591
  method: ''
1040
592
  },
@@ -1047,9 +599,10 @@ export default {
1047
599
  systemurl: null,
1048
600
  icons: '',
1049
601
  sort: 4,
1050
- menuCode: 'dispatch_org',
602
+ appCode: 'dispatch_org',
1051
603
  urlopenmode: 0,
1052
- defaultMenu: 1
604
+ defaultMenu: 1,
605
+ pid: 'cc529d06f2fe4c9aa5956e7f540b8cd2'
1053
606
  },
1054
607
  {
1055
608
  id: '00c9e4e6e9974a789dbf2d99620c1773',
@@ -1059,9 +612,10 @@ export default {
1059
612
  systemurl: null,
1060
613
  icons: '',
1061
614
  sort: 5,
1062
- menuCode: 'sharefilesSend',
615
+ appCode: 'sharefilesSend',
1063
616
  urlopenmode: 0,
1064
- defaultMenu: 1
617
+ defaultMenu: 1,
618
+ pid: 'd648a3e7ae16458a823fdbe911e4d76e'
1065
619
  },
1066
620
  {
1067
621
  id: '7588320f81dd49d09fd8832037b1c57a',
@@ -1071,9 +625,10 @@ export default {
1071
625
  systemurl: null,
1072
626
  icons: '',
1073
627
  sort: 1,
1074
- menuCode: 'receiptAdd',
628
+ appCode: 'receiptAdd',
1075
629
  urlopenmode: 0,
1076
- defaultMenu: 0
630
+ defaultMenu: 0,
631
+ pid: 'ec4a6e89b1b346a4a2e8f4245e315da3'
1077
632
  }
1078
633
  ],
1079
634
  //是否显示头像
@@ -1196,7 +751,209 @@ export default {
1196
751
  //展示系统操作按钮标题类型
1197
752
  showTitleType: this.showHandlerTitleType,
1198
753
  layout: this.scene.toLowerCase(),
1199
- reladding: false
754
+ reladding: false,
755
+ fourthTabs: [],
756
+ jumpMenu: this.handleSelect,
757
+ myRemind: [
758
+ {
759
+ badge: true,
760
+ icon: 'es-icon-solid-shijian',
761
+ id: '589cdcff17f44a58bccb5b44de0e90c5',
762
+ text: '待办事项',
763
+ icons: '',
764
+ url: '/bpm/wfPending/wfPending/makeList.dhtml',
765
+ target: 'stage',
766
+ sort: 1,
767
+ remindurl:
768
+ 'http://boot-gateway:8080/bpm/wfPending/wfPending/getMakeNum.dhtml',
769
+ pid: 'd92e4c724cc74b13a4119f644eff0be8',
770
+ level: 3,
771
+ quickicons: '',
772
+ appType: '0',
773
+ appCode: 'pengding_make1',
774
+ urlopenmode: 0,
775
+ hasPermission: false,
776
+ appId: '',
777
+ extendData: {
778
+ businessStatus: 1,
779
+ businessWarnMsg: ''
780
+ },
781
+ fourthTabs: [],
782
+ children: [],
783
+ method: 'iframe',
784
+ loading: false,
785
+ num: 0
786
+ },
787
+ {
788
+ badge: false,
789
+ icon: 'es-icon-solid-yiban',
790
+ id: '259600a64a6840a4952251fe0a7bd890',
791
+ text: '已办事项',
792
+ icons: '',
793
+ url: '/bpm/wfpened/wfPended/list.dhtml?viewName=yibing',
794
+ target: 'stage',
795
+ sort: 3,
796
+ remindurl: '',
797
+ pid: 'd92e4c724cc74b13a4119f644eff0be8',
798
+ level: 3,
799
+ quickicons: '',
800
+ appType: '0',
801
+ appCode: 'yibingwdyb',
802
+ urlopenmode: 0,
803
+ hasPermission: false,
804
+ appId: '',
805
+ fourthTabs: [],
806
+ children: [],
807
+ method: 'iframe',
808
+ loading: false,
809
+ num: 0
810
+ },
811
+ {
812
+ text: '待签公文',
813
+ badge: true,
814
+ num: 0,
815
+ icon: 'es-icon-solid-daiqiangongwen',
816
+ id: '03158b72e0d644f6ae97e55ee598a17d',
817
+ url: '/archives-ui/webpack/index.html#/sign/signList',
818
+ remindurl: '',
819
+ pid: 'ec4a6e89b1b346a4a2e8f4245e315da3',
820
+ appCode: 'signList',
821
+ appId: 'q291a124fc151se5b4b890191c65e485',
822
+ fourthTabs: [],
823
+ children: [],
824
+ method: 'wujie'
825
+ },
826
+ {
827
+ badge: true,
828
+ icon: 'es-icon-juqiangongwen',
829
+ id: 'bbc03189766441e6a46550c556d61f03',
830
+ text: '拒签公文',
831
+ icons: '',
832
+ url: '/archives-ui/webpack/index.html#/dispatch/rejectedList',
833
+ target: 'stage',
834
+ sort: 4,
835
+ remindurl: '',
836
+ pid: '7fd13c86f596417b95d2b7622906f70f',
837
+ level: 3,
838
+ quickicons: '',
839
+ appType: '0',
840
+ appCode: 'rejectedList',
841
+ urlopenmode: 0,
842
+ hasPermission: false,
843
+ appId: 'q291a124fc151se5b4b890191c65e485',
844
+ extendData: {
845
+ businessStatus: 1,
846
+ businessWarnMsg: ''
847
+ },
848
+ fourthTabs: [],
849
+ children: [],
850
+ method: 'wujie'
851
+ },
852
+ {
853
+ badge: true,
854
+ num: 0,
855
+ icon: 'es-icon-solid-ziliao',
856
+ routerName: '',
857
+ id: 'df9d1baedf6a4107bfa9f5d763a98fc0',
858
+ text: '待收资料',
859
+ icons: '',
860
+ url: '/oa/sharefiles/receive/list.dhtml',
861
+ target: 'stage',
862
+ sort: 0,
863
+ remindurl: '',
864
+ pid: 'd648a3e7ae16458a823fdbe911e4d76e',
865
+ level: 2,
866
+ quickicons: '',
867
+ appType: '1',
868
+ appCode: 'sharefilesReceive',
869
+ urlopenmode: 0,
870
+ hasPermission: false,
871
+ appId: 'q291a124fc151se5b4b890191c65e485',
872
+ extendData: {
873
+ businessStatus: 1,
874
+ businessWarnMsg: ''
875
+ },
876
+ fourthTabs: [],
877
+ children: [],
878
+ method: 'iframe',
879
+ loading: false
880
+ },
881
+ {
882
+ text: '待签会议',
883
+ badge: true,
884
+ num: 0,
885
+ icon: 'es-icon-solid-huiyileixing',
886
+ id: '407eff212ecd4355ad1fb28c8de6e882',
887
+ icons: '',
888
+ url: '/conference/meetingReceive/receive_list.dhtml?meetState=-5',
889
+ target: 'stage',
890
+ sort: 0,
891
+ remindurl: '',
892
+ pid: 'bc1b01feafc64ae68beed2da5559ff7c',
893
+ level: 3,
894
+ quickicons: '',
895
+ appType: '0',
896
+ appCode: 'hyqs',
897
+ urlopenmode: 0,
898
+ hasPermission: false,
899
+ appId: '',
900
+ extendData: {
901
+ businessStatus: 1,
902
+ businessWarnMsg: ''
903
+ },
904
+ fourthTabs: [
905
+ {
906
+ id: 'c2d3fb3c7d684b06b4511233a6b5f03b',
907
+ text: '未签收',
908
+ icons: '',
909
+ url: '/conference/meetingReceive/receive_list.dhtml?meetState=-5',
910
+ target: 'stage',
911
+ sort: 1,
912
+ remindurl: '',
913
+ pid: '407eff212ecd4355ad1fb28c8de6e882',
914
+ level: 4,
915
+ quickicons: '',
916
+ appType: '0',
917
+ appCode: 'wqsmeeting',
918
+ urlopenmode: 0,
919
+ hasPermission: false,
920
+ appId: '',
921
+ extendData: {
922
+ businessStatus: 1,
923
+ businessWarnMsg: ''
924
+ },
925
+ fourthTabs: [],
926
+ children: []
927
+ },
928
+ {
929
+ id: '9990c8064694403ba5ee85f098738aab',
930
+ text: '已签收',
931
+ icons: '',
932
+ url: '/conference/meetingReceive/receive_list.dhtml?meetState=-6',
933
+ target: 'stage',
934
+ sort: 2,
935
+ remindurl: '',
936
+ pid: '407eff212ecd4355ad1fb28c8de6e882',
937
+ level: 4,
938
+ quickicons: '',
939
+ appType: '0',
940
+ appCode: 'yqs',
941
+ urlopenmode: 0,
942
+ hasPermission: false,
943
+ appId: '',
944
+ extendData: {
945
+ businessStatus: 1,
946
+ businessWarnMsg: ''
947
+ },
948
+ fourthTabs: [],
949
+ children: []
950
+ }
951
+ ],
952
+ children: [],
953
+ method: 'iframe',
954
+ loading: false
955
+ }
956
+ ]
1200
957
  };
1201
958
  },
1202
959
  computed: {
@@ -1299,11 +1056,25 @@ export default {
1299
1056
  this.doorIndex = sessionStorage.getItem('doorIndex');
1300
1057
  },
1301
1058
  mounted() {
1302
- this.handleListener();
1059
+ // this.handleListener();
1303
1060
  this.getNums();
1304
- window.top.jumpTopMenu = this.handleSelect;
1061
+ window.top.jumpMenu = window.top.jumpTopMenu = this.handleSelect;
1305
1062
  },
1306
1063
  methods: {
1064
+ // tab点击事件
1065
+ fourthTabClick(res) {
1066
+ const index = res.index;
1067
+ this.currentPage = {
1068
+ appCode: this.fourthTabs[index]
1069
+ };
1070
+ console.log(this.currentPage, 'this.currentPage');
1071
+
1072
+ // console.log(this.fourthTabs[index], 'this.fourthTabs[index]');
1073
+ // 增加阻塞 重载页面
1074
+ setTimeout(() => {
1075
+ this.currentPage = this.setIframeType(this.fourthTabs[index]);
1076
+ }, 0);
1077
+ },
1307
1078
  //获取数量
1308
1079
  getNums() {
1309
1080
  this.getIndexCount();
@@ -1334,7 +1105,6 @@ export default {
1334
1105
  .then((res) => {
1335
1106
  if (res.rCode === 0) {
1336
1107
  this.myRemind[5].num = res.results > 99 ? '99+' : res.results;
1337
- console.log('查询会议数量', res.results);
1338
1108
  }
1339
1109
  });
1340
1110
  },
@@ -1476,6 +1246,7 @@ export default {
1476
1246
  this.setConfig(results);
1477
1247
  if (this.remote && first) {
1478
1248
  this.getApplications();
1249
+ // 此处的快捷 是用户自定义的 不是系统配置的快捷菜单 所以注释掉
1479
1250
  // this.getUseCommonMenu();
1480
1251
  }
1481
1252
  },
@@ -1740,13 +1511,6 @@ export default {
1740
1511
  * @date 2024年9月7日
1741
1512
  **/
1742
1513
  getMenus(loading) {
1743
- const menuData = store.get('nav');
1744
-
1745
- if (menuData && menuData.length) {
1746
- loading.close();
1747
- this.renderMenus(menuData);
1748
- return;
1749
- }
1750
1514
  util
1751
1515
  .ajax({ url: this._menuUrl })
1752
1516
  .then((res) => {
@@ -1777,109 +1541,87 @@ export default {
1777
1541
  * @date 2024年9月7日
1778
1542
  **/
1779
1543
  renderMenus(res) {
1780
- this.menus = res;
1781
- this.setTips(this.menus);
1782
- store.set('nav', this.menus);
1783
- if (this.indexUrl) {
1784
- let obj = this.getMenu(this.menus, this.indexUrl);
1785
- obj = obj
1786
- ? JSON.parse(JSON.stringify(obj))
1787
- : {
1788
- url: this.indexUrl,
1789
- text: this.indexTitle,
1790
- id: '0',
1791
- appCode: 'indexUrl'
1544
+ // console.log(res, 'renderMenus');
1545
+ // 此主题样式的情况下 只显示二级菜单 三级菜单以tab的形式加载 如果没有三级菜单 1.不需要展示tab,2.tab为二级菜单
1546
+ const rebuildMenu = res.map((level1Menu) => {
1547
+ const transformedLevel1 = {
1548
+ ...level1Menu,
1549
+ children: level1Menu.children.map((level2Menu) => {
1550
+ const transformedLevel2 = {
1551
+ ...level2Menu,
1552
+ // 处理三级菜单
1553
+ fourthTabs:
1554
+ level2Menu.children && level2Menu.children.length > 0
1555
+ ? level2Menu.children.map((level3Menu) => ({
1556
+ ...level3Menu
1557
+ }))
1558
+ : [
1559
+ {
1560
+ // 如果没有三级菜单,将二级菜单自身作为三级菜单
1561
+ ...level2Menu
1562
+ }
1563
+ ]
1792
1564
  };
1793
- this.homePage = this.setIframeType(obj);
1794
- this.currentPage = this.homePage;
1795
- // console.log(this.currentPage, 'currentPagecurrentPage');
1796
1565
 
1797
- if (!this.appCode) {
1798
- this.tabs = [this.homePage];
1799
- this.activeName = this.homePage.id;
1800
- }
1801
- }
1802
- if (this.appCode) {
1803
- let code = this.sysCode || this.appCode;
1804
- let app = this.userApps.filter((item) => {
1805
- return item.code === code;
1806
- })[0];
1807
- if (app) {
1808
- this.active = app.id;
1809
- if (app.url) {
1810
- let obj = this.getMenu(this.menus, app.url);
1811
- if (obj) {
1812
- obj = JSON.parse(JSON.stringify(obj));
1813
- let tab = this.setIframeType(obj);
1814
- this.tabs = [tab];
1815
- this.activeName = tab.id;
1816
- } else {
1817
- this.tabs = [app];
1818
- }
1819
- }
1820
- }
1821
- if (this.sysCode) {
1822
- let subMenus = this.getMenu(this.menus, this.sysCode, 'appCode');
1823
- if (subMenus) {
1824
- let obj = this.getMenu(this.menus, this.appCode, 'appCode');
1825
- if (obj) {
1826
- if (obj.url) {
1827
- obj = JSON.parse(JSON.stringify(obj));
1828
- } else {
1829
- obj = JSON.parse(JSON.stringify(this.getFirst(obj)));
1830
- }
1831
- this.subActive = obj.id;
1832
- let tab = this.setIframeType(obj);
1833
- this.tabs = [tab];
1834
- this.activeName = tab.id;
1835
- } else {
1836
- this.subActive = '';
1837
- }
1838
- this.subMenus = subMenus;
1839
- this.showMenu =
1840
- (subMenus.children && subMenus.children.length > 0) ||
1841
- (subMenus.fourthTabs && subMenus.fourthTabs.length > 0);
1842
- } else {
1843
- this.subMenus = null;
1844
- this.showMenu = false;
1845
- this.$message.error('未分配菜单权限,请联系管理员!');
1846
- }
1847
- } else {
1848
- let subMenus = this.getMenu(this.menus, this.appCode, 'appCode');
1849
- if (subMenus) {
1850
- if (this.tabs.length == 0) {
1851
- let obj = this.getFirst(subMenus);
1852
- if (obj) {
1853
- obj = JSON.parse(JSON.stringify(obj));
1854
- this.subActive = obj.id;
1855
- let tab = this.setIframeType(obj);
1856
- this.tabs = [tab];
1857
- this.activeName = tab.id;
1858
- } else {
1859
- this.subActive = '';
1860
- }
1861
- }
1862
- this.subMenus = subMenus;
1863
- this.showMenu =
1864
- (subMenus.children && subMenus.children.length > 0) ||
1865
- (subMenus.fourthTabs && subMenus.fourthTabs.length > 0);
1866
- } else {
1867
- this.subMenus = null;
1868
- this.showMenu = false;
1869
- this.$message.error('未分配菜单权限,请联系管理员!');
1566
+ // 清除children,避免渲染问题
1567
+ transformedLevel2.children = [];
1568
+
1569
+ return transformedLevel2;
1570
+ })
1571
+ };
1572
+
1573
+ return transformedLevel1;
1574
+ });
1575
+
1576
+ // 判断myRemind中每个项是否在菜单列表中,并设置hasPermission
1577
+ this.updateRemindPermission(res);
1578
+
1579
+ // console.log('rebuildMenu', rebuildMenu);
1580
+
1581
+ this.menus = rebuildMenu;
1582
+ this.setTips(this.menus);
1583
+ store.set('nav', this.menus);
1584
+ let obj = this.getMenu(this.menus, this.indexUrl);
1585
+ obj = obj
1586
+ ? JSON.parse(JSON.stringify(obj))
1587
+ : {
1588
+ url: this.indexUrl,
1589
+ text: this.indexTitle,
1590
+ id: '0',
1591
+ appCode: 'indexUrl'
1592
+ };
1593
+ this.homePage = this.setIframeType(obj);
1594
+ this.currentPage = this.homePage;
1595
+ // console.log(this.currentPage, 'currentPage');
1596
+ },
1597
+ /**
1598
+ * 更新myRemind中各项的权限状态
1599
+ * @param {Array} menus - 完整的菜单列表
1600
+ */
1601
+ updateRemindPermission(menus) {
1602
+ // 创建一个Set存储所有菜单的id,方便快速查找
1603
+ const menuIdSet = new Set();
1604
+ // 递归遍历菜单列表,收集所有id
1605
+ const collectMenuIds = (menuList) => {
1606
+ menuList.forEach((menu) => {
1607
+ menuIdSet.add(menu.id);
1608
+ if (menu.children && menu.children.length > 0) {
1609
+ collectMenuIds(menu.children);
1870
1610
  }
1871
- }
1872
- } else if (this.initApps && this.initApps.length && !this.indexUrl) {
1873
- let obj = this.getMenu(
1874
- this.menus,
1875
- this.initApps[this.initApps.length - 1]
1876
- );
1877
- if (obj) {
1878
- let tab = this.setIframeType(JSON.parse(JSON.stringify(obj)));
1879
- this.tabs.push(tab);
1880
- this.activeName = tab.id;
1881
- }
1882
- }
1611
+ });
1612
+ };
1613
+ // 收集所有菜单id
1614
+ collectMenuIds(menus);
1615
+ // 更新myRemind中各项的hasPermission
1616
+ this.myRemind.forEach((remind) => {
1617
+ // 判断remind.id是否存在于菜单id集合中
1618
+ remind.hasPermission = menuIdSet.has(remind.id);
1619
+ });
1620
+ // 同时更新userCommonMenuList中各项的hasPermission
1621
+ this.userCommonMenuList.forEach((item) => {
1622
+ // 判断item.id是否存在于菜单id集合中
1623
+ item.hasPermission = menuIdSet.has(item.id);
1624
+ });
1883
1625
  },
1884
1626
  /**
1885
1627
  * @desc:设置页面加载类型
@@ -2314,60 +2056,6 @@ export default {
2314
2056
  handleCloseDrawer() {
2315
2057
  this.drawer = { visible: false };
2316
2058
  },
2317
- /**
2318
- * @desc:菜单点击
2319
- * @author huangbo
2320
- * @date 2024年9月7日
2321
- **/
2322
- handlerClickMenu(res) {
2323
- util
2324
- .ajax({
2325
- url: recordUserApp,
2326
- params: {
2327
- userId: this.user.userId,
2328
- appId: res.id
2329
- }
2330
- })
2331
- .then(() => {})
2332
- .catch(() => {});
2333
- this.showMsg = false;
2334
- this.showSet = false;
2335
-
2336
- if (res.url) {
2337
- if (res.urlopenmode == 1 || res.openModel == 1) {
2338
- util.win.open(res.url);
2339
- return;
2340
- } else if (res.urlopenmode == 2 || res.openModel == 2) {
2341
- util.win.open(res.url, '_self');
2342
- return;
2343
- }
2344
- }
2345
- let i = util.indexOfObj(this.tabs, res, 'id');
2346
- if (i == -1) {
2347
- let tab = this.setIframeType(res);
2348
- this.tabs.push(tab);
2349
- this.activeName = res.id;
2350
- } else {
2351
- this.tabs = events[0](this.tabs, i, this);
2352
- // let tab = this.tabs[i];
2353
- // if (tab.method === 'iframe') {
2354
- // this.activeName = res.id;
2355
- // this.$set(this.tabs[i], 'url', util.handlerUrl(tab.url));
2356
- // } else {
2357
- // if (tab.method === 'wujie' && tab.appCode) {
2358
- // window.document
2359
- // .querySelector(`iframe[name=${tab.appCode}]`)
2360
- // .contentWindow.location.reload(true);
2361
- // }
2362
- // if (tab.method === 'router') {
2363
- // this.$set(this.tabs[i], 'keys', util.uuid());
2364
- // }
2365
- // this.activeName = res.id;
2366
- // }
2367
- this.activeName = res.id;
2368
- }
2369
- },
2370
-
2371
2059
  /**
2372
2060
  * @desc:用户详情请求成功
2373
2061
  * @author huangbo
@@ -2416,6 +2104,7 @@ export default {
2416
2104
  * @date 2024年9月7日
2417
2105
  **/
2418
2106
  handleRefresh(arg) {
2107
+ this.getNums();
2419
2108
  let i =
2420
2109
  arg && arg != true && arg !== 'pageData'
2421
2110
  ? util.indexOfObj(this.tabs, arg, 'appCode,code,id,url')
@@ -2783,113 +2472,133 @@ export default {
2783
2472
  clearTimeout(this.sysMsgOut);
2784
2473
  }
2785
2474
  },
2786
- jumpMenu(res, close, params = {}) {
2787
- let apps = res;
2788
- let param = params;
2789
- let reload = true;
2790
- if (typeof res === 'string') {
2791
- apps = res.split(',');
2792
- } else if (util.isObject(res)) {
2793
- apps = Array.isArray(res.appCode)
2794
- ? res.appCode
2795
- : res.appCode.split(',');
2796
- res.param && (param = { ...res.param, ...params });
2797
- reload = Object.prototype.hasOwnProperty.call(res, 'reload')
2798
- ? res.reload
2799
- : true;
2800
- }
2801
- let obj = this.getMenu(this.menus, apps[apps.length - 1]);
2802
- if (obj) {
2803
- obj = JSON.parse(JSON.stringify(obj));
2804
- let i = util.indexOfObj(this.tabs, obj, 'id,code,appCode');
2805
- let n = util.indexOfObj(this.tabs, this.activeName, 'id');
2806
- let old = this.activeName;
2807
- this.activeName = obj.id;
2808
- if (i == -1) {
2809
- let tab = this.setIframeType(obj);
2810
- this.$set(tab, 'url', util.handlerUrl(tab.url, param));
2811
- this.tabs.splice(n + 1, 0, tab);
2812
- } else {
2813
- let tab = this.tabs[i];
2814
- if (tab.method === 'iframe') {
2815
- this.$set(this.tabs[i], 'url', util.handlerUrl(tab.url, param));
2816
- }
2817
- if (tab.method === 'wujie' && tab.appCode) {
2818
- const url = param ? util.handlerUrl(tab.url, param) : tab.url;
2819
- if (reload || param) {
2820
- tab.url = '';
2821
- this.$nextTick(() => {
2822
- tab.url = url;
2823
- });
2824
- }
2825
- // if (param) {
2826
- // window.document.querySelector(
2827
- // `iframe[name=${tab.appCode}]`
2828
- // ).contentWindow.location.href = util.handlerUrl(tab.url, param);
2829
- // } else {
2830
- // window.document
2831
- // .querySelector(`iframe[name=${tab.appCode}]`)
2832
- // .contentWindow.location.reload(true);
2833
- // }
2834
- }
2835
- if (tab.method === 'router') {
2836
- this.$set(this.tabs[i], 'url', util.handlerUrl(tab.url, param));
2837
- this.$set(this.tabs[i], 'keys', util.uuid());
2838
- }
2475
+ /**
2476
+ * @desc:菜单点击事件
2477
+ * @author huangbo
2478
+ * @date 2024年9月7日
2479
+ * @param {*} res 菜单点击事件参数
2480
+ * @param {*} method 菜单点击事件方法
2481
+ * 1.顶部菜单点击跳转已经实现
2482
+ * 2.其他地方点击跳转,需要选中跳转的一二级菜单
2483
+ **/
2484
+ handleSelect(res, params = {}) {
2485
+ console.log(res, 'handleSelect');
2486
+
2487
+ if (res.urlopenmode == 1 || res.openModel == 1) {
2488
+ util.win.open(res.url || res.menuurl);
2489
+ } else if (res.urlopenmode == 2 || res.openModel == 2) {
2490
+ util.win.open(res.url || res.menuurl, '_self');
2491
+ } else {
2492
+ const node = res.node ? res.node : res;
2493
+
2494
+ let apps = node;
2495
+ let param = params;
2496
+ let reload = true;
2497
+ if (typeof res === 'string') {
2498
+ apps = res.split(',');
2499
+ } else if (util.isObject(node)) {
2500
+ const appCode = node.appCode || node.menuCode;
2501
+ apps = Array.isArray(appCode) ? appCode : appCode.split(',');
2502
+ node.param && (param = { ...node.param, ...params });
2503
+ reload = Object.prototype.hasOwnProperty.call(node, 'reload')
2504
+ ? node.reload
2505
+ : true;
2839
2506
  }
2840
- if (close) {
2841
- if (close === old) {
2842
- this.tabs.splice(n, 1);
2507
+
2508
+ const { currentPage, fourthTabs } = this.findMenuById(
2509
+ apps[apps.length - 1]
2510
+ );
2511
+ if (currentPage) {
2512
+ this.currentPage = {};
2513
+ this.fourthTabs = [];
2514
+ if (currentPage.fourthTabs && currentPage.fourthTabs.length > 0) {
2515
+ this.fourthTabs = currentPage.fourthTabs;
2516
+ this.currentPage = this.setIframeType(this.fourthTabs[0]);
2517
+ if (param) {
2518
+ this.currentPage.url = util.handlerUrl(
2519
+ this.currentPage.url,
2520
+ param
2521
+ );
2522
+ }
2523
+ this.tabActiveName = this.currentPage.id;
2843
2524
  } else {
2844
- let d = util.indexOfObj(this.tabs, close, 'id,code,appCode');
2845
- if (d > -1) {
2846
- this.tabs.splice(d, 1);
2525
+ this.fourthTabs = fourthTabs;
2526
+ this.currentPage = this.setIframeType(currentPage);
2527
+ if (param) {
2528
+ this.currentPage.url = util.handlerUrl(
2529
+ this.currentPage.url,
2530
+ param
2531
+ );
2847
2532
  }
2533
+ this.tabActiveName = this.currentPage.id;
2848
2534
  }
2535
+ } else {
2536
+ this.$alert('没有关联菜单,请联系管理员!', '提示', {
2537
+ confirmButtonText: '确定',
2538
+ type: 'warning'
2539
+ }).catch(() => {});
2849
2540
  }
2850
- } else {
2851
- this.$message.error('没有此菜单!');
2852
2541
  }
2853
2542
  },
2854
- //监听改变菜单
2855
- handleListener() {
2856
- util.win.addEventListener(
2857
- 'message',
2858
- (e) => {
2859
- var msg = e.data;
2860
- if (msg.key == 'jump_Menu') {
2861
- let res = msg.data1;
2862
- this.jumpMenu(res);
2543
+ findMenuById(res) {
2544
+ let targetMenu = null;
2545
+ let siblingMenus = [];
2546
+ let transformedMenus = this.menus;
2547
+ // 递归查找函数
2548
+ function searchMenu(menuList) {
2549
+ for (let menu of menuList) {
2550
+ // 检查是否为一级菜单
2551
+ if (menu.url === res || menu.id === res || menu.appCode === res) {
2552
+ targetMenu = { ...menu, level: 1 };
2553
+ siblingMenus = transformedMenus;
2554
+ return true;
2863
2555
  }
2864
- },
2865
- false
2866
- );
2867
- },
2868
- handleSelect(res, method) {
2869
- console.log(res, 'resss');
2870
2556
 
2871
- if (method) {
2872
- if (res.urlopenmode == 0) {
2873
- this.currentPage = {
2874
- url: res.menuurl,
2875
- method: 'wujie',
2876
- ...res
2877
- };
2878
- } else {
2879
- util.win.open(res.menuurl);
2557
+ // 检查是否为二级菜单
2558
+ if (menu.children) {
2559
+ for (let level2Menu of menu.children) {
2560
+ if (
2561
+ level2Menu.url === res ||
2562
+ level2Menu.id === res ||
2563
+ level2Menu.appCode === res
2564
+ ) {
2565
+ targetMenu = {
2566
+ ...level2Menu,
2567
+ level: 2
2568
+ };
2569
+ siblingMenus = menu.children;
2570
+ return true;
2571
+ }
2572
+
2573
+ // 检查是否为三级菜单(在fourthTabs中)
2574
+ if (level2Menu.fourthTabs) {
2575
+ const foundInTabs = level2Menu.fourthTabs.find(
2576
+ (tab) =>
2577
+ tab.id === res || tab.appCode === res || tab.url == res
2578
+ );
2579
+ if (foundInTabs) {
2580
+ targetMenu = {
2581
+ ...foundInTabs,
2582
+ level: 3,
2583
+ parentId: level2Menu.id
2584
+ };
2585
+ siblingMenus = level2Menu.fourthTabs;
2586
+ return true;
2587
+ }
2588
+ }
2589
+ }
2590
+ }
2880
2591
  }
2881
- } else {
2882
- this.currentPage = this.setIframeType(res.node ? res.node : res);
2592
+ return false;
2883
2593
  }
2884
- // console.log(this.currentPage, 'this.currentPage');
2885
2594
 
2886
- // this.showSearch = false;
2887
- // if (parent.name === '应用') {
2888
- // this.handlerClickApps(res);
2889
- // }
2890
- // if (parent.name === '菜单') {
2891
- // this.handlerClickApp(res);
2892
- // }
2595
+ // 开始查找
2596
+ searchMenu(this.menus);
2597
+
2598
+ return {
2599
+ currentPage: targetMenu,
2600
+ fourthTabs: siblingMenus // 不需要过滤自身
2601
+ };
2893
2602
  },
2894
2603
  handleLoadIframe(item) {
2895
2604
  this.$set(item, 'loading', false);