diff --git a/apps/web-antd/src/api/merchant/index.ts b/apps/web-antd/src/api/merchant/index.ts new file mode 100644 index 0000000..0edcdbe --- /dev/null +++ b/apps/web-antd/src/api/merchant/index.ts @@ -0,0 +1,41 @@ +import { requestClient } from '#/api/request'; + +/** + * 商户信息 DTO + */ +export interface MerchantDto { + /** 商户ID */ + id: string; + /** 商户名称 */ + merchantName: string; + /** 联系人 */ + contactName: string; + /** 联系电话 */ + contactPhone: string; + /** 商户地址 */ + address: string; + /** 商户状态 (1: 正常, 2: 禁用) */ + status: number; + /** 营业执照代码 */ + businessLicenseCode: string; + /** 商户简介 */ + description: string; + /** 创建时间 */ + createTime: string; + /** 商户Logo */ + logo?: string; +} + +/** + * 获取当前商户信息 + */ +export async function getMerchantInfoApi() { + return requestClient.get('/merchant/info'); +} + +/** + * 更新商户信息 + */ +export async function updateMerchantInfoApi(data: Partial) { + return requestClient.post('/merchant/update', data); +} diff --git a/apps/web-antd/src/layouts/basic.vue b/apps/web-antd/src/layouts/basic.vue index 8d39d39..5350e1a 100644 --- a/apps/web-antd/src/layouts/basic.vue +++ b/apps/web-antd/src/layouts/basic.vue @@ -87,7 +87,7 @@ const showDot = computed(() => const menus = computed(() => [ { handler: () => { - router.push({ name: 'Profile' }); + router.push({ name: 'MerchantCenter' }); }, icon: 'lucide:store', text: '商户中心', diff --git a/apps/web-antd/src/locales/langs/zh-CN/page.json b/apps/web-antd/src/locales/langs/zh-CN/page.json index 2192d1d..3b97876 100644 --- a/apps/web-antd/src/locales/langs/zh-CN/page.json +++ b/apps/web-antd/src/locales/langs/zh-CN/page.json @@ -11,5 +11,9 @@ "title": "概览", "analytics": "分析页", "workspace": "工作台" + }, + "merchant": { + "title": "商户管理", + "center": "商户中心" } } diff --git a/apps/web-antd/src/router/routes/external/merchant.ts b/apps/web-antd/src/router/routes/external/merchant.ts new file mode 100644 index 0000000..4dbea01 --- /dev/null +++ b/apps/web-antd/src/router/routes/external/merchant.ts @@ -0,0 +1,29 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { BasicLayout } from '#/layouts'; +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + component: BasicLayout, + meta: { + hideInMenu: true, + title: $t('page.merchant.title'), + }, + name: 'MerchantLayout', + path: '/merchant', + children: [ + { + name: 'MerchantCenter', + path: 'center', + component: () => import('#/views/merchant/center/index.vue'), + meta: { + hideInMenu: true, + title: $t('page.merchant.center'), + }, + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-antd/src/router/routes/index.ts b/apps/web-antd/src/router/routes/index.ts index e6fb144..17ea42b 100644 --- a/apps/web-antd/src/router/routes/index.ts +++ b/apps/web-antd/src/router/routes/index.ts @@ -9,17 +9,18 @@ const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', { }); // 有需要可以自行打开注释,并创建文件夹 -// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true }); +const externalRouteFiles = import.meta.glob('./external/**/*.ts', { + eager: true, +}); // const staticRouteFiles = import.meta.glob('./static/**/*.ts', { eager: true }); /** 动态路由 */ const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles); /** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统(不会显示在菜单中) */ -// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles); // const staticRoutes: RouteRecordRaw[] = mergeRouteModules(staticRouteFiles); const staticRoutes: RouteRecordRaw[] = []; -const externalRoutes: RouteRecordRaw[] = []; +const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles); /** 路由列表,由基本路由、外部路由和404兜底路由组成 * 无需走权限验证(会一直显示在菜单中) */ diff --git a/apps/web-antd/src/views/merchant/center/index.vue b/apps/web-antd/src/views/merchant/center/index.vue new file mode 100644 index 0000000..13093f6 --- /dev/null +++ b/apps/web-antd/src/views/merchant/center/index.vue @@ -0,0 +1,112 @@ + + + + +