snack-mall/admin-snack
Yuhang Wu 3dd146f871 ```
feat(layout): 添加路由视图刷新功能

- 在 BasicLayout 中添加 viewKey 响应式变量用于控制 router-view 的重新挂载
- 监听自定义 'app:refresh-view' 事件实现页面刷新功能
- 修改 router-view 组件 key 值为 viewKey + '-' + r.fullPath 实现条件渲染

feat(tabs-nav): 优化标签页操作功能

- 添加 handleRefresh 方法通过 dispatchEvent 触发页面刷新事件
- 实现 handleCloseOthers、handleCloseRight、handleCloseAll 方法
- 优化 handleTabClick 避免重复点击当前路由
- 移除无用的激活状态小圆点和右键菜单注释代码

refactor(mock): 调整 mock 数据导入逻辑

- 将 import.meta.env.DEV 条件判断改为直接导入,简化代码结构
```
2026-06-02 14:33:30 +08:00
..
public ``` 2026-06-02 10:05:37 +08:00
src ``` 2026-06-02 14:33:30 +08:00
.env.development ``` 2026-06-02 10:05:37 +08:00
.env.production ``` 2026-06-02 10:05:37 +08:00
.env.test ``` 2026-06-02 10:05:37 +08:00
.eslintrc-auto-import.json ``` 2026-06-02 14:25:53 +08:00
.gitignore ``` 2026-06-02 10:05:37 +08:00
.prettierrc.cjs.json ``` 2026-06-02 10:05:37 +08:00
.prettierrc.json ``` 2026-06-02 10:05:37 +08:00
README.md ``` 2026-06-02 10:05:37 +08:00
eslint.config.js ``` 2026-06-02 10:05:37 +08:00
index.html ``` 2026-06-02 10:05:37 +08:00
package.json ``` 2026-06-02 14:25:53 +08:00
pnpm-lock.yaml ``` 2026-06-02 14:25:53 +08:00
tsconfig.json ``` 2026-06-02 10:05:37 +08:00
tsconfig.node.json ``` 2026-06-02 10:05:37 +08:00
uno.config.ts ``` 2026-06-02 14:25:53 +08:00
vite.config.ts ``` 2026-06-02 14:25:53 +08:00

README.md

Admin Snack — 零食商城管理后台

基于 Vue 3 + Vite 6 + TypeScript 5 + Element Plus 的现代化电商管理后台。

技术栈

类别 技术
框架 Vue 3.5 (Composition API + <script setup>)
语言 TypeScript 5
构建 Vite 6
路由 Vue Router 4
状态 Pinia 2 + 持久化
UI 库 Element Plus 2.9
工具类 UnoCSS辅助
图表 ECharts 5 + vue-echarts
HTTP Axios
工具 dayjs、lodash-es、mitt、nprogress、VueUse
代码规范 ESLint 9 + Prettier 3
Node 要求 ≥ 20

快速开始

# 1. 安装依赖
npm install

# 2. 启动开发服务器
npm run dev
# 访问 http://localhost:5173

# 3. 生产构建
npm run build:prod

# 4. 类型检查
npm run type-check

# 5. 代码格式化
npm run format

默认账号

用户名admin
密  码123456

目录结构

admin-snack/
├── public/                      # 不经 vite 处理的静态资源
│   └── favicon.svg
├── src/
│   ├── api/                     # 接口请求层(按业务模块划分)
│   │   ├── auth.ts
│   │   ├── dashboard.ts
│   │   ├── product.ts
│   │   ├── order.ts
│   │   └── ...
│   ├── assets/                  # 静态资源
│   ├── components/              # 公共组件
│   │   ├── common/
│   │   └── business/
│   ├── hooks/                   # 组合式函数
│   ├── layouts/                 # 布局
│   │   ├── BasicLayout.vue      # 主框架(侧边栏+顶栏+内容区)
│   │   └── components/
│   │       ├── SideMenu.vue
│   │       └── NavBreadcrumb.vue
│   ├── permission.ts            # 路由守卫
│   ├── router/                  # 路由
│   │   ├── index.ts             # 基础路由
│   │   └── async-routes.ts      # 业务路由(按权限动态挂载)
│   ├── stores/                  # Pinia
│   │   ├── index.ts
│   │   └── modules/
│   │       ├── user.ts          # 用户/管理员
│   │       └── app.ts           # 应用全局
│   ├── styles/                  # 全局样式
│   │   ├── variables.scss       # 设计系统令牌
│   │   ├── reset.scss
│   │   ├── element.scss         # Element Plus 主题覆盖
│   │   ├── transitions.scss
│   │   └── index.scss
│   ├── types/                   # TS 类型
│   │   ├── api.ts
│   │   └── auth.ts
│   ├── utils/                   # 工具
│   │   ├── request.ts           # axios 封装
│   │   ├── date.ts              # dayjs 封装
│   │   ├── dict.ts              # 业务字典
│   │   └── bus.ts               # mitt 事件总线
│   ├── views/                   # 页面
│   │   ├── login/index.vue
│   │   ├── dashboard/index.vue
│   │   ├── product/
│   │   ├── order/
│   │   ├── user/
│   │   ├── coupon/
│   │   ├── seckill/
│   │   ├── notice/
│   │   ├── chat/
│   │   └── error/404.vue
│   ├── App.vue
│   └── main.ts
├── .env.development             # 开发环境变量
├── .env.test                    # 测试环境变量
├── .env.production              # 生产环境变量
├── eslint.config.js
├── .prettierrc.json
├── index.html
├── package.json
├── tsconfig.json
├── tsconfig.node.json
├── uno.config.ts
└── vite.config.ts

设计系统

风格 Minimalism · Data-Dense Dashboard
主色 #1E40AF(深蓝)/ #3B82F6(亮蓝)
辅色 #60A5FA
状态色 success #10B981 / warning #F59E0B / danger #EF4444
字体 系统字体栈PingFang SC / Microsoft YaHei
圆角 卡片 10px、按钮 6px、输入框 10px
阴影 三档sm / md / lg
背景 页面 #F8FAFC、卡片 #FFFFFF

后端联调

.env.development 中配置:

VITE_API_BASE_URL=http://localhost:8080

vite.config.ts 已配置 /api/uploads 路径代理到后端 server-snack 项目。

浏览器支持

现代浏览器 + ES2020Chrome 90+, Edge 90+, Firefox 90+, Safari 14+