# 2026-07-20 工作记录

## 复制 site-vue 登录页到 mp-vue

将 `/Users/gxwebsoft/VUE/site-vue/src/views/passport/login` 的登录页复制到当前项目 `mp-vue/src/views/passport/login`。

### 关键发现
- 两边 `components/` 子目录完全一致，无需复制；仅 `index.vue` 有差异（源为重构后的新版本，22387 字节）。
- 源登录页重构后依赖 site-vue 专属 API，mp-vue 原本缺失：
  - `loginByUserId` / `loginByEmail`：写死了外部地址 `https://server.websoft.top/api/...`（非 mp-vue 后端）
  - `loginBySuperAdminSms`：走 `SERVER_API_URL + '/loginBySuperAdminSms'`
  - `listAdminsByEmailAll`（来自 `@/api/system/user`）：同样指向 `server.websoft.top`
- 用户确认采用「完整移植含 API」方案，保留上述 websoft.top 硬编码地址（已知风险：登录会打到 site-vue 后端，需确认 mp-vue 后端是否支持这些接口）。

### 已改动文件
1. `src/views/passport/login/index.vue` —— 直接覆盖为源版本。
2. `src/api/passport/login/index.ts` —— 新增 `loginByUserId`、`loginBySuperAdminSms`、`loginByEmail` 三个函数。
3. `src/api/system/user/index.ts` —— 新增 `listAdminsByEmailAll` 函数。
4. `src/api/passport/login/model/index.ts` —— LoginParam 增加 `userId`、`email` 字段。

### 验证
- 所有 import 符号在 mp-vue 中均存在（`@/router`、`QrCodeStatusResponse`、`QrLogin` 组件、`configWebsiteField` 等）。
- 两边 `User` 模型字段一致（含 `isSuperAdmin`、`templateId`），表单初值与 `LoginForm` 类型匹配。
- 全量类型检查（`vue-tsc --noEmit`）报 1178 个错误，但均出现在我未改动的文件（如 system/cache、house、shop/shopGoods 等），我改动的 4 个文件均未出现在错误列表中。
- 实际构建 `pnpm build` 已通过。

## 修复打包报错（sass / element-plus / listUser）

用户反馈打包报错 `Preprocessor dependency "sass" not found`，逐步修复如下：

1. 安装 `sass` 作为 devDependency：`pnpm add -D sass`。
2. 继续构建发现 `element-plus` 未安装（`src/views/cms/customerLead/index.vue` 与 `src/views/cms/recommendation/index.vue` 均导入）。执行 `pnpm add element-plus`，安装到 dependencies（版本 2.14.3）。
3. 继续构建发现 `customerLead/index.vue` 中导入 `listUser`（拼写错误），实际 API 导出为 `listUsers`。修正导入和调用处。
4. 最终 `pnpm build` 成功完成（`✓ 9738 modules transformed`，`dist` 产物正常生成）。

### 本次修复涉及文件
- `package.json` / `pnpm-lock.yaml` / `node_modules`（新增 `sass`、`element-plus` 及 `@typescript-eslint/eslint-plugin` 等依赖）
- `src/views/cms/customerLead/index.vue`（`listUser` → `listUsers`）
