import { getDomain } from './env' // 头像基础路径(远端) const AVATAR_BASE_URL = getDomain() + '/static/avatar/' // 图片基础路径(远端) const IMAGE_BASE_URL = getDomain() + '/static/images/' // ========== 记账分类常量 start ========== export const DEFAULT_CATE_LIST = [ // 支出类(type: 1) { value: 'food', label: '餐饮', icon: '🍚', color: '#ff6b6b', type: 1 }, { value: 'transport', label: '交通', icon: '🚇', color: '#4ecdc4', type: 1 }, { value: 'shopping', label: '购物', icon: '🛍️', color: '#ffe66d', type: 1 }, { value: 'entertainment', label: '娱乐', icon: '🎮', color: '#a855f7', type: 1 }, { value: 'home', label: '居家', icon: '🏠', color: '#84b3d9', type: 1 }, { value: 'medical', label: '医疗', icon: '🏥', color: '#ef4444', type: 1 }, { value: 'education', label: '教育', icon: '📚', color: '#22c55e', type: 1 }, { value: 'social', label: '社交', icon: '👥', color: '#f97316', type: 1 }, { value: 'digital', label: '数码', icon: '📱', color: '#3b82f6', type: 1 }, { value: 'clothing', label: '服饰', icon: '👔', color: '#ec4899', type: 1 }, { value: 'beauty', label: '美容', icon: '💄', color: '#d946ef', type: 1 }, { value: 'sports', label: '运动', icon: '⚽', color: '#10b981', type: 1 }, { value: 'pet', label: '宠物', icon: '🐶', color: '#fbbf24', type: 1 }, { value: 'baby', label: '育儿', icon: '🍼', color: '#fb7185', type: 1 }, { value: 'travel', label: '旅游', icon: '✈️', color: '#06b6d4', type: 1 }, { value: 'other_expense', label: '其他', icon: '📦', color: '#9ca3af', type: 1 }, // 收入类(type: 2) { value: 'salary', label: '工资', icon: '💼', color: '#22c55e', type: 2 }, { value: 'bonus', label: '奖金', icon: '🎁', color: '#fbbf24', type: 2 }, { value: 'side_hustle', label: '副业', icon: '💻', color: '#3b82f6', type: 2 }, { value: 'investment', label: '理财', icon: '📈', color: '#a855f7', type: 2 }, { value: 'transfer', label: '转账', icon: '💳', color: '#84b3d9', type: 2 }, { value: 'red_packet', label: '红包', icon: '🧧', color: '#ef4444', type: 2 }, { value: 'other_income', label: '其他', icon: '🎯', color: '#6b7280', type: 2 } ] // 例如:账单类型常量 export const BILL_TYPE = { DEFAULT: 0, // 全部 EXPEND: 1, // 支出 INCOME: 2, // 收入 } // ========== 我的页面菜单图标 ========== export const MINE_MENU_ICONS = { GROWTH: '/static/icon/growth.png', BUDGET: '/static/icon/monthly_budget.png', THEME: '/static/icon/theme.png', ABOUT: '/static/icon/about.png', EMAIL: '/static/icon/email.png', WECHAT: '/static/icon/wechat.png' } // // 分类颜色选项 export const COLOR_OPTIONS = [ '#84b3d9', '#a0d0e0', '#b8d8e6', '#d0e0e8', '#e8e8e8', '#f0f0f0', '#f8f0f0', '#f0f8f0', '#f0f0f8', '#e0f0f8' ] // 滑动按钮宽度(rpx) export const SLIDE_BTN_WIDTH = 240 // 筛选Tab 常量 export const BILL_FILTER_TYPE = { ALL: 'all', EXPEND: 'expend', INCOME: 'income' } // 账单类型筛选选项(用于循环渲染) export const BILL_TYPE_FILTER_OPTIONS = [ { label: '全部', value: BILL_FILTER_TYPE.ALL }, { label: '支出', value: BILL_FILTER_TYPE.EXPEND }, { label: '收入', value: BILL_FILTER_TYPE.INCOME } ] // 时间筛选标签 export const TIME_TAG = { ALL: 'all', TODAY: 'today', WEEK: 'week', MONTH: 'month', LAST_MONTH: 'lastMonth', THIS_YEAR: 'thisYear', CUSTOM: 'custom' } // 账单时间筛选选项(用于循环渲染) export const BILL_TIME_FILTER_OPTIONS = [ { label: '今日', value: TIME_TAG.TODAY }, { label: '本周', value: TIME_TAG.WEEK }, { label: '本月', value: TIME_TAG.MONTH }, { label: '上月', value: TIME_TAG.LAST_MONTH }, { label: '本年', value: TIME_TAG.THIS_YEAR }, { label: '自定义', value: TIME_TAG.CUSTOM } ] // 4. 金额快捷按钮数值 export const QUICK_MONEY_AMOUNTS = [10, 20, 50, 100, 200, 500]; // 5. 备注快捷标签 export const QUICK_NOTE_TAGS = ['午餐', '打车', '地铁', '工资', '购物', '娱乐']; // 6. 预算进度颜色阈值 export const BUDGET_PROGRESS_COLOR = { OVER: 100, // 超支(红色) WARNING: 80, // 警告(橙色) NORMAL: 0 // 正常(蓝色) } // 7. 预算进度颜色值 export const PROGRESS_COLORS = { OVER: '#F53F3F', WARNING: '#FFAA33', NORMAL: '#E8F3FF' } // 8. 最近选择分类最大数量 export const RECENT_CATE_MAX_COUNT = 3 // 9. 滑动阈值(触发显示按钮的最小滑动距离) export const SLIDE_THRESHOLD = 50 // ========== 记账分类常量 end ========== // ========== 待办(TODO)相关常量 start ========== // 待办基础分类(对应你原有的 BASE_CATE) export const TODO_BASE_CATE = Object.freeze([ { value: 'work', label: '工作', color: '#84b3d9' }, { value: 'life', label: '生活', color: '#a0d0e0' }, { value: 'study', label: '学习', color: '#b8d8e6' } ]) // 星期名称映射(从周一开始,对应你原有的 WEEK_DAYS) export const WEEK_DAYS = Object.freeze(['一', '二', '三', '四', '五', '六', '日']) // 结构化的筛选常量(替代硬编码) export const TIME_FILTER_OPTIONS = [ { label: '今日', value: 'today' }, { label: '本周', value: 'week' }, { label: '本月', value: 'month' }, { label: '自定义', value: 'custom' } ] export const STATUS_FILTER_OPTIONS = [ { label: '全部', value: 'all' }, { label: '待办', value: 'undone' }, { label: '已完成', value: 'done' } ] // 优先级常量(结构化) export const TODO_PRIORITY_LIST = [ { label: '高', value: 1, icon: '🔴' }, { label: '中', value: 2, icon: '🟡' }, { label: '低', value: 3, icon: '🟢' } ] // ========== 待办(TODO)相关常量 end ========== // ========== 收支渠道常量 ========== export const PAY_CHANNELS = [ // 通用渠道(支持收入和支出) { value: 'wechat', label: '微信', types: [1, 2] }, // 1=支出, 2=收入 { value: 'alipay', label: '支付宝', types: [1, 2] }, { value: 'unionpay', label: '云闪付', types: [1, 2] }, // 新增 { value: 'bank', label: '银行卡', types: [1, 2] }, { value: 'cash', label: '现金', types: [1, 2] }, { value: 'online_banking', label: '网银', types: [1, 2] }, // 新增 { value: 'pos', label: 'POS机', types: [1, 2] }, // 新增 { value: 'other', label: '其他', types: [1, 2] }, // 新增 // 仅收入渠道 { value: 'salary', label: '工资', types: [2] }, { value: 'red_packet', label: '红包', types: [2] }, { value: 'transfer_in', label: '转账', types: [2] }, { value: 'corporate', label: '对公转账', types: [2] }, // 新增 // 仅支出渠道 { value: 'credit', label: '信用卡', types: [1] }, { value: 'huawei', label: '花呗', types: [1] }, { value: 'white', label: '白条', types: [1] }, { value: 'jd_pay', label: '京东支付', types: [1] }, // 新增 { value: 'meituan_pay', label: '美团支付', types: [1] }, // 新增 { value: 'gift_card', label: '储值卡', types: [1] } // 新增 ] // 获取指定类型的渠道列表 export const getChannelsByType = (type) => { return PAY_CHANNELS.filter(channel => channel.types.includes(type)) } // 根据渠道值获取渠道名称 export const getChannelLabel = (value) => { const channel = PAY_CHANNELS.find(c => c.value === value) return channel ? channel.label : value } // 根据分类值获取分类名称 export const getCateLabel = (value) => { const cate = DEFAULT_CATE_LIST.find(c => c.value === value) return cate ? cate.label : value } // ========== 可扩展:其他全局常量 ========== // 远端头像资源配置(根据当前环境动态获取域名) export const DEFAULT_AVATARS = [ AVATAR_BASE_URL + 'ginger_cat.jpg', // 橘猫 AVATAR_BASE_URL + 'ragdoll.jpg', // 布偶猫 AVATAR_BASE_URL + 'hamster.jpg', // 小仓鼠 AVATAR_BASE_URL + 'dragon.jpg', // 龙 AVATAR_BASE_URL + 'pony.jpg', // 小马 AVATAR_BASE_URL + 'lamb.jpg', // 小羊 AVATAR_BASE_URL + 'corgi.jpg', // 柯基 AVATAR_BASE_URL + 'piglet.jpg', // 小猪 ] // 例如:请求状态码常量 export const HTTP_CODE = { SUCCESS: 200, TOKEN_EXPIRE: 401, SERVER_ERROR: 500 } // ========== 心情相关常量 ========== export const MOOD_LIST = [ { emoji: '😊', label: '开心', phrases: ['今天心情真好', '阳光灿烂的一天', '嘴角不自觉上扬', '满心欢喜'] }, { emoji: '😌', label: '平静', phrases: ['岁月静好', '内心一片安宁', '享受这份宁静', '平和自在'] }, { emoji: '😔', label: '低落', phrases: ['有点小忧伤', '心情沉沉的', '需要一点温暖', '静待花开'] }, { emoji: '😤', label: '生气', phrases: ['有点烦躁呢', '深呼吸冷静一下', '需要冷静片刻', '平复一下心情'] }, { emoji: '😴', label: '疲惫', phrases: ['有点累了', '好好休息一下', '给自己放个假', '累并快乐着'] }, { emoji: '😰', label: '焦虑', phrases: ['有点担心', '相信一切会好', '慢慢来不着急', '放宽心'] }, { emoji: '😄', label: '兴奋', phrases: ['超级开心!', '激动人心的时刻', '迫不及待了', '满心期待'] }, { emoji: '🤔', label: '思考', phrases: ['正在思考中', '让我想想', '深思熟虑', '思绪万千'] }, { emoji: '😢', label: '难过', phrases: ['有点难过', '需要一个拥抱', '一切都会过去', '明天会更好'] }, { emoji: '😎', label: '酷', phrases: ['今天超酷的', '自信满满', '做自己就好', '洒脱自在'] }, { emoji: '🥰', label: '幸福', phrases: ['被幸福包围', '甜蜜的感觉', '幸福感爆棚', '满心欢喜'] }, { emoji: '😠', label: '愤怒', phrases: ['真的生气了', '需要冷静一下', '平复一下情绪', '深呼吸'] }, { emoji: '🥳', label: '庆祝', phrases: ['值得庆祝!', '太棒了!', '举杯庆祝', '喜笑颜开'] }, { emoji: '😱', label: '惊讶', phrases: ['哇!好惊喜', '太意外了', '不可思议', '令人震惊'] }, { emoji: '😇', label: '感恩', phrases: ['心怀感恩', '感谢生活', '感恩遇见', '心存感激'] }, { emoji: '💪', label: '加油', phrases: ['加油加油!', '相信自己', '勇往直前', '全力以赴'] }, { emoji: '😘', label: '害羞', phrases: ['有点害羞', '不好意思啦', '脸红心跳', '羞涩一笑'] }, { emoji: '🤩', label: '崇拜', phrases: ['超级崇拜!', '偶像光芒', '闪闪发光', '心生敬意'] }, { emoji: '😪', label: '困倦', phrases: ['好困呀', '眼皮打架了', '需要小憩', '睡个好觉'] }, { emoji: '😋', label: '满足', phrases: ['心满意足', '幸福感满满', '知足常乐', '十分满足'] } ] // ========== Logo 与品牌信息常量 ========== export const LOGO_CONFIG = { path: IMAGE_BASE_URL + 'logo.png', name: '简记memo', subtitle: '让记录更简单', slogan: '记录,是对抗遗忘的方式。\n生活的美好藏在点滴细节里,\n用简记memo,写下时光的足迹。', version: 'v1.0.0', copyright: `© ${new Date().getFullYear()} 简记memo. All rights reserved.`, email: 'memo@miaoall.cn', wechat: { name: '孙三苗', account: 'sunsanmiao' }, brand: { primaryColor: '#84b3d9', secondaryColor: '#6a99c2', gradient: 'linear-gradient(135deg, #84b3d9 0%, #6a99c2 100%)' } }