941 lines
41 KiB
Plaintext
941 lines
41 KiB
Plaintext
/**
|
||
* 机构端统一 mock 数据源
|
||
*
|
||
* 开关说明:
|
||
* USE_MOCK = true → 各页面使用此文件数据,不请求 Supabase
|
||
* USE_MOCK = false → 各页面走原有 Supabase 请求逻辑
|
||
*
|
||
* 联动锚点(改动此处会自动同步各页面):
|
||
* 待接单订单数 = PENDING_SHIPMENT_COUNT = 3
|
||
* 退款中订单数 = REFUND_COUNT = 2
|
||
* 低库存商品数 = LOW_STOCK_COUNT = 3
|
||
* 已售罄商品数 = OUT_OF_STOCK_COUNT = 2
|
||
* 未回复评价数 = PENDING_REVIEW_COUNT = 4
|
||
*/
|
||
|
||
// ─── Mock 总开关 ───────────────────────────────────────────────
|
||
export const USE_MOCK = true
|
||
|
||
// ─── 稳定 mock merchantId(无登录时使用) ──────────────────────
|
||
export const MOCK_MERCHANT_ID = 'mock-merchant-0001-0000-000000000001'
|
||
|
||
// ─── 联动锚点常量 ───────────────────────────────────────────────
|
||
export const PENDING_SHIPMENT_COUNT = 3
|
||
export const REFUND_COUNT = 2
|
||
export const LOW_STOCK_COUNT = 3
|
||
export const OUT_OF_STOCK_COUNT = 2
|
||
export const PENDING_REVIEW_COUNT = 4
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 一、店铺信息
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockShopInfoType = {
|
||
id: string
|
||
merchant_id: string
|
||
shop_name: string
|
||
shop_logo: string
|
||
shop_banner: string
|
||
description: string
|
||
contact_name: string
|
||
contact_phone: string
|
||
rating_avg: number
|
||
total_sales: number
|
||
status: number
|
||
}
|
||
|
||
export const MOCK_SHOP_INFO: MockShopInfoType = {
|
||
id: 'mock-shop-0001',
|
||
merchant_id: MOCK_MERCHANT_ID,
|
||
shop_name: '骅锋医养综合服务中心',
|
||
shop_logo: '/static/images/default-shop.png',
|
||
shop_banner: '/static/images/default-banner.png',
|
||
description: '专注居家养老、慢病管理与康复护理一体化服务',
|
||
contact_name: '李医师',
|
||
contact_phone: '020-88888888',
|
||
rating_avg: 4.8,
|
||
total_sales: 386,
|
||
status: 1
|
||
}
|
||
|
||
export const MOCK_TODAY_STATS = {
|
||
orders: 7,
|
||
sales: 2340.00,
|
||
visitors: 42,
|
||
conversion: 17
|
||
}
|
||
|
||
export const MOCK_PENDING_COUNTS = {
|
||
pending_shipment: PENDING_SHIPMENT_COUNT,
|
||
refund_requests: REFUND_COUNT,
|
||
low_stock: LOW_STOCK_COUNT,
|
||
pending_reviews: PENDING_REVIEW_COUNT
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 二、订单 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockOrderItemType = {
|
||
id: string
|
||
order_id: string
|
||
product_id: string
|
||
sku_id: string
|
||
product_name: string
|
||
sku_name: string
|
||
price: number
|
||
quantity: number
|
||
image_url: string
|
||
sku_snapshot: string
|
||
}
|
||
|
||
export type MockOrderType = {
|
||
id: string
|
||
order_no: string
|
||
user_id: string
|
||
merchant_id: string
|
||
order_status: number
|
||
total_amount: number
|
||
product_amount: number
|
||
shipping_fee: number
|
||
paid_amount: number
|
||
shipping_address: string
|
||
remark: string
|
||
created_at: string
|
||
updated_at: string
|
||
items: MockOrderItemType[]
|
||
}
|
||
|
||
// 服务订单 mock(status: 2=待接单/待上门, 3=服务中, 4=已完成)
|
||
// 其中 待接单=3条, 服务中=4条, 已完成=8条 → tab计数对齐
|
||
export const MOCK_ORDERS: MockOrderType[] = [
|
||
// ── 待接单 3 条 ──────────────────────────────────────────
|
||
{
|
||
id: 'order-001', order_no: 'SV2026041300001',
|
||
user_id: 'user-001', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 2, total_amount: 380.00, product_amount: 380.00,
|
||
shipping_fee: 0, paid_amount: 380.00,
|
||
shipping_address: '广州市天河区天河路123号 李奶奶',
|
||
remark: '老人行动不便,请护士上午到访',
|
||
created_at: '2026-04-13T08:15:00+08:00', updated_at: '2026-04-13T08:15:00+08:00',
|
||
items: [{
|
||
id: 'item-001-1', order_id: 'order-001', product_id: 'prod-001',
|
||
sku_id: '', product_name: '居家上门护理(半日)', sku_name: '标准护理套餐',
|
||
price: 380.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-002', order_no: 'SV2026041300002',
|
||
user_id: 'user-002', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 2, total_amount: 260.00, product_amount: 260.00,
|
||
shipping_fee: 0, paid_amount: 260.00,
|
||
shipping_address: '广州市越秀区东风东路456号 张爷爷',
|
||
remark: '高血压患者,需携带血压计',
|
||
created_at: '2026-04-13T09:30:00+08:00', updated_at: '2026-04-13T09:30:00+08:00',
|
||
items: [
|
||
{
|
||
id: 'item-002-1', order_id: 'order-002', product_id: 'prod-002',
|
||
sku_id: '', product_name: '血压血糖监测服务', sku_name: '',
|
||
price: 180.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
},
|
||
{
|
||
id: 'item-002-2', order_id: 'order-002', product_id: 'prod-003',
|
||
sku_id: '', product_name: '慢病随访服务', sku_name: '',
|
||
price: 80.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}
|
||
]
|
||
},
|
||
{
|
||
id: 'order-003', order_no: 'SV2026041300003',
|
||
user_id: 'user-003', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 2, total_amount: 520.00, product_amount: 520.00,
|
||
shipping_fee: 0, paid_amount: 520.00,
|
||
shipping_address: '广州市海珠区工业大道789号 王阿姨',
|
||
remark: '术后第7天,需换药处理',
|
||
created_at: '2026-04-13T10:00:00+08:00', updated_at: '2026-04-13T10:00:00+08:00',
|
||
items: [{
|
||
id: 'item-003-1', order_id: 'order-003', product_id: 'prod-004',
|
||
sku_id: '', product_name: '术后伤口护理', sku_name: '标准换药套餐',
|
||
price: 260.00, quantity: 2, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
|
||
// ── 服务中 4 条 ──────────────────────────────────────────
|
||
{
|
||
id: 'order-004', order_no: 'SV2026041200004',
|
||
user_id: 'user-004', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 3, total_amount: 1200.00, product_amount: 1200.00,
|
||
shipping_fee: 0, paid_amount: 1200.00,
|
||
shipping_address: '广州市番禺区市桥街101号 陈老先生',
|
||
remark: '每周三次康复训练',
|
||
created_at: '2026-04-12T14:00:00+08:00', updated_at: '2026-04-12T14:30:00+08:00',
|
||
items: [{
|
||
id: 'item-004-1', order_id: 'order-004', product_id: 'prod-005',
|
||
sku_id: '', product_name: '上门康复护理(月套餐)', sku_name: '基础康复12次',
|
||
price: 1200.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-005', order_no: 'SV2026041200005',
|
||
user_id: 'user-005', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 3, total_amount: 450.00, product_amount: 450.00,
|
||
shipping_fee: 0, paid_amount: 450.00,
|
||
shipping_address: '广州市白云区棠景街202号 刘奶奶',
|
||
remark: '糖尿病足护理,注意消毒',
|
||
created_at: '2026-04-12T09:00:00+08:00', updated_at: '2026-04-12T11:00:00+08:00',
|
||
items: [
|
||
{
|
||
id: 'item-005-1', order_id: 'order-005', product_id: 'prod-006',
|
||
sku_id: '', product_name: '糖尿病足专项护理', sku_name: '',
|
||
price: 280.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
},
|
||
{
|
||
id: 'item-005-2', order_id: 'order-005', product_id: 'prod-002',
|
||
sku_id: '', product_name: '血压血糖监测服务', sku_name: '',
|
||
price: 170.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}
|
||
]
|
||
},
|
||
{
|
||
id: 'order-006', order_no: 'SV2026041100006',
|
||
user_id: 'user-006', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 3, total_amount: 680.00, product_amount: 680.00,
|
||
shipping_fee: 0, paid_amount: 680.00,
|
||
shipping_address: '广州市荔湾区荔湾路303号 赵大伯',
|
||
remark: '卒中后遗症,肢体功能训练',
|
||
created_at: '2026-04-11T10:30:00+08:00', updated_at: '2026-04-11T14:00:00+08:00',
|
||
items: [{
|
||
id: 'item-006-1', order_id: 'order-006', product_id: 'prod-005',
|
||
sku_id: '', product_name: '上门康复护理(月套餐)', sku_name: '进阶康复8次',
|
||
price: 680.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-007', order_no: 'SV2026041100007',
|
||
user_id: 'user-007', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 3, total_amount: 320.00, product_amount: 320.00,
|
||
shipping_fee: 0, paid_amount: 320.00,
|
||
shipping_address: '广州市黄埔区科学城404号 孙阿姨',
|
||
remark: '鼻饲护理,按时喂食',
|
||
created_at: '2026-04-11T08:00:00+08:00', updated_at: '2026-04-11T08:00:00+08:00',
|
||
items: [{
|
||
id: 'item-007-1', order_id: 'order-007', product_id: 'prod-007',
|
||
sku_id: '', product_name: '鼻饲营养护理', sku_name: '',
|
||
price: 320.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
|
||
// ── 已完成 8 条 ──────────────────────────────────────────
|
||
{
|
||
id: 'order-008', order_no: 'SV2026041000008',
|
||
user_id: 'user-001', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 180.00, product_amount: 180.00,
|
||
shipping_fee: 0, paid_amount: 180.00,
|
||
shipping_address: '广州市天河区天河路123号 李奶奶',
|
||
remark: '', created_at: '2026-04-10T09:00:00+08:00', updated_at: '2026-04-10T12:00:00+08:00',
|
||
items: [{
|
||
id: 'item-008-1', order_id: 'order-008', product_id: 'prod-002',
|
||
sku_id: '', product_name: '血压血糖监测服务', sku_name: '',
|
||
price: 180.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-009', order_no: 'SV2026040900009',
|
||
user_id: 'user-008', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 560.00, product_amount: 560.00,
|
||
shipping_fee: 0, paid_amount: 560.00,
|
||
shipping_address: '广州市增城区荔城街505号 郑爷爷',
|
||
remark: '', created_at: '2026-04-09T10:00:00+08:00', updated_at: '2026-04-09T15:00:00+08:00',
|
||
items: [{
|
||
id: 'item-009-1', order_id: 'order-009', product_id: 'prod-008',
|
||
sku_id: '', product_name: '术后营养指导(4次)', sku_name: '',
|
||
price: 280.00, quantity: 2, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-010', order_no: 'SV2026040800010',
|
||
user_id: 'user-009', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 260.00, product_amount: 260.00,
|
||
shipping_fee: 0, paid_amount: 260.00,
|
||
shipping_address: '广州市从化区街口街606号 吴阿姨',
|
||
remark: '', created_at: '2026-04-08T14:00:00+08:00', updated_at: '2026-04-08T16:30:00+08:00',
|
||
items: [{
|
||
id: 'item-010-1', order_id: 'order-010', product_id: 'prod-003',
|
||
sku_id: '', product_name: '慢病随访服务', sku_name: '',
|
||
price: 130.00, quantity: 2, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-011', order_no: 'SV2026040700011',
|
||
user_id: 'user-010', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 980.00, product_amount: 980.00,
|
||
shipping_fee: 0, paid_amount: 980.00,
|
||
shipping_address: '广州市南沙区南沙街707号 何老先生',
|
||
remark: '', created_at: '2026-04-07T09:00:00+08:00', updated_at: '2026-04-07T17:00:00+08:00',
|
||
items: [
|
||
{
|
||
id: 'item-011-1', order_id: 'order-011', product_id: 'prod-001',
|
||
sku_id: '', product_name: '居家上门护理(半日)', sku_name: '',
|
||
price: 380.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
},
|
||
{
|
||
id: 'item-011-2', order_id: 'order-011', product_id: 'prod-008',
|
||
sku_id: '', product_name: '术后营养指导(4次)', sku_name: '',
|
||
price: 300.00, quantity: 2, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}
|
||
]
|
||
},
|
||
{
|
||
id: 'order-012', order_no: 'SV2026040600012',
|
||
user_id: 'user-002', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 430.00, product_amount: 430.00,
|
||
shipping_fee: 0, paid_amount: 430.00,
|
||
shipping_address: '广州市越秀区东风东路456号 张爷爷',
|
||
remark: '', created_at: '2026-04-06T10:00:00+08:00', updated_at: '2026-04-06T12:30:00+08:00',
|
||
items: [{
|
||
id: 'item-012-1', order_id: 'order-012', product_id: 'prod-009',
|
||
sku_id: '', product_name: '中医调理推拿(3次)', sku_name: '',
|
||
price: 430.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-013', order_no: 'SV2026040500013',
|
||
user_id: 'user-011', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 350.00, product_amount: 350.00,
|
||
shipping_fee: 0, paid_amount: 350.00,
|
||
shipping_address: '广州市花都区新华街808号 冯奶奶',
|
||
remark: '', created_at: '2026-04-05T14:30:00+08:00', updated_at: '2026-04-05T16:00:00+08:00',
|
||
items: [{
|
||
id: 'item-013-1', order_id: 'order-013', product_id: 'prod-006',
|
||
sku_id: '', product_name: '糖尿病足专项护理', sku_name: '',
|
||
price: 350.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-014', order_no: 'SV2026040400014',
|
||
user_id: 'user-012', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 480.00, product_amount: 480.00,
|
||
shipping_fee: 0, paid_amount: 480.00,
|
||
shipping_address: '广州市番禺区大石街909号 蒋大伯',
|
||
remark: '', created_at: '2026-04-04T09:00:00+08:00', updated_at: '2026-04-04T14:00:00+08:00',
|
||
items: [{
|
||
id: 'item-014-1', order_id: 'order-014', product_id: 'prod-004',
|
||
sku_id: '', product_name: '术后伤口护理', sku_name: '',
|
||
price: 240.00, quantity: 2, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-015', order_no: 'SV2026040300015',
|
||
user_id: 'user-003', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 4, total_amount: 680.00, product_amount: 680.00,
|
||
shipping_fee: 0, paid_amount: 680.00,
|
||
shipping_address: '广州市海珠区工业大道789号 王阿姨',
|
||
remark: '', created_at: '2026-04-03T10:00:00+08:00', updated_at: '2026-04-03T15:30:00+08:00',
|
||
items: [{
|
||
id: 'item-015-1', order_id: 'order-015', product_id: 'prod-005',
|
||
sku_id: '', product_name: '上门康复护理(月套餐)', sku_name: '',
|
||
price: 680.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
}
|
||
]
|
||
|
||
// 售后订单 mock(status: 0=退款中, 6=退款完成)
|
||
// 退款中=2条, 退款完成=3条
|
||
export const MOCK_AFTERSALE_ORDERS: MockOrderType[] = [
|
||
{
|
||
id: 'order-ref-001', order_no: 'SV2026041300R01',
|
||
user_id: 'user-004', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 0, total_amount: 380.00, product_amount: 380.00,
|
||
shipping_fee: 0, paid_amount: 380.00,
|
||
shipping_address: '广州市番禺区市桥街101号 陈老先生',
|
||
remark: '家属临时有事,申请取消本次上门服务',
|
||
created_at: '2026-04-13T07:00:00+08:00', updated_at: '2026-04-13T07:30:00+08:00',
|
||
items: [{
|
||
id: 'item-ref-001-1', order_id: 'order-ref-001', product_id: 'prod-001',
|
||
sku_id: '', product_name: '居家上门护理(半日)', sku_name: '',
|
||
price: 380.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-ref-002', order_no: 'SV2026041200R02',
|
||
user_id: 'user-005', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 0, total_amount: 180.00, product_amount: 180.00,
|
||
shipping_fee: 0, paid_amount: 180.00,
|
||
shipping_address: '广州市白云区棠景街202号 刘奶奶',
|
||
remark: '重复下单需退一单',
|
||
created_at: '2026-04-12T16:00:00+08:00', updated_at: '2026-04-12T16:10:00+08:00',
|
||
items: [{
|
||
id: 'item-ref-002-1', order_id: 'order-ref-002', product_id: 'prod-002',
|
||
sku_id: '', product_name: '血压血糖监测服务', sku_name: '',
|
||
price: 180.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-ref-003', order_no: 'SV2026041000R03',
|
||
user_id: 'user-008', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 6, total_amount: 260.00, product_amount: 260.00,
|
||
shipping_fee: 0, paid_amount: 260.00,
|
||
shipping_address: '广州市增城区荔城街505号 郑爷爷',
|
||
remark: '服务已退款', created_at: '2026-04-10T10:00:00+08:00', updated_at: '2026-04-11T09:00:00+08:00',
|
||
items: [{
|
||
id: 'item-ref-003-1', order_id: 'order-ref-003', product_id: 'prod-003',
|
||
sku_id: '', product_name: '慢病随访服务', sku_name: '',
|
||
price: 130.00, quantity: 2, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-ref-004', order_no: 'SV2026040800R04',
|
||
user_id: 'user-009', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 6, total_amount: 430.00, product_amount: 430.00,
|
||
shipping_fee: 0, paid_amount: 430.00,
|
||
shipping_address: '广州市从化区街口街606号 吴阿姨',
|
||
remark: '', created_at: '2026-04-08T09:00:00+08:00', updated_at: '2026-04-09T10:00:00+08:00',
|
||
items: [{
|
||
id: 'item-ref-004-1', order_id: 'order-ref-004', product_id: 'prod-009',
|
||
sku_id: '', product_name: '中医调理推拿(3次)', sku_name: '',
|
||
price: 430.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
},
|
||
{
|
||
id: 'order-ref-005', order_no: 'SV2026040600R05',
|
||
user_id: 'user-010', merchant_id: MOCK_MERCHANT_ID,
|
||
order_status: 6, total_amount: 320.00, product_amount: 320.00,
|
||
shipping_fee: 0, paid_amount: 320.00,
|
||
shipping_address: '广州市南沙区南沙街707号 何老先生',
|
||
remark: '', created_at: '2026-04-06T14:00:00+08:00', updated_at: '2026-04-07T09:00:00+08:00',
|
||
items: [{
|
||
id: 'item-ref-005-1', order_id: 'order-ref-005', product_id: 'prod-007',
|
||
sku_id: '', product_name: '鼻饲营养护理', sku_name: '',
|
||
price: 320.00, quantity: 1, image_url: '/static/images/default-product.png', sku_snapshot: ''
|
||
}]
|
||
}
|
||
]
|
||
|
||
// 最近5条订单(供 profile 使用,复用上面 MOCK_ORDERS 前5条数据结构)
|
||
export type MockProfileOrderType = {
|
||
id: string
|
||
order_no: string
|
||
order_status: number
|
||
total_amount: number
|
||
created_at: string
|
||
items: MockOrderItemType[]
|
||
}
|
||
|
||
export function getMockRecentOrders() : MockProfileOrderType[] {
|
||
const result: MockProfileOrderType[] = []
|
||
const src = MOCK_ORDERS
|
||
const cnt = src.length < 5 ? src.length : 5
|
||
for (let i = 0; i < cnt; i++) {
|
||
result.push({
|
||
id: src[i].id,
|
||
order_no: src[i].order_no,
|
||
order_status: src[i].order_status,
|
||
total_amount: src[i].total_amount,
|
||
created_at: src[i].created_at,
|
||
items: src[i].items
|
||
} as MockProfileOrderType)
|
||
}
|
||
return result
|
||
}
|
||
|
||
// 订单 tab 计数(由 MOCK_ORDERS 推导,不手写)
|
||
export function getMockOrderTabCounts() : { pending: number, inprogress: number, completed: number, total: number } {
|
||
let pending = 0, inprogress = 0, completed = 0
|
||
for (let i = 0; i < MOCK_ORDERS.length; i++) {
|
||
const s = MOCK_ORDERS[i].order_status
|
||
if (s === 2) pending++
|
||
else if (s === 3) inprogress++
|
||
else if (s === 4) completed++
|
||
}
|
||
return { pending, inprogress, completed, total: MOCK_ORDERS.length }
|
||
}
|
||
|
||
// 售后 tab 计数
|
||
export function getMockAftersaleTabCounts() : { refunding: number, refunded: number, total: number } {
|
||
let refunding = 0, refunded = 0
|
||
for (let i = 0; i < MOCK_AFTERSALE_ORDERS.length; i++) {
|
||
const s = MOCK_AFTERSALE_ORDERS[i].order_status
|
||
if (s === 0) refunding++
|
||
else if (s === 6) refunded++
|
||
}
|
||
return { refunding, refunded, total: MOCK_AFTERSALE_ORDERS.length }
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 三、库存 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockInventoryProductType = {
|
||
id: string
|
||
name: string
|
||
main_image_url: string
|
||
total_stock: number
|
||
warning_stock: number
|
||
}
|
||
|
||
// 12条,覆盖正常/低库存/售罄
|
||
// 低库存3条(stock<=warning_stock且>0),售罄2条(stock=0)
|
||
export const MOCK_INVENTORY_PRODUCTS: MockInventoryProductType[] = [
|
||
{ id: 'prod-001', name: '居家上门护理(半日)', main_image_url: '/static/images/default-product.png', total_stock: 20, warning_stock: 5 },
|
||
{ id: 'prod-002', name: '血压血糖监测服务', main_image_url: '/static/images/default-product.png', total_stock: 30, warning_stock: 8 },
|
||
{ id: 'prod-003', name: '慢病随访服务', main_image_url: '/static/images/default-product.png', total_stock: 25, warning_stock: 5 },
|
||
{ id: 'prod-004', name: '术后伤口护理', main_image_url: '/static/images/default-product.png', total_stock: 4, warning_stock: 5 }, // 低库存1
|
||
{ id: 'prod-005', name: '上门康复护理(月套餐)', main_image_url: '/static/images/default-product.png', total_stock: 8, warning_stock: 10 }, // 低库存2
|
||
{ id: 'prod-006', name: '糖尿病足专项护理', main_image_url: '/static/images/default-product.png', total_stock: 3, warning_stock: 5 }, // 低库存3
|
||
{ id: 'prod-007', name: '鼻饲营养护理', main_image_url: '/static/images/default-product.png', total_stock: 0, warning_stock: 3 }, // 售罄1
|
||
{ id: 'prod-008', name: '术后营养指导(4次)', main_image_url: '/static/images/default-product.png', total_stock: 0, warning_stock: 3 }, // 售罄2
|
||
{ id: 'prod-009', name: '中医调理推拿(3次)', main_image_url: '/static/images/default-product.png', total_stock: 15, warning_stock: 5 },
|
||
{ id: 'prod-010', name: '老年心理疏导服务', main_image_url: '/static/images/default-product.png', total_stock: 18, warning_stock: 5 },
|
||
{ id: 'prod-011', name: '居家药品管理服务', main_image_url: '/static/images/default-product.png', total_stock: 22, warning_stock: 5 },
|
||
{ id: 'prod-012', name: '紧急呼叫响应服务', main_image_url: '/static/images/default-product.png', total_stock: 50, warning_stock: 10 }
|
||
]
|
||
|
||
// 从 mock 推导 stats(与页面 loadStats 逻辑完全一致)
|
||
export function getMockInventoryStats() : { totalProducts: number, lowStock: number, outOfStock: number } {
|
||
let total = 0, low = 0, out = 0
|
||
for (let i = 0; i < MOCK_INVENTORY_PRODUCTS.length; i++) {
|
||
const p = MOCK_INVENTORY_PRODUCTS[i]
|
||
total++
|
||
if (p.total_stock === 0) out++
|
||
else if (p.total_stock <= p.warning_stock) low++
|
||
}
|
||
return { totalProducts: total, lowStock: low, outOfStock: out }
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 四、评价 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockReviewType = {
|
||
id: string
|
||
product_id: string
|
||
product_name: string
|
||
user_id: string
|
||
user_name: string
|
||
user_avatar: string
|
||
rating: number
|
||
content: string
|
||
images: string // JSON 字符串数组,与 parseImages() 兼容
|
||
reply: string
|
||
created_at: string
|
||
}
|
||
|
||
// 10条,4条待回复(reply=''),6条已回复(reply非空)
|
||
// PENDING_REVIEW_COUNT = 4 与此处一致
|
||
export const MOCK_REVIEWS: MockReviewType[] = [
|
||
// ── 待回复 4 条 ──
|
||
{
|
||
id: 'review-001', product_id: 'prod-001', product_name: '居家上门护理(半日)',
|
||
user_id: 'user-001', user_name: '李*敏', user_avatar: '',
|
||
rating: 5, content: '护士非常专业,老人很配合,感谢!态度好服务细心,以后还会预约。',
|
||
images: '[]', reply: '', created_at: '2026-04-13T11:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-002', product_id: 'prod-005', product_name: '上门康复护理(月套餐)',
|
||
user_id: 'user-006', user_name: '赵*强', user_avatar: '',
|
||
rating: 4, content: '康复师技术不错,父亲恢复得挺好,就是希望每次时长能再长一点。',
|
||
images: '[]', reply: '', created_at: '2026-04-12T16:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-003', product_id: 'prod-002', product_name: '血压血糖监测服务',
|
||
user_id: 'user-007', user_name: '孙*华', user_avatar: '',
|
||
rating: 5, content: '每次都准时上门,测量数据详细,还会给我们讲解注意事项,非常满意。',
|
||
images: '[]', reply: '', created_at: '2026-04-11T09:30:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-004', product_id: 'prod-009', product_name: '中医调理推拿(3次)',
|
||
user_id: 'user-002', user_name: '张*国', user_avatar: '',
|
||
rating: 4, content: '推拿师手法到位,推完肩颈轻松很多,就是预约时间有点难排。',
|
||
images: '[]', reply: '', created_at: '2026-04-10T14:00:00+08:00'
|
||
},
|
||
// ── 已回复 6 条 ──
|
||
{
|
||
id: 'review-005', product_id: 'prod-004', product_name: '术后伤口护理',
|
||
user_id: 'user-003', user_name: '王*兰', user_avatar: '',
|
||
rating: 5, content: '术后第一次用这个服务,护士很专业,换药很痛但很快,恢复良好。',
|
||
images: '[]', reply: '感谢您的信任!我们护理团队会继续为您提供专业服务,祝恢复顺利!',
|
||
created_at: '2026-04-09T10:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-006', product_id: 'prod-006', product_name: '糖尿病足专项护理',
|
||
user_id: 'user-005', user_name: '刘*珍', user_avatar: '',
|
||
rating: 5, content: '护士很有耐心,每次都会叮嘱注意事项,妈妈的伤口恢复得很好。',
|
||
images: '["\/static\/images\/default-product.png"]',
|
||
reply: '您好!感谢反馈,糖尿病足护理需要长期坚持,我们会持续陪伴您和家人。',
|
||
created_at: '2026-04-08T11:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-007', product_id: 'prod-008', product_name: '术后营养指导(4次)',
|
||
user_id: 'user-009', user_name: '吴*秀', user_avatar: '',
|
||
rating: 5, content: '营养师给出的饮食方案很合理,家人按方案调整饮食后状态好多了!',
|
||
images: '[]', reply: '谢谢您的认可!合理饮食是术后恢复的关键,有任何问题随时联系我们。',
|
||
created_at: '2026-04-07T09:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-008', product_id: 'prod-003', product_name: '慢病随访服务',
|
||
user_id: 'user-008', user_name: '郑*明', user_avatar: '',
|
||
rating: 4, content: '随访很规律,每次记录都很详细,给老人建立了完整的健康档案。',
|
||
images: '[]', reply: '感谢您的评价!定期随访是管理慢性病的重要手段,我们会继续做好记录工作。',
|
||
created_at: '2026-04-06T14:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-009', product_id: 'prod-007', product_name: '鼻饲营养护理',
|
||
user_id: 'user-011', user_name: '冯*莲', user_avatar: '',
|
||
rating: 5, content: '护士操作非常规范,每次来都会检查设备是否正常,很放心。',
|
||
images: '[]', reply: '您好!鼻饲护理需要严格操作规范,感谢您的信任,我们会坚持做好每一次服务。',
|
||
created_at: '2026-04-05T10:00:00+08:00'
|
||
},
|
||
{
|
||
id: 'review-010', product_id: 'prod-001', product_name: '居家上门护理(半日)',
|
||
user_id: 'user-012', user_name: '蒋*华', user_avatar: '',
|
||
rating: 5, content: '服务很贴心,护士会提前电话确认时间,上门也十分准时,赞!',
|
||
images: '[]', reply: '感谢您的五星好评!准时守约是我们的基本承诺,期待下次继续为您服务。',
|
||
created_at: '2026-04-04T15:00:00+08:00'
|
||
}
|
||
]
|
||
|
||
// filter 逻辑(与页面 currentFilter 对齐)
|
||
export function getMockReviews(filter: string) : MockReviewType[] {
|
||
if (filter === 'pending') {
|
||
const result: MockReviewType[] = []
|
||
for (let i = 0; i < MOCK_REVIEWS.length; i++) {
|
||
if (MOCK_REVIEWS[i].reply === '') result.push(MOCK_REVIEWS[i])
|
||
}
|
||
return result
|
||
}
|
||
if (filter === 'replied') {
|
||
const result: MockReviewType[] = []
|
||
for (let i = 0; i < MOCK_REVIEWS.length; i++) {
|
||
if (MOCK_REVIEWS[i].reply !== '') result.push(MOCK_REVIEWS[i])
|
||
}
|
||
return result
|
||
}
|
||
return MOCK_REVIEWS
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 五、统计 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockTrendItemType = {
|
||
day: string
|
||
amount: number
|
||
}
|
||
|
||
// 趋势数据:today/week/month 三档
|
||
export const MOCK_TREND_TODAY: MockTrendItemType[] = [
|
||
{ day: '08时', amount: 260 }, { day: '09时', amount: 380 },
|
||
{ day: '10时', amount: 520 }, { day: '11时', amount: 180 },
|
||
{ day: '14时', amount: 350 }, { day: '15时', amount: 430 },
|
||
{ day: '16时', amount: 220 }
|
||
]
|
||
|
||
export const MOCK_TREND_WEEK: MockTrendItemType[] = [
|
||
{ day: '周一', amount: 680 }, { day: '周二', amount: 1200 },
|
||
{ day: '周三', amount: 980 }, { day: '周四', amount: 1560 },
|
||
{ day: '周五', amount: 2340 }, { day: '周六', amount: 800 },
|
||
{ day: '周日', amount: 420 }
|
||
]
|
||
|
||
export const MOCK_TREND_MONTH: MockTrendItemType[] = [
|
||
{ day: '4/1', amount: 2100 }, { day: '4/2', amount: 1800 },
|
||
{ day: '4/3', amount: 2680 }, { day: '4/4', amount: 3200 },
|
||
{ day: '4/5', amount: 1950 }, { day: '4/6', amount: 2460 },
|
||
{ day: '4/7', amount: 980 }
|
||
]
|
||
|
||
// 热门服务(ID与inventory对齐,由orders中统计派生)
|
||
export type MockStatProductType = {
|
||
id: string
|
||
name: string
|
||
image: string
|
||
sales: number
|
||
revenue: number
|
||
}
|
||
|
||
export const MOCK_HOT_PRODUCTS: MockStatProductType[] = [
|
||
{ id: 'prod-005', name: '上门康复护理(月套餐)', image: '/static/images/default-product.png', sales: 38, revenue: 45600 },
|
||
{ id: 'prod-001', name: '居家上门护理(半日)', image: '/static/images/default-product.png', sales: 52, revenue: 19760 },
|
||
{ id: 'prod-002', name: '血压血糖监测服务', image: '/static/images/default-product.png', sales: 67, revenue: 12060 },
|
||
{ id: 'prod-004', name: '术后伤口护理', image: '/static/images/default-product.png', sales: 29, revenue: 13920 },
|
||
{ id: 'prod-009', name: '中医调理推拿(3次)', image: '/static/images/default-product.png', sales: 24, revenue: 10320 }
|
||
]
|
||
|
||
// 统计概览(today/week/month 三档)
|
||
export function getMockStats(range: string) : { todaySales: string, todayOrders: number, todayVisitors: number, conversionRate: number } {
|
||
if (range === 'today') {
|
||
return { todaySales: '2340.00', todayOrders: 7, todayVisitors: 42, conversionRate: 17 }
|
||
}
|
||
if (range === 'week') {
|
||
return { todaySales: '7980.00', todayOrders: 28, todayVisitors: 165, conversionRate: 17 }
|
||
}
|
||
// month
|
||
return { todaySales: '31250.00', todayOrders: 98, todayVisitors: 620, conversionRate: 16 }
|
||
}
|
||
|
||
export function getMockTrendData(range: string) : MockTrendItemType[] {
|
||
if (range === 'today') return MOCK_TREND_TODAY
|
||
if (range === 'week') return MOCK_TREND_WEEK
|
||
return MOCK_TREND_MONTH
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 六、结算 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockRecordType = {
|
||
id: string
|
||
title: string
|
||
amount: number
|
||
type: string // 'order'=收支记录, 'withdraw'=结算/补贴记录
|
||
created_at: string
|
||
}
|
||
|
||
export const MOCK_BALANCE = '12680.50'
|
||
|
||
export const MOCK_FINANCE_STATS = {
|
||
todayRevenue: '2340.00',
|
||
monthRevenue: '31250.00',
|
||
pendingWithdraw: '4200.00'
|
||
}
|
||
|
||
export const MOCK_FINANCE_RECORDS: MockRecordType[] = [
|
||
// ── type=order 收支记录 ──
|
||
{ id: 'rec-001', title: '订单收入 SV2026041300001', amount: 380.00, type: 'order', created_at: '2026-04-13T08:20:00+08:00' },
|
||
{ id: 'rec-002', title: '订单收入 SV2026041300002', amount: 260.00, type: 'order', created_at: '2026-04-13T09:35:00+08:00' },
|
||
{ id: 'rec-003', title: '订单收入 SV2026041300003', amount: 520.00, type: 'order', created_at: '2026-04-13T10:05:00+08:00' },
|
||
{ id: 'rec-004', title: '退款扣减 SV2026041300R01', amount: -380.00, type: 'order', created_at: '2026-04-13T07:35:00+08:00' },
|
||
{ id: 'rec-005', title: '退款扣减 SV2026041200R02', amount: -180.00, type: 'order', created_at: '2026-04-12T16:15:00+08:00' },
|
||
{ id: 'rec-006', title: '订单收入 SV2026041200004', amount: 1200.00, type: 'order', created_at: '2026-04-12T14:05:00+08:00' },
|
||
{ id: 'rec-007', title: '订单收入 SV2026041200005', amount: 450.00, type: 'order', created_at: '2026-04-12T09:05:00+08:00' },
|
||
{ id: 'rec-008', title: '订单收入 SV2026041100006', amount: 680.00, type: 'order', created_at: '2026-04-11T10:35:00+08:00' },
|
||
// ── type=withdraw 结算/补贴记录 ──
|
||
{ id: 'rec-009', title: '长者关怀补贴拨付', amount: 2000.00, type: 'withdraw', created_at: '2026-04-10T09:00:00+08:00' },
|
||
{ id: 'rec-010', title: '月度服务结算', amount: 8600.00, type: 'withdraw', created_at: '2026-04-01T10:00:00+08:00' },
|
||
{ id: 'rec-011', title: '医保结算入账', amount: 3200.00, type: 'withdraw', created_at: '2026-03-28T14:00:00+08:00' },
|
||
{ id: 'rec-012', title: '申请提现', amount: -5000.00, type: 'withdraw', created_at: '2026-03-25T09:00:00+08:00' },
|
||
{ id: 'rec-013', title: '医保结算入账', amount: 2800.00, type: 'withdraw', created_at: '2026-03-15T10:00:00+08:00' }
|
||
]
|
||
|
||
// tab 过滤:record 或 withdraw
|
||
export function getMockFinanceRecords(tab: string) : MockRecordType[] {
|
||
if (tab === 'record') {
|
||
const result: MockRecordType[] = []
|
||
for (let i = 0; i < MOCK_FINANCE_RECORDS.length; i++) {
|
||
if (MOCK_FINANCE_RECORDS[i].type === 'order') result.push(MOCK_FINANCE_RECORDS[i])
|
||
}
|
||
return result
|
||
}
|
||
if (tab === 'withdraw') {
|
||
const result: MockRecordType[] = []
|
||
for (let i = 0; i < MOCK_FINANCE_RECORDS.length; i++) {
|
||
if (MOCK_FINANCE_RECORDS[i].type === 'withdraw') result.push(MOCK_FINANCE_RECORDS[i])
|
||
}
|
||
return result
|
||
}
|
||
return MOCK_FINANCE_RECORDS
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 七、促销活动 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockPromotionType = {
|
||
id: string
|
||
name: string
|
||
type: string // 'coupon' | 'seckill' | 'group'(与 tab 对应)
|
||
discount_text: string
|
||
start_time: string
|
||
end_time: string
|
||
status: number // 0=未开始, 1=进行中, 2=已结束
|
||
received_count: number
|
||
}
|
||
|
||
export const MOCK_PROMOTIONS: MockPromotionType[] = [
|
||
// ── coupon 护理套餐券 ──
|
||
{ id: 'promo-001', name: '居家护理体验满减券', type: 'coupon', discount_text: '满300减50', start_time: '2026-04-01T00:00:00+08:00', end_time: '2026-04-30T23:59:59+08:00', status: 1, received_count: 42 },
|
||
{ id: 'promo-002', name: '康复护理月套餐优惠券', type: 'coupon', discount_text: '满1000减120', start_time: '2026-04-10T00:00:00+08:00', end_time: '2026-05-10T23:59:59+08:00', status: 1, received_count: 18 },
|
||
{ id: 'promo-003', name: '护理新人首单优惠', type: 'coupon', discount_text: '首单立减80元', start_time: '2026-03-01T00:00:00+08:00', end_time: '2026-03-31T23:59:59+08:00', status: 2, received_count: 156 },
|
||
// ── seckill 康复体验 ──
|
||
{ id: 'promo-004', name: '上门康复体验特惠', type: 'seckill', discount_text: '原价380,限时198', start_time: '2026-04-13T10:00:00+08:00', end_time: '2026-04-13T22:00:00+08:00', status: 1, received_count: 7 },
|
||
{ id: 'promo-005', name: '血压血糖检测体验价', type: 'seckill', discount_text: '9.9元体验', start_time: '2026-04-15T09:00:00+08:00', end_time: '2026-04-15T18:00:00+08:00', status: 0, received_count: 0 },
|
||
{ id: 'promo-006', name: '长者推拿体验', type: 'seckill', discount_text: '原价150,体验价59', start_time: '2026-03-20T09:00:00+08:00', end_time: '2026-03-20T20:00:00+08:00', status: 2, received_count: 23 },
|
||
// ── group 慢病管理服务包 ──
|
||
{ id: 'promo-007', name: '高血压慢病三人拼团包', type: 'group', discount_text: '3人拼团享8.5折', start_time: '2026-04-05T00:00:00+08:00', end_time: '2026-04-20T23:59:59+08:00', status: 1, received_count: 9 },
|
||
{ id: 'promo-008', name: '糖尿病管理服务季包', type: 'group', discount_text: '2人拼团9折', start_time: '2026-04-20T00:00:00+08:00', end_time: '2026-05-20T23:59:59+08:00', status: 0, received_count: 0 },
|
||
{ id: 'promo-009', name: '慢病管理年度健康计划', type: 'group', discount_text: '3人拼团享7折', start_time: '2026-02-01T00:00:00+08:00', end_time: '2026-03-31T23:59:59+08:00', status: 2, received_count: 34 }
|
||
]
|
||
|
||
// tab 过滤(与 currentTab 对应)
|
||
export function getMockPromotions(tab: string) : MockPromotionType[] {
|
||
const result: MockPromotionType[] = []
|
||
for (let i = 0; i < MOCK_PROMOTIONS.length; i++) {
|
||
if (MOCK_PROMOTIONS[i].type === tab) result.push(MOCK_PROMOTIONS[i])
|
||
}
|
||
return result
|
||
}
|
||
|
||
// 订单筛选(供 orders.uvue 使用)
|
||
export function getMockOrdersByStatus(status: number) : MockOrderType[] {
|
||
if (status === -2) return MOCK_ORDERS // 全部
|
||
const result: MockOrderType[] = []
|
||
for (let i = 0; i < MOCK_ORDERS.length; i++) {
|
||
if (MOCK_ORDERS[i].order_status === status) result.push(MOCK_ORDERS[i])
|
||
}
|
||
return result
|
||
}
|
||
|
||
export function getMockAftersaleByStatus(status: number) : MockOrderType[] {
|
||
if (status === -3) return MOCK_AFTERSALE_ORDERS // 全部售后
|
||
const result: MockOrderType[] = []
|
||
for (let i = 0; i < MOCK_AFTERSALE_ORDERS.length; i++) {
|
||
if (MOCK_AFTERSALE_ORDERS[i].order_status === status) result.push(MOCK_AFTERSALE_ORDERS[i])
|
||
}
|
||
return result
|
||
}
|
||
|
||
|
||
// ════════════════════════════════════════════════════════════
|
||
// 八、关怀等级 & 服务对象 mock 数据
|
||
// ════════════════════════════════════════════════════════════
|
||
export type MockMemberLevelType = {
|
||
id: string
|
||
name: string
|
||
discount_rate: number
|
||
level_rank: number
|
||
}
|
||
|
||
export type MockUserInfoType = {
|
||
id: string
|
||
username: string
|
||
email: string
|
||
nickname: string | null
|
||
avatar_url: string | null
|
||
phone: string | null
|
||
tier_id: string | null
|
||
tier_name: string | null
|
||
}
|
||
|
||
// 关怀等级 4 档
|
||
export const MOCK_MEMBER_LEVELS: MockMemberLevelType[] = [
|
||
{ id: 'level-001', name: '普通关怀', discount_rate: 1.0, level_rank: 1 },
|
||
{ id: 'level-002', name: '银发关怀', discount_rate: 0.95, level_rank: 2 },
|
||
{ id: 'level-003', name: '金牌关怀', discount_rate: 0.90, level_rank: 3 },
|
||
{ id: 'level-004', name: '白金尊享', discount_rate: 0.85, level_rank: 4 }
|
||
]
|
||
|
||
// 服务对象 12 人:4 人有等级(tier_id 非空),8 人暂无等级
|
||
// tier_name 通过 tier_id 与 MOCK_MEMBER_LEVELS 对应
|
||
export const MOCK_SERVICE_USERS: MockUserInfoType[] = [
|
||
// ── 已设置关怀等级 4 人(排在前面) ──
|
||
{
|
||
id: 'user-001', username: 'li_min',
|
||
email: 'limin@example.com',
|
||
nickname: '李敏奶奶',
|
||
avatar_url: '',
|
||
phone: '13800000001',
|
||
tier_id: 'level-004',
|
||
tier_name: '白金尊享'
|
||
},
|
||
{
|
||
id: 'user-004', username: 'chen_lao',
|
||
email: '',
|
||
nickname: '陈伯伯',
|
||
avatar_url: '',
|
||
phone: '13800000004',
|
||
tier_id: 'level-003',
|
||
tier_name: '金牌关怀'
|
||
},
|
||
{
|
||
id: 'user-005', username: 'liu_zhen',
|
||
email: '',
|
||
nickname: '刘珍阿姨',
|
||
avatar_url: '',
|
||
phone: '13800000005',
|
||
tier_id: 'level-002',
|
||
tier_name: '银发关怀'
|
||
},
|
||
{
|
||
id: 'user-006', username: 'zhao_qiang',
|
||
email: 'zhaoqiang@example.com',
|
||
nickname: '赵强大伯',
|
||
avatar_url: '',
|
||
phone: '13800000006',
|
||
tier_id: 'level-001',
|
||
tier_name: '普通关怀'
|
||
},
|
||
// ── 未设置关怀等级 8 人 ──
|
||
{
|
||
id: 'user-002', username: 'zhang_guo',
|
||
email: '',
|
||
nickname: '张国爷爷',
|
||
avatar_url: '',
|
||
phone: '13800000002',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-003', username: 'wang_lan',
|
||
email: '',
|
||
nickname: '王兰阿姨',
|
||
avatar_url: '',
|
||
phone: '13800000003',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-007', username: 'sun_hua',
|
||
email: 'sunhua@example.com',
|
||
nickname: '孙华叔叔',
|
||
avatar_url: '',
|
||
phone: '13800000007',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-008', username: 'zheng_ming',
|
||
email: '',
|
||
nickname: '郑明爷爷',
|
||
avatar_url: '',
|
||
phone: '13800000008',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-009', username: 'wu_xiu',
|
||
email: '',
|
||
nickname: '吴秀奶奶',
|
||
avatar_url: '',
|
||
phone: '13800000009',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-010', username: 'he_lao',
|
||
email: '',
|
||
nickname: '何老先生',
|
||
avatar_url: '',
|
||
phone: '13800000010',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-011', username: 'feng_lian',
|
||
email: '',
|
||
nickname: '冯莲奶奶',
|
||
avatar_url: '',
|
||
phone: '13800000011',
|
||
tier_id: null,
|
||
tier_name: null
|
||
},
|
||
{
|
||
id: 'user-012', username: 'jiang_hua',
|
||
email: '',
|
||
nickname: '蒋华大伯',
|
||
avatar_url: '',
|
||
phone: '13800000012',
|
||
tier_id: null,
|
||
tier_name: null
|
||
}
|
||
]
|