@gx-design-vue/create-gx-cli 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. package/package.json +1 -1
  2. package/src/cli.js +1 -1
  3. package/src/main.js +4 -0
  4. package/template-design-pro/.editorconfig +0 -19
  5. package/template-design-pro/.env +0 -2
  6. package/template-design-pro/.env.development +0 -18
  7. package/template-design-pro/.env.pro +0 -32
  8. package/template-design-pro/.env.production +0 -32
  9. package/template-design-pro/.env.test +0 -20
  10. package/template-design-pro/.eslintignore +0 -16
  11. package/template-design-pro/.eslintrc.js +0 -64
  12. package/template-design-pro/.gitpod.yml +0 -6
  13. package/template-design-pro/.husky/pre-commit +0 -4
  14. package/template-design-pro/.prettierignore +0 -9
  15. package/template-design-pro/.stylelintignore +0 -3
  16. package/template-design-pro/.yarnclean +0 -48
  17. package/template-design-pro/LICENSE +0 -21
  18. package/template-design-pro/README.md +0 -111
  19. package/template-design-pro/build/constant.ts +0 -6
  20. package/template-design-pro/build/generate/generateModifyVars.ts +0 -18
  21. package/template-design-pro/build/getConfigFileName.ts +0 -13
  22. package/template-design-pro/build/script/buildConf.ts +0 -44
  23. package/template-design-pro/build/script/postBuild.ts +0 -25
  24. package/template-design-pro/build/script/reSetRootHtml.ts +0 -20
  25. package/template-design-pro/build/utils.ts +0 -85
  26. package/template-design-pro/build/vite/cdn.ts +0 -7
  27. package/template-design-pro/build/vite/optimizer.ts +0 -22
  28. package/template-design-pro/build/vite/plugin/autoImport.ts +0 -18
  29. package/template-design-pro/build/vite/plugin/compress.ts +0 -35
  30. package/template-design-pro/build/vite/plugin/hmr.ts +0 -25
  31. package/template-design-pro/build/vite/plugin/html.ts +0 -47
  32. package/template-design-pro/build/vite/plugin/index.ts +0 -89
  33. package/template-design-pro/build/vite/plugin/mock.ts +0 -20
  34. package/template-design-pro/build/vite/plugin/pwa.ts +0 -37
  35. package/template-design-pro/build/vite/plugin/styleImport.ts +0 -129
  36. package/template-design-pro/build/vite/plugin/visualizer.ts +0 -17
  37. package/template-design-pro/build/vite/plugin/vite-plugin-antd-theme/index.ts +0 -24
  38. package/template-design-pro/build/vite/plugin/vite-plugin-mock/createMockServer.ts +0 -303
  39. package/template-design-pro/build/vite/plugin/vite-plugin-mock/createProdMockServer.ts +0 -93
  40. package/template-design-pro/build/vite/plugin/vite-plugin-mock/index.ts +0 -68
  41. package/template-design-pro/build/vite/plugin/vite-plugin-mock/types.ts +0 -30
  42. package/template-design-pro/build/vite/plugin/vite-plugin-mock/utils.ts +0 -26
  43. package/template-design-pro/commitlint.config.js +0 -32
  44. package/template-design-pro/config/config.ts +0 -14
  45. package/template-design-pro/config/default/animate.ts +0 -30
  46. package/template-design-pro/config/default/defaultSettings.ts +0 -75
  47. package/template-design-pro/config/default/network.ts +0 -16
  48. package/template-design-pro/config/default/proxy.ts +0 -26
  49. package/template-design-pro/config/default/theme.ts +0 -43
  50. package/template-design-pro/config/default/themeColor.ts +0 -62
  51. package/template-design-pro/index.html +0 -45
  52. package/template-design-pro/jest.config.mjs +0 -36
  53. package/template-design-pro/mock/_createProductionServer.ts +0 -19
  54. package/template-design-pro/mock/_util.ts +0 -55
  55. package/template-design-pro/mock/controller/menu.ts +0 -85
  56. package/template-design-pro/mock/controller/notices.ts +0 -114
  57. package/template-design-pro/mock/system/dict.ts +0 -60
  58. package/template-design-pro/mock/system/user.ts +0 -218
  59. package/template-design-pro/package.json +0 -151
  60. package/template-design-pro/pnpm-lock.yaml +0 -9913
  61. package/template-design-pro/postcss.config.js +0 -5
  62. package/template-design-pro/prettier.config.js +0 -18
  63. package/template-design-pro/public/resource/css/index.css +0 -171
  64. package/template-design-pro/public/resource/img/favicon.ico +0 -0
  65. package/template-design-pro/public/resource/img/logo.png +0 -0
  66. package/template-design-pro/public/resource/img/pro_icon.svg +0 -5
  67. package/template-design-pro/public/resource/img/pwa-192x192.png +0 -0
  68. package/template-design-pro/public/resource/img/pwa-512x512.png +0 -0
  69. package/template-design-pro/src/App.vue +0 -47
  70. package/template-design-pro/src/assets/error_images/403.png +0 -0
  71. package/template-design-pro/src/assets/error_images/404.png +0 -0
  72. package/template-design-pro/src/assets/error_images/cloud.png +0 -0
  73. package/template-design-pro/src/assets/login_images/login_background.svg +0 -69
  74. package/template-design-pro/src/assets/logo.png +0 -0
  75. package/template-design-pro/src/assets/menu_font/iconfont.css +0 -94
  76. package/template-design-pro/src/assets/menu_font/iconfont.eot +0 -0
  77. package/template-design-pro/src/assets/menu_font/iconfont.js +0 -1
  78. package/template-design-pro/src/assets/menu_font/iconfont.json +0 -142
  79. package/template-design-pro/src/assets/menu_font/iconfont.svg +0 -57
  80. package/template-design-pro/src/assets/menu_font/iconfont.ttf +0 -0
  81. package/template-design-pro/src/assets/menu_font/iconfont.woff +0 -0
  82. package/template-design-pro/src/assets/menu_font/iconfont.woff2 +0 -0
  83. package/template-design-pro/src/assets/menu_font/index.less +0 -94
  84. package/template-design-pro/src/common/global.ts +0 -1
  85. package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.less +0 -80
  86. package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.tsx +0 -342
  87. package/template-design-pro/src/components/GDesign/ProLayout/PageLoading.tsx +0 -20
  88. package/template-design-pro/src/components/GDesign/ProLayout/RenderTypings.ts +0 -31
  89. package/template-design-pro/src/components/GDesign/ProLayout/RouteContext.tsx +0 -82
  90. package/template-design-pro/src/components/GDesign/ProLayout/WrapContent.tsx +0 -69
  91. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalFooter/index.tsx +0 -88
  92. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/DefaultHeader.tsx +0 -189
  93. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/Header.less +0 -8
  94. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/index.tsx +0 -105
  95. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/props.ts +0 -69
  96. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/style.less +0 -144
  97. package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/index.tsx +0 -81
  98. package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/props.ts +0 -29
  99. package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/index.tsx +0 -384
  100. package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/props.ts +0 -15
  101. package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/style.less +0 -79
  102. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeIcon.tsx +0 -148
  103. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.module.less +0 -115
  104. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.tsx +0 -154
  105. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.less +0 -39
  106. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.tsx +0 -133
  107. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/index.tsx +0 -190
  108. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/props.ts +0 -48
  109. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/style.less +0 -128
  110. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/typings.ts +0 -0
  111. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/AvatarDropdown.tsx +0 -63
  112. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/HeaderSearch.tsx +0 -122
  113. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/headerSearch.less +0 -30
  114. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/index.tsx +0 -95
  115. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/style.less +0 -90
  116. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/BlockCheckbox.tsx +0 -70
  117. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/LayoutSetting.tsx +0 -107
  118. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/ThemeColor.tsx +0 -68
  119. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/index.tsx +0 -346
  120. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/BaseMenu.tsx +0 -224
  121. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/SiderMenu.tsx +0 -224
  122. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/index.tsx +0 -43
  123. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/props.ts +0 -112
  124. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/style.less +0 -262
  125. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/typings.ts +0 -44
  126. package/template-design-pro/src/components/GDesign/ProLayout/default.less +0 -2
  127. package/template-design-pro/src/components/GDesign/ProLayout/defaultSettings.ts +0 -121
  128. package/template-design-pro/src/components/GDesign/ProLayout/hooks/context/index.ts +0 -45
  129. package/template-design-pro/src/components/GDesign/ProLayout/index.ts +0 -43
  130. package/template-design-pro/src/components/GDesign/ProLayout/props.ts +0 -57
  131. package/template-design-pro/src/components/GDesign/ProLayout/style.less +0 -272
  132. package/template-design-pro/src/components/GDesign/ProLayout/typings.ts +0 -1
  133. package/template-design-pro/src/components/GDesign/ProLayout/utils/getMenuData.ts +0 -31
  134. package/template-design-pro/src/components/GDesign/ProLayout/utils/index.ts +0 -94
  135. package/template-design-pro/src/components/GDesign/ProLayout/utils/isImg/index.ts +0 -6
  136. package/template-design-pro/src/components/GDesign/ProLayout/utils/isUrl/index.ts +0 -5
  137. package/template-design-pro/src/components/GDesign/Result/index.tsx +0 -142
  138. package/template-design-pro/src/components/GDesign/Result/style.less +0 -140
  139. package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/index.tsx +0 -56
  140. package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/props.ts +0 -23
  141. package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/index.tsx +0 -164
  142. package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/props.ts +0 -11
  143. package/template-design-pro/src/components/GDesign/Scrollbars/context.ts +0 -10
  144. package/template-design-pro/src/components/GDesign/Scrollbars/index.tsx +0 -200
  145. package/template-design-pro/src/components/GDesign/Scrollbars/props.ts +0 -65
  146. package/template-design-pro/src/components/GDesign/Scrollbars/style.less +0 -85
  147. package/template-design-pro/src/components/GDesign/Scrollbars/util.ts +0 -40
  148. package/template-design-pro/src/components/GDesign/utils/index.ts +0 -7
  149. package/template-design-pro/src/components/PageLoading/index.tsx +0 -44
  150. package/template-design-pro/src/components/PageTransition/index.vue +0 -98
  151. package/template-design-pro/src/components/index.ts +0 -6
  152. package/template-design-pro/src/core/ant-design/index.ts +0 -14
  153. package/template-design-pro/src/core/gx-admin-design/index.ts +0 -7
  154. package/template-design-pro/src/core/gx-admin-directives/index.ts +0 -8
  155. package/template-design-pro/src/core/gx-admin-directives/permission.ts +0 -28
  156. package/template-design-pro/src/core/gx-design/index.ts +0 -7
  157. package/template-design-pro/src/core/gx-pro-design/index.ts +0 -10
  158. package/template-design-pro/src/core/index.ts +0 -27
  159. package/template-design-pro/src/design/ant-design/index.less +0 -4
  160. package/template-design-pro/src/design/ant-design/layout.less +0 -29
  161. package/template-design-pro/src/design/ant-design/menu.less +0 -55
  162. package/template-design-pro/src/design/ant-design/table.less +0 -67
  163. package/template-design-pro/src/design/ant-design/tooltip.less +0 -13
  164. package/template-design-pro/src/design/color.less +0 -1
  165. package/template-design-pro/src/design/config.less +0 -5
  166. package/template-design-pro/src/design/index.less +0 -41
  167. package/template-design-pro/src/design/mixin.less +0 -66
  168. package/template-design-pro/src/design/normalize.less +0 -390
  169. package/template-design-pro/src/global.less +0 -15
  170. package/template-design-pro/src/hooks/core/index.ts +0 -3
  171. package/template-design-pro/src/hooks/core/useRequest/index.ts +0 -70
  172. package/template-design-pro/src/hooks/core/useRequest/typings.ts +0 -0
  173. package/template-design-pro/src/hooks/event/index.ts +0 -3
  174. package/template-design-pro/src/hooks/event/useClipboard.ts +0 -14
  175. package/template-design-pro/src/hooks/system/index.ts +0 -5
  176. package/template-design-pro/src/hooks/system/useDict.ts +0 -62
  177. package/template-design-pro/src/hooks/system/usePermissions.ts +0 -39
  178. package/template-design-pro/src/hooks/typings.ts +0 -17
  179. package/template-design-pro/src/layout/BasicLayout.vue +0 -104
  180. package/template-design-pro/src/layout/BlankLayout.vue +0 -5
  181. package/template-design-pro/src/layout/ContentView.vue +0 -76
  182. package/template-design-pro/src/layout/IframeView.vue +0 -1
  183. package/template-design-pro/src/layout/UserLayout.vue +0 -7
  184. package/template-design-pro/src/main.ts +0 -34
  185. package/template-design-pro/src/plugins/index.ts +0 -3
  186. package/template-design-pro/src/router/guard/index.ts +0 -84
  187. package/template-design-pro/src/router/guard/permissions.ts +0 -73
  188. package/template-design-pro/src/router/guard/stateGuard.ts +0 -11
  189. package/template-design-pro/src/router/helper/routeHelper.ts +0 -244
  190. package/template-design-pro/src/router/helper/utils.ts +0 -19
  191. package/template-design-pro/src/router/index.ts +0 -30
  192. package/template-design-pro/src/router/routes/index.ts +0 -85
  193. package/template-design-pro/src/router/routes/modules/workplace.ts +0 -19
  194. package/template-design-pro/src/services/common/index.ts +0 -11
  195. package/template-design-pro/src/services/controller/router.ts +0 -10
  196. package/template-design-pro/src/services/controller/user.ts +0 -35
  197. package/template-design-pro/src/services/system/dictData.ts +0 -10
  198. package/template-design-pro/src/services/system/notices.ts +0 -9
  199. package/template-design-pro/src/store/index.ts +0 -32
  200. package/template-design-pro/src/store/modules/dict.ts +0 -27
  201. package/template-design-pro/src/store/modules/permission.ts +0 -19
  202. package/template-design-pro/src/store/modules/routes.ts +0 -110
  203. package/template-design-pro/src/store/modules/settings.ts +0 -102
  204. package/template-design-pro/src/store/modules/tabsRouter.ts +0 -73
  205. package/template-design-pro/src/store/modules/user.ts +0 -153
  206. package/template-design-pro/src/utils/accessToken.ts +0 -93
  207. package/template-design-pro/src/utils/crypto.ts +0 -39
  208. package/template-design-pro/src/utils/env.ts +0 -52
  209. package/template-design-pro/src/utils/fetchFile.ts +0 -79
  210. package/template-design-pro/src/utils/index.ts +0 -127
  211. package/template-design-pro/src/utils/pageTitle.ts +0 -17
  212. package/template-design-pro/src/utils/request/XHR.ts +0 -131
  213. package/template-design-pro/src/utils/request/axiosCancel.ts +0 -60
  214. package/template-design-pro/src/utils/request/checkStatus.ts +0 -26
  215. package/template-design-pro/src/utils/request/index.ts +0 -145
  216. package/template-design-pro/src/utils/request/typings.ts +0 -114
  217. package/template-design-pro/src/utils/storage.ts +0 -194
  218. package/template-design-pro/src/utils/uploadFile.ts +0 -26
  219. package/template-design-pro/src/utils/util.ts +0 -278
  220. package/template-design-pro/src/utils/validate.ts +0 -221
  221. package/template-design-pro/src/views/Iframe/index.vue +0 -76
  222. package/template-design-pro/src/views/MenuOne/index.vue +0 -15
  223. package/template-design-pro/src/views/MenuTwo/index.vue +0 -13
  224. package/template-design-pro/src/views/exception/403/index.vue +0 -9
  225. package/template-design-pro/src/views/exception/404/index.vue +0 -9
  226. package/template-design-pro/src/views/user/login/index.vue +0 -110
  227. package/template-design-pro/src/views/user/login/style.less +0 -38
  228. package/template-design-pro/stylelint.config.js +0 -106
  229. package/template-design-pro/tests/__mocks__/fileMock.ts +0 -1
  230. package/template-design-pro/tests/__mocks__/styleMock.ts +0 -1
  231. package/template-design-pro/tests/__mocks__/workerMock.ts +0 -5
  232. package/template-design-pro/tests/server/README.md +0 -15
  233. package/template-design-pro/tests/server/controller/FileController.ts +0 -18
  234. package/template-design-pro/tests/server/controller/UserController.ts +0 -15
  235. package/template-design-pro/tests/server/ecosystem.config.js +0 -18
  236. package/template-design-pro/tests/server/index.ts +0 -63
  237. package/template-design-pro/tests/server/nodemon.json +0 -8
  238. package/template-design-pro/tests/server/package.json +0 -36
  239. package/template-design-pro/tests/server/routes.ts +0 -23
  240. package/template-design-pro/tests/server/service/FileService.ts +0 -54
  241. package/template-design-pro/tests/server/service/UserService.ts +0 -25
  242. package/template-design-pro/tests/server/tsconfig.json +0 -15
  243. package/template-design-pro/tests/server/utils.ts +0 -9
  244. package/template-design-pro/tests/server/yarn.lock +0 -2955
  245. package/template-design-pro/tests/test.spec.ts +0 -16
  246. package/template-design-pro/tsconfig.json +0 -47
  247. package/template-design-pro/types/auto-imports.d.ts +0 -61
  248. package/template-design-pro/types/config.d.ts +0 -100
  249. package/template-design-pro/types/global.d.ts +0 -103
  250. package/template-design-pro/types/gx-components.d.ts +0 -24
  251. package/template-design-pro/types/index.d.ts +0 -13
  252. package/template-design-pro/types/mock.d.ts +0 -23
  253. package/template-design-pro/types/module.d.ts +0 -16
  254. package/template-design-pro/types/response.d.ts +0 -15
  255. package/template-design-pro/types/route.d.ts +0 -89
  256. package/template-design-pro/vite.config.ts +0 -136
  257. package/template-design-pro/yarn.lock +0 -9697
