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);
}
});
};