/** * 全局常量:存储键、枚举、文案、事件名 */ /** 本地存储键(统一前缀,避免与同宿主其它小程序冲突) */ export const STORAGE_KEYS = { ACCESS_TOKEN: "LONGLI_ACCESS_TOKEN", USER_INFO: "LONGLI_USER_INFO", /** 注销状态回执(status_token):申请成功后立即保存,独立于登录态,不随退出登录清除 */ ERASURE_RECEIPT: "LONGLI_ERASURE_RECEIPT", }; /** 全局事件名 */ export const NOTICE_EVENT_LOGOUT = "NOTICE_EVENT_LOGOUT"; export const NOTICE_EVENT_LOGIN_SUCCESS = "NOTICE_EVENT_LOGIN_SUCCESS"; /** 权益状态机(4 态 · v0.8 起收敛,已删除 used 终态) */ export const BENEFIT_STATUS = { /** 可领取(尚未领取) */ AVAILABLE: "available", /** 已领取 · 可使用(可重复使用,无次数上限) */ CLAIMED: "claimed", /** 已失效(超过有效期) */ EXPIRED: "expired", /** 名额发完 */ SOLD_OUT: "sold_out", }; /** 权益类型 → 展示名(用于筛选 chip 与卡片类型行);键与接口 section_key 同一套 */ export const BENEFIT_TYPES = [ { key: "all", label: "全部" }, { key: "scenic", label: "景区游玩" }, { key: "stay", label: "住宿" }, { key: "food", label: "餐饮" }, { key: "specialty", label: "特产" }, ]; /** * 权益类型 → 展示名 / 图标(键 = 接口 section_key)。 * 详情页权益取 `section_key`,权益中心取 `type`,两处取值同一套键。 */ export const BENEFIT_TYPE_LABEL = { scenic: "景区 / 游玩权益", stay: "住宿权益", food: "餐饮权益", specialty: "特产权益", general: "通用权益", }; /** 权益类型 → 卡片类型行短名(权益卡①行空间有限,2 字上限;图标已承担类型辨识) */ export const BENEFIT_TYPE_SHORT = { scenic: "景区", stay: "住宿", food: "餐饮", specialty: "特产", general: "通用", }; /** 权益类型 → 卡片类型行图标(板块级兜底) */ export const BENEFIT_TYPE_ICON = { scenic: "peak", stay: "bed", food: "food", specialty: "ticket", general: "gift", }; /** * 权益 `type_label`(中文,接口字段)→ 卡片类型行图标 * 同一商家下权益类型可能不同(如云从朵花既有「住宿」又有「温泉」),故按权益自己的标签取图标。 */ export const BENEFIT_LABEL_ICON = { 住宿: "bed", 美食: "food", 餐饮: "food", 宴席: "table", 景区: "peak", 温泉: "hotspring", 加油: "fuel", 商超: "cart", 特产: "ticket", 通用: "gift", }; /** 权益 `type_icon`(英文,接口字段)→ 本地图标名,兼容常见写法 */ export const BENEFIT_ICON_ALIAS = { bed: "bed", hotel: "bed", room: "bed", stay: "bed", sleep: "bed", lodging: "bed", food: "food", meal: "food", restaurant: "food", dining: "food", eat: "food", table: "table", banquet: "table", feast: "table", dinner: "table", peak: "peak", scenic: "peak", mountain: "peak", view: "peak", spot: "peak", hotspring: "hotspring", hot_spring: "hotspring", "hot-spring": "hotspring", "hot spring": "hotspring", spring: "hotspring", spa: "hotspring", onsen: "hotspring", fuel: "fuel", gas: "fuel", gas_station: "fuel", "gas-station": "fuel", oil: "fuel", petrol: "fuel", gasoline: "fuel", station: "fuel", cart: "cart", shop: "cart", store: "cart", market: "cart", supermarket: "cart", super_market: "cart", mall: "cart", shopping: "cart", ticket: "ticket", specialty: "ticket", gift: "gift", }; /** 我的权益状态子分段(全部 / 可使用 / 已失效) */ export const BENEFIT_SUB_TABS = [ { key: "all", label: "全部" }, { key: "usable", label: "可使用" }, { key: "invalid", label: "已失效" }, ]; /** 板块 key → 详情页介绍卡标题(type_label 缺失时的兜底;正常取 type_label + 介绍) */ export const SECTION_INTRO_TITLE = { scenic: "景区介绍", stay: "酒店介绍", food: "美食介绍", specialty: "特产介绍", }; /** 板块 key → 列表页大标题(接口不提供,前端自持) */ export const SECTION_TITLE = { scenic: "龙里票根经济", stay: "旅居服务", food: "全域美食", specialty: "龙里特产", }; /** 运营信息 */ export const LOGO_URL = "https://one-feel-image-bucket.oss-cn-chengdu.aliyuncs.com/mp/static/longli/logo.png"; export const CUSTOMER_SERVICE_PHONE = "0854-5631343"; export const CUSTOMER_SERVICE_TIME = "09:00 - 18:00"; export const OPERATOR_NAME = "贵州跃龙文化旅游发展有限公司"; export const APP_VERSION_FULL = "v1.0.0(Build 100)"; export const REGION_TEXT = "贵州省黔南布依族苗族自治州龙里县"; /** 协议页更新/生效日期 */ export const AGREEMENT_DATE = "2026 年 9 月 11 日"; /** Tab 配置(自绘 Tab 栏;三个 Tab 同属壳页 pages/index/index,面板与路径一一对应关系已不存在) */ export const TABS = [ { key: "home", label: "主页", icon: "home" }, { key: "benefit", label: "权益", icon: "ticket" }, { key: "mine", label: "我的", icon: "user" }, ]; /** * 入口固定值:二维码里的 id 等于它时不打开商家详情,只切到权益 Tab。 * 后端在 scene / query / 普通链接里传这个字符串即可(大小写不敏感)。 */ export const ENTRY_BENEFIT_ONLY = "benefits"; /** 页面路径常量 */ export const ROUTES = { HOME: "/pages/index/index", LOGIN: "/pages/login/index", CATALOG: "/pages-sub/catalog/index", DETAIL: "/pages-sub/detail/index", AGREEMENT: "/pages-sub/agreement/index", ABOUT: "/pages-sub/about/index", ACCOUNT_CANCEL: "/pages-sub/account/cancel", };