@@ -1,79 +0,0 @@
1
- @import '../../default.less';
2
-
3
- @pro-layout-multi-tab-prefix-cls: ~'@{gx-prefix-pro}-multi-tab';
4
-
5
- .@{pro-layout-multi-tab-prefix-cls} {
6
- .ant-tabs {
7
- margin: 0;
8
- width: 100%;
9
- padding-bottom: 6px;
10
- background: @white;
11
-
12
- .ant-tabs-nav {
13
- padding-left: 16px;
14
- margin: 0;
15
- }
16
- }
17
-
18
- .ant-tabs-bar {
19
- padding-left: 16px;
20
- margin: 0;
21
- }
22
-
23
- &-wrap {
24
- background-color: @white;
25
-
26
- &-fixed {
27
- position: fixed;
28
- top: 48px;
29
- right: 0;
30
- z-index: 9;
31
- width: 100%;
32
- height: 62px;
33
- transition: width 0.2s;
34
- }
35
-
36
- &-loading {
37
- height: 48px;
38
- }
39
- }
40
-
41
- &-fixed {
42
- width: 100%;
43
- height: 62px;
44
- background: transparent;
45
-
46
- &-loading {
47
- height: 48px;
48
- }
49
- }
50
-
51
- &-dropdown-menu-btn {
52
- padding: 12px;
53
- margin-right: 8px;
54
- font-size: 16px;
55
- cursor: pointer;
56
- }
57
-
58
- &-content {
59
- display: flex;
60
- align-items: center;
61
- }
62
-
63
- &-reload-btn {
64
- margin-right: 0;
65
- margin-left: 8px;
66
- font-size: 12px;
67
- color: rgba(0, 0, 0, 0.45);
68
-
69
- &:hover {
70
- color: var(--ant-primary-color);
71
- }
72
- }
73
-
74
- &-close-btn {
75
- margin-left: 8px;
76
- font-size: 12px;
77
- color: rgba(0, 0, 0, 0.45);
78
- }
79
- }
@@ -1,148 +0,0 @@
1
- import type { CSSProperties, ExtractPropTypes } from 'vue'
2
- import { computed, defineComponent, ref } from 'vue'
3
- import { Tabs, Badge, Dropdown, Spin } from 'ant-design-vue'
4
- import { BellOutlined } from '@ant-design/icons-vue'
5
- import { getPrefixCls } from '@gx-design-vue/pro-utils'
6
- import { PropTypes } from '@/utils'
7
- import NoticeList, { NoticeIconItem, NoticeIconTabProps } from './NoticeList'
8
-
9
- import './index.less'
10
-
11
- const TabPane = Tabs.TabPane
12
-
13
- export const noticeIconProps = {
14
- class: PropTypes.string,
15
- count: PropTypes.number,
16
- loading: PropTypes.looseBool,
17
- onClear: Function as PropType<(tabName: string, tabKey: string) => void>,
18
- onItemClick: Function as PropType<(item: NoticeIconItem, tabProps: NoticeIconTabProps) => void>,
19
- onViewMore: Function as PropType<(tabProps: NoticeIconTabProps, e: MouseEvent) => void>,
20
- onTabChange: Function as PropType<(tabTile: string) => void>,
21
- style: {
22
- type: Object as PropType<CSSProperties>,
23
- default: () => undefined
24
- },
25
- onPopupVisibleChange: Function as PropType<(visible: boolean) => void>,
26
- popupVisible: PropTypes.looseBool,
27
- clearText: PropTypes.string,
28
- viewMoreText: PropTypes.string,
29
- clearClose: PropTypes.looseBool,
30
- emptyImage: PropTypes.string
31
- }
32
-
33
- export type NoticeIconProps = Partial<ExtractPropTypes<typeof noticeIconProps>>
34
-
35
- const NoticeIcon = defineComponent({
36
- props: noticeIconProps,
37
- Tab: NoticeList,
38
- emits: ['onClear', 'onTabChange', 'onItemClick', 'onViewMore', 'onPopupVisibleChange'],
39
- setup(props, { emit, slots }) {
40
- const prefixCls = getPrefixCls({
41
- suffixCls: 'notice',
42
- isPor: true
43
- })
44
-
45
- const visible = ref(props.popupVisible || false)
46
-
47
- const activeKey = ref('notification')
48
-
49
- const getChildrenSlots: any = computed(() =>
50
- slots.default?.().length === 1 &&
51
- (String(slots.default?.()[0].type) === String(Symbol('Fragment')) ||
52
- String(slots.default?.()[0].type) === String(Symbol()))
53
- ? slots.default?.()[0].children || []
54
- : slots.default?.() || []
55
- )
56
-
57
- const onChange = (value: boolean) => {
58
- visible.value = value
59
- emit('onPopupVisibleChange', value)
60
- }
61
-
62
- const onTabChange = (key) => {
63
- activeKey.value = key
64
- props.onTabChange && props.onTabChange(key)
65
- }
66
-
67
- const NoticeBellIcon = <BellOutlined class={`${prefixCls}-icon`} />
68
-
69
- const trigger = computed(() => (
70
- <span
71
- class={{
72
- [`${prefixCls}-button`]: true,
73
- [`${props.class}`]: props.class,
74
- [`opened`]: visible.value
75
- }}
76
- onClick={() => onChange(true)}
77
- >
78
- <Badge count={props.count} style={{ boxShadow: 'none' }} class={`${prefixCls}-badge`}>
79
- {NoticeBellIcon}
80
- </Badge>
81
- </span>
82
- ))
83
-
84
- const notificationBoxRender = () => {
85
- const { loading, onClear, onItemClick, onViewMore, clearText, viewMoreText } = props
86
-
87
- return (
88
- <Spin spinning={loading} delay={300}>
89
- <Tabs class={`${prefixCls}-tabs`} activeKey={activeKey.value} onChange={onTabChange}>
90
- {getChildrenSlots.value.map((item: any) => {
91
- if (!item) {
92
- return null
93
- }
94
-
95
- const { list, title, count, tabKey, showClear, showViewMore, emptyText } = item.props
96
- const len = list && list.length ? list.length : 0
97
- const msgCount = count || count === 0 ? count : len
98
- const tabTitle: string = msgCount > 0 ? `${title} (${msgCount})` : title
99
- return (
100
- <TabPane tab={tabTitle} key={tabKey}>
101
- <NoticeList
102
- clearText={clearText}
103
- viewMoreText={viewMoreText}
104
- list={list}
105
- tabKey={tabKey}
106
- onClear={(): void => onClear && onClear(title, tabKey)}
107
- onClick={(el): void => onItemClick && onItemClick(el, item.props)}
108
- onViewMore={(event): void => onViewMore && onViewMore(item.props, event)}
109
- emptyText={emptyText}
110
- showClear={showClear}
111
- showViewMore={showViewMore}
112
- title={title}
113
- />
114
- </TabPane>
115
- )
116
- })}
117
- </Tabs>
118
- </Spin>
119
- )
120
- }
121
-
122
- return () => {
123
- return (
124
- <>
125
- {getChildrenSlots.value.length > 0 ? (
126
- <Dropdown
127
- placement="bottomRight"
128
- trigger={['click']}
129
- overlay={notificationBoxRender()}
130
- overlayClassName={`gx-pro-dropdown-container ${prefixCls}-popover`}
131
- onVisibleChange={() => onChange}
132
- >
133
- {trigger.value}
134
- </Dropdown>
135
- ) : (
136
- trigger.value
137
- )}
138
- </>
139
- )
140
- }
141
- }
142
- })
143
-
144
- NoticeIcon.defaultProps = {
145
- emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg'
146
- }
147
-
148
- export default NoticeIcon
@@ -1,115 +0,0 @@
1
- .list {
2
- max-height: 400px;
3
- overflow: auto;
4
-
5
- &::-webkit-scrollbar {
6
- display: none;
7
- }
8
-
9
- .item {
10
- padding-right: 24px;
11
- padding-left: 24px;
12
- overflow: hidden;
13
- cursor: pointer;
14
- transition: all 0.3s;
15
-
16
- .meta {
17
- width: 100%;
18
- }
19
-
20
- .avatar {
21
- margin-top: 4px;
22
- background: @component-background;
23
- }
24
-
25
- .iconElement {
26
- font-size: 32px;
27
- }
28
-
29
- &.read {
30
- opacity: 0.4;
31
- }
32
-
33
- &:last-child {
34
- border-bottom: 0;
35
- }
36
-
37
- &:hover {
38
- background: @primary-1;
39
- }
40
-
41
- .title {
42
- margin-bottom: 8px;
43
- font-weight: normal;
44
- }
45
-
46
- .description {
47
- font-size: 12px;
48
- line-height: @line-height-base;
49
- }
50
-
51
- .datetime {
52
- margin-top: 4px;
53
- font-size: 12px;
54
- line-height: @line-height-base;
55
- }
56
-
57
- .extra {
58
- float: right;
59
- margin-top: -1.5px;
60
- margin-right: 0;
61
- font-weight: normal;
62
- color: @text-color-secondary;
63
- }
64
- }
65
-
66
- .loadMore {
67
- padding: 8px 0;
68
- color: @primary-6;
69
- text-align: center;
70
- cursor: pointer;
71
-
72
- &.loadedAll {
73
- color: rgba(0, 0, 0, 0.25);
74
- cursor: unset;
75
- }
76
- }
77
- }
78
-
79
- .notFound {
80
- padding: 73px 0 88px;
81
- color: @text-color-secondary;
82
- text-align: center;
83
-
84
- img {
85
- display: inline-block;
86
- height: 76px;
87
- margin-bottom: 16px;
88
- }
89
- }
90
-
91
- .bottomBar {
92
- height: 46px;
93
- line-height: 46px;
94
- color: @text-color;
95
- text-align: center;
96
- border-top: 1px solid @border-color-split;
97
- border-radius: 0 0 @border-radius-base @border-radius-base;
98
- transition: all 0.3s;
99
-
100
- div {
101
- display: inline-block;
102
- width: 50%;
103
- cursor: pointer;
104
- user-select: none;
105
- transition: all 0.3s;
106
-
107
- &:only-child {
108
- width: 100%;
109
- }
110
-
111
- &:not(:only-child):last-child {
112
- border-left: 1px solid @border-color-split;
113
- }
114
- }
115
- }
@@ -1,154 +0,0 @@
1
- import type { FunctionalComponent as FC, CSSProperties } from 'vue'
2
- import { Tag, List, Avatar } from 'ant-design-vue'
3
-
4
- import styles from './NoticeList.module.less'
5
-
6
- export type NoticeIconItemType = 'notification' | 'message' | 'event'
7
-
8
- export type NoticeIconItem = {
9
- props?: any
10
- id?: string
11
- extra?: string
12
- key?: string
13
- read?: boolean
14
- avatar?: string
15
- title?: string
16
- status?: string
17
- datetime?: string
18
- description?: string
19
- type?: NoticeIconItemType
20
- }
21
-
22
- export type NoticeIconTabProps = {
23
- count?: number
24
- showClear?: boolean
25
- showViewMore?: boolean
26
- style?: CSSProperties
27
- title: string
28
- tabKey: NoticeIconItemType
29
- onClick?: (item: NoticeIconItem) => void
30
- onClear?: () => void
31
- emptyText?: string
32
- clearText?: string
33
- viewMoreText?: string
34
- list: NoticeIconItem[]
35
- onViewMore?: (e: any) => void
36
- }
37
-
38
- const NoticeListExtra = (extra, status) => {
39
- const color = {
40
- todo: '',
41
- processing: 'blue',
42
- urgent: 'red',
43
- doing: 'gold'
44
- }[status]
45
-
46
- return (
47
- extra && (
48
- <Tag
49
- color={color}
50
- style={{
51
- marginRight: 0
52
- }}
53
- >
54
- {extra}
55
- </Tag>
56
- )
57
- )
58
- }
59
-
60
- const NoticeList: FC<NoticeIconTabProps> = ({
61
- list = [],
62
- onClick,
63
- onClear,
64
- title,
65
- onViewMore,
66
- emptyText,
67
- showClear = true,
68
- clearText,
69
- viewMoreText,
70
- showViewMore = false
71
- }) => {
72
- if (!list || list.length === 0) {
73
- return (
74
- <div class={styles['notFound']}>
75
- <img
76
- src="https://gw.alipayobjects.com/zos/rmsportal/sAuJeJzSKbUmHfBQRzmZ.svg"
77
- alt="not found"
78
- />
79
- <div>{emptyText}</div>
80
- </div>
81
- )
82
- }
83
-
84
- return (
85
- <div>
86
- <List
87
- class={styles['list']}
88
- dataSource={list}
89
- renderItem={({ item, index }) => {
90
- const itemCls = {
91
- [`${styles['item']}`]: true,
92
- [`${styles['read']}`]: item.read
93
- }
94
- const leftIcon = item.avatar ? (
95
- typeof item.avatar === 'string' ? (
96
- <Avatar class={styles['avatar']} src={item.avatar} />
97
- ) : (
98
- <span class={styles['iconElement']}>{item.avatar}</span>
99
- )
100
- ) : null
101
-
102
- return (
103
- <List.Item
104
- class={itemCls}
105
- key={item.key || index}
106
- onClick={() => {
107
- onClick?.(item)
108
- }}
109
- >
110
- <List.Item.Meta
111
- class={styles['meta']}
112
- avatar={leftIcon}
113
- title={
114
- <div class={styles['title']}>
115
- {item.title}
116
- {item.extra && (
117
- <div class={styles.extra}>{NoticeListExtra(item.extra, item.status)}</div>
118
- )}
119
- </div>
120
- }
121
- description={
122
- <div>
123
- <div class={styles['description']}>{item.description}</div>
124
- <div class={styles['datetime']}>{item.datetime}</div>
125
- </div>
126
- }
127
- />
128
- </List.Item>
129
- )
130
- }}
131
- />
132
- <div class={styles['bottomBar']}>
133
- {showClear ? (
134
- <div onClick={onClear}>
135
- {clearText} {title}
136
- </div>
137
- ) : null}
138
- {showViewMore ? (
139
- <div
140
- onClick={(e) => {
141
- if (onViewMore) {
142
- onViewMore(e)
143
- }
144
- }}
145
- >
146
- {viewMoreText}
147
- </div>
148
- ) : null}
149
- </div>
150
- </div>
151
- )
152
- }
153
-
154
- export default NoticeList
@@ -1,39 +0,0 @@
1
- @pro-notice: ~'@{gx-prefix}-pro-notice';
2
-
3
- body {
4
- .@{pro-notice} {
5
- &-popover {
6
- position: relative;
7
- width: 336px;
8
- }
9
-
10
- &-button {
11
- display: inline-block;
12
- cursor: pointer;
13
- transition: all 0.3s;
14
- }
15
-
16
- &-icon {
17
- padding: 4px;
18
- vertical-align: middle;
19
- }
20
-
21
- &-badge {
22
- font-size: 16px;
23
- }
24
-
25
- &-tabs {
26
- .ant-tabs-nav-list {
27
- margin: auto;
28
- }
29
-
30
- .ant-tabs-nav-scroll {
31
- text-align: center;
32
- }
33
-
34
- .ant-tabs-bar {
35
- margin-bottom: 0;
36
- }
37
- }
38
- }
39
- }
@@ -1,133 +0,0 @@
1
- import { computed, defineComponent, onMounted, reactive } from 'vue'
2
- import dayjs from 'dayjs'
3
- import { groupBy } from 'lodash-es'
4
- import { message } from 'ant-design-vue'
5
- import { getNotices } from '@/services/system/notices'
6
- import type { NoticeIconItem } from './NoticeList'
7
- import NoticeIcon from './NoticeIcon'
8
-
9
- const getNoticeData = (notices: NoticeIconItem[]): Record<string, NoticeIconItem[]> => {
10
- if (!notices || notices.length === 0 || !Array.isArray(notices)) {
11
- return {}
12
- }
13
-
14
- const newNotices = notices.map((notice) => {
15
- const newNotice = { ...notice }
16
-
17
- if (newNotice.datetime) {
18
- newNotice.datetime = dayjs(notice.datetime as string).fromNow()
19
- }
20
-
21
- if (newNotice.id) {
22
- newNotice.key = newNotice.id
23
- }
24
-
25
- return newNotice
26
- })
27
- return groupBy(newNotices, 'type')
28
- }
29
-
30
- const getUnreadData = (noticeData: Record<string, NoticeIconItem[]>) => {
31
- const unreadMsg: Record<string, number> = {}
32
- Object.keys(noticeData).forEach((key) => {
33
- const value = noticeData[key]
34
-
35
- if (!unreadMsg[key]) {
36
- unreadMsg[key] = 0
37
- }
38
-
39
- if (Array.isArray(value)) {
40
- unreadMsg[key] = value.filter((item) => !item.read).length
41
- }
42
- })
43
- return unreadMsg
44
- }
45
-
46
- const NoticeIconView = defineComponent({
47
- setup() {
48
- const state = reactive({
49
- notices: [] as NoticeIconItem[]
50
- })
51
-
52
- onMounted(async () => {
53
- const response = await getNotices()
54
- if (response) {
55
- state.notices = response.data || []
56
- }
57
- })
58
-
59
- const noticeData = computed(() => getNoticeData(state.notices))
60
-
61
- const unreadMsg = computed(() => getUnreadData(noticeData.value) || {})
62
-
63
- const changeReadState = (id: string) => {
64
- state.notices = state.notices.map((item) => {
65
- const notice = { ...item }
66
- if (notice.id === id) {
67
- notice.read = true
68
- }
69
- return notice
70
- })
71
- }
72
-
73
- const clearReadState = (title: string, key: string) => {
74
- state.notices = state.notices.map((item) => {
75
- const notice = { ...item }
76
- if (notice.type === key) {
77
- notice.read = true
78
- }
79
- return notice
80
- })
81
- message.success(`${'清空了'} ${title}`)
82
- }
83
-
84
- return () => {
85
- return (
86
- <NoticeIcon
87
- class="gx-pro-right-content-action"
88
- count={
89
- unreadMsg.value && unreadMsg.value.notification
90
- ? unreadMsg.value.notification + unreadMsg.value.message + unreadMsg.value.event
91
- : 0
92
- }
93
- onItemClick={(item) => {
94
- changeReadState(item.id!)
95
- }}
96
- onClear={(title: string, key: string) => clearReadState(title, key)}
97
- loading={false}
98
- clearText="清空"
99
- viewMoreText="查看更多"
100
- onViewMore={() => message.info('Click on view more')}
101
- clearClose
102
- >
103
- <NoticeIcon.Tab
104
- tabKey="notification"
105
- count={unreadMsg.value.notification}
106
- list={noticeData.value.notification}
107
- title="通知"
108
- emptyText="你已查看所有通知"
109
- showViewMore
110
- />
111
- <NoticeIcon.Tab
112
- tabKey="message"
113
- count={unreadMsg.value.message}
114
- list={noticeData.value.message}
115
- title="消息"
116
- emptyText="您已读完所有消息"
117
- showViewMore
118
- />
119
- <NoticeIcon.Tab
120
- tabKey="event"
121
- title="待办"
122
- emptyText="你已完成所有待办"
123
- count={unreadMsg.value.event}
124
- list={noticeData.value.event}
125
- showViewMore
126
- />
127
- </NoticeIcon>
128
- )
129
- }
130
- }
131
- })
132
-
133
- export default NoticeIconView