@utogether/udp-core 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/build/plugins.ts +13 -2
  2. package/dist/{403-JWjatlxJ.js → 403-B1rIjAAu.js} +7 -6
  3. package/dist/{404-BcdMJfPb.js → 404-mBqc2y4t.js} +14 -13
  4. package/dist/{500-bsa3F_cc.js → 500-BoI45Zdh.js} +10 -9
  5. package/dist/{AuthorityInfo-CqItgNs5.js → AuthorityInfo-B08NBIIn.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BLP1SaiH.js +100 -0
  7. package/dist/{AuthorityPanel-BaLMwMgW.js → AuthorityPanel-BeBNiwqc.js} +1 -1
  8. package/dist/{AuthorityPanel.vue_vue_type_style_index_0_lang-C_bkqLD9.js → AuthorityPanel.vue_vue_type_style_index_0_lang-CIYmnP9-.js} +6 -6
  9. package/dist/{Company-DVff9IA7.js → Company-JGGyWEWH.js} +3 -3
  10. package/dist/{CompanyPanel-CNrdq4XE.js → CompanyPanel-BQ_cCmDx.js} +16 -16
  11. package/dist/{Department-CqcpfL4i.js → Department-z2iO6hwM.js} +10 -10
  12. package/dist/{DepartmentPanel-Bvti4LGu.js → DepartmentPanel-BtQe7zwU.js} +108 -78
  13. package/dist/{DesignPanel-CjykspE1.js → DesignPanel-7mhtVWas.js} +1 -1
  14. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BK9EERdd.js → DesignPanel.vue_vue_type_style_index_0_lang-4EsHemj_.js} +24 -26
  15. package/dist/DictView-CjchV2Yk.js +109 -0
  16. package/dist/InvOrganization-Pn1O_XP0.js +74 -0
  17. package/dist/Org-BqytV_vi.js +39 -0
  18. package/dist/{Preview-Cm_7RhYU.js → Preview-CLpUUMay.js} +2 -2
  19. package/dist/{ReportDefine-CJVlQ--7.js → ReportDefine-Cz1KtEUF.js} +1 -1
  20. package/dist/{ReportDesign-B0unlrkt.js → ReportDesign-BaORYud4.js} +46 -46
  21. package/dist/{ReportQuery-BKuMCEvF.js → ReportQuery-CPCPXiXz.js} +5 -5
  22. package/dist/{ReportQueryFrom-DAngMJLU.js → ReportQueryFrom-C_AcrfkJ.js} +1 -1
  23. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CPpwmztJ.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Bm67ejay.js} +6 -5
  24. package/dist/{ReportTemplate-8YH3L8Pv.js → ReportTemplate-CFiNMz79.js} +26 -26
  25. package/dist/{Role-MxI30-0W.js → Role-B-XDoJd5.js} +6 -6
  26. package/dist/{RoleAssign-BzUY_y_y.js → RoleAssign-BolW8YVs.js} +9 -9
  27. package/dist/{RolePanel-DS_TErTn.js → RolePanel-2kfs5tw9.js} +1 -1
  28. package/dist/{RolePanel-CXdcvsR5.js → RolePanel-HilSuYns.js} +1 -1
  29. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CE4gApUY.js +132 -0
  30. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Ddl-A7Zh.js → RolePanel.vue_vue_type_script_setup_true_lang-DPzgfAyV.js} +42 -36
  31. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-DnchUgIF.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCTH4RkH.js} +20 -20
  32. package/dist/{Staff-D7tXo_Gn.js → Staff-BTk3whFC.js} +3 -3
  33. package/dist/{StaffInfo-Bk8BY8PO.js → StaffInfo-d3AuSzlA.js} +1 -1
  34. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DqKwZi5f.js → StaffInfo.vue_vue_type_script_setup_true_lang-eOL4VlfE.js} +13 -13
  35. package/dist/{StaffPanel-VtpGCTIq.js → StaffPanel-DV-D4jjz.js} +1 -1
  36. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-4sFq3CEo.js +135 -0
  37. package/dist/{SysUser-D0Q6OvD7.js → SysUser-BnjYytws.js} +2 -2
  38. package/dist/{SysUserPanel-1_vrsANQ.js → SysUserPanel-CBoyD-Qi.js} +1 -1
  39. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-PrTlTZR-.js +341 -0
  40. package/dist/{SystemMenu-9PG3vESE.js → SystemMenu-kYB_ZaUt.js} +49 -47
  41. package/dist/{UserInfo-qgXUEGwi.js → UserInfo-4dx97VBL.js} +1 -1
  42. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-CN0C5rVk.js → UserInfo.vue_vue_type_style_index_0_lang-BpbC_ZDm.js} +35 -33
  43. package/dist/{childView-C7ZSA5fR.js → childView-CHPNfTEb.js} +1 -1
  44. package/dist/{childView-yV2QLwfA.js → childView-CKA_JgVZ.js} +1 -1
  45. package/dist/{childView.vue_vue_type_style_index_0_lang-DdKxPGdh.js → childView.vue_vue_type_style_index_0_lang-Bym2fQRd.js} +7 -7
  46. package/dist/childView.vue_vue_type_style_index_0_lang-W7bCtXeu.js +177 -0
  47. package/dist/{code-rule-95K1jr-u.js → code-rule-CbxuZg0-.js} +42 -41
  48. package/dist/core.es.js +19 -10
  49. package/dist/{cron-task-DGrQwOHs.js → cron-task-nTOpqQYf.js} +5 -5
  50. package/dist/flow-task-B07st2aD.js +10 -0
  51. package/dist/{frameView-7SmME93D.js → frameView-Z1tPUyCh.js} +15 -14
  52. package/dist/img/l_img.svg +1 -1
  53. package/dist/img/minicolors.png +0 -0
  54. package/dist/img/v_img.svg +1 -1
  55. package/dist/index-C3q8HoJM.js +4650 -0
  56. package/dist/{layoutView-C6WIVWGZ.js → layoutView--MGA9zUB.js} +1776 -1764
  57. package/dist/{log-in-e7D5Ss1P.js → log-in-CSYJDA6m.js} +36 -29
  58. package/dist/log-out-DiwGCg7p.js +130 -0
  59. package/dist/login-C6Y0ajDp.js +251 -0
  60. package/dist/{login-log-CvVnyGi3.js → login-log-C0V-_l3F.js} +6 -4
  61. package/dist/{lov-view-DoF5LqFQ.js → lov-view-Cmv7wZZ9.js} +9 -9
  62. package/dist/{menuInfo-CNzGQwOD.js → menuInfo-UeutJpOa.js} +1 -1
  63. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-51SYxVc_.js → menuInfo.vue_vue_type_style_index_0_lang-CWX4Mu67.js} +144 -121
  64. package/dist/pda-app-B6w99SJo.js +710 -0
  65. package/dist/redirect-BqegffKC.js +15 -0
  66. package/dist/{resource-gVFFMO9l.js → resource-BybJvUv0.js} +17 -17
  67. package/dist/{su-welcome-BN_s_RX_.js → su-welcome-C1bmxHoY.js} +124 -126
  68. package/dist/sys-config-BnmIDnCj.js +370 -0
  69. package/dist/udp-core.css +1 -9
  70. package/dist/utogether-MlnyYtNS.js +4 -0
  71. package/index.ts +19 -6
  72. package/package.json +18 -17
  73. package/src/App.vue +2 -7
  74. package/src/api/http.ts +1 -4
  75. package/src/api/index.ts +5 -3
  76. package/src/api/user.ts +2 -2
  77. package/src/components/SuCharts/src/UserInfo.vue +3 -3
  78. package/src/components/SuScrollTree/ScrollPanel.vue +4 -9
  79. package/src/components/udp/content/index.vue +88 -0
  80. package/src/components/udp/form/form.vue +109 -0
  81. package/src/components/udp/grid/index.vue +524 -0
  82. package/src/components/udp/index.ts +5 -4
  83. package/src/components/udp/ut-stamp-badge/index.vue +271 -0
  84. package/src/components/udp/utils.ts +408 -40
  85. package/src/directives/permission/index.ts +1 -1
  86. package/src/layout/components/lay-navbar/index.vue +9 -7
  87. package/src/layout/components/lay-panel/index.vue +3 -3
  88. package/src/layout/components/lay-search/index.vue +1 -1
  89. package/src/layout/components/lay-select-org/index.vue +4 -9
  90. package/src/layout/components/lay-setting/index.vue +503 -510
  91. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  92. package/src/layout/components/lay-sidebar/horizontal.vue +8 -6
  93. package/src/layout/components/lay-sidebar/mixNav.vue +260 -258
  94. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -98
  95. package/src/layout/components/lay-tag/index.vue +598 -625
  96. package/src/layout/hooks/useDataThemeChange.ts +1 -1
  97. package/src/layout/hooks/useNav.ts +176 -173
  98. package/src/layout/hooks/useTag.ts +227 -233
  99. package/src/layout/layoutView.vue +215 -215
  100. package/src/layout/types.ts +93 -92
  101. package/src/main.ts +115 -109
  102. package/src/plugins/i18n/en.ts +26 -13
  103. package/src/plugins/i18n/module/u-workflow.ts +1 -1
  104. package/src/plugins/i18n/zh.ts +363 -337
  105. package/src/plugins/vxe-table/index.ts +74 -4
  106. package/src/plugins/vxe-table/render.tsx +186 -58
  107. package/src/router/index.ts +187 -183
  108. package/src/router/modules/flow.ts +35 -0
  109. package/src/router/modules/home.ts +32 -32
  110. package/src/router/modules/remaining.ts +1 -26
  111. package/src/router/utils.ts +420 -377
  112. package/src/store/modules/app.ts +2 -4
  113. package/src/store/modules/epTheme.ts +48 -49
  114. package/src/store/modules/multiTags.ts +15 -14
  115. package/src/store/modules/permission.ts +25 -15
  116. package/src/store/modules/system.ts +1 -3
  117. package/src/style/button.scss +11 -4
  118. package/src/style/login.css +1 -1
  119. package/src/style/tailwind.css +1 -68
  120. package/src/style/vxetable.scss +103 -11
  121. package/src/utils/authority/index.ts +1 -1
  122. package/src/utils/dataFormat/index.ts +223 -223
  123. package/src/utils/index.ts +3 -1
  124. package/src/utils/lifecycle.ts +39 -20
  125. package/src/utils/propTypes.ts +1 -6
  126. package/src/utils/storage/index.ts +2 -2
  127. package/src/utils/{http → udp/http}/index.ts +27 -30
  128. package/src/utils/{http → udp/http}/types.d.ts +2 -6
  129. package/src/views/login/login-view.vue +6 -20
  130. package/src/views/organization/company/CompanyPanel.vue +2 -2
  131. package/src/views/organization/department/Department.vue +58 -58
  132. package/src/views/organization/department/DepartmentPanel.vue +303 -283
  133. package/src/views/organization/inv-org/InvOrganization.vue +23 -9
  134. package/src/views/organization/org/Org.vue +9 -5
  135. package/src/views/organization/staff/StaffInfo.vue +127 -133
  136. package/src/views/organization/staff/StaffPanel.vue +162 -145
  137. package/src/views/system/cron/cron-task.vue +2 -12
  138. package/src/views/system/menu/AuthorityPanel.vue +2 -2
  139. package/src/views/system/menu/SystemMenu.vue +14 -20
  140. package/src/views/system/menu/menuInfo.vue +39 -23
  141. package/src/views/system/role/AuthorityInfo.vue +19 -15
  142. package/src/views/system/role/Role.vue +1 -5
  143. package/src/views/system/role/RolePanel.vue +11 -2
  144. package/src/views/system/role/UserInfo.vue +11 -9
  145. package/src/views/system/role-assign/RoleAssign.vue +2 -2
  146. package/src/views/system/role-assign/RolePanel.vue +12 -9
  147. package/src/views/system/sys/sys-config.vue +70 -21
  148. package/src/views/system/sysUser/SysUserPanel.vue +347 -278
  149. package/src/views/uapp/pda/pda-app.vue +48 -16
  150. package/src/views/udev/coderule/code-rule.vue +132 -121
  151. package/src/views/udev/dict/DictView.vue +118 -106
  152. package/src/views/udev/dict/childView.vue +183 -222
  153. package/src/views/udev/lov/childView.vue +1 -7
  154. package/src/views/ufile/aggregation/File.vue +5 -5
  155. package/src/views/ufile/file/water-mark.vue +14 -14
  156. package/src/views/uhome/components/menu-favorite.vue +314 -331
  157. package/src/views/uhome/su-welcome.vue +319 -339
  158. package/src/views/ulogin/login.vue +325 -316
  159. package/src/views/upms/interface/log-in.vue +100 -106
  160. package/src/views/upms/interface/log-out.vue +104 -107
  161. package/src/views/upms/user/login-log.vue +54 -60
  162. package/src/views/urpt/design/DesignPanel.vue +16 -35
  163. package/src/views/urpt/design/Preview.vue +1 -0
  164. package/src/views/urpt/design/ReportDesign.vue +17 -23
  165. package/src/views/urpt/static-resource/resource.vue +3 -3
  166. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  167. package/src/views/utask/flow-task.vue +18 -0
  168. package/types/global.d.ts +231 -236
  169. package/vite.config.ts +13 -2
  170. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-32L40GY2.js +0 -102
  171. package/dist/DictView-q7kR9K--.js +0 -95
  172. package/dist/InvOrganization-DI45LqZV.js +0 -260
  173. package/dist/Org-CZju_ZiR.js +0 -35
  174. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DJKu6PXz.js +0 -126
  175. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-C3Ixs12y.js +0 -111
  176. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-C5XEmxsV.js +0 -288
  177. package/dist/childView.vue_vue_type_style_index_0_lang-bkmucBUL.js +0 -187
  178. package/dist/core.umd.js +0 -173
  179. package/dist/index-OswH7SsT.js +0 -9937
  180. package/dist/log-out--RRncZhN.js +0 -120
  181. package/dist/login-BhCMeCLS.js +0 -251
  182. package/dist/pda-app-nn3llDUx.js +0 -2209
  183. package/dist/redirect-CmMplDV4.js +0 -15
  184. package/dist/sys-config-DGutV-VX.js +0 -277
  185. package/dist/utogether-wFDCI28t.js +0 -182
  186. package/src/assets/images/empty.png +0 -0
  187. package/src/assets/images/logo.png +0 -0
  188. package/src/components/ReCountTo/README.md +0 -2
  189. package/src/components/ReCountTo/index.ts +0 -18
  190. package/src/components/ReCountTo/src/normal/index.tsx +0 -165
  191. package/src/components/ReCountTo/src/normal/props.ts +0 -37
  192. package/src/components/ReCountTo/src/rebound/index.tsx +0 -67
  193. package/src/components/ReCountTo/src/rebound/props.ts +0 -14
  194. package/src/components/ReCountTo/src/rebound/rebound.css +0 -77
  195. package/src/components/ReCropper/index.ts +0 -14
  196. package/src/components/ReCropper/src/index.tsx +0 -141
  197. package/src/components/ReFlicker/index.css +0 -39
  198. package/src/components/ReFlicker/index.ts +0 -50
  199. package/src/components/ReFlop/index.ts +0 -14
  200. package/src/components/ReFlop/src/Filpper.tsx +0 -99
  201. package/src/components/ReFlop/src/filpper.css +0 -184
  202. package/src/components/ReFlop/src/index.vue +0 -126
  203. package/src/components/ReFlowChart/index.ts +0 -24
  204. package/src/components/ReFlowChart/src/Control.vue +0 -139
  205. package/src/components/ReFlowChart/src/DataDialog.vue +0 -12
  206. package/src/components/ReFlowChart/src/NodePanel.vue +0 -151
  207. package/src/components/ReFlowChart/src/adpterForTurbo.ts +0 -160
  208. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.css +0 -49
  209. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.eot +0 -0
  210. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.js +0 -61
  211. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.json +0 -58
  212. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.svg +0 -47
  213. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.ttf +0 -0
  214. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff +0 -0
  215. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff2 +0 -0
  216. package/src/components/ReFlowChart/src/config.ts +0 -62
  217. package/src/components/ReSplitPane/index.css +0 -49
  218. package/src/components/ReSplitPane/index.tsx +0 -119
  219. package/src/components/ReSplitPane/resizer.css +0 -45
  220. package/src/components/ReSplitPane/resizer.tsx +0 -30
  221. package/src/components/SuCommon/card/components/Card.vue +0 -148
  222. package/src/components/SuCommon/card/components/DialogForm.vue +0 -127
  223. package/src/components/SuCommon/card/index.vue +0 -142
  224. package/src/components/SuCommon/icon-select/index.vue +0 -241
  225. package/src/components/SuCommon/table/index.vue +0 -208
  226. package/src/components/SuCommon/utils/index.ts +0 -103
  227. package/src/components/SuCommon/utils/slot.tsx +0 -50
  228. package/src/components/udp/form-upload.vue +0 -132
  229. package/src/components/udp/modal-form.vue +0 -180
  230. package/src/utils/udp/useRender.ts +0 -420
  231. package/src/views/components/contextmenu/basic.vue +0 -74
  232. package/src/views/components/contextmenu/context-menu.vue +0 -40
  233. package/src/views/components/contextmenu/menuDynamic.vue +0 -99
  234. package/src/views/components/contextmenu/menuGroup.vue +0 -71
  235. package/src/views/components/count-to/index.vue +0 -43
  236. package/src/views/components/cropping/index.vue +0 -59
  237. package/src/views/components/cropping/picture.jpeg +0 -0
  238. package/src/views/components/split-pane/index.vue +0 -82
  239. package/src/views/components/video/index.vue +0 -57
