@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.
- package/package.json +1 -1
- package/src/cli.js +1 -1
- package/src/main.js +4 -0
- package/template-design-pro/.editorconfig +0 -19
- package/template-design-pro/.env +0 -2
- package/template-design-pro/.env.development +0 -18
- package/template-design-pro/.env.pro +0 -32
- package/template-design-pro/.env.production +0 -32
- package/template-design-pro/.env.test +0 -20
- package/template-design-pro/.eslintignore +0 -16
- package/template-design-pro/.eslintrc.js +0 -64
- package/template-design-pro/.gitpod.yml +0 -6
- package/template-design-pro/.husky/pre-commit +0 -4
- package/template-design-pro/.prettierignore +0 -9
- package/template-design-pro/.stylelintignore +0 -3
- package/template-design-pro/.yarnclean +0 -48
- package/template-design-pro/LICENSE +0 -21
- package/template-design-pro/README.md +0 -111
- package/template-design-pro/build/constant.ts +0 -6
- package/template-design-pro/build/generate/generateModifyVars.ts +0 -18
- package/template-design-pro/build/getConfigFileName.ts +0 -13
- package/template-design-pro/build/script/buildConf.ts +0 -44
- package/template-design-pro/build/script/postBuild.ts +0 -25
- package/template-design-pro/build/script/reSetRootHtml.ts +0 -20
- package/template-design-pro/build/utils.ts +0 -85
- package/template-design-pro/build/vite/cdn.ts +0 -7
- package/template-design-pro/build/vite/optimizer.ts +0 -22
- package/template-design-pro/build/vite/plugin/autoImport.ts +0 -18
- package/template-design-pro/build/vite/plugin/compress.ts +0 -35
- package/template-design-pro/build/vite/plugin/hmr.ts +0 -25
- package/template-design-pro/build/vite/plugin/html.ts +0 -47
- package/template-design-pro/build/vite/plugin/index.ts +0 -89
- package/template-design-pro/build/vite/plugin/mock.ts +0 -20
- package/template-design-pro/build/vite/plugin/pwa.ts +0 -37
- package/template-design-pro/build/vite/plugin/styleImport.ts +0 -129
- package/template-design-pro/build/vite/plugin/visualizer.ts +0 -17
- package/template-design-pro/build/vite/plugin/vite-plugin-antd-theme/index.ts +0 -24
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/createMockServer.ts +0 -303
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/createProdMockServer.ts +0 -93
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/index.ts +0 -68
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/types.ts +0 -30
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/utils.ts +0 -26
- package/template-design-pro/commitlint.config.js +0 -32
- package/template-design-pro/config/config.ts +0 -14
- package/template-design-pro/config/default/animate.ts +0 -30
- package/template-design-pro/config/default/defaultSettings.ts +0 -75
- package/template-design-pro/config/default/network.ts +0 -16
- package/template-design-pro/config/default/proxy.ts +0 -26
- package/template-design-pro/config/default/theme.ts +0 -43
- package/template-design-pro/config/default/themeColor.ts +0 -62
- package/template-design-pro/index.html +0 -45
- package/template-design-pro/jest.config.mjs +0 -36
- package/template-design-pro/mock/_createProductionServer.ts +0 -19
- package/template-design-pro/mock/_util.ts +0 -55
- package/template-design-pro/mock/controller/menu.ts +0 -85
- package/template-design-pro/mock/controller/notices.ts +0 -114
- package/template-design-pro/mock/system/dict.ts +0 -60
- package/template-design-pro/mock/system/user.ts +0 -218
- package/template-design-pro/package.json +0 -151
- package/template-design-pro/pnpm-lock.yaml +0 -9913
- package/template-design-pro/postcss.config.js +0 -5
- package/template-design-pro/prettier.config.js +0 -18
- package/template-design-pro/public/resource/css/index.css +0 -171
- package/template-design-pro/public/resource/img/favicon.ico +0 -0
- package/template-design-pro/public/resource/img/logo.png +0 -0
- package/template-design-pro/public/resource/img/pro_icon.svg +0 -5
- package/template-design-pro/public/resource/img/pwa-192x192.png +0 -0
- package/template-design-pro/public/resource/img/pwa-512x512.png +0 -0
- package/template-design-pro/src/App.vue +0 -47
- package/template-design-pro/src/assets/error_images/403.png +0 -0
- package/template-design-pro/src/assets/error_images/404.png +0 -0
- package/template-design-pro/src/assets/error_images/cloud.png +0 -0
- package/template-design-pro/src/assets/login_images/login_background.svg +0 -69
- package/template-design-pro/src/assets/logo.png +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.css +0 -94
- package/template-design-pro/src/assets/menu_font/iconfont.eot +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.js +0 -1
- package/template-design-pro/src/assets/menu_font/iconfont.json +0 -142
- package/template-design-pro/src/assets/menu_font/iconfont.svg +0 -57
- package/template-design-pro/src/assets/menu_font/iconfont.ttf +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.woff +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.woff2 +0 -0
- package/template-design-pro/src/assets/menu_font/index.less +0 -94
- package/template-design-pro/src/common/global.ts +0 -1
- package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.less +0 -80
- package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.tsx +0 -342
- package/template-design-pro/src/components/GDesign/ProLayout/PageLoading.tsx +0 -20
- package/template-design-pro/src/components/GDesign/ProLayout/RenderTypings.ts +0 -31
- package/template-design-pro/src/components/GDesign/ProLayout/RouteContext.tsx +0 -82
- package/template-design-pro/src/components/GDesign/ProLayout/WrapContent.tsx +0 -69
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalFooter/index.tsx +0 -88
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/DefaultHeader.tsx +0 -189
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/Header.less +0 -8
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/index.tsx +0 -105
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/props.ts +0 -69
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/style.less +0 -144
- package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/index.tsx +0 -81
- package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/props.ts +0 -29
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/index.tsx +0 -384
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/props.ts +0 -15
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/style.less +0 -79
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeIcon.tsx +0 -148
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.module.less +0 -115
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.tsx +0 -154
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.less +0 -39
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.tsx +0 -133
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/index.tsx +0 -190
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/props.ts +0 -48
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/style.less +0 -128
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/typings.ts +0 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/AvatarDropdown.tsx +0 -63
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/HeaderSearch.tsx +0 -122
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/headerSearch.less +0 -30
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/index.tsx +0 -95
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/style.less +0 -90
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/BlockCheckbox.tsx +0 -70
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/LayoutSetting.tsx +0 -107
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/ThemeColor.tsx +0 -68
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/index.tsx +0 -346
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/BaseMenu.tsx +0 -224
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/SiderMenu.tsx +0 -224
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/index.tsx +0 -43
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/props.ts +0 -112
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/style.less +0 -262
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/typings.ts +0 -44
- package/template-design-pro/src/components/GDesign/ProLayout/default.less +0 -2
- package/template-design-pro/src/components/GDesign/ProLayout/defaultSettings.ts +0 -121
- package/template-design-pro/src/components/GDesign/ProLayout/hooks/context/index.ts +0 -45
- package/template-design-pro/src/components/GDesign/ProLayout/index.ts +0 -43
- package/template-design-pro/src/components/GDesign/ProLayout/props.ts +0 -57
- package/template-design-pro/src/components/GDesign/ProLayout/style.less +0 -272
- package/template-design-pro/src/components/GDesign/ProLayout/typings.ts +0 -1
- package/template-design-pro/src/components/GDesign/ProLayout/utils/getMenuData.ts +0 -31
- package/template-design-pro/src/components/GDesign/ProLayout/utils/index.ts +0 -94
- package/template-design-pro/src/components/GDesign/ProLayout/utils/isImg/index.ts +0 -6
- package/template-design-pro/src/components/GDesign/ProLayout/utils/isUrl/index.ts +0 -5
- package/template-design-pro/src/components/GDesign/Result/index.tsx +0 -142
- package/template-design-pro/src/components/GDesign/Result/style.less +0 -140
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/index.tsx +0 -56
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/props.ts +0 -23
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/index.tsx +0 -164
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/props.ts +0 -11
- package/template-design-pro/src/components/GDesign/Scrollbars/context.ts +0 -10
- package/template-design-pro/src/components/GDesign/Scrollbars/index.tsx +0 -200
- package/template-design-pro/src/components/GDesign/Scrollbars/props.ts +0 -65
- package/template-design-pro/src/components/GDesign/Scrollbars/style.less +0 -85
- package/template-design-pro/src/components/GDesign/Scrollbars/util.ts +0 -40
- package/template-design-pro/src/components/GDesign/utils/index.ts +0 -7
- package/template-design-pro/src/components/PageLoading/index.tsx +0 -44
- package/template-design-pro/src/components/PageTransition/index.vue +0 -98
- package/template-design-pro/src/components/index.ts +0 -6
- package/template-design-pro/src/core/ant-design/index.ts +0 -14
- package/template-design-pro/src/core/gx-admin-design/index.ts +0 -7
- package/template-design-pro/src/core/gx-admin-directives/index.ts +0 -8
- package/template-design-pro/src/core/gx-admin-directives/permission.ts +0 -28
- package/template-design-pro/src/core/gx-design/index.ts +0 -7
- package/template-design-pro/src/core/gx-pro-design/index.ts +0 -10
- package/template-design-pro/src/core/index.ts +0 -27
- package/template-design-pro/src/design/ant-design/index.less +0 -4
- package/template-design-pro/src/design/ant-design/layout.less +0 -29
- package/template-design-pro/src/design/ant-design/menu.less +0 -55
- package/template-design-pro/src/design/ant-design/table.less +0 -67
- package/template-design-pro/src/design/ant-design/tooltip.less +0 -13
- package/template-design-pro/src/design/color.less +0 -1
- package/template-design-pro/src/design/config.less +0 -5
- package/template-design-pro/src/design/index.less +0 -41
- package/template-design-pro/src/design/mixin.less +0 -66
- package/template-design-pro/src/design/normalize.less +0 -390
- package/template-design-pro/src/global.less +0 -15
- package/template-design-pro/src/hooks/core/index.ts +0 -3
- package/template-design-pro/src/hooks/core/useRequest/index.ts +0 -70
- package/template-design-pro/src/hooks/core/useRequest/typings.ts +0 -0
- package/template-design-pro/src/hooks/event/index.ts +0 -3
- package/template-design-pro/src/hooks/event/useClipboard.ts +0 -14
- package/template-design-pro/src/hooks/system/index.ts +0 -5
- package/template-design-pro/src/hooks/system/useDict.ts +0 -62
- package/template-design-pro/src/hooks/system/usePermissions.ts +0 -39
- package/template-design-pro/src/hooks/typings.ts +0 -17
- package/template-design-pro/src/layout/BasicLayout.vue +0 -104
- package/template-design-pro/src/layout/BlankLayout.vue +0 -5
- package/template-design-pro/src/layout/ContentView.vue +0 -76
- package/template-design-pro/src/layout/IframeView.vue +0 -1
- package/template-design-pro/src/layout/UserLayout.vue +0 -7
- package/template-design-pro/src/main.ts +0 -34
- package/template-design-pro/src/plugins/index.ts +0 -3
- package/template-design-pro/src/router/guard/index.ts +0 -84
- package/template-design-pro/src/router/guard/permissions.ts +0 -73
- package/template-design-pro/src/router/guard/stateGuard.ts +0 -11
- package/template-design-pro/src/router/helper/routeHelper.ts +0 -244
- package/template-design-pro/src/router/helper/utils.ts +0 -19
- package/template-design-pro/src/router/index.ts +0 -30
- package/template-design-pro/src/router/routes/index.ts +0 -85
- package/template-design-pro/src/router/routes/modules/workplace.ts +0 -19
- package/template-design-pro/src/services/common/index.ts +0 -11
- package/template-design-pro/src/services/controller/router.ts +0 -10
- package/template-design-pro/src/services/controller/user.ts +0 -35
- package/template-design-pro/src/services/system/dictData.ts +0 -10
- package/template-design-pro/src/services/system/notices.ts +0 -9
- package/template-design-pro/src/store/index.ts +0 -32
- package/template-design-pro/src/store/modules/dict.ts +0 -27
- package/template-design-pro/src/store/modules/permission.ts +0 -19
- package/template-design-pro/src/store/modules/routes.ts +0 -110
- package/template-design-pro/src/store/modules/settings.ts +0 -102
- package/template-design-pro/src/store/modules/tabsRouter.ts +0 -73
- package/template-design-pro/src/store/modules/user.ts +0 -153
- package/template-design-pro/src/utils/accessToken.ts +0 -93
- package/template-design-pro/src/utils/crypto.ts +0 -39
- package/template-design-pro/src/utils/env.ts +0 -52
- package/template-design-pro/src/utils/fetchFile.ts +0 -79
- package/template-design-pro/src/utils/index.ts +0 -127
- package/template-design-pro/src/utils/pageTitle.ts +0 -17
- package/template-design-pro/src/utils/request/XHR.ts +0 -131
- package/template-design-pro/src/utils/request/axiosCancel.ts +0 -60
- package/template-design-pro/src/utils/request/checkStatus.ts +0 -26
- package/template-design-pro/src/utils/request/index.ts +0 -145
- package/template-design-pro/src/utils/request/typings.ts +0 -114
- package/template-design-pro/src/utils/storage.ts +0 -194
- package/template-design-pro/src/utils/uploadFile.ts +0 -26
- package/template-design-pro/src/utils/util.ts +0 -278
- package/template-design-pro/src/utils/validate.ts +0 -221
- package/template-design-pro/src/views/Iframe/index.vue +0 -76
- package/template-design-pro/src/views/MenuOne/index.vue +0 -15
- package/template-design-pro/src/views/MenuTwo/index.vue +0 -13
- package/template-design-pro/src/views/exception/403/index.vue +0 -9
- package/template-design-pro/src/views/exception/404/index.vue +0 -9
- package/template-design-pro/src/views/user/login/index.vue +0 -110
- package/template-design-pro/src/views/user/login/style.less +0 -38
- package/template-design-pro/stylelint.config.js +0 -106
- package/template-design-pro/tests/__mocks__/fileMock.ts +0 -1
- package/template-design-pro/tests/__mocks__/styleMock.ts +0 -1
- package/template-design-pro/tests/__mocks__/workerMock.ts +0 -5
- package/template-design-pro/tests/server/README.md +0 -15
- package/template-design-pro/tests/server/controller/FileController.ts +0 -18
- package/template-design-pro/tests/server/controller/UserController.ts +0 -15
- package/template-design-pro/tests/server/ecosystem.config.js +0 -18
- package/template-design-pro/tests/server/index.ts +0 -63
- package/template-design-pro/tests/server/nodemon.json +0 -8
- package/template-design-pro/tests/server/package.json +0 -36
- package/template-design-pro/tests/server/routes.ts +0 -23
- package/template-design-pro/tests/server/service/FileService.ts +0 -54
- package/template-design-pro/tests/server/service/UserService.ts +0 -25
- package/template-design-pro/tests/server/tsconfig.json +0 -15
- package/template-design-pro/tests/server/utils.ts +0 -9
- package/template-design-pro/tests/server/yarn.lock +0 -2955
- package/template-design-pro/tests/test.spec.ts +0 -16
- package/template-design-pro/tsconfig.json +0 -47
- package/template-design-pro/types/auto-imports.d.ts +0 -61
- package/template-design-pro/types/config.d.ts +0 -100
- package/template-design-pro/types/global.d.ts +0 -103
- package/template-design-pro/types/gx-components.d.ts +0 -24
- package/template-design-pro/types/index.d.ts +0 -13
- package/template-design-pro/types/mock.d.ts +0 -23
- package/template-design-pro/types/module.d.ts +0 -16
- package/template-design-pro/types/response.d.ts +0 -15
- package/template-design-pro/types/route.d.ts +0 -89
- package/template-design-pro/vite.config.ts +0 -136
- 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
|
-
}
|
package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeIcon.tsx
DELETED
@@ -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
|
-
}
|
package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.tsx
DELETED
@@ -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
|
package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.less
DELETED
@@ -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
|
-
}
|
package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.tsx
DELETED
@@ -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
|