From 11bc19907c7d5dfd1b46338f693771f3d4259d0f Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Fri, 4 Jul 2025 16:05:45 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=BB=9F=E4=B8=80=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BA=A4=E4=BA=92=E3=80=81=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=88=97=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom-table-column-modal/index.vue | 4 ++-- src/utils/tools.ts | 13 +++++++++++++ .../components/account-table/index.vue | 15 ++++++++++++++- .../media-account/account-dashboard/constants.ts | 2 +- .../media-account/account-dashboard/index.vue | 13 +++++-------- .../media-account/account-dashboard/style.scss | 16 ++++++++++++++++ .../components/board-table/index.vue | 15 ++++++++++++++- .../account-data/components/plan-table/index.vue | 15 ++++++++++++++- .../put-account/account-data/index.vue | 4 +++- 9 files changed, 82 insertions(+), 15 deletions(-) diff --git a/src/components/custom-table-column-modal/index.vue b/src/components/custom-table-column-modal/index.vue index 1125f00..9ffb83b 100644 --- a/src/components/custom-table-column-modal/index.vue +++ b/src/components/custom-table-column-modal/index.vue @@ -160,7 +160,7 @@ const onSubmit = async () => { } }; -function setDefaultCheckColumns(groups, selected_columns) { +const setDefaultCheckColumns = (groups, selected_columns) => { const requiredGroups = groups.filter((group) => group.is_require === 1); const requiredValues = requiredGroups .flatMap((group) => (group.columns || []).filter((col) => col.is_require === 1)) @@ -170,7 +170,7 @@ function setDefaultCheckColumns(groups, selected_columns) { checkColumns.value = merged; requiredGroupNames.value = requiredGroups.map((group) => group.label); -} +}; // 暴露方法 defineExpose({ open }); diff --git a/src/utils/tools.ts b/src/utils/tools.ts index e182c34..e2093fc 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -93,3 +93,16 @@ export function exactFormatTime(val: number, curYearFmt = 'MM-DD HH:mm', otherYe const fmt = diff === 0 ? curYearFmt : otherYearFmt; return dayjs(val * 1000).format(fmt); } + +// 导出文件 +export function downloadByUrl(url: string, filename?: string) { + const a = document.createElement('a'); + a.href = url; + if (filename) { + a.download = filename; + } + a.style.display = 'none'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); +} diff --git a/src/views/property-marketing/media-account/account-dashboard/components/account-table/index.vue b/src/views/property-marketing/media-account/account-dashboard/components/account-table/index.vue index 16fad76..42b46bb 100644 --- a/src/views/property-marketing/media-account/account-dashboard/components/account-table/index.vue +++ b/src/views/property-marketing/media-account/account-dashboard/components/account-table/index.vue @@ -235,11 +235,24 @@ const getSelectedColumns = () => { getCustomColumns({ type: CUSTOM_COLUMN_TYPE }).then((res) => { const { code, data } = res; if (code === 200) { - selectedColumns.value = data.selected_columns; + const { selected_columns, groups } = data; + + setDefaultCheckColumns(groups, selected_columns); } }); }; +const setDefaultCheckColumns = (groups, selected_columns) => { + const requiredGroups = groups.filter((group) => group.is_require === 1); + const requiredValues = requiredGroups + .flatMap((group) => (group.columns || []).filter((col) => col.is_require === 1)) + .map((col) => col.value); + + const merged = union(requiredValues, selected_columns); + + selectedColumns.value = merged; +}; + defineExpose({ resetTable, }); diff --git a/src/views/property-marketing/media-account/account-dashboard/constants.ts b/src/views/property-marketing/media-account/account-dashboard/constants.ts index b054c2a..e9a8fd6 100644 --- a/src/views/property-marketing/media-account/account-dashboard/constants.ts +++ b/src/views/property-marketing/media-account/account-dashboard/constants.ts @@ -28,7 +28,7 @@ export const CARD_FIELDS = [ }, { label: '近7日观看数', - prop: 'in_the_past_seven_days_view_number', + prop: 'seven_view_number', icon: icon4, tooltip: '近7日观看数', }, diff --git a/src/views/property-marketing/media-account/account-dashboard/index.vue b/src/views/property-marketing/media-account/account-dashboard/index.vue index 2138510..98edfcc 100644 --- a/src/views/property-marketing/media-account/account-dashboard/index.vue +++ b/src/views/property-marketing/media-account/account-dashboard/index.vue @@ -17,17 +17,13 @@
- -

{{ item.label }}

+ +

{{ item.label }}

- {{ - item.prop === 'total_like_number' - ? formatNumberShow(overviewData.total_like_number + overviewData.total_collect_number) - : formatNumberShow(overviewData[item.prop]) - }} + {{ formatNumberShow(overviewData[item.prop]) }}
@@ -68,6 +64,7 @@ import AccountTable from './components/account-table'; import { getAccountBoardOverview, getAccountBoardList, postAccountBoardExport } from '@/api/all/propertyMarketing'; import { formatNumberShow } from '@/utils/tools'; import { INITIAL_QUERY, CARD_FIELDS } from './constants'; +import { downloadByUrl } from '@/utils/tools'; import icon1 from '@/assets/img/icon-question.png'; @@ -136,7 +133,7 @@ const handleExport = () => { }).then((res) => { const { code, data } = res; if (code === 200) { - window.open(data.download_url, '_blank'); + downloadByUrl(data.download_url); } }); }; diff --git a/src/views/property-marketing/media-account/account-dashboard/style.scss b/src/views/property-marketing/media-account/account-dashboard/style.scss index 2e1f2a9..5d17a82 100644 --- a/src/views/property-marketing/media-account/account-dashboard/style.scss +++ b/src/views/property-marketing/media-account/account-dashboard/style.scss @@ -35,6 +35,22 @@ &:not(:last-child) { margin-right: 12px; } + .label { + color: var(--Text-3, #737478); + font-family: 'PuHuiTi-Medium'; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + .value { + color: var(--Text-1, #211f24); + font-family: 'HarmonyOS Sans SC'; + font-size: 18px; + font-style: normal; + font-weight: 500; + line-height: 26px; + } } } } 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 8e543a7..7530418 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 @@ -234,11 +234,24 @@ const getSelectedColumns = () => { getCustomColumns({ type: CUSTOM_COLUMN_TYPE }).then((res) => { const { code, data } = res; if (code === 200) { - selectedColumns.value = data.selected_columns; + const { selected_columns, groups } = data; + + setDefaultCheckColumns(groups, selected_columns); } }); }; +const setDefaultCheckColumns = (groups, selected_columns) => { + const requiredGroups = groups.filter((group) => group.is_require === 1); + const requiredValues = requiredGroups + .flatMap((group) => (group.columns || []).filter((col) => col.is_require === 1)) + .map((col) => col.value); + + const merged = union(requiredValues, selected_columns); + + selectedColumns.value = merged; +}; + onMounted(() => { getSelectedColumns(); }); diff --git a/src/views/property-marketing/put-account/account-data/components/plan-table/index.vue b/src/views/property-marketing/put-account/account-data/components/plan-table/index.vue index 40184db..adf0168 100644 --- a/src/views/property-marketing/put-account/account-data/components/plan-table/index.vue +++ b/src/views/property-marketing/put-account/account-data/components/plan-table/index.vue @@ -234,11 +234,24 @@ const getSelectedColumns = () => { getCustomColumns({ type: CUSTOM_COLUMN_TYPE }).then((res) => { const { code, data } = res; if (code === 200) { - selectedColumns.value = data.selected_columns; + const { selected_columns, groups } = data; + + setDefaultCheckColumns(groups, selected_columns); } }); }; +const setDefaultCheckColumns = (groups, selected_columns) => { + const requiredGroups = groups.filter((group) => group.is_require === 1); + const requiredValues = requiredGroups + .flatMap((group) => (group.columns || []).filter((col) => col.is_require === 1)) + .map((col) => col.value); + + const merged = union(requiredValues, selected_columns); + + selectedColumns.value = merged; +}; + onMounted(() => { getSelectedColumns(); }); diff --git a/src/views/property-marketing/put-account/account-data/index.vue b/src/views/property-marketing/put-account/account-data/index.vue index 34f580d..f735c58 100644 --- a/src/views/property-marketing/put-account/account-data/index.vue +++ b/src/views/property-marketing/put-account/account-data/index.vue @@ -69,6 +69,7 @@ import { } from '@/api/all/propertyMarketing'; import { INITIAL_QUERY } from './constants'; +import { downloadByUrl } from '@/utils/tools'; import icon2 from '@/assets/img/media-account/icon-group.png'; @@ -132,6 +133,7 @@ const handleSelectionChange = (selectedRows) => { const handleTabClick = (key) => { activeTab.value = key; + dataSource.value = []; handleReset(); }; @@ -142,7 +144,7 @@ const handleExport = () => { }).then((res) => { const { code, data } = res; if (code === 200) { - window.open(data.download_url, '_blank'); + downloadByUrl(data.download_url); } }); };