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