From 53ff0d3d3f39e9e1eca840d474c8c9a478a39fda Mon Sep 17 00:00:00 2001
From: cshaptx4869 <994774638@qq.com>
Date: Mon, 17 Jun 2024 11:39:49 +0800
Subject: [PATCH 1/2] =?UTF-8?q?refactor(PageContent):=20:recycle:=20?=
=?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E5=8F=82=E6=95=B0=E6=94=B9?=
=?UTF-8?q?=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/CURD/PageContent.vue | 14 +++++++-------
src/components/CURD/types.ts | 4 ++--
src/views/demo/curd/config/content.ts | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/components/CURD/PageContent.vue b/src/components/CURD/PageContent.vue
index 0d173cb6..90f04842 100644
--- a/src/components/CURD/PageContent.vue
+++ b/src/components/CURD/PageContent.vue
@@ -452,7 +452,7 @@
*.xlsx / *.xls
{
+ const importTemplate = props.contentConfig.importTemplate;
+ if (typeof importTemplate === "string") {
+ window.open(importTemplate);
+ } else if (typeof importTemplate === "function") {
+ importTemplate().then((response) => {
const fileData = response.data;
const fileName = decodeURI(
response.headers["content-disposition"].split(";")[1].split("=")[1]
@@ -742,7 +742,7 @@ function handleDownloadTemplate() {
saveXlsx(fileData, fileName);
});
} else {
- ElMessage.error("未配置importsTemplate");
+ ElMessage.error("未配置importTemplate");
}
}
// 导入确认
diff --git a/src/components/CURD/types.ts b/src/components/CURD/types.ts
index c2082033..af0cd7f9 100644
--- a/src/components/CURD/types.ts
+++ b/src/components/CURD/types.ts
@@ -92,10 +92,10 @@ export interface IContentConfig {
exportAction?: (queryParams: T) => Promise;
// 前端全量导出的网络请求函数(需返回promise)
exportsAction?: (queryParams: T) => Promise;
+ // 导入模板
+ importTemplate?: string | (() => Promise);
// 后端导入的网络请求函数(需返回promise)
importAction?: (file: File) => Promise;
- // 前端导入模板
- importsTemplate?: string | (() => Promise);
// 前端导入的网络请求函数(需返回promise)
importsAction?: (data: IObject[]) => Promise;
// 主键名(默认为id)
diff --git a/src/views/demo/curd/config/content.ts b/src/views/demo/curd/config/content.ts
index bda6a058..8a79fecb 100644
--- a/src/views/demo/curd/config/content.ts
+++ b/src/views/demo/curd/config/content.ts
@@ -29,7 +29,7 @@ const contentConfig: IContentConfig = {
return UserAPI.import(1, file);
},
exportAction: UserAPI.export,
- importsTemplate: UserAPI.downloadTemplate,
+ importTemplate: UserAPI.downloadTemplate,
importsAction(data) {
// 模拟导入数据
console.log("importsAction", data);
From edce9fcebadaf36a922b5a1c355cec424a2d7388 Mon Sep 17 00:00:00 2001
From: cshaptx4869 <994774638@qq.com>
Date: Mon, 17 Jun 2024 11:51:40 +0800
Subject: [PATCH 2/2] =?UTF-8?q?refactor(PageContent):=20:recycle:=20?=
=?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=9B=B8=E5=85=B3=E5=B1=9E=E6=80=A7=E5=92=8C?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=E5=91=BD=E5=90=8D=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/CURD/PageContent.vue | 54 ++++++++++++++---------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/src/components/CURD/PageContent.vue b/src/components/CURD/PageContent.vue
index 90f04842..9d185e3e 100644
--- a/src/components/CURD/PageContent.vue
+++ b/src/components/CURD/PageContent.vue
@@ -416,28 +416,28 @@
确 定
- 取 消
+ 取 消
@@ -706,19 +706,19 @@ function handleExports() {
// 导入表单
let isFileImport = false;
const uploadRef = ref();
-const importsModalVisible = ref(false);
-const importsFormRef = ref();
-const importsFormData = reactive<{
+const importModalVisible = ref(false);
+const importFormRef = ref();
+const importFormData = reactive<{
files: UploadUserFile[];
}>({
files: [],
});
-const importsFormRules: FormRules = {
+const importFormRules: FormRules = {
files: [{ required: true, message: "请选择文件" }],
};
// 打开导入弹窗
-function handleOpenImportsModal(isFile: boolean = false) {
- importsModalVisible.value = true;
+function handleOpenImportModal(isFile: boolean = false) {
+ importModalVisible.value = true;
isFileImport = isFile;
}
// 覆盖前一个文件
@@ -746,8 +746,8 @@ function handleDownloadTemplate() {
}
}
// 导入确认
-const handleImportsSubmit = useThrottleFn(() => {
- importsFormRef.value?.validate((valid: boolean) => {
+const handleImportSubmit = useThrottleFn(() => {
+ importFormRef.value?.validate((valid: boolean) => {
if (valid) {
if (isFileImport) {
handleImport();
@@ -758,11 +758,11 @@ const handleImportsSubmit = useThrottleFn(() => {
});
}, 3000);
// 关闭导入弹窗
-function handleCloseImportsModal() {
- importsModalVisible.value = false;
- importsFormRef.value?.resetFields();
+function handleCloseImportModal() {
+ importModalVisible.value = false;
+ importFormRef.value?.resetFields();
nextTick(() => {
- importsFormRef.value?.clearValidate();
+ importFormRef.value?.clearValidate();
});
}
// 文件导入
@@ -772,9 +772,9 @@ function handleImport() {
ElMessage.error("未配置importAction");
return;
}
- importAction(importsFormData.files[0].raw as File).then(() => {
+ importAction(importFormData.files[0].raw as File).then(() => {
ElMessage.success("导入数据成功");
- handleCloseImportsModal();
+ handleCloseImportModal();
handleRefresh(true);
});
}
@@ -786,7 +786,7 @@ function handleImports() {
return;
}
// 获取选择的文件
- const file = importsFormData.files[0].raw as File;
+ const file = importFormData.files[0].raw as File;
// 创建Workbook实例
const workbook = new ExcelJS.Workbook();
// 使用FileReader对象来读取文件内容
@@ -833,7 +833,7 @@ function handleImports() {
}
importsAction(data).then(() => {
ElMessage.success("导入数据成功");
- handleCloseImportsModal();
+ handleCloseImportModal();
handleRefresh(true);
});
})
@@ -854,7 +854,7 @@ function handleToolbar(name: string) {
handleOpenExportsModal();
break;
case "imports":
- handleOpenImportsModal();
+ handleOpenImportModal();
break;
case "search":
emit("searchClick");
@@ -866,7 +866,7 @@ function handleToolbar(name: string) {
handleDelete();
break;
case "import":
- handleOpenImportsModal(true);
+ handleOpenImportModal(true);
break;
case "export":
emit("exportClick");