From 65c546588927b82ee30d2cd9046fd25688870444 Mon Sep 17 00:00:00 2001 From: songxuan <1668325326@qq.com> Date: Wed, 28 Sep 2022 10:40:19 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0responseType=20json?= =?UTF-8?q?=20=E4=BB=A5=E5=A4=96=E7=B1=BB=E5=9E=8B=E7=9A=84=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=A4=84=E7=90=86=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/utils/axios.ts | 146 +++++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/web/src/utils/axios.ts b/web/src/utils/axios.ts index 6a1a0dc7..e7c247b8 100644 --- a/web/src/utils/axios.ts +++ b/web/src/utils/axios.ts @@ -45,6 +45,7 @@ function createAxios(axiosConfig: AxiosRequestConfig, options: Options = {}, loa 'think-lang': config.lang.defaultLang, server: true, }, + responseType: 'json', }) options = Object.assign( @@ -94,88 +95,91 @@ function createAxios(axiosConfig: AxiosRequestConfig, options: Options = {}, loa removePending(response.config) options.loading && closeLoading(options) // 关闭loading - if (response.data && response.data.code !== 1) { - if (response.data.code == 409) { - if (!window.tokenRefreshing) { - window.tokenRefreshing = true - return refreshToken() - .then((res) => { - if (res.data.type == 'admin-refresh') { - adminInfo.setToken(res.data.token, 'token') - response.headers.batoken = `${res.data.token}` - window.requests.forEach((cb) => cb(res.data.token, 'admin-refresh')) - } else if (res.data.type == 'user-refresh') { - userInfo.setToken(res.data.token, 'token') - response.headers['ba-user-token'] = `${res.data.token}` - window.requests.forEach((cb) => cb(res.data.token, 'user-refresh')) - } - window.requests = [] - return Axios(response.config) - }) - .catch((err) => { - if (isAdminApp()) { - adminInfo.removeToken() - if (router.currentRoute.value.name != 'adminLogin') { - router.push({ name: 'adminLogin' }) - return Promise.reject(err) + if (response.config.responseType == 'json') { + if (response.data && response.data.code !== 1) { + if (response.data.code == 409) { + if (!window.tokenRefreshing) { + window.tokenRefreshing = true + return refreshToken() + .then((res) => { + if (res.data.type == 'admin-refresh') { + adminInfo.setToken(res.data.token, 'token') + response.headers.batoken = `${res.data.token}` + window.requests.forEach((cb) => cb(res.data.token, 'admin-refresh')) + } else if (res.data.type == 'user-refresh') { + userInfo.setToken(res.data.token, 'token') + response.headers['ba-user-token'] = `${res.data.token}` + window.requests.forEach((cb) => cb(res.data.token, 'user-refresh')) + } + window.requests = [] + return Axios(response.config) + }) + .catch((err) => { + if (isAdminApp()) { + adminInfo.removeToken() + if (router.currentRoute.value.name != 'adminLogin') { + router.push({ name: 'adminLogin' }) + return Promise.reject(err) + } else { + response.headers.batoken = '' + window.requests.forEach((cb) => cb('', 'admin-refresh')) + window.requests = [] + return Axios(response.config) + } } else { - response.headers.batoken = '' - window.requests.forEach((cb) => cb('', 'admin-refresh')) - window.requests = [] - return Axios(response.config) + userInfo.removeToken() + if (router.currentRoute.value.name != 'userLogin') { + router.push({ name: 'userLogin' }) + return Promise.reject(err) + } else { + response.headers['ba-user-token'] = '' + window.requests.forEach((cb) => cb('', 'user-refresh')) + window.requests = [] + return Axios(response.config) + } } - } else { - userInfo.removeToken() - if (router.currentRoute.value.name != 'userLogin') { - router.push({ name: 'userLogin' }) - return Promise.reject(err) + }) + .finally(() => { + window.tokenRefreshing = false + }) + } else { + return new Promise((resolve) => { + // 用函数形式将 resolve 存入,等待刷新后再执行 + window.requests.push((token: string, type: string) => { + if (type == 'admin-refresh') { + response.headers.batoken = `${token}` } else { - response.headers['ba-user-token'] = '' - window.requests.forEach((cb) => cb('', 'user-refresh')) - window.requests = [] - return Axios(response.config) + response.headers['ba-user-token'] = `${token}` } - } - }) - .finally(() => { - window.tokenRefreshing = false - }) - } else { - return new Promise((resolve) => { - // 用函数形式将 resolve 存入,等待刷新后再执行 - window.requests.push((token: string, type: string) => { - if (type == 'admin-refresh') { - response.headers.batoken = `${token}` - } else { - response.headers['ba-user-token'] = `${token}` - } - resolve(Axios(response.config)) + resolve(Axios(response.config)) + }) }) + } + } + if (options.showCodeMessage) { + ElNotification({ + type: 'error', + message: response.data.msg, }) } - } - if (options.showCodeMessage) { + // 自动跳转到路由name或path,仅限server端返回302的情况 + if (response.data.code == 302) { + if (response.data.data.routeName) { + router.push({ name: response.data.data.routeName }) + } else if (response.data.data.routePath) { + router.push({ path: response.data.data.routePath }) + } + } + // code不等于1, 页面then内的具体逻辑就不执行了 + return Promise.reject(response.data) + } else if (options.showSuccessMessage && response.data && response.data.code == 1) { ElNotification({ - type: 'error', - message: response.data.msg, + message: response.data.msg ? response.data.msg : i18n.global.t('axios.Operation successful'), + type: 'success', }) } - // 自动跳转到路由name或path,仅限server端返回302的情况 - if (response.data.code == 302) { - if (response.data.data.routeName) { - router.push({ name: response.data.data.routeName }) - } else if (response.data.data.routePath) { - router.push({ path: response.data.data.routePath }) - } - } - // code不等于1, 页面then内的具体逻辑就不执行了 - return Promise.reject(response.data) - } else if (options.showSuccessMessage && response.data && response.data.code == 1) { - ElNotification({ - message: response.data.msg ? response.data.msg : i18n.global.t('axios.Operation successful'), - type: 'success', - }) } + return options.reductDataFormat ? response.data : response }, (error) => { -- Gitee From aed673f19078d3805716e32b15f7394a33a6ad21 Mon Sep 17 00:00:00 2001 From: songxuan <1668325326@qq.com> Date: Fri, 30 Sep 2022 14:56:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/command/Crud/stubs/html/index.stub | 2 +- web/package.json | 5 +- web/src/components/table/header/index.vue | 295 ++++++++++--------- web/src/utils/baTable.ts | 11 +- web/src/utils/export.ts | 101 +++++++ 5 files changed, 273 insertions(+), 141 deletions(-) create mode 100644 web/src/utils/export.ts diff --git a/app/admin/command/Crud/stubs/html/index.stub b/app/admin/command/Crud/stubs/html/index.stub index 3bc38389..2aeb6fac 100644 --- a/app/admin/command/Crud/stubs/html/index.stub +++ b/app/admin/command/Crud/stubs/html/index.stub @@ -4,7 +4,7 @@ diff --git a/web/package.json b/web/package.json index 35b5863b..1b54a295 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,10 @@ "v-code-diff": "^0.3.10", "vue": "~3.2.25", "vue-i18n": "~9.1.9", - "vue-router": "~4.0.12" + "vue-router": "~4.0.12", + "xlsx": "^0.18.5", + "file-saver": "^2.0.5", + "papaparse": "^5.3.2" }, "devDependencies": { "@types/lodash": "~4.14.180", diff --git a/web/src/components/table/header/index.vue b/web/src/components/table/header/index.vue index 973dc406..78dae5cb 100644 --- a/web/src/components/table/header/index.vue +++ b/web/src/components/table/header/index.vue @@ -24,13 +24,13 @@ {{ baTable.table.expandAll ? t('Shrink all') : t('Expand all') }} @@ -59,19 +59,19 @@