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 @@
@@ -44,9 +44,9 @@