# DeviceMaintainH5 **Repository Path**: coder_tian/device-maintain-h5 ## Basic Information - **Project Name**: DeviceMaintainH5 - **Description**: 移动保修H5独立版 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-31 - **Last Updated**: 2026-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 移动报修 · 企业微信 H5 设备报修与运维管理 H5,运行于企业微信自建应用内(Android X5 / iOS / 企微 PC 端)。 由原微信小程序 `DeviceMaintain` 迁移而来,共 22 个页面。 技术栈:Vue 3 + Vite 5 + vue-router(hash) + Pinia + TDesign Mobile Vue + axios。 ## 环境要求 - Node.js ≥ 18 - npm ≥ 9 ## 启动 ```bash npm install # postinstall 会自动为 Windows 打 vite realpath 补丁 npm run dev # http://localhost:5175 ``` 本地开发默认走 `VITE_AUTH_BYPASS=true`,跳过企微 OAuth 直接用 `VITE_AUTH_MOCK_USER` 的身份进入,因此浏览器里可直接调试。改 `VITE_ROLE_OVERRIDE` 可切换角色验证按钮显隐。 后端请求由 dev server 同源转发:前端以 `/lyapi/*` 发出,proxy 到 `https://lyousoft.gnway.org`,浏览器侧无跨域。 ## 构建 ```bash npm run build # 输出 dist/,含 modern + legacy 双份 bundle npm run preview # 本地预览产物 npm run test # vitest ``` `base: './'` 为相对路径,产物可挂在任意子路径下。 ## 环境变量 `.env.development` / `.env.production`,均需 `VITE_` 前缀。 | 变量 | 说明 | | --- | --- | | `VITE_CORP_ID` | 企微企业 ID(corpid),OAuth 授权用 | | `VITE_AGENT_ID` | 企微自建应用 agentid | | `VITE_API_BASE` | 请求 baseURL。dev 填 `/lyapi` 走 proxy;prod 填完整地址 | | `VITE_HOSPITAL_NUMBER` | 院区编码(HRP `ctrcode`),固化不走接口 | | `VITE_HOSPITAL_ID` | 院区 ID(HRP `ctrid`),`24` 为高明医院,影响三处特例分支 | | `VITE_AUTH_BYPASS` | 仅 dev 生效。`true` 时跳过 OAuth | | `VITE_AUTH_MOCK_USER` | 单行 JSON,`VITE_AUTH_BYPASS=true` 时写入的身份 | | `VITE_ROLE_OVERRIDE` | 登录接口未返回 `roleid` 时的兜底角色 | 角色取值:`2` 归口管理员 / `11` 维修员 / `12` 报修人 / `17` 派单员。 `roleId` 缺失时按最低权限(仅报修人)渲染。 生产部署前必须确认:`VITE_CORP_ID`、`VITE_AGENT_ID`、`VITE_HOSPITAL_NUMBER`、 `VITE_HOSPITAL_ID` 四项为真实值,且 `VITE_AUTH_BYPASS=false`。 企微管理后台需同步配置可信域名、网页授权回调域、JS-SDK 安全域名。 ## 目录结构 ``` src/ ├── api/ 请求层:request.js + modules/(按业务域拆分) ├── components/ 跨页面复用组件 ├── composables/ 鉴权、扫码、分页、附件、日期选择 ├── config/ 常量、权限、authBypass ├── router/ hash 路由 + 守卫 ├── stores/ user / pickerResult / formDraft / materialCart ├── styles/ 设计令牌与三段式页面骨架 └── views/ 一路由一目录,22 个页面 ``` 页面统一三段式布局:`.page` > `.page__header` / `.page__body`(唯一滚动区)/ `.page__footer`。 设计令牌见 `src/styles/_tokens.less`,勿在页面内写死颜色与间距。 ## 本机开发注意 - 本机装有透明加密驱动,`.vue` / `.js` / `.ts` 源码在非白名单进程中读出为密文。 用 git-bash 下的 `cat` / `grep` / `py` 读取明文,详见 `.claude/CLAUDE.md`。 - `scripts/patch-vite-win.cjs` 把 vite 的 `realpathSync.native` 降级为纯 JS 实现, 规避文件过滤驱动下的路径解析失败。由 `postinstall` 自动执行。 ## 规格文档 需求与设计位于 `openspec/changes/migrate-device-maintain-h5/`: `proposal.md`(提案)、`design.md`(技术决策)、`tasks.md`(实施清单)、 `specs/*/spec.md`(13 个能力的验收场景)。