feat: 语言切换功能页面推进
This commit is contained in:
parent
d20e922a2c
commit
bbe82fe55a
@ -10,7 +10,8 @@
|
||||
- 本文件中的菜单层级不默认限制为“父级 > 子级”两层,若实际菜单存在三级结构,则按真实父链整理
|
||||
- 路由是否记为独立菜单,先以原始接口返回为准;若入口页再直接引用同目录多个 `.vue` 文件,则这些文件记为页面内功能文件,不单独记成并列主路由
|
||||
- 后续所有线程领取新任务前,除了读取 `线程协作.md`、`翻译进度.md`、`翻译清单.md`,还应先读取本文件
|
||||
- 其他文档不再重复维护完整主路由树,最多保留摘要并引用本文件
|
||||
- 其他文档不再重复维护完整主路由树或已完成主要路由索引,最多保留引用本文件的说明
|
||||
- “当前已完成主要路由摘要”只在本文件维护;完成主要路由页面时必须同步更新本文件,不再去 `docs/i18n/翻译清单.md` 维护第二份主路由索引
|
||||
- 下方保留原始接口返回,顶部摘要用于实际执行
|
||||
|
||||
### 全线程统一优先级
|
||||
@ -57,7 +58,7 @@
|
||||
|
||||
### 当前进行中的主要路由
|
||||
|
||||
- 当前无进行中主要路由
|
||||
- 当前无
|
||||
|
||||
### 当前跨已完成页面的公共组件联动复查
|
||||
|
||||
@ -441,19 +442,56 @@
|
||||
- 区域关联支付国家 / Region-Payment Country Relations
|
||||
- 路由别名:`region:pay:country`
|
||||
- 路径:`cnf/pay/region-relation/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/pay/region-relation/index.vue`
|
||||
- 页面私有组件状态:无页面私有组件
|
||||
- 直接公共组件复核:
|
||||
- `src/components/Pagination/index.vue`:复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 开通支付国家 / Enabled Payment Countries
|
||||
- 路由别名:`open:pay:country`
|
||||
- 路径:`cnf/pay/country/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/pay/country/index.vue`
|
||||
- `src/views/cnf/pay/country/associated-channels.vue`
|
||||
- `src/views/cnf/pay/country/country-select.vue`
|
||||
- 页面私有组件状态:
|
||||
- `src/views/cnf/pay/country/associated-channels.vue` 已随页面同步完成
|
||||
- `src/views/cnf/pay/country/country-select.vue` 已随页面同步完成
|
||||
- `src/views/cnf/pay/comp/transfer-channel.vue` 历史已完成,本轮复核通过
|
||||
- 直接公共组件复核:
|
||||
- `src/components/Pagination/index.vue`:复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 应用管理 / Application Management
|
||||
- 路由别名:`pay:application`
|
||||
- 路径:`cnf/pay/application/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/pay/application/index.vue`
|
||||
- `src/views/cnf/pay/application/app-navigation.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/index.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/order-manager/index.vue`
|
||||
- 页面私有组件状态:
|
||||
- 已随页面同步完成或复核
|
||||
- 直接公共组件复核:
|
||||
- `src/components/Pagination/index.vue`:复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- 备注:`order-manager` 当前在 tab 配置中被注释,本轮仅处理其可见开发中提示与未使用 prompt 文案;注释掉的历史表格按规则保留
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- Google/Apple-V2 / Google/Apple V2
|
||||
- 路由别名:`google:apple:product:config`
|
||||
- 路径:`cnf/product-v2/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/product-v2/index.vue`
|
||||
- 页面私有组件状态:无页面私有组件
|
||||
- 直接公共组件复核:
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 活动配置 / Activity Configuration
|
||||
- 路由别名:`Activity:Config`
|
||||
- 状态:部分完成
|
||||
@ -481,7 +519,11 @@
|
||||
- 活动规则配置 / Activity Rule Configuration
|
||||
- 路由别名:`Props:Activity:Rule:Config`
|
||||
- 路径:`props/props-activity-rule-config/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/props/props-activity-rule-config/index.vue`
|
||||
- `src/views/props/props-activity-rule-config/edit-rule-drawer.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/*.vue`
|
||||
- 状态:已完成
|
||||
- 消息推送 / Message Push
|
||||
- 路由别名:`MessageManagerPush`
|
||||
- 路径:`message/push/index`
|
||||
@ -565,10 +607,118 @@
|
||||
- 状态:已完成
|
||||
- 用户银行 / User Bank
|
||||
- 路由别名:`UserBankBalance`
|
||||
- 状态:待处理
|
||||
- 状态:部分完成
|
||||
- 用户银行流水 / User Bank Transactions
|
||||
- 路由别名:`UserBankRunningWater`
|
||||
- 路径:`user/bank-balance/running-water/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/running-water/index.vue`
|
||||
- 页面私有组件状态:无同目录私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核通过
|
||||
- 状态:已完成(线程三,2026-05-07)
|
||||
- 用户银行账户 / User Bank Accounts
|
||||
- 路由别名:`UserBankBalance`
|
||||
- 路径:`user/bank-balance/table/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/table/index.vue`
|
||||
- `src/views/user/bank-balance/table/form-edit.vue`
|
||||
- `src/views/user/bank-balance/table/running-water.vue`
|
||||
- 页面私有组件状态:已随页面同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核通过
|
||||
- 状态:已完成(线程三,2026-05-07)
|
||||
- 美金兑换金币记录 / USD-to-Gold Exchange Records
|
||||
- 路由别名:`UserBankWithdrawGoldApply`
|
||||
- 路径:`user/bank-balance/withdraw-gold-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-gold-apply/index.vue`
|
||||
- 页面私有组件状态:当前目录仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件复核:
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 现金提现申请 / Cash Withdrawal Applications
|
||||
- 路由别名:`UserBankWithdrawMoneyApply`
|
||||
- 路径:`user/bank-balance/withdraw-money-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 页面私有组件状态:
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:复核通过
|
||||
- `src/components/upload-image/index.vue`:复核通过,仅剩注释中文
|
||||
- 备注:
|
||||
- 复制银行卡信息时使用的剪贴板文本中文标签按“不改复制内容结构”保留,不属于页面可见展示文案
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 自动支付工资凭据 / Automatic Salary Payment Vouchers
|
||||
- 路由别名:`AutomaticSalaryPaymentRecord`
|
||||
- 路径:`user/bank-balance/auto-salary-pay-record/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/index.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/policy-details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/remark-details-drawer.vue`
|
||||
- 页面私有组件状态:
|
||||
- `details-drawer.vue`、`policy-details-drawer.vue`、`remark-details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:复核通过
|
||||
- `src/components/data/PropsRow/index.vue`:复核通过,仅剩注释中文
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 用户工资钻石 / User Salary Diamonds
|
||||
- 路由别名:`UserSalaryDiamondBalance`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/user/salary-diamond-balance/running-water/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/form-edit.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/running-water.vue`
|
||||
- 页面私有组件状态:
|
||||
- `table/form-edit.vue`、`table/running-water.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 钻石提现申请 / Diamond Withdrawal Applications
|
||||
- 路由别名:`UserBankWithdrawDiamondApply`
|
||||
- 路径:`user/bank-balance/withdraw-diamond-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/details-drawer.vue`
|
||||
- 页面私有组件状态:
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/upload-image/index.vue`:本轮复核中文扫描无命中
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
- 钻石兑换金币记录 / Diamond-to-Gold Exchange Records
|
||||
- 路由别名:`UserBankDiamondWithdrawGoldApply`
|
||||
- 路径:`user/bank-balance/diamond-withdraw-gold-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue`
|
||||
- 页面私有组件状态:
|
||||
- 当前目录仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- `src/components/data/AccountInput/index.vue`:复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
|
||||
- 语音房间 / Voice Rooms
|
||||
- 路由别名:`VoiceRoom`
|
||||
@ -659,11 +809,26 @@
|
||||
- 道具赠送 / Prop Gift
|
||||
- 路由别名:`PropsSendTool`
|
||||
- 路径:`props/props-send-tool/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/props/props-send-tool/index.vue`
|
||||
- `src/views/props/props-send-tool/send-props.vue`
|
||||
- `src/views/props/props-send-tool/send-badge.vue`
|
||||
- `src/views/props/props-send-tool/send-ticket.vue`
|
||||
- 页面私有组件状态:已随页面同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/data/PropsSourceSelectPopover/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 状态:已完成(线程二,2026-05-07)
|
||||
- 道具商店 / Prop Store
|
||||
- 路由别名:`props:store`
|
||||
- 路径:`props/props-store/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/props/props-store/index.vue`
|
||||
- `src/views/props/props-store/form-edit.vue`
|
||||
- 页面私有组件状态:`form-edit.vue` 已随入口页同步完成
|
||||
- 直接公共组件复核:
|
||||
- `src/components/Pagination/index.vue`:复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- 状态:已完成(线程一,2026-05-07)
|
||||
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 路由别名:`team:manaber`
|
||||
@ -692,7 +857,15 @@
|
||||
- BD工作统计 / BD Work Statistics
|
||||
- 路由别名:`WorkStatistics`
|
||||
- 路径:`team/work-statistics/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/team/work-statistics/index.vue`
|
||||
- 页面私有组件状态:无同目录私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/SelectSystemRegion/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 状态:已完成(线程二,2026-05-07)
|
||||
- BD列表 / BD List
|
||||
- 路由别名:`BusinessDevelopment`
|
||||
- 路径:`team/business-development/index`
|
||||
@ -711,7 +884,21 @@
|
||||
- 主播成员 / Broadcaster Members
|
||||
- 路由别名:`team:member`
|
||||
- 路径:`team/team-member/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/team/team-member/index.vue`
|
||||
- `src/views/team/team-member/team-member-add.vue`
|
||||
- `src/views/team/team-member/team-member-change.vue`
|
||||
- `src/views/team/team-member/team-member-remark.vue`
|
||||
- `src/views/team/team-member/team-member-target-reset.vue`
|
||||
- 页面私有组件状态:
|
||||
- 同目录 4 个私有弹窗/抽屉已随入口页同步完成
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue` 历史已完成,本轮复核中文扫描无命中
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/Avatar/index.vue`:本轮复核中文扫描无命中
|
||||
- 状态:已完成(线程二,2026-05-07)
|
||||
- 账单列表 / Bill List
|
||||
- 路由别名:`team:bill`
|
||||
- 路径:`team/team-bill/index`
|
||||
@ -719,7 +906,22 @@
|
||||
- 主播工作 / Broadcaster Work
|
||||
- 路由别名:`team:member:work`
|
||||
- 路径:`team/team-member-work/index`
|
||||
- 状态:待处理
|
||||
- 已完成文件:
|
||||
- `src/views/team/team-member-work/index.vue`
|
||||
- `src/views/team/team-member-work/details-drawer.vue`
|
||||
- `src/views/team/team-member-work/gift-running-water-dialog.vue`
|
||||
- `src/views/team/team-member-work/room-gift-dialog.vue`
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- 页面私有组件状态:同目录 3 个私有弹窗/抽屉与入口页直接引用的 `TeamDetailsDrawer/index.vue` 已随页面同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/data/AccountInput/index.vue`:复核通过
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:复核通过
|
||||
- `src/components/data/GiftHistoryDetailsDrawer/index.vue`:复核通过,仅剩注释中文
|
||||
- `src/components/data/PropsRow/index.vue`:复核通过,仅剩注释中文
|
||||
- `src/components/data/RoomDeatilsDrawer/index.vue`:复核通过
|
||||
- `src/views/common/user_deatils.vue`:复核通过,仅剩注释块中文
|
||||
- `src/components/SysOriginIcon/index.vue`:复核通过
|
||||
- 状态:已完成(线程二,2026-05-07)
|
||||
|
||||
### 当前已完成主要路由摘要
|
||||
|
||||
@ -743,29 +945,75 @@
|
||||
- 数据配置 / Data Configuration
|
||||
- 参数配置 / Parameter Settings
|
||||
- 幸运礼物规则配置 / Lucky Gift Rule Configuration
|
||||
- 国家管理 / Country Management
|
||||
- 幸运礼物规格配置 / Lucky Gift Specification Configuration
|
||||
- 靓号管理(角色) / Special ID Management (Role)
|
||||
- 礼物管理 / Gift Management
|
||||
- IM账号管理 / IM Account Management
|
||||
- Banner管理 / Banner Management
|
||||
- 房间主题管理 / Room Theme Management
|
||||
- 国家管理 / Country Management
|
||||
- 徽章配置管理 / Badge Configuration Management
|
||||
- 表情管理 / Emoji Management
|
||||
- 靓号管理 / Special ID Management
|
||||
- 邀请用户配置 / Invite User Configuration
|
||||
- 游戏列表 / Game List
|
||||
- 运营日志 / Operations Logs
|
||||
- 礼物赠送记录 / Gift Sending Records
|
||||
- 用户道具流水 / User Prop Transactions
|
||||
- 邀请用户 / Invite Users
|
||||
- 幸运礼物送礼记录 / Lucky Gift Sending Records
|
||||
- 用户签到 / User Check-ins
|
||||
- 登录日志 / Login Logs
|
||||
- Ludo飞行棋 / Ludo
|
||||
- CP申请日志 / CP Application Logs
|
||||
- 用户密码日志 / User Password Logs
|
||||
- 内购配置 / In-App Purchase Configuration
|
||||
- 渠道管理 / Channel Management
|
||||
- 厂商管理 / Provider Management
|
||||
- 区域关联支付国家 / Region-Payment Country Relations
|
||||
- 开通支付国家 / Enabled Payment Countries
|
||||
- 应用管理 / Application Management
|
||||
- Google/Apple-V2 / Google/Apple V2
|
||||
- 活动配置 / Activity Configuration
|
||||
- 活动管理 / Activity Management
|
||||
- 活动模版 / Activity Templates
|
||||
- 活动规则配置 / Activity Rule Configuration
|
||||
- 消息推送 / Message Push
|
||||
- APP管理员 / App Administrators
|
||||
- 系统公告管理 / System Notice Management
|
||||
- 金币代理 / Gold Agents
|
||||
- 申请靓号 / Apply for Special ID
|
||||
- App启动页 / App Launch Page
|
||||
- 客服列表 / Customer Service List
|
||||
- 金币余额榜 / Gold Balance Leaderboard
|
||||
- 区域配置 / Region Configuration
|
||||
- 用户银行 / User Bank
|
||||
- 用户银行流水 / User Bank Transactions
|
||||
- 用户银行账户 / User Bank Accounts
|
||||
- 美金兑换金币记录 / USD-to-Gold Exchange Records
|
||||
- 现金提现申请 / Cash Withdrawal Applications
|
||||
- 自动支付工资凭据 / Automatic Salary Payment Vouchers
|
||||
- 用户工资钻石 / User Salary Diamonds
|
||||
- 语音房间 / Voice Rooms
|
||||
- 在线房间 / Online Rooms
|
||||
- 房间资料列表 / Room Profile List
|
||||
- 置顶房间 / Pinned Rooms
|
||||
- 房间黑名单 / Room Blacklist
|
||||
- 家族管理 / Family Management
|
||||
- 家族配置 / Family Configuration
|
||||
- 家族列表 / Family List
|
||||
- 道具管理 / Prop Management
|
||||
- 资源组配置 / Resource Group Configuration
|
||||
- 道具赠送 / Prop Gift
|
||||
- 道具商店 / Prop Store
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 代理钻石政策 / Agent Diamond Policy
|
||||
- BD Lead / BD Lead
|
||||
- 代理政策 / Agent Policy
|
||||
- BD工作统计 / BD Work Statistics
|
||||
- BD列表 / BD List
|
||||
- 家族管理 / Family Management
|
||||
- 家族配置 / Family Configuration
|
||||
- 家族列表 / Family List
|
||||
- 主播成员 / Broadcaster Members
|
||||
- 主播工作 / Broadcaster Work
|
||||
|
||||
### 已部分完成但入口页仍需复核的主要路由
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,8 @@
|
||||
## 文档定位
|
||||
|
||||
- 本文件只负责维护文件级待办、进行中、已完成与当前认领状态
|
||||
- 需要看主要路由的完整父子级结构、路由别名、路径和入口文件时,统一查看 `docs/i18n/主要路由.md`
|
||||
- 需要看主要路由的完整父子级结构、路由别名、路径、入口文件、完成状态与已完成主要路由摘要时,统一查看 `docs/i18n/主要路由.md`
|
||||
- 本文件不再重复维护“已完成主要路由索引”,避免和 `docs/i18n/主要路由.md` 的主路由摘要在多线程写入时漂移
|
||||
- 文档中的英文路由名需要与侧边栏实际语言包 `src/lang/messages/base/menu-en.js` 保持一致;如有差异,以 `menu-en.js` 为准
|
||||
- 注意 `src/lang/messages/en.js` 顶层旧中文 key 会在运行时覆盖 `menu-en.js` 的同名 key;统一路由英文名时需要同步检查并消除这类重复覆盖
|
||||
- 需要看阶段成果、构建验证与时间线时,统一查看 `docs/i18n/翻译进度.md`
|
||||
@ -64,71 +65,9 @@
|
||||
|
||||
### 已完成主要路由索引
|
||||
|
||||
- 详细父子级结构、路由别名、路径与入口文件统一见 `docs/i18n/主要路由.md`
|
||||
- 以下索引已按 `docs/i18n/主要路由.md` 当前父子级顺序同步更新
|
||||
- 系统管理 / System Management
|
||||
- 用户管理 / User Management
|
||||
- 角色管理 / Role Management
|
||||
- 菜单管理 / Menu Management
|
||||
- 资源管理 / Resource Management
|
||||
- App系统 / App System
|
||||
- 版本管理 / Version Management
|
||||
- 请求黑名单 / Request Blacklist
|
||||
- 用户管理 / User Management
|
||||
- 用户列表 / User List(页面本体已完成,直接公共组件待联动复核)
|
||||
- 用户专属礼物制作 / Custom User Gift Creation
|
||||
- 封禁设备列表 / Blocked Device List
|
||||
- 最新登记设备 / Latest Registered Devices
|
||||
- 运营管理 / Operations Management
|
||||
- 营收支出 / Revenue and Expenses
|
||||
- 消费商品订单 / Purchase Orders
|
||||
- 金币收支记录 / Gold Transaction Records
|
||||
- 内购配置 / In-App Purchase Configuration
|
||||
- 渠道管理 / Channel Management
|
||||
- 厂商管理 / Provider Management
|
||||
- 运营日志 / Operations Logs
|
||||
- 礼物赠送记录 / Gift Sending Records
|
||||
- 用户道具流水 / User Prop Transactions
|
||||
- 用户签到 / User Check-ins
|
||||
- 邀请用户 / Invite Users
|
||||
- 幸运礼物送礼记录 / Lucky Gift Sending Records
|
||||
- 登录日志 / Login Logs
|
||||
- CP申请日志 / CP Application Logs
|
||||
- 用户密码日志 / User Password Logs
|
||||
- 数据配置 / Data Configuration
|
||||
- 参数配置 / Parameter Settings
|
||||
- 幸运礼物规则配置 / Lucky Gift Rule Configuration
|
||||
- 幸运礼物规格配置 / Lucky Gift Specification Configuration
|
||||
- 靓号管理(角色) / Special ID Management (Role)
|
||||
- 游戏列表 / Game List
|
||||
- 房间主题管理 / Room Theme Management
|
||||
- 国家管理 / Country Management
|
||||
- IM账号管理 / IM Account Management
|
||||
- 活动配置 / Activity Configuration
|
||||
- 活动管理 / Activity Management
|
||||
- 活动模版 / Activity Templates
|
||||
- 消息推送 / Message Push
|
||||
- APP管理员 / App Administrators
|
||||
- App启动页 / App Launch Page
|
||||
- 客服列表 / Customer Service List
|
||||
- 系统公告管理 / System Notice Management
|
||||
- 金币代理 / Gold Agents
|
||||
- 申请靓号 / Apply for Special ID
|
||||
- 区域配置 / Region Configuration
|
||||
- 语音房间 / Voice Rooms
|
||||
- 在线房间 / Online Rooms
|
||||
- 房间资料列表 / Room Profile List
|
||||
- 置顶房间 / Pinned Rooms
|
||||
- 道具管理 / Prop Management
|
||||
- 资源组配置 / Resource Group Configuration
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 代理钻石政策 / Agent Diamond Policy
|
||||
- BD Lead / BD Lead
|
||||
- 代理政策 / Agent Policy
|
||||
- BD列表 / BD List
|
||||
- 家族管理 / Family Management
|
||||
- 家族配置 / Family Configuration
|
||||
- 家族列表 / Family List
|
||||
- 本段不再重复维护主路由完成索引。
|
||||
- 已完成主要路由摘要、父子级结构、路由别名、路径、入口文件与完成状态,统一以 `docs/i18n/主要路由.md` 为准。
|
||||
- 本文件只继续维护下方“已完成文件平铺清单”、进行中任务、最新同步记录和文件级保留项。
|
||||
|
||||
### 已完成文件平铺清单
|
||||
|
||||
@ -243,6 +182,17 @@
|
||||
- `src/views/team/bd-lead/index.vue`
|
||||
- `src/views/team/bd-lead/add-bd-lead.vue`
|
||||
- `src/views/team/bd-lead/bind-bd.vue`
|
||||
- `src/views/team/work-statistics/index.vue`
|
||||
- `src/views/team/team-member-work/index.vue`
|
||||
- `src/views/team/team-member-work/details-drawer.vue`
|
||||
- `src/views/team/team-member-work/gift-running-water-dialog.vue`
|
||||
- `src/views/team/team-member-work/room-gift-dialog.vue`
|
||||
- `src/views/team/team-member/index.vue`
|
||||
- `src/views/team/team-member/team-member-add.vue`
|
||||
- `src/views/team/team-member/team-member-change.vue`
|
||||
- `src/views/team/team-member/team-member-remark.vue`
|
||||
- `src/views/team/team-member/team-member-target-reset.vue`
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- `src/views/team/components/TeamCreate/index.vue`
|
||||
- `src/views/team/diamond-policy/index.vue`
|
||||
- `src/views/team/diamond-policy/props-form-edit.vue`
|
||||
@ -346,13 +296,522 @@
|
||||
- `src/views/sys/game-config/match/form-edit.vue`
|
||||
- `src/views/sys/game-config/room/index.vue`
|
||||
- `src/views/sys/game-config/room/form-edit.vue`
|
||||
- `src/views/cnf/pay/region-relation/index.vue`
|
||||
- `src/views/cnf/pay/country/index.vue`
|
||||
- `src/views/cnf/pay/country/associated-channels.vue`
|
||||
- `src/views/cnf/pay/country/country-select.vue`
|
||||
- `src/views/cnf/pay/application/index.vue`
|
||||
- `src/views/cnf/pay/application/app-navigation.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/index.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/order-manager/index.vue`
|
||||
- `src/views/cnf/product-v2/index.vue`
|
||||
- `src/views/props/props-store/index.vue`
|
||||
- `src/views/props/props-store/form-edit.vue`
|
||||
- `src/views/user/salary-diamond-balance/running-water/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/form-edit.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/running-water.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 表格展示适配:表头自动换行 + 默认最小宽度补齐
|
||||
- 表格展示适配:表头 `.cell` 高度自适应 + 纵向居中修正
|
||||
- 表单展示适配:标题纵向居中
|
||||
|
||||
## 进行中
|
||||
|
||||
- 当前无进行中任务
|
||||
- 线程一:待分配
|
||||
- 主要路由:钻石提现申请 / Diamond Withdrawal Applications
|
||||
- 路由别名:`UserBankWithdrawDiamondApply`
|
||||
- 路径:`user/bank-balance/withdraw-diamond-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/details-drawer.vue`
|
||||
- 直接公共组件复核:
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- `src/components/data/AccountInput/index.vue`
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`
|
||||
- `src/components/upload-image/index.vue`
|
||||
- 验证结果:
|
||||
- 中文残留仅剩银行卡复制文本,不属于可见展示文案
|
||||
- 语言文件语法校验通过
|
||||
- `npm run build:prod` 通过,仍为项目既有 `17` 条 warning
|
||||
- 说明:
|
||||
- 仅处理可见静态展示文案,不改接口参数、查询字段、路由路径、权限码、审核状态实际值、接收方式实际值、银行卡类型实际值、复制内容结构或接口返回动态数据
|
||||
|
||||
- 线程二:当前无进行中任务,待分配
|
||||
|
||||
- 线程三:当前无进行中任务,待分配
|
||||
|
||||
## 2026-05-07 最新同步
|
||||
|
||||
- 线程二已完成:主要路由页面 / 主播中心 / 主播成员
|
||||
- 路由别名:`team:member`
|
||||
- 路径:`team/team-member/index`
|
||||
- 已完成文件:
|
||||
- `src/views/team/team-member/index.vue`
|
||||
- `src/views/team/team-member/team-member-add.vue`
|
||||
- `src/views/team/team-member/team-member-change.vue`
|
||||
- `src/views/team/team-member/team-member-remark.vue`
|
||||
- `src/views/team/team-member/team-member-target-reset.vue`
|
||||
- 页面私有组件状态:
|
||||
- 同目录 4 个私有弹窗/抽屉已随入口页同步完成
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue` 历史已完成,本轮复核中文扫描无命中
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/Avatar/index.vue`:本轮复核中文扫描无命中
|
||||
- 已补充页面级语言 key:`pages.teamMember`
|
||||
- 验证结果:语言文件语法校验通过;本轮源码未使用 `$te`;`src/views/team/team-member/*.vue` 中文残留仅剩注释或注释掉的历史代码块;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 未修改:接口参数、查询字段、路由路径、权限码、团队/成员/代理 ID、成员角色实际值、批量删除提交值、目标重置提交值或接口返回动态数据
|
||||
- 状态:已完成,线程二已切回待分配
|
||||
|
||||
- 线程一已完成:主要路由页面 / 钻石提现申请
|
||||
- 路由别名:`UserBankWithdrawDiamondApply`
|
||||
- 路径:`user/bank-balance/withdraw-diamond-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/details-drawer.vue`
|
||||
- 页面私有组件状态:
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/upload-image/index.vue`:本轮复核中文扫描无命中
|
||||
- 已补充页面级语言 key:`pages.userBankWithdrawDiamondApply`
|
||||
- 验证结果:语言文件语法校验通过;本轮源码未使用 `$te`;`src/views/user/bank-balance/withdraw-diamond-apply/*.vue` 中文残留仅剩银行卡复制文本;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
- 模块预检查结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 为入口页直接渲染私有抽屉,纳入同轮处理
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue`、`src/components/upload-image/index.vue` 纳入本轮复核
|
||||
- 说明:
|
||||
- 仅处理可见静态展示文案,不改接口参数、查询字段、路由路径、权限码、审核状态实际值、接收方式实际值、银行卡类型实际值、复制内容结构或接口返回动态数据
|
||||
|
||||
- 线程二已新认领:主要路由页面 / 主播中心 / 主播成员
|
||||
- 路由别名:`team:member`
|
||||
- 路径:`team/team-member/index`
|
||||
- 已认领文件:
|
||||
- `src/views/team/team-member/index.vue`
|
||||
- `src/views/team/team-member/team-member-add.vue`
|
||||
- `src/views/team/team-member/team-member-change.vue`
|
||||
- `src/views/team/team-member/team-member-remark.vue`
|
||||
- `src/views/team/team-member/team-member-target-reset.vue`
|
||||
- 模块预检查结果:
|
||||
- 已按模块级规则核对入口页 import 与目录文件列表
|
||||
- 入口页直接渲染同目录 4 个私有弹窗/抽屉,纳入同轮处理
|
||||
- 入口页直接渲染的 `src/views/team/components/TeamDetailsDrawer/index.vue` 历史已完成,本轮复核
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue`、`src/components/data/Avatar/index.vue` 纳入本轮复核
|
||||
- 说明:
|
||||
- 仅处理可见静态展示文案,不改接口参数、查询字段、路由路径、权限码、团队/成员/代理 ID、成员角色实际值、批量删除提交值、目标重置提交值或接口返回动态数据
|
||||
- 领取时线程二状态:进行中;本轮随后已完成,见上方完成记录
|
||||
|
||||
- 线程一已完成:主要路由页面 / 钻石兑换金币记录
|
||||
- 路由别名:`UserBankDiamondWithdrawGoldApply`
|
||||
- 路径:`user/bank-balance/diamond-withdraw-gold-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- 当前目录仅包含入口页,无同目录私有组件
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue` 复核通过
|
||||
- 本模块中文残留扫描通过
|
||||
- 说明:
|
||||
- 新增 `pages.userBankDiamondWithdrawGoldApply`
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、`amountType` 实际值、`acceptAccount` 实际值或接口返回动态数据
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一本轮完成后切回待分配
|
||||
|
||||
- 线程一已新认领:主要路由页面 / 钻石兑换金币记录
|
||||
- 路由别名:`UserBankDiamondWithdrawGoldApply`
|
||||
- 路径:`user/bank-balance/diamond-withdraw-gold-apply/index`
|
||||
- 已认领文件:
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue`
|
||||
- 模块预检查结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- 当前目录仅包含入口页,无同目录私有组件
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue` 纳入本轮复核
|
||||
- 说明:
|
||||
- 仅处理可见静态展示文案,不改接口参数、查询字段、路由路径、权限码、`amountType` 实际值、`acceptAccount` 实际值或接口返回动态数据
|
||||
|
||||
- 线程一已完成:主要路由页面 / 自动支付工资凭据
|
||||
- 路由别名:`AutomaticSalaryPaymentRecord`
|
||||
- 路径:`user/bank-balance/auto-salary-pay-record/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/index.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/policy-details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/remark-details-drawer.vue`
|
||||
- 模块复核结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- `details-drawer.vue`、`policy-details-drawer.vue`、`remark-details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件 `src/components/Pagination/index.vue`、`src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue` 复核通过
|
||||
- `src/components/data/PropsRow/index.vue` 中文命中仅为注释,不属于可见展示文案
|
||||
- 本模块递归中文扫描通过
|
||||
- 说明:
|
||||
- 新增 `pages.automaticSalaryPaymentRecord`
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、政策值、布尔值或接口返回动态数据
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一本轮完成后切回待分配
|
||||
|
||||
- 线程一已新认领:主要路由页面 / 自动支付工资凭据
|
||||
- 路由别名:`AutomaticSalaryPaymentRecord`
|
||||
- 路径:`user/bank-balance/auto-salary-pay-record/index`
|
||||
- 已认领文件:
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/index.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/policy-details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/remark-details-drawer.vue`
|
||||
- 模块预检查结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- `details-drawer.vue`、`policy-details-drawer.vue`、`remark-details-drawer.vue` 为入口页直接渲染私有抽屉,纳入同轮处理
|
||||
- 直接公共组件 `src/components/Pagination/index.vue`、`src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue`、`src/components/data/PropsRow/index.vue` 纳入本轮复核
|
||||
- 说明:
|
||||
- 仅处理可见静态展示文案,不改接口参数、查询字段、路由路径、权限码、政策值、布尔值或接口返回动态数据
|
||||
|
||||
- 线程一已完成:主要路由页面 / 美金兑换金币记录
|
||||
- 路由别名:`UserBankWithdrawGoldApply`
|
||||
- 路径:`user/bank-balance/withdraw-gold-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-gold-apply/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表;当前目录仅包含 `index.vue`
|
||||
- 筛选区、日期范围、表格列头、创建日期文案、加载更多与已加载全部文案已国际化
|
||||
- `GOLD`、`FREIGHT` 仅在页面展示层做本地映射,未修改查询值、接口参数与接口返回动态数据
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue` 复核通过
|
||||
- `src/lang/messages/pages/en.js`、`src/lang/messages/pages/zh.js` 已补 `pages.userBankWithdrawGoldApply`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一已新认领:主要路由页面 / 现金提现申请
|
||||
- 路由别名:`UserBankWithdrawMoneyApply`
|
||||
- 路径:`user/bank-balance/withdraw-money-apply/index`
|
||||
- 已认领文件:
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 模块预检查结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 为入口页直接渲染私有抽屉,纳入同轮处理
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue`、`src/components/UploadImage/index.vue` 纳入本轮复核
|
||||
- 说明:
|
||||
- 仅处理可见静态展示文案,不改接口参数、查询字段、路由路径、权限码、状态实际值、复制内容结构或接口返回动态数据
|
||||
- 线程一当前状态:进行中
|
||||
|
||||
- 线程一已完成:主要路由页面 / 现金提现申请
|
||||
- 路由别名:`UserBankWithdrawMoneyApply`
|
||||
- 路径:`user/bank-balance/withdraw-money-apply/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 模块复核结果:
|
||||
- 已按模块级规则核对入口页与目录文件列表
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件 `src/components/SysOriginIcon/index.vue`、`src/components/data/AccountInput/index.vue`、`src/components/data/UserInfo/UserTableExhibit/index.vue` 复核通过
|
||||
- `src/components/upload-image/index.vue` 中文命中仅为文件注释
|
||||
- 本模块递归中文扫描后,仅剩复制银行卡信息时使用的剪贴板文本中文,不属于页面可见展示文案
|
||||
- 说明:
|
||||
- 新增 `pages.userBankWithdrawMoneyApply`
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、状态实际值、复制内容结构、导出参数或接口返回动态数据
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一本轮完成后切回待分配
|
||||
|
||||
- 线程二已完成:主要路由页面 / 主播中心 / 主播工作
|
||||
- 路由别名:`team:member:work`
|
||||
- 路径:`team/team-member-work/index`
|
||||
- 已完成文件:
|
||||
- `src/views/team/team-member-work/index.vue`
|
||||
- `src/views/team/team-member-work/details-drawer.vue`
|
||||
- `src/views/team/team-member-work/gift-running-water-dialog.vue`
|
||||
- `src/views/team/team-member-work/room-gift-dialog.vue`
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- 页面私有组件状态:
|
||||
- 同目录 3 个私有弹窗/抽屉与入口页直接引用的 `TeamDetailsDrawer/index.vue` 已随页面同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/GiftHistoryDetailsDrawer/index.vue`:历史已完成,本轮复核仅剩注释中文
|
||||
- `src/components/data/PropsRow/index.vue`:历史已完成,本轮复核仅剩注释中文
|
||||
- `src/components/data/RoomDeatilsDrawer/index.vue`:历史已完成,本轮复核无新增可见中文
|
||||
- `src/views/common/user_deatils.vue`:历史已完成,本轮复核仅剩注释块中文
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、表格、工作详情抽屉、礼物流水弹窗、房间流水弹窗与团队详情抽屉静态展示文本国际化
|
||||
- 新增 `pages.teamMemberWork` 与 `pages.teamDetailsDrawer`
|
||||
- 递归中文扫描后仅剩模板注释和既有公共组件注释块,不属于可见展示文案
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、分页字段、礼物流水类型实际值、团队/成员/代理 ID、系统来源、工资结算模式实际值、账单状态实际值或接口返回内容
|
||||
- 验证结果:语言文件语法检查通过;本轮源码未使用 `$te`;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程二已切回待分配
|
||||
|
||||
- 线程三已新认领:主要路由页面 / 运营管理 / 用户银行 / 用户银行账户
|
||||
- 路由别名:`UserBankBalance`
|
||||
- 路径:`user/bank-balance/table/index`
|
||||
- 认领范围:
|
||||
- `src/views/user/bank-balance/table/index.vue`
|
||||
- `src/views/user/bank-balance/table/form-edit.vue`
|
||||
- `src/views/user/bank-balance/table/running-water.vue`
|
||||
- 页面私有组件状态:
|
||||
- `form-edit.vue`、`running-water.vue` 已纳入本轮同步处理
|
||||
- 直接公共组件复核:
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- `src/components/data/AccountInput/index.vue`
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/table/index.vue`
|
||||
- `src/views/user/bank-balance/table/form-edit.vue`
|
||||
- `src/views/user/bank-balance/table/running-water.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成账户列表、发送/扣除、转账、创建账户、导入数据、账户流水弹窗静态展示文案国际化
|
||||
- 收入/支出与 `userBankWaterEvent` 仅在页面展示层做本地翻译映射,接口参数、查询字段、分页字段、提交值与接口返回账户/流水数据保持原样
|
||||
- 语言文件新增 `pages.userBankAccounts`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程三已切回待分配
|
||||
|
||||
- 线程二已新认领:主要路由页面 / 主播中心 / 主播工作
|
||||
- 路由别名:`team:member:work`
|
||||
- 路径:`team/team-member-work/index`
|
||||
- 认领范围:
|
||||
- `src/views/team/team-member-work/index.vue`
|
||||
- `src/views/team/team-member-work/details-drawer.vue`
|
||||
- `src/views/team/team-member-work/gift-running-water-dialog.vue`
|
||||
- `src/views/team/team-member-work/room-gift-dialog.vue`
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- 页面私有组件状态:
|
||||
- 同目录 3 个私有弹窗/抽屉与入口页直接引用的 `TeamDetailsDrawer/index.vue` 已纳入本轮同步处理
|
||||
- 直接公共组件复核:
|
||||
- `src/components/data/AccountInput/index.vue`
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`
|
||||
- `src/components/data/GiftHistoryDetailsDrawer/index.vue`
|
||||
- `src/components/data/PropsRow/index.vue`
|
||||
- `src/components/data/RoomDeatilsDrawer/index.vue`
|
||||
- `src/views/common/user_deatils.vue`
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- 状态:领取时进行中;本轮随后已完成,见上方完成记录
|
||||
|
||||
- 线程三已完成:主要路由页面 / 运营管理 / 用户银行 / 用户银行流水
|
||||
- 路由别名:`UserBankRunningWater`
|
||||
- 路径:`user/bank-balance/running-water/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/bank-balance/running-water/index.vue`
|
||||
- 页面私有组件状态:无同目录私有组件
|
||||
- 直接公共组件复核:
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- `src/components/data/AccountInput/index.vue`
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、日期范围、搜索按钮、金额汇总提示、表格加载文案、表格列头、加载更多、全部加载完成、收款人/付款人标识国际化
|
||||
- 收入/支出与 `userBankWaterEvent` 仅在页面展示层做本地翻译映射,接口参数、查询字段、分页字段、实际常量值与接口返回流水数据保持原样
|
||||
- 语言文件新增 `pages.userBankRunningWater`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程三已切回待分配
|
||||
|
||||
- 线程一已完成:主要路由页面 / 运营管理 / 用户工资钻石
|
||||
- 路由别名:`UserSalaryDiamondBalance`
|
||||
- 路径:`user/salary-diamond-balance/table/index`
|
||||
- 已完成文件:
|
||||
- `src/views/user/salary-diamond-balance/running-water/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/form-edit.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/running-water.vue`
|
||||
- 页面私有组件状态:
|
||||
- `table/form-edit.vue`、`table/running-water.vue` 已随入口页同步完成
|
||||
- 直接公共组件复核:
|
||||
- `src/components/Pagination/index.vue`
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- `src/components/data/AccountInput/index.vue`
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、表格列头、弹窗标题、表单标签、placeholder、按钮与校验提示国际化
|
||||
- 收入/支出、事件名称与转账标签仅在页面展示层做本地翻译映射,未修改常量值、查询字段、提交值或接口返回动态数据
|
||||
- 递归中文扫描后仅剩注释,不属于可见展示文案
|
||||
- 已补充 `pages.userSalaryDiamond`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
|
||||
- 线程一已完成:主要路由页面 / 道具管理 / 道具商店
|
||||
- 路由别名:`props:store`
|
||||
- 路径:`props/props-store/index`
|
||||
- 已完成文件:
|
||||
- `src/views/props/props-store/index.vue`
|
||||
- `src/views/props/props-store/form-edit.vue`
|
||||
- 同步复核:
|
||||
- `src/components/Pagination/index.vue`
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、展开详情、表格列头、上下架展示、道具类型/付费类型展示映射、按钮、弹窗标题、表单标签、placeholder、校验提示、贵族能力字段与资源更换按钮国际化
|
||||
- 道具类型、付费类型、有效天数、上下架、贵族类型等实际 `value` 均保持不变,仅做展示层映射
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、资源 ID、接口返回资源名称、资源图片、SVGA 地址或提交值
|
||||
- 页面私有组件状态:`src/views/props/props-store/form-edit.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 验证结果:`src/views/props/props-store/*.vue` 中文残留扫描通过;`src` 中无 `$te(` 命中;语言文件语法检查通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
|
||||
- 线程二已完成:主要路由页面 / 主播中心 / BD工作统计
|
||||
- 路由别名:`WorkStatistics`
|
||||
- 路径:`team/work-statistics/index`
|
||||
- 已完成文件:
|
||||
- `src/views/team/work-statistics/index.vue`
|
||||
- 页面私有组件状态:无同目录私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/SelectSystemRegion/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 模块复核结果:
|
||||
- 筛选区、日期范围、筛选时间汇总、表格加载文案与统计表头已国际化
|
||||
- 新增 `pages.workStatistics`
|
||||
- `src/views/team/work-statistics/index.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、排序值、分页字段、用户 ID / 短账号查询值、区域值、系统值与接口返回统计数据保持原样
|
||||
- 验证结果:语言文件语法校验通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程二已切回待分配
|
||||
|
||||
- 线程二已完成:主要路由页面 / 道具管理 / 道具赠送
|
||||
- 路由别名:`PropsSendTool`
|
||||
- 路径:`props/props-send-tool/index`
|
||||
- 已完成文件:
|
||||
- `src/views/props/props-send-tool/index.vue`
|
||||
- `src/views/props/props-send-tool/send-props.vue`
|
||||
- `src/views/props/props-send-tool/send-badge.vue`
|
||||
- `src/views/props/props-send-tool/send-ticket.vue`
|
||||
- 模块复核结果:
|
||||
- 赠送道具、赠送徽章、赠送道具券三块表单的标题、表单标签、placeholder、按钮、校验提示、贵族来源展示与无效短账号提示已国际化
|
||||
- 道具类型、道具券类型、徽章类型仅在页面展示层按 value 做本地翻译映射,未修改 `propsTypes`、`propsTicket`、`badgeTypes` 常量值
|
||||
- 接口参数、路由路径、权限码、表单提交字段、道具/徽章/道具券实际类型值、贵族来源实际值、资源 ID、接收人提交内容、接口返回资源名称与接口错误内容保持原样
|
||||
- `src/views/props/props-send-tool/**/*.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 页面私有组件状态:
|
||||
- `send-props.vue`、`send-badge.vue`、`send-ticket.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/data/PropsSourceSelectPopover/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 验证结果:
|
||||
- 语言文件语法校验通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程二已切回待分配
|
||||
|
||||
- 线程三已完成:主要路由页面 / 运营管理 / 活动配置 / 活动规则配置
|
||||
- 路由别名:`Props:Activity:Rule:Config`
|
||||
- 路径:`props/props-activity-rule-config/index`
|
||||
- 已完成文件:
|
||||
- `src/views/props/props-activity-rule-config/index.vue`
|
||||
- `src/views/props/props-activity-rule-config/edit-rule-drawer.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/crystal.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/first-charge-reward.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/game-fruit.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/game-weekly-tasks.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/input-quantity-mark.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/input-quantity.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/lucky-box.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成页面筛选区、卡片操作、规则信息、资源信息、删除确认、编辑抽屉、子规则表单、上传提示、placeholder、按钮与校验提示国际化
|
||||
- 活动类型与上下架采用本地展示映射,活动类型 `value`、布尔值、表单提交字段、资源组/规则接口返回动态数据保持原样
|
||||
- `src/views/props/props-activity-rule-config/**/*.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 页面私有组件状态:`edit-rule-drawer.vue` 与 `components/*.vue` 已随页面同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/AssociatedResources/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/PropsRow/index.vue`:历史已完成,本轮复核通过,中文命中仅剩注释
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 验证结果:语言文件语法随构建校验通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程三已切回待分配
|
||||
|
||||
- 线程一已完成:主要路由页面 / 运营管理 / 内购配置 / Google/Apple-V2
|
||||
- 路由别名:`google:apple:product:config`
|
||||
- 路径:`cnf/product-v2/index`
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/product-v2/index.vue`
|
||||
- 同步复核:
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、搜索/添加按钮、表格加载文案、表格列头、状态展示、弹窗标题、表单标签、placeholder、按钮与校验提示国际化
|
||||
- 上下架采用本地展示映射,`true/false` 实际值保持不变
|
||||
- 平台 `AppStore`、`Google`、`Huawei` 等实际值保持不变,仅保留展示原文
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、平台实际值、上下架实际值、区域/系统接口返回动态数据或提交值
|
||||
- 页面私有组件状态:`src/views/cnf/product-v2` 目录当前仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 验证结果:`src/views/cnf/product-v2/index.vue` 中文残留扫描通过;`src` 中无 `$te(` 命中;语言文件语法检查通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
|
||||
- 线程一已完成:主要路由页面 / 运营管理 / 内购配置 / 应用管理
|
||||
- 路由别名:`pay:application`
|
||||
- 路径:`cnf/pay/application/index`
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/pay/application/index.vue`
|
||||
- `src/views/cnf/pay/application/app-navigation.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/index.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/order-manager/index.vue`
|
||||
- 同步复核:
|
||||
- `src/components/Pagination/index.vue`
|
||||
- `src/components/SysOriginIcon/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成应用卡片操作下拉、支付链接、编辑、创建应用、创建时间、返回按钮、商品管理 tab、筛选区、表格列头、商品编辑弹窗、按钮、placeholder 与校验提示国际化
|
||||
- 商品类型与上下架采用本地展示映射,`GOLD`、`FREIGHT_GOLD`、`FREIGHT_GOLD_SUPER`、`true/false` 实际值保持不变
|
||||
- `order-manager` 当前在 tab 配置中被注释,本轮仅处理其可见开发中提示与未使用 prompt 文案;注释掉的历史表格按规则保留
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、商品类型/上下架实际值、应用/国家/区域/渠道接口返回动态数据或提交值
|
||||
- 页面私有组件状态:目录内入口导航、应用卡片、应用编辑、商品管理、商品编辑、商品管理 V2、商品编辑 V2 与订单管理文件已随页面同步完成或复核
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 验证结果:中文残留仅剩注释、注释掉的历史表格与注释掉的历史表单块;`src` 中无 `$te(` 命中;语言文件语法检查通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
|
||||
- 线程一已完成:主要路由页面 / 运营管理 / 内购配置 / 开通支付国家
|
||||
- 路由别名:`open:pay:country`
|
||||
- 路径:`cnf/pay/country/index`
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/pay/country/index.vue`
|
||||
- `src/views/cnf/pay/country/associated-channels.vue`
|
||||
- `src/views/cnf/pay/country/country-select.vue`
|
||||
- 同步复核:
|
||||
- `src/views/cnf/pay/comp/transfer-channel.vue`
|
||||
- `src/components/Pagination/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、添加/刷新/关联渠道按钮、表格加载文案、表格列头、行内可点击提示、prompt 标题/按钮/校验提示、关联渠道弹窗、国家选择弹窗、Transfer 标题/按钮国际化
|
||||
- `shelfStatus` 采用本地展示映射,`true/false` 实际值保持不变
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、国家/渠道实际值、开通/删除提交值或接口返回动态数据
|
||||
- 页面私有组件状态:`associated-channels.vue`、`country-select.vue` 已随页面同步完成;`comp/transfer-channel.vue` 历史已完成,本轮复核通过
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:扫描无中文命中
|
||||
- 验证结果:中文残留仅剩注释与注释掉的历史按钮;`src` 中无 `$te(` 命中;语言文件语法检查通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
|
||||
- 线程一已记录兼容问题:
|
||||
- 本项目自定义 i18n 插件不支持 `$te`
|
||||
- 渠道管理 / 厂商管理相关渠道类型展示已改为用 `$t(key)` 返回值是否等于原 key 做兜底判断
|
||||
- 涉及文件:
|
||||
- `src/views/cnf/pay/channel/index.vue`
|
||||
- `src/views/cnf/pay/channel/edit-form.vue`
|
||||
- `src/views/cnf/pay/factory/associated-channel.vue`
|
||||
- 说明:避免页面运行时报 `this.$te is not a function` 导致空白页
|
||||
|
||||
- 线程一已完成:主要路由页面 / 运营管理 / 内购配置 / 区域关联支付国家
|
||||
- 路由别名:`region:pay:country`
|
||||
- 路径:`cnf/pay/region-relation/index`
|
||||
- 已完成文件:
|
||||
- `src/views/cnf/pay/region-relation/index.vue`
|
||||
- 模块复核结果:
|
||||
- 已完成筛选区、搜索/添加/编辑按钮、表格加载文案、表格列头、状态展示、弹窗标题、表单标签、placeholder、校验提示与弹窗按钮国际化
|
||||
- 状态下拉与状态列采用本地展示映射,`productConfigShowcase` 原常量值、接口参数和提交值保持不变
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、布尔提交值或接口返回动态数据
|
||||
- 页面私有组件状态:无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:扫描无中文命中
|
||||
- `src/components/SysOriginIcon/index.vue`:扫描无中文命中
|
||||
- 验证结果:中文残留扫描通过;`src` 中无 `$te(` 命中;语言文件语法检查通过;`npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 状态:已完成,线程一已切回待分配
|
||||
|
||||
## 2026-05-06 最新同步
|
||||
|
||||
@ -938,6 +1397,12 @@
|
||||
- `src/views/tools/other/user-swap-user.vue`
|
||||
- 当前保留注释掉的“用户id不可相同”原样
|
||||
- 原因:该内容仅存在于注释中,不属于可见展示文案
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- 当前保留复制银行卡信息时的中文标签原样
|
||||
- 原因:该内容只用于复制到剪贴板的文本结构,不属于页面可见展示文案;本轮按“不改复制内容结构”保留
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 当前保留复制银行卡信息时的中文标签原样
|
||||
- 原因:该内容只用于复制到剪贴板的文本结构,不属于页面可见展示文案;本轮按“不改复制内容结构”保留
|
||||
|
||||
## 需持续关注
|
||||
|
||||
|
||||
@ -3,7 +3,8 @@
|
||||
## 文档定位
|
||||
|
||||
- 本文件只负责记录全局进展、阶段成果、构建验证结果与下一步目标
|
||||
- 主要路由的完整父子级结构、路由别名、路径、入口文件与主路由优先级,以 `docs/i18n/主要路由.md` 为准
|
||||
- 主要路由的完整父子级结构、路由别名、路径、入口文件、完成状态、已完成主要路由摘要与主路由优先级,以 `docs/i18n/主要路由.md` 为准
|
||||
- `docs/i18n/翻译清单.md` 不再重复维护已完成主要路由索引,只维护文件级清单与任务状态
|
||||
- 文档中的英文路由名需要与侧边栏实际语言包 `src/lang/messages/base/menu-en.js` 保持一致;如有差异,以 `menu-en.js` 为准
|
||||
- 注意 `src/lang/messages/en.js` 顶层旧中文 key 会在运行时覆盖 `menu-en.js` 的同名 key;统一路由英文名时需要同步检查并消除这类重复覆盖
|
||||
- 文件级待办、进行中、已完成与认领状态,以 `docs/i18n/翻译清单.md` 为准
|
||||
@ -19,9 +20,689 @@
|
||||
|
||||
## 当前认领线程
|
||||
|
||||
- 线程一:待分配,上一轮已完成 `src/views/cnf/pay/factory/**`、`src/views/cnf/pay/comp/transfer-channel.vue` 厂商管理页面国际化、直接公共组件复核、语言文件校验与构建验证
|
||||
- 线程二:待分配,上一轮已完成 `src/views/log/login-logger/index.vue` 登录日志页面国际化、直接公共组件复核、语言文件校验与构建验证
|
||||
- 线程三:待分配,上一轮已完成 `src/views/log/invite-user-log/index.vue` 邀请用户页面国际化、直接公共组件复核、语言文件校验与构建验证
|
||||
- 线程一:待分配,上一轮已完成 `src/views/user/bank-balance/withdraw-diamond-apply/**` 钻石提现申请页面入口、同目录私有抽屉、直接公共组件复核、语言文件校验与构建验证
|
||||
- 线程二:待分配,上一轮已完成 `src/views/team/team-member/**` 主播成员页面入口、同目录私有组件、直接引用的团队详情抽屉与直接公共组件复核、语言文件校验与构建验证
|
||||
- 线程三:待分配,上一轮已完成 `src/views/user/bank-balance/table/**` 用户银行账户页面入口、同目录私有组件、直接公共组件复核、语言文件校验与构建验证
|
||||
|
||||
## 2026-05-07 最新同步
|
||||
|
||||
- 线程二已完成:
|
||||
- `src/views/team/team-member/index.vue`
|
||||
- `src/views/team/team-member/team-member-add.vue`
|
||||
- `src/views/team/team-member/team-member-change.vue`
|
||||
- `src/views/team/team-member/team-member-remark.vue`
|
||||
- `src/views/team/team-member/team-member-target-reset.vue`
|
||||
- 对应主要路由:
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 主播成员 / Broadcaster Members
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、角色、代理 ID、成员 ID、未活跃天数、日期范围、搜索/新增/删除按钮已国际化
|
||||
- 表格加载文案、代理/成员/备注/创建人/时间/操作列头、创建/活跃前缀、加载更多与已加载全部文案已国际化
|
||||
- 添加成员、变更团队、编辑备注、目标重置等同目录 4 个私有弹窗/抽屉的标题、表单标签、placeholder、按钮、校验、确认框和提示文案已国际化
|
||||
- 新增 `pages.teamMember`
|
||||
- 页面私有组件状态:
|
||||
- 同目录 4 个私有弹窗/抽屉已随入口页同步完成
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue` 历史已完成,本轮复核中文扫描无命中
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/Avatar/index.vue`:本轮复核中文扫描无命中
|
||||
- 已完成验证:
|
||||
- `src/views/team/team-member/*.vue` 中文残留仅剩注释或注释掉的历史代码块,不属于可见展示文本
|
||||
- `src/lang/messages/pages/en.js` 与 `src/lang/messages/pages/zh.js` 语法校验通过
|
||||
- 本轮改动未使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、团队/成员/代理 ID、成员角色实际值、批量删除提交值、目标重置提交值或接口返回动态数据
|
||||
- 线程二当前状态:待分配
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/details-drawer.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户工资钻石 / User Salary Diamonds
|
||||
- 钻石提现申请 / Diamond Withdrawal Applications
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、卡片类型、提交用户、类型、状态、日期范围、搜索/导出按钮已国际化
|
||||
- 表格列头、金额类型展示、接收方式展示、审核状态展示、加载更多与已加载全部文案已国际化
|
||||
- 导出抽屉、审核抽屉、详情抽屉的标题、标签、按钮、提示文案已国际化
|
||||
- 新增 `pages.userBankWithdrawDiamondApply`
|
||||
- 页面私有组件状态:
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/upload-image/index.vue`:本轮复核中文扫描无命中
|
||||
- 已完成验证:
|
||||
- `src/views/user/bank-balance/withdraw-diamond-apply/*.vue` 中文残留仅剩银行卡复制文本,不属于可见展示文本
|
||||
- `src/lang/messages/pages/en.js` 与 `src/lang/messages/pages/zh.js` 语法校验通过
|
||||
- 本轮源码未使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、审核状态实际值、接收方式实际值、银行卡类型实际值、复制内容结构、导出参数或接口返回动态数据
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程二已新认领:
|
||||
- `src/views/team/team-member/index.vue`
|
||||
- `src/views/team/team-member/team-member-add.vue`
|
||||
- `src/views/team/team-member/team-member-change.vue`
|
||||
- `src/views/team/team-member/team-member-remark.vue`
|
||||
- `src/views/team/team-member/team-member-target-reset.vue`
|
||||
- 对应主要路由:
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 主播成员 / Broadcaster Members
|
||||
- 认领前已复查:
|
||||
- 当前没有其他线程认领 `src/views/team/team-member/**`
|
||||
- `src/views/team/team-member` 目录包含入口页与 4 个同目录私有组件,均由入口页直接渲染
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue` 为入口页直接渲染的团队详情抽屉,历史已完成,本轮复核
|
||||
- 直接公共组件 `SysOriginIcon`、`AccountInput`、`UserTableExhibit`、`src/components/data/Avatar/index.vue` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、团队/成员/代理 ID、成员角色实际值、批量删除提交值、目标重置提交值或接口返回动态数据
|
||||
- 领取时线程二状态:进行中;本轮随后已完成,见上方完成记录
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户工资钻石 / User Salary Diamonds
|
||||
- 钻石兑换金币记录 / Diamond-to-Gold Exchange Records
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、提交用户 ID、接收用户 ID、接收方式、日期范围、搜索按钮已国际化
|
||||
- 表格列头、创建日期前缀、加载更多与已加载全部文案已国际化
|
||||
- `GOLD`、`FREIGHT` 仅在页面展示层做本地映射,未修改查询值、接口参数、`amountType` 实际值或接口返回动态数据
|
||||
- 页面私有组件状态:
|
||||
- 当前目录仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.userBankDiamondWithdrawGoldApply`
|
||||
- 已完成验证:
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue` 中文残留扫描通过
|
||||
- 直接公共组件中文扫描无命中
|
||||
- 语言文件语法校验通过
|
||||
- 本轮改动未使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、`amountType` 实际值、`acceptAccount` 实际值、`lastId` 分页逻辑或接口返回动态数据
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程一已新认领:
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户工资钻石 / User Salary Diamonds
|
||||
- 钻石兑换金币记录 / Diamond-to-Gold Exchange Records
|
||||
- 认领前已复查:
|
||||
- 当前没有其他线程认领 `src/views/user/bank-balance/diamond-withdraw-gold-apply/index.vue`
|
||||
- `src/views/user/bank-balance/diamond-withdraw-gold-apply` 目录当前仅包含入口页,无同目录私有组件
|
||||
- 直接公共组件 `SysOriginIcon`、`AccountInput`、`UserTableExhibit` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、`amountType` 实际值、`acceptAccount` 实际值、`lastId` 分页逻辑或接口返回动态数据
|
||||
- 线程一当前状态:进行中
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/index.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/policy-details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/remark-details-drawer.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 自动支付工资凭据 / Automatic Salary Payment Vouchers
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、用户 ID、月份选择、搜索按钮、表格列头、查看明细/查看备注操作已国际化
|
||||
- 自动发送工资详情抽屉、政策详情抽屉、内部备注抽屉的标题、分组标题、字段标签与展示状态已国际化
|
||||
- 团长/成员/代收/已收回/账户类型仅在页面展示层做本地映射,未修改布尔值、政策值或接口返回动态数据
|
||||
- 页面私有组件状态:
|
||||
- `details-drawer.vue`、`policy-details-drawer.vue`、`remark-details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/PropsRow/index.vue`:历史已完成,本轮复核中文命中仅为注释
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.automaticSalaryPaymentRecord`
|
||||
- 已完成验证:
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/*.vue` 中文残留扫描通过
|
||||
- 直接公共组件中文扫描仅命中 `PropsRow` 注释,不属于可见展示文案
|
||||
- 语言文件语法校验通过
|
||||
- 本轮改动未使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、`dateNumber` 值、政策等级值、工资数值、是否代收/是否回收布尔值、时间格式值或接口返回动态数据
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程一已新认领:
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/index.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/policy-details-drawer.vue`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record/remark-details-drawer.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 自动支付工资凭据 / Automatic Salary Payment Vouchers
|
||||
- 认领前已复查:
|
||||
- 当前没有其他线程认领 `src/views/user/bank-balance/auto-salary-pay-record/**`
|
||||
- `src/views/user/bank-balance/auto-salary-pay-record` 目录包含入口页、`details-drawer.vue`、`policy-details-drawer.vue`、`remark-details-drawer.vue`
|
||||
- 直接公共组件 `Pagination`、`SysOriginIcon`、`AccountInput`、`UserTableExhibit`、`PropsRow` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、`dateNumber` 值、政策等级值、工资数值、是否代收/是否回收布尔值、时间格式值或接口返回动态数据
|
||||
- 线程一当前状态:进行中
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/user/bank-balance/withdraw-gold-apply/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 美金兑换金币记录 / USD-to-Gold Exchange Records
|
||||
- 已完成模块级复核:
|
||||
- 筛选区、日期范围、表格列头、创建日期文案、加载更多与已加载全部文案已国际化
|
||||
- `GOLD`、`FREIGHT` 仅在页面展示层做本地映射,未修改查询值、接口参数与接口返回动态数据
|
||||
- 页面私有组件状态:
|
||||
- 当前目录仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.userBankWithdrawGoldApply`
|
||||
- 已完成验证:
|
||||
- `src/views/user/bank-balance/withdraw-gold-apply/index.vue` 中文残留扫描通过
|
||||
- 直接公共组件中文扫描无命中
|
||||
- 本轮改动未使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一当前状态:待分配
|
||||
- 线程一已新认领:
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 现金提现申请 / Cash Withdrawal Applications
|
||||
- 认领前已复查:
|
||||
- 当前没有其他线程认领 `src/views/user/bank-balance/withdraw-money-apply/**`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply` 目录包含入口页、`approval-drawer.vue`、`details-drawer.vue`
|
||||
- 直接公共组件 `SysOriginIcon`、`AccountInput`、`UserTableExhibit`、`UploadImage` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、分页字段、提现状态实际值、审核状态实际值、接收方式实际值、银行卡类型实际值、复制内容结构、导出参数或接口返回动态数据
|
||||
- 线程一当前状态:进行中
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/index.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/approval-drawer.vue`
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/details-drawer.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 现金提现申请 / Cash Withdrawal Applications
|
||||
- 已完成模块级复核:
|
||||
- 筛选区、表格列头、导出条件抽屉、详情抽屉、审核抽屉、按钮、placeholder、tooltip 与审核记录展示已国际化
|
||||
- 审核状态、接收方式、金额类型仅在页面展示层做本地映射,未修改实际值、查询字段、导出参数或接口返回动态数据
|
||||
- 页面私有组件状态:
|
||||
- `approval-drawer.vue`、`details-drawer.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/upload-image/index.vue`:本轮复核仅剩注释中文
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.userBankWithdrawMoneyApply`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- `src/views/user/bank-balance/withdraw-money-apply/*.vue` 中文残留仅剩复制银行卡信息的剪贴板文本,不属于页面可见展示文案
|
||||
- `src/components/upload-image/index.vue` 中文残留仅为文件注释,不属于可见展示文案
|
||||
- 本轮改动未使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、分页字段、提现状态实际值、审核状态实际值、接收方式实际值、银行卡类型实际值、复制内容结构、导出参数或接口返回动态数据
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程二已完成:
|
||||
- `src/views/team/team-member-work/index.vue`
|
||||
- `src/views/team/team-member-work/details-drawer.vue`
|
||||
- `src/views/team/team-member-work/gift-running-water-dialog.vue`
|
||||
- `src/views/team/team-member-work/room-gift-dialog.vue`
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- 对应主要路由:
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 主播工作 / Broadcaster Work
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、账单 ID、代理 ID、成员 ID、搜索/删除按钮已国际化
|
||||
- 表格加载文案、表头、工资/钻石/礼物/时长/时间字段、详情入口、加载更多与已加载全部文案已国际化
|
||||
- 工作详情抽屉、礼物流水弹窗、房间流水弹窗与团队详情抽屉的标题、分组、字段标签、状态展示和操作按钮已国际化
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、分页字段、礼物流水类型实际值、团队/成员/代理 ID、系统来源、工资结算模式实际值、账单状态实际值与接口返回动态数据保持原样
|
||||
- 页面私有组件状态:
|
||||
- `details-drawer.vue`、`gift-running-water-dialog.vue`、`room-gift-dialog.vue` 与 `TeamDetailsDrawer/index.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/GiftHistoryDetailsDrawer/index.vue`:历史已完成,本轮复核仅剩注释中文
|
||||
- `src/components/data/PropsRow/index.vue`:历史已完成,本轮复核仅剩注释中文
|
||||
- `src/components/data/RoomDeatilsDrawer/index.vue`:历史已完成,本轮复核无新增可见中文
|
||||
- `src/views/common/user_deatils.vue`:历史已完成,本轮复核仅剩注释块中文
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.teamMemberWork` 与 `pages.teamDetailsDrawer`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- 本轮源码中文残留仅剩注释,不属于可见展示文本
|
||||
- 未发现本轮改动使用 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程二当前状态:待分配
|
||||
|
||||
- 线程三已新认领:
|
||||
- `src/views/user/bank-balance/table/index.vue`
|
||||
- `src/views/user/bank-balance/table/form-edit.vue`
|
||||
- `src/views/user/bank-balance/table/running-water.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 用户银行账户 / User Bank Accounts
|
||||
- 认领前已复查:
|
||||
- 线程一当前进行中范围为 `src/views/user/salary-diamond-balance/**`,线程三主动避让
|
||||
- 线程二当前进行中范围为 `src/views/team/team-member-work/**`,线程三主动避让
|
||||
- 当前无其他线程认领 `src/views/user/bank-balance/table/**`
|
||||
- `src/views/user/bank-balance/table` 目录包含入口页、`form-edit.vue`、`running-water.vue`
|
||||
- 直接公共组件 `SysOriginIcon`、`AccountInput`、`UserTableExhibit` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、分页字段、银行账户金额实际值、发送/扣除/转账实际提交值、用户 ID、系统来源、导入文件内容或接口返回账户/流水数据
|
||||
- 线程三已完成:
|
||||
- `src/views/user/bank-balance/table/index.vue`
|
||||
- `src/views/user/bank-balance/table/form-edit.vue`
|
||||
- `src/views/user/bank-balance/table/running-water.vue`
|
||||
- 已完成模块级复核:
|
||||
- 账户列表筛选区、操作按钮、表格加载文案、表格列头、操作下拉、加载更多/全部加载完成已国际化
|
||||
- 发送/扣除弹窗、转账弹窗、创建账户弹窗、导入弹窗、上传提示、校验提示、导入/下载反馈已国际化
|
||||
- 账户流水弹窗复用 `pages.userBankRunningWater` 事件名、收入/支出与转账收付款人展示映射,未修改事件常量值或接口返回数据
|
||||
- 页面私有组件状态:
|
||||
- `form-edit.vue`、`running-water.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.userBankAccounts`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- `src/views/user/bank-balance/table/*.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 直接公共组件中文扫描无命中
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程三当前状态:待分配
|
||||
|
||||
- 线程二已新认领:
|
||||
- `src/views/team/team-member-work/index.vue`
|
||||
- `src/views/team/team-member-work/details-drawer.vue`
|
||||
- `src/views/team/team-member-work/gift-running-water-dialog.vue`
|
||||
- `src/views/team/team-member-work/room-gift-dialog.vue`
|
||||
- `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- 对应主要路由:
|
||||
- 主播中心 / Broadcaster Center
|
||||
- 主播工作 / Broadcaster Work
|
||||
- 认领前已复查:
|
||||
- 线程一当前进行中范围为 `src/views/user/salary-diamond-balance/**`,线程二主动避让
|
||||
- 当前没有其他线程认领 `src/views/team/team-member-work/**`
|
||||
- 已核对入口页直接渲染 `details-drawer.vue`、`gift-running-water-dialog.vue`、`room-gift-dialog.vue` 与 `src/views/team/components/TeamDetailsDrawer/index.vue`
|
||||
- 直接公共组件 `AccountInput`、`UserTableExhibit`、`GiftHistoryDetailsDrawer`、`PropsRow`、`RoomDeatilsDrawer`、`user_deatils.vue`、`SysOriginIcon` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、分页字段、礼物流水类型实际值、团队/成员/代理 ID、系统来源、工资结算模式实际值、账单状态实际值或接口返回动态数据
|
||||
- 领取时线程二状态:进行中;本轮随后已完成,见上方完成记录
|
||||
|
||||
- 线程三已完成:
|
||||
- `src/views/user/bank-balance/running-water/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户银行 / User Bank
|
||||
- 用户银行流水 / User Bank Transactions
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、用户 ID、类型、事件、日期范围 placeholder 与搜索按钮已国际化
|
||||
- 金额汇总提示、表格加载文案、表格列头、加载更多、全部加载完成、收款人/付款人标识已国际化
|
||||
- 收入/支出与 `userBankWaterEvent` 仅在页面展示层做本地翻译映射,未修改 `0/1`、事件常量值、查询字段、分页字段或接口返回流水数据
|
||||
- 页面私有组件状态:
|
||||
- `src/views/user/bank-balance/running-water` 目录当前仅包含入口页,无同目录私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.userBankRunningWater`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- `src/views/user/bank-balance/running-water/index.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 直接公共组件中文扫描无命中
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程三当前状态:待分配
|
||||
|
||||
- 线程二已完成:
|
||||
- `src/views/team/work-statistics/index.vue`
|
||||
- 对应主要路由:
|
||||
- 主播中心 / Broadcaster Center
|
||||
- BD工作统计 / BD Work Statistics
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、长 UID、短账号、区域、日期范围 tooltip、日期选择器 placeholder 与搜索按钮已国际化
|
||||
- 筛选时间汇总、表格加载文案、BD、邀请人数、充值、客单价、有效人数、区域与区域排名表头已国际化
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、排序值、分页字段、用户 ID / 短账号查询值、区域值、系统值与接口返回统计数据保持原样
|
||||
- 页面私有组件状态:
|
||||
- `src/views/team/work-statistics` 目录当前仅包含入口页,无同目录私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/SelectSystemRegion/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.workStatistics`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- `src/views/team/work-statistics/index.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 直接公共组件中文扫描无命中
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程二当前状态:待分配
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/user/salary-diamond-balance/running-water/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/index.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/form-edit.vue`
|
||||
- `src/views/user/salary-diamond-balance/table/running-water.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 用户工资钻石 / User Salary Diamonds
|
||||
- 已完成模块级复核:
|
||||
- 筛选区系统、用户 ID、类型、事件、日期范围 placeholder 与搜索按钮已国际化
|
||||
- 账户列表与流水列表的表格列头、转账附属标签、弹窗标题、表单标签、placeholder、按钮与校验提示已国际化
|
||||
- 收入/支出、事件名称与转账标签仅在页面展示层做本地翻译映射,未修改事件常量值、查询字段、提交值或接口返回动态数据
|
||||
- 页面私有组件状态:
|
||||
- `table/form-edit.vue`、`table/running-water.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/AccountInput/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- `src/components/data/UserInfo/UserTableExhibit/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.userSalaryDiamond`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- `src/views/user/salary-diamond-balance/**` 中文残留仅剩注释,不属于可见展示文本
|
||||
- 直接公共组件中文扫描无命中
|
||||
- 项目中未发现 `$te`
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、收支类型实际值、事件实际值、用户账号查询值、金额提交值、备注提交值或接口返回动态数据
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程二已新认领:
|
||||
- `src/views/team/work-statistics/index.vue`
|
||||
- 对应主要路由:
|
||||
- 主播中心 / Broadcaster Center
|
||||
- BD工作统计 / BD Work Statistics
|
||||
- 认领前已复查:
|
||||
- 线程一当前进行中范围为 `src/views/props/props-store/**`,线程二主动避让
|
||||
- 线程三当前待分配,当前没有其他线程认领 `src/views/team/work-statistics/index.vue`
|
||||
- `src/views/team/work-statistics` 目录当前仅包含入口页,无同目录私有组件
|
||||
- 直接公共组件 `Pagination`、`SysOriginIcon`、`SelectSystemRegion`、`UserTableExhibit` 纳入本轮复核
|
||||
- 本轮不修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、排序值、分页字段、用户 ID / 短账号查询值、区域值、系统值或接口返回统计数据
|
||||
- 线程二当前状态:进行中
|
||||
|
||||
- 线程二已完成:
|
||||
- `src/views/props/props-send-tool/index.vue`
|
||||
- `src/views/props/props-send-tool/send-props.vue`
|
||||
- `src/views/props/props-send-tool/send-badge.vue`
|
||||
- `src/views/props/props-send-tool/send-ticket.vue`
|
||||
- 对应主要路由:
|
||||
- 道具管理 / Prop Management
|
||||
- 道具赠送 / Prop Gift
|
||||
- 已完成模块级复核:
|
||||
- 赠送道具、赠送徽章、赠送道具券三块表单的标题、表单标签、placeholder、按钮、校验提示、贵族来源展示与无效短账号提示已国际化
|
||||
- 道具类型、道具券类型、徽章类型仅在页面展示层按 value 做本地翻译映射,未修改 `propsTypes`、`propsTicket`、`badgeTypes` 常量值
|
||||
- 接口参数、路由路径、权限码、表单提交字段、道具/徽章/道具券实际类型值、贵族来源实际值、资源 ID、接收人提交内容、接口返回资源名称与接口错误内容保持原样
|
||||
- 页面私有组件状态:
|
||||
- `send-props.vue`、`send-badge.vue`、`send-ticket.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/data/PropsSourceSelectPopover/index.vue`:历史已完成,本轮复核中文扫描无命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.propsSendTool`
|
||||
- 已完成验证:
|
||||
- 语言文件语法校验通过
|
||||
- `src/views/props/props-send-tool/**/*.vue` 中文残留仅剩注释,不属于可见展示文本
|
||||
- `src/components/data/PropsSourceSelectPopover/index.vue` 中文扫描无命中
|
||||
- `npm run build:prod` 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程二当前状态:待分配
|
||||
|
||||
- 线程三已完成:
|
||||
- `src/views/props/props-activity-rule-config/index.vue`
|
||||
- `src/views/props/props-activity-rule-config/edit-rule-drawer.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/crystal.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/first-charge-reward.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/game-fruit.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/game-weekly-tasks.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/input-quantity-mark.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/input-quantity.vue`
|
||||
- `src/views/props/props-activity-rule-config/components/lucky-box.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 活动配置 / Activity Configuration
|
||||
- 活动规则配置 / Activity Rule Configuration
|
||||
- 已完成模块级复核:
|
||||
- 页面筛选区、卡片操作、规则信息、资源信息、删除确认、保存/删除提示已国际化
|
||||
- 编辑抽屉与全部同目录规则子组件静态展示文本、placeholder、按钮、上传提示与校验提示已国际化
|
||||
- 活动类型与上下架仅翻译展示文案,实际提交值、布尔值、接口参数、路由路径、权限码与接口返回动态数据保持原样
|
||||
- 直接公共组件 `Pagination`、`AssociatedResources`、`PropsRow`、`SysOriginIcon` 已复核,当前中文命中仅剩注释
|
||||
- 页面私有组件状态:
|
||||
- `edit-rule-drawer.vue` 与 `components/*.vue` 已随页面同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/AssociatedResources/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/data/PropsRow/index.vue`:历史已完成,本轮复核通过,中文命中仅剩注释
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.propsActivityRuleConfig`
|
||||
- 已完成构建验证:
|
||||
- `npm run build:prod`
|
||||
- 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程三当前状态:待分配
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/props/props-store/index.vue`
|
||||
- `src/views/props/props-store/form-edit.vue`
|
||||
- 对应主要路由:
|
||||
- 道具管理 / Prop Management
|
||||
- 道具商店 / Prop Store
|
||||
- 认领前已复查:
|
||||
- `src/views/props/props-send-tool/**` 当前由线程二进行中,线程一避让
|
||||
- `src/views/props/props-activity-rule-config/**` 当前由线程三进行中,线程一避让
|
||||
- `src/views/props/props-store` 目录仅包含入口页和同目录私有表单组件
|
||||
- 直接公共组件 `Pagination` 与 `SysOriginIcon` 纳入本轮复核
|
||||
- 已完成模块级复核:
|
||||
- 筛选区、展开详情、表格列头、上下架展示、道具类型/付费类型展示映射、按钮已国际化
|
||||
- 弹窗标题、表单标签、placeholder、按钮、校验提示、贵族能力字段与资源更换按钮已国际化
|
||||
- 道具类型、付费类型、有效天数、上下架、贵族类型等实际 `value` 均保持不变,仅做展示层映射
|
||||
- 接口返回资源名称、资源图片、SVGA 地址、资源 ID 与提交值保持原样
|
||||
- `src/views/props/props-store/*.vue` 中文残留扫描通过
|
||||
- 页面私有组件状态:
|
||||
- `src/views/props/props-store/form-edit.vue` 已随入口页同步完成
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.propsStore`
|
||||
- 已完成构建验证:
|
||||
- `npm run build:prod`
|
||||
- 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 本轮未修改:
|
||||
- 接口参数、查询字段、路由路径、权限码、表格 `prop`、道具类型实际值、付费类型实际值、有效天数实际值、上下架实际值、资源 ID、接口返回资源名称或提交值
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/cnf/product-v2/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 内购配置 / In-App Purchase Configuration
|
||||
- Google/Apple-V2 / Google/Apple V2
|
||||
- 已完成模块级复核:
|
||||
- 筛选区、搜索/添加按钮、表格加载文案、表格列头、状态展示、弹窗标题、表单标签、placeholder、按钮与校验提示已国际化
|
||||
- 上下架采用本地展示映射,`true/false` 实际值保持不变
|
||||
- 平台 `AppStore`、`Google`、`Huawei` 等实际值保持不变,仅保留展示原文
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、平台实际值、上下架实际值、区域/系统接口返回动态数据或提交值
|
||||
- `src/views/cnf/product-v2/index.vue` 中文残留扫描通过
|
||||
- 页面私有组件状态:
|
||||
- `src/views/cnf/product-v2` 目录当前仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.productV2`
|
||||
- 已完成构建验证:
|
||||
- `npm run build:prod`
|
||||
- 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程二已新认领:
|
||||
- `src/views/props/props-send-tool/index.vue`
|
||||
- `src/views/props/props-send-tool/send-props.vue`
|
||||
- `src/views/props/props-send-tool/send-badge.vue`
|
||||
- `src/views/props/props-send-tool/send-ticket.vue`
|
||||
- 对应主要路由:
|
||||
- 道具管理 / Prop Management
|
||||
- 道具赠送 / Prop Gift
|
||||
- 认领前已复查:
|
||||
- `src/views/cnf/product-v2/index.vue` 当前由线程一进行中,线程二避让
|
||||
- `src/views/props/props-activity-rule-config/**` 当前由线程三进行中,线程二避让
|
||||
- `src/components/data/PropsSourceSelectPopover/index.vue` 当前中文扫描无命中,作为直接公共组件复核纳入记录
|
||||
- 本轮不修改:
|
||||
- 接口参数、路由路径、权限码、表单提交字段、道具/徽章/道具券实际类型值、贵族来源实际值、资源 ID、接收人提交内容、接口返回资源名称或接口错误内容
|
||||
- 线程二当前状态:进行中
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/cnf/pay/application/index.vue`
|
||||
- `src/views/cnf/pay/application/app-navigation.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/index.vue`
|
||||
- `src/views/cnf/pay/application/app-manager/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/index.vue`
|
||||
- `src/views/cnf/pay/application/commodity-v2/edit-form.vue`
|
||||
- `src/views/cnf/pay/application/order-manager/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 内购配置 / In-App Purchase Configuration
|
||||
- 应用管理 / Application Management
|
||||
- 已完成模块级复核:
|
||||
- 应用卡片操作下拉、支付链接、编辑、创建应用、创建时间、返回按钮、商品管理 tab 标题已国际化
|
||||
- 应用编辑弹窗标题、类型/Android 链接/iOS 链接表单项、placeholder、按钮与必填校验已国际化
|
||||
- 商品管理与商品管理 V2 的筛选区、商品类型展示映射、上下架展示映射、搜索/添加/编辑按钮、表格列头、商品编辑弹窗、价格/限额展示与校验提示已国际化
|
||||
- `order-manager` 当前在 tab 配置中被注释,本轮仅处理其可见开发中提示与未使用 prompt 文案;注释掉的历史表格按规则保留
|
||||
- 商品类型与上下架采用本地展示映射,`GOLD`、`FREIGHT_GOLD`、`FREIGHT_GOLD_SUPER`、`true/false` 实际值保持不变
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、商品类型/上下架实际值、应用/国家/区域/渠道接口返回动态数据或提交值
|
||||
- `src/views/cnf/pay/application/**/*.vue` 中文残留仅剩注释、注释掉的历史表格与注释掉的历史表单块,不属于可见展示文本
|
||||
- 页面私有组件状态:
|
||||
- `app-navigation.vue`、`app-manager/index.vue`、`app-manager/edit-form.vue`、`commodity/index.vue`、`commodity/edit-form.vue`、`commodity-v2/index.vue`、`commodity-v2/edit-form.vue`、`order-manager/index.vue` 已随页面同步完成或复核
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:历史已完成,本轮复核通过
|
||||
- `src/components/SysOriginIcon/index.vue`:历史已完成,本轮复核通过
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.payApplication`
|
||||
- 已完成构建验证:
|
||||
- `npm run build:prod`
|
||||
- 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/cnf/pay/country/index.vue`
|
||||
- `src/views/cnf/pay/country/associated-channels.vue`
|
||||
- `src/views/cnf/pay/country/country-select.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 内购配置 / In-App Purchase Configuration
|
||||
- 开通支付国家 / Enabled Payment Countries
|
||||
- 已完成模块级复核:
|
||||
- 筛选区、添加/刷新/关联渠道按钮、表格加载文案、表格列头、行内可点击提示、prompt 标题/按钮/校验提示已国际化
|
||||
- 关联渠道弹窗标题、国家货币/美元汇率标签、渠道额度表单标签、placeholder、开关文案与本地校验提示已国际化
|
||||
- 国家选择弹窗标题、Transfer 标题与按钮已国际化
|
||||
- `shelfStatus` 采用本地展示映射,`true/false` 实际值保持不变
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、国家/渠道实际值、开通/删除提交值或接口返回动态数据
|
||||
- `src/views/cnf/pay/country/**/*.vue` 中文残留仅剩注释与注释掉的历史按钮,不属于可见展示文本
|
||||
- 页面私有组件状态:
|
||||
- `src/views/cnf/pay/country/associated-channels.vue` 已随页面同步完成
|
||||
- `src/views/cnf/pay/country/country-select.vue` 已随页面同步完成
|
||||
- `src/views/cnf/pay/comp/transfer-channel.vue` 历史已完成,本轮复核通过
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:扫描无中文命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.payOpenCountry`
|
||||
- 已完成构建验证:
|
||||
- `npm run build:prod`
|
||||
- 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
- 线程一已记录兼容问题:
|
||||
- 本项目自定义 i18n 插件不支持 `$te`
|
||||
- 渠道管理 / 厂商管理相关渠道类型展示已改为用 `$t(key)` 返回值是否等于原 key 做兜底判断
|
||||
- 涉及文件:
|
||||
- `src/views/cnf/pay/channel/index.vue`
|
||||
- `src/views/cnf/pay/channel/edit-form.vue`
|
||||
- `src/views/cnf/pay/factory/associated-channel.vue`
|
||||
- 说明:该修复用于避免页面运行时报 `this.$te is not a function` 导致空白页
|
||||
|
||||
- 线程一已完成:
|
||||
- `src/views/cnf/pay/region-relation/index.vue`
|
||||
- 对应主要路由:
|
||||
- 运营管理 / Operations Management
|
||||
- 内购配置 / In-App Purchase Configuration
|
||||
- 区域关联支付国家 / Region-Payment Country Relations
|
||||
- 已完成模块级复核:
|
||||
- 筛选区、按钮、表格列头、状态展示、弹窗标题、表单标签、placeholder、校验提示与弹窗按钮已国际化
|
||||
- 状态下拉与状态列采用本地展示映射,`productConfigShowcase` 原常量值与接口提交值保持不变
|
||||
- 未修改接口参数、查询字段、路由路径、权限码、表格 `prop`、布尔提交值或接口返回动态数据
|
||||
- `src/views/cnf/pay/region-relation/index.vue` 中文残留扫描通过
|
||||
- 页面私有组件状态:
|
||||
- `src/views/cnf/pay/region-relation` 目录当前仅包含 `index.vue`,无页面私有组件
|
||||
- 直接公共组件状态:
|
||||
- `src/components/Pagination/index.vue`:扫描无中文命中
|
||||
- `src/components/SysOriginIcon/index.vue`:扫描无中文命中
|
||||
- 已完成语言文件校验:
|
||||
- `src/lang/messages/pages/en.js`
|
||||
- `src/lang/messages/pages/zh.js`
|
||||
- 说明:新增 `pages.payRegionRelation`
|
||||
- 已完成构建验证:
|
||||
- `npm run build:prod`
|
||||
- 构建通过,仍为项目既有 `17` 条 warning
|
||||
- 线程一当前状态:待分配
|
||||
|
||||
## 2026-05-06 最新同步
|
||||
|
||||
@ -2049,9 +2730,9 @@
|
||||
- `npm run build:prod`
|
||||
- 说明:当前环境直接执行构建通过,仍保留项目既有 `17` 条 warning,未新增阻塞错误
|
||||
- 当前认领线程:
|
||||
- 线程一:待分配,当前未认领新任务;已完成 `src/views/sys/emoji-config/**` 表情管理模块国际化、中文残留扫描、语言文件校验与构建验证
|
||||
- 线程二:待分配,当前未认领新任务;已完成 `src/views/sys/invite-user-rule/**` 邀请用户配置模块国际化、语言文件校验与构建验证
|
||||
- 线程三:待分配,当前未认领新任务;已完成 `src/views/room/theme/index.vue` 房间主题管理页面国际化、中文残留扫描、语言文件校验与构建验证
|
||||
- 线程一:待分配,已完成 `src/views/user/bank-balance/withdraw-diamond-apply/**` 钻石提现申请页面与同目录私有抽屉
|
||||
- 线程二:待分配,当前未认领新任务;已完成 `src/views/team/team-member/**` 主播成员页面国际化、直接组件复核、语言文件校验与构建验证
|
||||
- 线程三:待分配,当前未认领新任务;已完成 `src/views/user/bank-balance/table/**` 用户银行账户页面国际化、直接组件复核、语言文件校验与构建验证
|
||||
|
||||
## 扫描概况
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -16,12 +16,12 @@
|
||||
v-loading="submitLoading"
|
||||
style="width: 400px; margin-left:50px;"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:rules="localizedRules"
|
||||
>
|
||||
<el-form-item v-if="!isEdit" label="类型" prop="appCode">
|
||||
<el-form-item v-if="!isEdit" :label="$t('pages.payApplication.form.type')" prop="appCode">
|
||||
<el-select
|
||||
v-model="form.appCode"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.payApplication.placeholder.system')"
|
||||
style="width: 100%"
|
||||
class="filter-item"
|
||||
collapse-tags
|
||||
@ -41,16 +41,16 @@
|
||||
<!-- <el-form-item label="app名称" prop="appName">
|
||||
<el-input v-model.trim="form.appName" type="primary" placeholder="请输入app名称" :disabled="true" />
|
||||
</el-form-item> -->
|
||||
<el-form-item label="Android链接" prop="androidLink">
|
||||
<el-input v-model.trim="form.androidLink" type="primary" placeholder="请输入Android链接" />
|
||||
<el-form-item :label="$t('pages.payApplication.form.androidLink')" prop="androidLink">
|
||||
<el-input v-model.trim="form.androidLink" type="primary" :placeholder="$t('pages.payApplication.placeholder.androidLink')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="iOS链接" prop="iosLink">
|
||||
<el-input v-model.trim="form.iosLink" type="primary" placeholder="请输入iOS链接" />
|
||||
<el-form-item :label="$t('pages.payApplication.form.iosLink')" prop="iosLink">
|
||||
<el-input v-model.trim="form.iosLink" type="primary" :placeholder="$t('pages.payApplication.placeholder.iosLink')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.payApplication.action.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm()">{{ $t('pages.payApplication.action.save') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@ -71,7 +71,6 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
var commonRequiredParams = [{ required: true, message: '必填参数不可为空', trigger: 'blur' }]
|
||||
return {
|
||||
payChannelGroups,
|
||||
form: {
|
||||
@ -81,12 +80,6 @@ export default {
|
||||
androidLink: '',
|
||||
iosLink: ''
|
||||
},
|
||||
rules: {
|
||||
appName: commonRequiredParams,
|
||||
appCode: commonRequiredParams,
|
||||
androidLink: commonRequiredParams,
|
||||
iosLink: commonRequiredParams
|
||||
},
|
||||
submitLoading: false,
|
||||
iconUploadLoading: false,
|
||||
iconFileList: []
|
||||
@ -98,7 +91,16 @@ export default {
|
||||
return !!(this.form && this.form.id)
|
||||
},
|
||||
title() {
|
||||
return this.form && this.form.id ? '修改渠道' : '添加渠道'
|
||||
return this.form && this.form.id ? this.$t('pages.payApplication.dialog.editApplication') : this.$t('pages.payApplication.dialog.addApplication')
|
||||
},
|
||||
localizedRules() {
|
||||
const requiredRule = { required: true, message: this.$t('pages.payApplication.validation.requiredField'), trigger: 'blur' }
|
||||
return {
|
||||
appName: [requiredRule],
|
||||
appCode: [requiredRule],
|
||||
androidLink: [requiredRule],
|
||||
iosLink: [requiredRule]
|
||||
}
|
||||
},
|
||||
formChannelIconNotEmpty() {
|
||||
return !!(this.form.channelIcon && this.form.channelIcon.length > 0)
|
||||
|
||||
@ -12,11 +12,11 @@
|
||||
<div class="text-center" @click.stop>
|
||||
<el-dropdown>
|
||||
<span class="el-dropdown-link">
|
||||
操作<i class="el-icon-arrow-down el-icon--right" />
|
||||
{{ $t('pages.payApplication.action.actions') }}<i class="el-icon-arrow-down el-icon--right" />
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="copyPayLink(item)"><i class="el-icon-document-copy">支付链接</i></el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickEdit(item)"><i class="el-icon-edit">编辑</i></el-dropdown-item>
|
||||
<el-dropdown-item @click.native="copyPayLink(item)"><i class="el-icon-document-copy">{{ $t('pages.payApplication.action.paymentLink') }}</i></el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickEdit(item)"><i class="el-icon-edit">{{ $t('pages.payApplication.action.edit') }}</i></el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
@ -30,7 +30,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom nowrap-ellipsis">
|
||||
创建时间: {{ item.createTime | dateFormat }}
|
||||
{{ $t('pages.payApplication.table.createdAt') }}: {{ item.createTime | dateFormat }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -38,7 +38,7 @@
|
||||
|
||||
<div class="app-block">
|
||||
<div class="app-item flex-c app-create" @click="selectedRow={};appEditFormVisible=true;">
|
||||
<i class="el-icon-circle-plus" /> 创建新的应用
|
||||
<i class="el-icon-circle-plus" /> {{ $t('pages.payApplication.action.createApplication') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -2,17 +2,17 @@
|
||||
<div class="app-navigation">
|
||||
<div class="operation">
|
||||
<el-button class="el-icon-back" size="mini" @click="clickBack">
|
||||
返回
|
||||
{{ $t('pages.payApplication.action.back') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-tabs v-model="activeName">
|
||||
<el-tab-pane
|
||||
v-for="item in tables"
|
||||
:key="item.component"
|
||||
:label="item.title"
|
||||
:label="getTabTitle(item)"
|
||||
:name="item.component"
|
||||
>
|
||||
<span slot="label"><i :class="item.icon" /> {{ item.title }}</span>
|
||||
<span slot="label"><i :class="item.icon" /> {{ getTabTitle(item) }}</span>
|
||||
</el-tab-pane>
|
||||
<component :is="activeName" :app-info="appInfo" />
|
||||
</el-tabs>
|
||||
@ -37,12 +37,12 @@ export default {
|
||||
activeName: 'Commodity',
|
||||
tables: [
|
||||
{
|
||||
title: '商品管理',
|
||||
titleKey: 'pages.payApplication.tabs.commodity',
|
||||
icon: 'el-icon-shopping-bag-1',
|
||||
component: 'Commodity'
|
||||
},
|
||||
{
|
||||
title: '商品管理V2',
|
||||
titleKey: 'pages.payApplication.tabs.commodityV2',
|
||||
icon: 'el-icon-shopping-bag-1',
|
||||
component: 'CommodityV2'
|
||||
}
|
||||
@ -55,6 +55,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getTabTitle(item) {
|
||||
return item.titleKey ? this.$t(item.titleKey) : item.title
|
||||
},
|
||||
clickBack() {
|
||||
this.$emit('back')
|
||||
}
|
||||
|
||||
@ -12,12 +12,12 @@
|
||||
<div slot="title">
|
||||
<div class="flex-l">
|
||||
<sys-origin-icon :icon="row.selectApp.appCode" :desc="row.selectApp.appName" />
|
||||
{{ isUpdate ? '修改商品' : '创建商品' }}
|
||||
{{ isUpdate ? $t('pages.payApplication.dialog.editProduct') : $t('pages.payApplication.dialog.createProduct') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-edit">
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="100px">
|
||||
<el-form-item v-if="row.selectApp.appCode === 'ASWAT'" label="区域">
|
||||
<el-form ref="form" :model="form" :rules="localizedRules" label-width="100px">
|
||||
<el-form-item v-if="row.selectApp.appCode === 'ASWAT'" :label="$t('pages.payApplication.form.region')">
|
||||
<div class="flex-l">{{ regionName }}</div>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="售卖国家">
|
||||
@ -25,36 +25,36 @@
|
||||
<img v-if="row.country.icon" :src="row.country.icon" width="40"> {{ row.country.countryName }}
|
||||
</div>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="状态" prop="shelf">
|
||||
<el-form-item :label="$t('pages.payApplication.form.status')" prop="shelf">
|
||||
<el-select
|
||||
v-model="form.shelf"
|
||||
style="width:100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index ) in shelfStatus"
|
||||
v-for="(item, index ) in shelfStatusOptions"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!isUpdate" label="商品类型" prop="type">
|
||||
<el-form-item v-if="!isUpdate" :label="$t('pages.payApplication.form.productType')" prop="type">
|
||||
<el-select v-model="form.type" style="width:100%">
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="getProductTypeName(item)" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="金币数" prop="content">
|
||||
<el-input v-model="form.content" v-number placeholder="请输入金币数量" />
|
||||
<el-form-item :label="$t('pages.payApplication.form.goldAmount')" prop="content">
|
||||
<el-input v-model="form.content" v-number :placeholder="$t('pages.payApplication.placeholder.goldAmount')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="奖励数" prop="awardContent">
|
||||
<el-input v-model="form.awardContent" v-number placeholder="请输入奖励金币数量" />
|
||||
<el-form-item :label="$t('pages.payApplication.form.rewardAmount')" prop="awardContent">
|
||||
<el-input v-model="form.awardContent" v-number :placeholder="$t('pages.payApplication.placeholder.rewardAmount')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="售卖价格" prop="amountUsd">
|
||||
<el-input v-model.trim="form.amountUsd" placeholder="请输入商品价格" class="input-with-select" maxlength="10" @change="changeAmount">
|
||||
<el-form-item :label="$t('pages.payApplication.form.salePrice')" prop="amountUsd">
|
||||
<el-input v-model.trim="form.amountUsd" :placeholder="$t('pages.payApplication.placeholder.salePrice')" class="input-with-select" maxlength="10" @change="changeAmount">
|
||||
<template slot="append">USD</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="支付渠道">
|
||||
<el-form-item v-if="false" :label="$t('pages.payApplication.form.paymentChannel')">
|
||||
<div v-loading="associateLoading" />
|
||||
<el-collapse v-if="supportAmounts && supportAmounts.length > 0" v-model="activeNames">
|
||||
<el-collapse-item v-for="(item,index) in supportAmounts" :key="index" :name="item.channel.channelCode">
|
||||
@ -72,19 +72,19 @@
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :md="8" class="col" style="text-align: left;">
|
||||
<div>售卖价格: <strong>{{ computedAmount }}</strong> {{ row.country.currency }}</div>
|
||||
<div>售卖价格: <strong>{{ amountUsd }}</strong> USD</div>
|
||||
<div>{{ $t('pages.payApplication.form.salePrice') }}: <strong>{{ computedAmount }}</strong> {{ row.country.currency }}</div>
|
||||
<div>{{ $t('pages.payApplication.form.salePrice') }}: <strong>{{ amountUsd }}</strong> USD</div>
|
||||
</el-col>
|
||||
<el-col :md="8" class="col" style="text-align: left;">
|
||||
<div>
|
||||
最小限额: <strong>{{ aItem.countryChannelDetails.computedMinLimit }}</strong> {{ row.country.currency }}、
|
||||
最大限额: <strong>{{ aItem.countryChannelDetails.computedMaxLimit }} </strong>{{ row.country.currency }}、
|
||||
每日限额: <strong>{{ aItem.countryChannelDetails.computedDailyLimit }} </strong>{{ row.country.currency }}
|
||||
{{ $t('pages.payApplication.form.minLimit') }}: <strong>{{ aItem.countryChannelDetails.computedMinLimit }}</strong> {{ row.country.currency }}{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.maxLimit') }}: <strong>{{ aItem.countryChannelDetails.computedMaxLimit }} </strong>{{ row.country.currency }}{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.dailyLimit') }}: <strong>{{ aItem.countryChannelDetails.computedDailyLimit }} </strong>{{ row.country.currency }}
|
||||
</div>
|
||||
<div>
|
||||
最小限额: <strong>{{ aItem.countryChannelDetails.factoryMinLimit }}</strong> USD、
|
||||
最大限额: <strong>{{ aItem.countryChannelDetails.factoryMaxLimit }}</strong> USD、
|
||||
每日限额: <strong>{{ aItem.countryChannelDetails.factoryDailyLimit }}</strong> USD
|
||||
{{ $t('pages.payApplication.form.minLimit') }}: <strong>{{ aItem.countryChannelDetails.factoryMinLimit }}</strong> USD{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.maxLimit') }}: <strong>{{ aItem.countryChannelDetails.factoryMaxLimit }}</strong> USD{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.dailyLimit') }}: <strong>{{ aItem.countryChannelDetails.factoryDailyLimit }}</strong> USD
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -95,8 +95,8 @@
|
||||
</div>
|
||||
|
||||
<div slot="footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.payApplication.action.cancel') }}</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="submitForm()">{{ $t('pages.payApplication.action.save') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@ -117,14 +117,10 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段', trigger: 'blur' }
|
||||
]
|
||||
|
||||
return {
|
||||
shelfStatus: [
|
||||
{ value: true, name: '上架' },
|
||||
{ value: false, name: '下架' }
|
||||
{ value: true, labelKey: 'pages.payApplication.shelfStatus.true' },
|
||||
{ value: false, labelKey: 'pages.payApplication.shelfStatus.false' }
|
||||
],
|
||||
productTypeConfs,
|
||||
form: {
|
||||
@ -136,23 +132,6 @@ export default {
|
||||
regionId: '',
|
||||
shelf: ''
|
||||
},
|
||||
formRules: {
|
||||
applicationId: commonRules,
|
||||
content: commonRules,
|
||||
awardContent: commonRules,
|
||||
type: commonRules,
|
||||
shelf: commonRules,
|
||||
amountUsd: {
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (validPositiveNumberPointTwo(value)) {
|
||||
return callback()
|
||||
}
|
||||
return callback(new Error('请输入正确的正数/小数最多两位小数点'))
|
||||
}
|
||||
}
|
||||
},
|
||||
regionName: '',
|
||||
activeNames: '',
|
||||
submitLoading: false,
|
||||
@ -165,6 +144,34 @@ export default {
|
||||
computed: {
|
||||
isUpdate() {
|
||||
return this.row && this.row.id
|
||||
},
|
||||
shelfStatusOptions() {
|
||||
return this.shelfStatus.map(item => ({
|
||||
...item,
|
||||
label: this.$t(item.labelKey)
|
||||
}))
|
||||
},
|
||||
localizedRules() {
|
||||
const commonRules = [
|
||||
{ required: true, message: this.$t('pages.payApplication.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
applicationId: commonRules,
|
||||
content: commonRules,
|
||||
awardContent: commonRules,
|
||||
type: commonRules,
|
||||
shelf: commonRules,
|
||||
amountUsd: {
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (validPositiveNumberPointTwo(value)) {
|
||||
return callback()
|
||||
}
|
||||
return callback(new Error(this.$t('pages.payApplication.validation.positiveNumberPointTwo')))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -181,6 +188,11 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProductTypeName(item) {
|
||||
const key = `pages.payApplication.productTypes.${item.value}`
|
||||
const label = this.$t(key)
|
||||
return label === key ? item.name : label
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
},
|
||||
|
||||
@ -7,11 +7,11 @@
|
||||
class="filter-item"
|
||||
@change="changeType"
|
||||
>
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="getProductTypeName(item)" :value="item.value" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.applicationId"
|
||||
placeholder="应用"
|
||||
:placeholder="$t('pages.payApplication.placeholder.application')"
|
||||
style="width: 200px"
|
||||
class="filter-item"
|
||||
collapse-tags
|
||||
@ -31,7 +31,7 @@
|
||||
v-if="selectedApp.appCode === 'ASWAT'"
|
||||
v-model="listQuery.regionId"
|
||||
v-loading="loading"
|
||||
placeholder="区域"
|
||||
:placeholder="$t('pages.payApplication.placeholder.region')"
|
||||
style="width:120px;"
|
||||
class="filter-item"
|
||||
@change="changeRegion"
|
||||
@ -50,16 +50,16 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index ) in shelfStatus"
|
||||
v-for="(item, index ) in shelfStatusOptions"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-input
|
||||
v-model.trim="listQuery.id"
|
||||
v-number
|
||||
placeholder="商品ID"
|
||||
:placeholder="$t('pages.payApplication.placeholder.productId')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
@ -69,7 +69,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.payApplication.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -78,7 +78,7 @@
|
||||
:disabled="!listQuery.regionId"
|
||||
@click="createCommodity"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.payApplication.action.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@ -90,11 +90,11 @@
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column label="ID" prop="id" align="center" />
|
||||
<el-table-column label="区域" prop="regionName" align="center" />
|
||||
<el-table-column label="金币数" prop="content" align="center" />
|
||||
<el-table-column label="奖励数" prop="awardContent" align="center" />
|
||||
<el-table-column label="价格$" prop="amountUsd" align="center" />
|
||||
<el-table-column label="上/下架" prop="shelf" align="center">
|
||||
<el-table-column :label="$t('pages.payApplication.table.region')" prop="regionName" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.goldAmount')" prop="content" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.rewardAmount')" prop="awardContent" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.priceUsd')" prop="amountUsd" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.shelf')" prop="shelf" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.shelf"
|
||||
@ -104,9 +104,9 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="80">
|
||||
<el-table-column fixed="right" :label="$t('pages.payApplication.table.actions')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickEditCommodity(scope.row)">编辑</el-button>
|
||||
<el-button type="text" @click="clickEditCommodity(scope.row)">{{ $t('pages.payApplication.action.edit') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -148,8 +148,8 @@ export default {
|
||||
return {
|
||||
productTypeConfs,
|
||||
shelfStatus: [
|
||||
{ value: true, name: '上架' },
|
||||
{ value: false, name: '下架' }
|
||||
{ value: true, labelKey: 'pages.payApplication.shelfStatus.true' },
|
||||
{ value: false, labelKey: 'pages.payApplication.shelfStatus.false' }
|
||||
],
|
||||
appCommodityEditFormVisible: false,
|
||||
selectedEditFrom: {},
|
||||
@ -173,6 +173,14 @@ export default {
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
shelfStatusOptions() {
|
||||
return this.shelfStatus.map(item => ({
|
||||
...item,
|
||||
label: this.$t(item.labelKey)
|
||||
}))
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
appInfo: {
|
||||
handler(newVal) {
|
||||
@ -189,6 +197,11 @@ export default {
|
||||
this.listRegion()
|
||||
},
|
||||
methods: {
|
||||
getProductTypeName(item) {
|
||||
const key = `pages.payApplication.productTypes.${item.value}`
|
||||
const label = this.$t(key)
|
||||
return label === key ? item.name : label
|
||||
},
|
||||
handleSwitchChange(row) {
|
||||
switchShelfCommodity(row.id, row.shelf)
|
||||
.then((res) => {})
|
||||
|
||||
@ -12,33 +12,33 @@
|
||||
<div slot="title">
|
||||
<div class="flex-l">
|
||||
<sys-origin-icon :icon="row.selectApp.appCode" :desc="row.selectApp.appName" />
|
||||
{{ isUpdate ? '修改商品' : '创建商品' }}
|
||||
{{ isUpdate ? $t('pages.payApplication.dialog.editProduct') : $t('pages.payApplication.dialog.createProduct') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-edit">
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="100px">
|
||||
<el-form-item label="售卖国家">
|
||||
<el-form ref="form" :model="form" :rules="localizedRules" label-width="100px">
|
||||
<el-form-item :label="$t('pages.payApplication.form.saleCountry')">
|
||||
<div class="flex-l">
|
||||
<img v-if="row.country.icon" :src="row.country.icon" width="40"> {{ row.country.countryName }}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!isUpdate" label="商品类型" prop="type">
|
||||
<el-form-item v-if="!isUpdate" :label="$t('pages.payApplication.form.productType')" prop="type">
|
||||
<el-select v-model="form.type" style="width:100%">
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="getProductTypeName(item)" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="金币数" prop="content">
|
||||
<el-input v-model="form.content" v-number placeholder="请输入金币数量" />
|
||||
<el-form-item :label="$t('pages.payApplication.form.goldAmount')" prop="content">
|
||||
<el-input v-model="form.content" v-number :placeholder="$t('pages.payApplication.placeholder.goldAmount')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="奖励数" prop="awardContent">
|
||||
<el-input v-model="form.awardContent" v-number placeholder="请输入奖励金币数量" />
|
||||
<el-form-item :label="$t('pages.payApplication.form.rewardAmount')" prop="awardContent">
|
||||
<el-input v-model="form.awardContent" v-number :placeholder="$t('pages.payApplication.placeholder.rewardAmount')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="售卖价格" prop="amountUsd">
|
||||
<el-input v-model.trim="form.amountUsd" placeholder="请输入商品价格" class="input-with-select" maxlength="10" @change="changeAmount">
|
||||
<el-form-item :label="$t('pages.payApplication.form.salePrice')" prop="amountUsd">
|
||||
<el-input v-model.trim="form.amountUsd" :placeholder="$t('pages.payApplication.placeholder.salePrice')" class="input-with-select" maxlength="10" @change="changeAmount">
|
||||
<template slot="append">USD</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="支付渠道">
|
||||
<el-form-item :label="$t('pages.payApplication.form.paymentChannel')">
|
||||
<div v-loading="associateLoading" />
|
||||
<el-collapse v-if="supportAmounts && supportAmounts.length > 0" v-model="activeNames">
|
||||
<el-collapse-item v-for="(item,index) in supportAmounts" :key="index" :name="item.channel.channelCode">
|
||||
@ -56,19 +56,19 @@
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :md="8" class="col" style="text-align: left;">
|
||||
<div>售卖价格: <strong>{{ computedAmount }}</strong> {{ row.country.currency }}</div>
|
||||
<div>售卖价格: <strong>{{ amountUsd }}</strong> USD</div>
|
||||
<div>{{ $t('pages.payApplication.form.salePrice') }}: <strong>{{ computedAmount }}</strong> {{ row.country.currency }}</div>
|
||||
<div>{{ $t('pages.payApplication.form.salePrice') }}: <strong>{{ amountUsd }}</strong> USD</div>
|
||||
</el-col>
|
||||
<el-col :md="8" class="col" style="text-align: left;">
|
||||
<div>
|
||||
最小限额: <strong>{{ aItem.countryChannelDetails.computedMinLimit }}</strong> {{ row.country.currency }}、
|
||||
最大限额: <strong>{{ aItem.countryChannelDetails.computedMaxLimit }} </strong>{{ row.country.currency }}、
|
||||
每日限额: <strong>{{ aItem.countryChannelDetails.computedDailyLimit }} </strong>{{ row.country.currency }}
|
||||
{{ $t('pages.payApplication.form.minLimit') }}: <strong>{{ aItem.countryChannelDetails.computedMinLimit }}</strong> {{ row.country.currency }}{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.maxLimit') }}: <strong>{{ aItem.countryChannelDetails.computedMaxLimit }} </strong>{{ row.country.currency }}{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.dailyLimit') }}: <strong>{{ aItem.countryChannelDetails.computedDailyLimit }} </strong>{{ row.country.currency }}
|
||||
</div>
|
||||
<div>
|
||||
最小限额: <strong>{{ aItem.countryChannelDetails.factoryMinLimit }}</strong> USD、
|
||||
最大限额: <strong>{{ aItem.countryChannelDetails.factoryMaxLimit }}</strong> USD、
|
||||
每日限额: <strong>{{ aItem.countryChannelDetails.factoryDailyLimit }}</strong> USD
|
||||
{{ $t('pages.payApplication.form.minLimit') }}: <strong>{{ aItem.countryChannelDetails.factoryMinLimit }}</strong> USD{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.maxLimit') }}: <strong>{{ aItem.countryChannelDetails.factoryMaxLimit }}</strong> USD{{ $t('pages.payApplication.word.separator') }}
|
||||
{{ $t('pages.payApplication.form.dailyLimit') }}: <strong>{{ aItem.countryChannelDetails.factoryDailyLimit }}</strong> USD
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -79,8 +79,8 @@
|
||||
</div>
|
||||
|
||||
<div slot="footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.payApplication.action.cancel') }}</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="submitForm()">{{ $t('pages.payApplication.action.save') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@ -100,10 +100,6 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段', trigger: 'blur' }
|
||||
]
|
||||
|
||||
return {
|
||||
productTypeConfs,
|
||||
form: {
|
||||
@ -114,23 +110,6 @@ export default {
|
||||
amountUsd: '',
|
||||
type: ''
|
||||
},
|
||||
formRules: {
|
||||
applicationId: commonRules,
|
||||
payCountryId: commonRules,
|
||||
content: commonRules,
|
||||
awardContent: commonRules,
|
||||
type: commonRules,
|
||||
amountUsd: {
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (validPositiveNumberPointTwo(value)) {
|
||||
return callback()
|
||||
}
|
||||
return callback(new Error('请输入正确的正数/小数最多两位小数点'))
|
||||
}
|
||||
}
|
||||
},
|
||||
activeNames: '',
|
||||
submitLoading: false,
|
||||
associateLoading: false,
|
||||
@ -142,6 +121,28 @@ export default {
|
||||
computed: {
|
||||
isUpdate() {
|
||||
return this.row && this.row.id
|
||||
},
|
||||
localizedRules() {
|
||||
const commonRules = [
|
||||
{ required: true, message: this.$t('pages.payApplication.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
applicationId: commonRules,
|
||||
payCountryId: commonRules,
|
||||
content: commonRules,
|
||||
awardContent: commonRules,
|
||||
type: commonRules,
|
||||
amountUsd: {
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (validPositiveNumberPointTwo(value)) {
|
||||
return callback()
|
||||
}
|
||||
return callback(new Error(this.$t('pages.payApplication.validation.positiveNumberPointTwo')))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -157,6 +158,11 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProductTypeName(item) {
|
||||
const key = `pages.payApplication.productTypes.${item.value}`
|
||||
const label = this.$t(key)
|
||||
return label === key ? item.name : label
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
},
|
||||
|
||||
@ -7,11 +7,11 @@
|
||||
class="filter-item"
|
||||
@change="changeType"
|
||||
>
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="(item,index) in productTypeConfs" :key="index" :label="getProductTypeName(item)" :value="item.value" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.applicationId"
|
||||
placeholder="应用"
|
||||
:placeholder="$t('pages.payApplication.placeholder.application')"
|
||||
style="width: 200px"
|
||||
class="filter-item"
|
||||
collapse-tags
|
||||
@ -30,7 +30,7 @@
|
||||
<el-select
|
||||
v-model="listQuery.payCountryId"
|
||||
v-loading="loadingCountry"
|
||||
placeholder="国家"
|
||||
:placeholder="$t('pages.payApplication.placeholder.country')"
|
||||
style="width: 200px"
|
||||
class="filter-item"
|
||||
collapse-tags
|
||||
@ -53,16 +53,16 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index ) in shelfStatus"
|
||||
v-for="(item, index ) in shelfStatusOptions"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-input
|
||||
v-model.trim="listQuery.id"
|
||||
v-number
|
||||
placeholder="商品ID"
|
||||
:placeholder="$t('pages.payApplication.placeholder.productId')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
@ -72,7 +72,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.payApplication.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -81,7 +81,7 @@
|
||||
:disabled="!listQuery.payCountryId"
|
||||
@click="createCommodity"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.payApplication.action.add') }}
|
||||
</el-button>
|
||||
|
||||
</div>
|
||||
@ -94,10 +94,10 @@
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column label="ID" prop="id" align="center" />
|
||||
<el-table-column label="金币数" prop="content" align="center" />
|
||||
<el-table-column label="奖励数" prop="awardContent" align="center" />
|
||||
<el-table-column label="价格$" prop="amountUsd" align="center" />
|
||||
<el-table-column label="上/下架" prop="shelf" align="center">
|
||||
<el-table-column :label="$t('pages.payApplication.table.goldAmount')" prop="content" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.rewardAmount')" prop="awardContent" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.priceUsd')" prop="amountUsd" align="center" />
|
||||
<el-table-column :label="$t('pages.payApplication.table.shelf')" prop="shelf" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.shelf"
|
||||
@ -107,9 +107,9 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="80">
|
||||
<el-table-column fixed="right" :label="$t('pages.payApplication.table.actions')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickEditCommodity(scope.row)">编辑</el-button>
|
||||
<el-button type="text" @click="clickEditCommodity(scope.row)">{{ $t('pages.payApplication.action.edit') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -149,8 +149,8 @@ export default {
|
||||
return {
|
||||
productTypeConfs,
|
||||
shelfStatus: [
|
||||
{ value: true, name: '上架' },
|
||||
{ value: false, name: '下架' }
|
||||
{ value: true, labelKey: 'pages.payApplication.shelfStatus.true' },
|
||||
{ value: false, labelKey: 'pages.payApplication.shelfStatus.false' }
|
||||
],
|
||||
appCommodityEditFormVisible: false,
|
||||
selectedEditFrom: {},
|
||||
@ -172,6 +172,14 @@ export default {
|
||||
loadingCountry: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
shelfStatusOptions() {
|
||||
return this.shelfStatus.map(item => ({
|
||||
...item,
|
||||
label: this.$t(item.labelKey)
|
||||
}))
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
appInfo: {
|
||||
handler(newVal) {
|
||||
@ -188,6 +196,11 @@ export default {
|
||||
this.loadOpenCountry()
|
||||
},
|
||||
methods: {
|
||||
getProductTypeName(item) {
|
||||
const key = `pages.payApplication.productTypes.${item.value}`
|
||||
const label = this.$t(key)
|
||||
return label === key ? item.name : label
|
||||
},
|
||||
handleSwitchChange(row) {
|
||||
switchShelfCommodity(row.id, row.shelf)
|
||||
.then((res) => {})
|
||||
|
||||
@ -77,21 +77,21 @@ export default {
|
||||
},
|
||||
clickEdit() {
|
||||
const that = this
|
||||
that.$prompt('请输入新的美元汇率', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
that.$prompt(this.$t('pages.payApplication.prompt.inputExchangeRate'), this.$t('pages.payApplication.prompt.title'), {
|
||||
confirmButtonText: this.$t('pages.payApplication.action.confirm'),
|
||||
cancelButtonText: this.$t('pages.payApplication.action.cancel'),
|
||||
inputPattern: /^\d{1,5}(\.\d{0,2})?$/,
|
||||
inputErrorMessage: '范围0~99999小数最多两位',
|
||||
inputErrorMessage: this.$t('pages.payApplication.validation.exchangeRateRange'),
|
||||
closeOnClickModal: false
|
||||
}).then(({ value }) => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '你输入的是: ' + value
|
||||
message: this.$t('pages.payApplication.message.inputValue', { value })
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '取消输入'
|
||||
message: this.$t('pages.payApplication.message.inputCanceled')
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="app-order">
|
||||
开发中近期期待...
|
||||
{{ $t('pages.payApplication.word.comingSoon') }}
|
||||
<!-- <div class="filter-container">
|
||||
<el-input
|
||||
v-model.trim="listQuery.userId"
|
||||
@ -107,21 +107,21 @@ export default {
|
||||
},
|
||||
clickEdit() {
|
||||
const that = this
|
||||
that.$prompt('请输入新的美元汇率', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
that.$prompt(this.$t('pages.payApplication.prompt.inputExchangeRate'), this.$t('pages.payApplication.prompt.title'), {
|
||||
confirmButtonText: this.$t('pages.payApplication.action.confirm'),
|
||||
cancelButtonText: this.$t('pages.payApplication.action.cancel'),
|
||||
inputPattern: /^\d{1,5}(\.\d{0,2})?$/,
|
||||
inputErrorMessage: '范围0~99999小数最多两位',
|
||||
inputErrorMessage: this.$t('pages.payApplication.validation.exchangeRateRange'),
|
||||
closeOnClickModal: false
|
||||
}).then(({ value }) => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '你输入的是: ' + value
|
||||
message: this.$t('pages.payApplication.message.inputValue', { value })
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '取消输入'
|
||||
message: this.$t('pages.payApplication.message.inputCanceled')
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="associated-channels">
|
||||
<el-dialog
|
||||
title="关联渠道2"
|
||||
:title="$t('pages.payOpenCountry.associated.dialogTitle')"
|
||||
:visible="true"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -24,8 +24,8 @@
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
{{ row.country.aliasName }}、 国家货币: {{ row.currency }}、
|
||||
美元汇率: {{ row.usdExchangeRate }}
|
||||
{{ row.country.aliasName }}{{ $t('pages.payOpenCountry.associated.separator') }} {{ $t('pages.payOpenCountry.associated.currency') }}: {{ row.currency }}{{ $t('pages.payOpenCountry.associated.separator') }}
|
||||
{{ $t('pages.payOpenCountry.associated.usdExchangeRate') }}: {{ row.usdExchangeRate }}
|
||||
|
||||
<!-- 添加渠道 按钮 -->
|
||||
<div style="margin-left: 20px;">
|
||||
@ -96,13 +96,13 @@
|
||||
<el-col :md="20">
|
||||
<!-- 最小额度 -->
|
||||
<el-col :md="8" class="channel-item-form">
|
||||
<el-form-item label="最小额度">
|
||||
<el-form-item :label="$t('pages.payOpenCountry.associated.form.minLimit')">
|
||||
<el-input
|
||||
v-model.trim="
|
||||
aItem.countryChannelDetails.factoryMinLimit
|
||||
"
|
||||
:disabled="aItem.disabled"
|
||||
placeholder="最小限额"
|
||||
:placeholder="$t('pages.payOpenCountry.associated.placeholder.minLimit')"
|
||||
class="input-with-select"
|
||||
maxlength="10"
|
||||
@change="
|
||||
@ -118,13 +118,13 @@
|
||||
|
||||
<!-- 最大额度 -->
|
||||
<el-col :md="8" class="channel-item-form">
|
||||
<el-form-item label="最大额度">
|
||||
<el-form-item :label="$t('pages.payOpenCountry.associated.form.maxLimit')">
|
||||
<el-input
|
||||
v-model.trim="
|
||||
aItem.countryChannelDetails.factoryMaxLimit
|
||||
"
|
||||
:disabled="aItem.disabled"
|
||||
placeholder="最小限额"
|
||||
:placeholder="$t('pages.payOpenCountry.associated.placeholder.maxLimit')"
|
||||
class="input-with-select"
|
||||
maxlength="10"
|
||||
@change="
|
||||
@ -140,13 +140,13 @@
|
||||
|
||||
<!-- 每日额度 -->
|
||||
<el-col :md="8" class="channel-item-form">
|
||||
<el-form-item label="每日限额">
|
||||
<el-form-item :label="$t('pages.payOpenCountry.associated.form.dailyLimit')">
|
||||
<el-input
|
||||
v-model.trim="
|
||||
aItem.countryChannelDetails.factoryDailyLimit
|
||||
"
|
||||
:disabled="aItem.disabled"
|
||||
placeholder="每日限额"
|
||||
:placeholder="$t('pages.payOpenCountry.associated.placeholder.dailyLimit')"
|
||||
class="input-with-select"
|
||||
maxlength="10"
|
||||
@change="
|
||||
@ -162,11 +162,11 @@
|
||||
|
||||
<!-- 渠道CODE -->
|
||||
<el-col :md="8" class="channel-item-form">
|
||||
<el-form-item label="第三方渠道CODE">
|
||||
<el-form-item :label="$t('pages.payOpenCountry.associated.form.factoryChannel')">
|
||||
<el-input
|
||||
v-model="aItem.countryChannelDetails.factoryChannel"
|
||||
:disabled="aItem.disabled"
|
||||
placeholder="请输入第三方厂商渠道CODE"
|
||||
:placeholder="$t('pages.payOpenCountry.associated.placeholder.factoryChannel')"
|
||||
@change="
|
||||
val => changeFactoryVal(aItem, 'factoryChannel')
|
||||
"
|
||||
@ -176,13 +176,13 @@
|
||||
|
||||
<!-- 货币小数点 -->
|
||||
<el-col :md="8" class="channel-item-form">
|
||||
<el-form-item label="货币小数点(暂时没用)">
|
||||
<el-form-item :label="$t('pages.payOpenCountry.associated.form.currencyPoint')">
|
||||
<el-input
|
||||
v-model="
|
||||
aItem.countryChannelDetails.factoryCurrencyPoint
|
||||
"
|
||||
:disabled="aItem.disabled"
|
||||
placeholder="货币小数点,默认2位"
|
||||
:placeholder="$t('pages.payOpenCountry.associated.placeholder.currencyPoint')"
|
||||
@change="
|
||||
val => changeFactoryVal(aItem, 'factoryCurrencyPoint')
|
||||
"
|
||||
@ -192,12 +192,12 @@
|
||||
|
||||
<!-- 是否启动 -->
|
||||
<el-col :md="8" class="channel-item-form">
|
||||
<el-form-item label="是否启动">
|
||||
<el-form-item :label="$t('pages.payOpenCountry.associated.form.enabled')">
|
||||
<el-switch
|
||||
v-model="aItem.countryChannelDetails.shelf"
|
||||
:disabled="aItem.disabled"
|
||||
active-text="开"
|
||||
inactive-text="关"
|
||||
:active-text="$t('pages.payOpenCountry.associated.switch.on')"
|
||||
:inactive-text="$t('pages.payOpenCountry.associated.switch.off')"
|
||||
@change="changeFactoryVal(aItem, 'shelf')"
|
||||
/>
|
||||
</el-form-item>
|
||||
@ -260,13 +260,13 @@ export default {
|
||||
) {
|
||||
const regx = /^\d{1,8}(\.\d{0,2})?$/;
|
||||
if (!regx.test(item.countryChannelDetails[field])) {
|
||||
this.$opsMessage.fail("输入支持范围0 ~ 99999999最多2位小数");
|
||||
this.$opsMessage.fail(this.$t('pages.payOpenCountry.validation.amountRange'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (field === "factoryCurrencyPoint") {
|
||||
if (item.factoryCurrencyPoint < 0 || item.factoryCurrencyPoint > 6) {
|
||||
this.$opsMessage.fail("货币小数点范围0 ~ 6");
|
||||
this.$opsMessage.fail(this.$t('pages.payOpenCountry.validation.currencyPointRange'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="associated-channels">
|
||||
<el-dialog
|
||||
title="国家选择"
|
||||
:title="$t('pages.payOpenCountry.countrySelect.dialogTitle')"
|
||||
:visible="true"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -16,12 +16,12 @@
|
||||
v-loading="countryValuesLoading"
|
||||
style="text-align: left; display: inline-block"
|
||||
filterable
|
||||
:titles="['可选', '已选']"
|
||||
:titles="[$t('pages.payOpenCountry.countrySelect.available'), $t('pages.payOpenCountry.countrySelect.selected')]"
|
||||
:format="{
|
||||
noChecked: '${total}',
|
||||
hasChecked: '${checked}/${total}'
|
||||
}"
|
||||
:button-texts="['删除','开通']"
|
||||
:button-texts="[$t('pages.payOpenCountry.action.delete'), $t('pages.payOpenCountry.action.enable')]"
|
||||
:props="{key: 'id', label: 'aliasName'}"
|
||||
:data="countrys"
|
||||
@change="handleChange"
|
||||
|
||||
@ -10,9 +10,9 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in shelfStatus"
|
||||
v-for="(item, index) in shelfStatusOptions"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
@ -24,7 +24,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="createCountry"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.payOpenCountry.action.add') }}
|
||||
</el-button>
|
||||
|
||||
<!-- 刷新 按钮 -->
|
||||
@ -34,7 +34,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
刷新
|
||||
{{ $t('pages.payOpenCountry.action.refresh') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@ -42,12 +42,12 @@
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.payOpenCountry.word.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<!-- 国家信息 -->
|
||||
<el-table-column width="200" label="国家信息" align="center">
|
||||
<el-table-column width="200" :label="$t('pages.payOpenCountry.table.countryInfo')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-image
|
||||
style="width: 45px; height: 30px"
|
||||
@ -64,16 +64,16 @@
|
||||
<!-- 国家名称 -->
|
||||
<el-table-column
|
||||
width="200"
|
||||
label="国家名称"
|
||||
:label="$t('pages.payOpenCountry.table.countryName')"
|
||||
prop="country.aliasName"
|
||||
align="center"
|
||||
/>
|
||||
|
||||
<!-- 国家货币 -->
|
||||
<el-table-column label="国家货币" prop="currency" align="center">
|
||||
<el-table-column :label="$t('pages.payOpenCountry.table.currency')" prop="currency" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickInputCurrency(scope.row)">
|
||||
<span v-if="!scope.row.currency">点击输入货币</span>
|
||||
<span v-if="!scope.row.currency">{{ $t('pages.payOpenCountry.action.inputCurrency') }}</span>
|
||||
<span v-else>{{ scope.row.currency }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
@ -81,30 +81,30 @@
|
||||
|
||||
<!-- 汇率 -->
|
||||
<el-table-column
|
||||
label="美元概率(?=$)"
|
||||
:label="$t('pages.payOpenCountry.table.usdExchangeRate')"
|
||||
prop="usdExchangeRate"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickUpdateRate(scope.row)">
|
||||
<span v-if="!scope.row.usdExchangeRate">点击入汇率</span>
|
||||
<span v-if="!scope.row.usdExchangeRate">{{ $t('pages.payOpenCountry.action.inputExchangeRate') }}</span>
|
||||
<span v-else>{{ scope.row.usdExchangeRate }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 展示权重 -->
|
||||
<el-table-column label="展示权重" prop="sort" align="center">
|
||||
<el-table-column :label="$t('pages.payOpenCountry.table.sortWeight')" prop="sort" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickInputUpdateSort(scope.row)">
|
||||
<span v-if="!scope.row.sort">点击输入权重</span>
|
||||
<span v-if="!scope.row.sort">{{ $t('pages.payOpenCountry.action.inputSortWeight') }}</span>
|
||||
<span v-else>{{ scope.row.sort }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 上下架 -->
|
||||
<el-table-column label="上/下架" align="center">
|
||||
<el-table-column :label="$t('pages.payOpenCountry.table.shelf')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.shelf"
|
||||
@ -116,11 +116,11 @@
|
||||
</el-table-column>
|
||||
|
||||
<!-- 操作 -->
|
||||
<el-table-column fixed="right" label="操作" align="center" width="100">
|
||||
<el-table-column fixed="right" :label="$t('pages.payOpenCountry.table.actions')" align="center" width="100">
|
||||
<!-- 关联渠道 -->
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickAssociateChannel(scope.row)"
|
||||
>关联渠道</el-button
|
||||
>{{ $t('pages.payOpenCountry.action.associateChannels') }}</el-button
|
||||
>
|
||||
<!-- <el-button type="text" @click="clickAssociateChannelDetails(scope.row)">详情</el-button> -->
|
||||
</template>
|
||||
@ -166,8 +166,8 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
shelfStatus: [
|
||||
{ value: true, name: "上架" },
|
||||
{ value: false, name: "下架" }
|
||||
{ value: true, name: "Enabled" },
|
||||
{ value: false, name: "Disabled" }
|
||||
],
|
||||
countrySelectVisible: false,
|
||||
formAssociatedChannelVisible: false,
|
||||
@ -191,6 +191,14 @@ export default {
|
||||
created() {
|
||||
this.renderData();
|
||||
},
|
||||
computed: {
|
||||
shelfStatusOptions() {
|
||||
return this.shelfStatus.map(item => ({
|
||||
...item,
|
||||
label: this.getShelfStatusName(item.value, item.name)
|
||||
}));
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
renderData(isClean) {
|
||||
const that = this;
|
||||
@ -225,11 +233,11 @@ export default {
|
||||
clickInputUpdateSort(row) {
|
||||
const that = this;
|
||||
that
|
||||
.$prompt("请输入新的权重数", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
.$prompt(this.$t('pages.payOpenCountry.prompt.inputSortWeight'), this.$t('pages.payOpenCountry.prompt.title'), {
|
||||
confirmButtonText: this.$t('pages.payOpenCountry.action.confirm'),
|
||||
cancelButtonText: this.$t('pages.payOpenCountry.action.cancel'),
|
||||
inputPattern: /^\d{1,5}$/,
|
||||
inputErrorMessage: "范围0~99999小数最多两位",
|
||||
inputErrorMessage: this.$t('pages.payOpenCountry.validation.sortRange'),
|
||||
closeOnClickModal: false
|
||||
})
|
||||
.then(({ value }) => {
|
||||
@ -248,9 +256,9 @@ export default {
|
||||
clickInputCurrency(row) {
|
||||
const that = this;
|
||||
that
|
||||
.$prompt("请输入新的国家货币Code", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
.$prompt(this.$t('pages.payOpenCountry.prompt.inputCurrency'), this.$t('pages.payOpenCountry.prompt.title'), {
|
||||
confirmButtonText: this.$t('pages.payOpenCountry.action.confirm'),
|
||||
cancelButtonText: this.$t('pages.payOpenCountry.action.cancel'),
|
||||
closeOnClickModal: false
|
||||
})
|
||||
.then(({ value }) => {
|
||||
@ -269,11 +277,11 @@ export default {
|
||||
clickUpdateRate(row) {
|
||||
const that = this;
|
||||
that
|
||||
.$prompt("请输入新的美元汇率", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
.$prompt(this.$t('pages.payOpenCountry.prompt.inputExchangeRate'), this.$t('pages.payOpenCountry.prompt.title'), {
|
||||
confirmButtonText: this.$t('pages.payOpenCountry.action.confirm'),
|
||||
cancelButtonText: this.$t('pages.payOpenCountry.action.cancel'),
|
||||
inputPattern: /^\d{1,5}(\.\d{0,8})?$/,
|
||||
inputErrorMessage: "范围0~99999小数最多八位",
|
||||
inputErrorMessage: this.$t('pages.payOpenCountry.validation.exchangeRateRange'),
|
||||
closeOnClickModal: false
|
||||
})
|
||||
.then(({ value }) => {
|
||||
@ -295,6 +303,11 @@ export default {
|
||||
that.formAssociatedChannelVisible = true;
|
||||
},
|
||||
clickAssociateChannelDetails() {},
|
||||
getShelfStatusName(value, fallback) {
|
||||
const key = `pages.payOpenCountry.shelfStatus.${value}`;
|
||||
const translatedName = this.$t(key);
|
||||
return translatedName === key ? fallback : translatedName;
|
||||
},
|
||||
handleSwitchChange(row) {
|
||||
updatePayOpenCountyShelf(row.id, row.shelf)
|
||||
.then(res => {})
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.payRegionRelation.placeholder.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="changeSysOrigin"
|
||||
@ -21,7 +21,7 @@
|
||||
<el-select
|
||||
v-model="listQuery.region"
|
||||
v-loading="loading"
|
||||
placeholder="区域"
|
||||
:placeholder="$t('pages.payRegionRelation.placeholder.region')"
|
||||
style="width:120px;"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@ -36,15 +36,15 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.showcase"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.payRegionRelation.placeholder.status')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in productConfigShowcase"
|
||||
v-for="item in productConfigShowcaseOptions"
|
||||
:key="item.value"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
@ -55,7 +55,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.payRegionRelation.action.search') }}
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
@ -64,32 +64,32 @@
|
||||
icon="el-icon-edit"
|
||||
@click="handleCreate"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.payRegionRelation.action.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.payRegionRelation.word.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.payRegionRelation.table.system')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="regionName" label="区域" align="center" width="250" />
|
||||
<el-table-column prop="relationDesc" label="关联数据" align="center" />
|
||||
<el-table-column prop="showcase" label="状态" align="center">
|
||||
<el-table-column prop="regionName" :label="$t('pages.payRegionRelation.table.region')" align="center" width="250" />
|
||||
<el-table-column prop="relationDesc" :label="$t('pages.payRegionRelation.table.relatedData')" align="center" />
|
||||
<el-table-column prop="showcase" :label="$t('pages.payRegionRelation.table.status')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.showcase ? '已上架' : '已下架' }}</span>
|
||||
<span>{{ scope.row.showcase ? $t('pages.payRegionRelation.status.enabled') : $t('pages.payRegionRelation.status.disabled') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center">
|
||||
<el-table-column fixed="right" :label="$t('pages.payRegionRelation.table.actions')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<el-button type="text" @click.native="handlUpdate(scope.row)">修改</el-button>
|
||||
<el-button type="text" @click.native="handlUpdate(scope.row)">{{ $t('pages.payRegionRelation.action.edit') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -102,7 +102,7 @@
|
||||
@pagination="renderData"
|
||||
/>
|
||||
<el-dialog
|
||||
:title="textOptTitle"
|
||||
:title="$t(textOptTitle)"
|
||||
:visible.sync="formVisible"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -112,8 +112,8 @@
|
||||
>
|
||||
<div v-loading="submitLoading">
|
||||
<el-form ref="form" :model="form" label-width="110px" :rules="rules">
|
||||
<el-form-item prop="region" label="区域">
|
||||
<el-select v-model="form.regionId" placeholder="请选择" style="width:100%;">
|
||||
<el-form-item prop="region" :label="$t('pages.payRegionRelation.form.region')">
|
||||
<el-select v-model="form.regionId" :placeholder="$t('pages.payRegionRelation.placeholder.select')" style="width:100%;">
|
||||
<el-option
|
||||
v-for="(item, index) in regions"
|
||||
:key="index"
|
||||
@ -122,8 +122,8 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.id" prop="relationIds" label="开通国家">
|
||||
<el-select v-model="form.relationIds" placeholder="请选择" style="width:100%;">
|
||||
<el-form-item v-if="form.id" prop="relationIds" :label="$t('pages.payRegionRelation.form.enabledCountries')">
|
||||
<el-select v-model="form.relationIds" :placeholder="$t('pages.payRegionRelation.placeholder.select')" style="width:100%;">
|
||||
<el-option
|
||||
v-for="(item, index) in countryList"
|
||||
:key="index"
|
||||
@ -137,8 +137,8 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!form.id" prop="relationIds" label="开通国家">
|
||||
<el-select v-model="form.relationIds" multiple placeholder="请选择" style="width:100%;">
|
||||
<el-form-item v-if="!form.id" prop="relationIds" :label="$t('pages.payRegionRelation.form.enabledCountries')">
|
||||
<el-select v-model="form.relationIds" multiple :placeholder="$t('pages.payRegionRelation.placeholder.select')" style="width:100%;">
|
||||
<el-option
|
||||
v-for="(item, index) in countryList"
|
||||
:key="index"
|
||||
@ -152,24 +152,24 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="showcase">
|
||||
<el-form-item :label="$t('pages.payRegionRelation.form.status')" prop="showcase">
|
||||
<el-select
|
||||
v-model="form.showcase"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.payRegionRelation.placeholder.status')"
|
||||
class="filter-item"
|
||||
style="width:100%;"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in productConfigShowcase"
|
||||
v-for="item in productConfigShowcaseOptions"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm()">{{ $t('pages.payRegionRelation.action.save') }}</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.payRegionRelation.action.cancel') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -203,7 +203,7 @@ export default {
|
||||
loadingCountry: false,
|
||||
thisRow: {},
|
||||
formVisible: false,
|
||||
textOptTitle: '',
|
||||
textOptTitle: 'pages.payRegionRelation.dialog.addTitle',
|
||||
regions: [],
|
||||
countryList: [],
|
||||
form: getFormData(),
|
||||
@ -219,19 +219,27 @@ export default {
|
||||
relationId: '',
|
||||
region: '',
|
||||
showcase: true
|
||||
},
|
||||
rules: {
|
||||
relationIds: [
|
||||
{ required: true, message: '请选择关联数据', trigger: 'blur' }
|
||||
],
|
||||
regionId: [
|
||||
{ required: true, message: '请选择区域', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
...mapGetters(['permissionsSysOriginPlatforms']),
|
||||
productConfigShowcaseOptions() {
|
||||
return this.productConfigShowcase.map(item => ({
|
||||
...item,
|
||||
label: this.getShowcaseName(item.value, item.name)
|
||||
}))
|
||||
},
|
||||
rules() {
|
||||
return {
|
||||
relationIds: [
|
||||
{ required: true, message: this.$t('pages.payRegionRelation.validation.selectRelatedData'), trigger: 'blur' }
|
||||
],
|
||||
regionId: [
|
||||
{ required: true, message: this.$t('pages.payRegionRelation.validation.selectRegion'), trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const that = this
|
||||
@ -283,13 +291,13 @@ export default {
|
||||
this.renderData(true)
|
||||
},
|
||||
handleCreate() {
|
||||
this.textOptTitle = '新增内购产品'
|
||||
this.textOptTitle = 'pages.payRegionRelation.dialog.addTitle'
|
||||
this.formVisible = true
|
||||
this.form.relationIds = []
|
||||
this.form = getFormData()
|
||||
},
|
||||
handlUpdate(row) {
|
||||
this.textOptTitle = '修改内购产品'
|
||||
this.textOptTitle = 'pages.payRegionRelation.dialog.editTitle'
|
||||
this.formVisible = true
|
||||
this.form = Object.assign(this.form, row)
|
||||
this.form.relationIds = row.relationId
|
||||
@ -305,6 +313,11 @@ export default {
|
||||
this.listRegion()
|
||||
this.handleSearch()
|
||||
},
|
||||
getShowcaseName(value, fallback) {
|
||||
const key = `pages.payRegionRelation.statusOptions.${value}`
|
||||
const translatedName = this.$t(key)
|
||||
return translatedName === key ? fallback : translatedName
|
||||
},
|
||||
submitForm() {
|
||||
const that = this
|
||||
that.$refs.form.validate(valid => {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.productV2.placeholder.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="changeSysOrigin"
|
||||
@ -20,7 +20,7 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.platform"
|
||||
placeholder="支付平台"
|
||||
:placeholder="$t('pages.productV2.placeholder.paymentPlatform')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -34,22 +34,22 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.showcase"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.productV2.placeholder.status')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in productConfigShowcase"
|
||||
v-for="item in productConfigShowcaseOptions"
|
||||
:key="item.value"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.region"
|
||||
v-loading="loading"
|
||||
placeholder="区域"
|
||||
:placeholder="$t('pages.productV2.placeholder.region')"
|
||||
style="width:120px;"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -68,7 +68,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.productV2.action.search') }}
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
@ -77,7 +77,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="handleCreate"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.productV2.action.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -87,35 +87,35 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.productV2.table.system')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="productPackage" label="包名" align="center" width="250" />
|
||||
<el-table-column prop="unitPrice" label="产品单价" align="center" />
|
||||
<el-table-column prop="obtainCandy" label="获得糖果数量" align="center" />
|
||||
<el-table-column prop="rewardCandy" label="奖励糖果" align="center" />
|
||||
<el-table-column prop="platform" label="平台" align="center" />
|
||||
<el-table-column prop="regionNameStr" label="区域" align="center" />
|
||||
<el-table-column prop="description" label="描述" align="center" />
|
||||
<el-table-column prop="sort" label="序号" align="center" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center">
|
||||
<el-table-column prop="productPackage" :label="$t('pages.productV2.table.packageName')" align="center" width="250" />
|
||||
<el-table-column prop="unitPrice" :label="$t('pages.productV2.table.unitPrice')" align="center" />
|
||||
<el-table-column prop="obtainCandy" :label="$t('pages.productV2.table.obtainCandy')" align="center" />
|
||||
<el-table-column prop="rewardCandy" :label="$t('pages.productV2.table.rewardCandy')" align="center" />
|
||||
<el-table-column prop="platform" :label="$t('pages.productV2.table.platform')" align="center" />
|
||||
<el-table-column prop="regionNameStr" :label="$t('pages.productV2.table.region')" align="center" />
|
||||
<el-table-column prop="description" :label="$t('pages.productV2.table.description')" align="center" />
|
||||
<el-table-column prop="sort" :label="$t('pages.productV2.table.sort')" align="center" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.productV2.table.createdAt')" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center">
|
||||
<el-table-column fixed="right" :label="$t('pages.productV2.table.actions')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<el-button type="text" @click.native="handlUpdate(scope.row)">修改</el-button>
|
||||
<el-button type="text" @click.native="handlUpdate(scope.row)">{{ $t('pages.productV2.action.edit') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-dialog
|
||||
:title="textOptTitle"
|
||||
:title="dialogTitle"
|
||||
:visible.sync="formVisible"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -124,9 +124,9 @@
|
||||
width="40%"
|
||||
>
|
||||
<div v-loading="submitLoading">
|
||||
<el-form ref="form" :model="form" label-width="110px" :rules="rules">
|
||||
<el-form-item label="平台" prop="platform">
|
||||
<el-select v-model="form.platform" placeholder="支付平台" style="width:100%;">
|
||||
<el-form ref="form" :model="form" label-width="110px" :rules="localizedRules">
|
||||
<el-form-item :label="$t('pages.productV2.form.platform')" prop="platform">
|
||||
<el-select v-model="form.platform" :placeholder="$t('pages.productV2.placeholder.paymentPlatform')" style="width:100%;">
|
||||
<el-option
|
||||
v-for="item in platformOriginsV2"
|
||||
:key="item.value"
|
||||
@ -135,8 +135,8 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="regionList" label="区域">
|
||||
<el-select v-model="form.regionList" multiple placeholder="请选择" style="width:100%;">
|
||||
<el-form-item prop="regionList" :label="$t('pages.productV2.form.region')">
|
||||
<el-select v-model="form.regionList" multiple :placeholder="$t('pages.productV2.placeholder.select')" style="width:100%;">
|
||||
<el-option
|
||||
v-for="(item, index) in regions"
|
||||
:key="index"
|
||||
@ -145,43 +145,43 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="showcase">
|
||||
<el-form-item :label="$t('pages.productV2.form.status')" prop="showcase">
|
||||
<el-select
|
||||
v-model="form.showcase"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.productV2.placeholder.status')"
|
||||
class="filter-item"
|
||||
style="width:100%;"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in productConfigShowcase"
|
||||
v-for="item in productConfigShowcaseOptions"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.name"
|
||||
:label="item.label"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="包名" prop="productPackage">
|
||||
<el-form-item :label="$t('pages.productV2.form.packageName')" prop="productPackage">
|
||||
<el-input v-model.trim="form.productPackage" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品单价" prop="unitPrice">
|
||||
<el-form-item :label="$t('pages.productV2.form.unitPrice')" prop="unitPrice">
|
||||
<el-input v-model.trim="form.unitPrice" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="获得糖果数量" prop="obtainCandy">
|
||||
<el-form-item :label="$t('pages.productV2.form.obtainCandy')" prop="obtainCandy">
|
||||
<el-input v-model.trim="form.obtainCandy" v-number />
|
||||
</el-form-item>
|
||||
<el-form-item label="奖励糖果" prop="rewardCandy">
|
||||
<el-form-item :label="$t('pages.productV2.form.rewardCandy')" prop="rewardCandy">
|
||||
<el-input v-model.trim="form.rewardCandy" v-number />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-form-item :label="$t('pages.productV2.form.description')" prop="description">
|
||||
<el-input v-model.trim="form.description" />
|
||||
</el-form-item>
|
||||
<el-form-item label="顺序" prop="sort">
|
||||
<el-input v-model.trim="form.sort" type="number" :placeholder="'数字越小越靠前(升序排列)'" />
|
||||
<el-form-item :label="$t('pages.productV2.form.sort')" prop="sort">
|
||||
<el-input v-model.trim="form.sort" type="number" :placeholder="$t('pages.productV2.placeholder.sort')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm()">{{ $t('pages.productV2.action.save') }}</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.productV2.action.cancel') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -231,40 +231,51 @@ export default {
|
||||
region: ''
|
||||
},
|
||||
listLoading: true,
|
||||
searchLoading: false,
|
||||
rules: {
|
||||
sysOrigin: [
|
||||
{ required: true, message: '请选择系统', trigger: 'blur' }
|
||||
],
|
||||
showcase: [
|
||||
{ required: true, message: '请选择状态', trigger: 'blur' }
|
||||
],
|
||||
regionList: [
|
||||
{ required: true, message: '请选择区域', trigger: 'blur' }
|
||||
],
|
||||
productPackage: [
|
||||
{ required: true, message: '请输入包名', trigger: 'blur' }
|
||||
],
|
||||
unitPrice: [
|
||||
{ required: true, message: '请输入单价', trigger: 'blur' }
|
||||
],
|
||||
obtainCandy: [
|
||||
{ required: true, message: '请输入获得糖果数', trigger: 'blur' }
|
||||
],
|
||||
platform: [
|
||||
{ required: true, message: '请选择支付平台', trigger: 'blur' }
|
||||
],
|
||||
maxManager: [
|
||||
{ required: true, message: '最大管理员数必须填写', trigger: 'blur' }
|
||||
],
|
||||
sort: [
|
||||
{ required: true, message: '序号必须填写', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
searchLoading: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
...mapGetters(['permissionsSysOriginPlatforms']),
|
||||
dialogTitle() {
|
||||
return this.form && this.form.id ? this.$t('pages.productV2.dialog.editTitle') : this.$t('pages.productV2.dialog.addTitle')
|
||||
},
|
||||
productConfigShowcaseOptions() {
|
||||
return this.productConfigShowcase.map(item => ({
|
||||
...item,
|
||||
label: this.getShowcaseLabel(item)
|
||||
}))
|
||||
},
|
||||
localizedRules() {
|
||||
return {
|
||||
sysOrigin: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.systemRequired'), trigger: 'blur' }
|
||||
],
|
||||
showcase: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.statusRequired'), trigger: 'blur' }
|
||||
],
|
||||
regionList: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.regionRequired'), trigger: 'blur' }
|
||||
],
|
||||
productPackage: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.packageRequired'), trigger: 'blur' }
|
||||
],
|
||||
unitPrice: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.unitPriceRequired'), trigger: 'blur' }
|
||||
],
|
||||
obtainCandy: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.obtainCandyRequired'), trigger: 'blur' }
|
||||
],
|
||||
platform: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.platformRequired'), trigger: 'blur' }
|
||||
],
|
||||
maxManager: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.maxManagerRequired'), trigger: 'blur' }
|
||||
],
|
||||
sort: [
|
||||
{ required: true, message: this.$t('pages.productV2.validation.sortRequired'), trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const that = this
|
||||
@ -277,6 +288,11 @@ export default {
|
||||
that.renderData()
|
||||
},
|
||||
methods: {
|
||||
getShowcaseLabel(item) {
|
||||
const key = `pages.productV2.showcase.${item.value}`
|
||||
const label = this.$t(key)
|
||||
return label === key ? item.name : label
|
||||
},
|
||||
renderData() {
|
||||
const that = this
|
||||
that.listLoading = true
|
||||
@ -303,12 +319,10 @@ export default {
|
||||
this.renderData(true)
|
||||
},
|
||||
handleCreate() {
|
||||
this.textOptTitle = '新增内购产品'
|
||||
this.formVisible = true
|
||||
this.form = getFormData()
|
||||
},
|
||||
handlUpdate(row) {
|
||||
this.textOptTitle = '修改内购产品'
|
||||
this.formVisible = true
|
||||
this.form = Object.assign(this.form, row)
|
||||
},
|
||||
|
||||
@ -5,19 +5,19 @@
|
||||
ref="ruleForm"
|
||||
class="rule-form"
|
||||
:model="form"
|
||||
:rules="ruleValidateForm"
|
||||
:rules="localizedRules"
|
||||
label-position="top"
|
||||
>
|
||||
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="等级"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.level')"
|
||||
prop="level"
|
||||
style="margin-bottom: 10px;"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.level"
|
||||
placeholder="请选择等级"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.placeholder.selectLevel')"
|
||||
clearable
|
||||
style="width:100%;"
|
||||
>
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="里程碑"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.milestone')"
|
||||
prop="milestone"
|
||||
style="margin-bottom: 10px;"
|
||||
>
|
||||
@ -41,7 +41,7 @@
|
||||
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="图标Icon"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.icon')"
|
||||
>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="smallIcon" style="margin-bottom: 10px;">
|
||||
@ -58,7 +58,7 @@
|
||||
>
|
||||
<i slot="default" v-loading="uploadSmallIconLoading" class="el-icon-plus" />
|
||||
</el-upload>
|
||||
<span>小号</span>
|
||||
<span>{{ $t('pages.propsActivityRuleConfig.form.small') }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@ -76,13 +76,13 @@
|
||||
>
|
||||
<i slot="default" v-loading="uploadMediumIconLoading" class="el-icon-plus" />
|
||||
</el-upload>
|
||||
<span>中号</span>
|
||||
<span>{{ $t('pages.propsActivityRuleConfig.form.medium') }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="动画资源图"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.animationResource')"
|
||||
prop="sourceUrl"
|
||||
>
|
||||
<el-upload
|
||||
@ -96,8 +96,8 @@
|
||||
accept=".svga,.pag"
|
||||
>
|
||||
<div class="upload-but">
|
||||
<el-button :loading="uploadSouceUrlLoading" size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">只能上传svga/pag文件</div>
|
||||
<el-button :loading="uploadSouceUrlLoading" size="small" type="primary">{{ $t('pages.propsActivityRuleConfig.action.upload') }}</el-button>
|
||||
<div slot="tip" class="el-upload__tip">{{ $t('pages.propsActivityRuleConfig.tips.uploadSvgaPag') }}</div>
|
||||
</div>
|
||||
</el-upload>
|
||||
<svgaplayer v-if="!isShowUploadSourceUrl" :url="form.sourceUrl" />
|
||||
@ -142,16 +142,20 @@ export default {
|
||||
{ value: 4, name: '4' },
|
||||
{ value: 5, name: '5' }
|
||||
],
|
||||
ruleValidateForm: {
|
||||
milestone: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
level: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
smallIcon: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
mediumIcon: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
sourceUrl: [{ required: true, message: '必填字段', trigger: 'blur' }]
|
||||
}
|
||||
ruleValidateForm: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
localizedRules() {
|
||||
const required = this.$t('pages.propsActivityRuleConfig.validation.requiredField')
|
||||
return {
|
||||
milestone: [{ required: true, message: required, trigger: 'blur' }],
|
||||
level: [{ required: true, message: required, trigger: 'blur' }],
|
||||
smallIcon: [{ required: true, message: required, trigger: 'blur' }],
|
||||
mediumIcon: [{ required: true, message: required, trigger: 'blur' }],
|
||||
sourceUrl: [{ required: true, message: required, trigger: 'blur' }]
|
||||
}
|
||||
},
|
||||
isShowUploadSmallIcon() {
|
||||
return !this.form.smallIcon
|
||||
},
|
||||
|
||||
@ -5,19 +5,19 @@
|
||||
ref="ruleForm"
|
||||
class="rule-form"
|
||||
:model="form"
|
||||
:rules="ruleValidateForm"
|
||||
:rules="localizedRules"
|
||||
label-position="top"
|
||||
>
|
||||
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="内购产品"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.inAppProduct')"
|
||||
prop="productId"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.productId"
|
||||
v-loading="firstChargeRewardsLoading"
|
||||
placeholder="请选择产品"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.placeholder.selectProduct')"
|
||||
clearable
|
||||
style="width:100%;"
|
||||
>
|
||||
@ -55,14 +55,23 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleValidateForm: {
|
||||
productId: [{ required: true, message: '必填字段', trigger: 'blur' }]
|
||||
},
|
||||
ruleValidateForm: {},
|
||||
firstChargeRewards: [],
|
||||
firstChargeRewardsLoading: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
localizedRules() {
|
||||
return {
|
||||
productId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('pages.propsActivityRuleConfig.validation.requiredField'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
// watch: {
|
||||
// form: {
|
||||
|
||||
@ -5,18 +5,18 @@
|
||||
ref="ruleForm"
|
||||
class="rule-form"
|
||||
:model="form"
|
||||
:rules="ruleValidateForm"
|
||||
:rules="localizedRules"
|
||||
label-position="top"
|
||||
>
|
||||
<el-form-item label="上/下架" prop="status">
|
||||
<el-form-item :label="$t('pages.propsActivityRuleConfig.form.shelfStatus')" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio :label="true">上架</el-radio>
|
||||
<el-radio :label="false">下架</el-radio>
|
||||
<el-radio :label="true">{{ $t('pages.propsActivityRuleConfig.shelfStatus.on') }}</el-radio>
|
||||
<el-radio :label="false">{{ $t('pages.propsActivityRuleConfig.shelfStatus.off') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="数量"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.quantity')"
|
||||
prop="quantity"
|
||||
>
|
||||
<el-input v-model.trim="form.quantity" v-number />
|
||||
@ -46,13 +46,17 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleValidateForm: {
|
||||
quantity: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
status: [{ required: true, message: '必填字段', trigger: 'blur' }]
|
||||
}
|
||||
ruleValidateForm: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
localizedRules() {
|
||||
const required = this.$t('pages.propsActivityRuleConfig.validation.requiredField')
|
||||
return {
|
||||
quantity: [{ required: true, message: required, trigger: 'blur' }],
|
||||
status: [{ required: true, message: required, trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
|
||||
@ -6,13 +6,13 @@
|
||||
v-loading="gameListLoading"
|
||||
class="rule-form"
|
||||
:model="form"
|
||||
:rules="ruleForm"
|
||||
:rules="localizedRules"
|
||||
label-position="top"
|
||||
>
|
||||
<el-form-item prop="gameConfId" label="游戏" style="margin-bottom: 10px">
|
||||
<el-form-item prop="gameConfId" :label="$t('pages.propsActivityRuleConfig.form.game')" style="margin-bottom: 10px">
|
||||
<el-select
|
||||
v-model="form.gameConfId"
|
||||
placeholder="请选择游戏"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.placeholder.selectGame')"
|
||||
clearable
|
||||
style="width:100%;"
|
||||
>
|
||||
@ -26,8 +26,8 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="target" label="目标">
|
||||
<el-input v-model.trim="form.target" v-number placeholder="目标" />
|
||||
<el-form-item prop="target" :label="$t('pages.propsActivityRuleConfig.form.target')">
|
||||
<el-input v-model.trim="form.target" v-number :placeholder="$t('pages.propsActivityRuleConfig.form.target')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -55,15 +55,19 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleForm: {
|
||||
gameConfId: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
target: [{ required: true, message: '必填字段', trigger: 'blur' }]
|
||||
},
|
||||
ruleForm: {},
|
||||
gameList: [],
|
||||
gameListLoading: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
localizedRules() {
|
||||
const required = this.$t('pages.propsActivityRuleConfig.validation.requiredField')
|
||||
return {
|
||||
gameConfId: [{ required: true, message: required, trigger: 'blur' }],
|
||||
target: [{ required: true, message: required, trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
form: {
|
||||
|
||||
@ -5,20 +5,20 @@
|
||||
ref="ruleForm"
|
||||
class="rule-form"
|
||||
:model="form"
|
||||
:rules="ruleValidateForm"
|
||||
:rules="localizedRules"
|
||||
label-position="top"
|
||||
>
|
||||
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="标识"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.mark')"
|
||||
prop="mark"
|
||||
>
|
||||
<el-input v-model.trim="form.mark" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="数量"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.quantity')"
|
||||
prop="quantity"
|
||||
>
|
||||
<el-input v-model.trim="form.quantity" v-number />
|
||||
@ -48,13 +48,17 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleValidateForm: {
|
||||
quantity: [{ required: true, message: '必填字段', trigger: 'blur' }],
|
||||
mark: [{ required: true, message: '必填字段', trigger: 'blur' }]
|
||||
}
|
||||
ruleValidateForm: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
localizedRules() {
|
||||
const required = this.$t('pages.propsActivityRuleConfig.validation.requiredField')
|
||||
return {
|
||||
quantity: [{ required: true, message: required, trigger: 'blur' }],
|
||||
mark: [{ required: true, message: required, trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
|
||||
@ -5,13 +5,13 @@
|
||||
ref="ruleForm"
|
||||
class="rule-form"
|
||||
:model="form"
|
||||
:rules="ruleValidateForm"
|
||||
:rules="localizedRules"
|
||||
label-position="top"
|
||||
>
|
||||
|
||||
<el-form-item
|
||||
class="filter-item"
|
||||
label="数量"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.quantity')"
|
||||
prop="quantity"
|
||||
>
|
||||
<el-input v-model.trim="form.quantity" />
|
||||
@ -41,12 +41,21 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleValidateForm: {
|
||||
quantity: [{ required: true, message: '必填字段', trigger: 'blur' }]
|
||||
}
|
||||
ruleValidateForm: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
localizedRules() {
|
||||
return {
|
||||
quantity: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('pages.propsActivityRuleConfig.validation.requiredField'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
|
||||
@ -12,15 +12,15 @@
|
||||
<el-form-item
|
||||
style="margin-bottom: 20px;"
|
||||
:prop="'boxs.'+ index + '.quantity'"
|
||||
:rules="{required: true, message: '必填字段', trigger: 'blur'}"
|
||||
:rules="{required: true, message: $t('pages.propsActivityRuleConfig.validation.requiredField'), trigger: 'blur'}"
|
||||
>
|
||||
<el-input v-model.trim="item.quantity" v-number :placeholder="(index + 1) + '、消耗糖果'" />
|
||||
<el-input v-model.trim="item.quantity" v-number :placeholder="$t('pages.propsActivityRuleConfig.placeholder.consumeCandy', { index: index + 1 })" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:prop="'boxs.'+ index + '.opportunityNumber'"
|
||||
:rules="{required: true, message: '必填字段', trigger: 'blur'}"
|
||||
:rules="{required: true, message: $t('pages.propsActivityRuleConfig.validation.requiredField'), trigger: 'blur'}"
|
||||
>
|
||||
<el-input v-model.trim="item.opportunityNumber" v-number :placeholder="(index + 1) + '、抽奖次数'" />
|
||||
<el-input v-model.trim="item.opportunityNumber" v-number :placeholder="$t('pages.propsActivityRuleConfig.placeholder.drawTimes', { index: index + 1 })" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
|
||||
@ -14,14 +14,14 @@
|
||||
<el-form
|
||||
ref="form"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:rules="localizedRules"
|
||||
label-position="right"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item label="系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.propsActivityRuleConfig.form.system')" prop="sysOrigin">
|
||||
<el-select
|
||||
v-model="form.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.form.system')"
|
||||
style="width:100%;"
|
||||
clearable
|
||||
:disabled="isUpdate"
|
||||
@ -42,10 +42,10 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="activityType" label="类型">
|
||||
<el-form-item prop="activityType" :label="$t('pages.propsActivityRuleConfig.form.type')">
|
||||
<el-select
|
||||
v-model="form.activityType"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.form.type')"
|
||||
clearable
|
||||
style="width:100%;"
|
||||
:disabled="isUpdate"
|
||||
@ -63,12 +63,12 @@
|
||||
<component
|
||||
:is="activeComponent"
|
||||
ref="ruleForm"
|
||||
:tips="activeTips"
|
||||
:tips="localizedActiveTips"
|
||||
:sys-origin="form.sysOrigin"
|
||||
:form="tmpRuleSetting"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="规则描述" prop="ruleDescription">
|
||||
<el-form-item :label="$t('pages.propsActivityRuleConfig.form.ruleDescription')" prop="ruleDescription">
|
||||
<el-input
|
||||
v-model.trim="form.ruleDescription"
|
||||
type="textarea"
|
||||
@ -79,7 +79,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.activityType !== 'CRYSTAL'"
|
||||
label="排序"
|
||||
:label="$t('pages.propsActivityRuleConfig.form.sort')"
|
||||
prop="sort"
|
||||
>
|
||||
<el-input v-model.trim="form.sort" v-number />
|
||||
@ -87,13 +87,13 @@
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button @click="handleClose()">{{ $t("pages.propsActivityRuleConfig.action.cancel") }}</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:loading="submitLoading"
|
||||
:disabled="submitLoading"
|
||||
@click="submitForm()"
|
||||
>保存</el-button
|
||||
>{{ $t("pages.propsActivityRuleConfig.action.save") }}</el-button
|
||||
>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -300,7 +300,7 @@ export default {
|
||||
},
|
||||
CUMULATIVE_RECHARGE_LOTTERY: {
|
||||
component: "InputQuantity",
|
||||
tips: "抽奖要求充值金额(列如: 9.9)",
|
||||
tipsKey: "pages.propsActivityRuleConfig.tips.cumulativeRechargeLottery",
|
||||
form: {
|
||||
quantity: ""
|
||||
}
|
||||
@ -364,7 +364,7 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
propActivityTypes,
|
||||
rawPropActivityTypes: propActivityTypes,
|
||||
propActivityTypesHelp,
|
||||
form: {
|
||||
id: "",
|
||||
@ -375,22 +375,36 @@ export default {
|
||||
ruleDescription: ""
|
||||
},
|
||||
submitLoading: false,
|
||||
rules: {
|
||||
sysOrigin: [{ required: true, message: "必填字段", trigger: "blur" }],
|
||||
activityType: [
|
||||
{ required: true, message: "必填字段", trigger: "blur" }
|
||||
],
|
||||
jsonData: [{ required: true, message: "必填字段", trigger: "blur" }],
|
||||
sort: [{ required: true, message: "必填字段", trigger: "blur" }]
|
||||
}
|
||||
rules: {}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
propActivityTypes() {
|
||||
const map = this.$t("pages.propsActivityRuleConfig.activityTypes");
|
||||
return this.rawPropActivityTypes.map(item => ({
|
||||
...item,
|
||||
name: map[item.value] || item.name
|
||||
}));
|
||||
},
|
||||
localizedActiveTips() {
|
||||
return this.activeTips ? this.$t(this.activeTips) : "";
|
||||
},
|
||||
localizedRules() {
|
||||
const required = this.$t("pages.propsActivityRuleConfig.validation.requiredField");
|
||||
return {
|
||||
sysOrigin: [{ required: true, message: required, trigger: "blur" }],
|
||||
activityType: [{ required: true, message: required, trigger: "blur" }],
|
||||
jsonData: [{ required: true, message: required, trigger: "blur" }],
|
||||
sort: [{ required: true, message: required, trigger: "blur" }]
|
||||
};
|
||||
},
|
||||
isUpdate() {
|
||||
return !!(this.row && this.row.id);
|
||||
},
|
||||
textOptTitle() {
|
||||
return this.isUpdate ? "修改" : "添加";
|
||||
return this.isUpdate
|
||||
? this.$t("pages.propsActivityRuleConfig.action.edit")
|
||||
: this.$t("pages.propsActivityRuleConfig.action.add");
|
||||
},
|
||||
...mapGetters(["permissionsSysOriginPlatforms"])
|
||||
},
|
||||
@ -424,7 +438,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
that.activeComponent = item.component;
|
||||
that.activeTips = item.tips;
|
||||
that.activeTips = item.tipsKey || item.tips || "";
|
||||
that.tmpRuleSetting = deepClone(item.form);
|
||||
},
|
||||
submitForm() {
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<!-- 系统 选择器 -->
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -26,7 +26,7 @@
|
||||
<!-- 活动类型 选择器 -->
|
||||
<el-select
|
||||
v-model="listQuery.activityType"
|
||||
placeholder="活动类型"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.filter.activityType')"
|
||||
clearable
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@ -52,7 +52,7 @@
|
||||
<!-- 规则描述 -->
|
||||
<el-input
|
||||
v-model.trim="listQuery.ruleDescription"
|
||||
placeholder="规则描述"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.filter.ruleDescription')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
@ -61,7 +61,7 @@
|
||||
<el-input
|
||||
v-model.trim="listQuery.resourceGroupId"
|
||||
v-number
|
||||
placeholder="活动组ID"
|
||||
:placeholder="$t('pages.propsActivityRuleConfig.filter.resourceGroupId')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
@ -73,7 +73,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t("pages.propsActivityRuleConfig.action.search") }}
|
||||
</el-button>
|
||||
|
||||
<!-- 新增按钮 -->
|
||||
@ -83,7 +83,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="handleCreate"
|
||||
>
|
||||
新增
|
||||
{{ $t("pages.propsActivityRuleConfig.action.add") }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@ -100,22 +100,22 @@
|
||||
<!-- 头部操作栏 -->
|
||||
<div slot="header" class="clearfix">
|
||||
<sys-origin-icon :icon="item.sysOrigin" size="20" />
|
||||
{{ item.activityTypeName }}
|
||||
{{ getActivityTypeName(item) }}
|
||||
<div style="float: right; padding: 3px 0">
|
||||
<el-dropdown>
|
||||
<span class="el-dropdown-link">
|
||||
操作选项<i class="el-icon-arrow-down el-icon--right" />
|
||||
{{ $t("pages.propsActivityRuleConfig.action.more") }}<i class="el-icon-arrow-down el-icon--right" />
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="clickEditRule(item)"
|
||||
>编辑规则</el-dropdown-item
|
||||
>{{ $t("pages.propsActivityRuleConfig.action.editRule") }}</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item
|
||||
@click.native="clickAssociatedResources(item)"
|
||||
>关联资源</el-dropdown-item
|
||||
>{{ $t("pages.propsActivityRuleConfig.action.associateResources") }}</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item @click.native="handlDel(item.id)"
|
||||
>删除</el-dropdown-item
|
||||
>{{ $t("pages.propsActivityRuleConfig.action.delete") }}</el-dropdown-item
|
||||
>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
@ -124,23 +124,23 @@
|
||||
|
||||
<!-- 详细信息 -->
|
||||
<div class="card-content">
|
||||
<div class="title">规则信息</div>
|
||||
<div class="title">{{ $t("pages.propsActivityRuleConfig.card.ruleInfo") }}</div>
|
||||
<div class="contetn">
|
||||
<el-row>
|
||||
<el-col :span="12"> ID:{{ item.id }} </el-col>
|
||||
<el-col :span="12">
|
||||
<div class="flex-l">
|
||||
<div>排序:</div>
|
||||
<div>{{ $t("pages.propsActivityRuleConfig.card.sort") }}{{ $t("pages.propsActivityRuleConfig.symbol.colon") }}</div>
|
||||
<div>
|
||||
<div class="sort">{{ item.sort }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12" class="nowrap-ellipsis">
|
||||
描述:{{ item.ruleDescription }}
|
||||
{{ $t("pages.propsActivityRuleConfig.card.description") }}{{ $t("pages.propsActivityRuleConfig.symbol.colon") }}{{ item.ruleDescription }}
|
||||
</el-col>
|
||||
<el-col :span="12" class="nowrap-ellipsis">
|
||||
规则:
|
||||
{{ $t("pages.propsActivityRuleConfig.card.rule") }}{{ $t("pages.propsActivityRuleConfig.symbol.colon") }}
|
||||
<el-tooltip class="item" effect="light">
|
||||
<div slot="content">
|
||||
<div v-if="item.jsonData">
|
||||
@ -150,7 +150,7 @@
|
||||
sort
|
||||
/>
|
||||
</div>
|
||||
<div v-else>请选择类型</div>
|
||||
<div v-else>{{ $t("pages.propsActivityRuleConfig.placeholder.selectType") }}</div>
|
||||
</div>
|
||||
<i
|
||||
class="el-icon-question"
|
||||
@ -160,7 +160,7 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="title">资源信息1({{ item.resourceGroupId }})</div>
|
||||
<div class="title">{{ $t("pages.propsActivityRuleConfig.card.resourceInfo", { id: item.resourceGroupId }) }}</div>
|
||||
<div class="content flex-l">
|
||||
<props-row :list="item.activityRewards" />
|
||||
</div>
|
||||
@ -216,7 +216,7 @@ export default {
|
||||
components: { Pagination, AssociatedResources, EditRuleDrawer, PropsRow },
|
||||
data() {
|
||||
return {
|
||||
propActivityTypes,
|
||||
rawPropActivityTypes: propActivityTypes,
|
||||
clickRow: {},
|
||||
associatedResourcesVisable: false,
|
||||
editRuleDrawerVisible: false,
|
||||
@ -235,6 +235,13 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
propActivityTypes() {
|
||||
const map = this.$t("pages.propsActivityRuleConfig.activityTypes");
|
||||
return this.rawPropActivityTypes.map(item => ({
|
||||
...item,
|
||||
name: map[item.value] || item.name
|
||||
}));
|
||||
},
|
||||
...mapGetters(["permissionsSysOriginPlatforms"])
|
||||
},
|
||||
created() {
|
||||
@ -268,6 +275,11 @@ export default {
|
||||
handleSearch() {
|
||||
this.renderData(true);
|
||||
},
|
||||
getActivityTypeName(row) {
|
||||
const type = row.activityType;
|
||||
const map = this.$t("pages.propsActivityRuleConfig.activityTypes");
|
||||
return (type && map[type]) || row.activityTypeName;
|
||||
},
|
||||
selectSource(source) {
|
||||
const that = this;
|
||||
that.associatedResourcesVisable = false;
|
||||
@ -279,7 +291,7 @@ export default {
|
||||
savePropsActivityRuleConfig(from)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
message: "Successful",
|
||||
message: this.$t("pages.propsActivityRuleConfig.message.saveSuccess"),
|
||||
type: "success"
|
||||
});
|
||||
that.fileList = [];
|
||||
@ -295,15 +307,19 @@ export default {
|
||||
},
|
||||
// 删除
|
||||
handlDel(id) {
|
||||
this.$confirm("确认删除吗?", "提示", {
|
||||
this.$confirm(
|
||||
this.$t("pages.propsActivityRuleConfig.confirm.delete"),
|
||||
this.$t("pages.propsActivityRuleConfig.confirm.title"),
|
||||
{
|
||||
type: "warning"
|
||||
})
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this.listLoading = true;
|
||||
delPropsActivityRuleConfig(id).then(res => {
|
||||
this.listLoading = false;
|
||||
this.$message({
|
||||
message: "删除成功",
|
||||
message: this.$t("pages.propsActivityRuleConfig.message.deleteSuccess"),
|
||||
type: "success"
|
||||
});
|
||||
this.renderData();
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<div class="send-props">
|
||||
<el-alert title="赠送徽章" style="margin-bottom: 10px;" :closable="false" />
|
||||
<el-alert :title="$t('pages.propsSendTool.title.badge')" style="margin-bottom: 10px;" :closable="false" />
|
||||
<el-form ref="form" :model="propsGiveForm" :rules="formRules" label-width="85px">
|
||||
<el-form-item label="接收人" prop="receiverAccounts">
|
||||
<el-input v-model="propsGiveForm.receiverAccounts" placeholder="请输入用户 【短账号】 ,多个短账号用英文','分割;(一批最多15个)短账号" />
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.receiver')" prop="receiverAccounts">
|
||||
<el-input v-model="propsGiveForm.receiverAccounts" :placeholder="$t('pages.propsSendTool.placeholder.receiverAccounts')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="选择系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.system')" prop="sysOrigin">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="propsGiveForm.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.system')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeSysOrigin"
|
||||
@ -18,20 +18,20 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="propsGiveForm.sysOrigin" label="选择类型" prop="secondaryType">
|
||||
<el-form-item v-if="propsGiveForm.sysOrigin" :label="$t('pages.propsSendTool.form.type')" prop="secondaryType">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="propsGiveForm.secondaryType"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changetType"
|
||||
>
|
||||
<el-option v-for="item in badgeTypes" :key="item.value" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="item in badgeTypes" :key="item.value" :label="getBadgeTypeName(item)" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择资源" prop="content">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.resource')" prop="content">
|
||||
<div v-if="selectProps.selectUrl" class="payer-source">
|
||||
<div class="paler-icon">
|
||||
<svgaplayer
|
||||
@ -50,15 +50,15 @@
|
||||
@select="selectPropsSourcePopover"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效天数" prop="exchangeDays">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.validDays')" prop="exchangeDays">
|
||||
<el-input
|
||||
v-model="propsGiveForm.exchangeDays"
|
||||
type="number"
|
||||
placeholder="输入正数为赠送,负数为回收"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.validDays')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" :loading="submitLoading" @click="onGiveSubmit">发送</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="onGiveSubmit">{{ $t('pages.propsSendTool.action.send') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@ -76,10 +76,6 @@ export default {
|
||||
name: 'SendBadge',
|
||||
components: { PropsSourceSelectPopover },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
]
|
||||
|
||||
return {
|
||||
list: [],
|
||||
listLoading: false,
|
||||
@ -93,26 +89,6 @@ export default {
|
||||
},
|
||||
selectProps: {},
|
||||
submitLoading: false,
|
||||
formRules: {
|
||||
// receiverId: commonRules,
|
||||
receiverAccounts: commonRules,
|
||||
exchangeDays: [
|
||||
{ required: true, message: '有效天数不能为空', trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === '' || isNaN(value)) {
|
||||
callback(new Error('请输入有效数字'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
content: commonRules,
|
||||
secondaryType: commonRules,
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
propsGiveForm: {
|
||||
// receiverId: '',
|
||||
receiverAccounts: '',
|
||||
@ -126,11 +102,44 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
...mapGetters(['permissionsSysOriginPlatforms']),
|
||||
formRules() {
|
||||
const commonRules = [
|
||||
{ required: true, message: this.$t('pages.propsSendTool.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
// receiverId: commonRules,
|
||||
receiverAccounts: commonRules,
|
||||
exchangeDays: [
|
||||
{ required: true, message: this.$t('pages.propsSendTool.validation.validDaysRequired'), trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === '' || isNaN(value)) {
|
||||
callback(new Error(this.$t('pages.propsSendTool.validation.validNumber')))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
content: commonRules,
|
||||
secondaryType: commonRules,
|
||||
sysOrigin: commonRules
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
getLocalizedOption(group, value, fallback) {
|
||||
const key = `pages.propsSendTool.${group}.${value}`
|
||||
const text = this.$t(key)
|
||||
return text === key ? fallback : text
|
||||
},
|
||||
getBadgeTypeName(item) {
|
||||
return this.getLocalizedOption('badgeTypes', item.value, item.name)
|
||||
},
|
||||
changetType(type) {
|
||||
const that = this
|
||||
that.selectProps = {}
|
||||
@ -166,7 +175,7 @@ export default {
|
||||
sendPropsGiveUser(that.propsGiveForm).then(res => {
|
||||
if (res.errorCode === 0) {
|
||||
if (res.body) {
|
||||
that.$opsMessage.fail('无效短账号: ' + res.body + ' 请处理后再将当前批次所有短账号重新发送.')
|
||||
that.$opsMessage.fail(that.$t('pages.propsSendTool.message.invalidShortAccounts', { accounts: res.body }))
|
||||
that.submitLoading = false
|
||||
return
|
||||
}
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<div class="send-props">
|
||||
<el-alert title="赠送道具" style="margin-bottom: 10px;" :closable="false" />
|
||||
<el-alert :title="$t('pages.propsSendTool.title.props')" style="margin-bottom: 10px;" :closable="false" />
|
||||
<el-form ref="form" :model="propsGiveForm" :rules="formRules" label-width="85px">
|
||||
<el-form-item label="接收人" prop="receiverAccounts">
|
||||
<el-input v-model="propsGiveForm.receiverAccounts" placeholder="请输入用户 【短账号】 ,多个短账号用英文','分割;(一批最多15个)短账号" />
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.receiver')" prop="receiverAccounts">
|
||||
<el-input v-model="propsGiveForm.receiverAccounts" :placeholder="$t('pages.propsSendTool.placeholder.receiverAccounts')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="选择系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.system')" prop="sysOrigin">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="propsGiveForm.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.system')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeSysOrigin"
|
||||
@ -18,18 +18,18 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择类型" prop="secondaryType">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.type')" prop="secondaryType">
|
||||
<el-select
|
||||
v-model="propsGiveForm.secondaryType"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changePropsType"
|
||||
>
|
||||
<el-option v-for="item in propsTypes" :key="item.value" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="item in propsTypes" :key="item.value" :label="getPropsTypeName(item)" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择资源" prop="content">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.resource')" prop="content">
|
||||
<div v-if="selectProps.cover" class="payer-source">
|
||||
<div class="paler-icon">
|
||||
<svgaplayer
|
||||
@ -48,27 +48,27 @@
|
||||
@select="selectPropsSourcePopover"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="propsGiveForm.secondaryType == 'NOBLE_VIP'" label="贵族来源" prop="vipOrigin">
|
||||
<el-form-item v-if="propsGiveForm.secondaryType == 'NOBLE_VIP'" :label="$t('pages.propsSendTool.form.vipOrigin')" prop="vipOrigin">
|
||||
<el-select
|
||||
v-model="propsGiveForm.vipOrigin"
|
||||
placeholder="贵族来源"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.vipOrigin')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option label="系统赠送" value="SYSTEM_GIVE" />
|
||||
<el-option label="购买或朋友赠送" value="BUY_OR_GIVE" />
|
||||
<el-option label="活动奖励" value="ACTIVITY_AWARD" />
|
||||
<el-option :label="$t('pages.propsSendTool.vipOrigin.SYSTEM_GIVE')" value="SYSTEM_GIVE" />
|
||||
<el-option :label="$t('pages.propsSendTool.vipOrigin.BUY_OR_GIVE')" value="BUY_OR_GIVE" />
|
||||
<el-option :label="$t('pages.propsSendTool.vipOrigin.ACTIVITY_AWARD')" value="ACTIVITY_AWARD" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效天数" prop="exchangeDays">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.validDays')" prop="exchangeDays">
|
||||
<el-input
|
||||
v-model="propsGiveForm.exchangeDays"
|
||||
type="number"
|
||||
placeholder="输入正数为赠送,负数为回收"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.validDays')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" :loading="submitLoading" @click="onGiveSubmit">发送</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="onGiveSubmit">{{ $t('pages.propsSendTool.action.send') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@ -85,9 +85,6 @@ export default {
|
||||
name: 'SendProps',
|
||||
components: { PropsSourceSelectPopover },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
]
|
||||
const propsTypeMap = {}
|
||||
propsTypes.forEach(item => {
|
||||
propsTypeMap[item.value] = {
|
||||
@ -108,26 +105,6 @@ export default {
|
||||
},
|
||||
selectProps: {},
|
||||
submitLoading: false,
|
||||
formRules: {
|
||||
// receiverId: commonRules,
|
||||
receiverAccounts: commonRules,
|
||||
exchangeDays: [
|
||||
{ required: true, message: '有效天数不能为空', trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === '' || isNaN(value)) {
|
||||
callback(new Error('请输入有效数字'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
content: commonRules,
|
||||
secondaryType: commonRules,
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
propsGiveForm: {
|
||||
sysOrigin: '',
|
||||
// receiverId: '',
|
||||
@ -144,12 +121,45 @@ export default {
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
...mapGetters(['permissionsSysOriginPlatforms']),
|
||||
formRules() {
|
||||
const commonRules = [
|
||||
{ required: true, message: this.$t('pages.propsSendTool.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
// receiverId: commonRules,
|
||||
receiverAccounts: commonRules,
|
||||
exchangeDays: [
|
||||
{ required: true, message: this.$t('pages.propsSendTool.validation.validDaysRequired'), trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === '' || isNaN(value)) {
|
||||
callback(new Error(this.$t('pages.propsSendTool.validation.validNumber')))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
content: commonRules,
|
||||
secondaryType: commonRules,
|
||||
sysOrigin: commonRules
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.propsTypes = this.propsTypes.filter(item => !(item.value === 'CUSTOMIZE' || item.value === 'FRAGMENTS'))
|
||||
},
|
||||
methods: {
|
||||
getLocalizedOption(group, value, fallback) {
|
||||
const key = `pages.propsSendTool.${group}.${value}`
|
||||
const text = this.$t(key)
|
||||
return text === key ? fallback : text
|
||||
},
|
||||
getPropsTypeName(item) {
|
||||
return this.getLocalizedOption('propsTypes', item.value, item.name)
|
||||
},
|
||||
changeSysOrigin(val) {
|
||||
const that = this
|
||||
that.propsGiveForm.secondaryType = ''
|
||||
@ -194,7 +204,7 @@ export default {
|
||||
sendPropsGiveUser(that.propsGiveForm).then(res => {
|
||||
if (res.errorCode === 0) {
|
||||
if (res.body) {
|
||||
that.$opsMessage.fail('无效短账号: ' + res.body + ' 请处理后再将当前批次所有短账号重新发送.')
|
||||
that.$opsMessage.fail(that.$t('pages.propsSendTool.message.invalidShortAccounts', { accounts: res.body }))
|
||||
that.submitLoading = false
|
||||
return
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="send-props">
|
||||
<el-alert
|
||||
title="赠送道具券"
|
||||
:title="$t('pages.propsSendTool.title.ticket')"
|
||||
style="margin-bottom: 10px;"
|
||||
:closable="false"
|
||||
/>
|
||||
@ -11,17 +11,17 @@
|
||||
:rules="formRules"
|
||||
label-width="85px"
|
||||
>
|
||||
<el-form-item label="接收人" prop="receiverAccounts">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.receiver')" prop="receiverAccounts">
|
||||
<el-input
|
||||
v-model="propsGiveForm.receiverAccounts"
|
||||
placeholder="请输入用户 【短账号】 ,多个短账号用英文','分割;(一批最多15个)短账号"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.receiverAccounts')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.system')" prop="sysOrigin">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="propsGiveForm.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.system')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeSysOrigin"
|
||||
@ -35,10 +35,10 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择类型" prop="secondaryType">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.type')" prop="secondaryType">
|
||||
<el-select
|
||||
v-model="propsGiveForm.secondaryType"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changePropsType"
|
||||
@ -46,12 +46,12 @@
|
||||
<el-option
|
||||
v-for="item in propsTicket"
|
||||
:key="item.value"
|
||||
:label="item.name"
|
||||
:label="getPropsTypeName(item)"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择资源" prop="propId">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.resource')" prop="propId">
|
||||
<div v-if="selectProps.cover" class="payer-source">
|
||||
<div class="paler-icon">
|
||||
<svgaplayer type="popover" :url="selectProps.sourceUrl || ''" />
|
||||
@ -77,30 +77,30 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="propsGiveForm.secondaryType == 'NOBLE_VIP'"
|
||||
label="贵族来源"
|
||||
:label="$t('pages.propsSendTool.form.vipOrigin')"
|
||||
prop="vipOrigin"
|
||||
>
|
||||
<el-select
|
||||
v-model="propsGiveForm.vipOrigin"
|
||||
placeholder="贵族来源"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.vipOrigin')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option label="系统赠送" value="SYSTEM_GIVE" />
|
||||
<el-option label="购买或朋友赠送" value="BUY_OR_GIVE" />
|
||||
<el-option label="活动奖励" value="ACTIVITY_AWARD" />
|
||||
<el-option :label="$t('pages.propsSendTool.vipOrigin.SYSTEM_GIVE')" value="SYSTEM_GIVE" />
|
||||
<el-option :label="$t('pages.propsSendTool.vipOrigin.BUY_OR_GIVE')" value="BUY_OR_GIVE" />
|
||||
<el-option :label="$t('pages.propsSendTool.vipOrigin.ACTIVITY_AWARD')" value="ACTIVITY_AWARD" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效天数" prop="propDays">
|
||||
<el-form-item :label="$t('pages.propsSendTool.form.validDays')" prop="propDays">
|
||||
<el-input
|
||||
v-model="propsGiveForm.propDays"
|
||||
type="number"
|
||||
placeholder="输入正数为赠送,负数为回收"
|
||||
:placeholder="$t('pages.propsSendTool.placeholder.validDays')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" :loading="submitLoading" @click="onGiveSubmit"
|
||||
>发送</el-button
|
||||
>{{ $t('pages.propsSendTool.action.send') }}</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -119,9 +119,6 @@ export default {
|
||||
name: "SendTicket",
|
||||
components: { PropsSourceSelectPopover },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: "必填字段不可为空", trigger: "blur" }
|
||||
];
|
||||
const propsTypeMap = {};
|
||||
propsTicket.forEach(item => {
|
||||
propsTypeMap[item.value] = {
|
||||
@ -142,25 +139,6 @@ export default {
|
||||
},
|
||||
selectProps: {},
|
||||
submitLoading: false,
|
||||
formRules: {
|
||||
receiverAccounts: commonRules,
|
||||
propDays: [
|
||||
{ required: true, message: "道具天数不能为空", trigger: "blur" },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === "" || isNaN(value)) {
|
||||
callback(new Error("请输入有效数字"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
propId: commonRules,
|
||||
secondaryType: commonRules,
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
propsGiveForm: {
|
||||
sysOrigin: "",
|
||||
receiverAccounts: "",
|
||||
@ -176,7 +154,39 @@ export default {
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapGetters(["permissionsSysOriginPlatforms"])
|
||||
...mapGetters(["permissionsSysOriginPlatforms"]),
|
||||
formRules() {
|
||||
const commonRules = [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("pages.propsSendTool.validation.requiredField"),
|
||||
trigger: "blur"
|
||||
}
|
||||
];
|
||||
return {
|
||||
receiverAccounts: commonRules,
|
||||
propDays: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("pages.propsSendTool.validation.propDaysRequired"),
|
||||
trigger: "blur"
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value === "" || isNaN(value)) {
|
||||
callback(new Error(this.$t("pages.propsSendTool.validation.validNumber")));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
propId: commonRules,
|
||||
secondaryType: commonRules,
|
||||
sysOrigin: commonRules
|
||||
};
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.propsTicket = this.propsTicket.filter(
|
||||
@ -184,6 +194,14 @@ export default {
|
||||
);
|
||||
},
|
||||
methods: {
|
||||
getLocalizedOption(group, value, fallback) {
|
||||
const key = `pages.propsSendTool.${group}.${value}`;
|
||||
const text = this.$t(key);
|
||||
return text === key ? fallback : text;
|
||||
},
|
||||
getPropsTypeName(item) {
|
||||
return this.getLocalizedOption("propsTypes", item.value, item.name);
|
||||
},
|
||||
changeSysOrigin(val) {
|
||||
const that = this;
|
||||
that.propsGiveForm.secondaryType = "";
|
||||
@ -244,9 +262,9 @@ export default {
|
||||
if (res.errorCode === 0) {
|
||||
if (res.body) {
|
||||
that.$opsMessage.fail(
|
||||
"无效短账号: " +
|
||||
res.body +
|
||||
" 请处理后再将当前批次所有短账号重新发送."
|
||||
that.$t("pages.propsSendTool.message.invalidShortAccounts", {
|
||||
accounts: res.body
|
||||
})
|
||||
);
|
||||
that.submitLoading = false;
|
||||
return;
|
||||
|
||||
@ -11,13 +11,13 @@
|
||||
top="50px"
|
||||
>
|
||||
<div v-loading="submitLoading">
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="110px" style="margin-right:50px;">
|
||||
<el-form ref="form" :model="form" :rules="localizedFormRules" label-width="130px" style="margin-right:50px;">
|
||||
<el-row :gutter="10">
|
||||
<el-col :md="24" :lg="isNobleVip ? 12 : 24">
|
||||
<el-form-item label="归属系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.propsStore.form.system')" prop="sysOrigin">
|
||||
<el-select
|
||||
v-model="form.sysOrigin"
|
||||
placeholder="归属系统"
|
||||
:placeholder="$t('pages.propsStore.form.system')"
|
||||
style="width: 100%"
|
||||
:disabled="true"
|
||||
>
|
||||
@ -32,28 +32,28 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="道具类型" prop="propsType">
|
||||
<el-form-item :label="$t('pages.propsStore.form.propsType')" prop="propsType">
|
||||
<el-select
|
||||
v-model="form.propsType"
|
||||
placeholder="道具类型"
|
||||
:placeholder="$t('pages.propsStore.form.propsType')"
|
||||
style="width: 100%"
|
||||
:disabled="true"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in propsCommodityTypes"
|
||||
v-for="(item, index) in propsCommodityTypeOptions"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="道具资源" :prop="sourceMap[form.propsType].isChangeSource ? 'tmpSourceIndex' : ''">
|
||||
<el-form-item :label="$t('pages.propsStore.form.propsResource')" :prop="sourceMap[form.propsType].isChangeSource ? 'tmpSourceIndex' : ''">
|
||||
<el-row v-loading="sourceMap[form.propsType].loading" :gutter="10">
|
||||
<el-col v-if="sourceMap[form.propsType].isChangeSource" :span="15">
|
||||
<el-form-item :prop="isUpdate ? 'tmpSourceIndex' : ''">
|
||||
<el-select
|
||||
v-model="form.tmpSourceIndex"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsStore.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changePropsSouce"
|
||||
@ -90,23 +90,23 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
<el-button v-if="!sourceMap[form.propsType].isChangeSource" type="text" @click="clickChangeSource(form.propsType)">更换资源</el-button>
|
||||
<el-button v-if="!sourceMap[form.propsType].isChangeSource" type="text" @click="clickChangeSource(form.propsType)">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="付费类型" prop="tmpCurrencyTypes">
|
||||
<el-form-item :label="$t('pages.propsStore.form.currencyType')" prop="tmpCurrencyTypes">
|
||||
<el-select
|
||||
v-model="form.tmpCurrencyTypes"
|
||||
placeholder="付费类型"
|
||||
:placeholder="$t('pages.propsStore.form.currencyType')"
|
||||
style="width: 100%"
|
||||
multiple
|
||||
>
|
||||
<el-option v-for="item in propsCurrencyType" :key="item.value" :disabled="isNobleVip && item.value !== 'GOLD'" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="item in propsCurrencyTypeOptions" :key="item.value" :disabled="isNobleVip && item.value !== 'GOLD'" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效天数" prop="tmpValidDays">
|
||||
<el-form-item :label="$t('pages.propsStore.form.validDays')" prop="tmpValidDays">
|
||||
<el-select
|
||||
v-model="form.tmpValidDays"
|
||||
placeholder="付费类型"
|
||||
:placeholder="$t('pages.propsStore.form.validDays')"
|
||||
style="width: 100%"
|
||||
class="filter-item"
|
||||
multiple
|
||||
@ -115,49 +115,49 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="标签" prop="label">
|
||||
<el-input v-model.trim="form.label" placeholder="请输入标签" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.label')" prop="label">
|
||||
<el-input v-model.trim="form.label" :placeholder="$t('pages.propsStore.placeholder.label')" />
|
||||
</el-form-item>
|
||||
<el-row v-if="form.propsType === 'NOBLE_VIP'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="折扣率" prop="discount">
|
||||
<el-input v-model="form.discount" placeholder="折扣率" @change="calculateDiscountPrice()" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.discount')" prop="discount">
|
||||
<el-input v-model="form.discount" :placeholder="$t('pages.propsStore.form.discount')" @change="calculateDiscountPrice()" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="序号" prop="sort">
|
||||
<el-input v-model.trim="form.sort" v-number placeholder="序号越大越靠前" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.sort')" prop="sort">
|
||||
<el-input v-model.trim="form.sort" v-number :placeholder="$t('pages.propsStore.placeholder.sort')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="form.propsType !== 'NOBLE_VIP'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="折扣率" prop="discount">
|
||||
<el-input v-model="form.discount" placeholder="折扣率" :disabled="true" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.discount')" prop="discount">
|
||||
<el-input v-model="form.discount" :placeholder="$t('pages.propsStore.form.discount')" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="序号" prop="sort">
|
||||
<el-input v-model.trim="form.sort" v-number placeholder="序号越大越靠前" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.sort')" prop="sort">
|
||||
<el-input v-model.trim="form.sort" v-number :placeholder="$t('pages.propsStore.placeholder.sort')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="上/下架" prop="shelfStatus">
|
||||
<el-form-item :label="$t('pages.propsStore.form.shelfStatus')" prop="shelfStatus">
|
||||
<el-radio-group v-model="form.shelfStatus">
|
||||
<el-radio :label="true">上架</el-radio>
|
||||
<el-radio :label="false">下架</el-radio>
|
||||
<el-radio :label="true">{{ $t('pages.propsStore.status.onShelf') }}</el-radio>
|
||||
<el-radio :label="false">{{ $t('pages.propsStore.status.offShelf') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-if="isNobleVip" :md="24" :lg="12">
|
||||
<el-form-item label="车辆">
|
||||
<el-form-item :label="$t('pages.propsStore.propsTypes.RIDE')">
|
||||
<el-row v-loading="sourceMap['RIDE'].loading" :gutter="10">
|
||||
<el-col v-if="sourceMap['RIDE'].isChangeSource" :span="15">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="form.tmpCarIndex"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsStore.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeCarSouce"
|
||||
@ -195,16 +195,16 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
<el-button v-if="!sourceMap['RIDE'].isChangeSource" type="text" @click="clickChangeSource('RIDE')">更换资源</el-button>
|
||||
<el-button v-if="!sourceMap['RIDE'].isChangeSource" type="text" @click="clickChangeSource('RIDE')">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="头像框">
|
||||
<el-form-item :label="$t('pages.propsStore.propsTypes.AVATAR_FRAME')">
|
||||
<el-row v-loading="sourceMap['AVATAR_FRAME'].loading" :gutter="10">
|
||||
<el-col v-if="sourceMap['AVATAR_FRAME'].isChangeSource" :span="15">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="form.tmpAvatarIndex"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsStore.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeAvatarFrameSource"
|
||||
@ -241,16 +241,16 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
<el-button v-if="!sourceMap['AVATAR_FRAME'].isChangeSource" type="text" @click="clickChangeSource('AVATAR_FRAME')">更换资源</el-button>
|
||||
<el-button v-if="!sourceMap['AVATAR_FRAME'].isChangeSource" type="text" @click="clickChangeSource('AVATAR_FRAME')">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="资料卡">
|
||||
<el-form-item :label="$t('pages.propsStore.propsTypes.DATA_CARD')">
|
||||
<el-row v-loading="sourceMap['DATA_CARD'].loading" :gutter="10">
|
||||
<el-col v-if="sourceMap['DATA_CARD'].isChangeSource" :span="15">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="form.tmpDataCardIndex"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsStore.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeDataCardSource"
|
||||
@ -287,16 +287,16 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
<el-button v-if="!sourceMap['DATA_CARD'].isChangeSource" type="text" @click="clickChangeSource('DATA_CARD')">更换资源</el-button>
|
||||
<el-button v-if="!sourceMap['DATA_CARD'].isChangeSource" type="text" @click="clickChangeSource('DATA_CARD')">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="聊天气泡">
|
||||
<el-form-item :label="$t('pages.propsStore.propsTypes.CHAT_BUBBLE')">
|
||||
<el-row v-loading="sourceMap['CHAT_BUBBLE'].loading" :gutter="10">
|
||||
<el-col v-if="sourceMap['CHAT_BUBBLE'].isChangeSource" :span="15">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="form.tmpChatBubbleIndex"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.propsStore.placeholder.type')"
|
||||
style="width:100%;"
|
||||
class="filter-item"
|
||||
@change="changeChatBubbleSource"
|
||||
@ -333,49 +333,49 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
<el-button v-if="!sourceMap['CHAT_BUBBLE'].isChangeSource" type="text" @click="clickChangeSource('CHAT_BUBBLE')">更换资源</el-button>
|
||||
<el-button v-if="!sourceMap['CHAT_BUBBLE'].isChangeSource" type="text" @click="clickChangeSource('CHAT_BUBBLE')">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="VIP类型" prop="propsAbility.vipType">
|
||||
<el-form-item :label="$t('pages.propsStore.form.vipType')" prop="propsAbility.vipType">
|
||||
<el-select
|
||||
v-model="form.propsAbility.vipType"
|
||||
placeholder="贵族类型"
|
||||
:placeholder="$t('pages.propsStore.placeholder.vipType')"
|
||||
style="width: 100%"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option v-for="item in nobleVipTabs" :key="item.value" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="item in nobleVipTabOptions" :key="item.value" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="登录奖励" prop="propsAbility.loginRewardsAmount">
|
||||
<el-input v-model="form.propsAbility.loginRewardsAmount" placeholder="登录奖励" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.loginReward')" prop="propsAbility.loginRewardsAmount">
|
||||
<el-input v-model="form.propsAbility.loginRewardsAmount" :placeholder="$t('pages.propsStore.form.loginReward')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="VIP等级" prop="propsAbility.vipLevel">
|
||||
<el-input v-model="form.propsAbility.vipLevel" placeholder="VIP等级" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.vipLevel')" prop="propsAbility.vipLevel">
|
||||
<el-input v-model="form.propsAbility.vipLevel" :placeholder="$t('pages.propsStore.form.vipLevel')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="管理员数" prop="propsAbility.adminNumber">
|
||||
<el-input v-model="form.propsAbility.adminNumber" placeholder="管理员数" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.adminCount')" prop="propsAbility.adminNumber">
|
||||
<el-input v-model="form.propsAbility.adminNumber" :placeholder="$t('pages.propsStore.form.adminCount')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="房间成员数" prop="propsAbility.roomMaxMember">
|
||||
<el-input v-model="form.propsAbility.roomMaxMember" placeholder="房间成员数" />
|
||||
<el-form-item :label="$t('pages.propsStore.form.roomMemberCount')" prop="propsAbility.roomMaxMember">
|
||||
<el-input v-model="form.propsAbility.roomMaxMember" :placeholder="$t('pages.propsStore.form.roomMemberCount')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm()">{{ $t('pages.propsStore.action.save') }}</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.propsStore.action.cancel') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@ -397,9 +397,6 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
discountPrice: '',
|
||||
propsCommodityTypes,
|
||||
@ -452,32 +449,7 @@ export default {
|
||||
tmpFloatPictureIndex: '',
|
||||
tmpCarIndex: ''
|
||||
},
|
||||
formRules: {
|
||||
sort: commonRules,
|
||||
propsType: commonRules,
|
||||
sysOrigin: commonRules,
|
||||
tmpTypeIndex: commonRules,
|
||||
tmpCurrencyTypes: commonRules,
|
||||
tmpValidDays: commonRules,
|
||||
validDays: commonRules,
|
||||
discount: commonRules,
|
||||
shelfStatus: commonRules,
|
||||
'propsAbility.vipType': commonRules,
|
||||
'propsAbility.vipLevel': commonRules,
|
||||
'propsAbility.adminNumber': commonRules,
|
||||
'propsAbility.loginRewardsAmount': commonRules,
|
||||
'propsAbility.roomMaxMember': commonRules,
|
||||
'propsAbility.avatarFrameId': commonRules,
|
||||
'propsAbility.carId': commonRules,
|
||||
'propsAbility.chatBubbleId': commonRules,
|
||||
'propsAbility.dataCardId': commonRules,
|
||||
tmpCarIndex: commonRules,
|
||||
tmpDataCardIndex: commonRules,
|
||||
tmpAvatarIndex: commonRules,
|
||||
tmpChatBubbleIndex: commonRules,
|
||||
tmpFloatPictureIndex: commonRules,
|
||||
tmpSourceIndex: commonRules
|
||||
},
|
||||
formRules: {},
|
||||
sourceTypeList: [],
|
||||
selectType: {},
|
||||
isLoadSourceTypeList: false,
|
||||
@ -555,11 +527,60 @@ export default {
|
||||
return !this.form.sourceUrl
|
||||
},
|
||||
textOptTitle() {
|
||||
return this.form && this.form.id ? '修改' : '添加'
|
||||
return this.form && this.form.id ? this.$t('pages.propsStore.action.edit') : this.$t('pages.propsStore.action.add')
|
||||
},
|
||||
isUpdate() {
|
||||
return !!(this.form && this.form.id)
|
||||
},
|
||||
propsCommodityTypeOptions() {
|
||||
return this.propsCommodityTypes.map(item => ({
|
||||
...item,
|
||||
name: this.$t(`pages.propsStore.propsTypes.${item.value}`)
|
||||
}))
|
||||
},
|
||||
propsCurrencyTypeOptions() {
|
||||
return this.propsCurrencyType.map(item => ({
|
||||
...item,
|
||||
name: this.$t(`pages.propsStore.currencyTypes.${item.value}`)
|
||||
}))
|
||||
},
|
||||
nobleVipTabOptions() {
|
||||
return this.nobleVipTabs.map(item => ({
|
||||
...item,
|
||||
name: this.$t(`pages.propsStore.nobleVipTypes.${item.value}`)
|
||||
}))
|
||||
},
|
||||
localizedFormRules() {
|
||||
const commonRules = [
|
||||
{ required: true, message: this.$t('pages.propsStore.validation.required'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
sort: commonRules,
|
||||
propsType: commonRules,
|
||||
sysOrigin: commonRules,
|
||||
tmpTypeIndex: commonRules,
|
||||
tmpCurrencyTypes: commonRules,
|
||||
tmpValidDays: commonRules,
|
||||
validDays: commonRules,
|
||||
discount: commonRules,
|
||||
shelfStatus: commonRules,
|
||||
'propsAbility.vipType': commonRules,
|
||||
'propsAbility.vipLevel': commonRules,
|
||||
'propsAbility.adminNumber': commonRules,
|
||||
'propsAbility.loginRewardsAmount': commonRules,
|
||||
'propsAbility.roomMaxMember': commonRules,
|
||||
'propsAbility.avatarFrameId': commonRules,
|
||||
'propsAbility.carId': commonRules,
|
||||
'propsAbility.chatBubbleId': commonRules,
|
||||
'propsAbility.dataCardId': commonRules,
|
||||
tmpCarIndex: commonRules,
|
||||
tmpDataCardIndex: commonRules,
|
||||
tmpAvatarIndex: commonRules,
|
||||
tmpChatBubbleIndex: commonRules,
|
||||
tmpFloatPictureIndex: commonRules,
|
||||
tmpSourceIndex: commonRules
|
||||
}
|
||||
},
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
},
|
||||
watch: {
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="归属系统"
|
||||
:placeholder="$t('pages.propsStore.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -21,13 +21,13 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.propsType"
|
||||
placeholder="道具类型"
|
||||
:placeholder="$t('pages.propsStore.filter.propsType')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in propsCommodityTypes"
|
||||
v-for="(item, index) in propsCommodityTypeOptions"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
@ -35,30 +35,30 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.shelfStatus"
|
||||
placeholder="上/下架"
|
||||
:placeholder="$t('pages.propsStore.filter.shelfStatus')"
|
||||
clearable
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option v-for="item in showcaseTypes" :key="item.value" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="item in showcaseTypeOptions" :key="item.value" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
|
||||
<el-select
|
||||
v-model="listQuery.currencyTypes"
|
||||
placeholder="付费类型"
|
||||
:placeholder="$t('pages.propsStore.filter.currencyType')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option v-for="item in propsCurrencyType" :key="item.value" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="item in propsCurrencyTypeOptions" :key="item.value" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
|
||||
<el-input
|
||||
v-model.trim="listQuery.id"
|
||||
v-number
|
||||
placeholder="商品ID"
|
||||
:placeholder="$t('pages.propsStore.filter.commodityId')"
|
||||
clearable
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@ -67,7 +67,7 @@
|
||||
<el-input
|
||||
v-model.trim="listQuery.sourceId"
|
||||
v-number
|
||||
placeholder="资源ID"
|
||||
:placeholder="$t('pages.propsStore.filter.resourceId')"
|
||||
clearable
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@ -79,7 +79,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.propsStore.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -87,7 +87,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="handleCreate"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.propsStore.action.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -100,7 +100,7 @@
|
||||
>
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="scope">
|
||||
<h2>资源信息</h2>
|
||||
<h2>{{ $t('pages.propsStore.section.resourceInfo') }}</h2>
|
||||
<el-form v-if="scope.row.propsSource" label-position="left" class="store-table-expand" style="margin-left:20px;">
|
||||
<el-form-item>
|
||||
<el-col :span="12">
|
||||
@ -109,57 +109,57 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="编号">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.code')">
|
||||
<span>{{ scope.row.propsSource.code }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="名称">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.name')">
|
||||
<span>{{ scope.row.propsSource.name }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="低价">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.basePrice')">
|
||||
<span>{{ scope.row.propsSource.amount }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="scope.row.commodity.propsType !== 'NOBLE_VIP'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上/下架状态">
|
||||
<span>{{ scope.row.propsSource.del ? '下架' : '上架' }}</span>
|
||||
<el-form-item :label="$t('pages.propsStore.detail.shelfStatus')">
|
||||
<span>{{ getShelfStatusLabel(!scope.row.propsSource.del) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="低价">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.salePrice')">
|
||||
<el-tag>{{ scope.row.salePrice }}</el-tag>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="scope.row.commodity.propsType === 'NOBLE_VIP'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上/下架状态">
|
||||
<span>{{ scope.row.propsSource.del ? '下架' : '上架' }}</span>
|
||||
<el-form-item :label="$t('pages.propsStore.detail.shelfStatus')">
|
||||
<span>{{ getShelfStatusLabel(!scope.row.propsSource.del) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="scope.row.commodity.propsType === 'NOBLE_VIP'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="原低价">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.originalPrice')">
|
||||
<el-tag>{{ scope.row.salePrice }}</el-tag>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="折后低价">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.discountedPrice')">
|
||||
<el-tag>{{ scope.row.saleDiscountPrice }}</el-tag>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div v-if="scope.row.commodity.propsType === 'NOBLE_VIP'">
|
||||
<h2>贵族能力</h2>
|
||||
<h2>{{ $t('pages.propsStore.section.nobleAbility') }}</h2>
|
||||
<el-form v-if="scope.row.propsAbility && scope.row.propsAbility.nobleVipAbility" label-position="left" class="store-table-expand" style="margin-left:20px;">
|
||||
<el-form-item>
|
||||
<el-col :span="12">
|
||||
@ -168,31 +168,31 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="VIP类型">
|
||||
<el-form-item :label="$t('pages.propsStore.form.vipType')">
|
||||
<span>{{ scope.row.propsAbility.nobleVipAbility.vipType }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="VIP等级">
|
||||
<el-form-item :label="$t('pages.propsStore.form.vipLevel')">
|
||||
<span>{{ scope.row.propsAbility.nobleVipAbility.vipLevel }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="成员数量">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.memberCount')">
|
||||
<span>{{ scope.row.propsAbility.nobleVipAbility.roomMaxMember }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="登录奖励数">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.loginRewardCount')">
|
||||
<span>{{ scope.row.propsAbility.nobleVipAbility.loginRewardsAmount }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="道具">
|
||||
<el-form-item :label="$t('pages.propsStore.detail.props')">
|
||||
|
||||
<div class="vip-props flex-l">
|
||||
|
||||
@ -209,7 +209,7 @@
|
||||
:url="scope.row.propsAbility.avatarFrame.sourceUrl"
|
||||
/>
|
||||
</div>
|
||||
<div class="props-lable">头像框</div>
|
||||
<div class="props-lable">{{ $t('pages.propsStore.propsTypes.AVATAR_FRAME') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -226,7 +226,7 @@
|
||||
:url="scope.row.propsAbility.car.sourceUrl"
|
||||
/>
|
||||
</div>
|
||||
<div class="props-lable">座驾</div>
|
||||
<div class="props-lable">{{ $t('pages.propsStore.propsTypes.RIDE') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -243,7 +243,7 @@
|
||||
:url="scope.row.propsAbility.chatBubble.sourceUrl"
|
||||
/>
|
||||
</div>
|
||||
<div class="props-lable">气泡框</div>
|
||||
<div class="props-lable">{{ $t('pages.propsStore.propsTypes.CHAT_BUBBLE') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -260,7 +260,7 @@
|
||||
:url="scope.row.propsAbility.dataCard.sourceUrl"
|
||||
/>
|
||||
</div>
|
||||
<div class="props-lable">资料卡</div>
|
||||
<div class="props-lable">{{ $t('pages.propsStore.propsTypes.DATA_CARD') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -272,14 +272,18 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="commodity.id" width="200" label="ID" align="center" />
|
||||
<el-table-column label="平台" width="80" align="center">
|
||||
<el-table-column :label="$t('pages.propsStore.table.platform')" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.commodity.sysOrigin" :desc="scope.row.commodity.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="currencyTypesName" label="付费类型" align="center" width="80" />
|
||||
<el-table-column prop="commodity.validDays" label="有效天数" align="center" min-width="100" />
|
||||
<el-table-column label="封面" width="80" align="center">
|
||||
<el-table-column :label="$t('pages.propsStore.table.currencyType')" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
{{ getCurrencyTypesLabel(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="commodity.validDays" :label="$t('pages.propsStore.table.validDays')" align="center" min-width="100" />
|
||||
<el-table-column :label="$t('pages.propsStore.table.cover')" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.propsSource" class="preview-img">
|
||||
<el-image
|
||||
@ -296,7 +300,7 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="100" label="上/下架" align="center">
|
||||
<el-table-column width="100" :label="$t('pages.propsStore.table.shelfStatus')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.commodity.shelfStatus"
|
||||
@ -306,21 +310,21 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="commodity.label" width="100" label="标签" align="center" min-width="100" />
|
||||
<el-table-column prop="commodity.sort" width="50" label="序号" align="center" min-width="60" />
|
||||
<el-table-column prop="commodity.createTime" width="200" label="创建时间" align="center">
|
||||
<el-table-column prop="commodity.label" width="100" :label="$t('pages.propsStore.table.label')" align="center" min-width="100" />
|
||||
<el-table-column prop="commodity.sort" width="70" :label="$t('pages.propsStore.table.sort')" align="center" min-width="70" />
|
||||
<el-table-column prop="commodity.createTime" width="200" :label="$t('pages.propsStore.table.createTime')" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.commodity.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="commodity.updateTime" width="200" label="修改时间" align="center">
|
||||
<el-table-column prop="commodity.updateTime" width="200" :label="$t('pages.propsStore.table.updateTime')" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.commodity.updateTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="100">
|
||||
<el-table-column :label="$t('pages.propsStore.table.actions')" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click.native="handleUpdate(scope.row)">编辑</el-button>
|
||||
<el-button type="text" @click.native="handleUpdate(scope.row)">{{ $t('pages.propsStore.action.edit') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -355,8 +359,8 @@ export default {
|
||||
return {
|
||||
propsCommodityTypes,
|
||||
showcaseTypes: [
|
||||
{ value: false, name: '下架' },
|
||||
{ value: true, name: '上架' }
|
||||
{ value: false },
|
||||
{ value: true }
|
||||
],
|
||||
formEditVisable: false,
|
||||
thisRow: {},
|
||||
@ -378,6 +382,24 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
propsCommodityTypeOptions() {
|
||||
return this.propsCommodityTypes.map(item => ({
|
||||
...item,
|
||||
name: this.$t(`pages.propsStore.propsTypes.${item.value}`)
|
||||
}))
|
||||
},
|
||||
propsCurrencyTypeOptions() {
|
||||
return this.propsCurrencyType.map(item => ({
|
||||
...item,
|
||||
name: this.$t(`pages.propsStore.currencyTypes.${item.value}`)
|
||||
}))
|
||||
},
|
||||
showcaseTypeOptions() {
|
||||
return this.showcaseTypes.map(item => ({
|
||||
...item,
|
||||
name: this.getShelfStatusLabel(item.value)
|
||||
}))
|
||||
},
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
},
|
||||
created() {
|
||||
@ -425,6 +447,16 @@ export default {
|
||||
row.shelfStatus = !row.shelfStatus
|
||||
})
|
||||
},
|
||||
getShelfStatusLabel(value) {
|
||||
return this.$t(value ? 'pages.propsStore.status.onShelf' : 'pages.propsStore.status.offShelf')
|
||||
},
|
||||
getCurrencyTypesLabel(row) {
|
||||
const currencyTypes = row && row.commodity && row.commodity.currencyTypes
|
||||
if (!currencyTypes) {
|
||||
return row.currencyTypesName
|
||||
}
|
||||
return currencyTypes.split(',').map(type => this.$t(`pages.propsStore.currencyTypes.${type}`)).join(',')
|
||||
},
|
||||
handleSearch() {
|
||||
this.renderData(true)
|
||||
},
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="team-details-drawer">
|
||||
<el-drawer
|
||||
title="详情"
|
||||
:title="$t('pages.teamDetailsDrawer.title')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -13,50 +13,50 @@
|
||||
<div v-loading="loading" class="team-details-drawer-content">
|
||||
|
||||
<div v-if="profile.ownUserProfile">
|
||||
<div class="blockquote">代理</div>
|
||||
<div class="blockquote">{{ $t('pages.teamDetailsDrawer.section.agent') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit :user-profile="profile.ownUserProfile" :query-details="true" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="profile.teamProfile">
|
||||
<div class="blockquote">设置资料</div>
|
||||
<div class="blockquote">{{ $t('pages.teamDetailsDrawer.section.settings') }}</div>
|
||||
<div class="content">
|
||||
<div class="flex-b team-row">
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
ID: {{ profile.teamProfile.id }}
|
||||
</div>
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
状态:
|
||||
<el-tag v-if="profile.teamProfile.status === 'AVAILABLE'" size="mini" type="success">正常</el-tag>
|
||||
<el-tag v-if="profile.teamProfile.status === 'CLOSE'" size="mini" type="danger">关闭</el-tag>
|
||||
{{ $t('pages.teamDetailsDrawer.label.status') }}:
|
||||
<el-tag v-if="profile.teamProfile.status === 'AVAILABLE'" size="mini" type="success">{{ $t('pages.teamDetailsDrawer.status.available') }}</el-tag>
|
||||
<el-tag v-if="profile.teamProfile.status === 'CLOSE'" size="mini" type="danger">{{ $t('pages.teamDetailsDrawer.status.closed') }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-b team-row">
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
区域ID: {{ profile.teamProfile.region }}
|
||||
{{ $t('pages.teamDetailsDrawer.label.regionId') }}: {{ profile.teamProfile.region }}
|
||||
</div>
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
区域: {{ profile.regionName }}
|
||||
{{ $t('pages.teamDetailsDrawer.label.region') }}: {{ profile.regionName }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-b team-row">
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
成员: {{ profile.teamProfile.counter.memberQuantity }}/{{ profile.teamProfile.setting.maxMember }}
|
||||
{{ $t('pages.teamDetailsDrawer.label.members') }}: {{ profile.teamProfile.counter.memberQuantity }}/{{ profile.teamProfile.setting.maxMember }}
|
||||
</div>
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
国家(团队): {{ profile.teamProfile.country.countryName }}
|
||||
{{ $t('pages.teamDetailsDrawer.label.teamCountry') }}: {{ profile.teamProfile.country.countryName }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-b team-row">
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
创建时间: {{ profile.teamProfile.createTime }}
|
||||
{{ $t('pages.teamDetailsDrawer.label.createdTime') }}: {{ profile.teamProfile.createTime }}
|
||||
</div>
|
||||
<div class="team-col nowrap-ellipsis">
|
||||
修改时间: {{ profile.teamProfile.updateTime }}
|
||||
{{ $t('pages.teamDetailsDrawer.label.updatedTime') }}: {{ profile.teamProfile.updateTime }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
</div>
|
||||
|
||||
<div v-if="profile.createUserProfile || profile.createUserNickname">
|
||||
<div class="blockquote">创建用户</div>
|
||||
<div class="blockquote">{{ $t('pages.teamDetailsDrawer.section.createdBy') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit v-if="profile.createUserProfile" :user-profile="profile.createUserProfile" :query-details="true" :tag-name="profile.createUserBdRoles ? 'BD': ''" />
|
||||
<span v-else>{{ profile.createUserNickname }}</span>
|
||||
@ -73,7 +73,7 @@
|
||||
</div>
|
||||
|
||||
<div v-if="profile.updateUserProfile || profile.updateUserNickname">
|
||||
<div class="blockquote">最近操作用户</div>
|
||||
<div class="blockquote">{{ $t('pages.teamDetailsDrawer.section.lastOperator') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit v-if="profile.updateUserProfile" :user-profile="profile.updateUserProfile" :query-details="true" :tag-name="profile.updateUserBdRoles ? 'BD': ''" />
|
||||
<span v-else>{{ profile.updateUserNickname }}</span>
|
||||
@ -81,7 +81,7 @@
|
||||
</div>
|
||||
|
||||
<div v-if="profile.releasePolicy">
|
||||
<div class="blockquote">发布政策</div>
|
||||
<div class="blockquote">{{ $t('pages.teamDetailsDrawer.section.releasePolicy') }}</div>
|
||||
<div class="content">
|
||||
<div class="policy">
|
||||
<div v-for="(item, index) in profile.releasePolicy.policy" :key="index" class="policy-row">
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="team-member-work-drawer">
|
||||
<el-drawer
|
||||
title="详情"
|
||||
:title="$t('pages.teamMemberWork.drawer.details')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -33,63 +33,63 @@
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="blockquote">代理</div>
|
||||
<div class="blockquote">{{ $t('pages.teamMemberWork.section.agent') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit :user-profile="row.ownUserProfile" :query-details="true" />
|
||||
</div>
|
||||
|
||||
<div class="blockquote">成员</div>
|
||||
<div class="blockquote">{{ $t('pages.teamMemberWork.section.member') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit :user-profile="row.memberProfile" :query-details="true" />
|
||||
</div>
|
||||
|
||||
<div class="blockquote">工作数据</div>
|
||||
<div class="blockquote">{{ $t('pages.teamMemberWork.section.workData') }}</div>
|
||||
<div class="content">
|
||||
<el-row class="text-row">
|
||||
<el-col class="text-col" :span="12">周期: {{ row.billBelong }}</el-col>
|
||||
<el-col class="text-col" :span="12">状态: <el-tag size="mini" :type="teamBillStatusMap[row.billStatus].tag">{{ teamBillStatusMap[row.billStatus].name }}</el-tag></el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.period') }}: {{ row.billBelong }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.status') }}: <el-tag size="mini" :type="teamBillStatusMap[row.billStatus].tag">{{ teamBillStatusMap[row.billStatus].name }}</el-tag></el-col>
|
||||
|
||||
<el-col class="text-col" :span="12">时长(我的): {{ row.target.ownOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">时长(其他): {{ row.target.otherOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.myDuration') }}: {{ row.target.ownOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.otherDuration') }}: {{ row.target.otherOnlineTime || 0 }}</el-col>
|
||||
|
||||
<el-col class="text-col" :span="12">礼物(送): {{ row.target.giveGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">礼物(收): {{ row.target.acceptGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.sentGifts') }}: {{ row.target.giveGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.receivedGifts') }}: {{ row.target.acceptGiftValue || 0 }}</el-col>
|
||||
|
||||
<!-- <el-col class="text-col" :span="12">房间: {{ row.target.roomValue || 0 }}</el-col> -->
|
||||
<el-col class="text-col" :span="12">粉丝: {{ row.memberFans || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.fans') }}: {{ row.memberFans || 0 }}</el-col>
|
||||
|
||||
<el-col class="text-col" :span="12">
|
||||
<div v-if="row.target.settleRes.policyType === 'MONEY'">成员工资$: {{ row.target.settleRes ? row.target.settleRes.memberSalary : '?' }}</div>
|
||||
<div v-else>成员工资钻石: {{ row.target.settleRes ? row.target.settleRes.memberSalary : '?' }}</div>
|
||||
<div v-if="row.target.settleRes.policyType === 'MONEY'">{{ $t('pages.teamMemberWork.label.memberSalaryUsd') }}: {{ row.target.settleRes ? row.target.settleRes.memberSalary : '?' }}</div>
|
||||
<div v-else>{{ $t('pages.teamMemberWork.label.memberSalaryDiamonds') }}: {{ row.target.settleRes ? row.target.settleRes.memberSalary : '?' }}</div>
|
||||
</el-col>
|
||||
<el-col class="text-col" :span="12">
|
||||
<div v-if="row.target.settleRes.policyType === 'MONEY'">代理工资$: {{ row.target.settleRes ? row.target.settleRes.ownSalary : '?' }}</div>
|
||||
<div v-else>代理工资钻石: {{ row.target.settleRes ? row.target.settleRes.ownSalary : '?' }}</div>
|
||||
<div v-if="row.target.settleRes.policyType === 'MONEY'">{{ $t('pages.teamMemberWork.label.agentSalaryUsd') }}: {{ row.target.settleRes ? row.target.settleRes.ownSalary : '?' }}</div>
|
||||
<div v-else>{{ $t('pages.teamMemberWork.label.agentSalaryDiamonds') }}: {{ row.target.settleRes ? row.target.settleRes.ownSalary : '?' }}</div>
|
||||
</el-col>
|
||||
<el-col class="text-col" :span="12">
|
||||
<div v-if="row.target.settleRes.policyType === 'MONEY'">合计工资$: {{ row.target.settleRes ? row.target.settleRes.totalSalary : '?' }}</div>
|
||||
<div v-else>合计工资钻石: {{ row.target.settleRes ? row.target.settleRes.totalSalary : '?' }}</div>
|
||||
<div v-if="row.target.settleRes.policyType === 'MONEY'">{{ $t('pages.teamMemberWork.label.totalSalaryUsd') }}: {{ row.target.settleRes ? row.target.settleRes.totalSalary : '?' }}</div>
|
||||
<div v-else>{{ $t('pages.teamMemberWork.label.totalSalaryDiamonds') }}: {{ row.target.settleRes ? row.target.settleRes.totalSalary : '?' }}</div>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col class="text-col" :span="12">
|
||||
<div v-if="row.target.settleRes.policyType === 'SALARY_DIAMOND'">平台扣除钻石: {{ row.target.settleRes ? row.target.settleRes.deductDiamonds : '?' }}</div>
|
||||
</el-col> -->
|
||||
<el-col class="text-col" :span="12">
|
||||
<div v-if="row.target.settleRes.policyType === 'SALARY_DIAMOND'">已兑换钻石: {{ row.target.settleRes ? row.target.settleRes.exchangeDiamonds : '?' }}</div>
|
||||
<div v-if="row.target.settleRes.policyType === 'SALARY_DIAMOND'">{{ $t('pages.teamMemberWork.label.exchangedDiamonds') }}: {{ row.target.settleRes ? row.target.settleRes.exchangeDiamonds : '?' }}</div>
|
||||
</el-col>
|
||||
<el-col class="text-col" :span="12">
|
||||
<div v-if="row.target.settleRes.policyType === 'SALARY_DIAMOND'">剩余钻石: {{ row.target.settleRes ? row.target.settleRes.surplusDiamonds : '?' }}</div>
|
||||
<div v-if="row.target.settleRes.policyType === 'SALARY_DIAMOND'">{{ $t('pages.teamMemberWork.label.remainingDiamonds') }}: {{ row.target.settleRes ? row.target.settleRes.surplusDiamonds : '?' }}</div>
|
||||
</el-col>
|
||||
|
||||
<el-col class="text-col" :span="12">道具奖励: {{ existsPropsRewards ? 'Yes' : 'No' }}</el-col>
|
||||
<el-col v-if="existsPropsRewards" class="text-col" :span="12">领取状态: {{ row.target.settleRes.propsRewardReceive ? '已领取': '待领取' }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.propsReward') }}: {{ existsPropsRewards ? $t('pages.teamMemberWork.label.yes') : $t('pages.teamMemberWork.label.no') }}</el-col>
|
||||
<el-col v-if="existsPropsRewards" class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.receiveStatus') }}: {{ row.target.settleRes.propsRewardReceive ? $t('pages.teamMemberWork.label.receivedReward') : $t('pages.teamMemberWork.label.pendingReward') }}</el-col>
|
||||
<el-col v-if="existsPropsRewards" class="text-col" :span="24">
|
||||
<props-row :list="row.target.settleRes.propsRewards" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<div class="blockquote">每天工作数据</div>
|
||||
<div class="blockquote">{{ $t('pages.teamMemberWork.section.dailyWorkData') }}</div>
|
||||
<div class="content">
|
||||
<el-card
|
||||
v-for="(item, index) in row.target.dailyTargets"
|
||||
@ -99,12 +99,12 @@
|
||||
{{ item.dateNumber }}
|
||||
</div>
|
||||
<el-row class="text-row">
|
||||
<el-col class="text-col" :span="12">时长(我的): {{ item.ownOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">时长(其他): {{ item.otherOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">礼物(送): {{ item.giveGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">有效天: {{ item.effectiveDay || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">礼物(收): {{ item.acceptGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">房间: {{ row.roomValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.myDuration') }}: {{ item.ownOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.otherDuration') }}: {{ item.otherOnlineTime || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.sentGifts') }}: {{ item.giveGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.effectiveDays') }}: {{ item.effectiveDay || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.receivedGifts') }}: {{ item.acceptGiftValue || 0 }}</el-col>
|
||||
<el-col class="text-col" :span="12">{{ $t('pages.teamMemberWork.label.room') }}: {{ row.roomValue || 0 }}</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="礼物流水"
|
||||
:title="$t('pages.teamMemberWork.dialog.giftTransactions')"
|
||||
:visible="true"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -12,12 +12,12 @@
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.teamMemberWork.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
max-height="500"
|
||||
>
|
||||
<el-table-column label="发送人" align="center" min-width="200">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.sender')" align="center" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit
|
||||
:user-profile="scope.row.userProfile"
|
||||
@ -29,7 +29,7 @@
|
||||
|
||||
<el-table-column
|
||||
prop="giftValue.quantity"
|
||||
label="礼物数量"
|
||||
:label="$t('pages.teamMemberWork.table.giftQuantity')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
>
|
||||
@ -48,19 +48,19 @@
|
||||
|
||||
<el-table-column
|
||||
prop="giftValue.userSize"
|
||||
label="接收人数"
|
||||
:label="$t('pages.teamMemberWork.table.recipientCount')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="giftValue.actualAmount"
|
||||
label="消费金额"
|
||||
:label="$t('pages.teamMemberWork.table.spendAmount')"
|
||||
align="center"
|
||||
min-width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
:label="$t('pages.teamMemberWork.table.createdTime')"
|
||||
align="center"
|
||||
width="200"
|
||||
>
|
||||
@ -68,12 +68,12 @@
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="60">
|
||||
<el-table-column fixed="right" :label="$t('pages.teamMemberWork.table.actions')" align="center" width="60">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="clickQueryDetails(scope.row)"
|
||||
>详情</el-button>
|
||||
>{{ $t('pages.teamMemberWork.action.details') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -86,8 +86,8 @@
|
||||
size="mini"
|
||||
:disabled="listLoading"
|
||||
@click="clickLoadMore"
|
||||
>加载更多</el-button>
|
||||
<span v-else>已加载全部</span>
|
||||
>{{ $t('pages.teamMemberWork.action.loadMore') }}</el-button>
|
||||
<span v-else>{{ $t('pages.teamMemberWork.action.loadedAll') }}</span>
|
||||
</div>
|
||||
|
||||
<gift-history-details-drawer
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="归属系统"
|
||||
:placeholder="$t('pages.teamMemberWork.placeholder.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -19,13 +19,13 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<el-input v-model="listQuery.billId" :sys-origin="listQuery.billId" placeholder="账单ID" />
|
||||
<el-input v-model="listQuery.billId" :sys-origin="listQuery.billId" :placeholder="$t('pages.teamMemberWork.placeholder.billId')" />
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.ownUserId" :sys-origin="listQuery.sysOrigin" placeholder="代理ID" />
|
||||
<account-input v-model="listQuery.ownUserId" :sys-origin="listQuery.sysOrigin" :placeholder="$t('pages.teamMemberWork.placeholder.agentId')" />
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.memberUserId" :sys-origin="listQuery.sysOrigin" placeholder="成员ID" />
|
||||
<account-input v-model="listQuery.memberUserId" :sys-origin="listQuery.sysOrigin" :placeholder="$t('pages.teamMemberWork.placeholder.memberId')" />
|
||||
</div>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -34,7 +34,7 @@
|
||||
:disabled="listLoading"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.teamMemberWork.action.search') }}
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
@ -46,14 +46,14 @@
|
||||
:loading="delLoading"
|
||||
@click="clickRemoveMemberBatch"
|
||||
>
|
||||
删除
|
||||
{{ $t('pages.teamMemberWork.action.delete') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
ref="teamTable"
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.teamMemberWork.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
@selection-change="selectTableChange"
|
||||
@ -66,37 +66,37 @@
|
||||
:selectable="tableSelectable"
|
||||
/>
|
||||
<el-table-column type="index" width="50" label="No" />
|
||||
<el-table-column label="代理" align="left" show-overflow-tooltip min-width="220">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.agent')" align="left" show-overflow-tooltip min-width="220">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.ownUserProfile" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="成员" align="center" show-overflow-tooltip min-width="220">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.member')" align="center" show-overflow-tooltip min-width="220">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.memberProfile" :query-details="true" :show-sys-origin="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="salarySettlementMode" label="工资模式" show-overflow-tooltip min-width="50" />
|
||||
<el-table-column prop="salarySettlementMode" :label="$t('pages.teamMemberWork.table.salaryMode')" show-overflow-tooltip min-width="80" />
|
||||
|
||||
<el-table-column label="周期" align="center" show-overflow-tooltip min-width="220">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.period')" align="center" show-overflow-tooltip min-width="220">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.billBelong }} <el-tag size="mini" :type="teamBillStatusMap[scope.row.billStatus].tag">{{ teamBillStatusMap[scope.row.billStatus].name }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="时长" align="left" show-overflow-tooltip min-width="100">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.duration')" align="left" show-overflow-tooltip min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>我的: {{ scope.row.target.ownOnlineTime || 0 }}</div>
|
||||
<div>其他: {{ scope.row.target.otherOnlineTime || 0 }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.mine') }}: {{ scope.row.target.ownOnlineTime || 0 }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.other') }}: {{ scope.row.target.otherOnlineTime || 0 }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="有效天" align="left" show-overflow-tooltip min-width="80">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.effectiveDays')" align="left" show-overflow-tooltip min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.target.effectiveDay || 0 }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="粉丝" align="left" show-overflow-tooltip min-width="100">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.fans')" align="left" show-overflow-tooltip min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<!-- <div>
|
||||
<el-link @click="queryRoomGift(scope.row)"><a :title="scope.row.target.roomValue">房间: {{ scope.row.target.roomValue || 0 }} </a></el-link>
|
||||
@ -105,67 +105,67 @@
|
||||
<div>{{ scope.row.memberFans || 0 }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="礼物" align="left" show-overflow-tooltip min-width="100">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.gifts')" align="left" show-overflow-tooltip min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<el-link @click="queryGiftRunningWater(scope.row,'ACCEPT')">
|
||||
<a :title="scope.row.target.acceptGiftValue">
|
||||
收<el-tag v-if="scope.row.target.settleRes" type="info" size="mini">Lv.{{ scope.row.target.settleRes.level }}</el-tag>:
|
||||
{{ $t('pages.teamMemberWork.label.received') }}<el-tag v-if="scope.row.target.settleRes" type="info" size="mini">Lv.{{ scope.row.target.settleRes.level }}</el-tag>:
|
||||
{{ scope.row.target.acceptGiftValue || 0 }}
|
||||
</a>
|
||||
</el-link>
|
||||
</div>
|
||||
<div>
|
||||
<el-link @click="queryGiftRunningWater(scope.row,'SEND')"><a :title="scope.row.target.giveGiftValue">送: {{ scope.row.target.giveGiftValue || 0 }} </a></el-link>
|
||||
<el-link @click="queryGiftRunningWater(scope.row,'SEND')"><a :title="scope.row.target.giveGiftValue">{{ $t('pages.teamMemberWork.label.sent') }}: {{ scope.row.target.giveGiftValue || 0 }} </a></el-link>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="工资$" align="left" show-overflow-tooltip min-width="100">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.salaryUsd')" align="left" show-overflow-tooltip min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.target.settleRes && scope.row.target.settleRes.policyType != 'SALARY_DIAMOND'">
|
||||
<div>成员: {{ scope.row.target.settleRes.memberSalary }}</div>
|
||||
<div>代理: {{ scope.row.target.settleRes.ownSalary }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.member') }}: {{ scope.row.target.settleRes.memberSalary }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.agent') }}: {{ scope.row.target.settleRes.ownSalary }}</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div>成员: ?</div>
|
||||
<div>代理: ?</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.member') }}: ?</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.agent') }}: ?</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="工资钻石" align="left" show-overflow-tooltip min-width="120">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.salaryDiamonds')" align="left" show-overflow-tooltip min-width="140">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.target.settleRes && scope.row.target.settleRes.policyType === 'SALARY_DIAMOND'">
|
||||
<div>成员: {{ scope.row.target.settleRes.memberSalary }}</div>
|
||||
<div>代理: {{ scope.row.target.settleRes.ownSalary }}</div>
|
||||
<div>成员剩余: {{ scope.row.target.settleRes.surplusDiamonds }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.member') }}: {{ scope.row.target.settleRes.memberSalary }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.agent') }}: {{ scope.row.target.settleRes.ownSalary }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.memberRemaining') }}: {{ scope.row.target.settleRes.surplusDiamonds }}</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div>?</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="时间" align="left" show-overflow-tooltip min-width="200">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.time')" align="left" show-overflow-tooltip min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<div>创建: {{ scope.row.createTime | dateFormat }}</div>
|
||||
<div>修改: {{ scope.row.updateTime | dateFormat }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.created') }}: {{ scope.row.createTime | dateFormat }}</div>
|
||||
<div>{{ $t('pages.teamMemberWork.label.updated') }}: {{ scope.row.updateTime | dateFormat }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="100">
|
||||
<el-table-column fixed="right" :label="$t('pages.teamMemberWork.table.actions')" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-dropdown>
|
||||
<span class="el-dropdown-link">
|
||||
<i class="el-icon-more" />
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item v-if="scope.row.role !== 'OWN'" @click.native="clickQueryDetails(scope.row)">详情</el-dropdown-item>
|
||||
<el-dropdown-item v-if="scope.row.role !== 'OWN'" @click.native="clickQueryDetails(scope.row)">{{ $t('pages.teamMemberWork.action.details') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-if="notData">{{ $t('pages.teamMemberWork.action.loadedAll') }}</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">{{ $t('pages.teamMemberWork.action.loadMore') }}</el-button>
|
||||
</div>
|
||||
|
||||
<room-gift-dialog
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="房间流水"
|
||||
:title="$t('pages.teamMemberWork.dialog.roomTransactions')"
|
||||
:visible="true"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -12,11 +12,11 @@
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.teamMemberWork.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column label="发送人" align="center" min-width="200">
|
||||
<el-table-column :label="$t('pages.teamMemberWork.table.sender')" align="center" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.userProfile" :query-details="true" :show-sys-origin="true" />
|
||||
<div class="associate-block">
|
||||
@ -50,7 +50,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="giftValue.quantity" label="礼物数量" align="center" min-width="80">
|
||||
<el-table-column prop="giftValue.quantity" :label="$t('pages.teamMemberWork.table.giftQuantity')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div class="flex-c">
|
||||
<el-image
|
||||
@ -64,22 +64,22 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="giftValue.userSize" label="接收人数" align="center" min-width="80" />
|
||||
<el-table-column prop="giftValue.actualAmount" label="消费金额" align="center" min-width="100" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="200">
|
||||
<el-table-column prop="giftValue.userSize" :label="$t('pages.teamMemberWork.table.recipientCount')" align="center" min-width="80" />
|
||||
<el-table-column prop="giftValue.actualAmount" :label="$t('pages.teamMemberWork.table.spendAmount')" align="center" min-width="100" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.teamMemberWork.table.createdTime')" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="60">
|
||||
<el-table-column fixed="right" :label="$t('pages.teamMemberWork.table.actions')" align="center" width="60">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickQueryDetails(scope.row)">详情</el-button>
|
||||
<el-button type="text" @click="clickQueryDetails(scope.row)">{{ $t('pages.teamMemberWork.action.details') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="list && list.length > 0" style="text-align: center; margin-top:20px;">
|
||||
<el-button v-if="!notMore " size="mini" :disabled="listLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-else>已加载全部</span>
|
||||
<el-button v-if="!notMore " size="mini" :disabled="listLoading" @click="clickLoadMore">{{ $t('pages.teamMemberWork.action.loadMore') }}</el-button>
|
||||
<span v-else>{{ $t('pages.teamMemberWork.action.loadedAll') }}</span>
|
||||
</div>
|
||||
|
||||
<gift-history-details-drawer
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="归属系统"
|
||||
:placeholder="$t('pages.teamMember.placeholder.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
<el-select
|
||||
v-model="listQuery.role"
|
||||
placeholder="角色"
|
||||
:placeholder="$t('pages.teamMember.placeholder.role')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@ -41,18 +41,21 @@
|
||||
<account-input
|
||||
v-model="listQuery.ownUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
placeholder="代理ID"
|
||||
:placeholder="$t('pages.teamMember.placeholder.agentId')"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<account-input
|
||||
v-model="listQuery.memberId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
placeholder="成员ID"
|
||||
:placeholder="$t('pages.teamMember.placeholder.memberId')"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<el-input v-model="listQuery.notActiveDays" placeholder="不活跃天数" />
|
||||
<el-input
|
||||
v-model="listQuery.notActiveDays"
|
||||
:placeholder="$t('pages.teamMember.placeholder.inactiveDays')"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<el-date-picker
|
||||
@ -61,9 +64,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期开始"
|
||||
end-placeholder="结束日期结束"
|
||||
:range-separator="$t('pages.teamMember.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.teamMember.date.start')"
|
||||
:end-placeholder="$t('pages.teamMember.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -72,7 +75,7 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.teamMember.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -80,7 +83,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="teamMebmerAddVisible = true"
|
||||
>
|
||||
新增
|
||||
{{ $t('pages.teamMember.action.add') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="selectTableRow.length > 0"
|
||||
@ -91,14 +94,14 @@
|
||||
:loading="delLoading"
|
||||
@click="clickRemoveMemberBatch"
|
||||
>
|
||||
删除
|
||||
{{ $t('pages.teamMember.action.delete') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
ref="teamTable"
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.teamMember.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
@selection-change="selectTableChange"
|
||||
@ -111,7 +114,7 @@
|
||||
:selectable="tableSelectable"
|
||||
/>
|
||||
<el-table-column
|
||||
label="代理"
|
||||
:label="$t('pages.teamMember.table.agent')"
|
||||
align="left"
|
||||
show-overflow-tooltip
|
||||
min-width="220"
|
||||
@ -125,7 +128,7 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="成员"
|
||||
:label="$t('pages.teamMember.table.member')"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
min-width="220"
|
||||
@ -141,7 +144,7 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="备注"
|
||||
:label="$t('pages.teamMember.table.remarks')"
|
||||
prop="remarks"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
@ -149,7 +152,7 @@
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
label="创建人"
|
||||
:label="$t('pages.teamMember.table.createdBy')"
|
||||
align="left"
|
||||
show-overflow-tooltip
|
||||
min-width="220"
|
||||
@ -170,17 +173,17 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="时间"
|
||||
:label="$t('pages.teamMember.table.time')"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
min-width="220"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>创建: {{ scope.row.createTime | dateFormat }}</div>
|
||||
<div>活跃: {{ scope.row.activeTime | dateFormat }}</div>
|
||||
<div>{{ $t('pages.teamMember.label.created') }}: {{ scope.row.createTime | dateFormat }}</div>
|
||||
<div>{{ $t('pages.teamMember.label.active') }}: {{ scope.row.activeTime | dateFormat }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="100">
|
||||
<el-table-column fixed="right" :label="$t('pages.teamMember.table.actions')" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-dropdown>
|
||||
<span class="el-dropdown-link">
|
||||
@ -190,35 +193,38 @@
|
||||
<el-dropdown-item
|
||||
v-if="scope.row.role !== 'OWN'"
|
||||
@click.native="clickMemberTeamChange(scope.row)"
|
||||
>更换团队</el-dropdown-item
|
||||
>
|
||||
{{ $t('pages.teamMember.action.changeTeam') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
v-if="scope.row.role !== 'OWN'"
|
||||
:disabled="delLoading"
|
||||
@click.native="clickRemoveMember(scope.row)"
|
||||
>删除成员</el-dropdown-item
|
||||
>
|
||||
{{ $t('pages.teamMember.action.deleteMember') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
@click.native="clickEditMemberRemarks(scope.row)"
|
||||
>修改备注</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item @click.native="clickResetTarget(scope.row)"
|
||||
>重置目标</el-dropdown-item
|
||||
>
|
||||
{{ $t('pages.teamMember.action.editRemarks') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickResetTarget(scope.row)">
|
||||
{{ $t('pages.teamMember.action.resetTarget') }}
|
||||
</el-dropdown-item
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<span v-if="notData">{{ $t('pages.teamMember.action.loadedAll') }}</span>
|
||||
<el-button
|
||||
v-else
|
||||
size="mini"
|
||||
:disabled="loadMoreLoading"
|
||||
:loading="loadMoreLoading"
|
||||
@click="clickLoadMore"
|
||||
>加载更多</el-button
|
||||
>{{ $t('pages.teamMember.action.loadMore') }}</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
@ -391,14 +397,14 @@ export default {
|
||||
clickRemoveMember(row, index) {
|
||||
const that = this;
|
||||
if (that.delLoading) {
|
||||
that.$opsMessage.warn("正在提交处理中!");
|
||||
that.$opsMessage.warn(that.$t("pages.teamMember.message.processing"));
|
||||
return;
|
||||
}
|
||||
|
||||
that
|
||||
.$confirm("是否确认删除, 本期账单工作数据将会同步移除?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
.$confirm(that.$t("pages.teamMember.confirm.deleteMember"), that.$t("pages.teamMember.confirm.title"), {
|
||||
confirmButtonText: that.$t("pages.teamMember.confirm.confirm"),
|
||||
cancelButtonText: that.$t("pages.teamMember.confirm.cancel"),
|
||||
type: "warning"
|
||||
})
|
||||
.then(() => {
|
||||
@ -416,20 +422,19 @@ export default {
|
||||
});
|
||||
},
|
||||
|
||||
// 删除主播
|
||||
clickRemoveMemberBatch() {
|
||||
const that = this;
|
||||
if (that.delLoading) {
|
||||
that.$opsMessage.warn("正在提交处理中!");
|
||||
that.$opsMessage.warn(that.$t("pages.teamMember.message.processing"));
|
||||
return;
|
||||
}
|
||||
that.selectMemberIds = that.selectTableRow.map(
|
||||
item => item.userProfile.id
|
||||
);
|
||||
that
|
||||
.$confirm("是否确认删除, 本期账单工作数据将会同步移除?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
.$confirm(that.$t("pages.teamMember.confirm.deleteMember"), that.$t("pages.teamMember.confirm.title"), {
|
||||
confirmButtonText: that.$t("pages.teamMember.confirm.confirm"),
|
||||
cancelButtonText: that.$t("pages.teamMember.confirm.cancel"),
|
||||
type: "warning"
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="team-member-add-drawer">
|
||||
<el-drawer
|
||||
title="添加成员"
|
||||
:title="$t('pages.teamMember.dialog.addMember')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -11,7 +11,7 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="sysOrigin" size="18px" /> 添加成员
|
||||
<sys-origin-icon :icon="sysOrigin" size="18px" /> {{ $t('pages.teamMember.dialog.addMember') }}
|
||||
</div>
|
||||
<div class="team-member-add">
|
||||
|
||||
@ -25,22 +25,22 @@
|
||||
</el-radio-group>
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item v-if="addMolde === 'TEAM_OWN_USER_ID'" prop="ownUserId" label="代理ID">
|
||||
<account-input v-model="form.ownUserId" :sys-origin="sysOrigin" placeholder="代理ID" />
|
||||
<el-form-item v-if="addMolde === 'TEAM_OWN_USER_ID'" prop="ownUserId" :label="$t('pages.teamMember.form.agentId')">
|
||||
<account-input v-model="form.ownUserId" :sys-origin="sysOrigin" :placeholder="$t('pages.teamMember.placeholder.agentId')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="addMolde === 'TEAM_ACCOUNT'" prop="teamAccount" label="团队账号">
|
||||
<el-input v-model="form.teamAccount" placeholder="请输入团队账号" maxlength="10" show-word-limit />
|
||||
<el-form-item v-if="addMolde === 'TEAM_ACCOUNT'" prop="teamAccount" :label="$t('pages.teamMember.form.teamAccount')">
|
||||
<el-input v-model="form.teamAccount" :placeholder="$t('pages.teamMember.placeholder.teamAccount')" maxlength="10" show-word-limit />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="memberUserId" label="成员ID">
|
||||
<account-input v-model="form.memberUserId" :sys-origin="sysOrigin" placeholder="成员ID" />
|
||||
<el-form-item prop="memberUserId" :label="$t('pages.teamMember.form.memberId')">
|
||||
<account-input v-model="form.memberUserId" :sys-origin="sysOrigin" :placeholder="$t('pages.teamMember.placeholder.memberId')" />
|
||||
</el-form-item>
|
||||
<el-form-item prop="remarks" label="备注">
|
||||
<el-form-item prop="remarks" :label="$t('pages.teamMember.form.remarks')">
|
||||
<el-input
|
||||
v-model="form.remarks"
|
||||
type="textarea"
|
||||
placeholder="请输入备注"
|
||||
:placeholder="$t('pages.teamMember.placeholder.remarks')"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
resize="none"
|
||||
@ -50,8 +50,8 @@
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button @click="handleClose()">关闭</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit">保存</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.teamMember.action.close') }}</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit">{{ $t('pages.teamMember.action.save') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -72,7 +72,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.teamMember.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
addMolde: 'TEAM_OWN_USER_ID',
|
||||
@ -116,7 +116,7 @@ export default {
|
||||
methods: {
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在提交!')
|
||||
this.$opsMessage.warn(this.$t('pages.teamMember.message.submitting'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="member-team-change-drawer">
|
||||
<el-drawer
|
||||
title="更换团队"
|
||||
:title="$t('pages.teamMember.dialog.changeTeam')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -11,20 +11,20 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 变更成员归属团队
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.teamMember.dialog.changeMemberTeam') }}
|
||||
</div>
|
||||
<div class="member-team-change">
|
||||
|
||||
<div class="drawer-form">
|
||||
<el-alert
|
||||
title="注意!! 切换到【不同区域】代理团队名下: 该主播相关目标工作都将删除,请谨慎操作!"
|
||||
:title="$t('pages.teamMember.alert.crossRegion')"
|
||||
type="warning"
|
||||
effect="dark"
|
||||
:closable="false"
|
||||
style="margin-bottom: 10px;"
|
||||
/>
|
||||
<el-alert
|
||||
title="注意!! 切换到【相同区域】代理团队名下: 该主播没有结算前进更换代理团队, 相关目标工作都会进行迁移!"
|
||||
:title="$t('pages.teamMember.alert.sameRegion')"
|
||||
type="warning"
|
||||
effect="dark"
|
||||
:closable="false"
|
||||
@ -39,18 +39,18 @@
|
||||
</el-radio-group>
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item v-if="addMolde === 'TEAM_OWN_USER_ID'" prop="ownUserId" label="代理ID">
|
||||
<account-input v-model="form.ownUserId" :sys-origin="sysOrigin" placeholder="代理ID" />
|
||||
<el-form-item v-if="addMolde === 'TEAM_OWN_USER_ID'" prop="ownUserId" :label="$t('pages.teamMember.form.agentId')">
|
||||
<account-input v-model="form.ownUserId" :sys-origin="sysOrigin" :placeholder="$t('pages.teamMember.placeholder.agentId')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="addMolde === 'TEAM_ACCOUNT'" prop="teamAccount" label="团队账号">
|
||||
<el-input v-model="form.teamAccount" placeholder="请输入团队账号" maxlength="10" show-word-limit />
|
||||
<el-form-item v-if="addMolde === 'TEAM_ACCOUNT'" prop="teamAccount" :label="$t('pages.teamMember.form.teamAccount')">
|
||||
<el-input v-model="form.teamAccount" :placeholder="$t('pages.teamMember.placeholder.teamAccount')" maxlength="10" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item prop="remarks" label="备注">
|
||||
<el-form-item prop="remarks" :label="$t('pages.teamMember.form.remarks')">
|
||||
<el-input
|
||||
v-model="form.remarks"
|
||||
type="textarea"
|
||||
placeholder="请输入备注"
|
||||
:placeholder="$t('pages.teamMember.placeholder.remarks')"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
resize="none"
|
||||
@ -61,8 +61,8 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">关闭</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit">保存</el-button>
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">{{ $t('pages.teamMember.action.close') }}</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit">{{ $t('pages.teamMember.action.save') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -83,7 +83,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.teamMember.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
addMolde: 'TEAM_OWN_USER_ID',
|
||||
@ -130,7 +130,7 @@ export default {
|
||||
methods: {
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在提交!')
|
||||
this.$opsMessage.warn(this.$t('pages.teamMember.message.submitting'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="team-member-remarks-drawer">
|
||||
<el-drawer
|
||||
title="编辑备注"
|
||||
:title="$t('pages.teamMember.dialog.editRemarks')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -13,11 +13,11 @@
|
||||
<div class="team-member-remarks">
|
||||
<div class="drawer-form">
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="80px" style="margin-right: 15px;">
|
||||
<el-form-item prop="remarks" label="备注">
|
||||
<el-form-item prop="remarks" :label="$t('pages.teamMember.form.remarks')">
|
||||
<el-input
|
||||
v-model="form.remarks"
|
||||
type="textarea"
|
||||
placeholder="请输入备注"
|
||||
:placeholder="$t('pages.teamMember.placeholder.remarks')"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
resize="none"
|
||||
@ -28,8 +28,8 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">关闭</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit">保存</el-button>
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">{{ $t('pages.teamMember.action.close') }}</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit">{{ $t('pages.teamMember.action.save') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -74,7 +74,7 @@ export default {
|
||||
methods: {
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在提交!')
|
||||
this.$opsMessage.warn(this.$t('pages.teamMember.message.submitting'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 重置目标
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.teamMember.dialog.resetTarget') }}
|
||||
</div>
|
||||
<div class="member-team-change">
|
||||
<div class="drawer-form">
|
||||
@ -18,24 +18,24 @@
|
||||
type="info"
|
||||
:closable="false"
|
||||
style="margin:0px 0px 20px 0px;"
|
||||
description="注意: 当前重置目标将计算到最新未结算账单(更细的操作将在后期完善)"
|
||||
:description="$t('pages.teamMember.alert.resetTarget')"
|
||||
/>
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="80px" style="margin-right: 15px;">
|
||||
|
||||
<el-form-item prop="startTime" label="时间范围">
|
||||
<el-form-item prop="startTime" :label="$t('pages.teamMember.form.timeRange')">
|
||||
<el-date-picker
|
||||
v-model="rangeDate"
|
||||
style="width: 100%;"
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期开始"
|
||||
end-placeholder="结束日期结束"
|
||||
:range-separator="$t('pages.teamMember.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.teamMember.date.start')"
|
||||
:end-placeholder="$t('pages.teamMember.date.end')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-checkbox v-model="form.checkAnchor">验证用户收礼物时段必须是主播身份</el-checkbox>
|
||||
<el-checkbox v-model="form.checkAnchor">{{ $t('pages.teamMember.form.checkAnchor') }}</el-checkbox>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="">
|
||||
<el-checkbox v-model="luckyGift">处理幸运礼物目标问题(彭石刚专用)</el-checkbox>
|
||||
@ -44,10 +44,10 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button :disabled="checkLoading" @click="handleClose()">关闭</el-button>
|
||||
<el-button v-if="!luckyGift" type="primary" :disabled="checkLoading" :loading="checkLoading" @click="clickCheckTarget">检测</el-button>
|
||||
<el-input v-if="luckyGift" v-model="money" placeholder="请输入内容比例" />
|
||||
<el-button v-if="luckyGift" type="primary" :disabled="checkLoading" :loading="checkLoading" @click="sumbitResetTargetTmp()">(彭石刚)检测幸运礼物目标问题</el-button>
|
||||
<el-button :disabled="checkLoading" @click="handleClose()">{{ $t('pages.teamMember.action.close') }}</el-button>
|
||||
<el-button v-if="!luckyGift" type="primary" :disabled="checkLoading" :loading="checkLoading" @click="clickCheckTarget">{{ $t('pages.teamMember.action.check') }}</el-button>
|
||||
<el-input v-if="luckyGift" v-model="money" :placeholder="$t('pages.teamMember.placeholder.contentRatio')" />
|
||||
<el-button v-if="luckyGift" type="primary" :disabled="checkLoading" :loading="checkLoading" @click="sumbitResetTargetTmp()">{{ $t('pages.teamMember.action.checkLuckyGiftTarget') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -68,7 +68,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.teamMember.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
pickerOptions,
|
||||
@ -119,7 +119,7 @@ export default {
|
||||
methods: {
|
||||
handleClose() {
|
||||
if (this.checkLoading) {
|
||||
this.$opsMessage.warn('正在处理中!')
|
||||
this.$opsMessage.warn(this.$t('pages.teamMember.message.processing'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
@ -164,9 +164,9 @@ export default {
|
||||
// return
|
||||
// }
|
||||
|
||||
that.$confirm(`是否确认恢复用户目标: ${that.targetVal}?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
that.$confirm(that.$t('pages.teamMember.confirm.restoreTarget', { target: that.targetVal }), that.$t('pages.teamMember.confirm.title'), {
|
||||
confirmButtonText: that.$t('pages.teamMember.confirm.confirm'),
|
||||
cancelButtonText: that.$t('pages.teamMember.confirm.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
that.submitResetTarget()
|
||||
@ -194,9 +194,9 @@ export default {
|
||||
// return
|
||||
// }
|
||||
|
||||
that.$confirm(`是否确认恢复用户目标: ${that.targetVal}?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
that.$confirm(that.$t('pages.teamMember.confirm.restoreTarget', { target: that.targetVal }), that.$t('pages.teamMember.confirm.title'), {
|
||||
confirmButtonText: that.$t('pages.teamMember.confirm.confirm'),
|
||||
cancelButtonText: that.$t('pages.teamMember.confirm.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
that.submitResetTarget()
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.workStatistics.placeholder.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -22,13 +22,13 @@
|
||||
<el-input
|
||||
v-model.trim="listQuery.userId"
|
||||
v-number
|
||||
placeholder="长UID"
|
||||
:placeholder="$t('pages.workStatistics.placeholder.longUid')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
<el-input
|
||||
v-model.trim="listQuery.account"
|
||||
placeholder="短账号"
|
||||
:placeholder="$t('pages.workStatistics.placeholder.shortAccount')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
@ -38,21 +38,21 @@
|
||||
v-model="listQuery.region"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
clearable
|
||||
placeholder="区域"
|
||||
:placeholder="$t('pages.workStatistics.placeholder.region')"
|
||||
@change="handleSearch"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<el-tooltip effect="dark" content="仅包含开始时间至结束时间区间的数据" placement="bottom">
|
||||
<el-tooltip effect="dark" :content="$t('pages.workStatistics.tooltip.dateRange')" placement="bottom">
|
||||
<el-date-picker
|
||||
v-model="rangeDate"
|
||||
style="width: 100%;"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期开始"
|
||||
end-placeholder="结束日期结束"
|
||||
:range-separator="$t('pages.workStatistics.dateRange.separator')"
|
||||
:start-placeholder="$t('pages.workStatistics.dateRange.start')"
|
||||
:end-placeholder="$t('pages.workStatistics.dateRange.end')"
|
||||
@change="handleDateRangeChange"
|
||||
/>
|
||||
</el-tooltip>
|
||||
@ -65,19 +65,19 @@
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.workStatistics.action.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div>
|
||||
<div slot="title" class="count-item">
|
||||
<i>
|
||||
<strong class="strong-style"> 筛选时间:</strong>
|
||||
<strong class="strong-style">{{ $t('pages.workStatistics.summary.filterTime') }}</strong>
|
||||
</i>
|
||||
<i>
|
||||
<strong class="strong-style">{{ formatDate(listQuery.startDate) }} 00:00:00</strong>
|
||||
</i>
|
||||
<i>
|
||||
<strong class="strong-style">至{{ formatDate(listQuery.endDate) }} 00:00:00 区间的数据</strong>
|
||||
<strong class="strong-style">{{ $t('pages.workStatistics.summary.rangeData', { endDate: formatDate(listQuery.endDate) }) }}</strong>
|
||||
</i>
|
||||
</div>
|
||||
</div>
|
||||
@ -85,18 +85,18 @@
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
:default-sort="{ prop: 'effectivePerson', order: 'descending' }"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.workStatistics.word.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
@cell-mouse-enter="handleMouseEnter"
|
||||
@sort-change="handleSortChange"
|
||||
>
|
||||
<el-table-column label="BD" align="left" min-width="190">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.bd')" align="left" min-width="190">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.userProfile" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="自己邀请人数(一级邀请)" align="left" min-width="80">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.level1Invitation')" align="left" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
{{
|
||||
@ -105,7 +105,7 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="二级邀请人数" align="left" min-width="80">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.level2Invitation')" align="left" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
{{
|
||||
@ -114,7 +114,7 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="三级邀请人数" align="left" min-width="80">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.level3Invitation')" align="left" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
{{
|
||||
@ -123,7 +123,7 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="邀请总人数" align="left" min-width="80">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.totalInvitation')" align="left" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
{{
|
||||
@ -132,28 +132,28 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总充值(金币)" align="left" min-width="90">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.totalRechargeGold')" align="left" min-width="90">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ isNull(scope.row.totalRecharge) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="BD客单价" align="left" min-width="80">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.bdCustomerUnitPrice')" align="left" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ isNull(scope.row.customerUnitPrice) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="区域平均客单价" align="left" min-width="100">
|
||||
<el-table-column :label="$t('pages.workStatistics.table.regionAvgCustomerUnitPrice')" align="left" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ isNull(scope.row.regionalAvgCustomerUnitPrice) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="effectivePerson" label="有效人数" align="" min-width="120" />
|
||||
<el-table-column label="区域" align="left" min-width="180">
|
||||
<el-table-column prop="effectivePerson" :label="$t('pages.workStatistics.table.effectivePerson')" align="" min-width="120" />
|
||||
<el-table-column :label="$t('pages.workStatistics.table.region')" align="left" min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.regionName == null ? scope.row.region : scope.row.regionName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column sortable prop="regionRanking" label="BD区域排名" align="" min-width="120" />
|
||||
<el-table-column sortable prop="regionRanking" :label="$t('pages.workStatistics.table.bdRegionRanking')" align="" min-width="120" />
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
direction="btt"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 自动发送工资详情({{ dateNumber }})
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.automaticSalaryPaymentRecord.detailsDrawer.title', { dateNumber }) }}
|
||||
</div>
|
||||
<div>
|
||||
|
||||
@ -20,50 +20,50 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column label="系统" align="center" width="80">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.system')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="teamRegionName" label="区域" align="center" min-width="80" />
|
||||
<el-table-column prop="policyLevel" label="政策等级" align="center" width="160" />
|
||||
<el-table-column prop="target" label="用户目标" align="center" min-width="80" />
|
||||
<el-table-column prop="salary" label="工资" align="center" min-width="80" />
|
||||
<el-table-column label="应收工资用户" align="center" min-width="80">
|
||||
<el-table-column prop="teamRegionName" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.region')" align="center" min-width="80" />
|
||||
<el-table-column prop="policyLevel" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.policyLevel')" align="center" width="160" />
|
||||
<el-table-column prop="target" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.target')" align="center" min-width="80" />
|
||||
<el-table-column prop="salary" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.salary')" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.expectedReceiver')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.anchor ? scope.row.teamMemberProfile : scope.row.teamOwnProfile" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实际接收工资用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.actualReceiver')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.hostSalaryToAgent ? scope.row.teamOwnProfile : (scope.row.anchor ? scope.row.teamMemberProfile : scope.row.teamOwnProfile)" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="团长代收" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.hostSalaryToAgent')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="!scope.row.hostSalaryToAgent">否</span>
|
||||
<el-tag v-if="scope.row.hostSalaryToAgent" effect="plain">代收</el-tag>
|
||||
<span v-if="!scope.row.hostSalaryToAgent">{{ $t('pages.automaticSalaryPaymentRecord.words.no') }}</span>
|
||||
<el-tag v-if="scope.row.hostSalaryToAgent" effect="plain">{{ $t('pages.automaticSalaryPaymentRecord.words.collectedByCaptain') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="已收回" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.recycled')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="!scope.row.recycled">否</span>
|
||||
<el-tag v-if="scope.row.recycled" type="danger" effect="plain">已收回</el-tag>
|
||||
<span v-if="!scope.row.recycled">{{ $t('pages.automaticSalaryPaymentRecord.words.no') }}</span>
|
||||
<el-tag v-if="scope.row.recycled" type="danger" effect="plain">{{ $t('pages.automaticSalaryPaymentRecord.words.recycled') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="createTime" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="updateTime" label="修改时间" align="center" width="160">
|
||||
<el-table-column prop="updateTime" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.updateTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.updateTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="140">
|
||||
<el-table-column fixed="right" :label="$t('pages.automaticSalaryPaymentRecord.detailsDrawer.table.actions')" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">查看</el-button>
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">{{ $t('pages.automaticSalaryPaymentRecord.action.view') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.automaticSalaryPaymentRecord.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -19,14 +19,18 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" placeholder="用户ID" />
|
||||
<account-input
|
||||
v-model="listQuery.userId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
:placeholder="$t('pages.automaticSalaryPaymentRecord.filter.userId')"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<el-date-picker
|
||||
v-model="listQuery.dateNumber"
|
||||
type="month"
|
||||
placeholder="选择日期"
|
||||
format="yyyy 年 MM 月"
|
||||
:placeholder="$t('pages.automaticSalaryPaymentRecord.filter.selectMonth')"
|
||||
:format="$t('pages.automaticSalaryPaymentRecord.date.format')"
|
||||
value-format="yyyyMM"
|
||||
/>
|
||||
</div>
|
||||
@ -37,7 +41,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.action.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -47,31 +51,31 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.table.system')" prop="sysOrigin" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.table.user')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.userProfile" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dateNumber" label="年月" align="center" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.table.dateNumber')" prop="dateNumber" align="center" />
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.table.createTime')" prop="createTime" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="updateTime" label="修改时间" align="center">
|
||||
<el-table-column :label="$t('pages.automaticSalaryPaymentRecord.table.updateTime')" prop="updateTime" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.updateTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center">
|
||||
<el-table-column fixed="right" :label="$t('pages.automaticSalaryPaymentRecord.table.actions')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">查看明细</el-button>
|
||||
<el-button type="text" @click="clickRemarkDrawer(scope.row)">查看备注</el-button>
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">{{ $t('pages.automaticSalaryPaymentRecord.action.viewDetails') }}</el-button>
|
||||
<el-button type="text" @click="clickRemarkDrawer(scope.row)">{{ $t('pages.automaticSalaryPaymentRecord.action.viewRemarks') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="team-bill-drawer">
|
||||
<el-drawer
|
||||
title="详情"
|
||||
:title="$t('pages.automaticSalaryPaymentRecord.policyDrawer.title')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -12,59 +12,59 @@
|
||||
>
|
||||
<div class="team-bill-content">
|
||||
|
||||
<div class="blockquote">团长</div>
|
||||
<div class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.sections.captain') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit :user-profile="row.teamOwnProfile" :query-details="true" />
|
||||
</div>
|
||||
<div class="blockquote">成员</div>
|
||||
<div class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.sections.member') }}</div>
|
||||
<div class="content">
|
||||
<user-table-exhibit :user-profile="row.teamMemberProfile" :query-details="true" />
|
||||
</div>
|
||||
<div v-if="row.recycled" class="blockquote">退款用户</div>
|
||||
<div v-if="row.recycled" class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.sections.refundUser') }}</div>
|
||||
<div v-if="row.recycled" class="content">
|
||||
<user-table-exhibit :user-profile="row.refundUser" :query-details="true" />
|
||||
</div>
|
||||
|
||||
<div class="blockquote">账单信息</div>
|
||||
<div class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.sections.billInfo') }}</div>
|
||||
<div class="content">
|
||||
<div class="flex-b bill-row">
|
||||
<div class="left bill-col nowrap-ellipsis">
|
||||
工资凭据ID: {{ row.id }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.recordId') }}: {{ row.id }}
|
||||
</div>
|
||||
<div class="right bill-col nowrap-ellipsis">
|
||||
区域: {{ row.teamRegionName }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.region') }}: {{ row.teamRegionName }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-b bill-row">
|
||||
<div class="left bill-col nowrap-ellipsis">
|
||||
工资($): {{ row.salary || 0 }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.salary') }}: {{ row.salary || 0 }}
|
||||
</div>
|
||||
<div class="right bill-col nowrap-ellipsis">
|
||||
工资接收方: {{ row.anchor ? '成员' : '团长' }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.receiver') }}: {{ row.anchor ? $t('pages.automaticSalaryPaymentRecord.words.member') : $t('pages.automaticSalaryPaymentRecord.words.captain') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-b bill-row">
|
||||
<div class="left bill-col nowrap-ellipsis">
|
||||
是否团长代收: {{ row.hostSalaryToAgent ? '是' : '否' }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.hostSalaryToAgent') }}: {{ row.hostSalaryToAgent ? $t('pages.automaticSalaryPaymentRecord.words.yes') : $t('pages.automaticSalaryPaymentRecord.words.no') }}
|
||||
</div>
|
||||
<div class="right bill-col nowrap-ellipsis">
|
||||
是否已收回: {{ row.recycled ? '是' : '否' }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.recycled') }}: {{ row.recycled ? $t('pages.automaticSalaryPaymentRecord.words.yes') : $t('pages.automaticSalaryPaymentRecord.words.no') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-b bill-row">
|
||||
<div class="left bill-col nowrap-ellipsis">
|
||||
实际收款账户: {{ row.hostSalaryToAgent ? '团长账户' : (row.anchor ? '成员账户' : '团长账户') }}
|
||||
{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.actualReceiveAccount') }}: {{ getActualAccountLabel() }}
|
||||
</div>
|
||||
<div class="left bill-col nowrap-ellipsis">
|
||||
<el-tag v-if="row.recycled" type="danger" effect="plain">实际扣款账户: {{ row.hostSalaryToAgent ? '团长账户' : (row.anchor ? '成员账户' : '团长账户') }}</el-tag>
|
||||
<el-tag v-if="row.recycled" type="danger" effect="plain">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.labels.actualDeductAccount') }}: {{ getActualAccountLabel() }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bill-row">
|
||||
<div class="blockquote">备注</div>
|
||||
<div class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.sections.remarks') }}</div>
|
||||
<div class="content">
|
||||
<el-timeline :reverse="true">
|
||||
<el-timeline-item
|
||||
@ -82,7 +82,7 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="blockquote">政策: Lv.{{ row.policy.level }}</div>
|
||||
<div class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.policyDrawer.sections.policy', { level: row.policy.level }) }}</div>
|
||||
<div class="content">
|
||||
<div class="policy">
|
||||
<div v-if="row.policy" class="policy-row">
|
||||
@ -138,6 +138,14 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getActualAccountLabel() {
|
||||
if (this.row.hostSalaryToAgent) {
|
||||
return this.$t('pages.automaticSalaryPaymentRecord.words.captainAccount')
|
||||
}
|
||||
return this.row.anchor
|
||||
? this.$t('pages.automaticSalaryPaymentRecord.words.memberAccount')
|
||||
: this.$t('pages.automaticSalaryPaymentRecord.words.captainAccount')
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="team-bill-drawer">
|
||||
<el-drawer
|
||||
title="详情"
|
||||
:title="$t('pages.automaticSalaryPaymentRecord.remarkDrawer.title')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -13,7 +13,7 @@
|
||||
<div class="team-bill-content">
|
||||
|
||||
<div v-if="row.remarks && row.remarks.length > 0">
|
||||
<div class="blockquote">内部备注</div>
|
||||
<div class="blockquote">{{ $t('pages.automaticSalaryPaymentRecord.remarkDrawer.sections.internalRemarks') }}</div>
|
||||
<div class="content">
|
||||
<el-timeline :reverse="true">
|
||||
<el-timeline-item
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankDiamondWithdrawGoldApply.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -24,26 +24,26 @@
|
||||
<account-input
|
||||
v-model="listQuery.submitUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
placeholder="提交用户ID"
|
||||
:placeholder="$t('pages.userBankDiamondWithdrawGoldApply.filter.submitUserId')"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<account-input
|
||||
v-model="listQuery.acceptUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
placeholder="接收用户ID"
|
||||
:placeholder="$t('pages.userBankDiamondWithdrawGoldApply.filter.acceptUserId')"
|
||||
/>
|
||||
</div>
|
||||
<el-select
|
||||
v-model="listQuery.acceptAccount"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.userBankDiamondWithdrawGoldApply.filter.acceptAccount')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="自己" :value="'GOLD'" />
|
||||
<el-option label="货运代理账户" :value="'FREIGHT'" />
|
||||
<el-option :label="$t('pages.userBankDiamondWithdrawGoldApply.acceptAccount.GOLD')" :value="'GOLD'" />
|
||||
<el-option :label="$t('pages.userBankDiamondWithdrawGoldApply.acceptAccount.FREIGHT')" :value="'FREIGHT'" />
|
||||
</el-select>
|
||||
|
||||
<div class="filter-item">
|
||||
@ -52,9 +52,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankDiamondWithdrawGoldApply.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userBankDiamondWithdrawGoldApply.date.start')"
|
||||
:end-placeholder="$t('pages.userBankDiamondWithdrawGoldApply.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -64,7 +64,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userBankDiamondWithdrawGoldApply.action.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -74,7 +74,7 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column :label="$t('pages.userBankDiamondWithdrawGoldApply.table.system')" prop="sysOrigin" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon
|
||||
:icon="scope.row.sysOrigin"
|
||||
@ -82,7 +82,7 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提交用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankDiamondWithdrawGoldApply.table.submitUser')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit
|
||||
:user-profile="scope.row.submitUser"
|
||||
@ -90,7 +90,7 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="接收用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankDiamondWithdrawGoldApply.table.acceptUser')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit
|
||||
:user-profile="scope.row.acceptUser"
|
||||
@ -100,48 +100,48 @@
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="acceptAccountName"
|
||||
label="接收方式"
|
||||
:label="$t('pages.userBankDiamondWithdrawGoldApply.table.acceptAccount')"
|
||||
align="center"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
label="提交金额"
|
||||
:label="$t('pages.userBankDiamondWithdrawGoldApply.table.amount')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="exchangeRate"
|
||||
label="兑换比率"
|
||||
:label="$t('pages.userBankDiamondWithdrawGoldApply.table.exchangeRate')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="goldQuantity"
|
||||
label="获得金币"
|
||||
:label="$t('pages.userBankDiamondWithdrawGoldApply.table.goldQuantity')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
:label="$t('pages.userBankDiamondWithdrawGoldApply.table.createTime')"
|
||||
align="center"
|
||||
width="160"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
创建日期:{{ scope.row.createTime | dateFormat }}
|
||||
{{ $t('pages.userBankDiamondWithdrawGoldApply.table.createDate') }}: {{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<span v-if="notData">{{ $t('pages.userBankDiamondWithdrawGoldApply.action.allLoaded') }}</span>
|
||||
<el-button
|
||||
v-else
|
||||
size="mini"
|
||||
:disabled="loadMoreLoading"
|
||||
:loading="loadMoreLoading"
|
||||
@click="clickLoadMore"
|
||||
>加载更多</el-button
|
||||
>{{ $t('pages.userBankDiamondWithdrawGoldApply.action.loadMore') }}</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@ -169,7 +169,7 @@ export default {
|
||||
lastId: "",
|
||||
startTime: "",
|
||||
endTime: "",
|
||||
amountType:"SALARY_DIAMOND"
|
||||
amountType:"SALARY_DIAMOND"
|
||||
},
|
||||
listLoading: false,
|
||||
list: [],
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankRunningWater.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -19,22 +19,22 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" placeholder="用户ID" />
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" :placeholder="$t('pages.userBankRunningWater.filter.userId')" />
|
||||
</div>
|
||||
<el-select
|
||||
v-model="listQuery.type"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.userBankRunningWater.filter.type')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="收入" :value="0" />
|
||||
<el-option label="支出" :value="1" />
|
||||
<el-option :label="$t('pages.userBankRunningWater.type.income')" :value="0" />
|
||||
<el-option :label="$t('pages.userBankRunningWater.type.expense')" :value="1" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.event"
|
||||
placeholder="事件"
|
||||
:placeholder="$t('pages.userBankRunningWater.filter.event')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@ -43,7 +43,7 @@
|
||||
<el-option
|
||||
v-for="(item, index) in userBankWaterEvent"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:label="getEventDesc(item.value)"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
@ -54,9 +54,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankRunningWater.date.to')"
|
||||
:start-placeholder="$t('pages.userBankRunningWater.date.start')"
|
||||
:end-placeholder="$t('pages.userBankRunningWater.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -66,13 +66,13 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userBankRunningWater.action.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-alert
|
||||
v-if="isCalculateTotalAmount"
|
||||
v-loading="isCalculateTotalLoading"
|
||||
:title="'金额($): '+ calculateTotalValue"
|
||||
:title="$t('pages.userBankRunningWater.summary.amount', { amount: calculateTotalValue })"
|
||||
type="success"
|
||||
effect="dark"
|
||||
style="font-weight: bold;padding: 10px;"
|
||||
@ -81,16 +81,16 @@
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.userBankRunningWater.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.userBankRunningWater.table.system')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.user')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div><user-table-exhibit :size="scope.row.userProfile ? 'mini' : 'small'" :user-profile="scope.row.userProfile" :query-details="true" /></div>
|
||||
<div v-if="scope.row.tmpUserProfile" class="attached">
|
||||
@ -98,8 +98,12 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="typeName" label="类型" align="center" width="80" />
|
||||
<el-table-column label="数量" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.type')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
{{ getTypeName(scope.row.type, scope.row.typeName) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.amount')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<span v-if="scope.row.type === 0" class="font-danger">+{{ scope.row.amount }}</span>
|
||||
@ -107,23 +111,23 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="balance" label="余额" align="center" min-width="80" />
|
||||
<el-table-column label="事件" align="center">
|
||||
<el-table-column prop="balance" :label="$t('pages.userBankRunningWater.table.balance')" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.event')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ getEventDesc(scope.row.event) }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" min-width="160" />
|
||||
<el-table-column prop="createUserOriginName" label="创建源" align="center" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="remark" :label="$t('pages.userBankRunningWater.table.remark')" align="center" min-width="160" />
|
||||
<el-table-column prop="createUserOriginName" :label="$t('pages.userBankRunningWater.table.createOrigin')" align="center" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.userBankRunningWater.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-if="notData">{{ $t('pages.userBankRunningWater.action.allLoaded') }}</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">{{ $t('pages.userBankRunningWater.action.loadMore') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -137,7 +141,7 @@ export default {
|
||||
name: 'UserBankRunningWater',
|
||||
data() {
|
||||
return {
|
||||
userBankWaterEvent,
|
||||
rawUserBankWaterEvent: userBankWaterEvent,
|
||||
rangeDate: [],
|
||||
thatSelectedUserId: '',
|
||||
thatSelectedAcceptUserId: '',
|
||||
@ -163,6 +167,9 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
userBankWaterEvent() {
|
||||
return this.rawUserBankWaterEvent
|
||||
},
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
},
|
||||
watch: {
|
||||
@ -219,10 +226,10 @@ export default {
|
||||
},
|
||||
getTransferDescriptionName(event) {
|
||||
if (event === 'TRANSFER') {
|
||||
return '收款人'
|
||||
return this.$t('pages.userBankRunningWater.transfer.payee')
|
||||
}
|
||||
if (event === 'RECEIVE_TRANSFER') {
|
||||
return '付款人'
|
||||
return this.$t('pages.userBankRunningWater.transfer.payer')
|
||||
}
|
||||
return ''
|
||||
},
|
||||
@ -235,12 +242,18 @@ export default {
|
||||
that.renderData()
|
||||
},
|
||||
getEventDesc(_key) {
|
||||
const that = this
|
||||
const result = that.userBankWaterEvent.filter(_event => _event.value === _key)
|
||||
if (!result) {
|
||||
return _key
|
||||
const map = this.$t('pages.userBankRunningWater.events')
|
||||
const result = this.rawUserBankWaterEvent.find(_event => _event.value === _key)
|
||||
return map[_key] || (result && result.name) || _key
|
||||
},
|
||||
getTypeName(type, fallback) {
|
||||
if (type === 0) {
|
||||
return this.$t('pages.userBankRunningWater.type.income')
|
||||
}
|
||||
return result[0].name
|
||||
if (type === 1) {
|
||||
return this.$t('pages.userBankRunningWater.type.expense')
|
||||
}
|
||||
return fallback
|
||||
},
|
||||
isShowAlertMoney() {
|
||||
const that = this
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="user-bank-form-edit">
|
||||
<el-dialog
|
||||
:title="'创建账户'"
|
||||
:title="$t('pages.userBankAccounts.dialog.createAccount')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-click-modal="false"
|
||||
@ -12,25 +12,25 @@
|
||||
>
|
||||
<div class="form-edit">
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="110px" style="margin-right:50px;">
|
||||
<el-form-item label="系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.system')" prop="sysOrigin">
|
||||
{{ sysOrigin }}
|
||||
</el-form-item>
|
||||
<el-form-item label="用户id" prop="userId">
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.userId')" prop="userId">
|
||||
|
||||
<account-input v-model="form.userId" :sys-origin="sysOrigin" placeholder="用户ID" />
|
||||
<account-input v-model="form.userId" :sys-origin="sysOrigin" :placeholder="$t('pages.userBankAccounts.filter.userId')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="金额" prop="quantity">
|
||||
<el-input v-model.trim="form.quantity" placeholder="请输入发送金额" class="input-with-select" maxlength="10" />
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.amount')" prop="quantity">
|
||||
<el-input v-model.trim="form.quantity" :placeholder="$t('pages.userBankAccounts.placeholder.sendAmount')" class="input-with-select" maxlength="10" />
|
||||
</el-form-item>
|
||||
<el-form-item label="对内备注" prop="remark">
|
||||
<el-input v-model.trim="form.remark" placeholder="对内备注" class="input-with-select" maxlength="10" />
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.internalRemark')" prop="remark">
|
||||
<el-input v-model.trim="form.remark" :placeholder="$t('pages.userBankAccounts.form.internalRemark')" class="input-with-select" maxlength="10" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<div slot="footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" :disabled="searchDisabled" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.userBankAccounts.action.cancel') }}</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" :disabled="searchDisabled" @click="submitForm()">{{ $t('pages.userBankAccounts.action.save') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@ -54,10 +54,6 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段', trigger: 'blur' }
|
||||
]
|
||||
|
||||
return {
|
||||
searchDisabled: false,
|
||||
userInfo: {},
|
||||
@ -66,23 +62,23 @@ export default {
|
||||
userId: '',
|
||||
quantity: '',
|
||||
remark: ''
|
||||
},
|
||||
formRules: {
|
||||
userId: commonRules,
|
||||
// earnPoints: { required: true, message: '必填字段,且必须大于0', validator: (rule, value, callback) => {
|
||||
// if (!value || value <= 0) {
|
||||
// callback(new Error())
|
||||
// return
|
||||
// }
|
||||
// callback()
|
||||
// }, trigger: 'blur' },
|
||||
quantity: { required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
commonRules() {
|
||||
return [
|
||||
{ required: true, message: this.$t('pages.userBankAccounts.validation.required'), trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
formRules() {
|
||||
return {
|
||||
userId: this.commonRules,
|
||||
quantity: { required: true, message: this.$t('pages.userBankAccounts.validation.requiredField'), trigger: 'blur' }
|
||||
}
|
||||
},
|
||||
textOptTitle() {
|
||||
return this.row && this.row.id ? '修改' : '添加'
|
||||
return this.row && this.row.id ? this.$t('pages.userBankAccounts.action.edit') : this.$t('pages.userBankAccounts.action.add')
|
||||
},
|
||||
isUpdate() {
|
||||
return this.row && this.row.id
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankAccounts.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -20,7 +20,7 @@
|
||||
</el-select>
|
||||
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" placeholder="用户ID" />
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" :placeholder="$t('pages.userBankAccounts.filter.userId')" />
|
||||
</div>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -29,7 +29,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userBankAccounts.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -37,7 +37,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="handleCreate"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.userBankAccounts.action.add') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -47,68 +47,68 @@
|
||||
:loading="exportLoading"
|
||||
@click="exprotExcel"
|
||||
>
|
||||
导出
|
||||
{{ $t('pages.userBankAccounts.action.export') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
@click="readExcel"
|
||||
>
|
||||
导入<i class="el-icon-upload el-icon--right" />
|
||||
{{ $t('pages.userBankAccounts.action.import') }}<i class="el-icon-upload el-icon--right" />
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.userBankAccounts.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
@cell-mouse-enter="handleMouseEnter"
|
||||
>
|
||||
<el-table-column type="index" width="50" label="No" />
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.userBankAccounts.table.system')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center" min-width="200">
|
||||
<el-table-column :label="$t('pages.userBankAccounts.table.user')" align="center" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.userProfile" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="earnPoints" label="获得总额" align="center" min-width="100" />
|
||||
<el-table-column prop="consumptionPoints" label="消费总额" align="center" min-width="100" />
|
||||
<el-table-column prop="balance" label="余额" align="center" min-width="100" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="earnPoints" :label="$t('pages.userBankAccounts.table.earnPoints')" align="center" min-width="100" />
|
||||
<el-table-column prop="consumptionPoints" :label="$t('pages.userBankAccounts.table.consumptionPoints')" align="center" min-width="100" />
|
||||
<el-table-column prop="balance" :label="$t('pages.userBankAccounts.table.balance')" align="center" min-width="100" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.userBankAccounts.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="updateTime" label="修改时间" align="center" width="160">
|
||||
<el-table-column prop="updateTime" :label="$t('pages.userBankAccounts.table.updateTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.updateTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center">
|
||||
<el-table-column fixed="right" :label="$t('pages.userBankAccounts.table.actions')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-dropdown>
|
||||
<span class="el-dropdown-link">
|
||||
<i class="el-icon-more" />
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, true)">发送</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, false)">扣除</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, true)">{{ $t('pages.userBankAccounts.action.send') }}</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, false)">{{ $t('pages.userBankAccounts.action.deduct') }}</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item @click.native="showTransferBox(scope.row)">转账</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickRunningWater(scope.row)">流水</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showTransferBox(scope.row)">{{ $t('pages.userBankAccounts.action.transfer') }}</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickRunningWater(scope.row)">{{ $t('pages.userBankAccounts.action.transactions') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-if="notData">{{ $t('pages.userBankAccounts.action.allLoaded') }}</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">{{ $t('pages.userBankAccounts.action.loadMore') }}</el-button>
|
||||
</div>
|
||||
<form-edit
|
||||
v-if="formEditVisable"
|
||||
@ -119,7 +119,7 @@
|
||||
/>
|
||||
<div class="gold-input-box">
|
||||
<el-dialog
|
||||
:title=" type ? '发送' : '扣除'"
|
||||
:title="getGoldActionName(type)"
|
||||
:visible="goldInputBoxVisible"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -133,31 +133,31 @@
|
||||
label-width="70px"
|
||||
style="width: 300px; margin-left:50px;"
|
||||
>
|
||||
<el-form-item label="金额" prop="quantity">
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.amount')" prop="quantity">
|
||||
<el-input
|
||||
v-model.trim="formData.quantity"
|
||||
:placeholder="'请输入' + (type ? '发送' : '扣除') + '金额'"
|
||||
:placeholder="getGoldAmountPlaceholder(type)"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对内备注" prop="remark">
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.internalRemark')" prop="remark">
|
||||
<el-input
|
||||
v-model.trim="formData.remark"
|
||||
placeholder="请输入对内备注"
|
||||
:placeholder="$t('pages.userBankAccounts.placeholder.internalRemark')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="hideGoldInputBox()">
|
||||
取消
|
||||
{{ $t('pages.userBankAccounts.action.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-loading="listLoading"
|
||||
type="primary"
|
||||
@click="goldSubmit()"
|
||||
>
|
||||
提交
|
||||
{{ $t('pages.userBankAccounts.action.submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@ -176,7 +176,7 @@
|
||||
/>
|
||||
<div class="gold-input-box">
|
||||
<el-dialog
|
||||
title="转账"
|
||||
:title="$t('pages.userBankAccounts.action.transfer')"
|
||||
:visible="transferVisible"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -191,45 +191,45 @@
|
||||
style="width: 400px; margin-left:50px;"
|
||||
>
|
||||
|
||||
<el-form-item prop="acceptUserId" label="收款人">
|
||||
<account-input ref="transferAccountInput" v-model="transferFormData.acceptUserId" :sys-origin="transferFormData.sysOrigin" placeholder="用户账号" />
|
||||
<el-form-item prop="acceptUserId" :label="$t('pages.userBankAccounts.form.payee')">
|
||||
<account-input ref="transferAccountInput" v-model="transferFormData.acceptUserId" :sys-origin="transferFormData.sysOrigin" :placeholder="$t('pages.userBankAccounts.placeholder.userAccount')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="金额" prop="quantity">
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.amount')" prop="quantity">
|
||||
<el-input
|
||||
v-model.trim="transferFormData.quantity"
|
||||
:placeholder="'请输入转账金额'"
|
||||
:placeholder="$t('pages.userBankAccounts.placeholder.transferAmount')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对内备注" prop="remark">
|
||||
<el-form-item :label="$t('pages.userBankAccounts.form.internalRemark')" prop="remark">
|
||||
<el-input
|
||||
v-model.trim="transferFormData.remark"
|
||||
placeholder="请输入对内备注"
|
||||
:placeholder="$t('pages.userBankAccounts.placeholder.internalRemark')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="hideTransferBox()">
|
||||
取消
|
||||
{{ $t('pages.userBankAccounts.action.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-loading="listLoading"
|
||||
type="primary"
|
||||
@click="transferSubmit()"
|
||||
>
|
||||
提交
|
||||
{{ $t('pages.userBankAccounts.action.submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<div class="excel-import">
|
||||
<el-dialog title="导入数据" :visible.sync="uploadDialogVisible" :close-on-click-modal="false" width="400px" :modal-append-to-body="true" :append-to-body="true">
|
||||
<el-dialog :title="$t('pages.userBankAccounts.importDialog.title')" :visible.sync="uploadDialogVisible" :close-on-click-modal="false" width="400px" :modal-append-to-body="true" :append-to-body="true">
|
||||
<div class="upload_box">
|
||||
<span>请选择导入文件:</span>
|
||||
<el-button type="text" :loading="downloadTemplateLoading"><i class="el-icon-tickets" style="margin-right: 4px;" /><a href="https://dev.file.momooline.com/files/Import%20Template.xlsx">模板下载</a></el-button>
|
||||
<span>{{ $t('pages.userBankAccounts.importDialog.selectFile') }}</span>
|
||||
<el-button type="text" :loading="downloadTemplateLoading"><i class="el-icon-tickets" style="margin-right: 4px;" /><a href="https://dev.file.momooline.com/files/Import%20Template.xlsx">{{ $t('pages.userBankAccounts.importDialog.downloadTemplate') }}</a></el-button>
|
||||
<el-upload
|
||||
ref="upload"
|
||||
class="upload-demo"
|
||||
@ -242,7 +242,7 @@
|
||||
:http-request="uploadTemplate"
|
||||
>
|
||||
<i class="el-icon-upload" />
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__text">{{ $t('pages.userBankAccounts.importDialog.dragHere') }}<em>{{ $t('pages.userBankAccounts.importDialog.clickUpload') }}</em></div>
|
||||
</el-upload>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@ -260,9 +260,6 @@ export default {
|
||||
name: 'UserBankBalance',
|
||||
components: { FormEdit, RunningWater },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段', trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
runningWaterVisible: false,
|
||||
thatRow: null,
|
||||
@ -293,17 +290,6 @@ export default {
|
||||
sysOrigin: '',
|
||||
remark: ''
|
||||
},
|
||||
formRules: {
|
||||
userId: commonRules,
|
||||
quantity: { required: true, message: '必填字段不可为空', trigger: 'blur' },
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
transferFormRules: {
|
||||
userId: commonRules,
|
||||
acceptUserId: commonRules,
|
||||
quantity: { required: true, message: '必填字段不可为空', trigger: 'blur' },
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
listLoading: false,
|
||||
list: [],
|
||||
notData: false,
|
||||
@ -313,7 +299,27 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['permissionsSysOriginPlatforms'])
|
||||
...mapGetters(['permissionsSysOriginPlatforms']),
|
||||
commonRules() {
|
||||
return [
|
||||
{ required: true, message: this.$t('pages.userBankAccounts.validation.required'), trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
formRules() {
|
||||
return {
|
||||
userId: this.commonRules,
|
||||
quantity: { required: true, message: this.$t('pages.userBankAccounts.validation.requiredField'), trigger: 'blur' },
|
||||
sysOrigin: this.commonRules
|
||||
}
|
||||
},
|
||||
transferFormRules() {
|
||||
return {
|
||||
userId: this.commonRules,
|
||||
acceptUserId: this.commonRules,
|
||||
quantity: { required: true, message: this.$t('pages.userBankAccounts.validation.requiredField'), trigger: 'blur' },
|
||||
sysOrigin: this.commonRules
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const that = this
|
||||
@ -399,6 +405,12 @@ export default {
|
||||
}
|
||||
that.transferVisible = true
|
||||
},
|
||||
getGoldActionName(type) {
|
||||
return type ? this.$t('pages.userBankAccounts.action.send') : this.$t('pages.userBankAccounts.action.deduct')
|
||||
},
|
||||
getGoldAmountPlaceholder(type) {
|
||||
return type ? this.$t('pages.userBankAccounts.placeholder.sendAmount') : this.$t('pages.userBankAccounts.placeholder.deductAmount')
|
||||
},
|
||||
hideGoldInputBox() {
|
||||
const that = this
|
||||
that.goldInputBoxVisible = false
|
||||
@ -480,7 +492,7 @@ export default {
|
||||
that.exportLoading = false
|
||||
}).catch(er => {
|
||||
that.exportLoading = false
|
||||
this.$opsMessage.fail('下载失败!')
|
||||
this.$opsMessage.fail(this.$t('pages.userBankAccounts.message.downloadFailed'))
|
||||
})
|
||||
},
|
||||
uploadTemplate(value) {
|
||||
@ -488,7 +500,7 @@ export default {
|
||||
that.uploadLoding = true
|
||||
that.loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在导入...',
|
||||
text: this.$t('pages.userBankAccounts.message.importing'),
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.5)'
|
||||
})
|
||||
@ -505,7 +517,7 @@ export default {
|
||||
uploadSuccess() {
|
||||
const that = this
|
||||
setTimeout(() => {
|
||||
that.$message({ type: 'success', message: '导入成功' })
|
||||
that.$message({ type: 'success', message: this.$t('pages.userBankAccounts.message.importSuccess') })
|
||||
that.uploadDialogVisible = false
|
||||
that.uploadLoding = false
|
||||
that.loading.close()
|
||||
@ -514,7 +526,7 @@ export default {
|
||||
},
|
||||
messageError() {
|
||||
const that = this
|
||||
that.$message({ type: 'error', message: '导入失败,请重试!' })
|
||||
that.$message({ type: 'error', message: this.$t('pages.userBankAccounts.message.importFailed') })
|
||||
that.uploadLoding = false
|
||||
that.loading.close()
|
||||
that.renderData(true)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="用户银行账户流水"
|
||||
:title="$t('pages.userBankAccounts.dialog.accountTransactions')"
|
||||
:visible="true"
|
||||
:before-close="handleClose"
|
||||
:close-on-click-modal="false"
|
||||
@ -14,17 +14,17 @@
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
:before-close="handleClose"
|
||||
element-loading-text="Loading"
|
||||
:element-loading-text="$t('pages.userBankAccounts.loading')"
|
||||
fit
|
||||
highlight-current-row
|
||||
max-height="350px"
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.userBankRunningWater.table.system')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.user')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div><user-table-exhibit :size="scope.row.userProfile ? 'mini' : 'small'" :user-profile="scope.row.userProfile" :query-details="true" /></div>
|
||||
<div v-if="scope.row.tmpUserProfile" class="attached">
|
||||
@ -32,8 +32,12 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="typeName" label="类型" align="center" width="80" />
|
||||
<el-table-column label="数量" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.type')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
{{ getTypeName(scope.row.type, scope.row.typeName) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.amount')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<span v-if="scope.row.type === 0" class="font-danger">+{{ scope.row.amount }}</span>
|
||||
@ -41,14 +45,14 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="balance" label="余额" align="center" />
|
||||
<el-table-column label="事件" align="center">
|
||||
<el-table-column prop="balance" :label="$t('pages.userBankRunningWater.table.balance')" align="center" />
|
||||
<el-table-column :label="$t('pages.userBankRunningWater.table.event')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ getEventDesc(scope.row.event) }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" min-width="200" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="remark" :label="$t('pages.userBankRunningWater.table.remark')" align="center" min-width="200" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.userBankRunningWater.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
@ -56,8 +60,8 @@
|
||||
</el-table>
|
||||
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-if="notData">{{ $t('pages.userBankRunningWater.action.allLoaded') }}</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">{{ $t('pages.userBankRunningWater.action.loadMore') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@ -128,10 +132,10 @@ export default {
|
||||
},
|
||||
getTransferDescriptionName(event) {
|
||||
if (event === 'TRANSFER') {
|
||||
return '收款人'
|
||||
return this.$t('pages.userBankRunningWater.transfer.payee')
|
||||
}
|
||||
if (event === 'RECEIVE_TRANSFER') {
|
||||
return '付款人'
|
||||
return this.$t('pages.userBankRunningWater.transfer.payer')
|
||||
}
|
||||
return ''
|
||||
},
|
||||
@ -143,13 +147,22 @@ export default {
|
||||
that.loadMoreLoading = true
|
||||
that.renderData()
|
||||
},
|
||||
getEventDesc(_key) {
|
||||
const that = this
|
||||
const result = that.userBankWaterEvent.filter(_event => _event.value === _key)
|
||||
if (!result) {
|
||||
return _key
|
||||
getTypeName(type, fallback) {
|
||||
if (type === 0) {
|
||||
return this.$t('pages.userBankRunningWater.type.income')
|
||||
}
|
||||
return result[0].name
|
||||
if (type === 1) {
|
||||
return this.$t('pages.userBankRunningWater.type.expense')
|
||||
}
|
||||
return fallback || type
|
||||
},
|
||||
getEventDesc(_key) {
|
||||
const translated = this.$t(`pages.userBankRunningWater.events.${_key}`)
|
||||
if (translated !== `pages.userBankRunningWater.events.${_key}`) {
|
||||
return translated
|
||||
}
|
||||
const result = this.userBankWaterEvent.find(_event => _event.value === _key)
|
||||
return result ? result.name : _key
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,41 +10,41 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 审核提现申请
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.title') }}
|
||||
</div>
|
||||
<div class="team-bill-settle">
|
||||
<div class="drawer-form">
|
||||
<div class="blockquote">提交人</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.submitUser') }}</div>
|
||||
<div class="content" style="display: flex;justify-content: flex-start;flex-direction: row;align-items: center;">
|
||||
<user-table-exhibit :user-profile="row.submitUser" :query-details="true" style="margin: 0.4rem" />
|
||||
</div>
|
||||
|
||||
<div v-if="row.settlementResult && row.settlementResult.acceptBankCard">
|
||||
<div class="blockquote">银行卡 <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.bankCard') }} <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="content">
|
||||
<div style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag effect="plain">卡号:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">收款人:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">银行:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.cardNo') }}:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.payee') }}:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.bankName') }}:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
</div>
|
||||
<div v-if="row.settlementResult.acceptBankCard.del" style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag type="danger">该银行卡已被用户删除</el-tag>
|
||||
<el-tag type="danger">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.bankCardDeleted') }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockquote">提现金额: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">结算
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.amount') }}: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.settlement') }}
|
||||
<el-tooltip class="item" effect="dark">
|
||||
<div slot="content">
|
||||
<p>* 转账凭证: 结算人员发送美元或其他币种后的记录凭证截图</p>
|
||||
<p>* 备注: 本次账单备注, 对外显示</p>
|
||||
<p>* {{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.transferVoucherTip') }}</p>
|
||||
<p>* {{ $t('pages.userBankWithdrawDiamondApply.approvalDrawer.remarkTip') }}</p>
|
||||
</div>
|
||||
<i class="el-icon-info" />
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<el-form ref="form" :model="form" label-width="80px" style="margin-right: 15px;">
|
||||
|
||||
<el-form-item prop="tmpExistsCertificate" label="凭证上传">
|
||||
<el-form-item prop="tmpExistsCertificate" :label="$t('pages.userBankWithdrawDiamondApply.approvalDrawer.uploadVoucher')">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<upload-image
|
||||
@ -73,11 +73,11 @@
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对外备注">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.approvalDrawer.externalRemark')">
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入对外备注"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.approvalDrawer.externalRemarkPlaceholder')"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
resize="none"
|
||||
@ -88,9 +88,9 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">取消</el-button>
|
||||
<el-button :disabled="submitLoading" :loading="submitLoading" @click="submit('PASS')">通过</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit('NOT_PASS')">驳回</el-button>
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">{{ $t('pages.userBankWithdrawDiamondApply.action.cancel') }}</el-button>
|
||||
<el-button :disabled="submitLoading" :loading="submitLoading" @click="submit('PASS')">{{ $t('pages.userBankWithdrawDiamondApply.action.pass') }}</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit('NOT_PASS')">{{ $t('pages.userBankWithdrawDiamondApply.action.reject') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -164,22 +164,15 @@ export default {
|
||||
},
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在处理中!')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawDiamondApply.message.processing'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
},
|
||||
getStatusName(status) {
|
||||
if (status === 'SUBMIT') {
|
||||
return '用户提交'
|
||||
}
|
||||
if (status === 'PASS') {
|
||||
return '审核通过'
|
||||
}
|
||||
if (status === 'NOT_PASS') {
|
||||
return '审核不通过'
|
||||
}
|
||||
return '未知'
|
||||
const key = `pages.userBankWithdrawDiamondApply.approvalRecord.${status}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? this.$t('pages.userBankWithdrawDiamondApply.approvalRecord.UNKNOWN') : value
|
||||
},
|
||||
getBankCardTypeName(_type) {
|
||||
var _name = ''
|
||||
@ -210,7 +203,7 @@ export default {
|
||||
certificateUrls.push(that.certificateFour)
|
||||
}
|
||||
if (certificateUrls.length <= 0 && approvalStatus === 'PASS') {
|
||||
this.$opsMessage.warn('请上传转账凭证, 请稍等!')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawDiamondApply.message.uploadVoucherFirst'))
|
||||
return
|
||||
}
|
||||
that.form.credential = certificateUrls
|
||||
|
||||
@ -10,31 +10,31 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 提现申请详情
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.title') }}
|
||||
</div>
|
||||
<div class="team-bill-settle">
|
||||
<div class="drawer-form">
|
||||
<div class="blockquote">提交人</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.submitUser') }}</div>
|
||||
<div class="content" style="display: flex;justify-content: flex-start;flex-direction: row;align-items: center;">
|
||||
<user-table-exhibit :user-profile="row.submitUser" :query-details="true" style="margin: 0.4rem" />
|
||||
</div>
|
||||
<div v-if="row.settlementResult && row.settlementResult.acceptBankCard">
|
||||
<div class="blockquote">银行卡 <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.bankCard') }} <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="content">
|
||||
<div style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag effect="plain">卡号:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">收款人:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">银行:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.cardNo') }}:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.payee') }}:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.bankName') }}:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
</div>
|
||||
<div v-if="(row.settlementResult.acceptBankCard.del || row.settlementResult.acceptBankCard.status !== 'PASS') && row.latestApprovalStatus === 'SUBMIT'" style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag type="danger">该银行卡可能已被用户删除或没有通审核,请核实.</el-tag>
|
||||
<el-tag type="danger">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.bankCardRisk') }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockquote">提现金额: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">手续费(%) <span style="color:#419eff;">{{ row.serviceCharge }}</span></div>
|
||||
<div class="blockquote">实际提现金额: <span style="color:#419eff;">{{ row.actualAmount }}</span></div>
|
||||
<div class="blockquote">凭证</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.amount') }}: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.serviceCharge') }} <span style="color:#419eff;">{{ row.serviceCharge }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.actualAmount') }}: <span style="color:#419eff;">{{ row.actualAmount }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.voucher') }}</div>
|
||||
<div v-if="row.settlementResult && row.settlementResult.credential" class="content">
|
||||
<div style="display: flex;flex-direction: row;justify-content: space-around;">
|
||||
<div v-for="(item, index) in row.settlementResult.credential" :key="index">
|
||||
@ -46,14 +46,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockquote">审批记录</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.approvalRecords') }}</div>
|
||||
<div class="content">
|
||||
<div class="block">
|
||||
<el-timeline>
|
||||
<el-timeline-item v-for="(item, index) in row.approvalProcesses" :key="index" :timestamp="item.createTime | dateFormat" placement="top">
|
||||
<el-card>
|
||||
<h4>{{ getStatusName(item.status) }}</h4>
|
||||
<p>备注: {{ item.remark }}</p>
|
||||
<p>{{ $t('pages.userBankWithdrawDiamondApply.detailsDrawer.remark') }}: {{ item.remark }}</p>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
@ -63,7 +63,7 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.userBankWithdrawDiamondApply.action.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -114,22 +114,15 @@ export default {
|
||||
methods: {
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在处理中!')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawDiamondApply.message.processing'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
},
|
||||
getStatusName(status) {
|
||||
if (status === 'SUBMIT') {
|
||||
return '用户提交'
|
||||
}
|
||||
if (status === 'PASS') {
|
||||
return '审核通过'
|
||||
}
|
||||
if (status === 'NOT_PASS') {
|
||||
return '审核不通过'
|
||||
}
|
||||
return '未知'
|
||||
const key = `pages.userBankWithdrawDiamondApply.approvalRecord.${status}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? this.$t('pages.userBankWithdrawDiamondApply.approvalRecord.UNKNOWN') : value
|
||||
},
|
||||
copyBankCard(row) {
|
||||
copyText(`卡号: ${row.settlementResult.acceptBankCard.cardNo || '?'}, 收款人: ${row.settlementResult.acceptBankCard.payee || '?'}, 银行: ${row.settlementResult.acceptBankCard.cardName || '?'}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -20,7 +20,7 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.bankCardType"
|
||||
placeholder="卡片类型"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.bankCardType')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@ -34,33 +34,37 @@
|
||||
/>
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.submitUserId" :sys-origin="listQuery.sysOrigin" placeholder="提交用户ID" />
|
||||
<account-input
|
||||
v-model="listQuery.submitUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.submitUserId')"
|
||||
/>
|
||||
</div>
|
||||
<el-select
|
||||
v-model="listQuery.acceptMethod"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.acceptMethod')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="自己" :value="'ONESELF'" />
|
||||
<el-option label="代理" :value="'AGENT'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.acceptMethod.ONESELF')" :value="'ONESELF'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.acceptMethod.AGENT')" :value="'AGENT'" />
|
||||
<el-option label="BD" :value="'BD'" />
|
||||
<el-option label="其他" :value="'OTHER'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.acceptMethod.OTHER')" :value="'OTHER'" />
|
||||
</el-select>
|
||||
|
||||
<el-select
|
||||
v-model="listQuery.latestApprovalStatus"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.status')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="用户提交" :value="'SUBMIT'" />
|
||||
<el-option label="通过" :value="'PASS'" />
|
||||
<el-option label="驳回" :value="'NOT_PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.approvalStatus.SUBMIT')" :value="'SUBMIT'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.approvalStatus.PASS')" :value="'PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.approvalStatus.NOT_PASS')" :value="'NOT_PASS'" />
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<el-date-picker
|
||||
@ -68,9 +72,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankWithdrawDiamondApply.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userBankWithdrawDiamondApply.date.start')"
|
||||
:end-placeholder="$t('pages.userBankWithdrawDiamondApply.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -80,7 +84,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userBankWithdrawDiamondApply.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="buttonPermissions.includes('withdraw-diamond-apply:table:export')"
|
||||
@ -89,7 +93,7 @@
|
||||
icon="el-icon-download"
|
||||
@click="exprotOrder"
|
||||
>
|
||||
导出
|
||||
{{ $t('pages.userBankWithdrawDiamondApply.action.export') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -99,42 +103,49 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.system')" prop="sysOrigin" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提交用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.submitUser')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.submitUser" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="amount" label="提交金额" align="center" min-width="80" />
|
||||
<el-table-column label="类型" align="center" min-width="80" >
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.amount')" prop="amount" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.amountType')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.amountType === 'SALARY_DIAMOND'">钻石</span>
|
||||
<span v-else>美金</span>
|
||||
<span>{{ getAmountTypeLabel(scope.row.amountType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="serviceCharge" label="手续费(%)" align="center" min-width="80" />
|
||||
<el-table-column prop="actualAmount" label="实际提现金额" align="center" min-width="80" />
|
||||
<el-table-column prop="acceptMethodName" label="接收方式" align="center" min-width="80" />
|
||||
<el-table-column prop="latestApprovalStatusName" label="最新审核状态" align="center" min-width="80" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.serviceCharge')" prop="serviceCharge" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.actualAmount')" prop="actualAmount" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.acceptMethod')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ getAcceptMethodLabel(scope.row.acceptMethod) || scope.row.acceptMethodName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.approvalStatus')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ getApprovalStatusLabel(scope.row.latestApprovalStatus) || scope.row.latestApprovalStatusName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userBankWithdrawDiamondApply.table.createTime')" prop="createTime" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="140">
|
||||
<el-table-column fixed="right" :label="$t('pages.userBankWithdrawDiamondApply.table.actions')" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">查看</el-button>
|
||||
<el-button v-if="scope.row.latestApprovalStatus === 'SUBMIT'" type="text" @click="clickApprovalDrawer(scope.row, scope.$index)">审核</el-button>
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">{{ $t('pages.userBankWithdrawDiamondApply.action.view') }}</el-button>
|
||||
<el-button v-if="scope.row.latestApprovalStatus === 'SUBMIT'" type="text" @click="clickApprovalDrawer(scope.row, scope.$index)">{{ $t('pages.userBankWithdrawDiamondApply.action.approval') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-if="notData">{{ $t('pages.userBankWithdrawDiamondApply.action.allLoaded') }}</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">{{ $t('pages.userBankWithdrawDiamondApply.action.loadMore') }}</el-button>
|
||||
</div>
|
||||
<details-drawer
|
||||
v-if="detailsDrawerVisible"
|
||||
@ -149,7 +160,7 @@
|
||||
/>
|
||||
|
||||
<el-drawer
|
||||
title="导出条件"
|
||||
:title="$t('pages.userBankWithdrawDiamondApply.exportDialog.title')"
|
||||
:visible="exportConditionVisible"
|
||||
:before-close="exportConditionClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -168,10 +179,10 @@
|
||||
label-width="70px"
|
||||
>
|
||||
|
||||
<el-form-item label="系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.exportDialog.system')" prop="sysOrigin">
|
||||
<el-select
|
||||
v-model="exportQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.system')"
|
||||
style="width: 100%;"
|
||||
>
|
||||
<el-option
|
||||
@ -186,10 +197,10 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="类型" prop="bankCardType">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.exportDialog.bankCardType')" prop="bankCardType">
|
||||
<el-select
|
||||
v-model="exportQuery.bankCardType"
|
||||
placeholder="卡片类型"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.bankCardType')"
|
||||
style="width: 100%;"
|
||||
clearable
|
||||
>
|
||||
@ -202,46 +213,50 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="用户" prop="submitUserId">
|
||||
<account-input v-model="exportQuery.submitUserId" :sys-origin="exportQuery.sysOrigin || listQuery.sysOrigin" placeholder="提交用户ID" />
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.exportDialog.user')" prop="submitUserId">
|
||||
<account-input
|
||||
v-model="exportQuery.submitUserId"
|
||||
:sys-origin="exportQuery.sysOrigin || listQuery.sysOrigin"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.submitUserId')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态" prop="latestApprovalStatus">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.exportDialog.status')" prop="latestApprovalStatus">
|
||||
<el-select
|
||||
v-model="exportQuery.latestApprovalStatus"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.userBankWithdrawDiamondApply.filter.status')"
|
||||
style="width: 100%;"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="用户提交" :value="'SUBMIT'" />
|
||||
<el-option label="通过" :value="'PASS'" />
|
||||
<el-option label="驳回" :value="'NOT_PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.approvalStatus.SUBMIT')" :value="'SUBMIT'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.approvalStatus.PASS')" :value="'PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawDiamondApply.approvalStatus.NOT_PASS')" :value="'NOT_PASS'" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="时间" prop="startTime">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.exportDialog.time')" prop="startTime">
|
||||
<el-date-picker
|
||||
v-model="exportDate"
|
||||
style="width: 100%;"
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankWithdrawDiamondApply.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userBankWithdrawDiamondApply.date.start')"
|
||||
:end-placeholder="$t('pages.userBankWithdrawDiamondApply.date.end')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="数量" prop="limit">
|
||||
<el-input v-model="exportQuery.limit" v-number placeholder="导出数量" />
|
||||
<el-form-item :label="$t('pages.userBankWithdrawDiamondApply.exportDialog.limit')" prop="limit">
|
||||
<el-input v-model="exportQuery.limit" v-number :placeholder="$t('pages.userBankWithdrawDiamondApply.exportDialog.limitPlaceholder')" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button @click="exportConditionClose()">关闭</el-button>
|
||||
<el-button type="primary" :disabled="exportLoading" :loading="exportLoading" @click="exportConditionSubmit()">导出</el-button>
|
||||
<el-button @click="exportConditionClose()">{{ $t('pages.userBankWithdrawDiamondApply.action.close') }}</el-button>
|
||||
<el-button type="primary" :disabled="exportLoading" :loading="exportLoading" @click="exportConditionSubmit()">{{ $t('pages.userBankWithdrawDiamondApply.action.export') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -260,7 +275,7 @@ export default {
|
||||
components: { DetailsDrawer, ApprovalDrawer },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.userBankWithdrawDiamondApply.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
bankCardTypes,
|
||||
@ -350,6 +365,25 @@ export default {
|
||||
that.renderData()
|
||||
},
|
||||
methods: {
|
||||
getAmountTypeLabel(type) {
|
||||
return this.$t(`pages.userBankWithdrawDiamondApply.amountType.${type}`)
|
||||
},
|
||||
getAcceptMethodLabel(type) {
|
||||
if (!type) {
|
||||
return ''
|
||||
}
|
||||
const key = `pages.userBankWithdrawDiamondApply.acceptMethod.${type}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? '' : value
|
||||
},
|
||||
getApprovalStatusLabel(status) {
|
||||
if (!status) {
|
||||
return ''
|
||||
}
|
||||
const key = `pages.userBankWithdrawDiamondApply.approvalStatus.${status}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? '' : value
|
||||
},
|
||||
renderData(isReset) {
|
||||
const that = this
|
||||
if (!that.listQuery.sysOrigin) {
|
||||
@ -399,7 +433,7 @@ export default {
|
||||
},
|
||||
exportConditionClose() {
|
||||
if (this.exportLoading) {
|
||||
this.$opsMessage.warn('正在执行导出, 请稍等~')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawDiamondApply.message.exporting'))
|
||||
return
|
||||
}
|
||||
this.exportConditionVisible = false
|
||||
@ -421,7 +455,7 @@ export default {
|
||||
that.exportConditionVisible = false
|
||||
}).catch(er => {
|
||||
that.exportLoading = false
|
||||
this.$opsMessage.fail('下载失败!')
|
||||
this.$opsMessage.fail(this.$t('pages.userBankWithdrawDiamondApply.message.downloadFailed'))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankWithdrawGoldApply.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -24,26 +24,32 @@
|
||||
<account-input
|
||||
v-model="listQuery.submitUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
placeholder="提交用户ID"
|
||||
:placeholder="$t('pages.userBankWithdrawGoldApply.filter.submitUserId')"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<account-input
|
||||
v-model="listQuery.acceptUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
placeholder="接收用户ID"
|
||||
:placeholder="$t('pages.userBankWithdrawGoldApply.filter.acceptUserId')"
|
||||
/>
|
||||
</div>
|
||||
<el-select
|
||||
v-model="listQuery.acceptAccount"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.userBankWithdrawGoldApply.filter.acceptAccount')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="自己" :value="'GOLD'" />
|
||||
<el-option label="货运代理账户" :value="'FREIGHT'" />
|
||||
<el-option
|
||||
:label="$t('pages.userBankWithdrawGoldApply.acceptAccount.GOLD')"
|
||||
:value="'GOLD'"
|
||||
/>
|
||||
<el-option
|
||||
:label="$t('pages.userBankWithdrawGoldApply.acceptAccount.FREIGHT')"
|
||||
:value="'FREIGHT'"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<div class="filter-item">
|
||||
@ -52,9 +58,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankWithdrawGoldApply.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userBankWithdrawGoldApply.date.start')"
|
||||
:end-placeholder="$t('pages.userBankWithdrawGoldApply.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -64,7 +70,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userBankWithdrawGoldApply.action.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -74,7 +80,12 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column
|
||||
prop="sysOrigin"
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.system')"
|
||||
align="center"
|
||||
width="80"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon
|
||||
:icon="scope.row.sysOrigin"
|
||||
@ -82,7 +93,11 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提交用户" align="center" min-width="80">
|
||||
<el-table-column
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.submitUser')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit
|
||||
:user-profile="scope.row.submitUser"
|
||||
@ -90,7 +105,11 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="接收用户" align="center" min-width="80">
|
||||
<el-table-column
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.acceptUser')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit
|
||||
:user-profile="scope.row.acceptUser"
|
||||
@ -99,49 +118,52 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="acceptAccountName"
|
||||
label="接收方式"
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.acceptAccount')"
|
||||
align="center"
|
||||
width="100"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ getAcceptAccountLabel(scope.row.acceptAccount) || scope.row.acceptAccountName }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
label="提交金额"
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.amount')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="exchangeRate"
|
||||
label="兑换比率"
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.exchangeRate')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="goldQuantity"
|
||||
label="获得金币"
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.goldQuantity')"
|
||||
align="center"
|
||||
min-width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
:label="$t('pages.userBankWithdrawGoldApply.table.createTime')"
|
||||
align="center"
|
||||
width="160"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
创建日期:{{ scope.row.createTime | dateFormat }}
|
||||
{{ $t('pages.userBankWithdrawGoldApply.table.createDate') }}:{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<span v-if="notData">{{ $t('pages.userBankWithdrawGoldApply.action.allLoaded') }}</span>
|
||||
<el-button
|
||||
v-else
|
||||
size="mini"
|
||||
:disabled="loadMoreLoading"
|
||||
:loading="loadMoreLoading"
|
||||
@click="clickLoadMore"
|
||||
>加载更多</el-button
|
||||
>{{ $t('pages.userBankWithdrawGoldApply.action.loadMore') }}</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@ -204,6 +226,14 @@ export default {
|
||||
that.renderData();
|
||||
},
|
||||
methods: {
|
||||
getAcceptAccountLabel(value) {
|
||||
if (!value) {
|
||||
return "";
|
||||
}
|
||||
const key = `pages.userBankWithdrawGoldApply.acceptAccount.${value}`;
|
||||
const translated = this.$t(key);
|
||||
return translated === key ? "" : translated;
|
||||
},
|
||||
renderData(isReset) {
|
||||
const that = this;
|
||||
if (!that.listQuery.sysOrigin) {
|
||||
|
||||
@ -10,41 +10,41 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 审核提现申请
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.title') }}
|
||||
</div>
|
||||
<div class="team-bill-settle">
|
||||
<div class="drawer-form">
|
||||
<div class="blockquote">提交人</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.submitUser') }}</div>
|
||||
<div class="content" style="display: flex;justify-content: flex-start;flex-direction: row;align-items: center;">
|
||||
<user-table-exhibit :user-profile="row.submitUser" :query-details="true" style="margin: 0.4rem" />
|
||||
</div>
|
||||
|
||||
<div v-if="row.settlementResult && row.settlementResult.acceptBankCard">
|
||||
<div class="blockquote">银行卡 <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.bankCard') }} <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="content">
|
||||
<div style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag effect="plain">卡号:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">收款人:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">银行:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.cardNo') }}:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.payee') }}:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.bankName') }}:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
</div>
|
||||
<div v-if="row.settlementResult.acceptBankCard.del" style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag type="danger">该银行卡已被用户删除</el-tag>
|
||||
<el-tag type="danger">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.bankCardDeleted') }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockquote">提现金额: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">结算
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.amount') }}: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.settlement') }}
|
||||
<el-tooltip class="item" effect="dark">
|
||||
<div slot="content">
|
||||
<p>* 转账凭证: 结算人员发送美元或其他币种后的记录凭证截图</p>
|
||||
<p>* 备注: 本次账单备注, 对外显示</p>
|
||||
<p>* {{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.transferVoucherTip') }}</p>
|
||||
<p>* {{ $t('pages.userBankWithdrawMoneyApply.approvalDrawer.remarkTip') }}</p>
|
||||
</div>
|
||||
<i class="el-icon-info" />
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<el-form ref="form" :model="form" label-width="80px" style="margin-right: 15px;">
|
||||
|
||||
<el-form-item prop="tmpExistsCertificate" label="凭证上传">
|
||||
<el-form-item prop="tmpExistsCertificate" :label="$t('pages.userBankWithdrawMoneyApply.approvalDrawer.uploadVoucher')">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<upload-image
|
||||
@ -73,11 +73,11 @@
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对外备注">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.approvalDrawer.externalRemark')">
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入对外备注"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.approvalDrawer.externalRemarkPlaceholder')"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
resize="none"
|
||||
@ -88,9 +88,9 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">取消</el-button>
|
||||
<el-button :disabled="submitLoading" :loading="submitLoading" @click="submit('PASS')">通过</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit('NOT_PASS')">驳回</el-button>
|
||||
<el-button :disabled="submitLoading" @click="handleClose()">{{ $t('pages.userBankWithdrawMoneyApply.action.cancel') }}</el-button>
|
||||
<el-button :disabled="submitLoading" :loading="submitLoading" @click="submit('PASS')">{{ $t('pages.userBankWithdrawMoneyApply.action.pass') }}</el-button>
|
||||
<el-button type="primary" :disabled="submitLoading" :loading="submitLoading" @click="submit('NOT_PASS')">{{ $t('pages.userBankWithdrawMoneyApply.action.reject') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -164,22 +164,15 @@ export default {
|
||||
},
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在处理中!')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawMoneyApply.message.processing'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
},
|
||||
getStatusName(status) {
|
||||
if (status === 'SUBMIT') {
|
||||
return '用户提交'
|
||||
}
|
||||
if (status === 'PASS') {
|
||||
return '审核通过'
|
||||
}
|
||||
if (status === 'NOT_PASS') {
|
||||
return '审核不通过'
|
||||
}
|
||||
return '未知'
|
||||
const key = `pages.userBankWithdrawMoneyApply.approvalRecord.${status}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? this.$t('pages.userBankWithdrawMoneyApply.approvalRecord.UNKNOWN') : value
|
||||
},
|
||||
getBankCardTypeName(_type) {
|
||||
var _name = ''
|
||||
@ -210,7 +203,7 @@ export default {
|
||||
certificateUrls.push(that.certificateFour)
|
||||
}
|
||||
if (certificateUrls.length <= 0 && approvalStatus === 'PASS') {
|
||||
this.$opsMessage.warn('请上传转账凭证, 请稍等!')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawMoneyApply.message.uploadVoucherFirst'))
|
||||
return
|
||||
}
|
||||
that.form.credential = certificateUrls
|
||||
|
||||
@ -10,31 +10,31 @@
|
||||
custom-class="drawer-auto-layout"
|
||||
>
|
||||
<div slot="title" class="flex-l">
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> 提现申请详情
|
||||
<sys-origin-icon :icon="row.sysOrigin" size="18px" /> {{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.title') }}
|
||||
</div>
|
||||
<div class="team-bill-settle">
|
||||
<div class="drawer-form">
|
||||
<div class="blockquote">提交人</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.submitUser') }}</div>
|
||||
<div class="content" style="display: flex;justify-content: flex-start;flex-direction: row;align-items: center;">
|
||||
<user-table-exhibit :user-profile="row.submitUser" :query-details="true" style="margin: 0.4rem" />
|
||||
</div>
|
||||
<div v-if="row.settlementResult && row.settlementResult.acceptBankCard">
|
||||
<div class="blockquote">银行卡 <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.bankCard') }} <i class="el-icon-document-copy cursor-pointer" @click="copyBankCard(row)" /></div>
|
||||
<div class="content">
|
||||
<div style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag effect="plain">卡号:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">收款人:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">银行:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.cardNo') }}:{{ row.settlementResult.acceptBankCard.cardNo }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.payee') }}:{{ row.settlementResult.acceptBankCard.payee }}</el-tag>
|
||||
<el-tag effect="plain">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.bankName') }}:{{ row.settlementResult.acceptBankCard.cardName }}</el-tag>
|
||||
</div>
|
||||
<div v-if="(row.settlementResult.acceptBankCard.del || row.settlementResult.acceptBankCard.status !== 'PASS') && row.latestApprovalStatus === 'SUBMIT'" style="margin: 0.2rem auto;line-height: .6rem;">
|
||||
<el-tag type="danger">该银行卡可能已被用户删除或没有通审核,请核实.</el-tag>
|
||||
<el-tag type="danger">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.bankCardRisk') }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockquote">提现金额: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">手续费(%) <span style="color:#419eff;">{{ row.serviceCharge }}</span></div>
|
||||
<div class="blockquote">实际提现金额: <span style="color:#419eff;">{{ row.actualAmount }}</span></div>
|
||||
<div class="blockquote">凭证</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.amount') }}: <span style="color:#419eff;">{{ row.amount }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.serviceCharge') }} <span style="color:#419eff;">{{ row.serviceCharge }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.actualAmount') }}: <span style="color:#419eff;">{{ row.actualAmount }}</span></div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.voucher') }}</div>
|
||||
<div v-if="row.settlementResult && row.settlementResult.credential" class="content">
|
||||
<div style="display: flex;flex-direction: row;justify-content: space-around;">
|
||||
<div v-for="(item, index) in row.settlementResult.credential" :key="index">
|
||||
@ -46,14 +46,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockquote">审批记录</div>
|
||||
<div class="blockquote">{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.approvalRecords') }}</div>
|
||||
<div class="content">
|
||||
<div class="block">
|
||||
<el-timeline>
|
||||
<el-timeline-item v-for="(item, index) in row.approvalProcesses" :key="index" :timestamp="item.createTime | dateFormat" placement="top">
|
||||
<el-card>
|
||||
<h4>{{ getStatusName(item.status) }}</h4>
|
||||
<p>备注: {{ item.remark }}</p>
|
||||
<p>{{ $t('pages.userBankWithdrawMoneyApply.detailsDrawer.remark') }}: {{ item.remark }}</p>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
@ -63,7 +63,7 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.userBankWithdrawMoneyApply.action.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -114,22 +114,15 @@ export default {
|
||||
methods: {
|
||||
handleClose() {
|
||||
if (this.submitLoading) {
|
||||
this.$opsMessage.warn('正在处理中!')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawMoneyApply.message.processing'))
|
||||
return
|
||||
}
|
||||
this.$emit('close')
|
||||
},
|
||||
getStatusName(status) {
|
||||
if (status === 'SUBMIT') {
|
||||
return '用户提交'
|
||||
}
|
||||
if (status === 'PASS') {
|
||||
return '审核通过'
|
||||
}
|
||||
if (status === 'NOT_PASS') {
|
||||
return '审核不通过'
|
||||
}
|
||||
return '未知'
|
||||
const key = `pages.userBankWithdrawMoneyApply.approvalRecord.${status}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? this.$t('pages.userBankWithdrawMoneyApply.approvalRecord.UNKNOWN') : value
|
||||
},
|
||||
copyBankCard(row) {
|
||||
copyText(`卡号: ${row.settlementResult.acceptBankCard.cardNo || '?'}, 收款人: ${row.settlementResult.acceptBankCard.payee || '?'}, 银行: ${row.settlementResult.acceptBankCard.cardName || '?'}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -20,7 +20,7 @@
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.bankCardType"
|
||||
placeholder="卡片类型"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.bankCardType')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@ -34,33 +34,37 @@
|
||||
/>
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.submitUserId" :sys-origin="listQuery.sysOrigin" placeholder="提交用户ID" />
|
||||
<account-input
|
||||
v-model="listQuery.submitUserId"
|
||||
:sys-origin="listQuery.sysOrigin"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.submitUserId')"
|
||||
/>
|
||||
</div>
|
||||
<el-select
|
||||
v-model="listQuery.acceptMethod"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.acceptMethod')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="自己" :value="'ONESELF'" />
|
||||
<el-option label="代理" :value="'AGENT'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.acceptMethod.ONESELF')" :value="'ONESELF'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.acceptMethod.AGENT')" :value="'AGENT'" />
|
||||
<el-option label="BD" :value="'BD'" />
|
||||
<el-option label="其他" :value="'OTHER'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.acceptMethod.OTHER')" :value="'OTHER'" />
|
||||
</el-select>
|
||||
|
||||
<el-select
|
||||
v-model="listQuery.latestApprovalStatus"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.status')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="用户提交" :value="'SUBMIT'" />
|
||||
<el-option label="通过" :value="'PASS'" />
|
||||
<el-option label="驳回" :value="'NOT_PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.approvalStatus.SUBMIT')" :value="'SUBMIT'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.approvalStatus.PASS')" :value="'PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.approvalStatus.NOT_PASS')" :value="'NOT_PASS'" />
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<el-date-picker
|
||||
@ -68,9 +72,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankWithdrawMoneyApply.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userBankWithdrawMoneyApply.date.start')"
|
||||
:end-placeholder="$t('pages.userBankWithdrawMoneyApply.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -80,7 +84,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userBankWithdrawMoneyApply.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="buttonPermissions.includes('withdraw-money-apply:table:export')"
|
||||
@ -89,7 +93,7 @@
|
||||
icon="el-icon-download"
|
||||
@click="exprotOrder"
|
||||
>
|
||||
导出
|
||||
{{ $t('pages.userBankWithdrawMoneyApply.action.export') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -99,42 +103,49 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.system')" prop="sysOrigin" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提交用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.submitUser')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.submitUser" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="amount" label="提交金额" align="center" min-width="80" />
|
||||
<el-table-column label="类型" align="center" min-width="80" >
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.amount')" prop="amount" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.amountType')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.amountType === 'SALARY_DIAMOND'">钻石</span>
|
||||
<span v-else>美金</span>
|
||||
<span>{{ getAmountTypeLabel(scope.row.amountType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="serviceCharge" label="手续费(%)" align="center" min-width="80" />
|
||||
<el-table-column prop="actualAmount" label="实际提现金额" align="center" min-width="80" />
|
||||
<el-table-column prop="acceptMethodName" label="接收方式" align="center" min-width="80" />
|
||||
<el-table-column prop="latestApprovalStatusName" label="最新审核状态" align="center" min-width="80" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.serviceCharge')" prop="serviceCharge" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.actualAmount')" prop="actualAmount" align="center" min-width="80" />
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.acceptMethod')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ getAcceptMethodLabel(scope.row.acceptMethod) || scope.row.acceptMethodName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.approvalStatus')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ getApprovalStatusLabel(scope.row.latestApprovalStatus) || scope.row.latestApprovalStatusName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userBankWithdrawMoneyApply.table.createTime')" prop="createTime" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="140">
|
||||
<el-table-column fixed="right" :label="$t('pages.userBankWithdrawMoneyApply.table.actions')" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">查看</el-button>
|
||||
<el-button v-if="scope.row.latestApprovalStatus === 'SUBMIT'" type="text" @click="clickApprovalDrawer(scope.row, scope.$index)">审核</el-button>
|
||||
<el-button type="text" @click="clickDetailsDrawer(scope.row)">{{ $t('pages.userBankWithdrawMoneyApply.action.view') }}</el-button>
|
||||
<el-button v-if="scope.row.latestApprovalStatus === 'SUBMIT'" type="text" @click="clickApprovalDrawer(scope.row, scope.$index)">{{ $t('pages.userBankWithdrawMoneyApply.action.approval') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div v-if="listQuery.lastId" class="load-more">
|
||||
<span v-if="notData">已加载全部</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">加载更多</el-button>
|
||||
<span v-if="notData">{{ $t('pages.userBankWithdrawMoneyApply.action.allLoaded') }}</span>
|
||||
<el-button v-else size="mini" :disabled="loadMoreLoading" :loading="loadMoreLoading" @click="clickLoadMore">{{ $t('pages.userBankWithdrawMoneyApply.action.loadMore') }}</el-button>
|
||||
</div>
|
||||
<details-drawer
|
||||
v-if="detailsDrawerVisible"
|
||||
@ -149,7 +160,7 @@
|
||||
/>
|
||||
|
||||
<el-drawer
|
||||
title="导出条件"
|
||||
:title="$t('pages.userBankWithdrawMoneyApply.exportDialog.title')"
|
||||
:visible="exportConditionVisible"
|
||||
:before-close="exportConditionClose"
|
||||
:close-on-press-escape="false"
|
||||
@ -168,10 +179,10 @@
|
||||
label-width="70px"
|
||||
>
|
||||
|
||||
<el-form-item label="系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.exportDialog.system')" prop="sysOrigin">
|
||||
<el-select
|
||||
v-model="exportQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.system')"
|
||||
style="width: 100%;"
|
||||
>
|
||||
<el-option
|
||||
@ -186,10 +197,10 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="类型" prop="bankCardType">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.exportDialog.bankCardType')" prop="bankCardType">
|
||||
<el-select
|
||||
v-model="exportQuery.bankCardType"
|
||||
placeholder="卡片类型"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.bankCardType')"
|
||||
style="width: 100%;"
|
||||
clearable
|
||||
>
|
||||
@ -202,46 +213,50 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="用户" prop="submitUserId">
|
||||
<account-input v-model="exportQuery.submitUserId" :sys-origin="exportQuery.sysOrigin || listQuery.sysOrigin" placeholder="提交用户ID" />
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.exportDialog.user')" prop="submitUserId">
|
||||
<account-input
|
||||
v-model="exportQuery.submitUserId"
|
||||
:sys-origin="exportQuery.sysOrigin || listQuery.sysOrigin"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.submitUserId')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态" prop="latestApprovalStatus">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.exportDialog.status')" prop="latestApprovalStatus">
|
||||
<el-select
|
||||
v-model="exportQuery.latestApprovalStatus"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('pages.userBankWithdrawMoneyApply.filter.status')"
|
||||
style="width: 100%;"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="用户提交" :value="'SUBMIT'" />
|
||||
<el-option label="通过" :value="'PASS'" />
|
||||
<el-option label="驳回" :value="'NOT_PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.approvalStatus.SUBMIT')" :value="'SUBMIT'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.approvalStatus.PASS')" :value="'PASS'" />
|
||||
<el-option :label="$t('pages.userBankWithdrawMoneyApply.approvalStatus.NOT_PASS')" :value="'NOT_PASS'" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="时间" prop="startTime">
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.exportDialog.time')" prop="startTime">
|
||||
<el-date-picker
|
||||
v-model="exportDate"
|
||||
style="width: 100%;"
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userBankWithdrawMoneyApply.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userBankWithdrawMoneyApply.date.start')"
|
||||
:end-placeholder="$t('pages.userBankWithdrawMoneyApply.date.end')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="数量" prop="limit">
|
||||
<el-input v-model="exportQuery.limit" v-number placeholder="导出数量" />
|
||||
<el-form-item :label="$t('pages.userBankWithdrawMoneyApply.exportDialog.limit')" prop="limit">
|
||||
<el-input v-model="exportQuery.limit" v-number :placeholder="$t('pages.userBankWithdrawMoneyApply.exportDialog.limitPlaceholder')" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button @click="exportConditionClose()">关闭</el-button>
|
||||
<el-button type="primary" :disabled="exportLoading" :loading="exportLoading" @click="exportConditionSubmit()">导出</el-button>
|
||||
<el-button @click="exportConditionClose()">{{ $t('pages.userBankWithdrawMoneyApply.action.close') }}</el-button>
|
||||
<el-button type="primary" :disabled="exportLoading" :loading="exportLoading" @click="exportConditionSubmit()">{{ $t('pages.userBankWithdrawMoneyApply.action.export') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@ -260,7 +275,7 @@ export default {
|
||||
components: { DetailsDrawer, ApprovalDrawer },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.userBankWithdrawMoneyApply.validation.requiredField'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
bankCardTypes,
|
||||
@ -349,6 +364,25 @@ export default {
|
||||
that.renderData()
|
||||
},
|
||||
methods: {
|
||||
getAmountTypeLabel(type) {
|
||||
return this.$t(`pages.userBankWithdrawMoneyApply.amountType.${type}`)
|
||||
},
|
||||
getAcceptMethodLabel(type) {
|
||||
if (!type) {
|
||||
return ''
|
||||
}
|
||||
const key = `pages.userBankWithdrawMoneyApply.acceptMethod.${type}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? '' : value
|
||||
},
|
||||
getApprovalStatusLabel(status) {
|
||||
if (!status) {
|
||||
return ''
|
||||
}
|
||||
const key = `pages.userBankWithdrawMoneyApply.approvalStatus.${status}`
|
||||
const value = this.$t(key)
|
||||
return value === key ? '' : value
|
||||
},
|
||||
renderData(isReset) {
|
||||
const that = this
|
||||
if (!that.listQuery.sysOrigin) {
|
||||
@ -398,7 +432,7 @@ export default {
|
||||
},
|
||||
exportConditionClose() {
|
||||
if (this.exportLoading) {
|
||||
this.$opsMessage.warn('正在执行导出, 请稍等~')
|
||||
this.$opsMessage.warn(this.$t('pages.userBankWithdrawMoneyApply.message.exporting'))
|
||||
return
|
||||
}
|
||||
this.exportConditionVisible = false
|
||||
@ -420,7 +454,7 @@ export default {
|
||||
that.exportConditionVisible = false
|
||||
}).catch(er => {
|
||||
that.exportLoading = false
|
||||
this.$opsMessage.fail('下载失败!')
|
||||
this.$opsMessage.fail(this.$t('pages.userBankWithdrawMoneyApply.message.downloadFailed'))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userSalaryDiamond.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -19,22 +19,22 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" placeholder="用户ID" />
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" :placeholder="$t('pages.userSalaryDiamond.filter.userId')" />
|
||||
</div>
|
||||
<el-select
|
||||
v-model="listQuery.type"
|
||||
placeholder="类型"
|
||||
:placeholder="$t('pages.userSalaryDiamond.filter.type')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="收入" :value="0" />
|
||||
<el-option label="支出" :value="1" />
|
||||
<el-option :label="$t('pages.userSalaryDiamond.type.income')" :value="0" />
|
||||
<el-option :label="$t('pages.userSalaryDiamond.type.expense')" :value="1" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="listQuery.event"
|
||||
placeholder="事件"
|
||||
:placeholder="$t('pages.userSalaryDiamond.filter.event')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@ -43,7 +43,7 @@
|
||||
<el-option
|
||||
v-for="(item, index) in userSalaryDiamondWaterEvent"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:label="getEventLabel(item.value)"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
@ -54,9 +54,9 @@
|
||||
value-format="timestamp"
|
||||
type="datetimerange"
|
||||
:picker-options="pickerOptions"
|
||||
range-separator="至"
|
||||
start-placeholder="日期开始"
|
||||
end-placeholder="日期结束"
|
||||
:range-separator="$t('pages.userSalaryDiamond.date.rangeSeparator')"
|
||||
:start-placeholder="$t('pages.userSalaryDiamond.date.start')"
|
||||
:end-placeholder="$t('pages.userSalaryDiamond.date.end')"
|
||||
/>
|
||||
</div>
|
||||
<el-button
|
||||
@ -66,7 +66,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userSalaryDiamond.action.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -76,12 +76,12 @@
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.userSalaryDiamond.table.system')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.user')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div><user-table-exhibit :size="scope.row.userProfile ? 'mini' : 'small'" :user-profile="scope.row.userProfile" :query-details="true" /></div>
|
||||
<div v-if="scope.row.tmpUserProfile" class="attached">
|
||||
@ -89,8 +89,12 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="typeName" label="类型" align="center" width="80" />
|
||||
<el-table-column label="数量" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.type')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
{{ getTypeLabel(scope.row.type) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.amount')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<span v-if="scope.row.type === 0" class="font-danger">+{{ scope.row.amount }}</span>
|
||||
@ -99,17 +103,17 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="balance" label="余额" align="center" min-width="80" />
|
||||
<el-table-column prop="tempBalance" label="临时钻石余额" align="center" min-width="80" />
|
||||
<el-table-column prop="balance" :label="$t('pages.userSalaryDiamond.table.balance')" align="center" min-width="80" />
|
||||
<el-table-column prop="tempBalance" :label="$t('pages.userSalaryDiamond.table.tempBalance')" align="center" min-width="80" />
|
||||
|
||||
<el-table-column label="事件" align="center">
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.event')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ getEventDesc(scope.row.salaryEvent) }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" min-width="160" />
|
||||
<el-table-column prop="createUserOriginName" label="创建源" align="center" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="remark" :label="$t('pages.userSalaryDiamond.table.remark')" align="center" min-width="160" />
|
||||
<el-table-column prop="createUserOriginName" :label="$t('pages.userSalaryDiamond.table.createOrigin')" align="center" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.userSalaryDiamond.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
@ -209,23 +213,31 @@ export default {
|
||||
},
|
||||
getTransferDescriptionName(event) {
|
||||
if (event === 'TRANSFER') {
|
||||
return '收款人'
|
||||
return this.$t('pages.userSalaryDiamond.tag.payee')
|
||||
}
|
||||
if (event === 'RECEIVE_TRANSFER') {
|
||||
return '付款人'
|
||||
return this.$t('pages.userSalaryDiamond.tag.payer')
|
||||
}
|
||||
return ''
|
||||
},
|
||||
getTypeLabel(type) {
|
||||
return this.$t(type === 0 ? 'pages.userSalaryDiamond.type.income' : 'pages.userSalaryDiamond.type.expense')
|
||||
},
|
||||
getEventLabel(event) {
|
||||
const key = `pages.userSalaryDiamond.events.${event}`
|
||||
const translated = this.$t(key)
|
||||
return translated === key ? event : translated
|
||||
},
|
||||
handleSearch() {
|
||||
this.renderData(true)
|
||||
},
|
||||
getEventDesc(_key) {
|
||||
const that = this
|
||||
const result = that.userSalaryDiamondWaterEvent.filter(_event => _event.value === _key)
|
||||
if (!result) {
|
||||
if (!result || result.length === 0) {
|
||||
return _key
|
||||
}
|
||||
return result[0].name
|
||||
return that.getEventLabel(result[0].value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="user-bank-form-edit">
|
||||
<el-dialog
|
||||
:title="'创建账户'"
|
||||
:title="$t('pages.userSalaryDiamond.dialog.createAccountTitle')"
|
||||
:visible="true"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -12,25 +12,25 @@
|
||||
>
|
||||
<div class="form-edit">
|
||||
<el-form ref="form" :model="form" :rules="formRules" label-width="110px" style="margin-right:50px;">
|
||||
<el-form-item label="系统" prop="sysOrigin">
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.system')" prop="sysOrigin">
|
||||
{{ sysOrigin }}
|
||||
</el-form-item>
|
||||
<el-form-item label="用户id" prop="userId">
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.userId')" prop="userId">
|
||||
|
||||
<account-input v-model="form.userId" :sys-origin="sysOrigin" placeholder="用户ID" />
|
||||
<account-input v-model="form.userId" :sys-origin="sysOrigin" :placeholder="$t('pages.userSalaryDiamond.filter.userId')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="金额" prop="quantity">
|
||||
<el-input v-model.trim="form.quantity" placeholder="请输入发送工资钻石" class="input-with-select" maxlength="10" />
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.amount')" prop="quantity">
|
||||
<el-input v-model.trim="form.quantity" :placeholder="$t('pages.userSalaryDiamond.placeholder.sendSalaryDiamond')" class="input-with-select" maxlength="10" />
|
||||
</el-form-item>
|
||||
<el-form-item label="对内备注" prop="remark">
|
||||
<el-input v-model.trim="form.remark" placeholder="对内备注" class="input-with-select" maxlength="10" />
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.innerRemark')" prop="remark">
|
||||
<el-input v-model.trim="form.remark" :placeholder="$t('pages.userSalaryDiamond.placeholder.innerRemark')" class="input-with-select" maxlength="10" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<div slot="footer">
|
||||
<el-button @click="handleClose()">取消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" :disabled="searchDisabled" @click="submitForm()">保存</el-button>
|
||||
<el-button @click="handleClose()">{{ $t('pages.userSalaryDiamond.action.cancel') }}</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" :disabled="searchDisabled" @click="submitForm()">{{ $t('pages.userSalaryDiamond.action.save') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@ -55,7 +55,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.userSalaryDiamond.validation.required'), trigger: 'blur' }
|
||||
]
|
||||
|
||||
return {
|
||||
@ -76,13 +76,13 @@ export default {
|
||||
// }
|
||||
// callback()
|
||||
// }, trigger: 'blur' },
|
||||
quantity: { required: true, message: '必填字段不可为空', trigger: 'blur' }
|
||||
quantity: { required: true, message: this.$t('pages.userSalaryDiamond.validation.requiredNotEmpty'), trigger: 'blur' }
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
textOptTitle() {
|
||||
return this.row && this.row.id ? '修改' : '添加'
|
||||
return this.row && this.row.id ? this.$t('pages.userSalaryDiamond.action.edit') : this.$t('pages.userSalaryDiamond.action.add')
|
||||
},
|
||||
isUpdate() {
|
||||
return this.row && this.row.id
|
||||
@ -108,7 +108,7 @@ export default {
|
||||
submitForm() {
|
||||
const that = this
|
||||
if(that.form.quantity <= 0) {
|
||||
that.$message.error('金额不能小于0')
|
||||
that.$message.error(this.$t('pages.userSalaryDiamond.message.amountGreaterThanZero'))
|
||||
return
|
||||
}
|
||||
that.$refs.form.validate(valid => {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="filter-container">
|
||||
<el-select
|
||||
v-model="listQuery.sysOrigin"
|
||||
placeholder="系统"
|
||||
:placeholder="$t('pages.userSalaryDiamond.filter.system')"
|
||||
style="width: 120px"
|
||||
class="filter-item"
|
||||
@change="handleSearch"
|
||||
@ -20,7 +20,7 @@
|
||||
</el-select>
|
||||
|
||||
<div class="filter-item">
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" placeholder="用户ID" />
|
||||
<account-input v-model="listQuery.userId" :sys-origin="listQuery.sysOrigin" :placeholder="$t('pages.userSalaryDiamond.filter.userId')" />
|
||||
</div>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -29,7 +29,7 @@
|
||||
:disabled="searchDisabled"
|
||||
@click="handleSearch"
|
||||
>
|
||||
搜索
|
||||
{{ $t('pages.userSalaryDiamond.action.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
@ -37,7 +37,7 @@
|
||||
icon="el-icon-edit"
|
||||
@click="handleCreate"
|
||||
>
|
||||
添加
|
||||
{{ $t('pages.userSalaryDiamond.action.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
@ -49,41 +49,41 @@
|
||||
@cell-mouse-enter="handleMouseEnter"
|
||||
>
|
||||
<el-table-column type="index" width="50" label="No" />
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center" width="80">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.userSalaryDiamond.table.system')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center" min-width="200">
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.user')" align="center" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<user-table-exhibit :user-profile="scope.row.userProfile" :query-details="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="earnPoints" label="获得总额" align="center" min-width="100" />
|
||||
<el-table-column prop="consumptionPoints" label="消费总额" align="center" min-width="100" />
|
||||
<el-table-column prop="balance" label="余额" align="center" min-width="100" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="earnPoints" :label="$t('pages.userSalaryDiamond.table.totalIncome')" align="center" min-width="100" />
|
||||
<el-table-column prop="consumptionPoints" :label="$t('pages.userSalaryDiamond.table.totalExpense')" align="center" min-width="100" />
|
||||
<el-table-column prop="balance" :label="$t('pages.userSalaryDiamond.table.balance')" align="center" min-width="100" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.userSalaryDiamond.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="updateTime" label="修改时间" align="center" width="160">
|
||||
<el-table-column prop="updateTime" :label="$t('pages.userSalaryDiamond.table.updateTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.updateTime | dateFormat }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center">
|
||||
<el-table-column fixed="right" :label="$t('pages.userSalaryDiamond.table.actions')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-dropdown>
|
||||
<span class="el-dropdown-link">
|
||||
<i class="el-icon-more" />
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, true)">发送</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, false)">扣除</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, true)">{{ $t('pages.userSalaryDiamond.action.send') }}</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showGoldInputBox(scope.row, false)">{{ $t('pages.userSalaryDiamond.action.deduct') }}</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item @click.native="showTransferBox(scope.row)">转账</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickRunningWater(scope.row)">流水</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="showTransferBox(scope.row)">{{ $t('pages.userSalaryDiamond.action.transfer') }}</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clickRunningWater(scope.row)">{{ $t('pages.userSalaryDiamond.action.runningWater') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
@ -105,7 +105,7 @@
|
||||
/>
|
||||
<div class="gold-input-box">
|
||||
<el-dialog
|
||||
:title=" type ? '发送' : '扣除'"
|
||||
:title=" type ? $t('pages.userSalaryDiamond.action.send') : $t('pages.userSalaryDiamond.action.deduct')"
|
||||
:visible="goldInputBoxVisible"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -119,31 +119,31 @@
|
||||
label-width="70px"
|
||||
style="width: 300px; margin-left:50px;"
|
||||
>
|
||||
<el-form-item label="金额" prop="quantity">
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.amount')" prop="quantity">
|
||||
<el-input
|
||||
v-model.trim="formData.quantity"
|
||||
:placeholder="'请输入' + (type ? '发送' : '扣除') + '工资钻石'"
|
||||
:placeholder="type ? $t('pages.userSalaryDiamond.placeholder.sendSalaryDiamond') : $t('pages.userSalaryDiamond.placeholder.deductSalaryDiamond')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对内备注" prop="remark">
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.innerRemark')" prop="remark">
|
||||
<el-input
|
||||
v-model.trim="formData.remark"
|
||||
placeholder="请输入对内备注"
|
||||
:placeholder="$t('pages.userSalaryDiamond.placeholder.innerRemark')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="hideGoldInputBox()">
|
||||
取消
|
||||
{{ $t('pages.userSalaryDiamond.action.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-loading="listLoading"
|
||||
type="primary"
|
||||
@click="goldSubmit()"
|
||||
>
|
||||
提交
|
||||
{{ $t('pages.userSalaryDiamond.action.submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@ -162,7 +162,7 @@
|
||||
/>
|
||||
<div class="gold-input-box">
|
||||
<el-dialog
|
||||
title="转账"
|
||||
:title="$t('pages.userSalaryDiamond.action.transfer')"
|
||||
:visible="transferVisible"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -177,35 +177,35 @@
|
||||
style="width: 400px; margin-left:50px;"
|
||||
>
|
||||
|
||||
<el-form-item prop="acceptUserId" label="收款人">
|
||||
<account-input ref="transferAccountInput" v-model="transferFormData.acceptUserId" :sys-origin="transferFormData.sysOrigin" placeholder="用户账号" />
|
||||
<el-form-item prop="acceptUserId" :label="$t('pages.userSalaryDiamond.form.payee')">
|
||||
<account-input ref="transferAccountInput" v-model="transferFormData.acceptUserId" :sys-origin="transferFormData.sysOrigin" :placeholder="$t('pages.userSalaryDiamond.placeholder.userAccount')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="金额" prop="quantity">
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.amount')" prop="quantity">
|
||||
<el-input
|
||||
v-model.trim="transferFormData.quantity"
|
||||
:placeholder="'请输入转账工资钻石'"
|
||||
:placeholder="$t('pages.userSalaryDiamond.placeholder.transferSalaryDiamond')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对内备注" prop="remark">
|
||||
<el-form-item :label="$t('pages.userSalaryDiamond.form.innerRemark')" prop="remark">
|
||||
<el-input
|
||||
v-model.trim="transferFormData.remark"
|
||||
placeholder="请输入对内备注"
|
||||
:placeholder="$t('pages.userSalaryDiamond.placeholder.innerRemark')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="hideTransferBox()">
|
||||
取消
|
||||
{{ $t('pages.userSalaryDiamond.action.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-loading="listLoading"
|
||||
type="primary"
|
||||
@click="transferSubmit()"
|
||||
>
|
||||
提交
|
||||
{{ $t('pages.userSalaryDiamond.action.submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@ -225,7 +225,7 @@ export default {
|
||||
components: { Pagination, FormEdit, RunningWater },
|
||||
data() {
|
||||
const commonRules = [
|
||||
{ required: true, message: '必填字段', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('pages.userSalaryDiamond.validation.required'), trigger: 'blur' }
|
||||
]
|
||||
return {
|
||||
runningWaterVisible: false,
|
||||
@ -260,13 +260,13 @@ export default {
|
||||
},
|
||||
formRules: {
|
||||
userId: commonRules,
|
||||
quantity: { required: true, message: '必填字段不可为空', trigger: 'blur' },
|
||||
quantity: { required: true, message: this.$t('pages.userSalaryDiamond.validation.requiredNotEmpty'), trigger: 'blur' },
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
transferFormRules: {
|
||||
userId: commonRules,
|
||||
acceptUserId: commonRules,
|
||||
quantity: { required: true, message: '必填字段不可为空', trigger: 'blur' },
|
||||
quantity: { required: true, message: this.$t('pages.userSalaryDiamond.validation.requiredNotEmpty'), trigger: 'blur' },
|
||||
sysOrigin: commonRules
|
||||
},
|
||||
listLoading: false,
|
||||
@ -400,7 +400,7 @@ export default {
|
||||
transferSubmit() {
|
||||
const that = this
|
||||
if(that.transferFormData.quantity <= 0) {
|
||||
that.$message.error('金额不能小于0')
|
||||
that.$message.error(this.$t('pages.userSalaryDiamond.message.amountGreaterThanZero'))
|
||||
return
|
||||
}
|
||||
that.$refs.form.validate(valid => {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="用户银行账户流水"
|
||||
:title="$t('pages.userSalaryDiamond.dialog.runningWaterTitle')"
|
||||
:visible="true"
|
||||
:modal-append-to-body="true"
|
||||
:append-to-body="true"
|
||||
@ -19,12 +19,12 @@
|
||||
highlight-current-row
|
||||
max-height="350px"
|
||||
>
|
||||
<el-table-column prop="sysOrigin" label="系统" align="center">
|
||||
<el-table-column prop="sysOrigin" :label="$t('pages.userSalaryDiamond.table.system')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<sys-origin-icon :icon="scope.row.sysOrigin" :desc="scope.row.sysOrigin" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.user')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div><user-table-exhibit :size="scope.row.userProfile ? 'mini' : 'small'" :user-profile="scope.row.userProfile" :query-details="true" /></div>
|
||||
<div v-if="scope.row.tmpUserProfile" class="attached">
|
||||
@ -32,8 +32,12 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="typeName" label="类型" align="center" width="80" />
|
||||
<el-table-column label="数量" align="center" min-width="80">
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.type')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
{{ getTypeLabel(scope.row.type) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.amount')" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<span v-if="scope.row.type === 0" class="font-danger">+{{ scope.row.amount }}</span>
|
||||
@ -41,14 +45,14 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="balance" label="余额" align="center" />
|
||||
<el-table-column label="事件" align="center">
|
||||
<el-table-column prop="balance" :label="$t('pages.userSalaryDiamond.table.balance')" align="center" />
|
||||
<el-table-column :label="$t('pages.userSalaryDiamond.table.event')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ getEventDesc(scope.row.salaryEvent) }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" min-width="200" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="160">
|
||||
<el-table-column prop="remark" :label="$t('pages.userSalaryDiamond.table.remark')" align="center" min-width="200" />
|
||||
<el-table-column prop="createTime" :label="$t('pages.userSalaryDiamond.table.createTime')" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.createTime | dateFormat }}
|
||||
</template>
|
||||
@ -124,23 +128,31 @@ export default {
|
||||
},
|
||||
getTransferDescriptionName(event) {
|
||||
if (event === 'TRANSFER') {
|
||||
return '收款人'
|
||||
return this.$t('pages.userSalaryDiamond.tag.payee')
|
||||
}
|
||||
if (event === 'RECEIVE_TRANSFER') {
|
||||
return '付款人'
|
||||
return this.$t('pages.userSalaryDiamond.tag.payer')
|
||||
}
|
||||
return ''
|
||||
},
|
||||
getTypeLabel(type) {
|
||||
return this.$t(type === 0 ? 'pages.userSalaryDiamond.type.income' : 'pages.userSalaryDiamond.type.expense')
|
||||
},
|
||||
getEventLabel(event) {
|
||||
const key = `pages.userSalaryDiamond.events.${event}`
|
||||
const translated = this.$t(key)
|
||||
return translated === key ? event : translated
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
},
|
||||
getEventDesc(_key) {
|
||||
const that = this
|
||||
const result = that.userSalaryDiamondWaterEvent.filter(_event => _event.value === _key)
|
||||
if (!result) {
|
||||
if (!result || result.length === 0) {
|
||||
return _key
|
||||
}
|
||||
return result[0].name
|
||||
return that.getEventLabel(result[0].value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user