From 666060f23583af2fe63ff78b846efa083f1a246d Mon Sep 17 00:00:00 2001 From: qsh <> Date: Mon, 3 Nov 2025 12:07:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.base | 4 +- src/api/clue/afterSale.js | 9 +++++ src/config/axios/service.ts | 1 - src/views/Clue/Order/Comp/AfterSales.vue | 47 +++++++++++++++++++++++ src/views/Clue/Order/Comp/OrderRemark.vue | 1 - 5 files changed, 58 insertions(+), 4 deletions(-) diff --git a/.env.base b/.env.base index 9c6f2ee..c4e5a4a 100644 --- a/.env.base +++ b/.env.base @@ -4,9 +4,9 @@ VITE_NODE_ENV=development VITE_DEV=true # 请求路径 -VITE_BASE_URL='http://47.98.161.246:48080' +# VITE_BASE_URL='http://47.98.161.246:48080' # VITE_BASE_URL='http://114.215.207.150:48080' -# VITE_BASE_URL='http://localhost:48080' +VITE_BASE_URL='http://localhost:48080' # 高德地图key密钥 # 1寻驾 diff --git a/src/api/clue/afterSale.js b/src/api/clue/afterSale.js index 1321ec8..8cdd3c6 100644 --- a/src/api/clue/afterSale.js +++ b/src/api/clue/afterSale.js @@ -37,3 +37,12 @@ export const cancelApplyAfterSale = async (data) => { export const getAfterSaleDetail = async (params) => { return await request.get({ url: '/admin-api/crm/sign-after-sale/get', params }) } + +// 导入 +export const importAfterSales = async (data) => { + return await request.upload({ url: '/admin-api/crm/sign-after-sale/importAfterSales', data }) +} + +export const getAfterSalesTemplate = async () => { + return await request.get({ url: '/admin-api/crm/sign-after-sale/get-import-template' }) +} diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index 560b724..79453ee 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -50,7 +50,6 @@ const service: AxiosInstance = axios.create({ service.interceptors.request.use( (config: InternalAxiosRequestConfig) => { if (config.url?.startsWith('/out-api')) { - debugger config.baseURL = '' } // 是否需要设置 token diff --git a/src/views/Clue/Order/Comp/AfterSales.vue b/src/views/Clue/Order/Comp/AfterSales.vue index 189670c..affe73e 100644 --- a/src/views/Clue/Order/Comp/AfterSales.vue +++ b/src/views/Clue/Order/Comp/AfterSales.vue @@ -113,6 +113,20 @@ 批量审核 + 下载模板 + + 导入 + @@ -237,6 +251,7 @@ import DialogBatchAudit from './DialogBatchAudit.vue' import { removeNullField } from '@/utils' import { dateFormatter } from '@/utils/formatTime' import { useAppStore } from '@/store/modules/app' +import download from '@/utils/download' const afterSaleAuditDialog = ref() @@ -333,6 +348,38 @@ function handleAudit(row) { afterSaleAuditDialog.value.open(row) } +async function downloadTemplateFile() { + let data = await AfterSaleApi.getAfterSalesTemplate() + download.excel(data, '售后模板.xls') +} + +const fileBeforeUpload = (file) => { + let format = '.' + file.name.split('.')[1] + if (!['.xls', '.xlsx'].includes(format)) { + message.error(`请上传指定格式".xls,.xlsx"文件`) + return false + } + let isRightSize = file.size / 1024 / 1024 < 20 + if (!isRightSize) { + message.error('文件大小超过 20MB') + } + return isRightSize +} + +const uploading = ref(false) +async function afterSalesUpload(data) { + uploading.value = true + const fd = new FormData() + fd.append('file', data.file) + try { + await AfterSaleApi.importAfterSales(fd) + message.success('导入成功') + } finally { + uploading.value = false + getList() + } +} + const areaOptions = ref([]) function getOptions() { // 区域 diff --git a/src/views/Clue/Order/Comp/OrderRemark.vue b/src/views/Clue/Order/Comp/OrderRemark.vue index 3ba6268..d877d18 100644 --- a/src/views/Clue/Order/Comp/OrderRemark.vue +++ b/src/views/Clue/Order/Comp/OrderRemark.vue @@ -225,7 +225,6 @@ async function getList() { loading.value = true try { let params = { ...removeNullField(searchForm.value) } - const data = await getClueRemarkPage(params) tableList.value = data.list total.value = data.total