From eebd164be405e735c13eddd1c6b2750b1d571678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 21 Oct 2025 20:52:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor(shop):=E4=BC=98=E5=8C=96=E5=88=86?= =?UTF-8?q?=E9=94=80=E5=95=86=E6=8E=A8=E8=8D=90=E5=85=B3=E7=B3=BB=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除文章API中的MODULES_API_URL前缀,统一使用相对路径 - 调整MODULES_API_URL配置逻辑,支持本地存储自定义接口地址 -修复生产环境判断逻辑错误,确保自定义接口地址正确加载 - 新增下划线与驼峰命名转换工具函数 - 扩展ShopDealerReferee模型字段,增加推荐人和被推荐人的详细信息 - 新增推荐关系树状图展示组件RefereeTree.vue- 修改推荐关系列表页面布局,优化用户信息展示方式- 移除推荐层级筛选条件及部分冗余操作按钮 - 简化编辑弹窗标题及表单项,移除不必要的字段输入 - 调整表格列配置,优化推荐关系可视化展示效果 - 移除详情查看和解除推荐关系功能,简化操作流程 - 修复分页查询参数默认值处理问题,增强代码健壮性 --- src/api/cms/cmsArticle/index.ts | 25 +-- src/api/cms/cmsNavigation/index.ts | 2 +- src/api/shop/shopDealerReferee/model/index.ts | 16 +- src/config/setting.ts | 2 +- src/layout/components/header-tools.vue | 2 +- src/utils/common.ts | 28 +++ src/views/developer/components/TenantInfo.vue | 1 - .../components/RefereeTree.vue | 205 ++++++++++++++++++ .../shopDealerReferee/components/search.vue | 59 ++--- .../components/shopDealerRefereeEdit.vue | 42 +--- src/views/sdy/shopDealerReferee/index.vue | 146 ++++++------- 11 files changed, 356 insertions(+), 172 deletions(-) create mode 100644 src/views/sdy/shopDealerReferee/components/RefereeTree.vue diff --git a/src/api/cms/cmsArticle/index.ts b/src/api/cms/cmsArticle/index.ts index 59f0470..2ce4d7d 100644 --- a/src/api/cms/cmsArticle/index.ts +++ b/src/api/cms/cmsArticle/index.ts @@ -1,14 +1,13 @@ import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsArticle, CmsArticleParam } from './model'; -import {MODULES_API_URL} from '@/config/setting'; +import type {ApiResult, PageResult} from '@/api'; +import type {CmsArticle, CmsArticleParam} from './model'; /** * 分页查询文章 */ export async function pageCmsArticle(params: CmsArticleParam) { const res = await request.get>>( - MODULES_API_URL + '/cms/cms-article/page', + '/cms/cms-article/page', { params } @@ -24,7 +23,7 @@ export async function pageCmsArticle(params: CmsArticleParam) { */ export async function listCmsArticle(params?: CmsArticleParam) { const res = await request.get>( - MODULES_API_URL + '/cms/cms-article', + '/cms/cms-article', { params } @@ -40,7 +39,7 @@ export async function listCmsArticle(params?: CmsArticleParam) { */ export async function addCmsArticle(data: CmsArticle) { const res = await request.post>( - MODULES_API_URL + '/cms/cms-article', + '/cms/cms-article', data ); if (res.data.code === 0) { @@ -54,7 +53,7 @@ export async function addCmsArticle(data: CmsArticle) { */ export async function updateCmsArticle(data: CmsArticle) { const res = await request.put>( - MODULES_API_URL + '/cms/cms-article', + '/cms/cms-article', data ); if (res.data.code === 0) { @@ -68,7 +67,7 @@ export async function updateCmsArticle(data: CmsArticle) { */ export async function updateBatchCmsArticle(data: any) { const res = await request.put>( - MODULES_API_URL + '/cms/cms-article/batch', + '/cms/cms-article/batch', data ); if (res.data.code === 0) { @@ -82,7 +81,7 @@ export async function updateBatchCmsArticle(data: any) { */ export async function removeCmsArticle(id?: number) { const res = await request.delete>( - MODULES_API_URL + '/cms/cms-article/' + id + '/cms/cms-article/' + id ); if (res.data.code === 0) { return res.data.message; @@ -95,7 +94,7 @@ export async function removeCmsArticle(id?: number) { */ export async function removeBatchCmsArticle(data: (number | undefined)[]) { const res = await request.delete>( - MODULES_API_URL + '/cms/cms-article/batch', + '/cms/cms-article/batch', { data } @@ -111,7 +110,7 @@ export async function removeBatchCmsArticle(data: (number | undefined)[]) { */ export async function getCmsArticle(id: number) { const res = await request.get>( - MODULES_API_URL + '/cms/cms-article/' + id + '/cms/cms-article/' + id ); if (res.data.code === 0 && res.data.data) { return res.data.data; @@ -133,7 +132,7 @@ export async function getByCode(code: string) { } export async function getCount(params: CmsArticleParam) { - const res = await request.get(MODULES_API_URL + '/cms/cms-article/data', { + const res = await request.get('/cms/cms-article/data', { params }); if (res.data.code === 0) { @@ -150,7 +149,7 @@ export async function importArticles(file: File) { const formData = new FormData(); formData.append('file', file); const res = await request.post>( - MODULES_API_URL + '/cms/cms-article/import', + '/cms/cms-article/import', formData ); if (res.data.code === 0) { diff --git a/src/api/cms/cmsNavigation/index.ts b/src/api/cms/cmsNavigation/index.ts index 1ebb173..1e02b48 100644 --- a/src/api/cms/cmsNavigation/index.ts +++ b/src/api/cms/cmsNavigation/index.ts @@ -148,4 +148,4 @@ export async function importCmsNavigation(file: File) { return res.data.message; } return Promise.reject(new Error(res.data.message)); -} \ No newline at end of file +} diff --git a/src/api/shop/shopDealerReferee/model/index.ts b/src/api/shop/shopDealerReferee/model/index.ts index 1091e32..7a9f615 100644 --- a/src/api/shop/shopDealerReferee/model/index.ts +++ b/src/api/shop/shopDealerReferee/model/index.ts @@ -8,8 +8,22 @@ export interface ShopDealerReferee { id?: number; // 分销商用户ID dealerId?: number; + // 分销商名称 + dealerName?: string; + // 分销商头像 + dealerAvatar?: string; + // 分销商手机号 + dealerPhone?: string; // 用户id(被推荐人) userId?: number; + // 昵称 + nickname?: string; + // 头像 + avatar?: string; + // 别名 + alias?: string; + // 手机号 + phone?: string; // 推荐关系层级(1,2,3) level?: number; // 商城ID @@ -31,4 +45,4 @@ export interface ShopDealerRefereeParam extends PageParam { startTime?: string; endTime?: string; keywords?: string; -} +} \ No newline at end of file diff --git a/src/config/setting.ts b/src/config/setting.ts index 98870d8..31cc623 100644 --- a/src/config/setting.ts +++ b/src/config/setting.ts @@ -9,7 +9,7 @@ export const domain = import.meta.env.VITE_DOMAIN || 'https://your-domain.com'; // 主节点 export const SERVER_API_URL = import.meta.env.VITE_SERVER_API_URL || 'https://your-api.com/api'; // 模块节点 -export const MODULES_API_URL = import.meta.env.VITE_API_URL; +export const MODULES_API_URL = localStorage.getItem('ApiUrl') || import.meta.env.VITE_API_URL; // 文件服务器地址 export const FILE_SERVER = import.meta.env.VITE_FILE_SERVER || 'https://your-file-server.com'; diff --git a/src/layout/components/header-tools.vue b/src/layout/components/header-tools.vue index 3e58727..ff89d93 100644 --- a/src/layout/components/header-tools.vue +++ b/src/layout/components/header-tools.vue @@ -246,7 +246,7 @@ const reload = () => { }); } // 检查是否启动自定义接口 - if(import.meta.env.PROD){ + if(!import.meta.env.PROD){ getCmsWebsiteFieldByCode('ApiUrl').then(res => { if(res){ localStorage.setItem('ApiUrl', `${res.value}`); diff --git a/src/utils/common.ts b/src/utils/common.ts index bb95696..95e05f9 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -563,3 +563,31 @@ export const getTokenBySpm = () => { return `${token}`; } }; + + +/** + * 下划线转驼峰命名 + */ +export function toCamelCase(str: string): string { + return str.replace(/_([a-z])/g, function (_, letter) { + return letter.toUpperCase(); + }); +} + +/** + * 下划线转大驼峰命名 + */ +export function toCamelCaseUpper(str: string): string { + return toCamelCase(str).replace(/^[a-z]/, function (letter) { + return letter.toUpperCase(); + }); +} + +/** + * 转为短下划线 + */ +export function toShortUnderline(str: string): string { + return str.replace(/[A-Z]/g, function (letter) { + return '_' + letter.toLowerCase(); + }).replace(/^_/, ''); +} diff --git a/src/views/developer/components/TenantInfo.vue b/src/views/developer/components/TenantInfo.vue index aaa6c8d..32154d3 100644 --- a/src/views/developer/components/TenantInfo.vue +++ b/src/views/developer/components/TenantInfo.vue @@ -4,7 +4,6 @@ {{ website?.appName }} - {{ website.apiUrl }} https://mp.websoft.top diff --git a/src/views/sdy/shopDealerReferee/components/RefereeTree.vue b/src/views/sdy/shopDealerReferee/components/RefereeTree.vue new file mode 100644 index 0000000..32b808b --- /dev/null +++ b/src/views/sdy/shopDealerReferee/components/RefereeTree.vue @@ -0,0 +1,205 @@ + + + + + \ No newline at end of file diff --git a/src/views/sdy/shopDealerReferee/components/search.vue b/src/views/sdy/shopDealerReferee/components/search.vue index b41c7a5..1688686 100644 --- a/src/views/sdy/shopDealerReferee/components/search.vue +++ b/src/views/sdy/shopDealerReferee/components/search.vue @@ -1,6 +1,5 @@