# 山峡化工 · 微信小程序(miniprogram) 基于 [uni-app](https://uniapp.dcloud.net.cn/) 的微信小程序工程,基础框架移植自叁强鲜配 `sqxp-wx`,已去除订单/配送等业务页面,保留可复用的基础设施,便于后续建设山峡业务。 ## 技术栈 - uni-app(Vue 3 + Composition API) - Pinia(用户态)+ Vuex(hello-uniapp 遗留壳) - Vant Weapp(`wxcomponents`) - uni-ui(`uni_modules`) - RSA 登录加密(JSEncrypt)+ 请求封装(`utils/request.js`) ## 目录说明 | 路径 | 说明 | |------|------| | `pages/login/` | 登录、用户协议、隐私政策 | | `pages/home/` | 占位首页(登录成功后跳转) | | `config/` | API 基址、静态资源默认配置 | | `stores/` | Pinia 用户 Store | | `utils/` | 请求、RSA 登录、安全区、格式化等工具 | | `components/` | 通用组件(安全区 Header、协议正文等) | | `styles/` | 全局 SCSS 与 Token(对齐 `docs/miniprogram-ui-spec-sanqiang.md`) | | `uni_modules/` | uni-app 官方/扩展组件 | | `wxcomponents/` | Vant 小程序组件 | ## 本地开发 ### 方式一:HBuilderX(推荐) 1. 安装 [HBuilderX App 开发版](https://www.dcloud.io/hbuilderx.html) 2. 用 HBuilderX 打开本目录 `miniprogram/` 3. 在 `manifest.json` → 微信小程序 中填写你的 **AppID** 4. 修改 `config/api.js` 中的 `DEV_BASE_URL` / `devBaseUrl`: - 模拟器:`http://127.0.0.1:8000/api` - 真机调试:改为电脑局域网 IP,如 `http://192.168.x.x:8000/api` 5. 确保 `backend/` 已启动(默认 `127.0.0.1:8000`) 6. 运行 → 运行到小程序模拟器 → 微信开发者工具 ### 方式二:微信开发者工具 若已有编译产物,可导入 `unpackage/dist/dev/mp-weixin`(需先通过 HBuilderX 或 CLI 编译一次)。 ## 接口约定 当前基础框架**复用 Web 管理端公共登录接口**(`backend/app/api/public.py`): - `GET /api/web/auth/login-rsa-public-key` - `POST /api/web/auth/login` - `POST /api/web/auth/logout` - `GET /api/web/auth/current-user` 后续若拆分小程序专用 `/api/mini/*` 路由,只需调整 `config/api.js` 中 `AUTH_API` 与 `stores/user.js` 调用路径。 ## 发版前检查 ```bash cd miniprogram npm run release:remind-api # 提醒核对 API 基址 npm run release:check-api # CI 严格模式:仍为本机地址则失败 ``` ## 视觉规范 UI Token 与页面骨架以仓库根目录 **`mobile-ui/`**(`shanxia-mp-base.css`、`shanxia-mp-*.html`)及 **`docs/miniprogram-ui-spec-sanqiang.md`** 为准。主品牌色:`#0a9f6d`(勿混用 Web Fresh Mint `#10b981`)。 ## CRM(P1) 工作台 CRM 启用菜单已接业务页: | 菜单 | 路径 | |------|------| | 线索 | `pages/crm/clue/*` | | 商机 | `pages/crm/opportunity/*` | | 客户 | `pages/crm/customer/*` | | 公海 | `pages/crm/pool/list` | | 报价 | `pages/crm/quote/*` | | 合同 | `pages/crm/contract/*` | 接口复用管理端 `/web/crm/*`(需 admin 权限账号)。API 封装:`api/crm.js`。 ## 报销(P2) | 菜单 | 路径 | |------|------| | 待办任务 | `pages/bx/todo/list` | | 报销申请 | `pages/bx/reimburse/*` | | 报销/借款审批 | `pages/bx/approve/list?type=` | | 借款申请 | `pages/bx/advance/*` | | 我的单据 | `pages/bx/mine/list` | 接口:`/reimburses`、`/advances`、`/expense-items`、`/attachments`(协议 `code===0`)。封装:`api/bx.js`。拍照凭证走 BX 附件上传。 ## 地磅(P3) | 菜单 | 路径 | |------|------| | 仪表盘 | `pages/db/dashboard/index` | | 地磅计划 | `pages/db/plans/*` | | 地磅单 | `pages/db/weighing/*`(二次过磅 / 作废) | | 出入库 | `pages/db/inventory/*` | 接口:`/dashboard`、`/plans`、`/weighing`、`/inventory`(**直出 JSON**,非门户信封)。封装:`api/db.js`。 ## 运输(P4) | 菜单 | 路径 | |------|------| | 运输计划 | `pages/pl/plan/*`(列表 Tab / 详情 / 安排运输) | | 计划归档 | `pages/pl/archive/list` | | 购买证上传 | `pages/pl/cert/*`(拍照凭证) | | 运费结算 | `pages/pl/freight/list` + `detail` | | 运费审批 | `pages/pl/freight/approval` | 接口:`/transport/plan`、`/transport/order/arrange`、`/transport/freight`(协议兼容 `code===0` 或直出)。封装:`api/pl.js`。 运费提交审批:底部 Sheet 多选审批人(`/web/admin/users/options` + `components/mp-approver-picker`),支持或签/顺序/会签。 ## 后续建设建议 开发范围与分期进度见 **`docs/miniprogram-dev-checklist.md`**(含 §7.1 冒烟表)。 1. ~~P0~~ / ~~P1 CRM~~ / ~~P2 报销~~ / ~~P3 地磅~~ / ~~P4 运输~~ → **P5** 按冒烟表联调 + 合法域名 + `npm run release:check-api` 2. 灰卡菜单仍走 `biz-placeholder`;联调时核对微信合法域名与 `config/api.js` 基址