From f0d221ebf9b31fa8071bc0bfc774a7cb4fd923be Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Thu, 19 Jun 2025 18:56:17 +0800 Subject: [PATCH] feat: mall brokerage user --- .../api/mall/trade/brokerage/user/index.ts | 10 +- .../views/mall/trade/brokerage/user/data.ts | 133 +++++++++ .../views/mall/trade/brokerage/user/index.vue | 252 ++++++++++++++++-- .../user/modules/order-list-modal.vue | 193 ++++++++++++++ .../user/modules/user-create-form.vue | 166 ++++++++++++ .../user/modules/user-list-modal.vue | 157 +++++++++++ .../user/modules/user-update-form.vue | 131 +++++++++ 7 files changed, 1013 insertions(+), 29 deletions(-) create mode 100644 apps/web-antd/src/views/mall/trade/brokerage/user/data.ts create mode 100644 apps/web-antd/src/views/mall/trade/brokerage/user/modules/order-list-modal.vue create mode 100644 apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-create-form.vue create mode 100644 apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-list-modal.vue create mode 100644 apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-update-form.vue diff --git a/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts b/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts index d523f1d6e..51c24f25a 100644 --- a/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts +++ b/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts @@ -29,12 +29,14 @@ export namespace MallBrokerageUserApi { export interface CreateRequest { /** 用户编号 */ userId: number; + /** 推广员编号 */ + bindUserId: number; } /** 修改推广员请求 */ export interface UpdateBindUserRequest { /** 用户编号 */ - userId: number; + id: number; /** 推广员编号 */ bindUserId: number; } @@ -42,15 +44,15 @@ export namespace MallBrokerageUserApi { /** 清除推广员请求 */ export interface ClearBindUserRequest { /** 用户编号 */ - userId: number; + id: number; } /** 修改推广资格请求 */ export interface UpdateBrokerageEnabledRequest { /** 用户编号 */ - userId: number; + id: number; /** 是否启用分销 */ - brokerageEnabled: boolean; + enabled: boolean; } } diff --git a/apps/web-antd/src/views/mall/trade/brokerage/user/data.ts b/apps/web-antd/src/views/mall/trade/brokerage/user/data.ts new file mode 100644 index 000000000..e37e1ee1c --- /dev/null +++ b/apps/web-antd/src/views/mall/trade/brokerage/user/data.ts @@ -0,0 +1,133 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; + +import { fenToYuan } from '@vben/utils'; + +import { getRangePickerDefaultProps } from '#/utils'; + +/** 列表的搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'bindUserId', + label: '推广员编号', + component: 'Input', + componentProps: { + placeholder: '请输入推广员编号', + clearable: true, + }, + }, + { + fieldName: 'brokerageEnabled', + label: '推广资格', + component: 'Select', + componentProps: { + placeholder: '请选择推广资格', + clearable: true, + options: [ + { label: '有', value: true }, + { label: '无', value: false }, + ], + }, + }, + { + fieldName: 'createTime', + label: '创建时间', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + clearable: true, + }, + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns(): VxeTableGridOptions['columns'] { + return [ + { + field: 'id', + title: '用户编号', + minWidth: 80, + }, + { + field: 'avatar', + title: '头像', + width: 70, + slots: { default: 'avatar' }, + }, + { + field: 'nickname', + title: '昵称', + minWidth: 80, + }, + { + field: 'brokerageUserCount', + title: '推广人数', + width: 80, + }, + { + field: 'brokerageOrderCount', + title: '推广订单数量', + minWidth: 110, + }, + { + field: 'brokerageOrderPrice', + title: '推广订单金额', + minWidth: 110, + formatter: ({ row }) => `¥${fenToYuan(row.brokerageOrderPrice)}`, + }, + { + field: 'withdrawPrice', + title: '已提现金额', + minWidth: 100, + formatter: ({ row }) => `¥${fenToYuan(row.withdrawPrice)}`, + }, + { + field: 'withdrawCount', + title: '已提现次数', + minWidth: 100, + }, + { + field: 'price', + title: '未提现金额', + minWidth: 100, + formatter: ({ row }) => `¥${fenToYuan(row.price)}`, + }, + { + field: 'frozenPrice', + title: '冻结中佣金', + minWidth: 100, + formatter: ({ row }) => `¥${fenToYuan(row.frozenPrice)}`, + }, + { + field: 'brokerageEnabled', + title: '推广资格', + minWidth: 80, + slots: { default: 'brokerageEnabled' }, + }, + { + field: 'brokerageTime', + title: '成为推广员时间', + width: 180, + formatter: 'formatDateTime', + }, + { + field: 'bindUserId', + title: '上级推广员编号', + width: 150, + }, + { + field: 'bindUserTime', + title: '推广员绑定时间', + width: 180, + formatter: 'formatDateTime', + }, + { + title: '操作', + width: 150, + fixed: 'right', + slots: { default: 'actions' }, + }, + ]; +} diff --git a/apps/web-antd/src/views/mall/trade/brokerage/user/index.vue b/apps/web-antd/src/views/mall/trade/brokerage/user/index.vue index 969426470..56c004ba3 100644 --- a/apps/web-antd/src/views/mall/trade/brokerage/user/index.vue +++ b/apps/web-antd/src/views/mall/trade/brokerage/user/index.vue @@ -1,32 +1,234 @@ diff --git a/apps/web-antd/src/views/mall/trade/brokerage/user/modules/order-list-modal.vue b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/order-list-modal.vue new file mode 100644 index 000000000..e10839e5b --- /dev/null +++ b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/order-list-modal.vue @@ -0,0 +1,193 @@ + + + diff --git a/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-create-form.vue b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-create-form.vue new file mode 100644 index 000000000..4d49231c7 --- /dev/null +++ b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-create-form.vue @@ -0,0 +1,166 @@ + + + diff --git a/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-list-modal.vue b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-list-modal.vue new file mode 100644 index 000000000..18dcc46ee --- /dev/null +++ b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-list-modal.vue @@ -0,0 +1,157 @@ + + + diff --git a/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-update-form.vue b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-update-form.vue new file mode 100644 index 000000000..4f2fe59e8 --- /dev/null +++ b/apps/web-antd/src/views/mall/trade/brokerage/user/modules/user-update-form.vue @@ -0,0 +1,131 @@ + + +