Browse Source

feat: 修改汇率相关文本和修改按钮文本,添加国际化支持

milestone-20251209-多语言二期^2
zhangrenyuan 1 month ago
parent
commit
ecdebd5190
  1. 18
      src/components/locales/lang/zh-CN.js
  2. 2
      src/views/audit/bean/beanAudit.vue
  3. 83
      src/views/managerecharge/rate.vue

18
src/components/locales/lang/zh-CN.js

@ -47,6 +47,7 @@ export default {
cancel: '取消', cancel: '取消',
confirm: '确认', confirm: '确认',
submit: '提交', submit: '提交',
modify: '修改',
confirmRecharge: '确认充值', confirmRecharge: '确认充值',
// 按钮组-日期 // 按钮组-日期
today: '今', today: '今',
@ -154,6 +155,14 @@ export default {
getMarketListFailed: '获取市场列表失败,请稍后重试', getMarketListFailed: '获取市场列表失败,请稍后重试',
getChartDataFailed: '获取图表数据失败,请稍后重试', getChartDataFailed: '获取图表数据失败,请稍后重试',
renderChartFailed: '图表渲染失败,请稍后重试', renderChartFailed: '图表渲染失败,请稍后重试',
// 汇率相关
pleaseInputRate: '请输入汇率比例',
pleaseInputCorrectRateFormat: '请输入正确的汇率比例格式',
pleaseInputCorrectSymbol: '请输入正确的符号',
onlyOneDecimalPoint: '只能包含一个小数点',
noNegativeNumber: '不允许输入负数',
integerPartLimit: '整数部分最多允许六位',
decimalPartLimit: '小数部分最多允许七位',
}, },
// 通用列表字段组 // 通用列表字段组
@ -174,6 +183,7 @@ export default {
refundGoldCoin: '退款金币总数', refundGoldCoin: '退款金币总数',
activity: '活动名称', activity: '活动名称',
rateName: '货币名称', rateName: '货币名称',
num: '汇率',
rechargeAmount: '充值金额', rechargeAmount: '充值金额',
Gold: '金币数量', Gold: '金币数量',
freeGold6Month: '6月份到期免费金币', freeGold6Month: '6月份到期免费金币',
@ -192,6 +202,7 @@ export default {
consumeTime: '消耗时间', consumeTime: '消耗时间',
refundTime: '退款时间', refundTime: '退款时间',
updateTime: '更新时间', updateTime: '更新时间',
operation: '操作',
}, },
// 通用导出字段组 // 通用导出字段组
common_export: { common_export: {
@ -506,5 +517,12 @@ export default {
all: '总', all: '总',
marketTitle: '数据说明', marketTitle: '数据说明',
marketContent: '若统计周期跨越 40 天以上,将展示月份维度的数据。', marketContent: '若统计周期跨越 40 天以上,将展示月份维度的数据。',
},
// 汇率组
rate: {
modifyRate: '修改汇率',
prompt1: '提示:当前规则每',
prompt2: '可兑换 1 新币',
} }
} }

2
src/views/audit/bean/beanAudit.vue

@ -19,7 +19,7 @@
<div class="selectRow" style="width: 36vw;"> <div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large" v-show="checkTab === 'pending'">{{ $t('common.submitTime') }}</el-text> <el-text class="text" size="large" v-show="checkTab === 'pending'">{{ $t('common.submitTime') }}</el-text>
<el-text class="text" size="large" v-show="checkTab === 'reject' || checkTab === 'pass'">{{ $t('common.auditTime') }}</el-text> <el-text class="text" size="large" v-show="checkTab === 'reject' || checkTab === 'pass'">{{ $t('common.auditTime') }}</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" range-separator="" :start-placeholder="$t('common.startTime')"
<el-date-picker v-model="dateRange" type="datetimerange" :range-separator="t('common.to')" :start-placeholder="$t('common.startTime')"
:end-placeholder="$t('common.endTime')" class="selectContent" style="width: 25vw;margin-right:1vw" :end-placeholder="$t('common.endTime')" class="selectContent" style="width: 25vw;margin-right:1vw"
@change="handleDatePickerChange" :default-time="defaultTime" /> @change="handleDatePickerChange" :default-time="defaultTime" />
<!-- <el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>--> <!-- <el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>-->

83
src/views/managerecharge/rate.vue

