From 5063cd50f8326e7d117d8a4bc68a02b227c1a455 Mon Sep 17 00:00:00 2001
From: rd <1344903914@qq.com>
Date: Fri, 18 Jul 2025 14:43:19 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=BC=E5=85=A5=E8=B4=A6=E5=8F=B7?=
=?UTF-8?q?=E5=90=8E=E8=BD=AE=E8=AF=A2=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/all/common.ts | 5 ++
.../components/export-task/index.vue | 4 +-
.../components/import-task/index.vue | 2 +-
src/utils/arcoD.tsx | 5 +-
.../components/add-account-modal/index.vue | 61 ++++++-------------
.../media-account/account-manage/index.vue | 32 +++++++++-
.../account-manage/renderComp.jsx | 40 ++++++++++++
vite.config.ts | 3 +-
8 files changed, 100 insertions(+), 52 deletions(-)
create mode 100644 src/views/property-marketing/media-account/account-manage/renderComp.jsx
diff --git a/src/api/all/common.ts b/src/api/all/common.ts
index a1a7b0c..e4ee6d6 100644
--- a/src/api/all/common.ts
+++ b/src/api/all/common.ts
@@ -28,3 +28,8 @@ export const deleteBatchTasks = (params = {}) => {
export const deleteTask = (id: string) => {
return Http.delete(`/v1/tasks/${id}`);
};
+
+// 任务中心-查询任务状态
+export const getTaskStatus = (id: string) => {
+ return Http.get(`/v1/tasks/${id}/status`);
+};
\ No newline at end of file
diff --git a/src/components/_base/navbar/components/download-center-modal/components/export-task/index.vue b/src/components/_base/navbar/components/download-center-modal/components/export-task/index.vue
index 4d3fa15..4078d77 100644
--- a/src/components/_base/navbar/components/download-center-modal/components/export-task/index.vue
+++ b/src/components/_base/navbar/components/download-center-modal/components/export-task/index.vue
@@ -107,8 +107,8 @@ export default {
};
const handleDownload = (record) => {
- showExportNotification(record.name)
- record.file && downloadByUrl(record.file);
+ showExportNotification(`正在下载“${record.name}”,请稍后...`)
+ // record.file && downloadByUrl(record.file);
};
const handleBatchDownload = () => {
// 批量下载逻辑
diff --git a/src/components/_base/navbar/components/download-center-modal/components/import-task/index.vue b/src/components/_base/navbar/components/download-center-modal/components/import-task/index.vue
index 76740bf..2f33fb5 100644
--- a/src/components/_base/navbar/components/download-center-modal/components/import-task/index.vue
+++ b/src/components/_base/navbar/components/download-center-modal/components/import-task/index.vue
@@ -107,7 +107,7 @@ export default {
};
const handleDownload = (record) => {
- showExportNotification(record.name)
+ showExportNotification(`正在下载“${record.name}”,请稍后...`)
};
const handleBatchDownload = () => {
// 批量下载逻辑
diff --git a/src/utils/arcoD.tsx b/src/utils/arcoD.tsx
index 2259dc2..d51f04e 100644
--- a/src/utils/arcoD.tsx
+++ b/src/utils/arcoD.tsx
@@ -1,14 +1,15 @@
import { Notification } from '@arco-design/web-vue';
import { IconLoading } from '@arco-design/web-vue/es/icon';
-export function showExportNotification(name: string) {
+export function showExportNotification(label: string, id: '') {
Notification.warning({
+ id,
showIcon: false,
closable: true,
content: () => (
-
{`正在下载“${name}”,请稍后...`}
+
{label}
),
duration: 3000,
diff --git a/src/views/property-marketing/media-account/account-manage/components/add-account-modal/index.vue b/src/views/property-marketing/media-account/account-manage/components/add-account-modal/index.vue
index 6f0c700..2c70712 100644
--- a/src/views/property-marketing/media-account/account-manage/components/add-account-modal/index.vue
+++ b/src/views/property-marketing/media-account/account-manage/components/add-account-modal/index.vue
@@ -22,16 +22,12 @@ import {
import TagSelect from '@/views/property-marketing/media-account/components/tag-select';
import GroupSelect from '@/views/property-marketing/media-account/components/group-select';
import AuthorizedAccountModal from '../authorized-account-modal';
-import ImportPromptModal from '../import-prompt-modal';
+// import ImportPromptModal from '../import-prompt-modal';
import StatusBox from '../status-box';
import SyncDataModal from '../sync-data-modal';
-import icon1 from '@/assets/img/media-account/icon-download.png';
-import icon2 from '@/assets/img/media-account/icon-delete.png';
-import icon3 from '@/assets/img/media-account/icon-dy.png';
-import icon4 from '@/assets/img/media-account/icon-xhs.png';
-import icon5 from '@/assets/img/media-account/icon-warn-1.png';
-import icon6 from '@/assets/img/media-account/icon-success.png';
+import { downloadByUrl } from '@/utils/tools';
+import { showExportNotification } from '@/utils/arcoD';
import {
fetchAccountTags,
fetchAccountGroups,
@@ -42,6 +38,13 @@ import {
batchMediaAccounts,
} from '@/api/all/propertyMarketing';
+import icon1 from '@/assets/img/media-account/icon-download.png';
+import icon2 from '@/assets/img/media-account/icon-delete.png';
+import icon3 from '@/assets/img/media-account/icon-dy.png';
+import icon4 from '@/assets/img/media-account/icon-xhs.png';
+import icon5 from '@/assets/img/media-account/icon-warn-1.png';
+import icon6 from '@/assets/img/media-account/icon-success.png';
+
const UploadStatus = {
DEFAULT: 'default',
WAITING: 'waiting',
@@ -77,7 +80,6 @@ export default {
const form = ref({ ...INITIAL_FORM });
const syncDataModalRef = ref(null);
const importLoading = ref(false);
- const CustomNotificationVisible = ref(false);
const rules = {
mobile: [
@@ -132,6 +134,7 @@ export default {
function removeFile() {
fileName.value = '';
file.value = null;
+ importLoading.value = false;
uploadStatus.value = UploadStatus.DEFAULT;
}
const reset = () => {
@@ -175,22 +178,20 @@ export default {
AMessage.warning('请上传要导入的文件');
return;
}
+
importLoading.value = true;
const formData = new FormData();
formData.append('file', file.value);
- const { code } = await batchMediaAccounts(formData, {
+ const { code, data } = await batchMediaAccounts(formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
});
if (code === 200) {
- AMessage.success('导入成功');
- emit('update');
+ const ID = 'IMPORT-ACCOUNT';
+ showExportNotification(`正在导入“${file.value.name}”,请稍后...`, ID);
+ emit('startQueryTaskStatus', data.id, ID);
onClose();
-
- // const ID = 'IMPORT-ACCOUNT';
- // renderNotification(ID);
- importPromptModalRef.value.open();
} else {
uploadStatus.value = UploadStatus.ERROR;
}
@@ -247,9 +248,6 @@ export default {
window.open(data.download_url, '_blank');
}
};
- const handleDownloadError = () => {
- console.log('handleDownloadError');
- };
const renderLabel = (label, tooltipContent) => {
return (
<>
@@ -260,31 +258,6 @@ export default {
>
);
};
- const renderNotification = (id, hasError) => {
- Notification.warning({
- id,
- showIcon: false,
- closable: true,
- content: (
-
-
-

-
导入完成
-
-
- 共导入 37 个账号,导入成功 32 个{hasError ? `,失败 5 个` : ''}
-
- {hasError && (
-
- 下载问题表格
-
- )}
-
- ),
- duration: 3000,
- class: `px-16px py-16px w-400px rounded-2px ${hasError ? 'bg-#FFF7E5' : 'bg-#EBF7F2'}`,
- });
- };
expose({ open });
@@ -452,7 +425,7 @@ export default {
emit('update')} />
-
+ {/* */}
);
diff --git a/src/views/property-marketing/media-account/account-manage/index.vue b/src/views/property-marketing/media-account/account-manage/index.vue
index 2de1a5c..ccdeda1 100644
--- a/src/views/property-marketing/media-account/account-manage/index.vue
+++ b/src/views/property-marketing/media-account/account-manage/index.vue
@@ -107,7 +107,7 @@
-
+
@@ -117,6 +117,7 @@