From a9d055c47909bbf36525508ae0a8f58c02871c1e Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Tue, 22 Jul 2025 16:29:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=B3=E8=81=94=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=EF=BC=8C=E5=85=B3=E8=81=94=E6=B8=A0=E9=81=93?= =?UTF-8?q?=E8=B4=A6=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/all/propertyMarketing.ts | 5 + src/hooks/useTableSelectionWithPagination.ts | 3 + src/styles/components/form.scss | 22 ++ src/styles/components/index.scss | 4 +- src/styles/components/steps.scss | 47 ++++ src/styles/mixins/ellipsis.scss | 14 + src/styles/mixins/index.scss | 1 + src/utils/platform.ts | 55 ++++ .../components/filter-block/index.vue | 5 +- .../components/add-project-modal/index.vue | 80 +++++- .../components/add-project-modal/stepFour.vue | 12 + .../components/add-project-modal/stepOne.vue | 43 +++ .../add-project-modal/stepThree.vue | 259 ++++++++++++++++++ .../components/add-project-modal/stepTwo.vue | 253 +++++++++++++++++ .../put-account/account-dashboard/index.vue | 2 +- .../components/account-table/index.vue | 2 +- .../components/add-account-modal/index.vue | 4 +- .../authorized-account-modal/index.vue | 1 - .../components/filter-block/index.vue | 2 +- .../table-data/guideListHistory.vue | 2 +- .../components/table-data/listSearchForm.vue | 2 +- .../table-data/placementGuideList.vue | 2 +- .../investment-guidelines/detail.vue | 2 +- vite.config.ts | 4 +- 24 files changed, 808 insertions(+), 18 deletions(-) create mode 100644 src/styles/components/form.scss create mode 100644 src/styles/components/steps.scss create mode 100644 src/styles/mixins/ellipsis.scss create mode 100644 src/styles/mixins/index.scss create mode 100644 src/utils/platform.ts create mode 100644 src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepFour.vue create mode 100644 src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepOne.vue create mode 100644 src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepThree.vue create mode 100644 src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepTwo.vue diff --git a/src/api/all/propertyMarketing.ts b/src/api/all/propertyMarketing.ts index 5e46d05..d309855 100644 --- a/src/api/all/propertyMarketing.ts +++ b/src/api/all/propertyMarketing.ts @@ -24,6 +24,11 @@ export const getMediaAccounts = (params = {}) => { return Http.get('/v1/media-accounts', params); }; +// 媒体账号-列表 +export const getMediaAccountList = (params = {}) => { + return Http.get('/v1/media-accounts/list', params); +}; + // 媒体账号-健康情况 export const getMediaAccountsHealth = (params = {}) => { return Http.get('/v1/media-accounts/health', params); diff --git a/src/hooks/useTableSelectionWithPagination.ts b/src/hooks/useTableSelectionWithPagination.ts index 32b9e52..c0ed0c6 100644 --- a/src/hooks/useTableSelectionWithPagination.ts +++ b/src/hooks/useTableSelectionWithPagination.ts @@ -9,6 +9,7 @@ interface UseTableSelectionWithPaginationOptions { }; onPageChange?: (page: number) => void; onPageSizeChange?: (size: number) => void; + onSelectChange?: () => void; } const DEFAULT_PAGE_INFO = { @@ -39,6 +40,7 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa } else { selectedRows.value = selectedRows.value.filter((v) => v[rowKey] !== record[rowKey]); } + options.onSelectChange?.(); }; // 全选/取消全选 @@ -56,6 +58,7 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa selectedRowKeys.value = selectedRowKeys.value.filter((key) => !currentPageKeys.includes(key)); selectedRows.value = selectedRows.value.filter((row) => !currentPageKeys.includes(row[rowKey])); } + options.onSelectChange?.(); }; const onPageChange = (page: number) => { diff --git a/src/styles/components/form.scss b/src/styles/components/form.scss new file mode 100644 index 0000000..8a5895c --- /dev/null +++ b/src/styles/components/form.scss @@ -0,0 +1,22 @@ +.arco-form { + .arco-form-item { + margin-bottom: 16px !important; + .arco-form-item-label-col { + padding-right: 12px !important; + .arco-form-item-label { + color: #211f24; + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + .arco-form-item-label-required-symbol { + color: #f64b31; + margin-right: 4px; + font-size: 14px; + font-family: $font-family-regular; + } + } + } + } +} diff --git a/src/styles/components/index.scss b/src/styles/components/index.scss index aa565bd..33c8e54 100644 --- a/src/styles/components/index.scss +++ b/src/styles/components/index.scss @@ -7,4 +7,6 @@ @import "./textarea.scss"; @import "./select.scss"; @import "./date-picker.scss"; -@import "./button.scss"; \ No newline at end of file +@import "./button.scss"; +@import "./steps.scss"; +@import "./form.scss"; \ No newline at end of file diff --git a/src/styles/components/steps.scss b/src/styles/components/steps.scss new file mode 100644 index 0000000..e112909 --- /dev/null +++ b/src/styles/components/steps.scss @@ -0,0 +1,47 @@ +.arco-steps { + .arco-steps-item { + .arco-steps-item-node { + .arco-steps-icon { + width: 28px; + height: 28px; + border-radius: 32px; + color: #3c4043; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 24px; + font-family: $font-family-manrope-medium; + background-color: #f2f3f5; + } + } + .arco-steps-item-content { + .arco-steps-item-title { + color: #3c4043; + font-family: $font-family-regular; + font-size: 16px; + font-style: normal; + font-weight: 400; + &::after { + background-color: #e6e6e8 !important; + } + } + } + &-active, + &-finish { + .arco-steps-item-node { + .arco-steps-icon { + color: #fff; + background-color: #6d4cfe; + } + } + .arco-steps-item-content { + .arco-steps-item-title { + font-family: $font-family-medium; + &::after { + background-color: #6d4cfe !important; + } + } + } + } + } +} diff --git a/src/styles/mixins/ellipsis.scss b/src/styles/mixins/ellipsis.scss new file mode 100644 index 0000000..40ba5d2 --- /dev/null +++ b/src/styles/mixins/ellipsis.scss @@ -0,0 +1,14 @@ +@mixin multi-ellipsis($lines) { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: $lines; + /* autoprefixer: ignore next */ + -webkit-box-orient: vertical; +} + +@mixin ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/src/styles/mixins/index.scss b/src/styles/mixins/index.scss new file mode 100644 index 0000000..3a3b3e8 --- /dev/null +++ b/src/styles/mixins/index.scss @@ -0,0 +1 @@ +@import "./ellipsis.scss" \ No newline at end of file diff --git a/src/utils/platform.ts b/src/utils/platform.ts new file mode 100644 index 0000000..9a3c0d3 --- /dev/null +++ b/src/utils/platform.ts @@ -0,0 +1,55 @@ +import icon1 from '@/assets/img/media-account/icon-jl.png'; +import icon2 from '@/assets/img/media-account/icon-jg.png'; +import icon3 from '@/assets/img/media-account/icon-bili.png'; +import icon4 from '@/assets/img/media-account/icon-dy.png'; +import icon5 from '@/assets/img/media-account/icon-xhs.png'; + +// 投放账户 +export enum ENUM_PUT_ACCOUNT_PLATFORM { + jl = 0, + jg = 1, + bili = 2, +}; +// 新媒体账号 +export enum ENUM_MEDIA_ACCOUNT_PLATFORM { + dy = 0, + xhs = 1, +} + +export const PLATFORM_LIST = [ + { + label: '巨量', + value: ENUM_PUT_ACCOUNT_PLATFORM.jl, + icon: icon1, + }, + { + label: '聚光', + value: ENUM_PUT_ACCOUNT_PLATFORM.jg, + icon: icon2, + }, + { + label: 'B站', + value: ENUM_PUT_ACCOUNT_PLATFORM.bili, + icon: icon3, + }, +]; + +export const MEDIA_ACCOUNT_PLATFORMS = [ + { + label: '抖音', + value: 0, + icon: icon4, + }, + { + label: '小红书', + value: 1, + icon: icon5, + }, +]; + +export const getPutAccountPlatformLogo = (value: ENUM_PUT_ACCOUNT_PLATFORM) => { + return PLATFORM_LIST.find((v) => v.value === value)?.icon ?? null; +}; +export const getMediaAccountPlatformLogo = (value: ENUM_MEDIA_ACCOUNT_PLATFORM) => { + return MEDIA_ACCOUNT_PLATFORMS.find((v) => v.value === value)?.icon ?? null; +}; diff --git a/src/views/property-marketing/media-account/account-manage/components/filter-block/index.vue b/src/views/property-marketing/media-account/account-manage/components/filter-block/index.vue index 27df722..94eea31 100644 --- a/src/views/property-marketing/media-account/account-manage/components/filter-block/index.vue +++ b/src/views/property-marketing/media-account/account-manage/components/filter-block/index.vue @@ -33,7 +33,7 @@ 平台 - {{ + {{ item.label }} @@ -83,7 +83,8 @@ import GroupSelect from '@/views/property-marketing/media-account/components/gro import OperatorSelect from '@/views/property-marketing/media-account/components/operator-select'; import StatusSelect from '@/views/property-marketing/media-account/components/status-select'; -import { INITIAL_QUERY, PLATFORM_LIST } from '@/views/property-marketing/media-account/account-manage/constants'; +import { INITIAL_QUERY } from '@/views/property-marketing/media-account/account-manage/constants'; +import { MEDIA_ACCOUNT_PLATFORMS } from '@/utils/platform'; const props = defineProps({ query: { diff --git a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/index.vue b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/index.vue index 86740d4..2bbce70 100644 --- a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/index.vue +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/index.vue @@ -7,26 +7,100 @@ :mask-closable="false" @close="onClose" > + + + {{ step.label }} + + + + - 取消 - 确定 + + + 上一步 + + + 取消 + {{ isLastStep ? '确认添加' : '下一步' }} + + diff --git a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepFour.vue b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepFour.vue new file mode 100644 index 0000000..d32555d --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepFour.vue @@ -0,0 +1,12 @@ + + 步骤4 + + + \ No newline at end of file diff --git a/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepOne.vue b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepOne.vue new file mode 100644 index 0000000..2790c27 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepOne.vue @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + 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 new file mode 100644 index 0000000..776e8db --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepThree.vue @@ -0,0 +1,259 @@ + + + + + + + + + + + {{ item.label }} + + + + {{ item.name }} + + + + + + + + + + + + {{ column.title }} + + + + + + + + + + + + {{ formatTableField(column, record, true) }} + + + + + + + + + {{ `已选择(${selectedRows?.length ?? 0})` }} + 清空 + + + + + + {{ item.name || '-' }} + + + + + + + + + + + + + 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 new file mode 100644 index 0000000..84b2d06 --- /dev/null +++ b/src/views/property-marketing/project-manage/project-list/components/add-project-modal/stepTwo.vue @@ -0,0 +1,253 @@ + + + + + + + + + + + {{ item.label }} + + + + {{ item.name }} + + + + + + + + + + + + {{ column.title }} + + + + + + + + + + + + {{ formatTableField(column, record, true) }} + + + + + + + + + {{ `已选择(${selectedRows?.length ?? 0})` }} + 清空 + + + + + {{ item.name || '-' }} + + + + + + + + + + + + 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 9a5fa7f..285ff5b 100644 --- a/src/views/property-marketing/put-account/account-dashboard/index.vue +++ b/src/views/property-marketing/put-account/account-dashboard/index.vue @@ -74,7 +74,7 @@
{{ `已选择(${selectedRows?.length ?? 0})` }}
{{ item.name || '-' }}