所有表单-创建中英双语对照

This commit is contained in:
2026-03-17 12:08:09 +08:00
parent c790f74905
commit 216d3ac8fe
23 changed files with 537 additions and 184 deletions

View File

@@ -39,7 +39,7 @@
</li>
<li class="btn-item" @click="clearCache()">
<ArtSvgIcon icon="ri:eraser-line" />
<span>清除缓存</span>
<span>{{ $t('topBar.user.clearCache') }}</span>
</li>
<li class="btn-item" @click="lockScreen()">
<ArtSvgIcon icon="ri:lock-line" />

View File

@@ -22,6 +22,7 @@
"userCenter": "User center",
"docs": "Document",
"github": "Github",
"clearCache": "clear Cache",
"lockScreen": "Lock screen",
"logout": "Log out"
},
@@ -38,6 +39,14 @@
"confirm": "Confirm",
"logOutTips": "Do you want to log out?"
},
"form": {
"placeholderInput": "Please enter",
"placeholderSelect": "Please select",
"labelRemark": "Remark",
"labelStatus": "Status",
"labelName": "Name",
"close": "Close"
},
"search": {
"placeholder": "Search page",
"historyTitle": "Search history",

View File

@@ -1,4 +1,27 @@
{
"form": {
"dialogTitleAdd": "Add Dice Config",
"dialogTitleEdit": "Edit Dice Config",
"group": "Group",
"placeholderGroup": "Please enter group",
"title": "Title",
"placeholderTitleZh": "Please enter title (ZH)",
"titleEn": "Title (EN)",
"placeholderTitleEn": "Please enter title (EN)",
"configName": "Config Name",
"placeholderConfigName": "Please enter config name",
"value": "Value",
"placeholderValueZh": "Please enter value (ZH)",
"valueEn": "Value (EN)",
"placeholderValueEn": "Please enter value (EN)",
"ruleGroupRequired": "Group is required",
"ruleTitleRequired": "Title is required",
"ruleTitleEnMax": "Title (EN) max 255 characters",
"ruleConfigNameRequired": "Config name is required",
"ruleValueRequired": "Value is required",
"saveSuccess": "Added",
"updateSuccess": "Updated"
},
"search": {
"group": "Group",
"title": "Title",

View File

@@ -1,5 +1,33 @@
{
"name": "Name",
"form": {
"dialogTitleAdd": "Add Lottery Pool Config",
"dialogTitleEdit": "Edit Lottery Pool Config",
"placeholderName": "Please enter name",
"placeholderRemark": "Please enter remark",
"poolType": "Pool Type",
"placeholderPoolType": "Please select pool type",
"poolTypeNormal": "Normal",
"poolTypeKill": "Kill",
"poolTypeT1": "T1 High",
"safetyLine": "Safety Line",
"t1Weight": "T1 Pool Weight (%)",
"t2Weight": "T2 Pool Weight (%)",
"t3Weight": "T3 Pool Weight (%)",
"t4Weight": "T4 Pool Weight (%)",
"t5Weight": "T5 Pool Weight (%)",
"weightsSumHint": "Total pool weights: ",
"weightsSumUnit": "% / 100% (must equal 100%)",
"weightsSumUnitCurrent": "% / 100%",
"currentPoolTitle": "Current Lottery Pool",
"loading": "Loading...",
"poolName": "Pool Name",
"playerProfit": "Player Total Profit (profit_amount):",
"realtime": "Live",
"profitCalcHint": "Sum of (win amount including BIGWIN minus 100 ticket cost) per round; refreshes every 2s while open.",
"tierRuleTitle": "Tier Rule",
"tierRuleContent": "When player profit in this pool is below safety line, use player T*_weight; when above or equal, use pool T*_weight (kill)."
},
"toolbar": {
"viewCurrentPool": "View Current Pool"
},

View File

@@ -1,4 +1,38 @@
{
"form": {
"dialogTitleAdd": "Add Play Record",
"dialogTitleEdit": "Edit Play Record",
"player": "Player",
"placeholderPlayer": "Select player (by username)",
"lotteryPoolConfig": "Lottery Pool Config",
"placeholderLotteryPool": "Select lottery pool config",
"drawType": "Draw Type",
"paid": "Paid",
"free": "Free",
"isBigWin": "Big Win",
"noBigWin": "No",
"bigWin": "Big Win",
"winCoin": "Win Coin",
"placeholderWinCoin": "= Super + Reward",
"superWinCoin": "Super Win Coin",
"placeholderSuperWinCoin": "On BIGWIN",
"rewardWinCoin": "Reward Win Coin",
"placeholderRewardWinCoin": "Dice reward",
"direction": "Direction",
"placeholderDirection": "Select direction",
"clockwise": "Clockwise",
"anticlockwise": "Anticlockwise",
"startIndex": "Start Index",
"placeholderStartIndex": "Start index",
"targetIndex": "Target Index",
"placeholderTargetIndex": "Target index",
"rollArray": "Roll Array",
"rollArrayHint": "5 numbers, each 16",
"rollNumber": "Roll Sum",
"placeholderRollNumber": "Sum of 5 dice (530)",
"rewardConfig": "Reward Config",
"placeholderRewardConfig": "Select reward config (by UI text)"
},
"search": {
"player": "Player",
"lotteryPoolConfig": "Lottery Pool Config",

View File

@@ -1,5 +1,50 @@
{
"name": "Name",
"form": {
"dialogTitleAdd": "Add Dice Player",
"dialogTitleEdit": "Edit Dice Player",
"username": "Username",
"placeholderUsername": "Please enter username",
"nickname": "Nickname",
"placeholderNickname": "Please enter nickname",
"phone": "Phone",
"placeholderPhone": "Please enter phone",
"password": "Password",
"placeholderPasswordEdit": "Leave blank to keep unchanged",
"status": "Status",
"adminId": "Admin",
"placeholderAdmin": "Select admin (optional)",
"coin": "Coin",
"placeholderCoinAdd": "Default 0 on create, read-only",
"lotteryPoolConfig": "Lottery Pool Config",
"placeholderLotteryPool": "Leave empty for custom weights below, or select pool",
"currentConfig": "Current Config",
"configLabelName": "Name",
"configLabelType": "Type",
"configLabelWeights": "T1T5 Weights",
"configLabelRemark": "Remark",
"t1Weight": "T1 Pool Weight (%)",
"t2Weight": "T2 Pool Weight (%)",
"t3Weight": "T3 Pool Weight (%)",
"t4Weight": "T4 Pool Weight (%)",
"t5Weight": "T5 Pool Weight (%)",
"weightsSumHint": "Total pool weights: ",
"weightsSumUnit": "% / 100% (must equal 100%)",
"walletTitle": "Player Wallet Operation",
"walletPlayer": "Player",
"walletBalance": "Balance",
"operationType": "Operation Type",
"typeAdd": "Add",
"typeSub": "Deduct",
"coinChange": "Coin Change",
"placeholderCoinChange": "Positive; deduct cannot exceed balance",
"placeholderRemarkOptional": "Optional",
"ruleSelectType": "Please select operation type",
"ruleEnterCoin": "Please enter coin change",
"ruleCoinPositive": "Coin change must be greater than 0",
"ruleDeductExceed": "Deduct cannot exceed current balance",
"operateSuccess": "Success"
},
"search": {
"username": "Username",
"nickname": "Nickname",

View File

@@ -1,4 +1,19 @@
{
"form": {
"dialogTitleAdd": "Add Ticket Record",
"dialogTitleEdit": "Edit Ticket Record",
"player": "Player",
"placeholderPlayer": "Select player (by username)",
"useCoins": "Use Coins",
"placeholderUseCoins": "Please enter use coins",
"paidDrawCount": "Paid Draw Count",
"placeholderPaidDrawCount": "Please enter paid draw count",
"freeDrawCount": "Free Draw Count",
"placeholderFreeDrawCount": "Please enter free draw count",
"totalDrawCount": "Total Draw Count",
"placeholderTotalDrawCount": "Auto sum",
"placeholderRemark": "Remark (required)"
},
"search": {
"player": "Player",
"useCoins": "Use Coins",

View File

@@ -1,4 +1,24 @@
{
"form": {
"dialogTitleAdd": "Add Wallet Record",
"dialogTitleEdit": "Edit Wallet Record",
"user": "User",
"placeholderUser": "Select user (by username)",
"type": "Type",
"placeholderType": "Please select type",
"typeRecharge": "Recharge",
"typeWithdraw": "Withdraw",
"typeBuyTicket": "Buy Tickets",
"typeAdminAdd": "Admin Add",
"typeAdminSub": "Admin Deduct",
"coinChange": "Coin Change",
"placeholderCoinChange": "Positive add, negative subtract",
"walletBefore": "Before",
"placeholderWalletBefore": "Auto from selected user",
"walletAfter": "After",
"placeholderWalletAfter": "Auto calculated",
"placeholderRemark": "Optional"
},
"search": {
"type": "Type",
"user": "User",

View File

@@ -22,6 +22,7 @@
"userCenter": "个人中心",
"docs": "使用文档",
"github": "Github",
"clearCache": "清除缓存",
"lockScreen": "锁定屏幕",
"logout": "退出登录"
},
@@ -38,6 +39,14 @@
"confirm": "确定",
"logOutTips": "您是否要退出登录?"
},
"form": {
"placeholderInput": "请输入",
"placeholderSelect": "请选择",
"labelRemark": "备注",
"labelStatus": "状态",
"labelName": "名称",
"close": "关闭"
},
"search": {
"placeholder": "搜索页面",
"historyTitle": "搜索历史",

View File

@@ -1,4 +1,27 @@
{
"form": {
"dialogTitleAdd": "新增摇色子配置",
"dialogTitleEdit": "编辑摇色子配置",
"group": "分组",
"placeholderGroup": "请输入分组",
"title": "标题",
"placeholderTitleZh": "请输入标题(中文)",
"titleEn": "标题(英文)",
"placeholderTitleEn": "请输入标题(英文)",
"configName": "配置名称",
"placeholderConfigName": "请输入配置名称",
"value": "值",
"placeholderValueZh": "请输入值(中文)",
"valueEn": "值(英文)",
"placeholderValueEn": "请输入值(英文)",
"ruleGroupRequired": "分组必需填写",
"ruleTitleRequired": "标题必需填写",
"ruleTitleEnMax": "英文标题长度需小于 255 字符",
"ruleConfigNameRequired": "配置名称必需填写",
"ruleValueRequired": "值必需填写",
"saveSuccess": "新增成功",
"updateSuccess": "修改成功"
},
"search": {
"group": "分组",
"title": "标题",

View File

@@ -1,5 +1,33 @@
{
"name": "名称",
"form": {
"dialogTitleAdd": "新增色子奖池配置",
"dialogTitleEdit": "编辑色子奖池配置",
"placeholderName": "请输入名称",
"placeholderRemark": "请输入备注",
"poolType": "奖池类型",
"placeholderPoolType": "请选择奖池类型",
"poolTypeNormal": "正常",
"poolTypeKill": "强制杀猪",
"poolTypeT1": "T1高倍率",
"safetyLine": "安全线",
"t1Weight": "T1池权重(%)",
"t2Weight": "T2池权重(%)",
"t3Weight": "T3池权重(%)",
"t4Weight": "T4池权重(%)",
"t5Weight": "T5池权重(%)",
"weightsSumHint": "五个池权重总和:",
"weightsSumUnit": "% / 100%必须为100%",
"weightsSumUnitCurrent": "% / 100%须为100%",
"currentPoolTitle": "当前彩金池",
"loading": "加载中...",
"poolName": "池子名称",
"playerProfit": "玩家累计盈利profit_amount",
"realtime": "实时",
"profitCalcHint": "计算方式:每局按“当前中奖金额(含超级大奖 BIGWIN减去抽奖券费用 100”累加弹窗打开期间每 2 秒自动刷新",
"tierRuleTitle": "抽奖档位规则",
"tierRuleContent": "当玩家在当前彩金池的累计盈利 低于安全线 时,按 玩家 的 T*_weight 权重抽取档位;当累计盈利 高于或等于安全线 时,按 当前彩金池 的 T*_weight 权重抽取档位(杀分)。"
},
"toolbar": {
"viewCurrentPool": "查看当前彩金池"
},

View File

@@ -1,4 +1,38 @@
{
"form": {
"dialogTitleAdd": "新增玩家抽奖记录",
"dialogTitleEdit": "编辑玩家抽奖记录",
"player": "玩家",
"placeholderPlayer": "请选择玩家(显示用户名)",
"lotteryPoolConfig": "彩金池配置",
"placeholderLotteryPool": "请选择彩金池配置",
"drawType": "抽奖类型",
"paid": "付费",
"free": "赠送",
"isBigWin": "是否中大奖",
"noBigWin": "无",
"bigWin": "中大奖",
"winCoin": "赢取平台币",
"placeholderWinCoin": "= 中大奖 + 摇色子中奖",
"superWinCoin": "中大奖平台币",
"placeholderSuperWinCoin": "豹子时发放",
"rewardWinCoin": "摇色子中奖平台币",
"placeholderRewardWinCoin": "摇色子中奖",
"direction": "方向",
"placeholderDirection": "请选择方向",
"clockwise": "顺时针",
"anticlockwise": "逆时针",
"startIndex": "起始索引",
"placeholderStartIndex": "起始索引",
"targetIndex": "终点索引",
"placeholderTargetIndex": "终点索引",
"rollArray": "摇取点数",
"rollArrayHint": "固定 5 个数,每个 16",
"rollNumber": "摇取点数和",
"placeholderRollNumber": "5 个色子点数之和530",
"rewardConfig": "奖励配置",
"placeholderRewardConfig": "请选择奖励配置(显示前端文本)"
},
"search": {
"player": "玩家",
"lotteryPoolConfig": "彩金池配置",

View File

@@ -1,5 +1,50 @@
{
"name": "名称",
"form": {
"dialogTitleAdd": "新增大富翁-玩家",
"dialogTitleEdit": "编辑大富翁-玩家",
"username": "用户名",
"placeholderUsername": "请输入用户名",
"nickname": "昵称",
"placeholderNickname": "请输入昵称",
"phone": "手机号",
"placeholderPhone": "请输入手机号",
"password": "密码",
"placeholderPasswordEdit": "编辑留空则不修改",
"status": "状态",
"adminId": "所属管理员",
"placeholderAdmin": "选择后台管理员(可选)",
"coin": "平台币",
"placeholderCoinAdd": "创建时默认0不可改",
"lotteryPoolConfig": "彩金池配置",
"placeholderLotteryPool": "留空则使用下方自定义权重,或选择彩金池",
"currentConfig": "当前配置",
"configLabelName": "名称",
"configLabelType": "类型",
"configLabelWeights": "T1T5 权重",
"configLabelRemark": "备注",
"t1Weight": "T1池权重(%)",
"t2Weight": "T2池权重(%)",
"t3Weight": "T3池权重(%)",
"t4Weight": "T4池权重(%)",
"t5Weight": "T5池权重(%)",
"weightsSumHint": "五个池权重总和:",
"weightsSumUnit": "% / 100%必须为100%",
"walletTitle": "玩家钱包操作",
"walletPlayer": "玩家",
"walletBalance": "钱包余额",
"operationType": "操作类型",
"typeAdd": "加点",
"typeSub": "扣点",
"coinChange": "平台币变动",
"placeholderCoinChange": "正数,扣点时不能超过余额",
"placeholderRemarkOptional": "选填,不填则按类型自动填写",
"ruleSelectType": "请选择操作类型",
"ruleEnterCoin": "请输入平台币变动",
"ruleCoinPositive": "平台币变动必须大于 0",
"ruleDeductExceed": "扣点不能超过当前余额",
"operateSuccess": "操作成功"
},
"search": {
"username": "用户名",
"nickname": "昵称",

View File

@@ -1,4 +1,19 @@
{
"form": {
"dialogTitleAdd": "新增抽奖券获取记录",
"dialogTitleEdit": "编辑抽奖券获取记录",
"player": "玩家",
"placeholderPlayer": "请选择玩家(显示用户名)",
"useCoins": "消耗硬币",
"placeholderUseCoins": "请输入消耗硬币",
"paidDrawCount": "购买抽奖次数",
"placeholderPaidDrawCount": "请输入购买抽奖次数",
"freeDrawCount": "赠送抽奖次数",
"placeholderFreeDrawCount": "请输入赠送抽奖次数",
"totalDrawCount": "总抽奖次数",
"placeholderTotalDrawCount": "自动求和",
"placeholderRemark": "请输入备注(必填)"
},
"search": {
"player": "玩家",
"useCoins": "消耗硬币",

View File

@@ -1,4 +1,24 @@
{
"form": {
"dialogTitleAdd": "新增玩家钱包流水",
"dialogTitleEdit": "编辑玩家钱包流水",
"user": "用户",
"placeholderUser": "请选择用户(显示用户名)",
"type": "类型",
"placeholderType": "请选择类型",
"typeRecharge": "充值",
"typeWithdraw": "提现",
"typeBuyTicket": "购买抽奖次数",
"typeAdminAdd": "管理员加点",
"typeAdminSub": "管理员扣点",
"coinChange": "平台币变化",
"placeholderCoinChange": "正数增加、负数减少",
"walletBefore": "钱包操作前",
"placeholderWalletBefore": "选择用户后自动带出当前平台币",
"walletAfter": "钱包操作后",
"placeholderWalletAfter": "根据平台币变化自动计算",
"placeholderRemark": "选填"
},
"search": {
"type": "类型",
"user": "用户",

View File

@@ -1,43 +1,43 @@
<template>
<el-dialog
v-model="visible"
:title="dialogType === 'add' ? '新增摇色子配置' : '编辑摇色子配置'"
:title="dialogType === 'add' ? $t('page.form.dialogTitleAdd') : $t('page.form.dialogTitleEdit')"
width="600px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="分组" prop="group">
<el-form-item :label="$t('page.form.group')" prop="group">
<el-input
v-model="formData.group"
placeholder="请输入分组"
:placeholder="$t('page.form.placeholderGroup')"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入标题(中文)" />
<el-form-item :label="$t('page.form.title')" prop="title">
<el-input v-model="formData.title" :placeholder="$t('page.form.placeholderTitleZh')" />
</el-form-item>
<el-form-item label="标题(英文)" prop="title_en">
<el-input v-model="formData.title_en" placeholder="请输入标题(英文)" />
<el-form-item :label="$t('page.form.titleEn')" prop="title_en">
<el-input v-model="formData.title_en" :placeholder="$t('page.form.placeholderTitleEn')" />
</el-form-item>
<el-form-item label="配置名称" prop="name">
<el-form-item :label="$t('page.form.configName')" prop="name">
<el-input
v-model="formData.name"
placeholder="请输入配置名称"
:placeholder="$t('page.form.placeholderConfigName')"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="" prop="value">
<el-input v-model="formData.value" type="textarea" :rows="5" placeholder="请输入值(中文)" />
<el-form-item :label="$t('page.form.value')" prop="value">
<el-input v-model="formData.value" type="textarea" :rows="5" :placeholder="$t('page.form.placeholderValueZh')" />
</el-form-item>
<el-form-item label="值(英文)" prop="value_en">
<el-input v-model="formData.value_en" type="textarea" :rows="5" placeholder="请输入值(英文)" />
<el-form-item :label="$t('page.form.valueEn')" prop="value_en">
<el-input v-model="formData.value_en" type="textarea" :rows="5" :placeholder="$t('page.form.placeholderValueEn')" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="handleSubmit">提交</el-button>
<el-button @click="handleClose">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" @click="handleSubmit">{{ $t('table.form.submit') }}</el-button>
</template>
</el-dialog>
</template>
@@ -46,6 +46,9 @@
import api from '../../../api/config/index'
import { ElMessage } from 'element-plus'
import type { FormInstance, FormRules } from 'element-plus'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
interface Props {
modelValue: boolean
@@ -79,13 +82,13 @@
/**
* 表单验证规则
*/
const rules = reactive<FormRules>({
group: [{ required: true, message: '分组必需填写', trigger: 'blur' }],
title: [{ required: true, message: '标题必需填写', trigger: 'blur' }],
title_en: [{ max: 255, message: '英文标题长度需小于 255 字符', trigger: 'blur' }],
name: [{ required: true, message: '配置名称必需填写', trigger: 'blur' }],
value: [{ required: true, message: '值必需填写', trigger: 'blur' }]
})
const rules = computed<FormRules>(() => ({
group: [{ required: true, message: t('page.form.ruleGroupRequired'), trigger: 'blur' }],
title: [{ required: true, message: t('page.form.ruleTitleRequired'), trigger: 'blur' }],
title_en: [{ max: 255, message: t('page.form.ruleTitleEnMax'), trigger: 'blur' }],
name: [{ required: true, message: t('page.form.ruleConfigNameRequired'), trigger: 'blur' }],
value: [{ required: true, message: t('page.form.ruleValueRequired'), trigger: 'blur' }]
}))
/**
* 初始数据
@@ -160,10 +163,10 @@
await formRef.value.validate()
if (props.dialogType === 'add') {
await api.save(formData)
ElMessage.success('新增成功')
ElMessage.success(t('page.form.saveSuccess'))
} else {
await api.update(formData)
ElMessage.success('修改成功')
ElMessage.success(t('page.form.updateSuccess'))
}
emit('success')
handleClose()

View File

@@ -1,41 +1,40 @@
<template>
<el-dialog
v-model="visible"
title="当前彩金池"
:title="$t('page.form.currentPoolTitle')"
width="560px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<div v-if="loading && !pool" class="flex justify-center py-8">加载中...</div>
<div v-if="loading && !pool" class="flex justify-center py-8">{{ $t('page.form.loading') }}</div>
<template v-else-if="pool">
<div class="pool-info mb-4">
<div class="flex items-center gap-2 mb-3">
<span class="text-gray-500">池子名称</span>
<span class="text-gray-500">{{ $t('page.form.poolName') }}</span>
<span>{{ pool.name }}</span>
</div>
<div class="profit-row mb-3">
<div class="flex items-center gap-2">
<span class="text-gray-500">玩家累计盈利profit_amount</span>
<span class="text-gray-500">{{ $t('page.form.playerProfit') }}</span>
<span class="font-mono text-lg" :class="profitAmountClass">{{
displayProfitAmount
}}</span>
<span class="realtime-badge">实时</span>
<span class="realtime-badge">{{ $t('page.form.realtime') }}</span>
</div>
<div class="profit-calc-hint">
计算方式每局按当前中奖金额含超级大奖 BIGWIN减去抽奖券费用 100累加弹窗打开期间每 2 秒自动刷新
{{ $t('page.form.profitCalcHint') }}
</div>
</div>
<div class="tip-block">
<div class="tip-title">抽奖档位规则</div>
<div class="tip-title">{{ $t('page.form.tierRuleTitle') }}</div>
<div class="tip-content">
当玩家在当前彩金池的累计盈利 <strong>低于安全线</strong> <strong>玩家</strong> T*_weight 权重抽取档位
当累计盈利 <strong>高于或等于安全线</strong> <strong>当前彩金池</strong> T*_weight 权重抽取档位杀分
{{ $t('page.form.tierRuleContent') }}
</div>
</div>
</div>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="安全线" prop="safety_line">
<el-form-item :label="$t('page.form.safetyLine')" prop="safety_line">
<el-input-number
v-model="formData.safety_line"
:min="0"
@@ -43,27 +42,27 @@
style="width: 100%"
/>
</el-form-item>
<el-form-item label="T1池权重(%)" prop="t1_weight">
<el-form-item :label="$t('page.form.t1Weight')" prop="t1_weight">
<el-slider v-model="formData.t1_weight" :min="0" :max="100" :step="1" show-input />
</el-form-item>
<el-form-item label="T2池权重(%)" prop="t2_weight">
<el-form-item :label="$t('page.form.t2Weight')" prop="t2_weight">
<el-slider v-model="formData.t2_weight" :min="0" :max="100" :step="1" show-input />
</el-form-item>
<el-form-item label="T3池权重(%)" prop="t3_weight">
<el-form-item :label="$t('page.form.t3Weight')" prop="t3_weight">
<el-slider v-model="formData.t3_weight" :min="0" :max="100" :step="1" show-input />
</el-form-item>
<el-form-item label="T4池权重(%)" prop="t4_weight">
<el-form-item :label="$t('page.form.t4Weight')" prop="t4_weight">
<el-slider v-model="formData.t4_weight" :min="0" :max="100" :step="1" show-input />
</el-form-item>
<el-form-item label="T5池权重(%)" prop="t5_weight">
<el-form-item :label="$t('page.form.t5Weight')" prop="t5_weight">
<el-slider v-model="formData.t5_weight" :min="0" :max="100" :step="1" show-input />
</el-form-item>
<el-form-item>
<div class="text-gray-500 text-sm">
五个池权重总和<span :class="weightsSum !== 100 ? 'text-red-500' : ''">{{
{{ $t('page.form.weightsSumHint') }}<span :class="weightsSum !== 100 ? 'text-red-500' : ''">{{
weightsSum
}}</span
>% / 100%100%
>{{ $t('page.form.weightsSumUnitCurrent') }}
</div>
</el-form-item>
</el-form>

View File

@@ -1,44 +1,44 @@
<template>
<el-dialog
v-model="visible"
:title="dialogType === 'add' ? '新增色子奖池配置' : '编辑色子奖池配置'"
:title="dialogType === 'add' ? $t('page.form.dialogTitleAdd') : $t('page.form.dialogTitleEdit')"
width="600px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="名称" prop="name">
<el-form-item :label="$t('form.labelName')" prop="name">
<el-input
v-model="formData.name"
placeholder="请输入名称"
:placeholder="$t('page.form.placeholderName')"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="$t('form.labelRemark')" prop="remark">
<el-input
v-model="formData.remark"
type="textarea"
:rows="3"
placeholder="请输入备注"
:placeholder="$t('page.form.placeholderRemark')"
maxlength="500"
show-word-limit
/>
</el-form-item>
<el-form-item label="奖池类型" prop="type">
<el-form-item :label="$t('page.form.poolType')" prop="type">
<el-select
v-model="formData.type"
placeholder="请选择奖池类型"
:placeholder="$t('page.form.placeholderPoolType')"
clearable
style="width: 100%"
:disabled="dialogType === 'edit'"
>
<el-option label="正常" :value="0" />
<el-option label="强制杀猪" :value="1" />
<el-option label="T1高倍率" :value="2" />
<el-option :label="$t('page.form.poolTypeNormal')" :value="0" />
<el-option :label="$t('page.form.poolTypeKill')" :value="1" />
<el-option :label="$t('page.form.poolTypeT1')" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="安全线" prop="safety_line">
<el-form-item :label="$t('page.form.safetyLine')" prop="safety_line">
<el-input-number
v-model="formData.safety_line"
:min="0"
@@ -46,33 +46,33 @@
style="width: 100%"
/>
</el-form-item>
<el-form-item label="T1池权重(%)" prop="t1_weight">
<el-form-item :label="$t('page.form.t1Weight')" prop="t1_weight">
<el-slider v-model="formData.t1_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item>
<el-form-item label="T2池权重(%)" prop="t2_weight">
<el-form-item :label="$t('page.form.t2Weight')" prop="t2_weight">
<el-slider v-model="formData.t2_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item>
<el-form-item label="T3池权重(%)" prop="t3_weight">
<el-form-item :label="$t('page.form.t3Weight')" prop="t3_weight">
<el-slider v-model="formData.t3_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item>
<el-form-item label="T4池权重(%)" prop="t4_weight">
<el-form-item :label="$t('page.form.t4Weight')" prop="t4_weight">
<el-slider v-model="formData.t4_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item>
<el-form-item label="T5池权重(%)" prop="t5_weight">
<el-form-item :label="$t('page.form.t5Weight')" prop="t5_weight">
<el-slider v-model="formData.t5_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item>
<el-form-item>
<div class="text-gray-500 text-sm">
五个池权重总和<span :class="Math.abs(weightsSum - 100) > 0.01 ? 'text-red-500' : ''">{{
{{ $t('page.form.weightsSumHint') }}<span :class="Math.abs(weightsSum - 100) > 0.01 ? 'text-red-500' : ''">{{
weightsSum
}}</span
>% / 100%100%
>{{ $t('page.form.weightsSumUnit') }}
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="handleSubmit">提交</el-button>
<el-button @click="handleClose">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" @click="handleSubmit">{{ $t('table.form.submit') }}</el-button>
</template>
</el-dialog>
</template>

View File

@@ -1,17 +1,17 @@
<template>
<el-dialog
v-model="visible"
:title="dialogType === 'add' ? '新增玩家抽奖记录' : '编辑玩家抽奖记录'"
:title="dialogType === 'add' ? $t('page.form.dialogTitleAdd') : $t('page.form.dialogTitleEdit')"
width="600px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="玩家" prop="player_id">
<el-form-item :label="$t('page.form.player')" prop="player_id">
<el-select
v-model="formData.player_id"
placeholder="请选择玩家(显示用户名)"
:placeholder="$t('page.form.placeholderPlayer')"
clearable
filterable
style="width: 100%"
@@ -25,10 +25,10 @@
/>
</el-select>
</el-form-item>
<el-form-item label="彩金池配置" prop="lottery_config_id">
<el-form-item :label="$t('page.form.lotteryPoolConfig')" prop="lottery_config_id">
<el-select
v-model="formData.lottery_config_id"
placeholder="请选择彩金池配置"
:placeholder="$t('page.form.placeholderLotteryPool')"
clearable
filterable
style="width: 100%"
@@ -42,90 +42,90 @@
/>
</el-select>
</el-form-item>
<el-form-item label="抽奖类型" prop="lottery_type">
<el-form-item :label="$t('page.form.drawType')" prop="lottery_type">
<el-select
v-model="formData.lottery_type"
placeholder="请选择"
:placeholder="$t('form.placeholderSelect')"
clearable
style="width: 100%"
:disabled="dialogType === 'edit'"
>
<el-option label="付费" :value="0" />
<el-option label="赠送" :value="1" />
<el-option :label="$t('page.form.paid')" :value="0" />
<el-option :label="$t('page.form.free')" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="是否中大奖" prop="is_win">
<el-form-item :label="$t('page.form.isBigWin')" prop="is_win">
<el-select
v-model="formData.is_win"
placeholder="请选择"
:placeholder="$t('form.placeholderSelect')"
clearable
style="width: 100%"
:disabled="dialogType === 'edit'"
>
<el-option label="" :value="0" />
<el-option label="中大奖" :value="1" />
<el-option :label="$t('page.form.noBigWin')" :value="0" />
<el-option :label="$t('page.form.bigWin')" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="赢取平台币" prop="win_coin">
<el-form-item :label="$t('page.form.winCoin')" prop="win_coin">
<el-input-number
v-model="formData.win_coin"
placeholder="= 中大奖 + 摇色子中奖"
:placeholder="$t('page.form.placeholderWinCoin')"
:precision="2"
style="width: 100%"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="中大奖平台币" prop="super_win_coin">
<el-form-item :label="$t('page.form.superWinCoin')" prop="super_win_coin">
<el-input-number
v-model="formData.super_win_coin"
placeholder="豹子时发放"
:placeholder="$t('page.form.placeholderSuperWinCoin')"
:precision="2"
:min="0"
style="width: 100%"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="摇色子中奖平台币" prop="reward_win_coin">
<el-form-item :label="$t('page.form.rewardWinCoin')" prop="reward_win_coin">
<el-input-number
v-model="formData.reward_win_coin"
placeholder="摇色子中奖"
:placeholder="$t('page.form.placeholderRewardWinCoin')"
:precision="2"
:min="0"
style="width: 100%"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="方向" prop="direction">
<el-form-item :label="$t('page.form.direction')" prop="direction">
<el-select
v-model="formData.direction"
placeholder="请选择方向"
:placeholder="$t('page.form.placeholderDirection')"
clearable
style="width: 100%"
:disabled="dialogType === 'edit'"
>
<el-option label="顺时针" :value="0" />
<el-option label="逆时针" :value="1" />
<el-option :label="$t('page.form.clockwise')" :value="0" />
<el-option :label="$t('page.form.anticlockwise')" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="起始索引" prop="start_index">
<el-form-item :label="$t('page.form.startIndex')" prop="start_index">
<el-input-number
v-model="formData.start_index"
placeholder="起始索引"
:placeholder="$t('page.form.placeholderStartIndex')"
:min="0"
style="width: 100%"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="终点索引" prop="target_index">
<el-form-item :label="$t('page.form.targetIndex')" prop="target_index">
<el-input-number
v-model="formData.target_index"
placeholder="终点索引"
:placeholder="$t('page.form.placeholderTargetIndex')"
:min="0"
style="width: 100%"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="摇取点数" prop="rollArrayItems">
<el-form-item :label="$t('page.form.rollArray')" prop="rollArrayItems">
<div class="roll-array-wrap">
<el-input-number
v-for="(_, i) in 5"
@@ -140,12 +140,12 @@
:disabled="dialogType === 'edit'"
/>
</div>
<div class="roll-array-hint">固定 5 个数每个 16</div>
<div class="roll-array-hint">{{ $t('page.form.rollArrayHint') }}</div>
</el-form-item>
<el-form-item label="摇取点数和" prop="roll_number">
<el-form-item :label="$t('page.form.rollNumber')" prop="roll_number">
<el-input-number
v-model="formData.roll_number"
placeholder="5 个色子点数之和530"
:placeholder="$t('page.form.placeholderRollNumber')"
:min="5"
:max="30"
:precision="0"
@@ -153,10 +153,10 @@
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="奖励配置" prop="reward_config_id">
<el-form-item :label="$t('page.form.rewardConfig')" prop="reward_config_id">
<el-select
v-model="formData.reward_config_id"
placeholder="请选择奖励配置(显示前端文本)"
:placeholder="$t('page.form.placeholderRewardConfig')"
clearable
filterable
style="width: 100%"
@@ -176,8 +176,8 @@
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">{{ dialogType === 'edit' ? '关闭' : '取消' }}</el-button>
<el-button v-if="dialogType === 'add'" type="primary" @click="handleSubmit">提交</el-button>
<el-button @click="handleClose">{{ dialogType === 'edit' ? $t('form.close') : $t('common.cancel') }}</el-button>
<el-button v-if="dialogType === 'add'" type="primary" @click="handleSubmit">{{ $t('table.form.submit') }}</el-button>
</template>
</el-dialog>
</template>

View File

@@ -1,17 +1,17 @@
<template>
<el-dialog
v-model="visible"
title="玩家钱包操作"
:title="$t('page.form.walletTitle')"
width="480px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="100px">
<el-form-item label="玩家">
<el-form-item :label="$t('page.form.walletPlayer')">
<el-input :model-value="player?.username" disabled placeholder="-" />
</el-form-item>
<el-form-item label="钱包余额">
<el-form-item :label="$t('page.form.walletBalance')">
<el-input-number
:model-value="walletBalance"
disabled
@@ -20,36 +20,36 @@
style="width: 100%"
/>
</el-form-item>
<el-form-item label="操作类型" prop="type">
<el-select v-model="formData.type" placeholder="请选择" clearable style="width: 100%">
<el-option label="加点" :value="3" />
<el-option label="扣点" :value="4" />
<el-form-item :label="$t('page.form.operationType')" prop="type">
<el-select v-model="formData.type" :placeholder="$t('form.placeholderSelect')" clearable style="width: 100%">
<el-option :label="$t('page.form.typeAdd')" :value="3" />
<el-option :label="$t('page.form.typeSub')" :value="4" />
</el-select>
</el-form-item>
<el-form-item label="平台币变动" prop="coin">
<el-form-item :label="$t('page.form.coinChange')" prop="coin">
<el-input-number
v-model="formData.coin"
:min="0.01"
:precision="2"
placeholder="正数,扣点时不能超过余额"
:placeholder="$t('page.form.placeholderCoinChange')"
controls-position="right"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="$t('form.labelRemark')" prop="remark">
<el-input
v-model="formData.remark"
type="textarea"
:rows="2"
placeholder="选填,不填则按类型自动填写"
:placeholder="$t('page.form.placeholderRemarkOptional')"
maxlength="500"
show-word-limit
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" :loading="submitting" @click="handleSubmit">确定</el-button>
<el-button @click="handleClose">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" :loading="submitting" @click="handleSubmit">{{ $t('common.confirm') }}</el-button>
</template>
</el-dialog>
</template>
@@ -58,6 +58,9 @@
import walletRecordApi from '../../../api/player_wallet_record/index'
import { ElMessage } from 'element-plus'
import type { FormInstance, FormRules } from 'element-plus'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
interface PlayerRow {
id: number
@@ -95,19 +98,19 @@
return c != null ? Number(c) : 0
})
const rules = reactive<FormRules>({
type: [{ required: true, message: '请选择操作类型', trigger: 'change' }],
const rules = computed<FormRules>(() => ({
type: [{ required: true, message: t('page.form.ruleSelectType'), trigger: 'change' }],
coin: [
{ required: true, message: '请输入平台币变动', trigger: 'blur' },
{ required: true, message: t('page.form.ruleEnterCoin'), trigger: 'blur' },
{
validator: (_rule, value, callback) => {
const n = Number(value)
if (Number.isNaN(n) || n <= 0) {
callback(new Error('平台币变动必须大于 0'))
callback(new Error(t('page.form.ruleCoinPositive')))
return
}
if (formData.type === 4 && n > walletBalance.value) {
callback(new Error('扣点不能超过当前余额'))
callback(new Error(t('page.form.ruleDeductExceed')))
return
}
callback()
@@ -115,7 +118,7 @@
trigger: 'blur'
}
]
})
}))
const initialFormData = {
type: null as 3 | 4 | null,
@@ -146,11 +149,11 @@
await formRef.value.validate()
const coin = Number(formData.coin) || 0
if (coin <= 0) {
ElMessage.warning('平台币变动必须大于 0')
ElMessage.warning(t('page.form.ruleCoinPositive'))
return
}
if (formData.type === 4 && coin > walletBalance.value) {
ElMessage.warning('扣点不能超过当前余额')
ElMessage.warning(t('page.form.ruleDeductExceed'))
return
}
submitting.value = true
@@ -160,7 +163,7 @@
coin,
remark: formData.remark?.trim() || undefined
})
ElMessage.success('操作成功')
ElMessage.success(t('page.form.operateSuccess'))
emit('success')
handleClose()
} catch (e) {

View File

@@ -1,43 +1,43 @@
<template>
<el-dialog
v-model="visible"
:title="dialogType === 'add' ? '新增大富翁-玩家' : '编辑大富翁-玩家'"
:title="dialogType === 'add' ? $t('page.form.dialogTitleAdd') : $t('page.form.dialogTitleEdit')"
width="600px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="用户名" prop="username">
<el-input v-model="formData.username" placeholder="请输入用户名" />
<el-form-item :label="$t('page.form.username')" prop="username">
<el-input v-model="formData.username" :placeholder="$t('page.form.placeholderUsername')" />
</el-form-item>
<el-form-item label="昵称" prop="name">
<el-input v-model="formData.name" placeholder="请输入昵称" />
<el-form-item :label="$t('page.form.nickname')" prop="name">
<el-input v-model="formData.name" :placeholder="$t('page.form.placeholderNickname')" />
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-form-item :label="$t('page.form.phone')" prop="phone">
<el-input
v-model="formData.phone"
placeholder="请输入手机号"
:placeholder="$t('page.form.placeholderPhone')"
clearable
maxlength="20"
show-word-limit
/>
</el-form-item>
<el-form-item label="密码" prop="password" :rules="passwordRules">
<el-form-item :label="$t('page.form.password')" prop="password" :rules="passwordRules">
<el-input
v-model="formData.password"
type="password"
placeholder="编辑留空则不修改"
:placeholder="$t('page.form.placeholderPasswordEdit')"
show-password
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-form-item :label="$t('page.form.status')" prop="status">
<sa-switch v-model="formData.status" />
</el-form-item>
<el-form-item label="所属管理员" prop="admin_id">
<el-form-item :label="$t('page.form.adminId')" prop="admin_id">
<el-select
v-model="formData.admin_id"
placeholder="选择后台管理员(可选)"
:placeholder="$t('page.form.placeholderAdmin')"
clearable
filterable
style="width: 100%"
@@ -51,21 +51,21 @@
/>
</el-select>
</el-form-item>
<el-form-item label="平台币" prop="coin">
<el-form-item :label="$t('page.form.coin')" prop="coin">
<el-input-number
v-model="formData.coin"
:min="0"
:precision="2"
:disabled="dialogType === 'add'"
placeholder="创建时默认0不可改"
:placeholder="$t('page.form.placeholderCoinAdd')"
style="width: 100%"
/>
</el-form-item>
<!-- lottery_config_id = 自定义权重否则 = DiceLotteryConfig.id选择后该配置的五个 weight 会写入下方 player.*_weight -->
<el-form-item label="彩金池配置" prop="lottery_config_id">
<el-form-item :label="$t('page.form.lotteryPoolConfig')" prop="lottery_config_id">
<el-select
v-model="formData.lottery_config_id"
placeholder="留空则使用下方自定义权重,或选择彩金池"
:placeholder="$t('page.form.placeholderLotteryPool')"
clearable
filterable
style="width: 100%"
@@ -81,28 +81,28 @@
</el-select>
</el-form-item>
<!-- 当前选中的 DiceLotteryConfig 数据展示 -->
<el-form-item v-if="currentLotteryConfig" label="当前配置" class="current-config-block">
<el-form-item v-if="currentLotteryConfig" :label="$t('page.form.currentConfig')" class="current-config-block">
<div class="current-lottery-config">
<div class="config-row">
<span class="config-label">名称</span>
<span class="config-label">{{ $t('page.form.configLabelName') }}</span>
<span>{{ currentLotteryConfig.name ?? '-' }}</span>
</div>
<div class="config-row">
<span class="config-label">类型</span>
<span class="config-label">{{ $t('page.form.configLabelType') }}</span>
<span>{{ lotteryConfigTypeText(currentLotteryConfig.type) }}</span>
</div>
<div class="config-row">
<span class="config-label">T1T5 权重</span>
<span class="config-label">{{ $t('page.form.configLabelWeights') }}</span>
<span>{{ currentLotteryConfigWeightsText }}</span>
</div>
<div v-if="currentLotteryConfig.remark" class="config-row">
<span class="config-label">备注</span>
<span class="config-label">{{ $t('page.form.configLabelRemark') }}</span>
<span>{{ currentLotteryConfig.remark }}</span>
</div>
</div>
</el-form-item>
<!-- lottery_config_id 为空时自定义权重可编辑有值时来自所选 DiceLotteryConfig仅展示不可编辑 -->
<el-form-item label="T1池权重(%)" prop="t1_weight">
<el-form-item :label="$t('page.form.t1Weight')" prop="t1_weight">
<el-slider
v-model="formData.t1_weight"
:min="0"
@@ -112,7 +112,7 @@
:disabled="!isLotteryConfigEmpty()"
/>
</el-form-item>
<el-form-item label="T2池权重(%)" prop="t2_weight">
<el-form-item :label="$t('page.form.t2Weight')" prop="t2_weight">
<el-slider
v-model="formData.t2_weight"
:min="0"
@@ -122,7 +122,7 @@
:disabled="!isLotteryConfigEmpty()"
/>
</el-form-item>
<el-form-item label="T3池权重(%)" prop="t3_weight">
<el-form-item :label="$t('page.form.t3Weight')" prop="t3_weight">
<el-slider
v-model="formData.t3_weight"
:min="0"
@@ -132,7 +132,7 @@
:disabled="!isLotteryConfigEmpty()"
/>
</el-form-item>
<el-form-item label="T4池权重(%)" prop="t4_weight">
<el-form-item :label="$t('page.form.t4Weight')" prop="t4_weight">
<el-slider
v-model="formData.t4_weight"
:min="0"
@@ -142,7 +142,7 @@
:disabled="!isLotteryConfigEmpty()"
/>
</el-form-item>
<el-form-item label="T5池权重(%)" prop="t5_weight">
<el-form-item :label="$t('page.form.t5Weight')" prop="t5_weight">
<el-slider
v-model="formData.t5_weight"
:min="0"
@@ -154,16 +154,16 @@
</el-form-item>
<el-form-item v-if="isLotteryConfigEmpty()">
<div class="text-gray-500 text-sm">
五个池权重总和<span :class="Math.abs(weightsSum - 100) > 0.01 ? 'text-red-500' : ''">{{
{{ $t('page.form.weightsSumHint') }}<span :class="Math.abs(weightsSum - 100) > 0.01 ? 'text-red-500' : ''">{{
weightsSum
}}</span
>% / 100%100%
>{{ $t('page.form.weightsSumUnit') }}
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="handleSubmit">提交</el-button>
<el-button @click="handleClose">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" @click="handleSubmit">{{ $t('table.form.submit') }}</el-button>
</template>
</el-dialog>
</template>

View File

@@ -1,17 +1,17 @@
<template>
<el-dialog
v-model="visible"
:title="dialogType === 'add' ? '新增抽奖券获取记录' : '编辑抽奖券获取记录'"
:title="dialogType === 'add' ? $t('page.form.dialogTitleAdd') : $t('page.form.dialogTitleEdit')"
width="600px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="玩家" prop="player_id">
<el-form-item :label="$t('page.form.player')" prop="player_id">
<el-select
v-model="formData.player_id"
placeholder="请选择玩家(显示用户名)"
:placeholder="$t('page.form.placeholderPlayer')"
clearable
filterable
style="width: 100%"
@@ -25,46 +25,46 @@
/>
</el-select>
</el-form-item>
<el-form-item label="消耗硬币" prop="use_coins">
<el-form-item :label="$t('page.form.useCoins')" prop="use_coins">
<el-input-number
v-model="formData.use_coins"
placeholder="请输入消耗硬币"
:placeholder="$t('page.form.placeholderUseCoins')"
:min="0"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="购买抽奖次数" prop="paid_ticket_count">
<el-form-item :label="$t('page.form.paidDrawCount')" prop="paid_ticket_count">
<el-input-number
v-model="formData.paid_ticket_count"
placeholder="请输入购买抽奖次数"
:placeholder="$t('page.form.placeholderPaidDrawCount')"
:min="0"
@change="onTicketCountChange"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="赠送抽奖次数" prop="free_ticket_count">
<el-form-item :label="$t('page.form.freeDrawCount')" prop="free_ticket_count">
<el-input-number
v-model="formData.free_ticket_count"
placeholder="请输入赠送抽奖次数"
:placeholder="$t('page.form.placeholderFreeDrawCount')"
:min="0"
@change="onTicketCountChange"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="总抽奖次数" prop="total_ticket_count">
<el-form-item :label="$t('page.form.totalDrawCount')" prop="total_ticket_count">
<el-input-number
:model-value="totalTicketCountComputed"
placeholder="自动求和"
:placeholder="$t('page.form.placeholderTotalDrawCount')"
:min="0"
disabled
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="$t('form.labelRemark')" prop="remark">
<el-input
v-model="formData.remark"
type="textarea"
:rows="3"
placeholder="请输入备注(必填)"
:placeholder="$t('page.form.placeholderRemark')"
maxlength="500"
show-word-limit
style="width: 100%"
@@ -73,8 +73,8 @@
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="handleSubmit">提交</el-button>
<el-button @click="handleClose">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" @click="handleSubmit">{{ $t('table.form.submit') }}</el-button>
</template>
</el-dialog>
</template>

View File

@@ -1,17 +1,17 @@
<template>
<el-dialog
v-model="visible"
:title="dialogType === 'add' ? '新增玩家钱包流水' : '编辑玩家钱包流水'"
:title="dialogType === 'add' ? $t('page.form.dialogTitleAdd') : $t('page.form.dialogTitleEdit')"
width="600px"
align-center
:close-on-click-modal="false"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="用户" prop="player_id">
<el-form-item :label="$t('page.form.user')" prop="player_id">
<el-select
v-model="formData.player_id"
placeholder="请选择用户(显示用户名)"
:placeholder="$t('page.form.placeholderUser')"
clearable
filterable
style="width: 100%"
@@ -26,55 +26,55 @@
/>
</el-select>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-form-item :label="$t('page.form.type')" prop="type">
<el-select
v-model="formData.type"
placeholder="请选择类型"
:placeholder="$t('page.form.placeholderType')"
clearable
style="width: 100%"
:disabled="dialogType === 'edit'"
>
<el-option label="充值" :value="0" />
<el-option label="提现" :value="1" />
<el-option label="购买抽奖次数" :value="2" />
<el-option label="管理员加点" :value="3" />
<el-option label="管理员扣点" :value="4" />
<el-option :label="$t('page.form.typeRecharge')" :value="0" />
<el-option :label="$t('page.form.typeWithdraw')" :value="1" />
<el-option :label="$t('page.form.typeBuyTicket')" :value="2" />
<el-option :label="$t('page.form.typeAdminAdd')" :value="3" />
<el-option :label="$t('page.form.typeAdminSub')" :value="4" />
</el-select>
</el-form-item>
<el-form-item label="平台币变化" prop="coin">
<el-form-item :label="$t('page.form.coinChange')" prop="coin">
<el-input-number
v-model="formData.coin"
placeholder="正数增加、负数减少"
:placeholder="$t('page.form.placeholderCoinChange')"
:precision="2"
style="width: 100%"
@change="onCoinChange"
:disabled="dialogType === 'edit'"
/>
</el-form-item>
<el-form-item label="钱包操作前" prop="wallet_before">
<el-form-item :label="$t('page.form.walletBefore')" prop="wallet_before">
<el-input-number
v-model="formData.wallet_before"
placeholder="选择用户后自动带出当前平台币"
:placeholder="$t('page.form.placeholderWalletBefore')"
:precision="2"
disabled
style="width: 100%"
/>
</el-form-item>
<el-form-item label="钱包操作后" prop="wallet_after">
<el-form-item :label="$t('page.form.walletAfter')" prop="wallet_after">
<el-input-number
v-model="formData.wallet_after"
placeholder="根据平台币变化自动计算"
:placeholder="$t('page.form.placeholderWalletAfter')"
:precision="2"
disabled
style="width: 100%"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="$t('form.labelRemark')" prop="remark">
<el-input
v-model="formData.remark"
type="textarea"
:rows="2"
placeholder="选填"
:placeholder="$t('page.form.placeholderRemark')"
maxlength="500"
show-word-limit
:disabled="dialogType === 'edit'"
@@ -82,8 +82,8 @@
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="handleSubmit">提交</el-button>
<el-button @click="handleClose">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" @click="handleSubmit">{{ $t('table.form.submit') }}</el-button>
</template>
</el-dialog>
</template>