diff --git a/.eslintrc.cjs b/.eslintrc.cjs index c09b865..a98f933 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,3 +1,7 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-24 16:29:10 + */ /* eslint-env node */ // eslint-disable-next-line @typescript-eslint/no-require-imports require('@rushstack/eslint-patch/modern-module-resolution'); @@ -29,6 +33,8 @@ module.exports = { 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'prettier/prettier': ['error', { endOfLine: 'auto' }], + 'vue/no-duplicate-attributes': 'off', + 'vue/v-on-event-hyphenation': 'off', }, globals: { defineOptions: 'readonly', diff --git a/config/plugins/unocss.ts b/config/plugins/unocss.ts index 8327a11..c5b1970 100644 --- a/config/plugins/unocss.ts +++ b/config/plugins/unocss.ts @@ -1,8 +1,8 @@ /* * @Author: 田鑫 * @Date: 2023-03-05 18:14:16 - * @LastEditors: 田鑫 - * @LastEditTime: 2023-03-05 19:23:48 + * @LastEditors: Please set LastEditors + * @LastEditTime: 2025-06-25 10:54:24 * @Description: */ import Unocss from 'unocss/vite'; diff --git a/src/api/all/propertyMarketing.ts b/src/api/all/propertyMarketing.ts new file mode 100644 index 0000000..0e68177 --- /dev/null +++ b/src/api/all/propertyMarketing.ts @@ -0,0 +1,20 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-25 17:34:56 + */ +import Http from '@/api'; + +// 媒体账号标签-列表 +export const fetchAccountTags = (params = {}) => { + return Http.get('/v1/media-account-tags/list', params); +}; + +// 媒体账号分组-列表 +export const fetchAccountGroups = (params = {}) => { + return Http.get('/v1/media-account-groups/list', params); +}; + +// 媒体运营人员分组-列表 +export const fetchAccountOperators = (params = {}) => { + return Http.get('/v1/media-account-operators/list', params); +}; diff --git a/src/api/index.ts b/src/api/index.ts index 88fd159..30efc74 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -8,21 +8,20 @@ import axios from 'axios'; import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; -import { handleUserLogout } from '@/utils/user'; +import { handleUserLogout, goUserLogin } from '@/utils/user'; +import { useEnterpriseStore } from '@/stores/modules/enterprise'; +import pinia from '@/stores'; const contentType = 'application/json'; const requestTimeout = 30000; -const HttpStatusCode = { - OK: 200, - BadRequest: 400, // 请求参数错误 - Unauthorized: 401, // token 无效或过期 - NotFound: 404, - InternalServerError: 500, -}; - -import { useEnterpriseStore } from '@/stores/modules/enterprise'; -import pinia from '@/stores'; +enum HttpStatusCode { + OK = 200, + BadRequest = 400, // 请求参数错误 + Unauthorized = 401, // token 无效或过期 + NotFound = 404, + InternalServerError = 500, +} //* 导出Request类,可以用来自定义传递配置来创建实例 export class Request { @@ -70,9 +69,15 @@ export class Request { } }, (err: any) => { - const message = err.response?.data?.message ?? err.message; - AMessage.error(message); - // 这里用来处理http常见错误,进行全局提示 + const { message, code } = err.response?.data ?? {}; + AMessage.error(message ?? err.message); + + switch (code) { + case HttpStatusCode.Unauthorized: + goUserLogin(); + break; + } + return Promise.reject(err.response); }, ); diff --git a/src/assets/img/media-account/icon-add.png b/src/assets/img/media-account/icon-add.png new file mode 100644 index 0000000..d386607 Binary files /dev/null and b/src/assets/img/media-account/icon-add.png differ diff --git a/src/assets/img/media-account/icon-delete.png b/src/assets/img/media-account/icon-delete.png new file mode 100644 index 0000000..1952959 Binary files /dev/null and b/src/assets/img/media-account/icon-delete.png differ diff --git a/src/assets/img/media-account/icon-dy.png b/src/assets/img/media-account/icon-dy.png new file mode 100644 index 0000000..0323b26 Binary files /dev/null and b/src/assets/img/media-account/icon-dy.png differ diff --git a/src/assets/img/media-account/icon-group.png b/src/assets/img/media-account/icon-group.png new file mode 100644 index 0000000..b371572 Binary files /dev/null and b/src/assets/img/media-account/icon-group.png differ diff --git a/src/assets/img/media-account/icon-success.png b/src/assets/img/media-account/icon-success.png new file mode 100644 index 0000000..5a92a81 Binary files /dev/null and b/src/assets/img/media-account/icon-success.png differ diff --git a/src/assets/img/media-account/icon-tag.png b/src/assets/img/media-account/icon-tag.png new file mode 100644 index 0000000..509f29a Binary files /dev/null and b/src/assets/img/media-account/icon-tag.png differ diff --git a/src/assets/img/media-account/icon-warn.png b/src/assets/img/media-account/icon-warn.png new file mode 100644 index 0000000..6ad12a0 Binary files /dev/null and b/src/assets/img/media-account/icon-warn.png differ diff --git a/src/assets/img/media-account/icon-xhs.png b/src/assets/img/media-account/icon-xhs.png new file mode 100644 index 0000000..7429e58 Binary files /dev/null and b/src/assets/img/media-account/icon-xhs.png differ diff --git a/src/layouts/Basic.vue b/src/layouts/Basic.vue index 3ef29d9..8ec85e9 100644 --- a/src/layouts/Basic.vue +++ b/src/layouts/Basic.vue @@ -91,7 +91,7 @@ provide('toggleDrawerMenu', () => { - + diff --git a/src/main.ts b/src/main.ts index f17132d..6fbbb30 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,14 +1,18 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-24 16:29:10 + */ import App from './App.vue'; import router from './router'; import store from './stores'; import '@/api/index'; +import '@arco-design/web-vue/dist/arco.css'; // Arco 默认样式 import './styles'; import './core'; import 'uno.css'; import './mock'; -import '@/styles/vars.css'; // 优先加载 -import '@arco-design/web-vue/dist/arco.css'; // Arco 默认样式 +// import '@/styles/vars.css'; // 优先加载 const app = createApp(App); app.use(store); diff --git a/src/router/constants.ts b/src/router/constants.ts index cf67bb6..6fc8bef 100644 --- a/src/router/constants.ts +++ b/src/router/constants.ts @@ -1,3 +1,7 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-24 16:50:35 + */ export const WHITE_LIST = [ { name: 'notFound', children: [] }, { name: 'login', children: [] }, @@ -20,6 +24,6 @@ export const DEFAULT_ROUTE = { export const MENU_GROUP_IDS = { DATA_ENGINE_ID: 1, // 全域数据分析 MANAGEMENT_ID: -1, // 管理中心 - PROPERTY_ID: 2, // 资产营销平台 + PROPERTY_ID: 10, // 资产营销平台 WORK_BENCH_ID: -99, // 工作台 }; diff --git a/src/router/routes/modules/dataEngine.ts b/src/router/routes/modules/dataEngine.ts index 3c3859d..3c77f74 100644 --- a/src/router/routes/modules/dataEngine.ts +++ b/src/router/routes/modules/dataEngine.ts @@ -27,6 +27,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ locale: '行业热门话题洞察', requiresAuth: true, roles: ['*'], + id: 2, }, component: () => import('@/views/components/dataEngine/hotTranslation.vue'), }, @@ -37,6 +38,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ locale: '行业词云', requiresAuth: true, roles: ['*'], + id: 3, }, component: () => import('@/views/components/dataEngine/hotCloud.vue'), }, @@ -47,6 +49,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ locale: '行业关键词动向', requiresAuth: true, roles: ['*'], + id: 4, }, component: () => import('@/views/components/dataEngine/keyWord.vue'), }, @@ -57,6 +60,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ locale: '用户痛点观察', requiresAuth: true, roles: ['*'], + id: 5, }, component: () => import('@/views/components/dataEngine/userPainPoints.vue'), }, @@ -67,6 +71,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ locale: '重点品牌动向', requiresAuth: true, roles: ['*'], + id: 6, }, component: () => import('@/views/components/dataEngine/keyBrandMovement.vue'), }, @@ -77,6 +82,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ locale: '用户画像', requiresAuth: true, roles: ['*'], + id: 7, }, component: () => import('@/views/components/dataEngine/userPersona.vue'), }, diff --git a/src/router/routes/modules/propertyMarketing.ts b/src/router/routes/modules/propertyMarketing.ts index 5f9ba46..89610b6 100644 --- a/src/router/routes/modules/propertyMarketing.ts +++ b/src/router/routes/modules/propertyMarketing.ts @@ -53,7 +53,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ requiresAuth: true, roles: ['*'], }, - component: () => import('@/views/property-marketing/repository/test'), + component: () => import('@/views/property-marketing/media-account/account-manage'), }, { path: 'accountDashboard', @@ -98,7 +98,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ requiresAuth: true, roles: ['*'], }, - component: () => import('@/views/property-marketing/repository/test'), + component: () => import('@/views/property-marketing/put-account/account-manage'), }, { path: 'accountData', diff --git a/src/styles/components/index.scss b/src/styles/components/index.scss new file mode 100644 index 0000000..85aca0b --- /dev/null +++ b/src/styles/components/index.scss @@ -0,0 +1 @@ +@import "./input.scss"; \ No newline at end of file diff --git a/src/styles/components/input.scss b/src/styles/components/input.scss new file mode 100644 index 0000000..a352fa3 --- /dev/null +++ b/src/styles/components/input.scss @@ -0,0 +1,5 @@ +.arco-input-wrapper { + border-radius: 4px; + border-color: #d7d7d9; + background-color: #fff; +} diff --git a/src/styles/index.ts b/src/styles/index.ts index 32f4eac..c40f6c5 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -1,3 +1,4 @@ +import './vars.css'; +import './components/index.scss'; import 'normalize.css'; import 'uno.css'; -import './vars.css'; diff --git a/src/styles/vars.css b/src/styles/vars.css index c192269..7a00c4c 100644 --- a/src/styles/vars.css +++ b/src/styles/vars.css @@ -17,6 +17,10 @@ * { box-sizing: border-box; } +p { + margin: 0; + padding: 0; +} .flex { display: flex; diff --git a/src/views/property-marketing/media-account/account-dashboard/index.vue b/src/views/property-marketing/media-account/account-dashboard/index.vue new file mode 100644 index 0000000..d7d4473 --- /dev/null +++ b/src/views/property-marketing/media-account/account-dashboard/index.vue @@ -0,0 +1,12 @@ + + + + + + + diff --git a/src/views/property-marketing/media-account/account-dashboard/style.scss b/src/views/property-marketing/media-account/account-dashboard/style.scss new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..7b89186 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/account-table/index.vue @@ -0,0 +1,80 @@ + + + + + + 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 new file mode 100644 index 0000000..0a75fe9 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/account-table/style.scss @@ -0,0 +1,103 @@ +.card-container { + flex: 1; + display: grid; + grid-template-rows: repeat(2, 1fr); /* 2行 */ + grid-template-columns: repeat(4, 1fr); /* 4列 */ + gap: 20px; + .card-item { + border-radius: 8px; + border: 1px solid var(--BG-300, #e6e6e8); + background: var(--BG-white, #fff); + padding: 12px 16px 16px; + display: flex; + align-items: flex-start; + .name { + color: var(--Text-1, #211f24); + font-family: 'Alibaba PuHuiTi'; + font-size: 14px; + font-style: normal; + font-weight: 400; + margin-bottom: 11px; + // line-height: 22px; /* 157.143% */ + } + .label { + color: var(--Text-3, #737478); + font-family: 'Alibaba PuHuiTi'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + .field-row { + width: 100%; + margin-bottom: 4px; + display: flex; + justify-content: space-between; + .cts { + color: var(--Text-2, #3c4043); + font-family: 'Alibaba PuHuiTi'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + .status-box { + display: flex; + padding: 0px 8px; + align-items: center; + border-radius: 2px; + background: #f2f3f5; + .text { + color: var(--BG-700, #737478); + font-family: 'Alibaba PuHuiTi'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + + &-1 { + background: #ebf7f2; + .text { + color: #25c883; + } + } + &-2 { + background: #ffe7e4; + .text { + color: #f64b31; + } + } + } + .tag-box { + display: flex; + height: 16px; + padding: 0px 4px; + align-items: center; + border-radius: 2px; + background: var(--BG-200, #f2f3f5); + .text { + color: var(--Text-2, #3c4043); + font-family: 'Alibaba PuHuiTi'; + font-size: 10px; + font-style: normal; + font-weight: 400; + line-height: normal; + } + &:not(:last-child) { + margin-right: 4px; + } + } + &:last-child { + margin-bottom: 8px; + } + } + + .operate-row { + display: flex; + align-items: center; + justify-content: flex-end; + padding-top: 8px; + } + } +} 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 new file mode 100644 index 0000000..5dbfd99 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/add-account-modal/index.vue @@ -0,0 +1,31 @@ + + + + + + diff --git a/src/views/property-marketing/media-account/account-manage/components/add-account-modal/style.scss b/src/views/property-marketing/media-account/account-manage/components/add-account-modal/style.scss new file mode 100644 index 0000000..06dee88 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/add-account-modal/style.scss @@ -0,0 +1,18 @@ +.add-account-modal { + .arco-modal-header { + border-bottom: none; + height: 56px; + padding: 22px 24px 16px 24px; + .arco-modal-title { + justify-content: flex-start; + } + } + .arco-modal-body { + padding: 16px 24px 20px; + } + .arco-modal-footer { + border-top: none; + padding: 0; + } + } + \ No newline at end of file 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 new file mode 100644 index 0000000..888191e --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/filter-block/index.vue @@ -0,0 +1,160 @@ + + + + + + diff --git a/src/views/property-marketing/media-account/account-manage/components/filter-block/style.scss b/src/views/property-marketing/media-account/account-manage/components/filter-block/style.scss new file mode 100644 index 0000000..3a33894 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/filter-block/style.scss @@ -0,0 +1,36 @@ +.container { + :deep(.arco-input-wrapper), + :deep(.arco-select-view-single), + :deep(.arco-select-view-multiple) { + border-radius: 4px; + border-color: #d7d7d9; + background-color: #fff; + &:focus-within, + &.arco-input-focus { + background-color: var(--color-bg-2); + border-color: rgb(var(--primary-6)); + box-shadow: 0 0 0 0 var(--color-primary-light-2); + } + } + .filter-row { + .filter-row-item { + &:not(:last-child) { + margin-right: 24px; + } + .label { + margin-right: 8px; + color: #211f24; + font-family: 'Alibaba PuHuiTi'; + 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/media-account/account-manage/components/group-manage-modal/index.vue b/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/index.vue new file mode 100644 index 0000000..605f2ca --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/index.vue @@ -0,0 +1,32 @@ + + + + + + diff --git a/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/style.scss b/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/style.scss new file mode 100644 index 0000000..131322b --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/style.scss @@ -0,0 +1,17 @@ +.account-manage-modal { + .arco-modal-header { + border-bottom: none; + height: 56px; + padding: 22px 24px 16px 24px; + .arco-modal-title { + justify-content: flex-start; + } + } + .arco-modal-body { + padding: 16px 24px 20px; + } + .arco-modal-footer { + border-top: none; + padding: 0; + } +} diff --git a/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue b/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue new file mode 100644 index 0000000..471dfb2 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue @@ -0,0 +1,31 @@ + + + + + + diff --git a/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/style.scss b/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/style.scss new file mode 100644 index 0000000..6c21865 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/style.scss @@ -0,0 +1,18 @@ +.tags-manage-modal { + .arco-modal-header { + border-bottom: none; + height: 56px; + padding: 22px 24px 16px 24px; + .arco-modal-title { + justify-content: flex-start; + } + } + .arco-modal-body { + padding: 16px 24px 20px; + } + .arco-modal-footer { + border-top: none; + padding: 0; + } + } + \ No newline at end of file diff --git a/src/views/property-marketing/media-account/account-manage/constants.ts b/src/views/property-marketing/media-account/account-manage/constants.ts new file mode 100644 index 0000000..39ae6fd --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/constants.ts @@ -0,0 +1,38 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-25 15:24:59 + */ +export const INITIAL_QUERY = { + search: '', + status: '', + platform: '', + operator_id: '', + group_ids: [], + tag_ids: [], +}; + +export const PLATFORM_LIST = [ + { + label: '抖音', + value: 0, + }, + { + label: '小红书', + value: 1, + }, +]; + +export const STATUS_LIST = [ + { + label: '未授权', + value: 0, + }, + { + label: '正常', + value: 1, + }, + { + label: '异常', + value: 2, + }, +]; diff --git a/src/views/property-marketing/media-account/account-manage/index.vue b/src/views/property-marketing/media-account/account-manage/index.vue new file mode 100644 index 0000000..6c59e6b --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/index.vue @@ -0,0 +1,178 @@ + + + + + + diff --git a/src/views/property-marketing/media-account/account-manage/style.scss b/src/views/property-marketing/media-account/account-manage/style.scss new file mode 100644 index 0000000..97d0462 --- /dev/null +++ b/src/views/property-marketing/media-account/account-manage/style.scss @@ -0,0 +1,106 @@ +.account-manage-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 { + border-radius: 8px; + border: 1px solid #e6e6e8; + .top { + .title { + font-family: 'Alibaba PuHuiTi'; + font-style: normal; + } + :deep(.arco-btn) { + .arco-btn-icon { + line-height: 16px; + } + } + } + } + .tip-row { + border-radius: 2px; + background: #f0edff; + .label { + font-family: 'Alibaba PuHuiTi'; + 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% */ + } + } + .card-wrap { + display: flex; + flex-direction: column; + .pagination-box { + display: flex; + width: 100%; + padding: 16px 24px; + justify-content: flex-end; + align-items: center; + :deep(.arco-pagination) { + .arco-pagination-list { + .arco-pagination-item { + border-radius: 4px; + border: 1px solid var(--BG-300, #e6e6e8); + &.arco-pagination-item-ellipsis { + border: none; + } + + &.arco-pagination-item-active { + background-color: transparent; + border: 1px solid var(--Brand-Brand-6, #6d4cfe); + } + } + } + .arco-pagination-jumper-input { + border-radius: 4px; + border: 1px solid var(--BG-300, #e6e6e8); + } + .arco-pagination-jumper-prepend { + color: var(--Text-2, #3c4043); + text-align: right; + font-family: 'Alibaba PuHuiTi'; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; /* 157.143% */ + } + .arco-select-view-single { + border-radius: 4px; + border: 1px solid var(--BG-300, #e6e6e8); + } + } + } + } +} diff --git a/src/views/property-marketing/put-account/account-manage/components/account-table/index.vue b/src/views/property-marketing/put-account/account-manage/components/account-table/index.vue new file mode 100644 index 0000000..8828433 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/components/account-table/index.vue @@ -0,0 +1,80 @@ + + + + + + diff --git a/src/views/property-marketing/put-account/account-manage/components/account-table/style.scss b/src/views/property-marketing/put-account/account-manage/components/account-table/style.scss new file mode 100644 index 0000000..0a75fe9 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/components/account-table/style.scss @@ -0,0 +1,103 @@ +.card-container { + flex: 1; + display: grid; + grid-template-rows: repeat(2, 1fr); /* 2行 */ + grid-template-columns: repeat(4, 1fr); /* 4列 */ + gap: 20px; + .card-item { + border-radius: 8px; + border: 1px solid var(--BG-300, #e6e6e8); + background: var(--BG-white, #fff); + padding: 12px 16px 16px; + display: flex; + align-items: flex-start; + .name { + color: var(--Text-1, #211f24); + font-family: 'Alibaba PuHuiTi'; + font-size: 14px; + font-style: normal; + font-weight: 400; + margin-bottom: 11px; + // line-height: 22px; /* 157.143% */ + } + .label { + color: var(--Text-3, #737478); + font-family: 'Alibaba PuHuiTi'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + .field-row { + width: 100%; + margin-bottom: 4px; + display: flex; + justify-content: space-between; + .cts { + color: var(--Text-2, #3c4043); + font-family: 'Alibaba PuHuiTi'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + .status-box { + display: flex; + padding: 0px 8px; + align-items: center; + border-radius: 2px; + background: #f2f3f5; + .text { + color: var(--BG-700, #737478); + font-family: 'Alibaba PuHuiTi'; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; /* 166.667% */ + } + + &-1 { + background: #ebf7f2; + .text { + color: #25c883; + } + } + &-2 { + background: #ffe7e4; + .text { + color: #f64b31; + } + } + } + .tag-box { + display: flex; + height: 16px; + padding: 0px 4px; + align-items: center; + border-radius: 2px; + background: var(--BG-200, #f2f3f5); + .text { + color: var(--Text-2, #3c4043); + font-family: 'Alibaba PuHuiTi'; + font-size: 10px; + font-style: normal; + font-weight: 400; + line-height: normal; + } + &:not(:last-child) { + margin-right: 4px; + } + } + &:last-child { + margin-bottom: 8px; + } + } + + .operate-row { + display: flex; + align-items: center; + justify-content: flex-end; + padding-top: 8px; + } + } +} diff --git a/src/views/property-marketing/put-account/account-manage/components/filter-block/index.vue b/src/views/property-marketing/put-account/account-manage/components/filter-block/index.vue new file mode 100644 index 0000000..39dc8f2 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/components/filter-block/index.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/views/property-marketing/put-account/account-manage/components/filter-block/style.scss b/src/views/property-marketing/put-account/account-manage/components/filter-block/style.scss new file mode 100644 index 0000000..3a33894 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/components/filter-block/style.scss @@ -0,0 +1,36 @@ +.container { + :deep(.arco-input-wrapper), + :deep(.arco-select-view-single), + :deep(.arco-select-view-multiple) { + border-radius: 4px; + border-color: #d7d7d9; + background-color: #fff; + &:focus-within, + &.arco-input-focus { + background-color: var(--color-bg-2); + border-color: rgb(var(--primary-6)); + box-shadow: 0 0 0 0 var(--color-primary-light-2); + } + } + .filter-row { + .filter-row-item { + &:not(:last-child) { + margin-right: 24px; + } + .label { + margin-right: 8px; + color: #211f24; + font-family: 'Alibaba PuHuiTi'; + 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/put-account/account-manage/constants.ts b/src/views/property-marketing/put-account/account-manage/constants.ts new file mode 100644 index 0000000..18c8201 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/constants.ts @@ -0,0 +1,36 @@ +/* + * @Author: RenXiaoDong + * @Date: 2025-06-25 15:24:59 + */ +export const INITIAL_QUERY = { + search: '', + status: '', + platform: '', + operator_id: '', +}; + +export const PLATFORM_LIST = [ + { + label: '抖音', + value: 0, + }, + { + label: '小红书', + value: 1, + }, +]; + +export const STATUS_LIST = [ + { + label: '未授权', + value: 0, + }, + { + label: '正常', + value: 1, + }, + { + label: '异常', + value: 2, + }, +]; diff --git a/src/views/property-marketing/put-account/account-manage/index.vue b/src/views/property-marketing/put-account/account-manage/index.vue new file mode 100644 index 0000000..44f7ff1 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/index.vue @@ -0,0 +1,143 @@ + + + + + + diff --git a/src/views/property-marketing/put-account/account-manage/style.scss b/src/views/property-marketing/put-account/account-manage/style.scss new file mode 100644 index 0000000..97d0462 --- /dev/null +++ b/src/views/property-marketing/put-account/account-manage/style.scss @@ -0,0 +1,106 @@ +.account-manage-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 { + border-radius: 8px; + border: 1px solid #e6e6e8; + .top { + .title { + font-family: 'Alibaba PuHuiTi'; + font-style: normal; + } + :deep(.arco-btn) { + .arco-btn-icon { + line-height: 16px; + } + } + } + } + .tip-row { + border-radius: 2px; + background: #f0edff; + .label { + font-family: 'Alibaba PuHuiTi'; + 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% */ + } + } + .card-wrap { + display: flex; + flex-direction: column; + .pagination-box { + display: flex; + width: 100%; + padding: 16px 24px; + justify-content: flex-end; + align-items: center; + :deep(.arco-pagination) { + .arco-pagination-list { + .arco-pagination-item { + border-radius: 4px; + border: 1px solid var(--BG-300, #e6e6e8); + &.arco-pagination-item-ellipsis { + border: none; + } + + &.arco-pagination-item-active { + background-color: transparent; + border: 1px solid var(--Brand-Brand-6, #6d4cfe); + } + } + } + .arco-pagination-jumper-input { + border-radius: 4px; + border: 1px solid var(--BG-300, #e6e6e8); + } + .arco-pagination-jumper-prepend { + color: var(--Text-2, #3c4043); + text-align: right; + font-family: 'Alibaba PuHuiTi'; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; /* 157.143% */ + } + .arco-select-view-single { + border-radius: 4px; + border: 1px solid var(--BG-300, #e6e6e8); + } + } + } + } +}