feat(member): implement points mall module pages

This commit is contained in:
2026-03-04 11:57:05 +08:00
parent 645a3beb47
commit 8f64978bf0
33 changed files with 4904 additions and 2 deletions

View File

@@ -0,0 +1,147 @@
import type {
MemberPointMallExchangeType,
MemberPointMallNotifyChannel,
MemberPointMallPickupMethod,
MemberPointMallProductStatus,
MemberPointMallRecordStatus,
MemberPointMallRedeemType,
MemberPointMallVerifyMethod,
} from '#/api/member/points-mall';
import type { PointMallTabKey } from '#/views/member/points-mall/types';
/** 积分商城查看权限。 */
export const MEMBER_POINTS_MALL_VIEW_PERMISSION =
'tenant:member:points-mall:view';
/** 积分商城管理权限。 */
export const MEMBER_POINTS_MALL_MANAGE_PERMISSION =
'tenant:member:points-mall:manage';
/** 页面 Tab 选项。 */
export const POINTS_MALL_TAB_OPTIONS: Array<{
label: string;
value: PointMallTabKey;
}> = [
{ label: '积分规则', value: 'rules' },
{ label: '兑换商品', value: 'products' },
{ label: '兑换记录', value: 'records' },
];
/** 商品状态筛选。 */
export const POINTS_MALL_PRODUCT_STATUS_FILTER_OPTIONS: Array<{
label: string;
value: '' | MemberPointMallProductStatus;
}> = [
{ label: '全部状态', value: '' },
{ label: '上架', value: 'enabled' },
{ label: '下架', value: 'disabled' },
];
/** 记录类型筛选。 */
export const POINTS_MALL_RECORD_REDEEM_FILTER_OPTIONS: Array<{
label: string;
value: '' | MemberPointMallRedeemType;
}> = [
{ label: '全部类型', value: '' },
{ label: '兑换商品', value: 'product' },
{ label: '兑换优惠券', value: 'coupon' },
{ label: '兑换实物', value: 'physical' },
];
/** 记录状态筛选。 */
export const POINTS_MALL_RECORD_STATUS_FILTER_OPTIONS: Array<{
label: string;
value: '' | MemberPointMallRecordStatus;
}> = [
{ label: '全部状态', value: '' },
{ label: '待领取', value: 'pending_pickup' },
{ label: '已发放', value: 'issued' },
{ label: '已完成', value: 'completed' },
{ label: '已取消', value: 'canceled' },
];
/** 兑换类型选项。 */
export const POINTS_MALL_REDEEM_TYPE_OPTIONS: Array<{
label: string;
value: MemberPointMallRedeemType;
}> = [
{ label: '兑换商品', value: 'product' },
{ label: '兑换优惠券', value: 'coupon' },
{ label: '兑换实物', value: 'physical' },
];
/** 兑换类型提示。 */
export const POINTS_MALL_REDEEM_TYPE_HINT_MAP: Record<
MemberPointMallRedeemType,
string
> = {
product: '顾客兑换后系统自动发放商品兑换券,下单时该商品免费',
coupon: '顾客兑换后优惠券直接发到券包',
physical: '实物商品需到店自提,不走线上履约',
};
/** 领取方式选项。 */
export const POINTS_MALL_PICKUP_METHOD_OPTIONS: Array<{
label: string;
value: MemberPointMallPickupMethod;
}> = [
{ label: '到店自提', value: 'store_pickup' },
{ label: '快递配送', value: 'delivery' },
];
/** 兑换方式选项。 */
export const POINTS_MALL_EXCHANGE_TYPE_OPTIONS: Array<{
label: string;
value: MemberPointMallExchangeType;
}> = [
{ label: '纯积分', value: 'points' },
{ label: '积分 + 现金', value: 'mixed' },
];
/** 通知渠道选项。 */
export const POINTS_MALL_NOTIFY_CHANNEL_OPTIONS: Array<{
label: string;
value: MemberPointMallNotifyChannel;
}> = [
{ label: '站内消息', value: 'in_app' },
{ label: '短信通知', value: 'sms' },
];
/** 核销方式选项。 */
export const POINTS_MALL_VERIFY_METHOD_OPTIONS: Array<{
label: string;
value: MemberPointMallVerifyMethod;
}> = [
{ label: '扫码核销', value: 'scan' },
{ label: '手动核销', value: 'manual' },
];
/** 商品状态文案。 */
export const POINTS_MALL_PRODUCT_STATUS_TEXT_MAP: Record<
MemberPointMallProductStatus,
string
> = {
enabled: '上架',
disabled: '下架',
};
/** 类型 Tag 样式。 */
export const POINTS_MALL_REDEEM_TYPE_CLASS_MAP: Record<
MemberPointMallRedeemType,
'is-blue' | 'is-green' | 'is-orange'
> = {
product: 'is-blue',
coupon: 'is-green',
physical: 'is-orange',
};
/** 记录状态样式。 */
export const POINTS_MALL_RECORD_STATUS_CLASS_MAP: Record<
MemberPointMallRecordStatus,
'is-gray' | 'is-green' | 'is-orange' | 'is-red'
> = {
pending_pickup: 'is-orange',
issued: 'is-green',
completed: 'is-green',
canceled: 'is-gray',
};