@ -1,13 +1,16 @@
<script setup> <script setup>
import {onMounted, reactive, ref} from 'vue'
import {ElMessage, ElMessageBox} from 'element-plus'
import { onMounted, reactive, ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import request from '@/util/http' import request from '@/util/http'
import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from "pinia";
import {permissionMapping, hasMenuPermission} from "@/utils/menuTreePermission.js"
import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
import { permissionMapping, hasMenuPermission } from "@/utils/menuTreePermission.js"
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const adminStore = useAdminStore() const adminStore = useAdminStore()
const {adminData, menuTree} = storeToRefs(adminStore)
const { adminData, menuTree } = storeToRefs(adminStore)
const regeEdit = ref(false) const regeEdit = ref(false)
const editFormRef = ref(null) const editFormRef = ref(null)
const tableData = ref([]) const tableData = ref([])
@ -66,16 +69,16 @@ const rateNames = [
// //
const checkFreeGoldRadio = function (rule, value, callback) { const checkFreeGoldRadio = function (rule, value, callback) {
if (value == '0' || value == null || value == '') { if (value == '0' || value == null || value == '') {
callback(new Error('请输入汇率比'))
callback(new Error(t('elmessage.pleaseInputRate')))
} else if (value < 0 || isNaN(value)) { } else if (value < 0 || isNaN(value)) {
callback(new Error('请输入正确的格式'))
callback(new Error(t('elmessage.pleaseInputCorrectRateFormat')))
} else { } else {
callback() callback()
} }
} }
// //
const rules = reactive({ const rules = reactive({
num: [{validator: checkFreeGoldRadio, trigger: 'blur'}],
num: [{ validator: checkFreeGoldRadio, trigger: 'blur' }],
}) })
// //
const formSize = ref('default') const formSize = ref('default')
@ -94,7 +97,7 @@ const getAllRate = async function (val) {
total.value = result.data.total total.value = result.data.total
} catch (error) { } catch (error) {
console.log('请求失败', error); console.log('请求失败', error);
ElMessage.error('请求失败');
ElMessage.error(t('elmessage.requestFailed'));
} }
} }
const handlePageSizeChange = function (val) { const handlePageSizeChange = function (val) {
@ -110,7 +113,7 @@ const getEditData = async function (row) {
console.log('搜索参数', getObj.value) console.log('搜索参数', getObj.value)
const result = await request({ const result = await request({
url: '/rate/selectById', url: '/rate/selectById',
data: {id: row.id}
data: { id: row.id }
}) })
console.log('根据id查 请求成功', result) console.log('根据id查 请求成功', result)
rateEdit.value.id = row.id rateEdit.value.id = row.id
@ -135,7 +138,7 @@ const initPermissions = () => {
// //
const editRate = async function () { const editRate = async function () {
if (!hasrateEdit) { if (!hasrateEdit) {
ElMessage.error('暂无权限')
ElMessage.error(t('elmessage.noPermission'))
return return
} }
// //
@ -200,18 +203,18 @@ function formatDate(value) {
function handleInput(value) { function handleInput(value) {
// 使 // 使
if (value.includes('。') || /[^\d.]/g.test(value)) { if (value.includes('。') || /[^\d.]/g.test(value)) {
ElMessage.warning('请输入正确的符号');
ElMessage.warning(t('elmessage.pleaseInputCorrectSymbol'));
// value = value.replace('', '.'); // value = value.replace('', '.');
} }
// //
const parts = value.split('.'); const parts = value.split('.');
if (parts.length > 2) { if (parts.length > 2) {
value = parts[0] + '.' + parts.slice(1).join(''); value = parts[0] + '.' + parts.slice(1).join('');
ElMessage.warning('只能包含一个小数点');
ElMessage.warning(t('elmessage.onlyOneDecimalPoint'));
} }
// //
if (value.startsWith('-')) { if (value.startsWith('-')) {
ElMessage.warning('不允许输入负数');
ElMessage.warning(t('elmessage.noNegativeNumber'));
value = value.substring(1); value = value.substring(1);
} }
// //
@ -220,13 +223,13 @@ function handleInput(value) {
// //
if (parts[0].length > 6) { if (parts[0].length > 6) {
parts[0] = parts[0].slice(0, 6) parts[0] = parts[0].slice(0, 6)
ElMessage.info('整数部分最多允许六位')
ElMessage.info(t('elmessage.integerPartLimit'))
} }
// //
if (parts[1].length > 7) { if (parts[1].length > 7) {
parts[1] = parts[1].slice(0, 7) parts[1] = parts[1].slice(0, 7)
value = parts[0] + '.' + parts[1] value = parts[0] + '.' + parts[1]
ElMessage.info('最多允许七位小数')
ElMessage.info(t('elmessage.decimalPartLimit'))
} else { } else {
value = parts[0] + '.' + parts[1] value = parts[0] + '.' + parts[1]
} }
@ -234,7 +237,7 @@ function handleInput(value) {
// //
if (value.length > 6) { if (value.length > 6) {
value = value.slice(0, 6) value = value.slice(0, 6)
ElMessage.info('整数部分最多允许六位')
ElMessage.info(t('elmessage.integerPartLimit'))
} }
} }
// 0 // 0
@ -258,15 +261,15 @@ onMounted(async function () {
<template> <template>
<el-card class="card2" style="width:81vw;height:92vh" v-if="hasrateShow"> <el-card class="card2" style="width:81vw;height:92vh" v-if="hasrateShow">
<el-table :data="tableData" v-if="(tableData.flag = 1)"> <el-table :data="tableData" v-if="(tableData.flag = 1)">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<el-table-column type="index" :label="t('common_list.id')" width="100px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="rateName" label="货币名称" :span="2"/>
<el-table-column prop="num" label="汇率" :span="2">
<el-table-column prop="rateName" :label="t('common_list.rateName')" :span="2" />
<el-table-column prop="num" :label="t('common_list.num')" :span="2">
<template #default="scope"> <template #default="scope">
<p> <p>
{{ scope.row.num }} 1 {{ scope.row.num }} 1
@ -274,17 +277,17 @@ onMounted(async function () {
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="updateTime" label="更新时间" :span="3">
<el-table-column prop="updateTime" :label="t('common_list.updateTime')" :span="3">
<template #default="scope"> <template #default="scope">
<span>{{ formatDate(scope.row.updateTime) }}</span> <span>{{ formatDate(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="hasrateEdit" label="操作" :span="3">
<el-table-column v-if="hasrateEdit" :label="t('common_list.operation')" :span="3">
<template #default="scope"> <template #default="scope">
<el-link :underline="false" class="edit-btn" @click="() => { <el-link :underline="false" class="edit-btn" @click="() => {
regeEdit = true regeEdit = true
getEditData(scope.row) getEditData(scope.row)
}">编辑
}">{{ t('common.edit') }}
</el-link> </el-link>
</template> </template>
</el-table-column> </el-table-column>
@ -299,34 +302,34 @@ onMounted(async function () {
</el-card> </el-card>
<!-- 这是编辑弹窗 --> <!-- 这是编辑弹窗 -->
<el-dialog align-center v-model="regeEdit" title="修改汇率" width="30vw" :close-on-click-modal="false"
<el-dialog align-center v-model="regeEdit" :title="t('rate.modifyRate')" width="30vw" :close-on-click-modal="false"
@close="handleEditDialogClose"> @close="handleEditDialogClose">
<el-form ref="editFormRef" :model="rateEdit" :rules="rules" label-width="auto" class="edit-form" :size="formSize" <el-form ref="editFormRef" :model="rateEdit" :rules="rules" label-width="auto" class="edit-form" :size="formSize"
status-icon> status-icon>
<el-form-item prop="rateName" label="货币名称:">
<el-input v-model="rateEdit.rateName" disabled style="width: 10vw"/>
<el-form-item prop="rateName" :label="t('common_list.rateName')">
<el-input v-model="rateEdit.rateName" disabled style="width: 10vw" />
</el-form-item> </el-form-item>
<el-form-item prop="num" label="汇率:">
<el-input v-model="rateEdit.num" @update:modelValue="handleInput" style="width: 120px"/>
<el-form-item prop="num" :label="t('common_list.num')">
<el-input v-model="rateEdit.num" @update:modelValue="handleInput" style="width: 120px" />
<span class="unit">:1</span> <span class="unit">:1</span>
<span class="rate-tip">
(提示当前规则每
<span>{{ rateEdit.num }}</span>
<span>{{ rateEdit.rateName }}</span>可兑换 1 新币)
</span>
</el-form-item> </el-form-item>
<div class="rate-tip">
{{ t('rate.prompt1') }}
<span>{{ rateEdit.num }}</span>
<span>{{ rateEdit.rateName }}</span>{{ t('rate.prompt2') }}
</div>
</el-form> </el-form>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="edit">修改</el-button>
<el-button @click="cancelEdit">取消</el-button>
<el-button type="primary" @click="edit">{{ t('common.modify') }}</el-button>
<el-button @click="cancelEdit">{{ t('common.cancel') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<style scoped> <style scoped>
.card1 { .card1 {
background: #F3FAFE; background: #F3FAFE;
} }
@ -334,7 +337,7 @@ onMounted(async function () {
:deep(.el-table__header-wrapper), :deep(.el-table__header-wrapper),
:deep(.el-table__body-wrapper), :deep(.el-table__body-wrapper),
:deep(.el-table__cell), :deep(.el-table__cell),
/* 表格 */
/* 表格 */
:deep(.el-table__body td) { :deep(.el-table__body td) {
background-color: #F3FAFE !important; background-color: #F3FAFE !important;
} }
@ -371,6 +374,7 @@ onMounted(async function () {
.rate-tip { .rate-tip {
hyphens: auto; hyphens: auto;
margin-left: 1.4vw;
} }
/**表单的卡片样式**/ /**表单的卡片样式**/
@ -383,7 +387,7 @@ onMounted(async function () {
:deep(.el-table__header-wrapper), :deep(.el-table__header-wrapper),
:deep(.el-table__body-wrapper), :deep(.el-table__body-wrapper),
:deep(.el-table__cell), :deep(.el-table__cell),
/* 表格 */
/* 表格 */
:deep(.el-table__body td) { :deep(.el-table__body td) {
background-color: #F3FAFE !important; background-color: #F3FAFE !important;
} }
@ -397,5 +401,4 @@ onMounted(async function () {
:deep(.el-table__row:hover > .el-table__cell) { :deep(.el-table__row:hover > .el-table__cell) {
background-color: #E5EBFE !important; background-color: #E5EBFE !important;
} }
</style> </style>
Loading…
Cancel
Save