@@ -119,7 +119,7 @@ watch(
119
119
  </script>
120
120
 
121
121
  <template>
122
- <el-breadcrumb class="!leading-[50px] select-none" separator="/">
122
+ <el-breadcrumb class="!leading-[50px] select-none" separator="/" style="line-height: 50px">
123
123
  <transition-group name="breadcrumb">
124
124
  <el-breadcrumb-item v-for="item in levelList" :key="item.path" class="inline! items-stretch!">
125
125
  <a @click.prevent="handleLink(item)">
@@ -21,6 +21,10 @@ const routeStore = usePermissionStoreHook();
21
21
  const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
22
22
 
23
23
  const logo = ref(sysConfig['logo'] || utogether);
24
+ const showTitle = ref(sysConfig['showTitle']);
25
+
26
+ console.log({ showTitle });
27
+
24
28
  const {
25
29
  title,
26
30
  logout,
@@ -64,7 +68,7 @@ export default { name: 'LayoutHorizontal' };
64
68
  <div v-spinning="usePermissionStoreHook().wholeMenus.length === 0" class="horizontal-header">
65
69
  <div class="flex flex-1 horizontal-header-left" @click="backHome">
66
70
  <img :src="logo" class="h-full" />
67
- <span class="text-xl u-project-text">{{ title }}</span>
71
+ <span v-if="showTitle === 'Y'" class="text-xl u-project-text">{{ title }}</span>
68
72
  </div>
69
73
  <el-scrollbar ref="refScrollbar" class="flex-[3]" @wheel.prevent="handleScroll">
70
74
  <template #default>
@@ -88,16 +92,14 @@ export default { name: 'LayoutHorizontal' };
88
92
  </el-scrollbar>
89
93
  <div class="horizontal-header-right flex-[2]">
90
94
  <!-- 业务单元选择 -->
91
- <OrgSelect class="udp-horizontal" />
95
+ <OrgSelect v-if="sysConfig['orgTaggle'] === 'Y'" class="udp-horizontal" />
92
96
  <!-- 菜单搜索 -->
93
97
  <Search />
94
98
  <!-- 通知 -->
95
99
  <!-- <Notice id="header-notice" /> -->
96
100
  <!-- 国际化 -->
97
- <el-dropdown id="header-translation" trigger="click">
98
- <globalization
99
- class="navbar-bg-hover w-[40px] h-[48px] p-[11px] cursor-pointer outline-hidden"
100
- />
101
+ <el-dropdown id="header-translation" class="px-2" trigger="click">
102
+ <globalization class="navbar-bg-hover w-[40px] h-[48px] p-[11px] cursor-pointer outline-hidden" />
101
103
  <template #dropdown>
102
104
  <el-dropdown-menu class="translation">
103
105
  <el-dropdown-item
@@ -1,258 +1,260 @@
1
- <script setup lang="ts">
2
- import { ref, watch, toRaw, onMounted, nextTick } from 'vue';
3
- import OrgSelect from '../lay-select-org/index.vue';
4
- import Search from '../lay-search/index.vue';
5
- // import Notice from '../lay-notice/index.vue';
6
- import extraIcon from './extraIcon.vue';
7
- import avatars from '../../../assets/images/avatars.jpg';
8
- import { transformI18n } from '../../../plugins/i18n';
9
- import { useRenderIcon } from '../../../components/ReIcon/src/hooks';
10
- import { useEpThemeStoreHook } from '../../../store/modules/epTheme';
11
- import { getParentPaths, findRouteByPath } from '../../../router/utils';
12
- import { useNav } from '../../hooks/useNav';
13
- import { useTranslationLang } from '../../hooks/useTranslationLang';
14
- import { usePermissionStoreHook } from '../../../store/modules/permission';
15
- import globalization from '../../../assets/svg/globalization.svg?component';
16
-
17
- const menuRef = ref();
18
- const { route, locale, translationCh, translationEn } = useTranslationLang(menuRef);
19
-
20
- const {
21
- device,
22
- logout,
23
- onPanel,
24
- toggleSideBar,
25
- resolvePath,
26
- appHook,
27
- userInfo,
28
- getDivStyle,
29
- avatarsStyle,
30
- getDropdownItemStyle,
31
- getDropdownItemClass,
32
- passwordItems
33
- } = useNav();
34
-
35
- const refScrollbar = ref(null);
36
- const defaultActive = ref(null);
37
- const record: IRecord = {};
38
-
39
- const showModal = ref(false);
40
-
41
- function getDefaultActive(routePath) {
42
- const wholeMenus = usePermissionStoreHook().wholeMenus;
43
- // 当前路由的父级路径
44
- const parentRoutes = getParentPaths(routePath, wholeMenus)[0];
45
- defaultActive.value = findRouteByPath(parentRoutes, wholeMenus)?.children[0]?.path;
46
- }
47
-
48
- onMounted(() => {
49
- getDefaultActive(route.path);
50
- });
51
-
52
- nextTick(() => {
53
- menuRef.value?.handleResize();
54
- });
55
-
56
- watch(
57
- () => route.path,
58
- () => {
59
- getDefaultActive(route.path);
60
- }
61
- );
62
-
63
- const handleResetPwd = (): void => {
64
- record.id = userInfo['id'];
65
- showModal.value = true;
66
- };
67
-
68
- const handleScroll = e => {
69
- const wheelDelta = e.wheelDelta || -e.deltaY * 40;
70
- const scrollbar = refScrollbar.value;
71
- // scrollbar.wrap$获取到包裹容器的element对象
72
- scrollbar.setScrollLeft(scrollbar.wrapRef.scrollLeft + wheelDelta);
73
- };
74
- </script>
75
-
76
- <template>
77
- <div v-if="device !== 'mobile'" class="horizontal-header">
78
- <div
79
- :class="classes.container"
80
- :title="appHook.sidebar.opened ? $t('message.udp.collapse') : $t('message.udp.expand')"
81
- @click="toggleSideBar"
82
- >
83
- <svg
84
- :fill="useEpThemeStoreHook().fill"
85
- :class="['hamburger', appHook.sidebar.opened ? 'is-active-hamburger' : '']"
86
- viewBox="0 0 1024 1024"
87
- xmlns="http://www.w3.org/2000/svg"
88
- width="64"
89
- height="64"
90
- >
91
- <path
92
- d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"
93
- />
94
- </svg>
95
- </div>
96
-
97
- <el-scrollbar ref="refScrollbar" style="max-width: 66%" @wheel.prevent="handleScroll">
98
- <template #default>
99
- <el-menu
100
- ref="menu"
101
- :default-active="defaultActive"
102
- :ellipsis="false"
103
- class="horizontal-header-menu"
104
- mode="horizontal"
105
- router
106
- >
107
- <el-menu-item
108
- v-for="route in usePermissionStoreHook().wholeMenus"
109
- :key="route.path"
110
- :index="resolvePath(route) || route.redirect"
111
- >
112
- <template #title>
113
- <div v-if="toRaw(route.meta.icon)" :class="['sub-menu-icon', route.meta.icon]">
114
- <component :is="useRenderIcon(route.meta && toRaw(route.meta.icon))" />
115
- </div>
116
- <!-- <span class="select-none">{{ transformI18n(route.meta.title) }}</span>
117
- <FontIcon
118
- v-if="route.meta.extraIcon"
119
- width="30px"
120
- height="30px"
121
- style="position: absolute; right: 10px"
122
- :icon="route.meta.extraIcon"
123
- :svg="route.meta.extraIcon ? true : false"
124
- /> -->
125
- <div :style="getDivStyle">
126
- <span class="select-none">
127
- {{ transformI18n(route.meta.title) }}
128
- </span>
129
- <extraIcon :extra-icon="route.meta.extraIcon" />
130
- </div>
131
- </template>
132
- </el-menu-item>
133
- </el-menu>
134
- </template>
135
- </el-scrollbar>
136
- <div class="horizontal-header-right">
137
- <!-- 业务单元选择 -->
138
- <OrgSelect />
139
- <!-- 菜单搜索 -->
140
- <Search />
141
- <!-- 通知 -->
142
- <!-- <Notice id="header-notice" /> -->
143
- <!-- 国际化 -->
144
- <el-dropdown id="header-translation" trigger="click">
145
- <globalization
146
- class="navbar-bg-hover w-[40px] h-[48px] p-[11px] cursor-pointer outline-hidden"
147
- />
148
- <template #dropdown>
149
- <el-dropdown-menu class="translation">
150
- <el-dropdown-item
151
- :style="getDropdownItemStyle(locale, 'zh')"
152
- :class="['dark:text-white!', getDropdownItemClass(locale, 'zh')]"
153
- @click="translationCh"
154
- >
155
- <span v-show="locale === 'zh'" class="check-zh">
156
- <IconifyIconOffline icon="ri:check-line" />
157
- </span>
158
- 简体中文
159
- </el-dropdown-item>
160
- <el-dropdown-item
161
- :style="getDropdownItemStyle(locale, 'en')"
162
- :class="['dark:text-white!', getDropdownItemClass(locale, 'en')]"
163
- @click="translationEn"
164
- >
165
- <span v-show="locale === 'en'" class="check-en">
166
- <IconifyIconOffline icon="ri:check-line" />
167
- </span>
168
- English
169
- </el-dropdown-item>
170
- </el-dropdown-menu>
171
- </template>
172
- </el-dropdown>
173
- <!-- 退出登陆 -->
174
- <el-dropdown trigger="click">
175
- <span class="select-none el-dropdown-link navbar-bg-hover">
176
- <img v-if="avatars" :src="avatars" :style="avatarsStyle" />
177
- <p class="dark:text-white">{{ userInfo.name }}</p>
178
- </span>
179
- <template #dropdown>
180
- <el-dropdown-menu class="logout">
181
- <el-dropdown-item @click="handleResetPwd">
182
- <IconifyIconOffline icon="ri:edit-2-fill" />
183
- {{ $t('message.udp.passwordReset') }}
184
- </el-dropdown-item>
185
- <el-divider style="margin: 3px 0 !important" />
186
- <el-dropdown-item @click="logout">
187
- <IconifyIconOffline icon="switch-button" />
188
- {{ $t('message.udp.logout') }}
189
- </el-dropdown-item>
190
- </el-dropdown-menu>
191
- </template>
192
- </el-dropdown>
193
- <span class="el-icon-setting navbar-bg-hover" @click="onPanel">
194
- <IconifyIconOffline icon="ri:settings-5-fill" />
195
- </span>
196
- </div>
197
-
198
- <ut-modal-form
199
- v-if="showModal"
200
- :record="record"
201
- :items="passwordItems()"
202
- :width="360"
203
- :height="240"
204
- :title="$t('message.udp.passwordReset')"
205
- data-status="update"
206
- url="/uums/user/updatePwd"
207
- method="put"
208
- @close="showModal = false"
209
- />
210
- </div>
211
- </template>
212
-
213
- <style module="classes" scoped>
214
- .container {
215
- padding: 0 15px;
216
- }
217
- </style>
218
-
219
- <style lang="scss" scoped>
220
- .hamburger {
221
- width: 20px;
222
- height: 20px;
223
-
224
- &:hover {
225
- cursor: pointer;
226
- }
227
- }
228
-
229
- .is-active-hamburger {
230
- transform: rotate(180deg);
231
- }
232
-
233
- .translation {
234
- ::v-deep(.el-dropdown-menu__item) {
235
- padding: 5px 40px;
236
- }
237
-
238
- .check-zh {
239
- position: absolute;
240
- left: 20px;
241
- }
242
-
243
- .check-en {
244
- position: absolute;
245
- left: 20px;
246
- }
247
- }
248
-
249
- .logout {
250
- max-width: 120px;
251
-
252
- ::v-deep(.el-dropdown-menu__item) {
253
- display: inline-flex;
254
- flex-wrap: wrap;
255
- min-width: 100%;
256
- }
257
- }
258
- </style>
1
+ <script setup lang="ts">
2
+ import { ref, watch, toRaw, onMounted, nextTick } from 'vue';
3
+ import { storageLocal } from '@utogether/utils';
4
+ import OrgSelect from '../lay-select-org/index.vue';
5
+ import Search from '../lay-search/index.vue';
6
+ // import Notice from '../lay-notice/index.vue';
7
+ import extraIcon from './extraIcon.vue';
8
+ import avatars from '../../../assets/images/avatars.jpg';
9
+ import { transformI18n } from '../../../plugins/i18n';
10
+ import { useRenderIcon } from '../../../components/ReIcon/src/hooks';
11
+ import { useEpThemeStoreHook } from '../../../store/modules/epTheme';
12
+ import { getParentPaths, findRouteByPath } from '../../../router/utils';
13
+ import { useNav } from '../../hooks/useNav';
14
+ import { useTranslationLang } from '../../hooks/useTranslationLang';
15
+ import { usePermissionStoreHook } from '../../../store/modules/permission';
16
+ import globalization from '../../../assets/svg/globalization.svg?component';
17
+ import { kSYSCONFIG } from '../../../contant';
18
+
19
+ const menuRef = ref();
20
+ const { route, locale, translationCh, translationEn } = useTranslationLang(menuRef);
21
+
22
+ const {
23
+ device,
24
+ logout,
25
+ onPanel,
26
+ toggleSideBar,
27
+ resolvePath,
28
+ appHook,
29
+ userInfo,
30
+ getDivStyle,
31
+ avatarsStyle,
32
+ getDropdownItemStyle,
33
+ getDropdownItemClass,
34
+ passwordItems
35
+ } = useNav();
36
+
37
+ const refScrollbar = ref(null);
38
+ const defaultActive = ref(null);
39
+ const record: IRecord = {};
40
+
41
+ const showModal = ref(false);
42
+
43
+ const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
44
+
45
+ function getDefaultActive(routePath) {
46
+ const wholeMenus = usePermissionStoreHook().wholeMenus;
47
+ // 当前路由的父级路径
48
+ const parentRoutes = getParentPaths(routePath, wholeMenus)[0];
49
+ defaultActive.value = findRouteByPath(parentRoutes, wholeMenus)?.children[0]?.path;
50
+ }
51
+
52
+ onMounted(() => {
53
+ getDefaultActive(route.path);
54
+ });
55
+
56
+ nextTick(() => {
57
+ menuRef.value?.handleResize();
58
+ });
59
+
60
+ watch(
61
+ () => route.path,
62
+ () => {
63
+ getDefaultActive(route.path);
64
+ }
65
+ );
66
+
67
+ const handleResetPwd = (): void => {
68
+ record.id = userInfo['id'];
69
+ showModal.value = true;
70
+ };
71
+
72
+ const handleScroll = e => {
73
+ const wheelDelta = e.wheelDelta || -e.deltaY * 40;
74
+ const scrollbar = refScrollbar.value;
75
+ // scrollbar.wrap$获取到包裹容器的element对象
76
+ scrollbar.setScrollLeft(scrollbar.wrapRef.scrollLeft + wheelDelta);
77
+ };
78
+ </script>
79
+
80
+ <template>
81
+ <div v-if="device !== 'mobile'" class="horizontal-header">
82
+ <div
83
+ :class="classes.container"
84
+ :title="appHook.sidebar.opened ? $t('message.udp.collapse') : $t('message.udp.expand')"
85
+ @click="toggleSideBar"
86
+ >
87
+ <svg
88
+ :fill="useEpThemeStoreHook().fill"
89
+ :class="['hamburger', appHook.sidebar.opened ? 'is-active-hamburger' : '']"
90
+ viewBox="0 0 1024 1024"
91
+ xmlns="http://www.w3.org/2000/svg"
92
+ width="64"
93
+ height="64"
94
+ >
95
+ <path
96
+ d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"
97
+ />
98
+ </svg>
99
+ </div>
100
+
101
+ <el-scrollbar ref="refScrollbar" style="max-width: 66%" @wheel.prevent="handleScroll">
102
+ <template #default>
103
+ <el-menu
104
+ ref="menu"
105
+ :default-active="defaultActive"
106
+ :ellipsis="false"
107
+ class="horizontal-header-menu"
108
+ mode="horizontal"
109
+ router
110
+ >
111
+ <el-menu-item
112
+ v-for="route in usePermissionStoreHook().wholeMenus"
113
+ :key="route.path"
114
+ :index="resolvePath(route) || route.redirect"
115
+ >
116
+ <template #title>
117
+ <div v-if="toRaw(route.meta.icon)" :class="['sub-menu-icon', route.meta.icon]">
118
+ <component :is="useRenderIcon(route.meta && toRaw(route.meta.icon))" />
119
+ </div>
120
+ <!-- <span class="select-none">{{ transformI18n(route.meta.title) }}</span>
121
+ <FontIcon
122
+ v-if="route.meta.extraIcon"
123
+ width="30px"
124
+ height="30px"
125
+ style="position: absolute; right: 10px"
126
+ :icon="route.meta.extraIcon"
127
+ :svg="route.meta.extraIcon ? true : false"
128
+ /> -->
129
+ <div :style="getDivStyle">
130
+ <span class="select-none">
131
+ {{ transformI18n(route.meta.title) }}
132
+ </span>
133
+ <extraIcon :extra-icon="route.meta.extraIcon" />
134
+ </div>
135
+ </template>
136
+ </el-menu-item>
137
+ </el-menu>
138
+ </template>
139
+ </el-scrollbar>
140
+ <div class="horizontal-header-right">
141
+ <!-- 业务单元选择 -->
142
+ <OrgSelect v-if="sysConfig['orgTaggle'] === 'Y'" />
143
+ <!-- 菜单搜索 -->
144
+ <Search />
145
+ <!-- 通知 -->
146
+ <!-- <Notice id="header-notice" /> -->
147
+ <!-- 国际化 -->
148
+ <el-dropdown id="header-translation" trigger="click">
149
+ <globalization class="navbar-bg-hover w-[40px] h-[48px] p-[11px] cursor-pointer outline-hidden" />
150
+ <template #dropdown>
151
+ <el-dropdown-menu class="translation">
152
+ <el-dropdown-item
153
+ :style="getDropdownItemStyle(locale, 'zh')"
154
+ :class="['dark:text-white!', getDropdownItemClass(locale, 'zh')]"
155
+ @click="translationCh"
156
+ >
157
+ <span v-show="locale === 'zh'" class="check-zh">
158
+ <IconifyIconOffline icon="ri:check-line" />
159
+ </span>
160
+ 简体中文
161
+ </el-dropdown-item>
162
+ <el-dropdown-item
163
+ :style="getDropdownItemStyle(locale, 'en')"
164
+ :class="['dark:text-white!', getDropdownItemClass(locale, 'en')]"
165
+ @click="translationEn"
166
+ >
167
+ <span v-show="locale === 'en'" class="check-en">
168
+ <IconifyIconOffline icon="ri:check-line" />
169
+ </span>
170
+ English
171
+ </el-dropdown-item>
172
+ </el-dropdown-menu>
173
+ </template>
174
+ </el-dropdown>
175
+ <!-- 退出登陆 -->
176
+ <el-dropdown trigger="click">
177
+ <span class="select-none el-dropdown-link navbar-bg-hover">
178
+ <img v-if="avatars" :src="avatars" :style="avatarsStyle" />
179
+ <p class="dark:text-white">{{ userInfo.name }}</p>
180
+ </span>
181
+ <template #dropdown>
182
+ <el-dropdown-menu class="logout">
183
+ <el-dropdown-item @click="handleResetPwd">
184
+ <IconifyIconOffline icon="ri:edit-2-fill" />
185
+ {{ $t('message.udp.passwordReset') }}
186
+ </el-dropdown-item>
187
+ <el-divider style="margin: 3px 0 !important" />
188
+ <el-dropdown-item @click="logout">
189
+ <IconifyIconOffline icon="switch-button" />
190
+ {{ $t('message.udp.logout') }}
191
+ </el-dropdown-item>
192
+ </el-dropdown-menu>
193
+ </template>
194
+ </el-dropdown>
195
+ <span class="el-icon-setting navbar-bg-hover" @click="onPanel">
196
+ <IconifyIconOffline icon="ri:settings-5-fill" />
197
+ </span>
198
+ </div>
199
+
200
+ <ut-modal-form
201
+ v-if="showModal"
202
+ :record="record"
203
+ :items="passwordItems()"
204
+ :width="360"
205
+ :height="240"
206
+ :title="$t('message.udp.passwordReset')"
207
+ data-status="update"
208
+ url="/uums/user/updatePwd"
209
+ method="put"
210
+ @close="showModal = false"
211
+ />
212
+ </div>
213
+ </template>
214
+
215
+ <style module="classes" scoped>
216
+ .container {
217
+ padding: 0 15px;
218
+ }
219
+ </style>
220
+
221
+ <style lang="scss" scoped>
222
+ .hamburger {
223
+ width: 20px;
224
+ height: 20px;
225
+
226
+ &:hover {
227
+ cursor: pointer;
228
+ }
229
+ }
230
+
231
+ .is-active-hamburger {
232
+ transform: rotate(180deg);
233
+ }
234
+
235
+ .translation {
236
+ ::v-deep(.el-dropdown-menu__item) {
237
+ padding: 5px 40px;
238
+ }
239
+
240
+ .check-zh {
241
+ position: absolute;
242
+ left: 20px;
243
+ }
244
+
245
+ .check-en {
246
+ position: absolute;
247
+ left: 20px;
248
+ }
249
+ }
250
+
251
+ .logout {
252
+ max-width: 120px;
253
+
254
+ ::v-deep(.el-dropdown-menu__item) {
255
+ display: inline-flex;
256
+ flex-wrap: wrap;
257
+ min-width: 100%;
258
+ }
259
+ }
260
+ </style>