feat: 换货退款拦截错误展示
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 11m41s

This commit is contained in:
luo
2026-07-22 10:14:13 +08:00
parent 5079f97326
commit fbfdd01eec
5 changed files with 134 additions and 7 deletions

View File

@@ -88,8 +88,11 @@ export class ExchangeService extends BaseService {
* POST /api/admin/exchanges
* @param data 创建参数
*/
static createExchange(data: CreateExchangeRequest): Promise<BaseResponse<ExchangeResponse>> {
return this.create<ExchangeResponse>('/api/admin/exchanges', data)
static createExchange(
data: CreateExchangeRequest,
config?: Record<string, any>
): Promise<BaseResponse<ExchangeResponse>> {
return this.post<BaseResponse<ExchangeResponse>>('/api/admin/exchanges', data, config)
}
/**

View File

@@ -50,6 +50,14 @@
@closed="handleCloseCreateDialog"
>
<ElForm ref="createFormRef" :model="createForm" :rules="createRules" label-width="120px">
<ElAlert
v-if="createFailureMessage"
:title="createFailureMessage"
type="error"
:closable="false"
show-icon
style="margin-bottom: 18px"
/>
<ElFormItem label="流程类型" prop="flow_type">
<ElSelect
v-model="createForm.flow_type"
@@ -123,6 +131,7 @@
:loading="oldCardSearchLoading"
style="width: 100%"
clearable
@change="handleOldIdentifierChange"
>
<ElOption
v-for="card in oldIotCardOptions"
@@ -154,6 +163,7 @@
:loading="oldDeviceSearchLoading"
style="width: 100%"
clearable
@change="handleOldIdentifierChange"
>
<ElOption
v-for="device in oldDeviceOptions"
@@ -374,7 +384,7 @@
import { ExchangeService, CardService, DeviceService } from '@/api/modules'
import type { ExchangeResponse } from '@/api/modules/exchange'
import type { StandaloneIotCard, Device } from '@/types/api'
import { ElMessage, ElTag, ElButton, ElMessageBox, ElSwitch } from 'element-plus'
import { ElAlert, ElMessage, ElTag, ElButton, ElMessageBox, ElSwitch } from 'element-plus'
import type { FormInstance, FormRules } from 'element-plus'
import type { SearchFormItem } from '@/types'
import { useCheckedColumns } from '@/composables/useCheckedColumns'
@@ -394,6 +404,7 @@
const shipFormRef = ref<FormInstance>()
const createDialogVisible = ref(false)
const createLoading = ref(false)
const createFailureMessage = ref('')
const tableRef = ref()
const createFormRef = ref<FormInstance>()
@@ -823,6 +834,7 @@
// 显示创建对话框
const showCreateDialog = () => {
createFailureMessage.value = ''
createDialogVisible.value = true
}
@@ -835,6 +847,7 @@
// 流程类型变更
const handleFlowTypeChange = async () => {
createFailureMessage.value = ''
// 清空新资产标识符和数据迁移选项
createForm.new_identifier = ''
createForm.migrate_data = false
@@ -854,6 +867,7 @@
// 旧资产类型变更
const handleOldAssetTypeChange = async () => {
createFailureMessage.value = ''
// 清空旧资产标识符
createForm.old_identifier = ''
oldIotCardOptions.value = []
@@ -882,6 +896,10 @@
}
}
const handleOldIdentifierChange = () => {
createFailureMessage.value = ''
}
const refreshExchangeDetail = async (id: number) => {
try {
const res = await ExchangeService.getExchangeDetail(id)
@@ -1198,6 +1216,7 @@
createFormRef.value?.validate(async (valid) => {
if (!valid || createLoading.value) return
createFailureMessage.value = ''
createLoading.value = true
try {
const exchangeReason =
@@ -1219,7 +1238,9 @@
requestData.migrate_data = createForm.migrate_data
}
const res = await ExchangeService.createExchange(requestData)
const res = await ExchangeService.createExchange(requestData, {
requestOptions: { errorMessageMode: 'none' }
})
if (res.code === 0) {
ElMessage.success('换货单创建成功')
createDialogVisible.value = false
@@ -1227,9 +1248,9 @@
return
}
ElMessage.error(res.msg || '换货单创建失败')
} catch (error) {
console.error('创建换货单失败:', error)
createFailureMessage.value = res.msg || '换货单创建失败'
} catch (error: any) {
createFailureMessage.value = error?.response?.data?.msg || '换货单创建失败'
} finally {
createLoading.value = false
}
@@ -1238,6 +1259,7 @@
// 关闭创建对话框
const handleCloseCreateDialog = () => {
createFailureMessage.value = ''
createFormRef.value?.resetFields()
// 清空搜索选项
oldIotCardOptions.value = []