@gx-design-vue/create-gx-cli 0.0.4 → 0.0.5
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.
- package/package.json +1 -1
- package/src/main.js +1 -0
- package/template-design-pro/.editorconfig +19 -0
- package/template-design-pro/.env +2 -0
- package/template-design-pro/.env.development +18 -0
- package/template-design-pro/.env.pro +32 -0
- package/template-design-pro/.env.production +32 -0
- package/template-design-pro/.env.test +20 -0
- package/template-design-pro/.eslintignore +16 -0
- package/template-design-pro/.eslintrc.js +64 -0
- package/template-design-pro/.gitpod.yml +6 -0
- package/template-design-pro/.husky/pre-commit +4 -0
- package/template-design-pro/.prettierignore +9 -0
- package/template-design-pro/.stylelintignore +3 -0
- package/template-design-pro/.yarnclean +48 -0
- package/template-design-pro/LICENSE +21 -0
- package/template-design-pro/README.md +111 -0
- package/template-design-pro/build/constant.ts +6 -0
- package/template-design-pro/build/generate/generateModifyVars.ts +18 -0
- package/template-design-pro/build/getConfigFileName.ts +13 -0
- package/template-design-pro/build/script/buildConf.ts +44 -0
- package/template-design-pro/build/script/postBuild.ts +25 -0
- package/template-design-pro/build/script/reSetRootHtml.ts +20 -0
- package/template-design-pro/build/utils.ts +85 -0
- package/template-design-pro/build/vite/cdn.ts +7 -0
- package/template-design-pro/build/vite/optimizer.ts +22 -0
- package/template-design-pro/build/vite/plugin/autoImport.ts +18 -0
- package/template-design-pro/build/vite/plugin/compress.ts +35 -0
- package/template-design-pro/build/vite/plugin/hmr.ts +25 -0
- package/template-design-pro/build/vite/plugin/html.ts +47 -0
- package/template-design-pro/build/vite/plugin/index.ts +89 -0
- package/template-design-pro/build/vite/plugin/mock.ts +20 -0
- package/template-design-pro/build/vite/plugin/pwa.ts +37 -0
- package/template-design-pro/build/vite/plugin/styleImport.ts +129 -0
- package/template-design-pro/build/vite/plugin/visualizer.ts +17 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-antd-theme/index.ts +24 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/createMockServer.ts +303 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/createProdMockServer.ts +93 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/index.ts +68 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/types.ts +30 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/utils.ts +26 -0
- package/template-design-pro/commitlint.config.js +32 -0
- package/template-design-pro/config/config.ts +14 -0
- package/template-design-pro/config/default/animate.ts +30 -0
- package/template-design-pro/config/default/defaultSettings.ts +75 -0
- package/template-design-pro/config/default/network.ts +16 -0
- package/template-design-pro/config/default/proxy.ts +26 -0
- package/template-design-pro/config/default/theme.ts +43 -0
- package/template-design-pro/config/default/themeColor.ts +62 -0
- package/template-design-pro/index.html +45 -0
- package/template-design-pro/jest.config.mjs +36 -0
- package/template-design-pro/mock/_createProductionServer.ts +19 -0
- package/template-design-pro/mock/_util.ts +55 -0
- package/template-design-pro/mock/controller/menu.ts +85 -0
- package/template-design-pro/mock/controller/notices.ts +114 -0
- package/template-design-pro/mock/system/dict.ts +60 -0
- package/template-design-pro/mock/system/user.ts +218 -0
- package/template-design-pro/package.json +151 -0
- package/template-design-pro/pnpm-lock.yaml +9913 -0
- package/template-design-pro/postcss.config.js +5 -0
- package/template-design-pro/prettier.config.js +18 -0
- package/template-design-pro/public/resource/css/index.css +171 -0
- 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 +5 -0
- 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 +47 -0
- 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 +69 -0
- package/template-design-pro/src/assets/logo.png +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.css +94 -0
- package/template-design-pro/src/assets/menu_font/iconfont.eot +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.js +1 -0
- package/template-design-pro/src/assets/menu_font/iconfont.json +142 -0
- package/template-design-pro/src/assets/menu_font/iconfont.svg +57 -0
- 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 +94 -0
- package/template-design-pro/src/common/global.ts +1 -0
- package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.less +80 -0
- package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.tsx +342 -0
- package/template-design-pro/src/components/GDesign/ProLayout/PageLoading.tsx +20 -0
- package/template-design-pro/src/components/GDesign/ProLayout/RenderTypings.ts +31 -0
- package/template-design-pro/src/components/GDesign/ProLayout/RouteContext.tsx +82 -0
- package/template-design-pro/src/components/GDesign/ProLayout/WrapContent.tsx +69 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalFooter/index.tsx +88 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/DefaultHeader.tsx +189 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/Header.less +8 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/index.tsx +105 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/props.ts +69 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/style.less +144 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/index.tsx +81 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/props.ts +29 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/index.tsx +384 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/props.ts +15 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/style.less +79 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeIcon.tsx +148 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.module.less +115 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.tsx +154 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.less +39 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.tsx +133 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/index.tsx +190 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/props.ts +48 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/style.less +128 -0
- 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 +63 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/HeaderSearch.tsx +122 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/headerSearch.less +30 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/index.tsx +95 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/style.less +90 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/BlockCheckbox.tsx +70 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/LayoutSetting.tsx +107 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/ThemeColor.tsx +68 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/index.tsx +346 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/BaseMenu.tsx +224 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/SiderMenu.tsx +224 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/index.tsx +43 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/props.ts +112 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/style.less +262 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/typings.ts +44 -0
- package/template-design-pro/src/components/GDesign/ProLayout/default.less +2 -0
- package/template-design-pro/src/components/GDesign/ProLayout/defaultSettings.ts +121 -0
- package/template-design-pro/src/components/GDesign/ProLayout/hooks/context/index.ts +45 -0
- package/template-design-pro/src/components/GDesign/ProLayout/index.ts +43 -0
- package/template-design-pro/src/components/GDesign/ProLayout/props.ts +57 -0
- package/template-design-pro/src/components/GDesign/ProLayout/style.less +272 -0
- package/template-design-pro/src/components/GDesign/ProLayout/typings.ts +1 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/getMenuData.ts +31 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/index.ts +94 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/isImg/index.ts +6 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/isUrl/index.ts +5 -0
- package/template-design-pro/src/components/GDesign/Result/index.tsx +142 -0
- package/template-design-pro/src/components/GDesign/Result/style.less +140 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/index.tsx +56 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/props.ts +23 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/index.tsx +164 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/props.ts +11 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/context.ts +10 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/index.tsx +200 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/props.ts +65 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/style.less +85 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/util.ts +40 -0
- package/template-design-pro/src/components/GDesign/utils/index.ts +7 -0
- package/template-design-pro/src/components/PageLoading/index.tsx +44 -0
- package/template-design-pro/src/components/PageTransition/index.vue +98 -0
- package/template-design-pro/src/components/index.ts +6 -0
- package/template-design-pro/src/core/ant-design/index.ts +14 -0
- package/template-design-pro/src/core/gx-admin-design/index.ts +7 -0
- package/template-design-pro/src/core/gx-admin-directives/index.ts +8 -0
- package/template-design-pro/src/core/gx-admin-directives/permission.ts +28 -0
- package/template-design-pro/src/core/gx-design/index.ts +7 -0
- package/template-design-pro/src/core/gx-pro-design/index.ts +10 -0
- package/template-design-pro/src/core/index.ts +27 -0
- package/template-design-pro/src/design/ant-design/index.less +4 -0
- package/template-design-pro/src/design/ant-design/layout.less +29 -0
- package/template-design-pro/src/design/ant-design/menu.less +55 -0
- package/template-design-pro/src/design/ant-design/table.less +67 -0
- package/template-design-pro/src/design/ant-design/tooltip.less +13 -0
- package/template-design-pro/src/design/color.less +1 -0
- package/template-design-pro/src/design/config.less +5 -0
- package/template-design-pro/src/design/index.less +41 -0
- package/template-design-pro/src/design/mixin.less +66 -0
- package/template-design-pro/src/design/normalize.less +390 -0
- package/template-design-pro/src/global.less +15 -0
- package/template-design-pro/src/hooks/core/index.ts +3 -0
- package/template-design-pro/src/hooks/core/useRequest/index.ts +70 -0
- package/template-design-pro/src/hooks/core/useRequest/typings.ts +0 -0
- package/template-design-pro/src/hooks/event/index.ts +3 -0
- package/template-design-pro/src/hooks/event/useClipboard.ts +14 -0
- package/template-design-pro/src/hooks/system/index.ts +5 -0
- package/template-design-pro/src/hooks/system/useDict.ts +62 -0
- package/template-design-pro/src/hooks/system/usePermissions.ts +39 -0
- package/template-design-pro/src/hooks/typings.ts +17 -0
- package/template-design-pro/src/layout/BasicLayout.vue +104 -0
- package/template-design-pro/src/layout/BlankLayout.vue +5 -0
- package/template-design-pro/src/layout/ContentView.vue +76 -0
- package/template-design-pro/src/layout/IframeView.vue +1 -0
- package/template-design-pro/src/layout/UserLayout.vue +7 -0
- package/template-design-pro/src/main.ts +34 -0
- package/template-design-pro/src/plugins/index.ts +3 -0
- package/template-design-pro/src/router/guard/index.ts +84 -0
- package/template-design-pro/src/router/guard/permissions.ts +73 -0
- package/template-design-pro/src/router/guard/stateGuard.ts +11 -0
- package/template-design-pro/src/router/helper/routeHelper.ts +244 -0
- package/template-design-pro/src/router/helper/utils.ts +19 -0
- package/template-design-pro/src/router/index.ts +30 -0
- package/template-design-pro/src/router/routes/index.ts +85 -0
- package/template-design-pro/src/router/routes/modules/workplace.ts +19 -0
- package/template-design-pro/src/services/common/index.ts +11 -0
- package/template-design-pro/src/services/controller/router.ts +10 -0
- package/template-design-pro/src/services/controller/user.ts +35 -0
- package/template-design-pro/src/services/system/dictData.ts +10 -0
- package/template-design-pro/src/services/system/notices.ts +9 -0
- package/template-design-pro/src/store/index.ts +32 -0
- package/template-design-pro/src/store/modules/dict.ts +27 -0
- package/template-design-pro/src/store/modules/permission.ts +19 -0
- package/template-design-pro/src/store/modules/routes.ts +110 -0
- package/template-design-pro/src/store/modules/settings.ts +102 -0
- package/template-design-pro/src/store/modules/tabsRouter.ts +73 -0
- package/template-design-pro/src/store/modules/user.ts +153 -0
- package/template-design-pro/src/utils/accessToken.ts +93 -0
- package/template-design-pro/src/utils/crypto.ts +39 -0
- package/template-design-pro/src/utils/env.ts +52 -0
- package/template-design-pro/src/utils/fetchFile.ts +79 -0
- package/template-design-pro/src/utils/index.ts +127 -0
- package/template-design-pro/src/utils/pageTitle.ts +17 -0
- package/template-design-pro/src/utils/request/XHR.ts +131 -0
- package/template-design-pro/src/utils/request/axiosCancel.ts +60 -0
- package/template-design-pro/src/utils/request/checkStatus.ts +26 -0
- package/template-design-pro/src/utils/request/index.ts +145 -0
- package/template-design-pro/src/utils/request/typings.ts +114 -0
- package/template-design-pro/src/utils/storage.ts +194 -0
- package/template-design-pro/src/utils/uploadFile.ts +26 -0
- package/template-design-pro/src/utils/util.ts +278 -0
- package/template-design-pro/src/utils/validate.ts +221 -0
- package/template-design-pro/src/views/Iframe/index.vue +76 -0
- package/template-design-pro/src/views/MenuOne/index.vue +15 -0
- package/template-design-pro/src/views/MenuTwo/index.vue +13 -0
- package/template-design-pro/src/views/exception/403/index.vue +9 -0
- package/template-design-pro/src/views/exception/404/index.vue +9 -0
- package/template-design-pro/src/views/user/login/index.vue +110 -0
- package/template-design-pro/src/views/user/login/style.less +38 -0
- package/template-design-pro/stylelint.config.js +106 -0
- package/template-design-pro/tests/__mocks__/fileMock.ts +1 -0
- package/template-design-pro/tests/__mocks__/styleMock.ts +1 -0
- package/template-design-pro/tests/__mocks__/workerMock.ts +5 -0
- package/template-design-pro/tests/server/README.md +15 -0
- package/template-design-pro/tests/server/controller/FileController.ts +18 -0
- package/template-design-pro/tests/server/controller/UserController.ts +15 -0
- package/template-design-pro/tests/server/ecosystem.config.js +18 -0
- package/template-design-pro/tests/server/index.ts +63 -0
- package/template-design-pro/tests/server/nodemon.json +8 -0
- package/template-design-pro/tests/server/package.json +36 -0
- package/template-design-pro/tests/server/routes.ts +23 -0
- package/template-design-pro/tests/server/service/FileService.ts +54 -0
- package/template-design-pro/tests/server/service/UserService.ts +25 -0
- package/template-design-pro/tests/server/tsconfig.json +15 -0
- package/template-design-pro/tests/server/utils.ts +9 -0
- package/template-design-pro/tests/server/yarn.lock +2955 -0
- package/template-design-pro/tests/test.spec.ts +16 -0
- package/template-design-pro/tsconfig.json +47 -0
- package/template-design-pro/types/auto-imports.d.ts +61 -0
- package/template-design-pro/types/config.d.ts +100 -0
- package/template-design-pro/types/global.d.ts +103 -0
- package/template-design-pro/types/gx-components.d.ts +24 -0
- package/template-design-pro/types/index.d.ts +13 -0
- package/template-design-pro/types/mock.d.ts +23 -0
- package/template-design-pro/types/module.d.ts +16 -0
- package/template-design-pro/types/response.d.ts +15 -0
- package/template-design-pro/types/route.d.ts +89 -0
- package/template-design-pro/vite.config.ts +136 -0
- package/template-design-pro/yarn.lock +9697 -0
@@ -0,0 +1,153 @@
|
|
1
|
+
import { reactive, toRefs } from 'vue'
|
2
|
+
import { defineStore } from 'pinia'
|
3
|
+
import { message, notification } from 'ant-design-vue'
|
4
|
+
import config from '/config/config'
|
5
|
+
import { getUserInfo, login, logout } from '@/services/controller/user'
|
6
|
+
import { getAccessToken, removeAccessToken, setAccessToken } from '@/utils/accessToken'
|
7
|
+
import { timeFix } from '@/utils/util'
|
8
|
+
import { useStoreRoutes } from './routes'
|
9
|
+
import { useStorePermission } from './permission'
|
10
|
+
import { useStoreTabsRouter } from './tabsRouter'
|
11
|
+
|
12
|
+
const { tokenName } = config.defaultSettings
|
13
|
+
|
14
|
+
interface RolesInfo {
|
15
|
+
roleId: number;
|
16
|
+
roleKey: string;
|
17
|
+
roleName: string;
|
18
|
+
status: string;
|
19
|
+
}
|
20
|
+
|
21
|
+
export interface UserInfo {
|
22
|
+
admin?: boolean;
|
23
|
+
userId?: number;
|
24
|
+
roles?: RolesInfo[];
|
25
|
+
roleIds?: number[];
|
26
|
+
userName?: string;
|
27
|
+
nickName?: string;
|
28
|
+
avatar?: string;
|
29
|
+
loginDate?: string;
|
30
|
+
}
|
31
|
+
|
32
|
+
export interface UserState {
|
33
|
+
accessToken: string;
|
34
|
+
userInfo: UserInfo;
|
35
|
+
userName: string;
|
36
|
+
loginName: string;
|
37
|
+
avatar: string;
|
38
|
+
}
|
39
|
+
|
40
|
+
export const useStoreUser = defineStore('user', () => {
|
41
|
+
const routes = useStoreRoutes()
|
42
|
+
const auth = useStorePermission()
|
43
|
+
const tabsRouter = useStoreTabsRouter()
|
44
|
+
|
45
|
+
const state = reactive({
|
46
|
+
accessToken: getAccessToken(),
|
47
|
+
userInfo: {},
|
48
|
+
userName: '',
|
49
|
+
loginName: '',
|
50
|
+
avatar: ''
|
51
|
+
} as UserState)
|
52
|
+
|
53
|
+
/**
|
54
|
+
* @Author gx12358
|
55
|
+
* @DateTime 2022/1/11
|
56
|
+
* @lastTime 2022/1/11
|
57
|
+
* @description 登录拦截放行时,设置虚拟角色
|
58
|
+
*/
|
59
|
+
const setVirtualRoles = () => {
|
60
|
+
auth.changeValue('admin', true)
|
61
|
+
state.avatar = 'https://i.gtimg.cn/club/item/face/img/2/15922_100.gif'
|
62
|
+
state.userName = 'admin(未开启登录拦截)'
|
63
|
+
return true
|
64
|
+
}
|
65
|
+
|
66
|
+
/**
|
67
|
+
* @Author gx12358
|
68
|
+
* @DateTime 2022/1/11
|
69
|
+
* @lastTime 2022/1/11
|
70
|
+
* @description 登录
|
71
|
+
*/
|
72
|
+
const userLogin = async (params) => {
|
73
|
+
const response: any = await login(params)
|
74
|
+
const accessToken = response?.data?.[tokenName]
|
75
|
+
if (accessToken) {
|
76
|
+
const expires_in = response?.data?.expires_in
|
77
|
+
state.accessToken = accessToken
|
78
|
+
setAccessToken(accessToken, expires_in ? expires_in * 60 * 1000 : 0)
|
79
|
+
return true
|
80
|
+
}
|
81
|
+
return false
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* @Author gx12358
|
86
|
+
* @DateTime 2022/1/11
|
87
|
+
* @lastTime 2022/1/11
|
88
|
+
* @description 获取用户信息
|
89
|
+
*/
|
90
|
+
const queryUserInfo = async () => {
|
91
|
+
const response: any = await getUserInfo()
|
92
|
+
const { roles, user, permissions } = response
|
93
|
+
if (!user || Object.keys(user).length === 0) {
|
94
|
+
message.error(`验证失败,请重新登录...`)
|
95
|
+
return false
|
96
|
+
}
|
97
|
+
const { userName, avatar, nickName } = user as UserInfo
|
98
|
+
if (userName && roles && Array.isArray(roles)) {
|
99
|
+
auth.changeValue('role', roles)
|
100
|
+
auth.changeValue('ability', permissions)
|
101
|
+
state.userName = userName
|
102
|
+
state.loginName = nickName
|
103
|
+
state.avatar = avatar
|
104
|
+
state.userInfo = user
|
105
|
+
notification.success({
|
106
|
+
message: `欢迎登录${userName}`,
|
107
|
+
description: `${timeFix()}!`
|
108
|
+
})
|
109
|
+
} else {
|
110
|
+
message.error('用户信息接口异常')
|
111
|
+
return false
|
112
|
+
}
|
113
|
+
return true
|
114
|
+
}
|
115
|
+
|
116
|
+
const updateUserInfo = (params: UserInfo) => {
|
117
|
+
Object.assign(state.userInfo, { ...params })
|
118
|
+
}
|
119
|
+
|
120
|
+
/**
|
121
|
+
* @Author gx12358
|
122
|
+
* @DateTime 2022/5/15
|
123
|
+
* @lastTime 2022/5/15
|
124
|
+
* @description 用户退出登录
|
125
|
+
*/
|
126
|
+
const userLogut = async () => {
|
127
|
+
await logout({
|
128
|
+
userName: state.userName
|
129
|
+
})
|
130
|
+
resetPermissions()
|
131
|
+
}
|
132
|
+
|
133
|
+
const resetPermissions = () => {
|
134
|
+
state.accessToken = ''
|
135
|
+
setAccessToken('')
|
136
|
+
auth.changeValue('admin', false)
|
137
|
+
auth.changeValue('role', [])
|
138
|
+
auth.changeValue('ability', [])
|
139
|
+
routes.resetRoute()
|
140
|
+
tabsRouter.blankingTabs()
|
141
|
+
removeAccessToken()
|
142
|
+
}
|
143
|
+
|
144
|
+
return {
|
145
|
+
...toRefs(state),
|
146
|
+
userLogin,
|
147
|
+
userLogut,
|
148
|
+
queryUserInfo,
|
149
|
+
updateUserInfo,
|
150
|
+
setVirtualRoles,
|
151
|
+
resetPermissions
|
152
|
+
}
|
153
|
+
})
|
@@ -0,0 +1,93 @@
|
|
1
|
+
import config from '/config/config'
|
2
|
+
import {
|
3
|
+
setStorage,
|
4
|
+
getStorage,
|
5
|
+
removeStorage,
|
6
|
+
getCookie,
|
7
|
+
setCookie,
|
8
|
+
delCookie
|
9
|
+
} from '@/utils/storage'
|
10
|
+
|
11
|
+
const { storage, tokenTableName } = config.defaultSettings
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @Author gx12358
|
15
|
+
* @DateTime 2021/12/27
|
16
|
+
* @lastTime 2021/12/27
|
17
|
+
* @description 获取accessToken
|
18
|
+
*/
|
19
|
+
export function getAccessToken() {
|
20
|
+
if (storage) {
|
21
|
+
if ('localStorage' === storage) {
|
22
|
+
return getStorage({ key: tokenTableName })
|
23
|
+
} else if ('sessionStorage' === storage) {
|
24
|
+
return getStorage({ key: tokenTableName, type: 'session' })
|
25
|
+
} else if ('cookie' === storage) {
|
26
|
+
return getCookie(tokenTableName)
|
27
|
+
} else {
|
28
|
+
return getStorage({ key: tokenTableName })
|
29
|
+
}
|
30
|
+
} else {
|
31
|
+
return getStorage({ key: tokenTableName })
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
/**
|
36
|
+
* @author gx12358 2539306317@qq.com
|
37
|
+
* @description 存储accessToken
|
38
|
+
* @param accessToken
|
39
|
+
* @returns {void|*}
|
40
|
+
*/
|
41
|
+
export function setAccessToken(accessToken: string, expired?: number) {
|
42
|
+
if (storage) {
|
43
|
+
if ('localStorage' === storage) {
|
44
|
+
return setStorage({
|
45
|
+
key: tokenTableName,
|
46
|
+
value: accessToken,
|
47
|
+
expired
|
48
|
+
})
|
49
|
+
} else if ('sessionStorage' === storage) {
|
50
|
+
return setStorage({
|
51
|
+
key: tokenTableName,
|
52
|
+
value: accessToken,
|
53
|
+
expired,
|
54
|
+
type: 'session'
|
55
|
+
})
|
56
|
+
} else if ('cookie' === storage) {
|
57
|
+
return setCookie(tokenTableName, accessToken, expired)
|
58
|
+
} else {
|
59
|
+
return setStorage({
|
60
|
+
key: tokenTableName,
|
61
|
+
value: accessToken,
|
62
|
+
expired
|
63
|
+
})
|
64
|
+
}
|
65
|
+
} else {
|
66
|
+
return setStorage({
|
67
|
+
key: tokenTableName,
|
68
|
+
value: accessToken,
|
69
|
+
expired
|
70
|
+
})
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* @author gx12358 2539306317@qq.com
|
76
|
+
* @description 移除accessToken
|
77
|
+
* @returns {void|Promise<void>}
|
78
|
+
*/
|
79
|
+
export function removeAccessToken() {
|
80
|
+
if (storage) {
|
81
|
+
if ('localStorage' === storage) {
|
82
|
+
return removeStorage(tokenTableName)
|
83
|
+
} else if ('sessionStorage' === storage) {
|
84
|
+
return removeStorage(tokenTableName, 'session')
|
85
|
+
} else if ('cookie' === storage) {
|
86
|
+
return delCookie(tokenTableName)
|
87
|
+
} else {
|
88
|
+
return removeStorage(tokenTableName)
|
89
|
+
}
|
90
|
+
} else {
|
91
|
+
return removeStorage(tokenTableName)
|
92
|
+
}
|
93
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import 'crypto-js/enc-utf8'
|
2
|
+
import 'crypto-js/tripledes'
|
3
|
+
import 'crypto-js/sha1'
|
4
|
+
import * as CryptoJS from 'crypto-js/core'
|
5
|
+
import { isJSONStr } from '@/utils/validate'
|
6
|
+
import { isObject, isArray } from '@gx-design-vue/pro-utils'
|
7
|
+
|
8
|
+
const key = '1234123412ABCDEF' //十六位十六进制数作为密钥
|
9
|
+
|
10
|
+
//加密方法
|
11
|
+
export function Encrypt(word) {
|
12
|
+
let str: string | object = word
|
13
|
+
if (isObject(word) || isArray(word)) {
|
14
|
+
str = JSON.stringify(word)
|
15
|
+
}
|
16
|
+
const keyHex = CryptoJS.enc.Utf8.parse(key)
|
17
|
+
const ivHex = CryptoJS.enc.Utf8.parse(key)
|
18
|
+
const encrypted = CryptoJS.DES.encrypt(str, keyHex, {
|
19
|
+
iv: ivHex,
|
20
|
+
mode: CryptoJS.mode.CBC,
|
21
|
+
padding: CryptoJS.pad.Pkcs7
|
22
|
+
})
|
23
|
+
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
|
24
|
+
}
|
25
|
+
|
26
|
+
//解密方法
|
27
|
+
export function Decrypt(word) {
|
28
|
+
const keyHex = CryptoJS.enc.Utf8.parse(key)
|
29
|
+
const ivHex = CryptoJS.enc.Utf8.parse(key)
|
30
|
+
const decrypted = CryptoJS.DES.decrypt({
|
31
|
+
ciphertext: CryptoJS.enc.Base64.parse(word)
|
32
|
+
}, keyHex, {
|
33
|
+
iv: ivHex,
|
34
|
+
mode: CryptoJS.mode.CBC,
|
35
|
+
padding: CryptoJS.pad.Pkcs7
|
36
|
+
})
|
37
|
+
const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8)
|
38
|
+
return isJSONStr(decryptedStr.toString()) ? JSON.parse(decryptedStr.toString()) : decryptedStr.toString()
|
39
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
/**
|
2
|
+
* @Author gx12358
|
3
|
+
* @DateTime 2022/4/1
|
4
|
+
* @lastTime 2022/4/1
|
5
|
+
* @description 环境:开发
|
6
|
+
*/
|
7
|
+
export function isDev(): boolean {
|
8
|
+
const DEV = typeViteEnv('VITE_USE_MODE') === 'development'
|
9
|
+
return DEV
|
10
|
+
}
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @Author gx12358
|
14
|
+
* @DateTime 2022/4/1
|
15
|
+
* @lastTime 2022/4/1
|
16
|
+
* @description 环境:测试
|
17
|
+
*/
|
18
|
+
export function isTest(): boolean {
|
19
|
+
const PRO = typeViteEnv('VITE_USE_MODE') === 'test'
|
20
|
+
return PRO
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @Author gx12358
|
25
|
+
* @DateTime 2022/4/1
|
26
|
+
* @lastTime 2022/4/1
|
27
|
+
* @description 环境:正式
|
28
|
+
*/
|
29
|
+
export function isPro(): boolean {
|
30
|
+
return typeViteEnv('VITE_USE_MODE') === 'production'
|
31
|
+
}
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @Author gx12358
|
35
|
+
* @DateTime 2022/4/1
|
36
|
+
* @lastTime 2022/4/1
|
37
|
+
* @description 环境:测试、正式
|
38
|
+
*/
|
39
|
+
export function isBuild(): boolean {
|
40
|
+
return typeViteEnv('VITE_USE_MODE') !== 'development'
|
41
|
+
}
|
42
|
+
|
43
|
+
export function typeViteEnv(key: ViteEnvKey) {
|
44
|
+
let value = import.meta.env[key]
|
45
|
+
if (value) {
|
46
|
+
value = (value as string).replace(/\\n/g, '\n')
|
47
|
+
|
48
|
+
value = value === 'true' ? true : value === 'false' ? false : value
|
49
|
+
}
|
50
|
+
|
51
|
+
return value
|
52
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import type { Method } from 'axios'
|
2
|
+
import { message } from 'ant-design-vue'
|
3
|
+
import config from '/config/config'
|
4
|
+
import { useStoreUser } from '@gx-vuex'
|
5
|
+
import { tansParams } from '@/utils/util'
|
6
|
+
|
7
|
+
const { tokenName } = config.defaultSettings
|
8
|
+
|
9
|
+
export type DownLoadRequestConfig<D = any> = {
|
10
|
+
url: string;
|
11
|
+
method?: Method | string;
|
12
|
+
headers?: HeadersInit;
|
13
|
+
data?: D;
|
14
|
+
params?: any;
|
15
|
+
name?: string; // 下载的名称
|
16
|
+
direct?: boolean; // 是否直接使用url进行请求
|
17
|
+
read?: boolean; // 返回下载地址,不下载
|
18
|
+
showTip?: boolean; // 展示下载中字样
|
19
|
+
}
|
20
|
+
|
21
|
+
export default async function fetchFile(options: DownLoadRequestConfig): Promise<boolean | string> {
|
22
|
+
const user = useStoreUser()
|
23
|
+
if (options.showTip) {
|
24
|
+
message.loading({
|
25
|
+
content: `下载中,请耐心等待。。。。`,
|
26
|
+
key: 'updatable',
|
27
|
+
duration: 0
|
28
|
+
})
|
29
|
+
}
|
30
|
+
const opations: RequestInit = {
|
31
|
+
method: options.method,
|
32
|
+
headers: {
|
33
|
+
'Content-Type': 'application/json',
|
34
|
+
...options.headers
|
35
|
+
}
|
36
|
+
}
|
37
|
+
if (!options.direct) options.url = `${import.meta.env.VITE_BASE_URL}${options.url}`
|
38
|
+
if (user.accessToken && !options.direct)
|
39
|
+
opations.headers[tokenName] = `${user.accessToken}`
|
40
|
+
if (options.params) {
|
41
|
+
let url = options.url + '?' + tansParams(options.params)
|
42
|
+
url = url.slice(0, -1)
|
43
|
+
options.url = url
|
44
|
+
}
|
45
|
+
if (options.method === 'post' && options.data) {
|
46
|
+
opations.body = JSON.stringify(options.data)
|
47
|
+
}
|
48
|
+
const response = await fetch(options.url, opations)
|
49
|
+
const fileName = options.name
|
50
|
+
? options.name
|
51
|
+
: response.headers.get('content-disposition')
|
52
|
+
? response.headers.get('content-disposition').split(';')[1].split('=')[1]
|
53
|
+
: ''
|
54
|
+
const blobResponse = await response.blob()
|
55
|
+
if (blobResponse) {
|
56
|
+
const a = window.document.createElement('a')
|
57
|
+
const downUrl = window.URL.createObjectURL(blobResponse)
|
58
|
+
if (options.read) return downUrl
|
59
|
+
a.href = downUrl
|
60
|
+
a.download = `${decodeURI(fileName)}`
|
61
|
+
a.click()
|
62
|
+
if (options.showTip) {
|
63
|
+
message.success({
|
64
|
+
content: `下载成功`,
|
65
|
+
key: 'updatable'
|
66
|
+
})
|
67
|
+
}
|
68
|
+
window.URL.revokeObjectURL(downUrl)
|
69
|
+
return true
|
70
|
+
} else {
|
71
|
+
if (options.showTip) {
|
72
|
+
message.success({
|
73
|
+
content: `下载失败`,
|
74
|
+
key: 'updatable'
|
75
|
+
})
|
76
|
+
}
|
77
|
+
return false
|
78
|
+
}
|
79
|
+
}
|
@@ -0,0 +1,127 @@
|
|
1
|
+
import PropTypes from 'ant-design-vue/es/_util/vue-types'
|
2
|
+
|
3
|
+
export { PropTypes }
|
4
|
+
|
5
|
+
/**
|
6
|
+
* @author gx12358 2539306317@qq.com
|
7
|
+
* @description 将url请求参数转为json格式
|
8
|
+
* @param url
|
9
|
+
* @returns {{}|any}
|
10
|
+
*/
|
11
|
+
export function paramObj(url) {
|
12
|
+
const search = url.split('?')[1]
|
13
|
+
if (!search) {
|
14
|
+
return {}
|
15
|
+
}
|
16
|
+
return JSON.parse(
|
17
|
+
'{"' +
|
18
|
+
decodeURIComponent(search)
|
19
|
+
.replace(/"/g, '\\"')
|
20
|
+
.replace(/&/g, '","')
|
21
|
+
.replace(/=/g, '":"')
|
22
|
+
.replace(/\+/g, ' ') +
|
23
|
+
'"}'
|
24
|
+
)
|
25
|
+
}
|
26
|
+
|
27
|
+
/**
|
28
|
+
* @author gx12358 2539306317@qq.com
|
29
|
+
* @description 父子关系的数组转换成树形结构数据
|
30
|
+
* @param data
|
31
|
+
* @returns {*}
|
32
|
+
*/
|
33
|
+
export function translateDataToTree(data) {
|
34
|
+
const parent = data.filter(
|
35
|
+
(value) => value.parentId === 'undefined' || value.parentId == null
|
36
|
+
)
|
37
|
+
const children = data.filter(
|
38
|
+
(value) => value.parentId !== 'undefined' && value.parentId != null
|
39
|
+
)
|
40
|
+
const translator = (parent, children) => {
|
41
|
+
parent.forEach((parent) => {
|
42
|
+
children.forEach((current, index) => {
|
43
|
+
if (current.parentId === parent.id) {
|
44
|
+
const temp = JSON.parse(JSON.stringify(children))
|
45
|
+
temp.splice(index, 1)
|
46
|
+
translator([ current ], temp)
|
47
|
+
typeof parent.children !== 'undefined'
|
48
|
+
? parent.children.push(current)
|
49
|
+
: (parent.children = [ current ])
|
50
|
+
}
|
51
|
+
})
|
52
|
+
})
|
53
|
+
}
|
54
|
+
translator(parent, children)
|
55
|
+
return parent
|
56
|
+
}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* @author gx12358 2539306317@qq.com
|
60
|
+
* @description 树形结构数据转换成父子关系的数组
|
61
|
+
* @param data
|
62
|
+
* @returns {[]}
|
63
|
+
*/
|
64
|
+
export function translateTreeToData(data) {
|
65
|
+
const result: any[] = []
|
66
|
+
data.forEach((item) => {
|
67
|
+
const loop = (data) => {
|
68
|
+
result.push({
|
69
|
+
id: data.id,
|
70
|
+
name: data.name,
|
71
|
+
parentId: data.parentId
|
72
|
+
})
|
73
|
+
const child = data.children
|
74
|
+
if (child) {
|
75
|
+
for (let i = 0; i < child.length; i++) {
|
76
|
+
loop(child[i])
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
loop(item)
|
81
|
+
})
|
82
|
+
return result
|
83
|
+
}
|
84
|
+
|
85
|
+
/**
|
86
|
+
* @author gx12358 2539306317@qq.com
|
87
|
+
* @description 10位时间戳转换
|
88
|
+
* @param time
|
89
|
+
* @returns {string}
|
90
|
+
*/
|
91
|
+
export function tenBitTimestamp(time) {
|
92
|
+
const date = new Date(time * 1000)
|
93
|
+
const y = date.getFullYear()
|
94
|
+
let m: any = date.getMonth() + 1
|
95
|
+
m = m < 10 ? '' + m : m
|
96
|
+
let d: any = date.getDate()
|
97
|
+
d = d < 10 ? '' + d : d
|
98
|
+
let h: any = date.getHours()
|
99
|
+
h = h < 10 ? '0' + h : h
|
100
|
+
let minute: any = date.getMinutes()
|
101
|
+
let second: any = date.getSeconds()
|
102
|
+
minute = minute < 10 ? '0' + minute : minute
|
103
|
+
second = second < 10 ? '0' + second : second
|
104
|
+
return y + '年' + m + '月' + d + '日 ' + h + ':' + minute + ':' + second //组合
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* @author gx12358 2539306317@qq.com
|
109
|
+
* @description 13位时间戳转换
|
110
|
+
* @param time
|
111
|
+
* @returns {string}
|
112
|
+
*/
|
113
|
+
export function thirteenBitTimestamp(time) {
|
114
|
+
const date = new Date(time / 1)
|
115
|
+
const y = date.getFullYear()
|
116
|
+
let m: any = date.getMonth() + 1
|
117
|
+
m = m < 10 ? '' + m : m
|
118
|
+
let d: any = date.getDate()
|
119
|
+
d = d < 10 ? '' + d : d
|
120
|
+
let h: any = date.getHours()
|
121
|
+
h = h < 10 ? '0' + h : h
|
122
|
+
let minute: any = date.getMinutes()
|
123
|
+
let second: any = date.getSeconds()
|
124
|
+
minute = minute < 10 ? '0' + minute : minute
|
125
|
+
second = second < 10 ? '0' + second : second
|
126
|
+
return y + '年' + m + '月' + d + '日 ' + h + ':' + minute + ':' + second //组合
|
127
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import config from '/config/config'
|
2
|
+
|
3
|
+
const { title, titleReverse, titleSeparator } = config.defaultSettings
|
4
|
+
|
5
|
+
/**
|
6
|
+
* @author gx12358 2539306317@qq.com
|
7
|
+
* @description 设置标题
|
8
|
+
* @param pageTitle
|
9
|
+
* @returns {string}
|
10
|
+
*/
|
11
|
+
export default function getPageTitle(pageTitle: string) {
|
12
|
+
let newTitles: any = []
|
13
|
+
if (pageTitle) newTitles.push(pageTitle)
|
14
|
+
if (title) newTitles.push(title)
|
15
|
+
if (titleReverse) newTitles = newTitles.reverse()
|
16
|
+
return newTitles.join(titleSeparator)
|
17
|
+
}
|
@@ -0,0 +1,131 @@
|
|
1
|
+
import type { AxiosResponse, AxiosError } from 'axios'
|
2
|
+
import axios from 'axios'
|
3
|
+
import { cloneDeep } from 'lodash-unified'
|
4
|
+
import qs from 'qs'
|
5
|
+
import { isFunction } from '@gx-design-vue/pro-utils'
|
6
|
+
import type { GAxiosInstance, GAxiosOptions } from './typings'
|
7
|
+
import { ContentTypeEnum, RequestEnum } from './typings'
|
8
|
+
import { AxiosCanceler } from './axiosCancel'
|
9
|
+
|
10
|
+
/**
|
11
|
+
* @Author gx12358
|
12
|
+
* @DateTime 2023/1/6
|
13
|
+
* @lastTime 2023/1/6
|
14
|
+
* @description 重新定义axios
|
15
|
+
*/
|
16
|
+
export class GAxios {
|
17
|
+
private axiosInstance: GAxiosInstance
|
18
|
+
private readonly options: GAxiosOptions
|
19
|
+
|
20
|
+
constructor(options: GAxiosOptions) {
|
21
|
+
this.options = options
|
22
|
+
this.axiosInstance = axios.create(options)
|
23
|
+
this.setupInterceptors()
|
24
|
+
}
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @description: Interceptor configuration 拦截器配置
|
28
|
+
*/
|
29
|
+
private setupInterceptors() {
|
30
|
+
const {
|
31
|
+
requestInterceptors,
|
32
|
+
requestInterceptorsCatch,
|
33
|
+
responseInterceptors,
|
34
|
+
responseInterceptorsCatch
|
35
|
+
} = this.options
|
36
|
+
|
37
|
+
const axiosCanceler = new AxiosCanceler()
|
38
|
+
|
39
|
+
this.axiosInstance.interceptors.request.use((config: GAxiosOptions) => {
|
40
|
+
const { ignoreCancelToken } = config
|
41
|
+
const ignoreCancel =
|
42
|
+
ignoreCancelToken !== undefined
|
43
|
+
? ignoreCancelToken
|
44
|
+
: this.options?.ignoreCancelToken
|
45
|
+
|
46
|
+
!ignoreCancel && axiosCanceler.addPending(config)
|
47
|
+
if (requestInterceptors && isFunction(requestInterceptors)) {
|
48
|
+
config = requestInterceptors(config)
|
49
|
+
}
|
50
|
+
return config
|
51
|
+
}, undefined)
|
52
|
+
|
53
|
+
// Request interceptor error capture
|
54
|
+
requestInterceptorsCatch &&
|
55
|
+
isFunction(requestInterceptorsCatch) &&
|
56
|
+
this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch)
|
57
|
+
|
58
|
+
// Response result interceptor processing
|
59
|
+
this.axiosInstance.interceptors.response.use((res: AxiosResponse) => {
|
60
|
+
res && axiosCanceler.removePending(res.config)
|
61
|
+
if (responseInterceptors && isFunction(responseInterceptors)) {
|
62
|
+
return responseInterceptors(res)
|
63
|
+
}
|
64
|
+
return res
|
65
|
+
}, undefined)
|
66
|
+
|
67
|
+
// Response result interceptor error capture
|
68
|
+
responseInterceptorsCatch &&
|
69
|
+
isFunction(responseInterceptorsCatch) &&
|
70
|
+
this.axiosInstance.interceptors.response.use(undefined, (error) => {
|
71
|
+
return responseInterceptorsCatch(this.axiosInstance, error)
|
72
|
+
})
|
73
|
+
}
|
74
|
+
|
75
|
+
// support form-data
|
76
|
+
supportFormData(config: GAxiosOptions) {
|
77
|
+
const headers = config.headers || this.options.headers
|
78
|
+
const contentType = headers?.['Content-Type'] || headers?.['content-type']
|
79
|
+
|
80
|
+
if (
|
81
|
+
contentType !== ContentTypeEnum.FORM_URLENCODED ||
|
82
|
+
!Reflect.has(config, 'data') ||
|
83
|
+
config.method?.toUpperCase() === RequestEnum.GET
|
84
|
+
) {
|
85
|
+
return config
|
86
|
+
}
|
87
|
+
|
88
|
+
return {
|
89
|
+
...config,
|
90
|
+
data: qs.stringify(config.data, { arrayFormat: 'brackets' })
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
request<T = ResponseResult | boolean>(config: GAxiosOptions): Promise<T> {
|
95
|
+
let conf: GAxiosOptions = cloneDeep(config)
|
96
|
+
|
97
|
+
const opt: GAxiosOptions = Object.assign({}, this.options, conf)
|
98
|
+
|
99
|
+
const { beforeRequestHook, requestCatchHook, transformResponseHook } = opt
|
100
|
+
if (beforeRequestHook && isFunction(beforeRequestHook)) {
|
101
|
+
conf = beforeRequestHook(opt)
|
102
|
+
}
|
103
|
+
|
104
|
+
conf = this.supportFormData(opt)
|
105
|
+
|
106
|
+
return new Promise((resolve) => {
|
107
|
+
this.axiosInstance
|
108
|
+
.request<any, AxiosResponse>(conf)
|
109
|
+
.then((res: AxiosResponse) => {
|
110
|
+
if (transformResponseHook && isFunction(transformResponseHook)) {
|
111
|
+
try {
|
112
|
+
const ret = transformResponseHook(res, config)
|
113
|
+
resolve(ret)
|
114
|
+
} catch (err) {
|
115
|
+
resolve(false as any)
|
116
|
+
return
|
117
|
+
}
|
118
|
+
return
|
119
|
+
}
|
120
|
+
resolve(res as unknown as Promise<T>)
|
121
|
+
})
|
122
|
+
.catch((e: Error | AxiosError) => {
|
123
|
+
if (requestCatchHook && isFunction(requestCatchHook)) {
|
124
|
+
resolve(requestCatchHook(e) as any)
|
125
|
+
return
|
126
|
+
}
|
127
|
+
resolve(false as any)
|
128
|
+
})
|
129
|
+
})
|
130
|
+
}
|
131
|
+
}
|