From 105a4d06479b93f65270578c16558a4827a897fa Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 10 Jul 2025 15:05:02 +0800 Subject: [PATCH 01/97] =?UTF-8?q?feat:=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E4=B8=AD=E5=BF=83=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download-center-modal/constants.ts | 38 +++ .../delete-task-modal.vue | 59 ++++ .../download-center-modal/index.vue | 213 +++++++++++++++ .../download-center-modal/style.scss | 49 ++++ .../navbar/components/navbar-menu/index.vue | 83 ++++++ .../navbar/components/navbar-menu/style.scss | 45 ++++ .../navbar/components/right-side/index.vue | 132 +++++++++ src/components/_base/navbar/index.vue | 251 +----------------- src/styles/components/checkbox.scss | 1 + 9 files changed, 634 insertions(+), 237 deletions(-) create mode 100644 src/components/_base/navbar/components/download-center-modal/constants.ts create mode 100644 src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue create mode 100644 src/components/_base/navbar/components/download-center-modal/index.vue create mode 100644 src/components/_base/navbar/components/download-center-modal/style.scss create mode 100644 src/components/_base/navbar/components/navbar-menu/index.vue create mode 100644 src/components/_base/navbar/components/navbar-menu/style.scss create mode 100644 src/components/_base/navbar/components/right-side/index.vue diff --git a/src/components/_base/navbar/components/download-center-modal/constants.ts b/src/components/_base/navbar/components/download-center-modal/constants.ts new file mode 100644 index 0000000..3fbe202 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/constants.ts @@ -0,0 +1,38 @@ +export const INITIAL_FORM = { + search: '', + module: '', + column: undefined, + order: undefined, +}; +export const INITIAL_PAGE_INFO = { + page: 1, + pageSize: 20, + total: 0, +}; + +export const TABLE_COLUMNS = [ + { + title: '文件名称', + dataIndex: 'file_name', + width: 180, + fixed: 'left', + }, + { + title: '所属模块', + dataIndex: 'module', + width: 180, + }, + { + title: '下载时间', + dataIndex: 'time', + width: 180, + sortable: { + sortDirections: ['ascend', 'descend'], + }, + }, + { + title: '操作人员', + dataIndex: 'name', + width: 180, + }, +]; diff --git a/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue b/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue new file mode 100644 index 0000000..7a9aac2 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/_base/navbar/components/download-center-modal/index.vue b/src/components/_base/navbar/components/download-center-modal/index.vue new file mode 100644 index 0000000..a361651 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/index.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/src/components/_base/navbar/components/download-center-modal/style.scss b/src/components/_base/navbar/components/download-center-modal/style.scss new file mode 100644 index 0000000..72f458a --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/style.scss @@ -0,0 +1,49 @@ +.download-center-modal { + .arco-input-wrapper, + .arco-select-view-single, + .arco-select-view-multiple { + border-radius: 4px; + border-color: #d7d7d9; + background-color: #fff; + &:focus-within, + &.arco-input-focus, + &.arco-textarea-focus { + background-color: var(--color-bg-2); + border-color: rgb(var(--primary-6)); + box-shadow: 0 0 0 0 var(--color-primary-light-2); + } + } + .arco-modal-body { + padding: 24px 20px 40px; + .filter-row { + .filter-row-item { + &:not(:last-child) { + margin-right: 24px; + } + .label { + margin-right: 12px; + color: #211f24; + font-family: 'PuHuiTi-Regular'; + font-size: 14px; + font-style: normal; + font-weight: 400; + flex-shrink: 0; + line-height: 22px; /* 157.143% */ + } + :deep(.arco-space-item) { + width: 100%; + } + } + } + .file-table { + .cts { + color: var(--Text-1, #211f24); + font-family: 'PuHuiTi-Medium'; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + } + } +} diff --git a/src/components/_base/navbar/components/navbar-menu/index.vue b/src/components/_base/navbar/components/navbar-menu/index.vue new file mode 100644 index 0000000..0be5ffa --- /dev/null +++ b/src/components/_base/navbar/components/navbar-menu/index.vue @@ -0,0 +1,83 @@ + + + + + + diff --git a/src/components/_base/navbar/components/navbar-menu/style.scss b/src/components/_base/navbar/components/navbar-menu/style.scss new file mode 100644 index 0000000..23b52b3 --- /dev/null +++ b/src/components/_base/navbar/components/navbar-menu/style.scss @@ -0,0 +1,45 @@ +.navbar-menu { + display: flex; + align-items: center; + margin-left: 40px; + .menu-item-text { + color: var(--Text-2, #3c4043); + font-family: 'PuHuiTi-Medium'; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + :deep(.arco-menu) { + height: 100%; + .arco-menu-inner { + padding: 0 20px; + } + .arco-menu-item { + padding: 0; + position: relative; + &.arco-menu-selected { + .menu-item-text, + .arco-menu-selected-label { + color: #6d4cfe; + } + .arco-menu-selected-label { + background: var(--Brand-Brand-6, #6d4cfe); + height: 4px; + border-radius: 4px; + width: 50%; + position: absolute; + bottom: -8px; + left: 50%; + transform: translateX(-50%); + } + } + } + } + .arco-icon-down { + transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); + } + .arco-dropdown-open .arco-icon-down { + transform: rotate(180deg); + } +} diff --git a/src/components/_base/navbar/components/right-side/index.vue b/src/components/_base/navbar/components/right-side/index.vue new file mode 100644 index 0000000..8ccd249 --- /dev/null +++ b/src/components/_base/navbar/components/right-side/index.vue @@ -0,0 +1,132 @@ + + + + + + diff --git a/src/components/_base/navbar/index.vue b/src/components/_base/navbar/index.vue index 333167b..0db9bed 100644 --- a/src/components/_base/navbar/index.vue +++ b/src/components/_base/navbar/index.vue @@ -1,257 +1,34 @@ - - + - - diff --git a/src/styles/components/checkbox.scss b/src/styles/components/checkbox.scss index 2bc38b0..9b7302c 100644 --- a/src/styles/components/checkbox.scss +++ b/src/styles/components/checkbox.scss @@ -25,6 +25,7 @@ &.arco-checkbox-indeterminate { .arco-checkbox-icon { background-color: #6D4CFE !important; + border: none; } } From 789de0150e3076e12e037ea26226543edb5bb55a Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 10 Jul 2025 17:04:34 +0800 Subject: [PATCH 02/97] =?UTF-8?q?perf:=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download-center-modal/constants.ts | 2 +- .../delete-task-modal.vue | 4 ++- .../download-center-modal/index.vue | 33 +++++++++++++++---- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/components/_base/navbar/components/download-center-modal/constants.ts b/src/components/_base/navbar/components/download-center-modal/constants.ts index 3fbe202..a27052a 100644 --- a/src/components/_base/navbar/components/download-center-modal/constants.ts +++ b/src/components/_base/navbar/components/download-center-modal/constants.ts @@ -15,7 +15,7 @@ export const TABLE_COLUMNS = [ title: '文件名称', dataIndex: 'file_name', width: 180, - fixed: 'left', + // fixed: 'left', }, { title: '所属模块', diff --git a/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue b/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue index 7a9aac2..9b3ed35 100644 --- a/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue +++ b/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue @@ -11,7 +11,9 @@ diff --git a/src/components/_base/navbar/components/download-center-modal/index.vue b/src/components/_base/navbar/components/download-center-modal/index.vue index a361651..677ab00 100644 --- a/src/components/_base/navbar/components/download-center-modal/index.vue +++ b/src/components/_base/navbar/components/download-center-modal/index.vue @@ -37,6 +37,7 @@ ref="tableRef" :data="dataSource" column-resizable + row-key="id" :row-selection="{ type: 'checkbox', showCheckedAll: true, @@ -111,6 +112,8 @@ @page-size-change="onPageSizeChange" /> + + @@ -118,6 +121,7 @@ import { fetchAccountGroups } from '@/api/all/propertyMarketing'; import { INITIAL_FORM, INITIAL_PAGE_INFO, TABLE_COLUMNS } from './constants'; import { formatTableField, formatNumberShow, exactFormatTime } from '@/utils/tools'; +import DeleteTaskModal from './delete-task-modal.vue'; import icon1 from '@/assets/img/media-account/icon-delete.png'; @@ -127,6 +131,7 @@ const query = ref(cloneDeep(INITIAL_FORM)); const pageInfo = ref(cloneDeep(INITIAL_PAGE_INFO)); const selectedItems = ref([]); const groups = ref([]); +const deleteTaskModalRef = ref(null); const checkedAll = computed(() => selectedItems.value.length === dataSource.value.length); const indeterminate = computed( @@ -147,13 +152,20 @@ const onClose = () => { }; const getData = () => { - console.log('getData'); dataSource.value = [ { + id: 1, file_name: '投放指南20150701', module: '营销资产平台', time: 1752130053, - name: '张三三', + name: '张三三张三三张三三张三三张三三', + }, + { + id: 2, + file_name: '投放指南20150701', + module: '营销资产平台', + time: 1752130053, + name: '张三三张三三张三三张三三张三三', }, ]; }; @@ -171,8 +183,12 @@ const handleSorterChange = (column, order) => { const handleSearch = () => { console.log('handleSearch'); }; -const openDelete = () => { - console.log('openDelete'); +const openDelete = (record) => { + const { id, file_name } = record; + deleteTaskModalRef.value.open({ + id, + name: `“${file_name || '-'}”`, + }); }; const getGroups = async () => { const { code, data } = await fetchAccountGroups(); @@ -180,13 +196,13 @@ const getGroups = async () => { groups.value = data; } }; -const handleSelect = (selectedRowKeys) => { +const handleSelect = (selectedRowKeys, selectedRows) => { selectedItems.value = selectedRowKeys; }; const handleSelectAll = (checked) => { if (checked) { - selectedItems.value = dataSource.map((item) => item.id); + selectedItems.value = dataSource.value.map((item) => item.id); } else { selectedItems.value = []; } @@ -205,6 +221,11 @@ const onPageSizeChange = (pageSize) => { reload(); }; +const onBatchSuccess = () => { + selectedItems.value = []; + getData(); +}; + defineExpose({ open }); From c5d8568b82caf178f02597a6d10b909c1f61cd7d Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 14 Jul 2025 11:14:22 +0800 Subject: [PATCH 03/97] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download-center-modal/constants.ts | 6 +- .../download-center-modal/index.vue | 54 +++++++++++++--- .../download-center-modal/style.scss | 61 ++++++++++++++++++- .../navbar/components/navbar-menu/style.scss | 2 +- 4 files changed, 111 insertions(+), 12 deletions(-) diff --git a/src/components/_base/navbar/components/download-center-modal/constants.ts b/src/components/_base/navbar/components/download-center-modal/constants.ts index a27052a..3b1fef8 100644 --- a/src/components/_base/navbar/components/download-center-modal/constants.ts +++ b/src/components/_base/navbar/components/download-center-modal/constants.ts @@ -20,12 +20,12 @@ export const TABLE_COLUMNS = [ { title: '所属模块', dataIndex: 'module', - width: 180, + width: 120, }, { title: '下载时间', dataIndex: 'time', - width: 180, + width: 120, sortable: { sortDirections: ['ascend', 'descend'], }, @@ -33,6 +33,6 @@ export const TABLE_COLUMNS = [ { title: '操作人员', dataIndex: 'name', - width: 180, + width: 120, }, ]; diff --git a/src/components/_base/navbar/components/download-center-modal/index.vue b/src/components/_base/navbar/components/download-center-modal/index.vue index 677ab00..1b82ad6 100644 --- a/src/components/_base/navbar/components/download-center-modal/index.vue +++ b/src/components/_base/navbar/components/download-center-modal/index.vue @@ -3,7 +3,7 @@ v-model:visible="visible" title="下载中心" modal-class="download-center-modal" - width="780px" + width="860px" :mask-closable="false" :footer="false" @close="onClose" @@ -33,6 +33,34 @@ + +
+
+
+ + + 已选 + {{ selectedItems.length }} + 个文件 + + + 批量下载 + 批量删除 +
+
+ + +
+ - + @@ -181,15 +209,20 @@ const handleSorterChange = (column, order) => { }; const handleSearch = () => { - console.log('handleSearch'); + reload(); }; -const openDelete = (record) => { +const handleDelete = (record) => { const { id, file_name } = record; deleteTaskModalRef.value.open({ id, name: `“${file_name || '-'}”`, }); }; +const handleBatchDelete = () => { + const ids = selectedItems.value.map((item) => item.id); + const names = selectedItems.value.map((item) => `"${item.name || '-'}"`).join(','); + deleteTaskModalRef.value?.open({ id: ids, name: names }); +}; const getGroups = async () => { const { code, data } = await fetchAccountGroups(); if (code === 200) { @@ -208,9 +241,16 @@ const handleSelectAll = (checked) => { } }; +const handleCloseTip = () => { + selectedItems.value = []; +}; + const handleDownload = () => { console.log('handleDownload'); }; +const handleBatchDownload = () => { + console.log('handleBatchDownload'); +}; const onPageChange = (current) => { pageInfo.value.page = current; diff --git a/src/components/_base/navbar/components/download-center-modal/style.scss b/src/components/_base/navbar/components/download-center-modal/style.scss index 72f458a..d2e5be6 100644 --- a/src/components/_base/navbar/components/download-center-modal/style.scss +++ b/src/components/_base/navbar/components/download-center-modal/style.scss @@ -13,7 +13,18 @@ box-shadow: 0 0 0 0 var(--color-primary-light-2); } } + .arco-modal-header { + .arco-modal-title { + color: var(--Text-1, #211f24); + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 24px; + font-family: $font-family-medium; + } + } .arco-modal-body { + height: 536px; padding: 24px 20px 40px; .filter-row { .filter-row-item { @@ -35,10 +46,58 @@ } } } + .tip-row { + border-radius: 2px; + background: #f0edff; + .label { + font-family: $font-family-medium; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + &.normal { + background: #ebf7f2; + .label { + color: #211f24; + } + } + &.abnormal { + background: #ffe7e4; + .label { + color: #211f24; + } + } + .err-btn { + background-color: #f64b31 !important; + color: var(--BG-white, #fff); + font-family: 'PingFang SC'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + .operation-btn { + padding: 0; + cursor: pointer; + color: var(--Brand-Brand-6, #6d4cfe); + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; /* 157.143% */ + &:not(:last-child) { + margin-right: 16px; + } + &.red { + color: #F64B31; + } + } + } .file-table { .cts { color: var(--Text-1, #211f24); - font-family: 'PuHuiTi-Medium'; + font-family: $font-family-medium; font-size: 14px; font-style: normal; font-weight: 400; diff --git a/src/components/_base/navbar/components/navbar-menu/style.scss b/src/components/_base/navbar/components/navbar-menu/style.scss index 23b52b3..5a15e33 100644 --- a/src/components/_base/navbar/components/navbar-menu/style.scss +++ b/src/components/_base/navbar/components/navbar-menu/style.scss @@ -4,7 +4,7 @@ margin-left: 40px; .menu-item-text { color: var(--Text-2, #3c4043); - font-family: 'PuHuiTi-Medium'; + font-family: $font-family-medium; font-size: 16px; font-style: normal; font-weight: 400; From ca31db446da7039e45fa63805db47ffc3a4ab308 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 14 Jul 2025 16:29:04 +0800 Subject: [PATCH 04/97] =?UTF-8?q?feat:=20=E5=90=8C=E6=AD=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE/=E6=89=B9=E9=87=8F=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/all/propertyMarketing.ts | 17 +++- .../components/account-table/index.vue | 22 ++++- .../components/add-account-modal/index.vue | 24 +++++- .../authorized-account-modal/index.vue | 13 +-- .../reauthorize-account-modal/index.vue | 7 +- .../components/sync-data-modal/index.vue | 58 +++++++++++++ .../components/sync-data-modal/style.scss | 14 ++++ .../media-account/account-manage/index.vue | 82 +++++++++++++++++-- .../media-account/account-manage/style.scss | 6 +- 9 files changed, 222 insertions(+), 21 deletions(-) create mode 100644 src/views/property-marketing/media-account/account-manage/components/sync-data-modal/index.vue create mode 100644 src/views/property-marketing/media-account/account-manage/components/sync-data-modal/style.scss diff --git a/src/api/all/propertyMarketing.ts b/src/api/all/propertyMarketing.ts index 063d2ce..4c665be 100644 --- a/src/api/all/propertyMarketing.ts +++ b/src/api/all/propertyMarketing.ts @@ -294,7 +294,7 @@ export const getPlacementAccountProjectsTrend = (params = {}) => { export const getPlacementGuide = (params: {}) => { return Http.get(`/v1/placement-account-projects/getGuideList`, params); }; -//查询投放指南历史 +// 查询投放指南历史 export const getPlacementGuideHistory = (params: {}) => { return Http.get(`/v1/placement-account-projects/getGuideListHistory`, params); }; @@ -312,7 +312,7 @@ export const getPlacementGuideDetail = (id: string) => { return Http.get(`/v1/placement-account-projects/historylog/${id}`); }; -//删除记录 +// 删除记录 export const deleteHistorylog = (id: string) => { return Http.delete(`/v1/placement-account-projects/historylog/${id}`); }; @@ -332,4 +332,17 @@ export const postPlacementAccountsSync = (id: string) => { return Http.post(`/v1/placement-accounts/${id}/sync-data`); }; +// 媒体账号-同步数据 +export const postSyncMediaAccountData = (id: string) => { + return Http.post(`/v1/media-accounts/${id}/sync-data`); +}; +// 媒体账号-批量同步数据 +export const postBatchSyncMediaAccountData = (params: {}) => { + return Http.post(`/v1/media-accounts/batch-sync-data`, params); +}; + +// 媒体账号-查询同步状态 +export const getMediaAccountSyncStatus = (params = {}) => { + return Http.get('/v1/media-accounts/sync-status', params); +}; diff --git a/src/views/property-marketing/media-account/account-manage/components/account-table/index.vue b/src/views/property-marketing/media-account/account-manage/components/account-table/index.vue index 23eb39a..775e625 100644 --- a/src/views/property-marketing/media-account/account-manage/components/account-table/index.vue +++ b/src/views/property-marketing/media-account/account-manage/components/account-table/index.vue @@ -70,6 +70,9 @@ + + diff --git a/src/views/property-marketing/media-account/account-manage/components/sync-data-modal/style.scss b/src/views/property-marketing/media-account/account-manage/components/sync-data-modal/style.scss new file mode 100644 index 0000000..20c5586 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/sync-data-modal/style.scss @@ -0,0 +1,14 @@ +@import "@/views/property-marketing/component.scss"; +.sync-data-modal { + border-radius: 8px; + .arco-modal-body { + .tip { + color: var(--Text-1, #211f24); + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; /* 157.143% */ + } + } +} 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 879c09d..96305ef 100644 --- a/src/views/property-marketing/media-account/account-manage/index.vue +++ b/src/views/property-marketing/media-account/account-manage/index.vue @@ -51,6 +51,9 @@ 个账号 + 批量更新数据 批量标签 批量分组 批量删除 @@ -111,7 +114,7 @@ diff --git a/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/style.scss b/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/style.scss new file mode 100644 index 0000000..28af786 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/style.scss @@ -0,0 +1,35 @@ +.select-sub-account-modal { + .arco-modal-header { + } + .arco-modal-body { + height: 536px; + .filter-row { + .filter-row-item { + &:not(:last-child) { + margin-right: 24px; + } + .label { + margin-right: 12px; + color: #211f24; + font-family: 'PuHuiTi-Regular'; + font-size: 14px; + font-style: normal; + font-weight: 400; + flex-shrink: 0; + line-height: 22px; /* 157.143% */ + } + :deep(.arco-space-item) { + width: 100%; + } + } + } + .cts { + color: var(--Text-1, #211f24); + font-family: $font-family-medium; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + } +} diff --git a/src/views/property-marketing/put-account/account-manage/index.vue b/src/views/property-marketing/put-account/account-manage/index.vue index d0b4a33..6099120 100644 --- a/src/views/property-marketing/put-account/account-manage/index.vue +++ b/src/views/property-marketing/put-account/account-manage/index.vue @@ -67,7 +67,6 @@ @selectionChange="handleSelectionChange" @delete="handleDelete" @openEdit="handleOpenEdit" - @update="getData" /> @@ -86,7 +85,7 @@ - + @@ -254,6 +253,8 @@ const handleOpenAbnormalAccount = () => { query.value.status = 2; reload(); }; + +provide('update', getData); From 123f2ce3dbb8e88a85ed681f07c902bd66ee5a1a Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 17 Jul 2025 09:58:49 +0800 Subject: [PATCH 25/97] =?UTF-8?q?perf:=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navbar/components/right-side/index.vue | 50 +------------------ .../components/management/account/index.vue | 8 +-- .../management/enterprise/index.vue | 14 ++++-- .../components/management/person/index.vue | 6 ++- 4 files changed, 19 insertions(+), 59 deletions(-) diff --git a/src/components/_base/navbar/components/right-side/index.vue b/src/components/_base/navbar/components/right-side/index.vue index 5062300..6bada4f 100644 --- a/src/components/_base/navbar/components/right-side/index.vue +++ b/src/components/_base/navbar/components/right-side/index.vue @@ -138,7 +138,7 @@ const setServerMenu = () => { font-size: 16px; font-style: normal; font-weight: 400; - line-height: 22px; /* 137.5% */ + line-height: 22px; } } .arco-dropdown-option-content { @@ -147,7 +147,6 @@ const setServerMenu = () => { &:not(.arco-dropdown-option-disabled):hover { background-color: transparent; .arco-dropdown-option-content { - // border-radius: 8px; background: var(--BG-200, #f2f3f5); } } @@ -182,51 +181,4 @@ const setServerMenu = () => { } } } - -// .layout-avatar-dropdown { -// .arco-dropdown { -// border-radius: 8px; -// border: 1px solid var(--BG-300, #e6e6e8); -// background: var(--BG-white, #fff); -// padding: 12px 0px; -// .arco-dropdown-option { -// padding: 0 12px; -// margin-bottom: 4px; -// &-content { -// display: flex; -// height: 40px; -// width: 100%; -// padding: 10px 24px; -// align-items: center; -// .menu-item-text { -// color: var(--Text-2, #3c4043); -// font-family: 'PuHuiTi-Regular'; -// font-size: 16px; -// font-style: normal; -// font-weight: 400; -// line-height: 22px; /* 137.5% */ -// } -// } -// &:not(.arco-dropdown-option-disabled):hover { -// background-color: transparent; -// .arco-dropdown-option-content { -// border-radius: 8px; -// background: var(--BG-200, #f2f3f5); -// } -// } -// } -// } -// } -// .layout-avatar-dropdown { -// width: 200px; -// .arco-dropdown { -// padding: 12px 4px; -// .arco-dropdown-option { -// padding: 0 !important; -// &-content { -// padding: 0 12px !important; -// } -// } -// } -// } diff --git a/src/views/components/management/account/index.vue b/src/views/components/management/account/index.vue index fe96f1d..d688822 100644 --- a/src/views/components/management/account/index.vue +++ b/src/views/components/management/account/index.vue @@ -99,7 +99,9 @@ const addAccountVisible = ref(false); const deleteVisible = ref(false); const deleteTitle = ref(''); -const enterpriseInfo = store.enterpriseInfo; +const enterpriseInfo = computed(() => { + return store.enterpriseInfo ?? {}; +}); const okText = computed(() => { if (!canAddAccount.value) { @@ -109,9 +111,9 @@ const okText = computed(() => { }); const customerServiceVisible = ref(false); const canAddAccount = computed(() => { - if (!enterpriseInfo) return false; + if (!enterpriseInfo.value) return false; - return enterpriseInfo.sub_account_quota > enterpriseInfo.used_sub_account_count; + return enterpriseInfo.value.sub_account_quota > enterpriseInfo.value.used_sub_account_count; }); const currentSelectAccount = ref(); diff --git a/src/views/components/management/enterprise/index.vue b/src/views/components/management/enterprise/index.vue index 6beef29..95f3b8b 100644 --- a/src/views/components/management/enterprise/index.vue +++ b/src/views/components/management/enterprise/index.vue @@ -48,7 +48,9 @@ const form = reactive({ name: '', }); -const enterpriseInfo = store.enterpriseInfo; +const enterpriseInfo = computed(() => { + return store.enterpriseInfo ?? {}; +}); const columns = [ { @@ -65,11 +67,13 @@ const infoVisible = ref(false); const customerServiceVisible = ref(false); const dataSource = computed(() => { - return enterpriseInfo ? [enterpriseInfo] : []; + return enterpriseInfo.value ? [enterpriseInfo.value] : []; }); + +console.log({ dataSource }); const canUpdate = computed(() => { - if (!enterpriseInfo) return false; - return enterpriseInfo.update_name_quota > enterpriseInfo.used_update_name_count; + if (!enterpriseInfo.value) return false; + return enterpriseInfo.value.update_name_quota > enterpriseInfo.value.used_update_name_count; }); const okText = computed(() => { @@ -81,7 +85,7 @@ const okText = computed(() => { function handleUpdate() { if (!canUpdate.value) { - form.name = enterpriseInfo!.name; + form.name = enterpriseInfo.value?.name; } infoVisible.value = true; } diff --git a/src/views/components/management/person/index.vue b/src/views/components/management/person/index.vue index e3e39b4..373d4f4 100644 --- a/src/views/components/management/person/index.vue +++ b/src/views/components/management/person/index.vue @@ -91,7 +91,9 @@ import axios from 'axios'; import { useUserStore } from '@/stores'; const store = useUserStore(); -const userInfo = store.userInfo; +const userInfo = computed(() => { + return store.userInfo ?? {}; +}); const columns = [ { @@ -115,7 +117,7 @@ const isSendCaptcha = ref(false); const uploadInputRef = ref(); const dataSource = computed(() => { - return userInfo ? [userInfo] : []; + return userInfo.value ? [userInfo.value] : []; }); // 表单校验规则 From 85b62ff4761fbd9d51f26276d0c1d48e3eca68ae Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 17 Jul 2025 10:14:28 +0800 Subject: [PATCH 26/97] =?UTF-8?q?perf:=20=E7=A6=81=E7=94=A8=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/components/date-picker.scss | 3 +++ src/styles/components/input.scss | 3 +++ src/styles/components/select.scss | 3 +++ src/styles/components/textarea.scss | 3 +++ .../account-manage/components/add-account-modal/index.vue | 4 ++-- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/styles/components/date-picker.scss b/src/styles/components/date-picker.scss index 6120784..568a2ce 100644 --- a/src/styles/components/date-picker.scss +++ b/src/styles/components/date-picker.scss @@ -12,4 +12,7 @@ border-color: rgb(var(--primary-6)) !important; box-shadow: 0 0 0 0 var(--color-primary-light-2) !important; } + &.arco-picker-disabled { + background-color: var(--BG-200, #F2F3F5) !important; + } } diff --git a/src/styles/components/input.scss b/src/styles/components/input.scss index 896bb8b..e55b6f4 100644 --- a/src/styles/components/input.scss +++ b/src/styles/components/input.scss @@ -12,4 +12,7 @@ border-color: rgb(var(--primary-6)) !important; box-shadow: 0 0 0 0 var(--color-primary-light-2) !important; } + &.arco-input-disabled { + background-color: var(--BG-200, #F2F3F5) !important; + } } diff --git a/src/styles/components/select.scss b/src/styles/components/select.scss index cf0b8aa..81f20c1 100644 --- a/src/styles/components/select.scss +++ b/src/styles/components/select.scss @@ -12,4 +12,7 @@ border-color: rgb(var(--primary-6)) !important; box-shadow: 0 0 0 0 var(--color-primary-light-2) !important; } + &.arco-select-view-disabled { + background-color: var(--BG-200, #F2F3F5) !important; + } } diff --git a/src/styles/components/textarea.scss b/src/styles/components/textarea.scss index f87db35..7b8408a 100644 --- a/src/styles/components/textarea.scss +++ b/src/styles/components/textarea.scss @@ -12,4 +12,7 @@ border-color: rgb(var(--primary-6)) !important; box-shadow: 0 0 0 0 var(--color-primary-light-2) !important; } + &.arco-textarea-disabled { + background-color: var(--BG-200, #F2F3F5) !important; + } } 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 8e91c97..6f0c700 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 @@ -51,7 +51,7 @@ const INITIAL_FORM = { mobile: '', operator_name: '', holder_name: '', - platform: 0, + platform: 1, group_id: undefined, tag_ids: [], end_work_link: undefined, @@ -380,8 +380,8 @@ export default { ) : ( - 抖音 小红书 + 抖音 )} From e6a957d2d2125ebcebeced5861e060fad748bd7b Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 17 Jul 2025 11:18:36 +0800 Subject: [PATCH 27/97] =?UTF-8?q?feat:=20=E4=B8=8B=E8=BD=BD=E4=B8=AD?= =?UTF-8?q?=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => components/export-task}/constants.ts | 0 .../export-task}/delete-task-modal.vue | 0 .../components/export-task/index.vue | 314 ++++++++++++++++++ .../components/export-task/style.scss | 50 +++ .../download-center-modal/index.vue | 248 +------------- .../download-center-modal/style.scss | 105 ++---- src/hooks/useTableSelectionWithPagination.ts | 1 + .../select-sub-account-modal/index.vue | 11 +- 8 files changed, 395 insertions(+), 334 deletions(-) rename src/components/_base/navbar/components/download-center-modal/{ => components/export-task}/constants.ts (100%) rename src/components/_base/navbar/components/download-center-modal/{ => components/export-task}/delete-task-modal.vue (100%) create mode 100644 src/components/_base/navbar/components/download-center-modal/components/export-task/index.vue create mode 100644 src/components/_base/navbar/components/download-center-modal/components/export-task/style.scss diff --git a/src/components/_base/navbar/components/download-center-modal/constants.ts b/src/components/_base/navbar/components/download-center-modal/components/export-task/constants.ts similarity index 100% rename from src/components/_base/navbar/components/download-center-modal/constants.ts rename to src/components/_base/navbar/components/download-center-modal/components/export-task/constants.ts diff --git a/src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue b/src/components/_base/navbar/components/download-center-modal/components/export-task/delete-task-modal.vue similarity index 100% rename from src/components/_base/navbar/components/download-center-modal/delete-task-modal.vue rename to src/components/_base/navbar/components/download-center-modal/components/export-task/delete-task-modal.vue 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 new file mode 100644 index 0000000..55aec92 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/components/export-task/index.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/src/components/_base/navbar/components/download-center-modal/components/export-task/style.scss b/src/components/_base/navbar/components/download-center-modal/components/export-task/style.scss new file mode 100644 index 0000000..180bfb0 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/components/export-task/style.scss @@ -0,0 +1,50 @@ +.export-task-wrap { + .tip-row { + border-radius: 2px; + background: #f0edff; + .label { + font-family: $font-family-medium; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + &.normal { + background: #ebf7f2; + .label { + color: #211f24; + } + } + &.abnormal { + background: #ffe7e4; + .label { + color: #211f24; + } + } + .err-btn { + background-color: #f64b31 !important; + color: var(--BG-white, #fff); + font-family: 'PingFang SC'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; + } + .operation-btn { + padding: 0; + cursor: pointer; + color: var(--Brand-Brand-6, #6d4cfe); + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + &:not(:last-child) { + margin-right: 16px; + } + &.red { + color: #f64b31; + } + } + } +} diff --git a/src/components/_base/navbar/components/download-center-modal/index.vue b/src/components/_base/navbar/components/download-center-modal/index.vue index 1b82ad6..f4046b4 100644 --- a/src/components/_base/navbar/components/download-center-modal/index.vue +++ b/src/components/_base/navbar/components/download-center-modal/index.vue @@ -1,271 +1,29 @@ diff --git a/src/components/_base/navbar/components/download-center-modal/style.scss b/src/components/_base/navbar/components/download-center-modal/style.scss index d2e5be6..c6e9698 100644 --- a/src/components/_base/navbar/components/download-center-modal/style.scss +++ b/src/components/_base/navbar/components/download-center-modal/style.scss @@ -1,18 +1,4 @@ .download-center-modal { - .arco-input-wrapper, - .arco-select-view-single, - .arco-select-view-multiple { - border-radius: 4px; - border-color: #d7d7d9; - background-color: #fff; - &:focus-within, - &.arco-input-focus, - &.arco-textarea-focus { - background-color: var(--color-bg-2); - border-color: rgb(var(--primary-6)); - box-shadow: 0 0 0 0 var(--color-primary-light-2); - } - } .arco-modal-header { .arco-modal-title { color: var(--Text-1, #211f24); @@ -25,84 +11,35 @@ } .arco-modal-body { height: 536px; - padding: 24px 20px 40px; - .filter-row { - .filter-row-item { - &:not(:last-child) { - margin-right: 24px; - } - .label { - margin-right: 12px; - color: #211f24; - font-family: 'PuHuiTi-Regular'; - font-size: 14px; - font-style: normal; - font-weight: 400; - flex-shrink: 0; - line-height: 22px; /* 157.143% */ - } - :deep(.arco-space-item) { - width: 100%; - } + display: flex; + flex-direction: column; + } + .filter-row { + .filter-row-item { + &:not(:last-child) { + margin-right: 24px; } - } - .tip-row { - border-radius: 2px; - background: #f0edff; .label { - font-family: $font-family-medium; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; - } - &.normal { - background: #ebf7f2; - .label { - color: #211f24; - } - } - &.abnormal { - background: #ffe7e4; - .label { - color: #211f24; - } - } - .err-btn { - background-color: #f64b31 !important; - color: var(--BG-white, #fff); - font-family: 'PingFang SC'; - font-size: 12px; - font-style: normal; - font-weight: 400; - line-height: 20px; /* 166.667% */ - } - .operation-btn { - padding: 0; - cursor: pointer; - color: var(--Brand-Brand-6, #6d4cfe); - font-family: $font-family-regular; + margin-right: 12px; + color: #211f24; + font-family: 'PuHuiTi-Regular'; font-size: 14px; font-style: normal; font-weight: 400; + flex-shrink: 0; line-height: 22px; /* 157.143% */ - &:not(:last-child) { - margin-right: 16px; - } - &.red { - color: #F64B31; - } } - } - .file-table { - .cts { - color: var(--Text-1, #211f24); - font-family: $font-family-medium; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; + :deep(.arco-space-item) { + width: 100%; } } } + .cts { + color: var(--Text-1, #211f24); + font-family: $font-family-medium; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } } diff --git a/src/hooks/useTableSelectionWithPagination.ts b/src/hooks/useTableSelectionWithPagination.ts index ac13d17..b51a7a0 100644 --- a/src/hooks/useTableSelectionWithPagination.ts +++ b/src/hooks/useTableSelectionWithPagination.ts @@ -71,6 +71,7 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa const rowSelection = computed(() => ({ type: 'checkbox', showCheckedAll: true, + width: 48, })); return { diff --git a/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/index.vue b/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/index.vue index 032f9d4..e3762c9 100644 --- a/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/index.vue +++ b/src/views/property-marketing/put-account/account-manage/components/select-sub-account-modal/index.vue @@ -100,7 +100,7 @@
-

{{ item.name || '-' }}

+ +

{{ item.name || '-' }}

+
状态 diff --git a/src/views/property-marketing/media-account/account-manage/components/account-table/style.scss b/src/views/property-marketing/media-account/account-manage/components/account-table/style.scss index f3b99bd..3e77ae9 100644 --- a/src/views/property-marketing/media-account/account-manage/components/account-table/style.scss +++ b/src/views/property-marketing/media-account/account-manage/components/account-table/style.scss @@ -25,6 +25,7 @@ font-style: normal; font-weight: 400; margin-bottom: 11px; + width: fit-content; // line-height: 22px; /* 157.143% */ } .label { From 46ced21844bda8157b9268984c2b3bf4bf7c2646 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 17 Jul 2025 14:42:01 +0800 Subject: [PATCH 30/97] =?UTF-8?q?refactor:=20=E6=80=A7=E5=88=AB=E5=88=86?= =?UTF-8?q?=E5=B8=83=E6=95=B0=E6=8D=AE=E5=8F=96=E5=80=BC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/components/dataEngine/userPersona.vue | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/views/components/dataEngine/userPersona.vue b/src/views/components/dataEngine/userPersona.vue index ee736a0..53a053a 100644 --- a/src/views/components/dataEngine/userPersona.vue +++ b/src/views/components/dataEngine/userPersona.vue @@ -18,16 +18,16 @@ 女性 - {{ genderData[0].rate * 100 }}% + {{ (girlData.rate * 100).toFixed(2) }}% TGI - {{ genderData[0].tgi }} + {{ girlData.tgi }} 男性 - {{ genderData[1].rate * 100 }}% + {{ (boyData.rate * 100).toFixed(2) }}% TGI - {{ genderData[1].tgi }} + {{ boyData.tgi }} @@ -145,10 +145,13 @@ const topHeaderRef = ref(); const selectedIndustry = computed(() => topHeaderRef.value?.selectedIndustry); const selectedSubCategory = computed(() => topHeaderRef.value?.selectedSubCategory); const selectedTimePeriod = computed(() => topHeaderRef.value?.selectedTimePeriod); + const genderData = ref([]); const genderValueData = ref([]); const ageValueData = ref([]); const geoList = ref([]); +const boyData = computed(() => genderData.value.find( v => v.gender === 1) ?? {}) +const girlData = computed(() => genderData.value.find( v => v.gender === 2) ?? {}) // 监听筛选条件变化 watch([selectedIndustry, selectedTimePeriod, selectedSubCategory], () => { getAgeDistributionsList(); @@ -233,7 +236,7 @@ const getGenderDistributionsList = async () => { await nextTick(); genderValueData.value = data.map((item) => ({ - value: item.rate * 100, + value: (item.rate * 100).toFixed(2), tgi: item.tgi, name: item.gender === 1 ? '女性' : '男性', })); From d30be4dc935026e8695aa49e8e4979d8a777bb82 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 17 Jul 2025 15:28:20 +0800 Subject: [PATCH 31/97] =?UTF-8?q?feat:=20=E4=B8=8B=E8=BD=BD=E4=B8=AD?= =?UTF-8?q?=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/all/common.ts | 15 + .../components/export-task/constants.ts | 28 +- .../export-task/delete-task-modal.vue | 14 +- .../components/export-task/index.vue | 143 ++++---- .../components/export-task/style.scss | 3 + .../components/import-task/constants.ts | 38 +++ .../import-task/delete-task-modal.vue | 61 ++++ .../components/import-task/index.vue | 315 ++++++++++++++++++ .../components/import-task/style.scss | 51 +++ .../download-center-modal/constants.ts | 14 + .../download-center-modal/index.vue | 24 +- .../download-center-modal/style.scss | 70 ++-- src/hooks/useTableSelectionWithPagination.ts | 1 + 13 files changed, 651 insertions(+), 126 deletions(-) create mode 100644 src/components/_base/navbar/components/download-center-modal/components/import-task/constants.ts create mode 100644 src/components/_base/navbar/components/download-center-modal/components/import-task/delete-task-modal.vue create mode 100644 src/components/_base/navbar/components/download-center-modal/components/import-task/index.vue create mode 100644 src/components/_base/navbar/components/download-center-modal/components/import-task/style.scss create mode 100644 src/components/_base/navbar/components/download-center-modal/constants.ts diff --git a/src/api/all/common.ts b/src/api/all/common.ts index 9b210da..a1a7b0c 100644 --- a/src/api/all/common.ts +++ b/src/api/all/common.ts @@ -13,3 +13,18 @@ export const getCustomColumns = (params = {}) => { export const updateCustomColumns = (params = {}) => { return Http.put('/v1/custom-columns', params); }; + +// 任务中心-分页 +export const getTask = (params = {}) => { + return Http.get('/v1/tasks', params); +}; + +// 任务中心-批量删除 +export const deleteBatchTasks = (params = {}) => { + return Http.delete('/v1/tasks', params); +}; + +// 任务中心-删除 +export const deleteTask = (id: string) => { + return Http.delete(`/v1/tasks/${id}`); +}; diff --git a/src/components/_base/navbar/components/download-center-modal/components/export-task/constants.ts b/src/components/_base/navbar/components/download-center-modal/components/export-task/constants.ts index 3b1fef8..0b9ed2c 100644 --- a/src/components/_base/navbar/components/download-center-modal/components/export-task/constants.ts +++ b/src/components/_base/navbar/components/download-center-modal/components/export-task/constants.ts @@ -1,21 +1,16 @@ export const INITIAL_FORM = { - search: '', + type: 1, + operator_name: '', module: '', - column: undefined, - order: undefined, -}; -export const INITIAL_PAGE_INFO = { - page: 1, - pageSize: 20, - total: 0, + sort_column: undefined, + sort_order: undefined, }; export const TABLE_COLUMNS = [ { title: '文件名称', - dataIndex: 'file_name', + dataIndex: 'name', width: 180, - // fixed: 'left', }, { title: '所属模块', @@ -23,16 +18,21 @@ export const TABLE_COLUMNS = [ width: 120, }, { - title: '下载时间', - dataIndex: 'time', - width: 120, + title: '状态', + dataIndex: 'status', + width: 100, + }, + { + title: '创建时间', + dataIndex: 'created_at', + width: 140, sortable: { sortDirections: ['ascend', 'descend'], }, }, { title: '操作人员', - dataIndex: 'name', + dataIndex: 'operator.name', width: 120, }, ]; diff --git a/src/components/_base/navbar/components/download-center-modal/components/export-task/delete-task-modal.vue b/src/components/_base/navbar/components/download-center-modal/components/export-task/delete-task-modal.vue index 9b3ed35..589cfe8 100644 --- a/src/components/_base/navbar/components/download-center-modal/components/export-task/delete-task-modal.vue +++ b/src/components/_base/navbar/components/download-center-modal/components/export-task/delete-task-modal.vue @@ -20,35 +20,35 @@ 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 new file mode 100644 index 0000000..7e59e12 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/components/import-task/index.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/src/components/_base/navbar/components/download-center-modal/components/import-task/style.scss b/src/components/_base/navbar/components/download-center-modal/components/import-task/style.scss new file mode 100644 index 0000000..606ffe5 --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/components/import-task/style.scss @@ -0,0 +1,51 @@ +.import-task-wrap { + height: 100%; + .tip-row { + border-radius: 2px; + background: #f0edff; + .label { + font-family: $font-family-medium; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + &.normal { + background: #ebf7f2; + .label { + color: #211f24; + } + } + &.abnormal { + background: #ffe7e4; + .label { + color: #211f24; + } + } + .err-btn { + background-color: #f64b31 !important; + color: var(--BG-white, #fff); + font-family: 'PingFang SC'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; + } + .operation-btn { + padding: 0; + cursor: pointer; + color: var(--Brand-Brand-6, #6d4cfe); + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + &:not(:last-child) { + margin-right: 16px; + } + &.red { + color: #f64b31; + } + } + } +} diff --git a/src/components/_base/navbar/components/download-center-modal/constants.ts b/src/components/_base/navbar/components/download-center-modal/constants.ts new file mode 100644 index 0000000..4a1095f --- /dev/null +++ b/src/components/_base/navbar/components/download-center-modal/constants.ts @@ -0,0 +1,14 @@ +export const TASK_STATUS = [ + { + label: '导出中', + value: 0, + }, + { + label: '已完成', + value: 1, + }, + { + label: '导出失败', + value: 2, + }, +]; diff --git a/src/components/_base/navbar/components/download-center-modal/index.vue b/src/components/_base/navbar/components/download-center-modal/index.vue index f4046b4..0986b9b 100644 --- a/src/components/_base/navbar/components/download-center-modal/index.vue +++ b/src/components/_base/navbar/components/download-center-modal/index.vue @@ -8,19 +8,41 @@ :footer="false" @close="onClose" > - + + + + +
+ +
diff --git a/src/views/property-marketing/project-manage/project-list/components/filter-block/style.scss b/src/views/property-marketing/project-manage/project-list/components/filter-block/style.scss new file mode 100644 index 0000000..48e2115 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/filter-block/style.scss @@ -0,0 +1,23 @@ +.container { + .filter-row { + .filter-row-item { + &:not(:last-child) { + margin-right: 24px; + } + .label { + margin-right: 8px; + color: #211f24; + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + flex-shrink: 0; + line-height: 22px; /* 157.143% */ + } + :deep(.arco-space-item) { + width: 100%; + } + } + } + +} diff --git a/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts b/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts new file mode 100644 index 0000000..ae9a58f --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts @@ -0,0 +1,45 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-28 10:33:06 + */ +export const TABLE_COLUMNS = [ + { + title: '项目名称', + dataIndex: 'name', + width: 240, + fixed: 'left', + }, + { + title: '项目预算', + dataIndex: 'key1', + width: 180, + }, + { + title: '关联平台账号', + dataIndex: 'key2', + width: 180, + }, + { + title: '关联渠道账户', + dataIndex: 'key3', + width: 180, + }, + { + title: '关联内容稿件', + dataIndex: 'key4', + width: 180, + }, + { + title: '创建时间', + dataIndex: 'create_at', + width: 180, + sortable: { + sortDirections: ['ascend', 'descend'], + }, + }, + { + title: '操作', + dataIndex: 'operation', + width: 100, + }, +]; diff --git a/src/views/property-marketing/project-manage/project-list/components/project-table/index.vue b/src/views/property-marketing/project-manage/project-list/components/project-table/index.vue new file mode 100644 index 0000000..dc8e325 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/project-table/index.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/views/property-marketing/project-manage/project-list/components/project-table/style.scss b/src/views/property-marketing/project-manage/project-list/components/project-table/style.scss new file mode 100644 index 0000000..38fb392 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/project-table/style.scss @@ -0,0 +1,10 @@ +.project-table { + .cts { + color: var(--Text-1, #211f24); + font-family: $font-family-medium; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } +} diff --git a/src/views/property-marketing/project-manage/project-list/constants.ts b/src/views/property-marketing/project-manage/project-list/constants.ts new file mode 100644 index 0000000..7f13ca2 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/constants.ts @@ -0,0 +1,5 @@ +export const INITIAL_QUERY = { + search: '', + column: '', + order: '', +}; diff --git a/src/views/property-marketing/project-manage/project-list/index.vue b/src/views/property-marketing/project-manage/project-list/index.vue new file mode 100644 index 0000000..88ddc92 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/index.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/views/property-marketing/project-manage/project-list/style.scss b/src/views/property-marketing/project-manage/project-list/style.scss new file mode 100644 index 0000000..dda7199 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/style.scss @@ -0,0 +1,39 @@ +.project-list-wrap { + height: 100%; + display: flex; + flex-direction: column; + :deep(.search-btn) { + border-radius: 4px; + border: 1px solid var(--Brand-Brand-6, #6d4cfe); + color: #6d4cfe; + } + :deep(.reset-btn) { + border-radius: 4px; + border: 1px solid var(--BG-500, #b1b2b5); + background: var(--BG-white, #fff); + } + .filter-wrap { + .top { + .title { + font-family: $font-family-medium; + font-style: normal; + } + :deep(.arco-btn) { + .arco-btn-icon { + line-height: 16px; + } + } + } + } + .table-wrap { + display: flex; + flex-direction: column; + .pagination-box { + display: flex; + width: 100%; + padding: 16px 24px; + justify-content: flex-end; + align-items: center; + } + } +} diff --git a/src/views/property-marketing/put-account/account-manage/index.vue b/src/views/property-marketing/put-account/account-manage/index.vue index 3279b16..aa50bcd 100644 --- a/src/views/property-marketing/put-account/account-manage/index.vue +++ b/src/views/property-marketing/put-account/account-manage/index.vue @@ -79,7 +79,7 @@ show-page-size :page-size-options="[8, 16, 20, 32, 64]" :current="pageInfo.page" - :page-size="pageInfo.pageSize" + :page-size="pageInfo.page_size" @change="onPageChange" @page-size-change="onPageSizeChange" /> @@ -114,7 +114,7 @@ const deleteAccountRef = ref(null); const pageInfo = ref({ page: 1, - pageSize: 20, + page_size: 20, total: 0, }); const query = ref(cloneDeep(INITIAL_QUERY)); @@ -174,10 +174,10 @@ const getHealthData = async () => { } }; const getAccountData = async () => { - const { page, pageSize } = pageInfo.value; + const { page, page_size } = pageInfo.value; const { code, data, total } = await getPlacementAccounts({ page, - page_size: pageSize, + page_size, ...query.value, }); if (code === 200) { @@ -190,11 +190,11 @@ const reload = () => { getData(); }; const handleSearch = () => { - getData(); + reload(); }; const handleReset = () => { pageInfo.value.page = 1; - pageInfo.value.pageSize = 20; + pageInfo.value.page_size = 20; pageInfo.value.total = 0; selectedItems.value = []; query.value = cloneDeep(INITIAL_QUERY); @@ -206,7 +206,7 @@ const onPageChange = (current) => { getData(); }; const onPageSizeChange = (pageSize) => { - pageInfo.value.pageSize = pageSize; + pageInfo.value.page_size = pageSize; reload(); }; From e6798bf313c1ffdba8ef2a67da118f7d85d4e334 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 21 Jul 2025 15:10:26 +0800 Subject: [PATCH 54/97] =?UTF-8?q?feat:=20=E6=89=B9=E9=87=8F=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/unplugin/auto-import.ts | 2 +- src/api/all/common.ts | 10 +++ .../components/export-task/index.vue | 89 ++++++++++++++++--- .../components/task-center-modal/index.vue | 1 + src/utils/arcoD.tsx | 4 +- src/utils/tools.ts | 3 + .../components/add-account-modal/index.vue | 7 +- .../components/add-account-modal/index.vue | 7 +- 8 files changed, 103 insertions(+), 20 deletions(-) diff --git a/config/unplugin/auto-import.ts b/config/unplugin/auto-import.ts index 5617d5a..7778cc9 100644 --- a/config/unplugin/auto-import.ts +++ b/config/unplugin/auto-import.ts @@ -16,7 +16,7 @@ export function configAutoImport() { '@vueuse/core', { dayjs: [['default', 'dayjs']], - 'lodash-es': ['cloneDeep', 'omit', 'pick', 'union', 'uniq', 'isNumber', 'uniqBy', 'isEmpty', 'merge'], + 'lodash-es': ['cloneDeep', 'omit', 'pick', 'union', 'uniq', 'isNumber', 'uniqBy', 'isEmpty', 'merge', 'debounce'], '@/hooks': ['useModal'], }, ], diff --git a/src/api/all/common.ts b/src/api/all/common.ts index 74d626d..8cc013a 100644 --- a/src/api/all/common.ts +++ b/src/api/all/common.ts @@ -47,4 +47,14 @@ export const patchTaskRead = (params = {}) => { // 任务中心-重做任务 export const postRedoTask = (id: string) => { return Http.post(`/v1/tasks/${id}/redo`); +}; + +// 任务中心-批量下载 +export const postBatchDownload = (params = {}) => { + return Http.post(`/v1/tasks/batch-download`, params); +}; + +// 任务中心-批量查询任务状态 +export const batchQueryTaskStatus = (params = {}) => { + return Http.get(`/v1/tasks/batch-query-status`, params); }; \ No newline at end of file diff --git a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue index 39124d1..4ee0181 100644 --- a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue +++ b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue @@ -3,10 +3,10 @@ import { ref, computed } from 'vue'; import { Input, Table, TableColumn, Checkbox, Pagination, Button, Tooltip, Notification } from '@arco-design/web-vue'; import { IconSearch, IconClose, IconQuestionCircle } from '@arco-design/web-vue/es/icon'; import NoData from '@/components/no-data'; -import { getTask, postRedoTask } from '@/api/all/common'; +import { getTask, postRedoTask, postBatchDownload, batchQueryTaskStatus } from '@/api/all/common'; import { INITIAL_FORM, TABLE_COLUMNS } from './constants'; import { EXPORT_TASK_STATUS, enumTaskStatus } from '../../constants'; -import { formatTableField, exactFormatTime } from '@/utils/tools'; +import { formatTableField, exactFormatTime, genRandomId } from '@/utils/tools'; import { useTableSelectionWithPagination } from '@/hooks/useTableSelectionWithPagination'; import { downloadByUrl } from '@/utils/tools'; import DeleteTaskModal from './delete-task-modal.vue'; @@ -34,9 +34,11 @@ export default { getData(); }, }); + let queryTaskTimer = null; - const query = ref({ ...INITIAL_FORM }); + const query = ref(cloneDeep(INITIAL_FORM)); const deleteTaskModalRef = ref(null); + const downloadTaskIds = ref([]); const checkedAll = computed(() => selectedRows.value.length === dataSource.value.length); const indeterminate = computed( @@ -44,11 +46,12 @@ export default { ); const reset = () => { - query.value = { ...INITIAL_FORM }; - pageInfo.value = { ...DEFAULT_PAGE_INFO }; + query.value = cloneDeep(INITIAL_FORM); + pageInfo.value = cloneDeep(DEFAULT_PAGE_INFO); selectedRowKeys.value = []; selectedRows.value = []; dataSource.value = []; + downloadTaskIds.value = []; }; const init = () => { @@ -82,7 +85,7 @@ export default { reload(); }; - const handleCloseTip = () => { + const clearSelectedRows = () => { selectedRows.value = []; selectedRowKeys.value = []; }; @@ -98,8 +101,66 @@ export default { record.file && downloadByUrl(record.file); } }; - const handleBatchDownload = () => { - // 批量下载逻辑 + + const clearQueryTaskTimer = () => { + if (queryTaskTimer) { + clearInterval(queryTaskTimer); + queryTaskTimer = null; + } + }; + const startBatchDownload = (id) => { + const randomId = genRandomId(); + showExportNotification( + `正在批量下载“${selectedRows.value[0]?.name}”等${selectedRows.value.length}个文件,请稍后...`, + { + duration: 0, + id: randomId, + }, + ); + downloadTaskIds.value.push({ + id, + randomId, + }); + + // getSyncTaskStatus(randomId); + if (!queryTaskTimer) { + queryTaskTimer = setInterval(() => getSyncTaskStatus(), 3000); + } + }; + const handleBatchDownload = debounce(async () => { + const { code, data } = await postBatchDownload({ ids: selectedRowKeys.value }); + if (code === 200) { + startBatchDownload(data.id); + } + }, 500); + const getSyncTaskStatus = async () => { + const { code, data } = await batchQueryTaskStatus({ ids: downloadTaskIds.value.map((v) => v.id) }); + if (code === 200) { + let completeTaskNum = 0; + data.forEach((item) => { + const { status, file, id } = item; + if (status !== 0) { + completeTaskNum++; + + const notificationId = downloadTaskIds.value.find((v) => v.id === id)?.randomId; + notificationId && Notification.remove(notificationId); + + if (status === 1) { + AMessage.success('批量下载已完成,正在下载文件...'); + downloadByUrl(file); + } else if (status === 2) { + AMessage.error('批量下载失败,请重新尝试下载'); + } + } + }); + + // 全部完成了 + if (completeTaskNum === data.length) { + clearQueryTaskTimer(); + clearSelectedRows(); + downloadTaskIds.value = []; + } + } }; const handleDelete = (record) => { @@ -121,8 +182,14 @@ export default { selectedRowKeys.value = []; getData(); }; + const unloadComp = () => { + clearQueryTaskTimer(); + }; + onUnmounted(() => { + clearQueryTaskTimer; + }); - expose({ init, reset }); + expose({ init, reset, unloadComp }); return () => (
@@ -187,7 +254,7 @@ export default {
- +
)} @@ -252,7 +319,7 @@ export default { ))} { activeTab.value = '0'; clearTimer(); + componentRef.value?.unloadComp?.() visible.value = false; }; const clearTimer = () => { diff --git a/src/utils/arcoD.tsx b/src/utils/arcoD.tsx index a2c6be6..1d8f9ee 100644 --- a/src/utils/arcoD.tsx +++ b/src/utils/arcoD.tsx @@ -13,7 +13,7 @@ interface RenderNotificationData { file?: string; } -export function showExportNotification(label: string, id: '') { +export function showExportNotification(label: string, { id = '', duration = 3000}) { Notification.warning({ id, showIcon: false, @@ -24,7 +24,7 @@ export function showExportNotification(label: string, id: '') {

{label}

), - duration: 3000, + duration, class: 'px-16px py-9px w-400px rounded-2px bg-#F0EDFF', }); } diff --git a/src/utils/tools.ts b/src/utils/tools.ts index f3b6b3b..2635bdc 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -107,3 +107,6 @@ export function downloadByUrl(url: string, filename?: string) { document.body.removeChild(a); } +export function genRandomId() { + return `id_${Date.now()}_${Math.floor(Math.random() * 10000)}`; +} \ No newline at end of file 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 c03f1ce..f5fe246 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 @@ -28,6 +28,7 @@ import SyncDataModal from '../sync-data-modal'; // import { downloadByUrl } from '@/utils/tools'; import { showExportNotification } from '@/utils/arcoD'; +import { genRandomId } from '@/utils/tools'; import { fetchAccountTags, fetchAccountGroups, @@ -188,9 +189,9 @@ export default { }, }); if (code === 200) { - const ID = 'IMPORT-ACCOUNT'; - showExportNotification(`正在导入“${file.value.name}”,请稍后...`, ID); - emit('startQueryTaskStatus', data.id, ID); + const id = genRandomId(); + showExportNotification(`正在导入“${file.value.name}”,请稍后...`, { id }); + emit('startQueryTaskStatus', data.id, id); onClose(); } else { uploadStatus.value = UploadStatus.ERROR; diff --git a/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue b/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue index fd34425..352d66d 100644 --- a/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue +++ b/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue @@ -151,6 +151,7 @@ import StatusBox from '../status-box'; import { PLATFORM_LIST, ENUM_PLATFORM } from '@/views/property-marketing/put-account/common_constants'; import { showExportNotification } from '@/utils/arcoD'; +import { genRandomId } from '@/utils/tools'; import { postPlacementAccounts, getPlacementAccountsDetail, @@ -289,9 +290,9 @@ const handleBatchImport = async () => { }); if (code === 200) { - const ID = 'IMPORT-PUT-ACCOUNT'; - showExportNotification(`正在导入“${file.value.name}”,请稍后...`, ID); - emits('startQueryTaskStatus', data.id, ID); + const id = genRandomId(); + showExportNotification(`正在导入“${file.value.name}”,请稍后...`, { id }); + emit('startQueryTaskStatus', data.id, id); onClose(); } else { uploadStatus.value = UploadStatus.ERROR; From 4387037b2d68f4b8622597bd093440f5dc5ebb58 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 21 Jul 2025 15:42:35 +0800 Subject: [PATCH 55/97] =?UTF-8?q?feat:=20=E6=89=B9=E9=87=8F=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E5=A4=B1=E8=B4=A5-=E9=87=8D=E6=96=B0=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/export-task/index.vue | 38 ++++++++++++------- src/utils/arcoD.tsx | 27 ++++++++++++- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue index 4ee0181..7a54ed4 100644 --- a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue +++ b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue @@ -11,7 +11,7 @@ import { useTableSelectionWithPagination } from '@/hooks/useTableSelectionWithPa import { downloadByUrl } from '@/utils/tools'; import DeleteTaskModal from './delete-task-modal.vue'; import icon1 from '@/assets/img/media-account/icon-delete.png'; -import { showExportNotification } from '@/utils/arcoD'; +import { showExportNotification, showFailExportNotification } from '@/utils/arcoD'; export default { setup(props, { emit, expose }) { @@ -102,12 +102,13 @@ export default { } }; - const clearQueryTaskTimer = () => { - if (queryTaskTimer) { - clearInterval(queryTaskTimer); - queryTaskTimer = null; + // 批量下载 + const handleBatchDownload = debounce(async () => { + const { code, data } = await postBatchDownload({ ids: selectedRowKeys.value }); + if (code === 200) { + startBatchDownload(data.id); } - }; + }, 500); const startBatchDownload = (id) => { const randomId = genRandomId(); showExportNotification( @@ -122,17 +123,10 @@ export default { randomId, }); - // getSyncTaskStatus(randomId); if (!queryTaskTimer) { queryTaskTimer = setInterval(() => getSyncTaskStatus(), 3000); } }; - const handleBatchDownload = debounce(async () => { - const { code, data } = await postBatchDownload({ ids: selectedRowKeys.value }); - if (code === 200) { - startBatchDownload(data.id); - } - }, 500); const getSyncTaskStatus = async () => { const { code, data } = await batchQueryTaskStatus({ ids: downloadTaskIds.value.map((v) => v.id) }); if (code === 200) { @@ -149,8 +143,17 @@ export default { AMessage.success('批量下载已完成,正在下载文件...'); downloadByUrl(file); } else if (status === 2) { - AMessage.error('批量下载失败,请重新尝试下载'); + const onReDownload = () => { + startBatchDownload(id); + }; + showFailExportNotification( + `${selectedRows.value[0]?.name}”等${selectedRows.value.length}个文件下载失败`, + { onReDownload }, + ); } + + // 结束的任务过滤掉 + downloadTaskIds.value = downloadTaskIds.value.filter((v) => v.id !== id); } }); @@ -182,6 +185,13 @@ export default { selectedRowKeys.value = []; getData(); }; + + const clearQueryTaskTimer = () => { + if (queryTaskTimer) { + clearInterval(queryTaskTimer); + queryTaskTimer = null; + } + }; const unloadComp = () => { clearQueryTaskTimer(); }; diff --git a/src/utils/arcoD.tsx b/src/utils/arcoD.tsx index 1d8f9ee..abea1ea 100644 --- a/src/utils/arcoD.tsx +++ b/src/utils/arcoD.tsx @@ -5,6 +5,7 @@ import { IconLoading } from '@arco-design/web-vue/es/icon'; import icon1 from '@/assets/img/media-account/icon-warn-1.png'; import icon2 from '@/assets/img/media-account/icon-success.png'; +import icon3 from "@/assets/img/media-account/icon-warn.png" interface RenderNotificationData { total_number: number; @@ -13,7 +14,9 @@ interface RenderNotificationData { file?: string; } -export function showExportNotification(label: string, { id = '', duration = 3000}) { +// 下载通知框 +export function showExportNotification(label: string, others: { id?: string, duration?: number }) { + const { id = '', duration = 3000 } = others ?? {} Notification.warning({ id, showIcon: false, @@ -29,6 +32,28 @@ export function showExportNotification(label: string, { id = '', duration = 300 }); } +// 下载失败框 +export function showFailExportNotification(label: string, others: { id?: string, duration?: number, onReDownload?: Function }) { + const { id = '', duration = 0, onReDownload } = others ?? {} + Notification.warning({ + id, + showIcon: false, + closable: true, + content: () => ( +
+
+ +

{label}

+
+ +

onReDownload?.()}>重新下载

+
+ ), + duration, + class: 'px-16px py-9px w-500px rounded-2px bg-#FFE9E7', + }); +} + export const showImportResultNotification = (data: RenderNotificationData) => { const { total_number, success_number, fail_number, file } = data; const hasError = fail_number > 0; From 984d4e3a7be1e3bab1718b40ebca3c509ffb43e7 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 21 Jul 2025 15:47:39 +0800 Subject: [PATCH 56/97] =?UTF-8?q?perf:=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/export-task/index.vue | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue index 7a54ed4..fcc56bd 100644 --- a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue +++ b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue @@ -38,7 +38,7 @@ export default { const query = ref(cloneDeep(INITIAL_FORM)); const deleteTaskModalRef = ref(null); - const downloadTaskIds = ref([]); + const downloadTaskInfos = ref([]); const checkedAll = computed(() => selectedRows.value.length === dataSource.value.length); const indeterminate = computed( @@ -51,7 +51,7 @@ export default { selectedRowKeys.value = []; selectedRows.value = []; dataSource.value = []; - downloadTaskIds.value = []; + downloadTaskInfos.value = []; }; const init = () => { @@ -118,7 +118,7 @@ export default { id: randomId, }, ); - downloadTaskIds.value.push({ + downloadTaskInfos.value.push({ id, randomId, }); @@ -128,7 +128,7 @@ export default { } }; const getSyncTaskStatus = async () => { - const { code, data } = await batchQueryTaskStatus({ ids: downloadTaskIds.value.map((v) => v.id) }); + const { code, data } = await batchQueryTaskStatus({ ids: downloadTaskInfos.value.map((v) => v.id) }); if (code === 200) { let completeTaskNum = 0; data.forEach((item) => { @@ -136,7 +136,7 @@ export default { if (status !== 0) { completeTaskNum++; - const notificationId = downloadTaskIds.value.find((v) => v.id === id)?.randomId; + const notificationId = downloadTaskInfos.value.find((v) => v.id === id)?.randomId; notificationId && Notification.remove(notificationId); if (status === 1) { @@ -153,7 +153,7 @@ export default { } // 结束的任务过滤掉 - downloadTaskIds.value = downloadTaskIds.value.filter((v) => v.id !== id); + downloadTaskInfos.value = downloadTaskInfos.value.filter((v) => v.id !== id); } }); @@ -161,7 +161,7 @@ export default { if (completeTaskNum === data.length) { clearQueryTaskTimer(); clearSelectedRows(); - downloadTaskIds.value = []; + downloadTaskInfos.value = []; } } }; From 704544e9696ec862c0fc17223770343c2a577b39 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 21 Jul 2025 16:27:47 +0800 Subject: [PATCH 57/97] =?UTF-8?q?perf:=20=E5=AE=BD=E5=BA=A6=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task-center-modal/components/export-task/index.vue | 2 +- .../task-center-modal/components/import-task/index.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue index fcc56bd..3e1a3bf 100644 --- a/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue +++ b/src/components/_base/navbar/components/task-center-modal/components/export-task/index.vue @@ -329,7 +329,7 @@ export default { ))} record.status !== enumTaskStatus.Exporting) ? 120 : 60} fixed="right" title="操作" v-slots={{ diff --git a/src/components/_base/navbar/components/task-center-modal/components/import-task/index.vue b/src/components/_base/navbar/components/task-center-modal/components/import-task/index.vue index d7366b4..05de549 100644 --- a/src/components/_base/navbar/components/task-center-modal/components/import-task/index.vue +++ b/src/components/_base/navbar/components/task-center-modal/components/import-task/index.vue @@ -113,7 +113,7 @@ export default { selectedRowKeys.value = []; getData(); }; - + expose({ init, reset }); return () => ( @@ -243,7 +243,7 @@ export default { ))} record.status === enumTaskStatus.Failed) ? 180 : 60} fixed="right" title="操作" v-slots={{ From c7f2e78642eff0b04852a125c4128a504348b80c Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 21 Jul 2025 16:40:16 +0800 Subject: [PATCH 58/97] =?UTF-8?q?style:=20=E6=A0=B7=E5=BC=8F=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/arcoD.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/arcoD.tsx b/src/utils/arcoD.tsx index abea1ea..44b9d7d 100644 --- a/src/utils/arcoD.tsx +++ b/src/utils/arcoD.tsx @@ -22,13 +22,13 @@ export function showExportNotification(label: string, others: { id?: string, dur showIcon: false, closable: true, content: () => ( -
+

{label}

), duration, - class: 'px-16px py-9px w-400px rounded-2px bg-#F0EDFF', + class: 'px-16px py-9px w-450px rounded-2px bg-#F0EDFF', }); } From 923337b0251be81eae9b0f991e1019b7cfc0fac5 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 21 Jul 2025 16:43:17 +0800 Subject: [PATCH 59/97] =?UTF-8?q?style:=20close=E5=BC=B9=E7=AA=97=20?= =?UTF-8?q?=E6=B8=85=E9=99=A4=E6=89=80=E6=9C=89Notification?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_base/navbar/components/task-center-modal/index.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/_base/navbar/components/task-center-modal/index.vue b/src/components/_base/navbar/components/task-center-modal/index.vue index a2c4eec..09815c7 100644 --- a/src/components/_base/navbar/components/task-center-modal/index.vue +++ b/src/components/_base/navbar/components/task-center-modal/index.vue @@ -19,6 +19,8 @@ diff --git a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/style.scss b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/style.scss new file mode 100644 index 0000000..c6e2143 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/style.scss @@ -0,0 +1,3 @@ +.add-project-modal { + +} \ No newline at end of file diff --git a/src/views/property-marketing/project-manage/project-list/components/filter-block/index.vue b/src/views/property-marketing/project-manage/project-list/components/filter-block/index.vue index b22abea..bb52cbe 100644 --- a/src/views/property-marketing/project-manage/project-list/components/filter-block/index.vue +++ b/src/views/property-marketing/project-manage/project-list/components/filter-block/index.vue @@ -4,7 +4,7 @@ * @Date: 2025-06-25 14:02:40 --> @@ -46,6 +48,7 @@ import { useTableSelectionWithPagination } from '@/hooks/useTableSelectionWithPa import FilterBlock from './components/filter-block'; import ProjectTable from './components/project-table'; +import AddProjectModal from './components/add-project-modal'; import icon1 from '@/assets/img/media-account/icon-add.png'; diff --git a/src/views/property-marketing/project-manage/project-list/style.scss b/src/views/property-marketing/project-manage/project-list/style.scss index dda7199..09ee598 100644 --- a/src/views/property-marketing/project-manage/project-list/style.scss +++ b/src/views/property-marketing/project-manage/project-list/style.scss @@ -2,16 +2,6 @@ height: 100%; display: flex; flex-direction: column; - :deep(.search-btn) { - border-radius: 4px; - border: 1px solid var(--Brand-Brand-6, #6d4cfe); - color: #6d4cfe; - } - :deep(.reset-btn) { - border-radius: 4px; - border: 1px solid var(--BG-500, #b1b2b5); - background: var(--BG-white, #fff); - } .filter-wrap { .top { .title { diff --git a/src/views/property-marketing/put-account/account-dashboard/index.vue b/src/views/property-marketing/put-account/account-dashboard/index.vue index dee8513..9a5fa7f 100644 --- a/src/views/property-marketing/put-account/account-dashboard/index.vue +++ b/src/views/property-marketing/put-account/account-dashboard/index.vue @@ -43,13 +43,13 @@
- + - + diff --git a/src/views/property-marketing/put-account/account-data/components/board-table/index.vue b/src/views/property-marketing/put-account/account-data/components/board-table/index.vue index b60414d..a7ba0a1 100644 --- a/src/views/property-marketing/put-account/account-data/components/board-table/index.vue +++ b/src/views/property-marketing/put-account/account-data/components/board-table/index.vue @@ -16,11 +16,11 @@
- + - + @@ -106,7 +106,7 @@
\ No newline at end of file + +const query = ref({ + uid: '', + uploader_id: '', + title: '', +}); +const uploaders = ref([]); +const allData = ref([]); + +const updateFormQuery = () => { + emit('update:formQuery', { + ...props.formQuery, + work_ids: selectedRowKeys.value, + }); +}; +const handleSearch = () => { + const { uid, title, uploader_id } = query.value; + dataSource.value = allData.value.filter((item) => { + const uinMatch = uid === '' ? true : item.uid.includes(uid); + const titleMatch = title === '' ? true : item.title === title; + const operatorIdMatch = uploader_id === '' ? true : item.uploader?.id === uploader_id; + return uinMatch && titleMatch && operatorIdMatch; + }); +}; + +// const getOperators = async () => { +// const { code, data } = await getPlacementAccountOperators(); +// if (code === 200) { +// uploaders.value = data; +// } +// }; +const getTableData = async () => { + const { code, data } = await getWorksList(); + if (code === 200) { + allData.value = data ?? []; + dataSource.value = data ?? []; + uploaders.value = data.map( v => ({ + id: v.uploader?.id, + name: v.uploader?.name, + })) + initSelect(); + } +}; +const initSelect = () => { + if (props.formQuery.work_ids?.length) { + selectedRowKeys.value = props.formQuery.work_ids; + selectedRows.value = dataSource.value.filter((v) => selectedRowKeys.value.includes(v.id)); + } +}; + +const onClearSelect = () => { + selectedRowKeys.value = []; + selectedRows.value = []; + updateFormQuery(); +}; + +const onDelete = (item) => { + const { id } = item; + selectedRowKeys.value = selectedRowKeys.value.filter((v) => v !== id); + selectedRows.value = selectedRows.value.filter((v) => v.id !== id); + updateFormQuery(); +}; + +onMounted(() => { + // getOperators(); + getTableData(); +}); + + + diff --git a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepThree.vue b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepThree.vue index 776e8db..37b86e5 100644 --- a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepThree.vue +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepThree.vue @@ -58,7 +58,7 @@ @select-all="handleSelectAll" > - + diff --git a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepTwo.vue b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepTwo.vue index 84b2d06..cc171e1 100644 --- a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepTwo.vue +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepTwo.vue @@ -58,7 +58,7 @@ @select-all="handleSelectAll" >