feat(member): implement points mall module pages
This commit is contained in:
@@ -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',
|
||||
};
|
||||
Reference in New Issue
Block a user