@gx-design-vue/create-gx-cli 0.1.12 → 0.1.13

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 (184) hide show
  1. package/bin/create-gx-cli +3 -2
  2. package/package.json +4 -4
  3. package/src/cli.js +10 -7
  4. package/src/git.js +8 -5
  5. package/src/main.js +29 -16
  6. package/template-mobile-vant-cli/package.json +5 -5
  7. package/template-gx-design-thin/.editorconfig +0 -19
  8. package/template-gx-design-thin/.env +0 -4
  9. package/template-gx-design-thin/.env.development +0 -15
  10. package/template-gx-design-thin/.env.production +0 -28
  11. package/template-gx-design-thin/.eslintignore +0 -16
  12. package/template-gx-design-thin/.prettierignore +0 -9
  13. package/template-gx-design-thin/LICENSE +0 -21
  14. package/template-gx-design-thin/README.md +0 -112
  15. package/template-gx-design-thin/build/constant.ts +0 -1
  16. package/template-gx-design-thin/build/generate/generateModifyVars.ts +0 -14
  17. package/template-gx-design-thin/build/rollupOptions/index.ts +0 -22
  18. package/template-gx-design-thin/build/util/hash.ts +0 -17
  19. package/template-gx-design-thin/build/util/index.ts +0 -131
  20. package/template-gx-design-thin/build/vite/cdn.ts +0 -63
  21. package/template-gx-design-thin/build/vite/optimizer.ts +0 -26
  22. package/template-gx-design-thin/build/vite/plugin/appConfig.ts +0 -91
  23. package/template-gx-design-thin/build/vite/plugin/autoImport.ts +0 -26
  24. package/template-gx-design-thin/build/vite/plugin/compress.ts +0 -31
  25. package/template-gx-design-thin/build/vite/plugin/html.ts +0 -39
  26. package/template-gx-design-thin/build/vite/plugin/index.ts +0 -75
  27. package/template-gx-design-thin/build/vite/plugin/mock.ts +0 -14
  28. package/template-gx-design-thin/build/vite/plugin/pwa.ts +0 -31
  29. package/template-gx-design-thin/build/vite/plugin/visualizer.ts +0 -14
  30. package/template-gx-design-thin/build/vite/plugin/viteMock/client.ts +0 -88
  31. package/template-gx-design-thin/build/vite/plugin/viteMock/createMockServer.ts +0 -271
  32. package/template-gx-design-thin/build/vite/plugin/viteMock/index.ts +0 -69
  33. package/template-gx-design-thin/build/vite/plugin/viteMock/types.ts +0 -48
  34. package/template-gx-design-thin/build/vite/plugin/viteMock/utils.ts +0 -48
  35. package/template-gx-design-thin/build/vite/plugin/viteNotice.ts +0 -40
  36. package/template-gx-design-thin/commitlint.config.cjs +0 -32
  37. package/template-gx-design-thin/config/default/defaultSettings.ts +0 -78
  38. package/template-gx-design-thin/config/default/network.ts +0 -10
  39. package/template-gx-design-thin/config/default/proxy.ts +0 -47
  40. package/template-gx-design-thin/config/default/theme.ts +0 -3
  41. package/template-gx-design-thin/config/index.ts +0 -11
  42. package/template-gx-design-thin/eslint.config.js +0 -51
  43. package/template-gx-design-thin/index.html +0 -42
  44. package/template-gx-design-thin/mock/_createProductionServer.ts +0 -19
  45. package/template-gx-design-thin/mock/_util.ts +0 -33
  46. package/template-gx-design-thin/mock/config/menu.ts +0 -21
  47. package/template-gx-design-thin/mock/config/user.ts +0 -123
  48. package/template-gx-design-thin/mock/datasSource/system/menu.ts +0 -10
  49. package/template-gx-design-thin/mock/datasSource/user/account.ts +0 -30
  50. package/template-gx-design-thin/mock/datasSource/user/index.ts +0 -47
  51. package/template-gx-design-thin/mock/util/crypto.ts +0 -23
  52. package/template-gx-design-thin/mock/util/table.ts +0 -92
  53. package/template-gx-design-thin/mock/util/utils.ts +0 -73
  54. package/template-gx-design-thin/package.json +0 -129
  55. package/template-gx-design-thin/pnpm-lock.yaml +0 -12575
  56. package/template-gx-design-thin/prettier.config.cjs +0 -18
  57. package/template-gx-design-thin/public/resource/css/index.css +0 -119
  58. package/template-gx-design-thin/public/resource/css/normalize.css +0 -396
  59. package/template-gx-design-thin/public/resource/img/favicon.ico +0 -0
  60. package/template-gx-design-thin/public/resource/img/logo.png +0 -0
  61. package/template-gx-design-thin/public/resource/img/pro_icon.svg +0 -1
  62. package/template-gx-design-thin/public/resource/img/pwa-192x192.png +0 -0
  63. package/template-gx-design-thin/public/resource/img/pwa-512x512.png +0 -0
  64. package/template-gx-design-thin/src/App.vue +0 -42
  65. package/template-gx-design-thin/src/assets/error_images/403.png +0 -0
  66. package/template-gx-design-thin/src/assets/error_images/404.png +0 -0
  67. package/template-gx-design-thin/src/assets/error_images/cloud.png +0 -0
  68. package/template-gx-design-thin/src/assets/login_images/login_background.svg +0 -1
  69. package/template-gx-design-thin/src/assets/logo.png +0 -0
  70. package/template-gx-design-thin/src/assets/menu_font/iconfont.css +0 -94
  71. package/template-gx-design-thin/src/assets/menu_font/iconfont.eot +0 -0
  72. package/template-gx-design-thin/src/assets/menu_font/iconfont.js +0 -1
  73. package/template-gx-design-thin/src/assets/menu_font/iconfont.json +0 -142
  74. package/template-gx-design-thin/src/assets/menu_font/iconfont.svg +0 -1
  75. package/template-gx-design-thin/src/assets/menu_font/iconfont.ttf +0 -0
  76. package/template-gx-design-thin/src/assets/menu_font/iconfont.woff +0 -0
  77. package/template-gx-design-thin/src/assets/menu_font/iconfont.woff2 +0 -0
  78. package/template-gx-design-thin/src/assets/menu_font/index.less +0 -94
  79. package/template-gx-design-thin/src/assets/public_icon/iconfont.css +0 -42
  80. package/template-gx-design-thin/src/assets/public_icon/iconfont.eot +0 -0
  81. package/template-gx-design-thin/src/assets/public_icon/iconfont.js +0 -1
  82. package/template-gx-design-thin/src/assets/public_icon/iconfont.json +0 -51
  83. package/template-gx-design-thin/src/assets/public_icon/iconfont.svg +0 -1
  84. package/template-gx-design-thin/src/assets/public_icon/iconfont.ttf +0 -0
  85. package/template-gx-design-thin/src/assets/public_icon/iconfont.woff +0 -0
  86. package/template-gx-design-thin/src/assets/public_icon/iconfont.woff2 +0 -0
  87. package/template-gx-design-thin/src/assets/public_icon/index.less +0 -42
  88. package/template-gx-design-thin/src/assets/public_images/nodata.svg +0 -1
  89. package/template-gx-design-thin/src/common/global.ts +0 -4
  90. package/template-gx-design-thin/src/components/GDesign/Result/index.tsx +0 -144
  91. package/template-gx-design-thin/src/components/GDesign/Result/style.less +0 -140
  92. package/template-gx-design-thin/src/components/GDesign/utils/index.ts +0 -7
  93. package/template-gx-design-thin/src/components/GlobalLayout/Confirm/index.ts +0 -21
  94. package/template-gx-design-thin/src/components/GlobalLayout/Empty/index.vue +0 -18
  95. package/template-gx-design-thin/src/components/GlobalLayout/RightContent/index.tsx +0 -126
  96. package/template-gx-design-thin/src/components/GlobalLayout/RightContent/style.ts +0 -77
  97. package/template-gx-design-thin/src/components/GlobalLayout/Spin/index.tsx +0 -30
  98. package/template-gx-design-thin/src/components/PageLoading/index.tsx +0 -51
  99. package/template-gx-design-thin/src/components/index.ts +0 -6
  100. package/template-gx-design-thin/src/core/ant-design/index.ts +0 -10
  101. package/template-gx-design-thin/src/core/gx-admin-design/index.ts +0 -6
  102. package/template-gx-design-thin/src/core/gx-design/index.ts +0 -6
  103. package/template-gx-design-thin/src/core/gx-pro-design/index.ts +0 -8
  104. package/template-gx-design-thin/src/core/index.ts +0 -84
  105. package/template-gx-design-thin/src/design/ant-design/index.less +0 -4
  106. package/template-gx-design-thin/src/design/ant-design/layout.less +0 -22
  107. package/template-gx-design-thin/src/design/ant-design/menu.less +0 -48
  108. package/template-gx-design-thin/src/design/ant-design/spin.less +0 -23
  109. package/template-gx-design-thin/src/design/ant-design/tooltip.less +0 -7
  110. package/template-gx-design-thin/src/design/color.less +0 -1
  111. package/template-gx-design-thin/src/design/config.less +0 -5
  112. package/template-gx-design-thin/src/design/imageEditor.less +0 -180
  113. package/template-gx-design-thin/src/design/index.less +0 -95
  114. package/template-gx-design-thin/src/design/mixin.less +0 -65
  115. package/template-gx-design-thin/src/design/normalize.less +0 -391
  116. package/template-gx-design-thin/src/design/root.less +0 -3
  117. package/template-gx-design-thin/src/hooks/core/index.ts +0 -3
  118. package/template-gx-design-thin/src/hooks/core/useRequest/index.ts +0 -118
  119. package/template-gx-design-thin/src/hooks/event/index.ts +0 -3
  120. package/template-gx-design-thin/src/hooks/event/useClipboard.ts +0 -15
  121. package/template-gx-design-thin/src/hooks/web/index.ts +0 -5
  122. package/template-gx-design-thin/src/hooks/web/useThemeStyle.ts +0 -16
  123. package/template-gx-design-thin/src/layout/BasicLayout.vue +0 -123
  124. package/template-gx-design-thin/src/layout/BlankLayout.vue +0 -5
  125. package/template-gx-design-thin/src/layout/ContentView.vue +0 -50
  126. package/template-gx-design-thin/src/layout/IframeView.vue +0 -1
  127. package/template-gx-design-thin/src/layout/UserLayout.vue +0 -7
  128. package/template-gx-design-thin/src/main.ts +0 -34
  129. package/template-gx-design-thin/src/plugins/index.ts +0 -2
  130. package/template-gx-design-thin/src/router/guard/index.ts +0 -83
  131. package/template-gx-design-thin/src/router/guard/permissions.ts +0 -70
  132. package/template-gx-design-thin/src/router/guard/stateGuard.ts +0 -10
  133. package/template-gx-design-thin/src/router/helper/routeHelper.ts +0 -223
  134. package/template-gx-design-thin/src/router/helper/utils.ts +0 -19
  135. package/template-gx-design-thin/src/router/index.ts +0 -31
  136. package/template-gx-design-thin/src/router/routes/index.ts +0 -86
  137. package/template-gx-design-thin/src/router/routes/modules/dataSource.ts +0 -12
  138. package/template-gx-design-thin/src/services/common/index.ts +0 -11
  139. package/template-gx-design-thin/src/services/systemCenter/index.ts +0 -1
  140. package/template-gx-design-thin/src/services/systemCenter/menu.ts +0 -9
  141. package/template-gx-design-thin/src/services/userCenter/account.ts +0 -42
  142. package/template-gx-design-thin/src/services/userCenter/index.ts +0 -28
  143. package/template-gx-design-thin/src/store/index.ts +0 -32
  144. package/template-gx-design-thin/src/store/modules/dict.ts +0 -28
  145. package/template-gx-design-thin/src/store/modules/global.ts +0 -42
  146. package/template-gx-design-thin/src/store/modules/permission.ts +0 -19
  147. package/template-gx-design-thin/src/store/modules/routes.ts +0 -113
  148. package/template-gx-design-thin/src/store/modules/tabsRouter.ts +0 -76
  149. package/template-gx-design-thin/src/store/modules/user.ts +0 -136
  150. package/template-gx-design-thin/src/utils/accessToken.ts +0 -80
  151. package/template-gx-design-thin/src/utils/crypto/base64.ts +0 -101
  152. package/template-gx-design-thin/src/utils/crypto/index.ts +0 -57
  153. package/template-gx-design-thin/src/utils/env.ts +0 -50
  154. package/template-gx-design-thin/src/utils/fetchFile.ts +0 -81
  155. package/template-gx-design-thin/src/utils/index.ts +0 -123
  156. package/template-gx-design-thin/src/utils/pageTitle.ts +0 -20
  157. package/template-gx-design-thin/src/utils/request/XHR.ts +0 -139
  158. package/template-gx-design-thin/src/utils/request/axiosCancel.ts +0 -69
  159. package/template-gx-design-thin/src/utils/request/checkStatus.ts +0 -25
  160. package/template-gx-design-thin/src/utils/request/index.ts +0 -144
  161. package/template-gx-design-thin/src/utils/request/typings.ts +0 -171
  162. package/template-gx-design-thin/src/utils/storage.ts +0 -199
  163. package/template-gx-design-thin/src/utils/uploadFile.ts +0 -27
  164. package/template-gx-design-thin/src/utils/util.ts +0 -198
  165. package/template-gx-design-thin/src/utils/validate.ts +0 -216
  166. package/template-gx-design-thin/src/views/Iframe/index.vue +0 -76
  167. package/template-gx-design-thin/src/views/Page/one.vue +0 -13
  168. package/template-gx-design-thin/src/views/Page/two.vue +0 -13
  169. package/template-gx-design-thin/src/views/exception/403/index.vue +0 -7
  170. package/template-gx-design-thin/src/views/exception/404/index.vue +0 -9
  171. package/template-gx-design-thin/src/views/user/login/index.vue +0 -109
  172. package/template-gx-design-thin/src/views/user/login/style.less +0 -38
  173. package/template-gx-design-thin/tsconfig.json +0 -46
  174. package/template-gx-design-thin/types/ant-design-import.d.ts +0 -99
  175. package/template-gx-design-thin/types/auto-imports.d.ts +0 -81
  176. package/template-gx-design-thin/types/components.d.ts +0 -24
  177. package/template-gx-design-thin/types/config.d.ts +0 -44
  178. package/template-gx-design-thin/types/global.d.ts +0 -97
  179. package/template-gx-design-thin/types/mock.d.ts +0 -16
  180. package/template-gx-design-thin/types/module.d.ts +0 -20
  181. package/template-gx-design-thin/types/response.d.ts +0 -15
  182. package/template-gx-design-thin/unocss.config.ts +0 -101
  183. package/template-gx-design-thin/vite.config.ts +0 -120
  184. package/template-gx-design-thin/yarn.lock +0 -9492
