feat: 小菜记账 v1.0 - 完整功能实现
核心功能: - 记账CRUD(支出/收入/分类/备注/日期) - 统计分析(概览/分类占比/每日趋势) - 预算管理(按月设置/进度条/超支提醒) - 数据导出CSV 安全与认证: - HMAC-SHA256签名token认证 - 用户数据隔离 - 输入验证与错误处理 - CORS配置 前端优化: - 骨架屏加载 - 账单按日期分组 - 预算页面重构(快捷预设+Numpad) - SvgIcon组件(H5+微信双端适配) - 下拉刷新 后端优化: - 共享日期工具函数 - 数据库连接池优化 - 健康检查端点 - 优雅关闭处理 技术栈: - 前端:Uni-app (Vue 3 + Pinia) - 后端:Node.js + Express + MySQL
This commit is contained in:
48
client/src/components/CategoryIcon/CategoryIcon.vue
Normal file
48
client/src/components/CategoryIcon/CategoryIcon.vue
Normal file
@@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<view class="cat-icon" :class="[size, { selected }]" :style="iconStyle">
|
||||
<text class="icon-text" :style="{ color: color, fontSize: fontSize }">{{ label }}</text>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
|
||||
const props = defineProps<{
|
||||
label: string
|
||||
color: string
|
||||
bgColor: string
|
||||
size?: 'sm' | 'md' | 'lg'
|
||||
selected?: boolean
|
||||
}>()
|
||||
|
||||
const sizeMap = { sm: 64, md: 88, lg: 112 }
|
||||
const fontMap = { sm: 28, md: 36, lg: 48 }
|
||||
|
||||
const iconStyle = computed(() => ({
|
||||
background: props.bgColor || (props.color + '15'),
|
||||
width: (sizeMap[props.size || 'md']) + 'rpx',
|
||||
height: (sizeMap[props.size || 'md']) + 'rpx',
|
||||
}))
|
||||
|
||||
const fontSize = computed(() => (fontMap[props.size || 'md']) + 'rpx')
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.cat-icon {
|
||||
border-radius: 28rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 2rpx solid transparent;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.icon-text {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.selected {
|
||||
border-color: #FF8C69;
|
||||
background: #FFE8E0 !important;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user