feat: 语言切换功能页面推进

This commit is contained in:
hzj 2026-04-29 19:30:42 +08:00
parent d4eb10aaf7
commit 40e4b92eea
14 changed files with 609 additions and 76 deletions

View File

@ -62,7 +62,12 @@
### 当前跨已完成页面的公共组件联动复查
- 状态:待处理
- 当前认领:无
- 当前认领:线程一认领 `src/components/data/IpDeviceHandle/index.vue`2026-04-29
- 已完成:`src/components/data/UserRegistrationOverviewCharts/*.vue`线程二2026-04-29
- 已完成:`src/components/data/GoldRunningWaterDialog/index.vue`线程一2026-04-29
- 已完成:`src/components/data/EditUserGameCouponRewardForm/index.vue`线程一2026-04-29
- 已完成:`src/components/data/EditUserGoldCoinDeductionForm/index.vue`线程三2026-04-29
- 已完成:`src/components/data/EditDiamondCoinDeductionForm/index.vue`线程二2026-04-29
- 已完成:`src/components/data/DiamondSalaryRunningWaterDialog/index.vue`线程三2026-04-29
- 已完成:`src/components/data/AddOtherRechargeDialog/index.vue`线程三2026-04-29
- 已完成:`src/components/data/DiamondRunningWaterDialog/index.vue`线程二2026-04-29

View File

