diff --git a/src/utils/http.ts b/src/utils/http.ts
index 0bd0d5f..7fa1c93 100644
--- a/src/utils/http.ts
+++ b/src/utils/http.ts
@@ -23,16 +23,29 @@ http.interceptors.request.use(config => {
})
http.interceptors.response.use(res => {
- return res.data
+ const responseBody = res.data
+ // 统一响应格式处理
+ switch (responseBody.code) {
+ case 0:
+ // 成功,直接返回数据
+ return responseBody.data
+ case -1:
+ // 失败,显示错误信息
+ ElMessage.error(responseBody.message || '请求失败')
+ return Promise.reject(new Error(responseBody.message || '请求失败'))
+ default:
+ // 其他情况,兼容没有包装格式的响应
+ return res.data
+ }
}, err => {
- if (err.response.status >= 500) {
+ if (err.response?.status >= 500) {
ElMessage.error('服务器内部错误')
- } else if (err.response.status >= 400) {
- if (typeof err.response.data.message === 'string') {
- ElMessage.warning(err.response.data.message)
- } else if (Array.isArray(err.response.data.message)) {
- let message = err.response.data.message.join('
')
- ElMessage.warning(message)
+ } else if (err.response?.status >= 400) {
+ const message = err.response.data?.message
+ if (typeof message === 'string') {
+ ElMessage.error(message)
+ } else if (Array.isArray(message)) {
+ ElMessage.error(message.join('
'))
}
if (err.response.status === 403) {
router.push('/login')
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 358c250..d7e08d8 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -91,11 +91,9 @@ if (!store.state.loginInfo.token) {
router.push('/login')
} else {
http.post<{token: string}, any>('/api/v2/common/verifyToken', {token: store.state.loginInfo.token}).then(data => {
- if (data.status) {
- store.commit('login', {token: data.newToken || store.state.loginInfo.token, userInfo: data.userInfo})
- } else {
- router.push('/login')
- }
+ store.commit('login', {token: data.newToken || store.state.loginInfo.token, userInfo: data.userInfo})
+ }).catch(() => {
+ router.push('/login')
})
}
diff --git a/src/views/api/Hitokoto.vue b/src/views/api/Hitokoto.vue
index 4ebeb28..244cdc1 100644
--- a/src/views/api/Hitokoto.vue
+++ b/src/views/api/Hitokoto.vue
@@ -105,7 +105,7 @@ async function loadData() {
selectedData = []
loading.value = false
total.value = data.total
- hitokotoData.value = data.data
+ hitokotoData.value = data.list
}
setLoadData(loadData)
diff --git a/src/views/api/Music.vue b/src/views/api/Music.vue
index 673d1be..afae26e 100644
--- a/src/views/api/Music.vue
+++ b/src/views/api/Music.vue
@@ -211,7 +211,7 @@ async function loadData() {
selectedIds = []
loading.value = false
total.value = data.total
- musicData.value = data.data
+ musicData.value = data.list
}
setLoadData(loadData)
diff --git a/src/views/api/PhotoWall.vue b/src/views/api/PhotoWall.vue
index d491101..fbf067b 100644
--- a/src/views/api/PhotoWall.vue
+++ b/src/views/api/PhotoWall.vue
@@ -117,7 +117,7 @@ async function loadData() {
selectedData = []
loading.value = false
total.value = data.total
- photowallData.value = data.data
+ photowallData.value = data.list
}
setLoadData(loadData)
diff --git a/src/views/api/SourceImage.vue b/src/views/api/SourceImage.vue
index bbe94ce..5bc77c3 100644
--- a/src/views/api/SourceImage.vue
+++ b/src/views/api/SourceImage.vue
@@ -112,7 +112,7 @@ async function loadData(): Promise {
selectedData = []
loading.value = false
total.value = data.total
- sourceImageData.value = data.data
+ sourceImageData.value = data.list
}
setLoadData(loadData)
diff --git a/src/views/system/Article.vue b/src/views/system/Article.vue
index f234a64..4689b88 100644
--- a/src/views/system/Article.vue
+++ b/src/views/system/Article.vue
@@ -165,7 +165,7 @@ async function loadData() {
selectedData = []
loading.value = false
total.value = data.total
- articleData.value = data.data
+ articleData.value = data.list
}
setLoadData(loadData)
@@ -175,24 +175,16 @@ function splitWord() {
return
}
ElMessageBox.confirm(`是否确认对选中的${selectedData.length}篇文章执行分词处理?`, '操作确认', {type: 'info'}).then(async () => {
- const data = await http.put<{_ids: string[]}, any>('/api/v2/article/splitWord', {_ids: selectedData})
- if (data.status) {
- ElMessage.success(data.message)
- } else {
- ElMessage.warning(data.message)
- }
- }).catch(() => {})
+ const successNum = await http.put<{_ids: string[]}, any>('/api/v2/article/splitWord', {_ids: selectedData})
+ ElMessage.success(`${successNum}篇文章分词处理成功`)
+ })
}
function pullArticles() {
ElMessageBox.confirm('确认拉取全部文章?', '操作确认', {type: 'info'}).then(async () => {
- const data = await http.put('/api/v2/article/pull')
- if (data.status) {
- ElMessage.success(data.message)
- loadData()
- } else {
- ElMessage.warning(data.message)
- }
- }).catch(() => {})
+ const { updateCount, createCount } = await http.put('/api/v2/article/pull')
+ ElMessage.success(`拉取文章完成,更新 ${updateCount} 篇,创建 ${createCount} 篇`)
+ loadData()
+ })
}
function dataSelect(selection: ArticleModel[]) {
selectedData = selection.map(item => item._id)
diff --git a/src/views/system/SystemConfig.vue b/src/views/system/SystemConfig.vue
index 51e7e45..054ce8f 100644
--- a/src/views/system/SystemConfig.vue
+++ b/src/views/system/SystemConfig.vue
@@ -122,14 +122,10 @@ async function save() {
function remove(row: SystemConfigModel) {
ElMessageBox.confirm(`是否确认删除 ${row.name} 配置项?`, '确认删除', {type: 'warning'}).then(async () => {
- const data = await http.delete<{params: {id: string}}, any>('/api/v2/system/config/delete', {params: {id: row._id}})
- if(data.code === 0) {
- ElMessage.success(data.message)
- loadData()
- } else {
- ElMessage.warning(data.message)
- }
- }).catch(() => {})
+ await http.delete<{params: {id: string}}, any>('/api/v2/system/config/delete', {params: {id: row._id}})
+ ElMessage.success('删除成功')
+ loadData()
+ })
}
function datetimeFormat(dateStr: string) {
diff --git a/src/views/system/SystemConfigAdd.vue b/src/views/system/SystemConfigAdd.vue
index 88bec34..865a84a 100644
--- a/src/views/system/SystemConfigAdd.vue
+++ b/src/views/system/SystemConfigAdd.vue
@@ -36,7 +36,7 @@ const ruleValidate = computed(() => ({
{ required: true, message: '请输入配置项名称', trigger: 'blur' },
{ validator: (rule: object, value: string, callback: Function) => {
http.get('/api/v2/system/config/exists', {params: {name: value, id: props.formData._id}}).then(data => {
- if(data.data.exists) {
+ if(data.exists) {
callback(new Error('配置项名称已存在'))
} else {
callback()
diff --git a/src/views/system/SystemRole.vue b/src/views/system/SystemRole.vue
index c8e62ef..6870c5e 100644
--- a/src/views/system/SystemRole.vue
+++ b/src/views/system/SystemRole.vue
@@ -143,7 +143,7 @@ async function loadData() {
const data = await http.get<{params: SystemRolePage}, any>('/api/v2/system/role/list', {params: search})
loading.value = false
total.value = data.total
- systemRoleData.value = data.data
+ systemRoleData.value = data.list
}
setLoadData(loadData)
@@ -195,14 +195,10 @@ function update(row: SystemRoleModel) {
function remove(row: SystemRoleModel) {
ElMessageBox.confirm(`是否确认删除 ${row.name} 角色?`, '确认删除', {type: 'warning'}).then(async () => {
- const data = await http.delete<{params: {id: string}}, any>('/api/v2/system/role/delete', {params: {id: row._id}})
- if(data.code === 0) {
- ElMessage.success(data.message)
- loadData()
- } else {
- ElMessage.warning(data.message)
- }
- }).catch(() => {})
+ await http.delete<{params: {id: string}}, any>('/api/v2/system/role/delete', {params: {id: row._id}})
+ ElMessage.success('删除成功')
+ loadData()
+ })
}
async function save() {
diff --git a/src/views/system/SystemUser.vue b/src/views/system/SystemUser.vue
index 4d047db..5bb9e57 100644
--- a/src/views/system/SystemUser.vue
+++ b/src/views/system/SystemUser.vue
@@ -55,7 +55,7 @@
-
+
@@ -110,12 +110,8 @@ const ruleValidate = computed(() => ({
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ validator: async (rule: object, value: string, callback: Function) => {
- const data = await http.get('/api/v2/system/user/exists', {params: {username: value, id: formData._id}})
- if(data.data.exists) {
- callback(new Error('用户名已存在'))
- } else {
- callback()
- }
+ const res = await http.get('/api/v2/system/user/exists', {params: {username: value, id: formData._id}})
+ res.exists ? callback(new Error('用户名已存在')) : callback()
}, trigger: 'blur'
}
],
@@ -131,7 +127,7 @@ async function loadData() {
const data = await http.get<{params: SystemUserPage}, any>('/api/v2/system/user/list', {params: search})
loading.value = false
total.value = data.total
- systemUserData.value = data.data
+ systemUserData.value = data.list
}
setLoadData(loadData)
@@ -174,14 +170,10 @@ async function save() {
function remove(row: SystemUserModel) {
ElMessageBox.confirm(`是否确认删除 ${row.username} 用户?`, '确认删除', {type: 'warning'}).then(async () => {
- const data = await http.delete<{params: {id: string}}, any>('/api/v2/system/user/delete', {params: {id: row._id}})
- if(data.code === 0) {
- ElMessage.success(data.message)
- loadData()
- } else {
- ElMessage.warning(data.message)
- }
- }).catch(() => {})
+ await http.delete<{params: {id: string}}, any>('/api/v2/system/user/delete', {params: {id: row._id}})
+ ElMessage.success('删除成功')
+ loadData()
+ })
}
function clearValidate() {