Browse Source

feat: 完善多语言支持,添加国际化文本及提示信息

milestone-20251209-多语言二期^2
zhangrenyuan 1 month ago
parent
commit
90d3e5c350
  1. 8
      src/components/locales/lang/zh-CN.js
  2. 51
      src/views/history/newHistory.vue
  3. 45
      src/views/history/oldHistory.vue
  4. 42
      src/views/usergold/bean/userbean.vue

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

@ -6,6 +6,7 @@ export default {
common: {
// 筛选
name: '姓名',
pleaseInputName: '请输入姓名',
jwcode: '精网号',
jwcodePlaceholder: '请输入精网号',
activityName: '活动名称',
@ -91,6 +92,8 @@ export default {
freeGoldBean: '免费金豆数:',
rechargeGoldBean: '充值金豆数:',
totalRechargeSGD: '合计新币数:',
nowGoldBeanNum: '现有金豆数:',
consumeGoldBean: '消费金豆总数:',
// 对话框标题
will: '将要',
deleteRecord: '删除该翻译记录!',
@ -137,6 +140,7 @@ export default {
checkRemark: '请输入备注',
checkFormInfo: '请检查并完善表单信息',
checkArticleIdFormat: '请检查文章ID格式',
checkNameOrJwcode: '请输入姓名或精网号',
// 校验提示(error)
noEmptyJwcode: '精网号不能为空',
noEmptySumGold: '消耗金币总数不能为空',
@ -240,6 +244,7 @@ export default {
remark: '备注',
orderStatus: '订单状态',
submitter: '提交人',
operator: '操作人',
rechargeTime: '充值时间',
consumeTime: '消耗时间',
refundTime: '退款时间',
@ -265,6 +270,9 @@ export default {
articleVideoTitle: '文章/视频标题',
author: '作者',
payTime: '付费时间',
currentGoldBean: '现有金豆',
historyConsumption: '历史消费',
customerName: '客户姓名',
},
// 通用导出字段组
common_export: {

51
src/views/history/newHistory.vue

@ -1,38 +1,38 @@
<template>
<el-card class="card1">
<el-text size="large">姓名</el-text>
<el-input v-model="searchObj.name" placeholder="请输入姓名" style="width: 12vw;margin-right:1vw"
<el-text size="large">{{ t('common.name') }}</el-text>
<el-input v-model="searchObj.name" :placeholder="t('common.pleaseInputName')" style="width: 12vw;margin-right:1vw"
clearable></el-input>
<el-text size="large">精网号</el-text>
<el-input v-model="searchObj.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw"
<el-text size="large">{{ t('common.jwcode') }}</el-text>
<el-input v-model="searchObj.jwcode" :placeholder="t('common.jwcodePlaceholder')" style="width: 12vw;margin-right:1vw"
clearable></el-input>
<el-text size="large" style="width: 80px">更新时间</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" :default-time="defaultTime" range-separator=""
start-placeholder="开始时间" end-placeholder="结束时间" style="width: 25vw;margin-right:1vw" />
<el-text size="large" style="width: 80px">{{ t('common.updateTime') }}</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" :default-time="defaultTime" :range-separator="t('common.to')"
:start-placeholder="t('common.startTime')" :end-placeholder="t('common.endTime')" style="width: 25vw;margin-right:1vw" />
<el-button type="primary" @click="get">查询</el-button>
<el-button type="success" @click="resetSearch">重置</el-button>
<el-button type="primary" @click="get">{{ t('common.search') }}</el-button>
<el-button type="success" @click="resetSearch">{{ t('common.reset') }}</el-button>
</el-card>
<el-card class="card2" style="margin-top:10px" v-show="tableData.length > 0">
<el-table :data="tableData" style="width: 82vw;height:74vh">
<el-table-column type="index" label="序号" width="100" header-align="center" align="center">
<el-table-column type="index" :label="t('common_list.id')" width="100" header-align="center" align="center">
<template #default="scope">
{{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
</template>
</el-table-column>
<el-table-column prop="name" label="客户姓名" width="180" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="180" header-align="center" align="center" />
<el-table-column prop="num" label="数量" width="180" header-align="center" align="center" />
<el-table-column prop="updateType" show-overflow-tooltip label="更新类型" width="180" align="center" />
<el-table-column prop="freeGold" label="免费金币" width="180" align="center" />
<el-table-column prop="permanentGold" label="永久金币" width="180" align="center" />
<el-table-column prop="taskGold" label="任务金币" width="180" align="center" />
<el-table-column prop="operator" label="操作人" width="180" />
<el-table-column prop="createTime" label="更新时间" width="200" header-align="center" align="center" />
<el-table-column prop="remark" label="备注" show-overflow-tooltip width="200" align="center" />
<el-table-column prop="name" :label="t('common_list.customerName')" width="180" show-overflow-tooltip />
<el-table-column prop="jwcode" :label="t('common_list.jwcode')" width="180" header-align="center" align="center" />
<el-table-column prop="num" :label="t('common_list.number')" width="180" header-align="center" align="center" />
<el-table-column prop="updateType" show-overflow-tooltip :label="t('common_list.type')" width="180" align="center" />
<el-table-column prop="freeGold" :label="t('common_list.freeGold')" width="180" align="center" />
<el-table-column prop="permanentGold" :label="t('common_list.permanentGold')" width="180" align="center" />
<el-table-column prop="taskGold" :label="t('common_list.taskGold')" width="180" align="center" />
<el-table-column prop="operator" :label="t('common_list.operator')" width="180" />
<el-table-column prop="createTime" :label="t('common_list.updateTime')" width="200" header-align="center" align="center" />
<el-table-column prop="remark" :label="t('common_list.remark')" show-overflow-tooltip width="200" align="center" />
</el-table>
<el-pagination background style="margin-top:20px" :current-page="pagination.pageNum"
:page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
@ -51,6 +51,11 @@ import dayjs from 'dayjs'
const adminStore = useAdminStore()
const { adminData, menuTree } = storeToRefs(adminStore)
import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
@ -71,7 +76,7 @@ const pagination = ref({
//
const get = async function () {
if(!canLook.value){
ElMessage.error('无此权限')
ElMessage.error(t('elmessage.noPermission'))
return
}
try {
@ -89,13 +94,13 @@ const get = async function () {
}
})
if (res.code == 200) {
ElMessage.success('查询成功')
ElMessage.success(t('elmessage.searchSuccess'))
tableData.value = res.data.list
console.log('tableData.value', res.data.list)
pagination.value.total = res.data.total
}
} else {
ElMessage.error('请输入姓名或精网号')
ElMessage.error(t('elmessage.checkNameOrJwcode'))
return
}
} catch (e) {

45
src/views/history/oldHistory.vue

@ -1,35 +1,35 @@
<template>
<el-card class="card1">
<el-text size="large">姓名</el-text>
<el-input v-model="searchObj.name" placeholder="请输入姓名" style="width: 12vw;margin-right:1vw"
<el-text size="large">{{ t('common.name') }}</el-text>
<el-input v-model="searchObj.name" :placeholder="t('common.pleaseInputName')" style="width: 12vw;margin-right:1vw"
clearable></el-input>
<el-text size="large">精网号</el-text>
<el-input v-model="searchObj.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw"
<el-text size="large">{{ t('common.jwcode') }}</el-text>
<el-input v-model="searchObj.jwcode" :placeholder="t('common.jwcodePlaceholder')" style="width: 12vw;margin-right:1vw"
clearable></el-input>
<el-text size="large" style="width: 80px">更新时间</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" :default-time="defaultTime" range-separator=""
start-placeholder="开始时间" end-placeholder="结束时间" style="width: 25vw;margin-right:1vw" />
<el-text size="large" style="width: 80px">{{ t('common.updateTime') }}</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" :default-time="defaultTime" :range-separator="t('common.to')"
:start-placeholder="t('common.startTime')" :end-placeholder="t('common.endTime')" style="width: 25vw;margin-right:1vw" />
<el-button type="primary" @click="getOld">查询</el-button>
<el-button type="success" @click="resetSearch">重置</el-button>
<el-button type="primary" @click="getOld">{{ t('common.search') }}</el-button>
<el-button type="success" @click="resetSearch">{{ t('common.reset') }}</el-button>
</el-card>
<el-card class="card2" style="margin-top:10px" v-show="tableData.length > 0">
<el-table :data="tableData" style="width: 82vw;height:74vh">
<el-table-column type="index" label="序号" width="100" header-align="center" align="center">
<el-table-column type="index" :label="t('common_list.id')" width="100" header-align="center" align="center">
<template #default="scope">
{{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
</template>
</el-table-column>
<el-table-column prop="name" label="客户姓名" width="180" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="180" header-align="center" align="center" />
<el-table-column prop="num" label="数量" width="180" header-align="center" align="center" />
<el-table-column prop="updateType" show-overflow-tooltip label="更新类型" width="180" align="center" />
<el-table-column prop="operator" label="操作人" width="180" />
<el-table-column prop="createTime" label="更新时间" width="200" header-align="center" align="center" />
<el-table-column prop="remark" label="备注" show-overflow-tooltip width="200" align="center" />
<el-table-column prop="name" :label="t('common_list.customerName')" width="180" show-overflow-tooltip />
<el-table-column prop="jwcode" :label="t('common_list.jwcode')" width="180" header-align="center" align="center" />
<el-table-column prop="num" :label="t('common_list.number')" width="180" header-align="center" align="center" />
<el-table-column prop="updateType" show-overflow-tooltip :label="t('common_list.type')" width="180" align="center" />
<el-table-column prop="operator" :label="t('common_list.operator')" width="180" />
<el-table-column prop="createTime" :label="t('common_list.updateTime')" width="200" header-align="center" align="center" />
<el-table-column prop="remark" :label="t('common_list.remark')" show-overflow-tooltip width="200" align="center" />
</el-table>
<el-pagination background style="margin-top:20px" :current-page="pagination.pageNum"
:page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
@ -48,6 +48,11 @@ import dayjs from 'dayjs'
const adminStore = useAdminStore()
const { adminData, menuTree } = storeToRefs(adminStore)
import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1, 23, 59, 59),
@ -68,7 +73,7 @@ const pagination = ref({
//
const getOld = async function () {
if(!canLook.value){
ElMessage.error('无此权限')
ElMessage.error(t('elmessage.noPermission'))
return
}
try {
@ -86,13 +91,13 @@ const getOld = async function () {
}
})
if (res.code == 200) {
ElMessage.success('查询成功')
ElMessage.success(t('elmessage.searchSuccess'))
tableData.value = res.data.list
console.log('tableData.value', res.data.list);
pagination.value.total = res.data.total
}
} else {
ElMessage.error('请输入姓名或精网号')
ElMessage.error(t('elmessage.checkNameOrJwcode'))
return
}
} catch (e) {

42
src/views/usergold/bean/userbean.vue

@ -1,40 +1,40 @@
<template>
<el-card class="card1" style="margin-bottom: 1vh;">
<el-text size="large">精网号</el-text>
<el-input v-model="searchObj.jwcode" placeholder="请输入精网号" style="width: 240px" clearable />
<el-text size="large" style="margin-left:20px">地区</el-text>
<el-select v-model="searchObj.dept" placeholder="请选择地区" style="width: 240px" clearable>
<el-text size="large">{{ t('common.jwcode') }}</el-text>
<el-input v-model="searchObj.jwcode" :placeholder="t('common.jwcodePlaceholder')" style="width: 240px" clearable />
<el-text size="large" style="margin-left:20px">{{ t('common.market') }}</el-text>
<el-select v-model="searchObj.dept" :placeholder="t('common.marketPlaceholder')" style="width: 240px" clearable>
<el-option v-for="item in marketOptions" :key="item" :label="item" :value="item" />
</el-select>
<div style="float: right;">
<el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset">重置</el-button>
<el-button type="primary" @click="search">{{ t('common.search') }}</el-button>
<el-button type="success" @click="reset">{{ t('common.reset') }}</el-button>
</div>
</el-card>
<el-card class="card2">
<div class="goldStatistics">
现有金豆数{{ format3(stats.sumBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ format3(stats.permanentBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ format3(stats.freeBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
消费金豆总数{{ format3(stats.consumeSum) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
{{ t('common.nowGoldBeanNum') }}{{ format3(stats.sumBean) }}{{ t('common.goldBean') }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ t('common.payGoldBean') }}{{ format3(stats.permanentBean) }}{{ t('common.goldBean') }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ t('common.freeGoldBean') }}{{ format3(stats.freeBean) }}{{ t('common.goldBean') }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ t('common.consumeGoldBean') }}{{ format3(stats.consumeSum) }}{{ t('common.goldBean') }}&nbsp;&nbsp;&nbsp;&nbsp;
</div>
<el-table :data="tableData" height="73vh" @sort-change="handleSortChange" :row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="80px" fixed="left">
<el-table-column type="index" :label="t('common_list.id')" width="80px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column label="姓名" style="width: 120px;" prop="name" show-overflow-tooltip />
<el-table-column label="精网号" style="width: 110px;" prop="jwcode" />
<el-table-column label="所属地区" style="width: 120px;" prop="dept" />
<el-table-column label="现有金豆" style="width: 120px;" prop="beanNum" sortable="custom" />
<el-table-column label="免费金豆" style="width: 120px;" prop="freeBean" sortable="custom" />
<el-table-column label="付费金豆" style="width: 120px;" prop="buyBean" sortable="custom" />
<el-table-column label="历史消费" style="width: 120px;" prop="totalCostBean" sortable="custom" />
<el-table-column :label="t('common_list.name')" style="width: 120px;" prop="name" show-overflow-tooltip />
<el-table-column :label="t('common_list.jwcode')" style="width: 110px;" prop="jwcode" />
<el-table-column :label="t('common_list.market')" style="width: 120px;" prop="dept" />
<el-table-column :label="t('common_list.currentGoldBean')" style="width: 120px;" prop="beanNum" sortable="custom" />
<el-table-column :label="t('common_list.freeBean')" style="width: 120px;" prop="freeBean" sortable="custom" />
<el-table-column :label="t('common_list.permanentBean')" style="width: 120px;" prop="buyBean" sortable="custom" />
<el-table-column :label="t('common_list.historyConsumption')" style="width: 120px;" prop="totalCostBean" sortable="custom" />
</el-table>
@ -56,7 +56,9 @@ const adminStore = useAdminStore();
const { adminData, menuTree, flag } = storeToRefs(adminStore);
import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
import { ElMessage } from 'element-plus';
//
import {useI18n} from 'vue-i18n'
const {t} = useI18n()
// flag
watch(flag, (newFlag, oldFlag) => {
// flag
@ -96,7 +98,7 @@ const get = async function () {
if (searchObj.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(searchObj.value.jwcode)) {
ElMessage.error('请检查精网号格式')
ElMessage.error(t('elmessage.checkJwcodeFormat'))
return
}
}

Loading…
Cancel
Save