Files
2026-06-11 12:15:29 +08:00

110 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Uniapp Agent — Sport Era 手机端
uni-app 跨端移动应用。**消费 `server/app/api/controller/` 的接口。**
可编译为 H5 / App / 小程序端。
## 技术栈
- **uni-app** + **Vue** 3
- **Vite**
- **Pinia** 状态管理
- **TypeScript**
- **z-paging** 分页组件
- **uniapp-router-next** 路由管理
## 项目结构
```text
src/
├── main.ts # 应用入口
├── App.vue # 根组件
├── pages.json # uni-app 页面路由 / tabBar
├── manifest.json # 应用配置
├── api/ # 接口请求模块(→ 后端 /api/*)
├── pages/ # 页面组件(主包)
├── components/ # 公共组件
├── stores/ # Pinia Store
├── hooks/ # 组合式函数
├── router/ # 路由中间件
├── utils/ # 工具函数与请求拦截
├── enums/ # 枚举常量
├── config/ # 应用配置
├── styles/ # 全局样式
├── static/ # 静态资源
└── uni_modules/ # uni-app 插件
```
## 运行命令
```bash
npm install
npm run dev:h5
npm run build:h5
```
---
## 并行协作协议
### 新功能开发时
#### Step 1: 等待或查阅后端 API 契约
查看 `server/app/api/controller/` 下对应 controller,并结合 validate、logic、model 获取:
- 接口路径和方法
- 请求参数类型
- 响应数据结构
- 登录态与权限要求
#### Step 2: 并行实现
```text
1. src/api/ 下新增或复用接口请求模块
2. src/pages/ 或分包目录下新增页面目录和页面文件
3. src/pages.json 添加页面路由和必要的 tabBar 配置
4. 页面样式复用全局样式和现有组件
```
#### Step 3: 构建联调
```bash
npm run build:h5
```
## 从后端 Agent 获取信息的方式
| 需要了解 | 查看位置 |
| ------------------ | ---------------------------------------------------- |
| 接口路径/参数/响应 | `server/app/api/controller/` 对应 controller |
| 参数校验 | `server/app/api/validate/` 对应 validate |
| 数据表字段 | `server/app/common/model/` 对应 model |
| 枚举/常量 | `server/app/common/enum/` + `src/enums/` + 字典/配置 |
| Token 机制 | `server/app/common/cache/UserTokenCache.php` |
## 设计稿对照
设计稿与本项目页面/组件的映射关系集中维护于根目录 [`设计稿映射.md`](../设计稿映射.md)。接到新需求或还原设计稿前先查该文档,确认:
- 设计稿名称 ↔ uniapp 页面路径
- 当前实现状态(已完成 / 待开发 / 部分完成)
- 备注中的交互、资源或接口说明
新增或调整页面后需同步更新该文档的状态字段。
## 代码约定
- API 请求通过 `src/api/` 模块,沿用 `src/utils/request` 相关封装。
- 分页列表优先使用 z-paging 组件。
- 页面路由必须在 `pages.json` 中注册。
- 跨端兼容用条件编译 `#ifdef H5``#ifdef MP-WEIXIN` 等。
- 状态管理用 PiniaStore 放在 `src/stores/`
- 图片资源放在 `src/static/`
- H5 富文本可用 `v-html`,非 H5 端按 uni-app 能力使用 `rich-text` 等方案。
- 外链图片如遇防盗链,优先通过渲染属性处理引用策略,不擅自清洗原始 URL。
## 近期踩坑
- 比赛详情页的直播入口只在 `match.live_url` 有值时展示,不要兜底拼默认第三方地址。
- 世界杯专题页的赛程卡和对阵图卡都要统一跳转到比赛详情页,避免只补一处入口导致列表仍然点不进去。