@ -177,13 +177,288 @@
| 线程 | 当前状态 | 认领范围 | 说明 |
| --- | --- | --- | --- |
| 线程一 | 待分配 | 未认领 | 2026-04-29 已完成 `src/components/data/AddOtherRecharge/index.vue` 公共组件联动复查、中文残留扫描、语言文件语法检查、构建验证与 md 同步 |
| 线程二 | 进行中 | `src/components/data/EditDiamondCoinDeductionForm/index.vue` | 2026-04-29 认领公共组件联动复查:处理用户列表页面直接复用的扣除用户钻石弹窗展示文本 |
| 线程三 | 待分配 | 未认领 | 2026-04-29 已完成 `src/components/data/DiamondSalaryRunningWaterDialog/index.vue` 公共组件联动复查、中文残留扫描、语言文件语法检查、构建验证与 md 同步 |
| 线程一 | 进行中 | `src/components/data/IpDeviceHandle/index.vue` | 2026-04-29 认领公共组件联动复查:处理用户列表页面直接复用的 IP 设备管控弹窗展示文本 |
| 线程二 | 进行中 | `src/components/data/UserAccountStatusLogDrawer/index.vue` | 2026-04-29 认领公共组件联动复查:处理用户列表页面直接复用的账户审批记录抽屉静态展示文本 |
| 线程三 | 待分配 | 未认领 | 2026-04-29 已完成 `src/components/data/EditUserGoldCoinDeductionForm/index.vue` 公共组件联动复查、中文残留扫描、语言文件语法检查、构建验证与 md 同步 |
| 线程四 | 待分配 | 未认领 | 避免和其他线程同时编辑同一语言模块 |
## 最新认领记录
- 2026-04-29
- 线程一已新认领:`src/components/data/IpDeviceHandle/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 领取前动作:
- 已重新读取 `docs/i18n/线程协作.md`
- 已重新读取 `docs/i18n/翻译清单.md`
- 已重新读取 `docs/i18n/翻译进度.md`
- 已重新读取 `docs/i18n/主要路由.md`
- 已确认线程一当前未认领新任务
- 已确认线程二当前认领 `src/components/data/UserRegistrationOverviewCharts/*.vue`,线程一本轮避开该文件组
- 已确认线程三当前待分配
- 已确认当前无其他线程认领 `src/components/data/IpDeviceHandle/index.vue`
- 认领范围包括:
- `src/components/data/IpDeviceHandle/index.vue`
- 如需新增文案,同时补充 `src/lang/messages/pages/en.js``src/lang/messages/pages/zh.js`
- 处理原则:
- 只处理组件可见静态展示文本
- 不修改功能逻辑、接口参数、路由路径、权限码、表单提交字段或接口返回数据
- 2026-04-29
- 线程二已新认领:`src/components/data/UserAccountStatusLogDrawer/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 领取前动作:
- 已重新读取 `docs/i18n/线程协作.md`
- 已重新读取 `docs/i18n/翻译进度.md`
- 已重新读取 `docs/i18n/翻译清单.md`
- 已重新读取 `docs/i18n/主要路由.md`
- 已重新读取 `src/lang/messages/pages/en.js`
- 已重新读取 `src/lang/messages/pages/zh.js`
- 已确认线程一当前认领 `src/components/data/IpDeviceHandle/index.vue`,线程二本轮避开该文件
- 已确认线程三当前待分配
- 已确认当前无其他线程认领 `src/components/data/UserAccountStatusLogDrawer/index.vue`
- 已核对 `src/components/data/UserAccountStatusLogDrawer` 目录当前仅包含 `index.vue`
- 认领范围包括:
- 组件内静态展示文本翻译
- 必要的页面级语言 key 补充或复用
- 中文残留扫描
- 语言文件语法检查
- 构建验证
- `docs/i18n/翻译进度.md``docs/i18n/翻译清单.md``docs/i18n/主要路由.md` 同步更新
- 不包括:
- 接口参数
- 路由路径
- 权限码
- 接口返回内容
- 2026-04-29
- 线程二已完成:`src/components/data/UserRegistrationOverviewCharts/*.vue`
- 完成范围包括:
- `src/components/data/UserRegistrationOverviewCharts/dialog.vue`
- `src/components/data/UserRegistrationOverviewCharts/index.vue`
- `src/components/data/UserRegistrationOverviewCharts/bar-graph-charts.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 完成内容包括:
- 弹窗标题国际化
- 时间类型与日期选择 placeholder 国际化
- 日 / 月 / 年查询类型文案国际化
- 总额统计文案国际化
- 图表 tooltip 中数量文案国际化
- 新增 `pages.userRegistrationOverviewCharts`
- 中文残留扫描
- 语言文件语法检查
- 构建验证
- 保持不变:
- 查询参数、图表数据结构与接口返回内容
- `dialog.vue``index.vue``bar-graph-charts.vue` 的原有渲染关系
- 验证结果:
- `src/components/data/UserRegistrationOverviewCharts/dialog.vue``index.vue``bar-graph-charts.vue` 中文残留扫描通过;仅 `index.vue` 注释块中保留 `placeholder="系统"`,不属于可见展示文案
- 已执行 `src/lang/messages/pages/en.js``src/lang/messages/pages/zh.js` 语法检查,通过
- 直接执行 `npm run build:prod` 在当前环境触发 `ERR_OSSL_EVP_UNSUPPORTED`
- 已按协作文档备用方案执行 `$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run build:prod`,构建通过
- 当前仍保留项目既有 `17` 条 warning未新增阻塞错误
- 线程二本轮完成后切回待分配
- 2026-04-29
- 线程一已完成:`src/components/data/GoldRunningWaterDialog/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 完成内容包括:
- 弹窗标题、时间范围分隔符与开始/结束日期 placeholder 国际化
- 警告提示、表格列名、收入/支出/未知类型文案国际化
- 加载更多与已加载全部提示国际化
- 复用既有 `pages.goldRunningWater` 语言模块,并补充 `dialog.title`
- 保持不变:
- `listGoldRunningWater` 接口调用
- 分页查询字段、`lastId` 逻辑、时间范围默认值逻辑
- 接口返回的系统、来源、备注、后台操作人等动态数据
- 验证结果:
- `src/components/data/GoldRunningWaterDialog/index.vue` 当前中文残留仅剩注释
- 已执行 `src/lang/messages/pages/en.js``src/lang/messages/pages/zh.js` 语法检查,通过
- 已执行 `$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run build:prod`,构建通过
- 当前仍保留项目既有 `17` 条 warning未新增阻塞错误
- 线程一本轮完成后切回待分配
- 2026-04-29
- 线程一已新认领:`src/components/data/GoldRunningWaterDialog/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 领取前动作:
- 已重新读取 `docs/i18n/线程协作.md`
- 已重新读取 `docs/i18n/翻译清单.md`
- 已重新读取 `docs/i18n/翻译进度.md`
- 已重新读取 `docs/i18n/主要路由.md`
- 已确认线程一当前未认领新任务
- 已确认线程二当前认领 `src/components/data/UserRegistrationOverviewCharts/*.vue`,线程一本轮避开该文件组
- 已确认线程三当前待分配
- 已确认当前无其他线程认领 `src/components/data/GoldRunningWaterDialog/index.vue`
- 认领范围包括:
- `src/components/data/GoldRunningWaterDialog/index.vue`
- 如需新增文案,同时补充 `src/lang/messages/pages/en.js``src/lang/messages/pages/zh.js`
- 处理原则:
- 只处理组件可见静态展示文本
- 不修改功能逻辑、接口参数、路由路径、权限码、分页查询字段或接口返回数据
- 2026-04-29
- 线程二已新认领:`src/components/data/UserRegistrationOverviewCharts/dialog.vue`
- 同步纳入范围:
- `src/components/data/UserRegistrationOverviewCharts/index.vue`
- `src/components/data/UserRegistrationOverviewCharts/bar-graph-charts.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 领取前动作:
- 已重新读取 `docs/i18n/线程协作.md`
- 已重新读取 `docs/i18n/翻译进度.md`
- 已重新读取 `docs/i18n/翻译清单.md`
- 已重新读取 `docs/i18n/主要路由.md`
- 已重新读取 `src/lang/messages/pages/en.js`
- 已重新读取 `src/lang/messages/pages/zh.js`
- 已确认线程一当前认领 `src/components/data/EditUserGameCouponRewardForm/index.vue`,线程二本轮避开该文件
- 已确认线程三当前认领 `src/components/data/EditUserGoldCoinDeductionForm/index.vue`,线程二本轮避开该文件
- 已确认当前无其他线程认领 `src/components/data/UserRegistrationOverviewCharts/dialog.vue`
- 已核对 `src/components/data/UserRegistrationOverviewCharts` 目录中由弹窗直接渲染的可见文件为 `dialog.vue``index.vue``bar-graph-charts.vue`
- 认领范围包括:
- 组件模块内静态展示文本翻译
- 必要的页面级语言 key 补充或复用
- 中文残留扫描、语言文件语法检查、构建验证
- `docs/i18n/翻译进度.md``docs/i18n/翻译清单.md``docs/i18n/主要路由.md` 与本文件同步更新
- 不包含:
- 接口参数
- 路由路径
- 权限码
- 图表数据与接口返回内容
- 2026-04-29
- 线程三已完成:`src/components/data/EditUserGoldCoinDeductionForm/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 完成范围包括:
- 扣除用户金币弹窗标题国际化
- 表单标签、placeholder、取消/提交按钮国际化
- 金币数量校验提示国际化
- 新增 `pages.editUserGoldCoinDeductionForm`
- 保持不变:
- `deductGold(...)` 接口调用
- `userId``quantity``remarks` 提交字段
- 表单字段、校验正则、关闭与提交逻辑
- 验证结果:
- `src/components/data/EditUserGoldCoinDeductionForm/index.vue` 中文残留扫描无命中
- `src/lang/messages/pages/en.js``src/lang/messages/pages/zh.js` 语法检查通过
- 直接执行 `npm run build:prod` 因当前 Node 22 / webpack OpenSSL 兼容问题报 `ERR_OSSL_EVP_UNSUPPORTED`
- 按协作文档兜底执行 `$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run build:prod` 构建通过
- 当前仍保留项目既有 `17` 条 warning未新增阻塞错误
- 线程三本轮完成后切回待分配
- 2026-04-29
- 线程一已完成:`src/components/data/EditUserGameCouponRewardForm/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 完成范围包括:
- 奖励用户游戏券弹窗标题、表单标签、placeholder、按钮与校验提示国际化
- 新增 `pages.editUserGameCouponRewardForm`
- 中文残留扫描
- 语言文件语法检查
- 构建验证
- `docs/i18n/翻译进度.md``docs/i18n/翻译清单.md``docs/i18n/主要路由.md` 与本文件同步更新
- 补充说明:
- 未修改接口参数、路由路径、权限码、表单提交字段或提交值
- `currencyRewardReasons` 实际值与 `rewardGameCoupon(...)` 调用逻辑保持原样
- `src/components/data/EditUserGameCouponRewardForm/index.vue` 当前无中文残留
- 已执行语言文件语法检查,通过
- 直接执行 `npm run build:prod` 在当前 Node 22 环境触发 `ERR_OSSL_EVP_UNSUPPORTED`
- 已按项目文档备用方案执行 `$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run build:prod`,构建通过
- 当前仍保留项目既有 `17` 条 warning未新增阻塞错误
- 线程一本轮完成后切回待分配
- 2026-04-29
- 线程三已新认领:`src/components/data/EditUserGoldCoinDeductionForm/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 领取前动作:
- 已重新读取 `docs/i18n/线程协作.md`
- 已重新读取 `docs/i18n/翻译进度.md`
- 已重新读取 `docs/i18n/翻译清单.md`
- 已重新读取 `docs/i18n/主要路由.md`
- 已重新读取 `src/lang/messages/pages/en.js`
- 已重新读取 `src/lang/messages/pages/zh.js`
- 已确认线程一当前认领 `src/components/data/EditUserGameCouponRewardForm/index.vue`,线程三本轮避开该文件
- 已确认线程二当前认领 `src/components/data/EditDiamondCoinDeductionForm/index.vue`,线程三本轮避开该文件
- 已确认当前无其他线程认领 `src/components/data/EditUserGoldCoinDeductionForm/index.vue`
- 认领范围包括:
- 组件内静态展示文本翻译
- 必要的页面级语言 key 补充或复用
- 中文残留扫描、语言文件语法检查、构建验证
- `docs/i18n/翻译进度.md``docs/i18n/翻译清单.md``docs/i18n/主要路由.md` 与本文件同步更新
- 不包含:
- 接口参数
- 路由路径
- 权限码
- 表单提交字段或提交值
- 扣除数量或扣除原因等实际提交内容
- 2026-04-29
- 线程二已完成:`src/components/data/EditDiamondCoinDeductionForm/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 完成范围包括:
- 扣除用户钻石弹窗标题国际化
- 钻石、备注表单标签国际化
- 钻石数量、扣除原因 placeholder 国际化
- 取消、提交按钮国际化
- 校验提示国际化
- 新增 `pages.editDiamondCoinDeductionForm`
- 中文残留扫描
- 语言文件语法检查
- 构建验证
- `docs/i18n/翻译进度.md``docs/i18n/翻译清单.md``docs/i18n/主要路由.md` 与本文件同步更新
- 补充说明:
- 未修改接口参数、路由路径、权限码、表单提交字段或提交值
- `quantity``remarks` 提交内容与 `deductDiamond` 调用逻辑保持原样
- `src/components/data/EditDiamondCoinDeductionForm/index.vue` 当前无中文残留
- 已执行语言文件语法检查,通过
- 直接执行 `npm run build:prod` 在当前环境触发 `ERR_OSSL_EVP_UNSUPPORTED`
- 已按协作文档备用方案执行 `$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run build:prod`,构建通过
- 当前仍保留项目既有 `17` 条 warning未新增阻塞错误
- 线程二本轮完成后切回待分配
- 2026-04-29
- 线程一已新认领:`src/components/data/EditUserGameCouponRewardForm/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查
- 关联页面包括:
- `src/views/user/user-table/index.vue`
- 领取前动作:
- 已重新读取 `docs/i18n/线程协作.md`
- 已重新读取 `docs/i18n/翻译进度.md`
- 已重新读取 `docs/i18n/翻译清单.md`
- 已重新读取 `docs/i18n/主要路由.md`
- 已确认线程一当前未认领新任务
- 已确认线程二当前认领 `src/components/data/EditDiamondCoinDeductionForm/index.vue`,线程一本轮避开该文件
- 已确认当前无其他线程认领 `src/components/data/EditUserGameCouponRewardForm/index.vue`
- 认领范围包括:
- 组件内静态展示文本翻译
- 必要的页面级语言 key 补充或复用
- 中文残留扫描、语言文件语法检查、构建验证
- `docs/i18n/翻译进度.md``docs/i18n/翻译清单.md``docs/i18n/主要路由.md` 与本文件同步更新
- 不包含:
- 接口参数
- 路由路径
- 权限码
- 表单提交字段或提交值
- `currencyRewardReasons` 实际值
- `rewardGameCoupon(...)` 调用逻辑
- 2026-04-29
- 线程二已新认领:`src/components/data/EditDiamondCoinDeductionForm/index.vue`
- 任务类型:已完成主要路由页面的直接公共组件联动复查

View File

@ -295,7 +295,12 @@
## 进行中
- 当前无
- 线程一:公共组件联动复查 / IpDeviceHandle
- 状态:进行中
- 认领文件:`src/components/data/IpDeviceHandle/index.vue`
- 关联已完成页面:
- `src/views/user/user-table/index.vue`
- 处理原则:只处理组件可见静态展示文本,不修改接口参数、路由路径、权限码、表单提交字段或接口返回内容
- 临时任务:已完成 `src/views` 页面私有组件复查
- 状态:已完成;当前无可领取明确剩余目录,不再作为后续领取优先级的一环
@ -366,6 +371,22 @@
- 完成线程:线程三
- 关联页面:用户列表页面
- 说明:组件内线下充值订单记录弹窗标题、加载文案与表格列名已国际化;支付类型实际值、分页查询字段与接口返回订单数据保持原样
- `src/components/data/EditUserGameCouponRewardForm/index.vue`
- 完成线程:线程一
- 关联页面:用户列表页面
- 说明组件内奖励用户游戏券弹窗标题、表单标签、placeholder、按钮与校验提示已国际化`currencyRewardReasons` 实际值、表单提交字段与 `rewardGameCoupon(...)` 调用逻辑保持原样
- `src/components/data/GoldRunningWaterDialog/index.vue`
- 完成线程:线程一
- 关联页面:用户列表页面
- 说明:组件内金币流水弹窗标题、时间范围 placeholder、警告提示、表格列名、类型文案与加载更多状态已国际化接口分页字段、默认时间逻辑与接口返回动态数据保持原样
- `src/components/data/EditUserGoldCoinDeductionForm/index.vue`
- 完成线程:线程三
- 关联页面:用户列表页面
- 说明组件内扣除用户金币弹窗标题、表单标签、placeholder、按钮与校验提示已国际化`deductGold(...)` 接口调用、表单提交字段与提交值保持原样
- `src/components/data/UserRegistrationOverviewCharts/dialog.vue`
- 完成线程:线程二
- 关联页面:用户列表页面
- 说明:组件内用户注册情况弹窗标题已国际化;同步完成 `src/components/data/UserRegistrationOverviewCharts/index.vue``src/components/data/UserRegistrationOverviewCharts/bar-graph-charts.vue` 的时间类型、日期选择、日/月/年筛选、总额与图表 tooltip 数量文案国际化;查询参数、图表数据结构与接口返回内容保持原样
- `src/components/data/DiamondRunningWaterDialog/index.vue`
- 完成线程:线程二
- 关联页面:用户列表页面
@ -375,14 +396,9 @@
- 关联页面:用户列表页面
- 说明:组件内用户工资钻石流水弹窗标题、表格加载文案与表格列名已国际化;分页查询字段、加载逻辑、接口返回工资钻石流水数据、来源、来源描述、类型名称与备注保持原样
- 当前扫描到仍需复核的“已完成页面 -> 直接公共组件”:
- `src/views/user/user-table/index.vue` -> `src/components/data/EditDiamondCoinDeductionForm/index.vue`(中文命中 9
- `src/views/user/user-table/index.vue` -> `src/components/data/EditUserGameCouponRewardForm/index.vue`(中文命中 12
- `src/views/user/user-table/index.vue` -> `src/components/data/EditUserGoldCoinDeductionForm/index.vue`(中文命中 9
- `src/views/user/user-table/index.vue` -> `src/components/data/EditUserGoldCoinRewardForm/index.vue`(中文命中 7历史已处理需确认是否仅剩注释
- `src/views/user/user-table/index.vue` -> `src/components/data/GoldRunningWaterDialog/index.vue`(中文命中 18
- `src/views/user/user-table/index.vue` -> `src/components/data/IpDeviceHandle/index.vue`(中文命中 7
- `src/views/user/user-table/index.vue` -> `src/components/data/UserAccountStatusLogDrawer/index.vue`(中文命中 8
- `src/views/user/user-table/index.vue` -> `src/components/data/UserRegistrationOverviewCharts/dialog.vue`(中文命中 1
- `src/views/user/user-table/index.vue` -> `src/components/data/UserVideoViolationTableDialog/index.vue`(中文命中 5
- 当前未列入“仍需复核”的直接公共组件:
- 直接组件文件不存在或未解析到本地 `.vue` 文件

View File

@ -1386,6 +1386,14 @@
- 已完成公共组件联动复查:
- `src/components/data/AssociatedResources/index.vue`
- 说明:线程三已完成活动管理奖励编辑直接复用的关联资源组组件静态展示文本国际化;接口参数、路由路径、权限码、分页/查询/选择逻辑、上下架布尔值、接口返回资源组名称与奖品资源数据保持原样
- 已完成公共组件联动复查:
- `src/components/data/UserRegistrationOverviewCharts/dialog.vue`
- `src/components/data/UserRegistrationOverviewCharts/index.vue`
- `src/components/data/UserRegistrationOverviewCharts/bar-graph-charts.vue`
- 说明:线程二已完成用户列表页面直接复用的用户注册情况弹窗与图表模块静态展示文本国际化;新增 `pages.userRegistrationOverviewCharts`,保留查询参数、图表数据结构与接口返回内容原样
- 已完成公共组件联动复查:
- `src/components/data/EditUserGameCouponRewardForm/index.vue`
- 说明线程一已完成用户列表页面直接复用的奖励用户游戏券弹窗标题、表单标签、placeholder、按钮与校验提示国际化接口参数、路由路径、权限码、表单提交字段、奖励数量与奖励原因提交内容保持原样
- 已完成公共组件联动复查:
- `src/components/data/DiamondRunningWaterDialog/index.vue`
- 说明:线程二已完成用户列表页面直接复用的用户钻石流水弹窗标题与表格列名国际化;接口参数、路由路径、权限码、分页查询字段、加载逻辑、接口返回的流水数据、来源、来源描述、类型描述与备注保持原样
@ -1395,25 +1403,40 @@
- 已完成公共组件联动复查:
- `src/components/data/DiamondSalaryRunningWaterDialog/index.vue`
- 说明:线程三已完成用户列表页面直接复用的用户工资钻石流水弹窗标题、表格加载文案与表格列名国际化;接口参数、路由路径、权限码、分页查询字段、加载逻辑、接口返回工资钻石流水数据、来源、来源描述、类型名称与备注保持原样
- 已完成公共组件联动复查:
- `src/components/data/EditDiamondCoinDeductionForm/index.vue`
- 说明线程二已完成用户列表页面直接复用的扣除用户钻石弹窗标题、表单标签、placeholder、按钮与校验提示国际化接口参数、路由路径、权限码、表单提交字段、扣除数量与扣除原因提交内容保持原样
- 已完成公共组件联动复查:
- `src/components/data/EditUserGoldCoinDeductionForm/index.vue`
- 说明线程三已完成用户列表页面直接复用的扣除用户金币弹窗标题、表单标签、placeholder、按钮与校验提示国际化接口参数、路由路径、权限码、`deductGold(...)` 调用、表单提交字段与提交值保持原样
- 已补充页面级语言 key
- `src/lang/messages/pages/en.js`
- `src/lang/messages/pages/zh.js`
- 新增范围:`pages.editUserGameCouponRewardForm`
- 新增范围:`pages.diamondRunningWaterDialog`
- 新增范围:`pages.associatedResources`
- 新增范围:`pages.addOtherRechargeDialog`
- 新增范围:`pages.salaryDiamondRunningWaterDialog`
- 新增范围:`pages.editDiamondCoinDeductionForm`
- 新增范围:`pages.editUserGoldCoinDeductionForm`
- 新增范围:`pages.userRegistrationOverviewCharts`
- 已完成验证:
- 本轮 `src/components/data/UserRegistrationOverviewCharts/dialog.vue``src/components/data/UserRegistrationOverviewCharts/index.vue``src/components/data/UserRegistrationOverviewCharts/bar-graph-charts.vue` 中文残留扫描通过;仅 `index.vue` 注释块中保留 `placeholder="系统"`,不属于可见展示文案
- 本轮 `src/components/data/EditUserGameCouponRewardForm/index.vue` 中文残留扫描通过
- `src/components/data/AssociatedResources/index.vue` 中文残留扫描通过(上一轮记录)
- 本轮 `src/components/data/DiamondRunningWaterDialog/index.vue` 中文残留扫描通过
- 本轮 `src/components/data/AddOtherRechargeDialog/index.vue` 中文残留扫描通过
- 本轮 `src/components/data/DiamondSalaryRunningWaterDialog/index.vue` 中文残留扫描通过
- 本轮 `src/components/data/EditDiamondCoinDeductionForm/index.vue` 中文残留扫描通过
- 本轮 `src/components/data/EditUserGoldCoinDeductionForm/index.vue` 中文残留扫描通过
- 本轮 `src/lang/messages/pages/en.js``src/lang/messages/pages/zh.js` 语法校验通过
- 本轮直接执行 `npm run build:prod` 构建通过
- 说明:当前仍保留项目既有 `17` 条 warning未因本轮 `DiamondRunningWaterDialog` / `AddOtherRechargeDialog` / `DiamondSalaryRunningWaterDialog` 国际化改动新增阻塞错误
- 本轮直接执行 `npm run build:prod` 在当前环境触发 `ERR_OSSL_EVP_UNSUPPORTED`
- 已按协作文档备用方案执行 `$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run build:prod` 构建通过
- 说明:当前仍保留项目既有 `17` 条 warning未因本轮 `DiamondRunningWaterDialog` / `AddOtherRechargeDialog` / `DiamondSalaryRunningWaterDialog` / `EditDiamondCoinDeductionForm` / `EditUserGoldCoinDeductionForm` / `GoldRunningWaterDialog` / `UserRegistrationOverviewCharts` 国际化改动新增阻塞错误
- 当前认领线程:
- 线程一:待分配,当前未认领新任务;已完成 `src/components/data/AddOtherRecharge/index.vue` 公共组件联动复查、中文残留扫描、语言文件语法检查、构建验证与 md 同步
- 线程二:待分配,当前未认领新任务;已完成 `src/components/data/DiamondRunningWaterDialog/index.vue` 公共组件联动复查、中文残留扫描和构建验证
- 线程三:待分配,当前未认领新任务;已完成 `src/components/data/DiamondSalaryRunningWaterDialog/index.vue` 公共组件联动复查、中文残留扫描、语言文件语法检查、构建验证与 md 同步
- 线程一:进行中,当前认领 `src/components/data/IpDeviceHandle/index.vue` 公共组件联动复查;用于补齐用户列表页面直接复用的 IP 设备管控弹窗静态展示文本国际化
- 线程二:进行中,当前认领 `src/components/data/UserAccountStatusLogDrawer/index.vue` 公共组件联动复查;用于补齐用户列表页面直接复用的账户审批记录抽屉静态展示文本国际化
- 线程三:待分配,当前未认领新任务;已完成 `src/components/data/EditUserGoldCoinDeductionForm/index.vue` 公共组件联动复查、中文残留扫描、语言文件语法检查、构建验证与 md 同步
## 扫描概况

View File

@ -1,7 +1,7 @@
<template>
<div class="edit-user-gold-coin-deduction-form">
<el-dialog
title="扣除用户钻石"
:title="$t('pages.editDiamondCoinDeductionForm.dialog.title')"
:visible="true"
width="450px"
:before-close="handleClose"
@ -17,31 +17,31 @@
label-width="70px"
style="width: 300px; margin-left:50px;"
>
<el-form-item label="钻石" prop="candy">
<el-form-item :label="$t('pages.propsSourceGroupForm.resourceType.diamond')" prop="candy">
<el-input
v-model.trim="formData.candy"
placeholder="需要扣除的钻石数量"
:placeholder="$t('pages.editDiamondCoinDeductionForm.placeholder.diamondQuantity')"
/>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-form-item :label="$t('pages.editDiamondCoinDeductionForm.form.remarks')" prop="remarks">
<el-input
v-model.trim="formData.remarks"
placeholder="扣除钻石的原因"
:placeholder="$t('pages.editDiamondCoinDeductionForm.placeholder.reason')"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleClose()">
取消
{{ $t('pages.editDiamondCoinDeductionForm.action.cancel') }}
</el-button>
<el-button
v-loading="listLoading"
type="primary"
@click="handleSubmit()"
>
提交
{{ $t('pages.editDiamondCoinDeductionForm.action.submit') }}
</el-button>
</div>
</el-dialog>
@ -66,12 +66,12 @@ export default {
candy: [
{
required: true,
message: '请输入金额',
message: this.$t('pages.editDiamondCoinDeductionForm.validation.enterAmount'),
trigger: 'blur'
},
{
pattern: /^\d{1,7}(\.\d{0,2})?$/,
message: 'double范围0~9999999小数最多两位',
message: this.$t('pages.editDiamondCoinDeductionForm.validation.amountRange'),
trigger: 'blur'
}
]

View File

@ -1,7 +1,7 @@
<template>
<div class="edit-user-game-coupon-reward-form">
<el-dialog
title="奖励用户游戏券"
:title="$t('pages.editUserGameCouponRewardForm.dialog.title')"
:visible="true"
width="450px"
:before-close="handleClose"
@ -18,8 +18,8 @@
style="width: 300px; margin-left:50px;"
>
<el-form-item label="类型" prop="rewardType">
<el-select v-model="formData.rewardType" placeholder="请选择">
<el-form-item :label="$t('pages.editUserGameCouponRewardForm.form.type')" prop="rewardType">
<el-select v-model="formData.rewardType" :placeholder="$t('pages.editUserGameCouponRewardForm.placeholder.select')">
<el-option
v-for="item in currencyRewardReasons"
:key="item.value"
@ -29,31 +29,31 @@
</el-select>
</el-form-item>
<el-form-item label="游戏券" prop="coupon">
<el-form-item :label="$t('pages.editUserGameCouponRewardForm.form.gameCoupon')" prop="coupon">
<el-input
v-model.trim="formData.coupon"
placeholder="需要奖励的游戏券数量"
:placeholder="$t('pages.editUserGameCouponRewardForm.placeholder.gameCouponQuantity')"
/>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-form-item :label="$t('pages.editUserGameCouponRewardForm.form.remarks')" prop="remarks">
<el-input
v-model.trim="formData.remarks"
placeholder="奖励备注"
:placeholder="$t('pages.editUserGameCouponRewardForm.placeholder.remarks')"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleClose()">
取消
{{ $t('pages.editUserGameCouponRewardForm.action.cancel') }}
</el-button>
<el-button
v-loading="listLoading"
type="primary"
@click="handleSubmit()"
>
提交
{{ $t('pages.editUserGameCouponRewardForm.action.submit') }}
</el-button>
</div>
</el-dialog>
@ -80,19 +80,19 @@ export default {
coupon: [
{
required: true,
message: '请输入游戏券数量',
message: this.$t('pages.editUserGameCouponRewardForm.validation.enterAmount'),
trigger: 'blur'
},
{
pattern: /^\d{1,7}(\.\d{0,2})?$/,
message: 'double范围0~9999999小数最多两位',
message: this.$t('pages.editUserGameCouponRewardForm.validation.amountRange'),
trigger: 'blur'
}
],
rewardType: [
{
required: true,
message: '请选择类型',
message: this.$t('pages.editUserGameCouponRewardForm.validation.selectType'),
trigger: 'blur'
}
]

View File

@ -1,7 +1,7 @@
<template>
<div class="edit-user-gold-coin-deduction-form">
<el-dialog
title="扣除用户金币"
:title="$t('pages.editUserGoldCoinDeductionForm.dialog.title')"
:visible="true"
width="450px"
:before-close="handleClose"
@ -17,31 +17,31 @@
label-width="70px"
style="width: 300px; margin-left:50px;"
>
<el-form-item label="金币" prop="candy">
<el-form-item :label="$t('pages.editUserGoldCoinDeductionForm.form.gold')" prop="candy">
<el-input
v-model.trim="formData.candy"
placeholder="需要扣除的金币数量"
:placeholder="$t('pages.editUserGoldCoinDeductionForm.placeholder.goldQuantity')"
/>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-form-item :label="$t('pages.editUserGoldCoinDeductionForm.form.remarks')" prop="remarks">
<el-input
v-model.trim="formData.remarks"
placeholder="扣除金币的原因"
:placeholder="$t('pages.editUserGoldCoinDeductionForm.placeholder.remarks')"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleClose()">
取消
{{ $t('pages.editUserGoldCoinDeductionForm.action.cancel') }}
</el-button>
<el-button
v-loading="listLoading"
type="primary"
@click="handleSubmit()"
>
提交
{{ $t('pages.editUserGoldCoinDeductionForm.action.submit') }}
</el-button>
</div>
</el-dialog>
@ -66,12 +66,12 @@ export default {
candy: [
{
required: true,
message: '请输入金额',
message: this.$t('pages.editUserGoldCoinDeductionForm.validation.enterAmount'),
trigger: 'blur'
},
{
pattern: /^\d{1,7}(\.\d{0,2})?$/,
message: 'double范围0~9999999小数最多两位',
message: this.$t('pages.editUserGoldCoinDeductionForm.validation.amountRange'),
trigger: 'blur'
}
]

View File

@ -1,7 +1,7 @@
<template>
<div class="gold-running-water-drawer">
<el-dialog
title="用户金币流水"
:title="$t('pages.goldRunningWater.dialog.title')"
:visible="true"
:before-close="handleClose"
:close-on-press-escape="false"
@ -16,16 +16,16 @@
value-format="timestamp"
type="datetimerange"
:picker-options="pickerOptions"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
:range-separator="$t('pages.goldRunningWater.filter.to')"
:start-placeholder="$t('pages.goldRunningWater.filter.startDate')"
:end-placeholder="$t('pages.goldRunningWater.filter.endDate')"
:clearable="false"
@change="renderData"
/>
</div>
<div class="gold-running-water-content">
<el-alert type="warning" :closable="false">
注意: 数据存在生命周期, 最多查看最近1年数据
{{ $t('pages.goldRunningWater.message.recentYearOnly') }}
</el-alert>
<el-table
v-loading="listLoading"
@ -34,7 +34,7 @@
highlight-current-row
>
<el-table-column
label="系统"
:label="$t('pages.goldRunningWater.table.system')"
align="center"
show-overflow-tooltip
min-width="80"
@ -47,19 +47,19 @@
</template>
</el-table-column>
<el-table-column
label="类型"
:label="$t('pages.goldRunningWater.table.type')"
align="center"
show-overflow-tooltip
min-width="80"
>
<template slot-scope="scope">
<span v-if="scope.row.runningWater.type === 0">收入</span>
<span v-else-if="scope.row.runningWater.type === 1">支出</span>
<span v-else>未知</span>
<span v-if="scope.row.runningWater.type === 0">{{ $t('pages.goldRunningWater.type.income') }}</span>
<span v-else-if="scope.row.runningWater.type === 1">{{ $t('pages.goldRunningWater.type.expense') }}</span>
<span v-else>{{ $t('pages.goldRunningWater.type.unknown') }}</span>
</template>
</el-table-column>
<el-table-column
label="金币"
:label="$t('pages.goldRunningWater.table.goldAmount')"
align="center"
show-overflow-tooltip
min-width="120"
@ -76,14 +76,14 @@
</template>
</el-table-column>
<el-table-column
label="余额"
:label="$t('pages.goldRunningWater.table.balance')"
prop="runningWater.balance"
align="center"
show-overflow-tooltip
min-width="120"
/>
<el-table-column
label="来源"
:label="$t('pages.goldRunningWater.table.source')"
prop="runningWater.originName"
align="center"
show-overflow-tooltip
@ -100,7 +100,7 @@
</template>
</el-table-column>
<el-table-column
label="创建时间"
:label="$t('pages.goldRunningWater.table.createdAt')"
prop="runningWater.createTime"
align="center"
show-overflow-tooltip
@ -120,8 +120,8 @@
size="mini"
:disabled="listLoading"
@click="clickLoadMore"
>加载更多</el-button>
<span v-else>已加载全部</span>
>{{ $t('pages.goldRunningWater.action.loadMore') }}</el-button>
<span v-else>{{ $t('pages.goldRunningWater.message.loadedAll') }}</span>
</div>
</div>
</el-dialog>

View File

@ -1,6 +1,6 @@
<template>
<el-dialog
title="IP设备管控"
:title="$t('pages.ipDeviceHandle.dialog.title')"
:visible="true"
:modal-append-to-body="true"
:append-to-body="true"
@ -16,17 +16,17 @@
>
<el-form-item
v-loading="loadingIpDeviceStatus"
label="操作"
:label="$t('pages.ipDeviceHandle.form.action')"
prop="deviceListBlock"
>
<el-select v-model="form.deviceListBlock">
<el-option label="不限制" :value="null" />
<el-option label="加入黑名单" :value="true" />
<el-option label="加入白名单" :value="false" />
<el-option :label="$t('pages.ipDeviceHandle.option.noRestriction')" :value="null" />
<el-option :label="$t('pages.ipDeviceHandle.option.addToBlacklist')" :value="true" />
<el-option :label="$t('pages.ipDeviceHandle.option.addToWhitelist')" :value="false" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit()">提交</el-button>
<el-button type="primary" @click="submit()">{{ $t('pages.ipDeviceHandle.action.submit') }}</el-button>
</el-form-item>
</el-form>
</el-dialog>
@ -50,7 +50,7 @@ export default {
},
data() {
const commonRules = [
{ required: true, message: "必填字段不可为空", trigger: "blur" }
{ required: true, message: this.$t('pages.ipDeviceHandle.validation.required'), trigger: "blur" }
];
return {
loading: false,

View File

@ -120,7 +120,7 @@ export default {
}
},
formatter: function(val) {
return `数量: ${val[0].data[1]}`
return `${that.$t('pages.userRegistrationOverviewCharts.tooltip.quantity')}: ${val[0].data[1]}`
}
},
legend: {

View File

@ -1,7 +1,7 @@
<template>
<div class="props-config-edit">
<el-dialog
title="用户注册情况"
:title="$t('pages.userRegistrationOverviewCharts.dialog.title')"
:visible="true"
:before-close="handleClose"
:close-on-click-modal="false"

View File

@ -21,7 +21,7 @@
</el-select> -->
<el-select
v-model="listQuery.dateType"
placeholder="时间类型"
:placeholder="$t('pages.userRegistrationOverviewCharts.placeholder.timeType')"
style="width: 120px"
class="filter-item"
@change="changeDateType"
@ -40,13 +40,13 @@
:clearable="false"
:value-format="selectedDateType.dateValueFormat"
:type="selectedDateType.dateType"
placeholder="选择日期"
:placeholder="$t('pages.userRegistrationOverviewCharts.placeholder.selectDate')"
:editable="false"
@change="renderData"
/>
</div>
<div class="filter-item">
总额: {{ sale.total || '-' }}
{{ $t('pages.userRegistrationOverviewCharts.summary.total') }}: {{ sale.total || '-' }}
</div>
</div>
<div v-loading="loading">
@ -97,9 +97,9 @@ export default {
date: ''
},
queryTypes: [
{ label: '天', value: 'DAY' },
{ label: '月', value: 'MONTH' },
{ label: '年', value: 'YEAR' }
{ label: this.$t('pages.userRegistrationOverviewCharts.queryType.day'), value: 'DAY' },
{ label: this.$t('pages.userRegistrationOverviewCharts.queryType.month'), value: 'MONTH' },
{ label: this.$t('pages.userRegistrationOverviewCharts.queryType.year'), value: 'YEAR' }
],
loading: false,
sale: {}

View File

@ -954,6 +954,27 @@ export default {
other: 'Other'
}
},
editUserGoldCoinDeductionForm: {
dialog: {
title: 'Deduct User Gold'
},
form: {
gold: 'Gold',
remarks: 'Remarks'
},
placeholder: {
goldQuantity: 'Gold quantity to deduct',
remarks: 'Reason for deducting gold'
},
action: {
cancel: 'Cancel',
submit: 'Submit'
},
validation: {
enterAmount: 'Please enter the amount',
amountRange: 'The number range is 0~9999999 with up to two decimal places'
}
},
editUserDiamondRewardForm: {
dialog: {
title: 'Reward User Diamond'
@ -973,6 +994,26 @@ export default {
amountRange: 'The number range is 0~9999999 with up to two decimal places'
}
},
editDiamondCoinDeductionForm: {
dialog: {
title: 'Deduct User Diamonds'
},
form: {
remarks: 'Remarks'
},
placeholder: {
diamondQuantity: 'Diamond quantity to deduct',
reason: 'Reason for deducting diamonds'
},
action: {
cancel: 'Cancel',
submit: 'Submit'
},
validation: {
enterAmount: 'Please enter the amount',
amountRange: 'The number range is 0~9999999 with up to two decimal places'
}
},
editUserGameCouponDeductionForm: {
dialog: {
title: 'Deduct User Game Coupons'
@ -994,6 +1035,30 @@ export default {
amountRange: 'The number range is 0~9999999 with up to two decimal places'
}
},
editUserGameCouponRewardForm: {
dialog: {
title: 'Reward User Game Coupons'
},
form: {
type: 'Type',
gameCoupon: 'Game Coupon',
remarks: 'Remarks'
},
placeholder: {
select: 'Please select',
gameCouponQuantity: 'Game coupon quantity to reward',
remarks: 'Reward remarks'
},
action: {
cancel: 'Cancel',
submit: 'Submit'
},
validation: {
enterAmount: 'Please enter the game coupon quantity',
amountRange: 'The number range is 0~9999999 with up to two decimal places',
selectType: 'Please select a type'
}
},
addOtherRecharge: {
dialog: {
title: 'Add Offline Recharge ({origin})'
@ -1038,6 +1103,26 @@ export default {
createTime: 'Created At'
}
},
userRegistrationOverviewCharts: {
dialog: {
title: 'User Registration Overview'
},
placeholder: {
timeType: 'Time Type',
selectDate: 'Select Date'
},
summary: {
total: 'Total'
},
queryType: {
day: 'Day',
month: 'Month',
year: 'Year'
},
tooltip: {
quantity: 'Count'
}
},
userTable: {
filter: {
notDeleted: 'Active',
@ -3609,6 +3694,9 @@ export default {
}
},
goldRunningWater: {
dialog: {
title: 'User Gold Transaction Records'
},
filter: {
system: 'System',
type: 'Type',
@ -3650,6 +3738,25 @@ export default {
crossYearNotAllowed: 'Cross-year queries are not allowed.'
}
},
ipDeviceHandle: {
dialog: {
title: 'IP Device Control'
},
form: {
action: 'Action'
},
option: {
noRestriction: 'No Restriction',
addToBlacklist: 'Add to Blacklist',
addToWhitelist: 'Add to Whitelist'
},
action: {
submit: 'Submit'
},
validation: {
required: 'Required field cannot be empty'
}
},
userDevice: {
loading: 'Loading',
filter: {

View File

@ -953,6 +953,27 @@ export default {
other: '其他'
}
},
editUserGoldCoinDeductionForm: {
dialog: {
title: '扣除用户金币'
},
form: {
gold: '金币',
remarks: '备注'
},
placeholder: {
goldQuantity: '需要扣除的金币数量',
remarks: '扣除金币的原因'
},
action: {
cancel: '取消',
submit: '提交'
},
validation: {
enterAmount: '请输入金额',
amountRange: 'double范围0~9999999小数最多两位'
}
},
editUserDiamondRewardForm: {
dialog: {
title: '奖励用户钻石'
@ -972,6 +993,26 @@ export default {
amountRange: 'double范围0~9999999小数最多两位'
}
},
editDiamondCoinDeductionForm: {
dialog: {
title: '扣除用户钻石'
},
form: {
remarks: '备注'
},
placeholder: {
diamondQuantity: '需要扣除的钻石数量',
reason: '扣除钻石的原因'
},
action: {
cancel: '取消',
submit: '提交'
},
validation: {
enterAmount: '请输入金额',
amountRange: 'double范围0~9999999小数最多两位'
}
},
editUserGameCouponDeductionForm: {
dialog: {
title: '扣除用户游戏券'
@ -993,6 +1034,30 @@ export default {
amountRange: 'double范围0~9999999小数最多两位'
}
},
editUserGameCouponRewardForm: {
dialog: {
title: '奖励用户游戏券'
},
form: {
type: '类型',
gameCoupon: '游戏券',
remarks: '备注'
},
placeholder: {
select: '请选择',
gameCouponQuantity: '需要奖励的游戏券数量',
remarks: '奖励备注'
},
action: {
cancel: '取消',
submit: '提交'
},
validation: {
enterAmount: '请输入游戏券数量',
amountRange: 'double范围0~9999999小数最多两位',
selectType: '请选择类型'
}
},
addOtherRecharge: {
dialog: {
title: '添加线下充值({origin}'
@ -1037,6 +1102,26 @@ export default {
createTime: '创建时间'
}
},
userRegistrationOverviewCharts: {
dialog: {
title: '用户注册情况'
},
placeholder: {
timeType: '时间类型',
selectDate: '选择日期'
},
summary: {
total: '总额'
},
queryType: {
day: '天',
month: '月',
year: '年'
},
tooltip: {
quantity: '数量'
}
},
userTable: {
filter: {
notDeleted: '未注销',
@ -3606,6 +3691,9 @@ export default {
}
},
goldRunningWater: {
dialog: {
title: '用户金币流水'
},
filter: {
system: '系统',
type: '类型',
@ -3647,6 +3735,25 @@ export default {
crossYearNotAllowed: '不允许跨年查询'
}
},
ipDeviceHandle: {
dialog: {
title: 'IP设备管控'
},
form: {
action: '操作'
},
option: {
noRestriction: '不限制',
addToBlacklist: '加入黑名单',
addToWhitelist: '加入白名单'
},
action: {
submit: '提交'
},
validation: {
required: '必填字段不可为空'
}
},
userDevice: {
loading: '加载中',
filter: {