@@ -1,42 +0,0 @@
1
- import request from '@/utils/request'
2
-
3
- export function getUserInfo() {
4
- return request({
5
- url: '/user/queryUserDetail',
6
- method: 'get',
7
- isMock: true
8
- })
9
- }
10
-
11
- export function getUserList() {
12
- return request({
13
- url: '/user/account/list',
14
- method: 'get',
15
- isMock: true
16
- })
17
- }
18
-
19
- export function getAccountGroupList() {
20
- return request({
21
- url: '/user/account/group',
22
- method: 'get',
23
- isMock: true
24
- })
25
- }
26
-
27
- export function getAccountCount() {
28
- return request({
29
- url: '/user/account/count',
30
- method: 'get',
31
- isMock: true
32
- })
33
- }
34
-
35
- export function updateUserDetails(data) {
36
- return request({
37
- url: '/user/account/update',
38
- method: 'post',
39
- data,
40
- isMock: true
41
- })
42
- }
@@ -1,28 +0,0 @@
1
- import request from '@/utils/request'
2
-
3
- export * from './account'
4
-
5
- export function login(data) {
6
- return request({
7
- url: '/user/login',
8
- method: 'post',
9
- data,
10
- isMock: true
11
- })
12
- }
13
-
14
- export function logout() {
15
- return request({
16
- url: '/user/logout',
17
- method: 'get',
18
- isMock: true
19
- })
20
- }
21
-
22
- export function register() {
23
- return request({
24
- url: '/user/register',
25
- method: 'post',
26
- isMock: true
27
- })
28
- }
@@ -1,32 +0,0 @@
1
- import type { App } from 'vue'
2
- import { createPinia } from 'pinia'
3
- import { useStoreGlobal } from './modules/global'
4
- import { useStoreDict } from './modules/dict'
5
- import { useStoreUser } from './modules/user'
6
- import { useStoreRoutes } from './modules/routes'
7
- import { useStorePermission } from './modules/permission'
8
- import { useStoreTabsRouter } from './modules/tabsRouter'
9
-
10
- export {
11
- useStoreGlobal,
12
- useStoreDict,
13
- useStoreUser,
14
- useStoreRoutes,
15
- useStorePermission,
16
- useStoreTabsRouter
17
- }
18
-
19
- export function useStore() {
20
- return {
21
- user: useStoreUser(),
22
- dict: useStoreDict(),
23
- global: useStoreGlobal(),
24
- routes: useStoreRoutes(),
25
- permission: useStorePermission(),
26
- tabsRouter: useStoreTabsRouter()
27
- }
28
- }
29
-
30
- export function setupStore(app: App<Element>) {
31
- app.use(createPinia())
32
- }
@@ -1,28 +0,0 @@
1
- import { reactive, toRefs } from 'vue'
2
- import { defineStore } from 'pinia'
3
- import type { DictRecord, DictType } from '@gx-mock/config/dict'
4
-
5
- /**
6
- * @Author gx12358
7
- * @DateTime 2022/1/11
8
- * @lastTime 2022/1/11
9
- * @description store-dict 数字字典
10
- */
11
- export interface DictState {
12
- data: Partial<Record<DictType, DictRecord[]>>;
13
- }
14
-
15
- export const useStoreDict = defineStore('dict', () => {
16
- const state = reactive<DictState>({
17
- data: {}
18
- })
19
-
20
- const setDictData = (type, value) => {
21
- state.data[type] = value
22
- }
23
-
24
- return {
25
- ...toRefs(state),
26
- setDictData
27
- }
28
- })
@@ -1,42 +0,0 @@
1
- import { reactive } from 'vue'
2
- import { defineStore } from 'pinia'
3
- import type { ThemeConfig } from '@gx-design-vue/pro-provider'
4
- import { themeConfig as proThemeConfig } from '@gx-design-vue/pro-provider'
5
- import type { BasicLayoutProps } from '@gx-design-vue/pro-layout'
6
- import { handleThemeConfig } from '@gx-design-vue/pro-layout'
7
- import { defaultSettings, theme } from '@gx-config'
8
- import logo from '@/assets/logo.png'
9
-
10
- const layoutThemeConfig = {
11
- ...proThemeConfig,
12
- title: defaultSettings.title
13
- } as ThemeConfig
14
-
15
- /**
16
- * @Author gx12358
17
- * @DateTime 2022/1/11
18
- * @lastTime 2022/1/11
19
- * @description store-global 全局属性
20
- */
21
- export interface GlobalState {
22
- globalLayout: BasicLayoutProps;
23
- keepAlive: boolean;
24
- showProgressBar: boolean;
25
- disabledScrollTop: boolean;
26
- }
27
-
28
- export const useStoreGlobal = defineStore('global', () => {
29
- const state = reactive<GlobalState>({
30
- keepAlive: true,
31
- showProgressBar: true,
32
- disabledScrollTop: false,
33
- globalLayout: {
34
- logo,
35
- ...handleThemeConfig({ ...layoutThemeConfig, primaryColor: theme.colorPrimary })
36
- }
37
- })
38
-
39
- return {
40
- ...toRefs(state)
41
- }
42
- })
@@ -1,19 +0,0 @@
1
- import { reactive, toRefs } from 'vue'
2
- import { defineStore } from 'pinia'
3
-
4
- export const useStorePermission = defineStore('permission', () => {
5
- const state = reactive({
6
- admin: false,
7
- role: [],
8
- ability: []
9
- })
10
-
11
- const changeValue = (type: string, value: any) => {
12
- state[type] = value
13
- }
14
-
15
- return {
16
- ...toRefs(state),
17
- changeValue
18
- }
19
- })
@@ -1,113 +0,0 @@
1
- import { reactive, toRefs } from 'vue'
2
- import { defineStore } from 'pinia'
3
- import type { AppRouteModule, MenuDataItem } from '@gx-design-vue/pro-layout'
4
- import { asyncRoutes, localRoutes } from '@/router/routes'
5
- import { getMenuList } from '@/services/systemCenter'
6
- import { generator, getRootMenu } from '@/router/helper/routeHelper'
7
- import { getFirstLastChild } from '@/router/helper/utils'
8
- import { getLevelData } from '@gx-design-vue/pro-utils'
9
-
10
- /**
11
- * @Author gx12358
12
- * @DateTime 2022/1/11
13
- * @lastTime 2022/1/11
14
- * @description store-routes 路由
15
- */
16
- export interface RoutesState {
17
- routes: AppRouteModule[];
18
- routerLoadList: string[];
19
- meunLoading: boolean;
20
- routerLoading: boolean;
21
- }
22
-
23
- type RouteStateKey = keyof RoutesState
24
-
25
- export const useStoreRoutes = defineStore('routes', () => {
26
- const state = reactive<RoutesState>({
27
- routes: [],
28
- routerLoadList: [],
29
- meunLoading: false,
30
- routerLoading: false
31
- })
32
-
33
- /**
34
- * @Author gx12358
35
- * @DateTime 2022/1/11
36
- * @lastTime 2022/1/11
37
- * @description intelligence(前端静态路由)模式设置路由
38
- */
39
- const setRoutes = () => {
40
- state.routes = localRoutes
41
- return [ ...localRoutes ]
42
- }
43
-
44
- /**
45
- * @Author gx12358
46
- * @DateTime 2022/1/11
47
- * @lastTime 2022/1/11
48
- * @description all(后端动态路由)
49
- */
50
- const setAllRoutes = async () => {
51
- let routes: AppRouteModule[] = []
52
- state.meunLoading = true
53
- const response: ResponseResult<MenuDataItem[]> = await getMenuList()
54
- if (response && (response?.data)?.length) {
55
- const notFoundRouter: AppRouteModule = {
56
- path: '/:path(.*)*',
57
- redirect: '/exception/404',
58
- hidden: true
59
- }
60
- const rootMenu = getRootMenu(response?.data || [])
61
- const asyncRouteList = generator(rootMenu)
62
- asyncRouteList[0].children = [ ...(asyncRouteList[0]?.children || []), ...asyncRoutes ]
63
- const haveHomePage = getLevelData(asyncRouteList[0].children)
64
- .find(item => item.meta ? item.meta.homePage === 1 : false)
65
- asyncRouteList[0].redirect = haveHomePage ? haveHomePage.path : getFirstLastChild(asyncRouteList[0].children)
66
- asyncRouteList.push(notFoundRouter)
67
- routes = [ ...asyncRouteList ]
68
- }
69
- state.routes = routes
70
- state.meunLoading = false
71
- return routes
72
- }
73
-
74
- /**
75
- * @Author gx12358
76
- * @DateTime 2022/1/11
77
- * @lastTime 2022/1/11
78
- * @description 重置路由
79
- */
80
- const resetRoute = () => {
81
- state.routes = []
82
- state.routerLoadList = []
83
- }
84
-
85
- /**
86
- * @Author gx12358
87
- * @DateTime 2022/1/11
88
- * @lastTime 2022/1/11
89
- * @description 添加路由记录
90
- */
91
- const addRouterLoadList = (path) => {
92
- state.routerLoadList.push(path)
93
- }
94
-
95
- /**
96
- * @Author gx12358
97
- * @DateTime 2022/1/11
98
- * @lastTime 2022/1/11
99
- * @description 修改state状态
100
- */
101
- const setRouteState: (params: Partial<Record<RouteStateKey, RoutesState[RouteStateKey]>>) => void = (params) => {
102
- Object.assign(state, params)
103
- }
104
-
105
- return {
106
- ...toRefs(state),
107
- setRoutes,
108
- setAllRoutes,
109
- resetRoute,
110
- addRouterLoadList,
111
- setRouteState
112
- }
113
- })
@@ -1,76 +0,0 @@
1
- import { reactive, toRefs } from 'vue'
2
- import { defineStore } from 'pinia'
3
-
4
- export interface TabsRouterState {
5
- visitedRoutes: Recordable[];
6
- }
7
-
8
- export const useStoreTabsRouter = defineStore('tabsRouter', () => {
9
- const state = reactive({
10
- visitedRoutes: []
11
- } as TabsRouterState)
12
-
13
- const addVisitedRoute = (route) => {
14
- const target = state.visitedRoutes.find(item => item.path === route.path)
15
- if (target) {
16
- if (route.fullPath !== target.fullPath)
17
- Object.assign(target, route)
18
- return
19
- }
20
- if (route.tagFixed) {
21
- state.visitedRoutes.unshift(Object.assign({}, route))
22
- } else {
23
- state.visitedRoutes.push(Object.assign({}, route))
24
- }
25
- }
26
-
27
- const delVisitedRoute = (route) => {
28
- state.visitedRoutes.forEach((item, index) => {
29
- if (item.path === route.path)
30
- state.visitedRoutes.splice(index, 1)
31
- })
32
- }
33
-
34
- const delOthersVisitedRoutes = (route) => {
35
- state.visitedRoutes = state.visitedRoutes.filter(
36
- item => item.meta.tagFixed || item.path === route.path
37
- )
38
- }
39
-
40
- const delLeftVisitedRoutes = (route) => {
41
- let index = state.visitedRoutes.length
42
- state.visitedRoutes = state.visitedRoutes.filter((item) => {
43
- if (item.name === route.name)
44
- index = state.visitedRoutes.indexOf(item)
45
- return item.meta.tagFixed || index <= state.visitedRoutes.indexOf(item)
46
- })
47
- }
48
-
49
- const delRightVisitedRoutes = (route) => {
50
- let index = state.visitedRoutes.length
51
- state.visitedRoutes = state.visitedRoutes.filter((item) => {
52
- if (item.name === route.name)
53
- index = state.visitedRoutes.indexOf(item)
54
- return item.meta.tagFixed || index >= state.visitedRoutes.indexOf(item)
55
- })
56
- }
57
-
58
- const delAllVisitedRoutes = () => {
59
- state.visitedRoutes = state.visitedRoutes.filter(item => item.meta.tagFixed)
60
- }
61
-
62
- const blankingTabs = () => {
63
- state.visitedRoutes = []
64
- }
65
-
66
- return {
67
- ...toRefs(state),
68
- blankingTabs,
69
- addVisitedRoute,
70
- delVisitedRoute,
71
- delOthersVisitedRoutes,
72
- delLeftVisitedRoutes,
73
- delRightVisitedRoutes,
74
- delAllVisitedRoutes
75
- }
76
- })
@@ -1,136 +0,0 @@
1
- import { reactive, toRefs } from 'vue'
2
- import { defineStore } from 'pinia'
3
- import { notification } from 'ant-design-vue'
4
- import { defaultSettings } from '@gx-config'
5
- import type { UserDetails, UserInfo } from '@gx-mock/config/user'
6
- import { defaultUser } from '@gx-mock/config/user'
7
- import { getUserInfo, login, logout } from '@/services/userCenter'
8
- import { getAccessToken, removeAccessToken, setAccessToken } from '@/utils/accessToken'
9
- import { timeFix } from '@/utils/util'
10
- import { useStoreRoutes } from './routes'
11
- import { useStorePermission } from './permission'
12
- import { useStoreTabsRouter } from './tabsRouter'
13
- import { isObject } from '@gx-design-vue/pro-utils'
14
- import { cloneDeep } from 'lodash-es'
15
-
16
- const { tokenName, loginInterception } = defaultSettings
17
-
18
- export interface UserState {
19
- accessToken: string;
20
- userInfo: UserDetails;
21
- }
22
-
23
- type UserStateKey = keyof UserState
24
-
25
- export const useStoreUser = defineStore('user', () => {
26
- const routes = useStoreRoutes()
27
- const auth = useStorePermission()
28
- const tabsRouter = useStoreTabsRouter()
29
-
30
- const state = reactive<UserState>({
31
- accessToken: getAccessToken(),
32
- userInfo: {} as UserDetails
33
- })
34
-
35
- const userDetails = computed<UserDetails>(() => state.userInfo)
36
-
37
- const setState: (params: Partial<Record<UserStateKey, UserState[UserStateKey]>>) => void = (params) => {
38
- Object.assign(state, params)
39
- }
40
-
41
- /**
42
- * @Author gx12358
43
- * @DateTime 2022/1/11
44
- * @lastTime 2022/1/11
45
- * @description 登录拦截放行时,设置虚拟角色
46
- */
47
- const setVirtualUserInfo = () => {
48
- auth.changeValue('admin', true)
49
- auth.changeValue('role', defaultUser.roles)
50
- auth.changeValue('ability', defaultUser.permissions)
51
- setState({
52
- userInfo: defaultUser.user as UserDetails
53
- })
54
- }
55
-
56
- /**
57
- * @Author gx12358
58
- * @DateTime 2022/1/11
59
- * @lastTime 2022/1/11
60
- * @description 登录
61
- */
62
- const userLogin = async (params): Promise<boolean> => {
63
- const response: ResponseResult<{ expiresIn: number; }> = await login(params)
64
- const accessToken = response?.data?.[tokenName]
65
- if (accessToken) {
66
- const expiresIn = response?.data?.expiresIn
67
- state.accessToken = accessToken
68
- setAccessToken(accessToken, expiresIn ? expiresIn * 60 * 1000 : 0)
69
- return true
70
- }
71
- return false
72
- }
73
-
74
- const updateUserInfo = async () => {
75
- const response: ResponseResult<UserInfo> = await getUserInfo()
76
- const { user, roles, permissions } = response?.data || {} as UserInfo
77
- if (response && user && isObject(user)) {
78
- if (user.userName && roles && Array.isArray(roles)) {
79
- auth.changeValue('role', roles)
80
- auth.changeValue('ability', permissions)
81
-
82
- setState({
83
- userInfo: cloneDeep(user)
84
- })
85
- notification.success({
86
- message: `欢迎登录${state.userInfo?.userName}`,
87
- description: `${timeFix()}!`
88
- })
89
- }
90
- }
91
- }
92
-
93
- /**
94
- * @Author gx12358
95
- * @DateTime 2022/1/11
96
- * @lastTime 2022/1/11
97
- * @description 获取用户信息
98
- */
99
- const checkUserPremission = async () => {
100
- if (loginInterception)
101
- await updateUserInfo()
102
- else setVirtualUserInfo()
103
- return Object.keys(state.userInfo).length
104
- }
105
-
106
- const resetPermissions = () => {
107
- state.accessToken = ''
108
- removeAccessToken()
109
- auth.changeValue('admin', false)
110
- auth.changeValue('role', [])
111
- auth.changeValue('ability', [])
112
- routes.resetRoute()
113
- tabsRouter.blankingTabs()
114
- }
115
-
116
- /**
117
- * @Author gx12358
118
- * @DateTime 2022/5/15
119
- * @lastTime 2022/5/15
120
- * @description 用户退出登录
121
- */
122
- const userLogut = async () => {
123
- await logout()
124
- resetPermissions()
125
- }
126
-
127
- return {
128
- ...toRefs(state),
129
- userDetails,
130
- userLogin,
131
- userLogut,
132
- setState,
133
- resetPermissions,
134
- checkUserPremission
135
- }
136
- })
@@ -1,80 +0,0 @@
1
- import { defaultSettings } from '@gx-config'
2
- import {
3
- delCookie,
4
- getStorage,
5
- removeStorage,
6
- setCookie,
7
- setStorage
8
- } from '@/utils/storage'
9
-
10
- const { storage, tokenTableName } = defaultSettings
11
-
12
- /**
13
- * @Author gx12358
14
- * @DateTime 2021/12/27
15
- * @lastTime 2021/12/27
16
- * @description 获取accessToken
17
- */
18
- export function getAccessToken() {
19
- return getStorage({ key: tokenTableName, type: storage || 'localStorage' })
20
- }
21
-
22
- /**
23
- * @author gx12358 2539306317@qq.com
24
- * @description 存储accessToken
25
- * @param accessToken
26
- * @returns {void|*}
27
- */
28
- export function setAccessToken(accessToken: string, expired?: number) {
29
- if (storage) {
30
- if (storage === 'localStorage') {
31
- return setStorage({
32
- key: tokenTableName,
33
- value: accessToken,
34
- expired
35
- })
36
- } else if (storage === 'sessionStorage') {
37
- return setStorage({
38
- key: tokenTableName,
39
- value: accessToken,
40
- expired,
41
- type: 'session'
42
- })
43
- } else if (storage === 'cookie') {
44
- return setCookie(tokenTableName, accessToken, expired)
45
- } else {
46
- return setStorage({
47
- key: tokenTableName,
48
- value: accessToken,
49
- expired
50
- })
51
- }
52
- } else {
53
- return setStorage({
54
- key: tokenTableName,
55
- value: accessToken,
56
- expired
57
- })
58
- }
59
- }
60
-
61
- /**
62
- * @author gx12358 2539306317@qq.com
63
- * @description 移除accessToken
64
- * @returns {void|Promise<void>}
65
- */
66
- export function removeAccessToken() {
67
- if (storage) {
68
- if (storage === 'localStorage') {
69
- return removeStorage(tokenTableName)
70
- } else if (storage === 'sessionStorage') {
71
- return removeStorage(tokenTableName, 'session')
72
- } else if (storage === 'cookie') {
73
- return delCookie(tokenTableName)
74
- } else {
75
- return removeStorage(tokenTableName)
76
- }
77
- } else {
78
- return removeStorage(tokenTableName)
79
- }
80
- }
@@ -1,101 +0,0 @@
1
- export default class Base64 {
2
- _keyStr: string
3
-
4
- constructor() {
5
- this._keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
6
- }
7
-
8
- _utf8_encode(string: string) {
9
- string = string.replace(/\r\n/g, '\n')
10
- let utftext = ''
11
- for (let n = 0; n < string.length; n++) {
12
- const c = string.charCodeAt(n)
13
- if (c < 128) {
14
- utftext += String.fromCharCode(c)
15
- } else if ((c > 127) && (c < 2048)) {
16
- utftext += String.fromCharCode((c >> 6) | 192)
17
- utftext += String.fromCharCode((c & 63) | 128)
18
- } else {
19
- utftext += String.fromCharCode((c >> 12) | 224)
20
- utftext += String.fromCharCode(((c >> 6) & 63) | 128)
21
- utftext += String.fromCharCode((c & 63) | 128)
22
- }
23
- }
24
- return utftext
25
- }
26
-
27
- _utf8_decode(utftext: string) {
28
- let string = ''
29
- let i = 0
30
- let c = 0
31
- let c1 = 0
32
- let c2 = 0
33
- while (i < utftext.length) {
34
- c = utftext.charCodeAt(i)
35
- if (c < 128) {
36
- string += String.fromCharCode(c)
37
- i++
38
- } else if ((c > 191) && (c < 224)) {
39
- c1 = utftext.charCodeAt(i + 1)
40
- string += String.fromCharCode(((c & 31) << 6) | (c1 & 63))
41
- i += 2
42
- } else {
43
- c1 = utftext.charCodeAt(i + 1)
44
- c2 = utftext.charCodeAt(i + 2)
45
- string += String.fromCharCode(((c & 15) << 12) | ((c1 & 63) << 6) | (c2 & 63))
46
- i += 3
47
- }
48
- }
49
- return string
50
- }
51
-
52
- encode(input: string) {
53
- let output = ''
54
- let chr1, chr2, chr3, enc1, enc2, enc3, enc4
55
- let i = 0
56
- input = this._utf8_encode(input)
57
- while (i < input.length) {
58
- chr1 = input.charCodeAt(i++)
59
- chr2 = input.charCodeAt(i++)
60
- chr3 = input.charCodeAt(i++)
61
- enc1 = chr1 >> 2
62
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4)
63
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6)
64
- enc4 = chr3 & 63
65
- if (Number.isNaN(chr2)) {
66
- enc3 = enc4 = 64
67
- } else if (Number.isNaN(chr3)) {
68
- enc4 = 64
69
- }
70
- output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(
71
- enc3) + this._keyStr.charAt(enc4)
72
- }
73
- return output
74
- }
75
-
76
- decode(input: string) {
77
- let output = ''
78
- let chr1, chr2, chr3
79
- let enc1, enc2, enc3, enc4
80
- let i = 0
81
- input = input.replace(/[^A-Za-z0-9+/=]/g, '')
82
- while (i < input.length) {
83
- enc1 = this._keyStr.indexOf(input.charAt(i++))
84
- enc2 = this._keyStr.indexOf(input.charAt(i++))
85
- enc3 = this._keyStr.indexOf(input.charAt(i++))
86
- enc4 = this._keyStr.indexOf(input.charAt(i++))
87
- chr1 = (enc1 << 2) | (enc2 >> 4)
88
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2)
89
- chr3 = ((enc3 & 3) << 6) | enc4
90
- output = output + String.fromCharCode(chr1)
91
- if (enc3 !== 64) {
92
- output = output + String.fromCharCode(chr2)
93
- }
94
- if (enc4 !== 64) {
95
- output = output + String.fromCharCode(chr3)
96
- }
97
- }
98
- output = this._utf8_decode(output)
99
- return output
100
- }
101
- }