From dc3fc550fe292043cc452dc9aeb0c8a1eeab3b30 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期四, 24 九月 2026 16:54:39 +0800
Subject: [PATCH] feat: 新增多模块导入导出入口
---
src/views/customerService/feedbackRegistration/index.vue | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 109 insertions(+), 0 deletions(-)
diff --git a/src/views/customerService/feedbackRegistration/index.vue b/src/views/customerService/feedbackRegistration/index.vue
index bcbb326..60aed6d 100644
--- a/src/views/customerService/feedbackRegistration/index.vue
+++ b/src/views/customerService/feedbackRegistration/index.vue
@@ -95,6 +95,10 @@
</div>
<div>
<el-button @click="handleOut">瀵煎嚭</el-button>
+ <el-button type="info"
+ plain
+ icon="Upload"
+ @click="handleImport">瀵煎叆</el-button>
<el-button type="danger"
plain
@click="handleDelete">鍒犻櫎</el-button>
@@ -113,6 +117,42 @@
<form-dia ref="formDia"
@close="handleQuery"></form-dia>
<view-dia ref="viewDia"></view-dia>
+ <!-- 鍙嶉鐧昏瀵煎叆瀵硅瘽妗� -->
+ <el-dialog :title="upload.title"
+ v-model="upload.open"
+ width="400px"
+ append-to-body>
+ <el-upload ref="uploadRef"
+ :limit="1"
+ accept=".xlsx, .xls"
+ :headers="upload.headers"
+ :action="upload.url"
+ :disabled="upload.isUploading"
+ :on-progress="handleFileUploadProgress"
+ :on-success="handleFileSuccess"
+ :on-error="handleFileError"
+ :auto-upload="false"
+ drag>
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <template #tip>
+ <div class="el-upload__tip text-center">
+ <span>浠呭厑璁稿鍏� xls銆亁lsx 鏍煎紡鏂囦欢銆�</span>
+ <el-link type="primary"
+ :underline="false"
+ style="font-size: 12px; vertical-align: baseline"
+ @click="importTemplate">涓嬭浇妯℃澘</el-link>
+ </div>
+ </template>
+ </el-upload>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary"
+ @click="submitFileForm">纭� 瀹�</el-button>
+ <el-button @click="upload.open = false">鍙� 娑�</el-button>
+ </div>
+ </template>
+ </el-dialog>
</div>
</template>
@@ -135,6 +175,7 @@
getSalesLedgerDetail,
} from "@/api/customerService/index.js";
import useUserStore from "@/store/modules/user.js";
+ import { getToken } from "@/utils/auth.js";
const { proxy } = getCurrentInstance();
const userStore = useUserStore();
import { Document, FolderOpened, UserFilled } from "@element-plus/icons-vue";
@@ -328,6 +369,16 @@
};
const formDia = ref();
const viewDia = ref();
+ const uploadRef = ref();
+
+ // 瀵煎叆寮圭獥
+ const upload = reactive({
+ open: false,
+ title: "",
+ isUploading: false,
+ headers: { Authorization: "Bearer " + getToken() },
+ url: import.meta.env.VITE_APP_BASE_API + "/afterSalesService/import",
+ });
// 瀛楀吀鑾峰彇
/*
@@ -434,6 +485,64 @@
});
};
+ /** 瀵煎叆鎸夐挳鎿嶄綔 */
+ const handleImport = () => {
+ upload.title = "鍙嶉鐧昏瀵煎叆";
+ upload.open = true;
+ };
+
+ /** 涓嬭浇妯℃澘 */
+ const importTemplate = () => {
+ proxy.download(
+ "/afterSalesService/importTemplate",
+ {},
+ "鍙嶉鐧昏瀵煎叆妯℃澘.xlsx"
+ );
+ };
+
+ /** 鎻愪氦涓婁紶鏂囦欢 */
+ const submitFileForm = () => {
+ upload.isUploading = true;
+ uploadRef.value.submit();
+ };
+
+ /** 鏂囦欢涓婁紶涓鐞� */
+ const handleFileUploadProgress = () => {
+ upload.isUploading = true;
+ };
+
+ /** 鏂囦欢涓婁紶鎴愬姛澶勭悊 */
+ const handleFileSuccess = response => {
+ upload.isUploading = false;
+ upload.open = false;
+ uploadRef.value.clearFiles();
+ if (response.code === 200) {
+ const failCount = response.failCount || 0;
+ if (failCount > 0) {
+ const errors = Array.isArray(response.errors) ? response.errors : [];
+ proxy.$modal
+ .alert(`${response.msg}\n\n${errors.join("\n")}`, "瀵煎叆缁撴灉", {
+ confirmButtonText: "鐭ラ亾浜�",
+ dangerouslyUseHTMLString: false,
+ })
+ .then(() => {
+ getList();
+ });
+ } else {
+ proxy.$modal.msgSuccess(response.msg || "瀵煎叆鎴愬姛");
+ getList();
+ }
+ } else {
+ proxy.$modal.msgError(response.msg || "瀵煎叆澶辫触");
+ }
+ };
+
+ /** 鏂囦欢涓婁紶澶辫触澶勭悊 */
+ const handleFileError = () => {
+ upload.isUploading = false;
+ proxy.$modal.msgError("鏂囦欢涓婁紶澶辫触");
+ };
+
const getStatsCountByStatus = (list, status) => {
if (!Array.isArray(list)) return 0;
return list.find(item => item?.status === status)?.count || 0;
--
Gitblit v1.9.3