- 添加收款
+ {{ t('common.addReceive') }}
@@ -429,6 +452,10 @@ import { isNumber } from 'lodash'
import { addFormRule } from './utils/recriveFormRules.js'
import { productList, MarketNameForId, CurrencyForId, marketList, statusList } from './utils/staticData.js'
+// 国际化
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+
// ===================== 基础状态管理(仅保留客服相关) =====================
const adminStore = useAdminStore();
const { menuTree } = storeToRefs(adminStore);
@@ -436,7 +463,7 @@ const adminData = ref({}) // 管理员信息
const tableData = ref([]) // 表格数据
const total = ref(0) // 总条数
const pageInfo = ref({ pageSize: 10, pageNum: 1 }) // 分页信息
-const numUnitList = ref(['年', '月'])
+const numUnitList = ref([t('cash.year'), t('cash.month')])
// 筛选地区树
const market = ref([])
@@ -522,12 +549,12 @@ const getlist = async () => {
if (searchData.value.jwcode) {
const isPositiveInteger = /^[1-9]\d*$/.test(searchData.value.jwcode);
if (!isPositiveInteger) {
- ElMessage.error('请输入正确的精网号')
+ ElMessage.error(t('elmessage.checkJwcodeFormat'))
return;
}
// 添加精网号长度验证
if (searchData.value.jwcode.length > 8) {
- ElMessage.error('精网号长度不能超过8位')
+ ElMessage.error(t('elmessage.limitJwcodeLength'))
return;
}
}
@@ -558,7 +585,7 @@ const getlist = async () => {
tableData.value = result.data.list
total.value = result.data.total
} else {
- ElMessage.error('数据异常')
+ ElMessage.error(t('elmessage.dataException'))
console.log(result.msg);
}
} catch (error) {
@@ -587,24 +614,37 @@ const uploadRef = ref(null) // 上传组件引用
// 产品选择变更:判断是否为金币充值
const ifGold = () => {
- if (addFormData.value.goodsName === '金币充值') {
+ if (addFormData.value.goodsName === t('cash.coinRecharge')) {
isGold.value = true
addFormData.value.goodNum = 0
} else {
isGold.value = false
- numUnitList.value = ['个', '年', '月']
- const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机构活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", 'HC信息费', 'HC信息费', 'AI机构探测神器', '超级机构探测神器']
+ numUnitList.value = [t('cash.unit'), t('cash.year'), t('cash.month')]
+ const selectItems = ref([
+ t('cash.aiService.aiTracking'),
+ t('cash.aiService.aiAttack'),
+ t('cash.aiService.aiFunds'),
+ t('cash.aiService.aiActivity'),
+ t('cash.aiService.superPerspective'),
+ t('cash.aiService.superAmbush'),
+ t('cash.aiService.superHunting'),
+ t('cash.aiService.superPulse'),
+ t('cash.aiService.superCompass'),
+ t('cash.aiService.hcInfoFee'),
+ t('cash.aiService.aiDetectionTool'),
+ t('cash.aiService.superDetectionTool')
+ ])
if (selectItems.includes(addFormData.value.goodsName)) {
if (addOrEdit.value == 1) {
addFormData.value.numUnit = ''
}
- numUnitList.value = ['年', '月']
- } else if (addFormData.value.goodsName == '静态信息费') {
- addFormData.value.numUnit = '年'
- numUnitList.value = ['年']
+ numUnitList.value = [t('cash.year'), t('cash.month')]
+ } else if (addFormData.value.goodsName == t('cash.staticInfoFee')) {
+ addFormData.value.numUnit = t('cash.year')
+ numUnitList.value = [t('cash.year')]
} else {
- addFormData.value.numUnit = '个'
- numUnitList.value = ['个']
+ addFormData.value.numUnit = t('cash.unit')
+ numUnitList.value = [t('cash.unit')]
}
}
}
@@ -612,18 +652,18 @@ const ifGold = () => {
// 支付方式变更:判断是否为默认归属平台
const isGroup = ref(false)
const ifGroup = () => {
- if (addFormData.value.payType === 'Stripe-链接收款' || addFormData.value.payType === 'PaymentAsia-链接收款') {
+ if (addFormData.value.payType === t('cash.payMethods.stripe') || addFormData.value.payType === t('cash.payMethods.paymentAsia')) {
isGroup.value = true
- addFormData.value.receivedMarket = '香港'
- } else if (addFormData.value.payType === 'Ipay88-链接收款') {
+ addFormData.value.receivedMarket = t('cash.markets.HongKong')
+ } else if (addFormData.value.payType === t('cash.payMethods.ipay88')) {
isGroup.value = true
- addFormData.value.receivedMarket = '马来西亚'
- } else if (addFormData.value.payType === 'E-Transfer') {
+ addFormData.value.receivedMarket = t('cash.markets.Malaysia')
+ } else if (addFormData.value.payType === t('cash.payMethods.transfer')) {
isGroup.value = true
- addFormData.value.receivedMarket = '加拿大'
- } else if (addFormData.value.payType === 'Grabpay' || addFormData.value.payType === 'Nets' || addFormData.value.payType === 'Paypal') {
+ addFormData.value.receivedMarket = t('cash.markets.Canada')
+ } else if (addFormData.value.payType === t('cash.payMethods.grabpay') || addFormData.value.payType === t('cash.payMethods.nets') || addFormData.value.payType === t('cash.payMethods.paypal')) {
isGroup.value = true
- addFormData.value.receivedMarket = '新加坡'
+ addFormData.value.receivedMarket = t('cash.markets.Singapore')
} else {
isGroup.value = false
}
@@ -637,12 +677,12 @@ const jwcodeSeachMarket = async () => {
data: addFormData.value.jwcode
})
if (result.code == 200) {
- ElMessage.success('客户信息查询成功')
+ ElMessage.success(t('elmessage.customerSuccess'))
addFormData.value.market = result.data.market
addFormData.value.marketName = result.data.marketName
addFormData.value.name = result.data.name
} else {
- ElMessage.error('客户不存在')
+ ElMessage.error(t('elmessage.customerNotExist'))
}
} catch (error) {
console.log(error);
@@ -678,7 +718,7 @@ const closeAddForm = () => {
}
const testGold = () => {
// 转换为数字(处理字符串类型的数字)
- if (addFormData.value.goodsName == '金币充值') {
+ if (addFormData.value.goodsName == t('cash.coinRecharge')) {
if (addFormData.value.permanentGold == null) {
addFormData.value.permanentGold = 0
}
@@ -690,13 +730,13 @@ const testGold = () => {
// 正则:仅允许0-999999的正整数(包括0)
const reg = /^[0-9]{1,6}$/;
if (!reg.test(permanentGold) || permanentGold < 0) {
- return { valid: false, message: '请检查永久金币格式' };
+ return { valid: false, message: t('elmessage.checkPermanentFormat') };
}
if (!reg.test(freeNum) || freeNum < 0) {
- return { valid: false, message: '请检查免费金币格式' };
+ return { valid: false, message: t('elmessage.checkFreeFormat') };
}
if (permanentGold == 0 && freeNum == 0) {
- return { valid: false, message: '永久金币或免费金币不能同为0' };
+ return { valid: false, message: t('elmessage.permanentAndFreeNoZero') };
}
}
return { valid: true };
@@ -712,18 +752,18 @@ const handleAddForm = async () => {
//单独校验产品数量
if (!isGold.value) {
if (!addFormData.value.goodNum) {
- ElMessage.error('请输入产品数量');
+ ElMessage.error(t('elmessage.checkProductNum'));
return;
}
const positiveIntReg = /^[1-9]\d*$/;
if (!positiveIntReg.test(addFormData.value.goodNum)) {
- ElMessage.error('产品数量必须为正整数');
+ ElMessage.error(t('elmessage.productNumError'));
return;
}
}
if (addFormData.value.numUnit == '') {
- ElMessage.error('请选择产品数量单位');
+ ElMessage.error(t('elmessage.checkNumUnit'));
return;
}
// 处理时间格式
@@ -746,14 +786,14 @@ const handleAddForm = async () => {
}
})
if (result.code == 200) {
- ElMessage.success('添加成功')
+ ElMessage.success(t('elmessage.addSuccess'))
getlist()
closeAddForm()
}
ifAddDone.value = false
} catch (error) {
console.log('新增报错:', error);
- ElMessage.error('请完善表单信息后提交');
+ ElMessage.error(t('elmessage.checkFormInfoSubmit'));
ifAddDone.value = false
}
}
@@ -774,17 +814,17 @@ const handleEditForm = async () => {
//单独校验产品数量
if (!isGold.value) {
if (!addFormData.value.goodNum) {
- ElMessage.error('请输入产品数量');
+ ElMessage.error(t('elmessage.checkProductNum'));
return;
}
const positiveIntReg = /^[1-9]\d*$/;
if (!positiveIntReg.test(addFormData.value.goodNum)) {
- ElMessage.error('产品数量必须为正整数');
+ ElMessage.error(t('elmessage.productNumError'));
return;
}
}
if (addFormData.value.numUnit == '') {
- ElMessage.error('请选择产品数量单位');
+ ElMessage.error(t('elmessage.checkNumUnit'));
return;
}
// 处理时间格式
@@ -806,7 +846,7 @@ const handleEditForm = async () => {
}
})
if (result.code == 200) {
- ElMessage.success('编辑成功')
+ ElMessage.success(t('elmessage.editSuccess'))
getlist()
closeAddForm()
}
@@ -818,9 +858,38 @@ const handleEditForm = async () => {
}
// 付款币种和支付方式选项(客服专用)
-const customOptions = ref(['美元(USD)', '港币(HKD)', '新币(SGD)', '马币(MYR)', '泰铢(THB)', '加币(CAD)', '越南盾(VDN)', '韩元(KRW)'])
-const paytypeOptions = ref(["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-链接收款", "Grabpay", "Nets", "E-Transfer", "Paypal", "银行转账", "刷卡", "现金", "支票"])
-const MoneyAddressOptions = ref(['马来西亚', '香港', '新加坡', '泰国', '越南HCM', '加拿大'])
+const customOptions = ref([
+ t('cash.currency.usd'), // 美元(USD)
+ t('cash.currency.hkd'), // 港币(HKD)
+ t('cash.currency.sgd'), // 新币(SGD)
+ t('cash.currency.myr'), // 马币(MYR)
+ t('cash.currency.thb'), // 泰铢(THB)
+ t('cash.currency.cad'), // 加币(CAD)
+ t('cash.currency.vnd'), // 越南盾(VDN)
+ t('cash.currency.krw') // 韩元(KRW)
+])
+// 支付类型选项 - 使用cash.payMethods下的键名
+const paytypeOptions = ref([
+ t('cash.payMethods.stripe'), // Stripe-链接收款
+ t('cash.payMethods.paymentAsia'), // PaymentAsia-链接收款
+ t('cash.payMethods.ipay88'), // Ipay88-链接收款
+ t('cash.payMethods.grabpay'), // Grabpay
+ t('cash.payMethods.nets'), // Nets
+ t('cash.payMethods.transfer'), // E-Transfer
+ t('cash.payMethods.paypal'), // PayPal
+ t('cash.payMethods.bankTransfer'),// 银行转账
+ t('cash.payMethods.card'), // 刷卡
+ t('cash.payMethods.cash'), // 现金
+ t('cash.payMethods.check') // 支票
+])
+const MoneyAddressOptions = ref([
+ t('cash.markets.Malaysia'), // 马来西亚
+ t('cash.markets.HongKong'), // 香港
+ t('cash.markets.Singapore'), // 新加坡
+ t('cash.markets.Thailand'), // 泰国
+ t('cash.markets.VietnamHCM'), // 越南HCM
+ t('cash.markets.Canada') // 加拿大
+])
const handleCurrencyChange = (option) => {
console.log('选中的币种:', option);
};
@@ -830,20 +899,20 @@ const handleImgSuccess = (response) => {
try {
addFormData.value.voucher = response.data.url
} catch (error) {
- ElMessage.error(response.msg || '图片上传失败')
+ ElMessage.error(response.msg || t('elmessage.uploadFailed'))
}
}
const handelImgErr = (err) => {
console.log(err);
addFormData.value.imageUrl = null
- ElMessage.error("图片上传失败")
+ ElMessage.error(t('elmessage.uploadFailed'))
}
const beforeUpload = (rawFile) => {
if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png') {
- ElMessage.error('图片必须是jpg或png类型!')
+ ElMessage.error(t('elmessage.photoFormatError'))
return false
} else if (rawFile.size / 1024 / 1024 > 2) {
- ElMessage.error('图片大小不能超过 2MB!')
+ ElMessage.error(t('elmessage.limitImageSize2MB'))
return false
}
return true
@@ -863,14 +932,14 @@ const customUpload = async (options) => {
})
if (response.code === 200 && response.data) {
handleImgSuccess(response, options.file)
- ElMessage.success('上传成功')
+ ElMessage.success(t('elmessage.uploadSuccess'))
} else {
options.onError(response)
- ElMessage.error(response.msg || '上传失败')
+ ElMessage.error(response.msg || t('elmessage.uploadFailed'))
}
} catch (error) {
console.error('上传错误:', error)
- ElMessage.error(`上传失败: ${error.msg || error.message || '网络异常'}`)
+ ElMessage.error(t('elmessage.uploadFailed') + `: ${error.msg || error.message || t('elmessage.inNetworkError')}`)
}
}
@@ -913,7 +982,7 @@ const isRefundGold = ref(false) // 退款产品是否为金币
// 判断退款产品类型
const ifRefundGold = () => {
- if (refundFormData.value.goodsName === '金币充值') {
+ if (refundFormData.value.goodsName === t('cash.coinRecharge')) {
isRefundGold.value = true
refundFormData.value.goodNum = 0
} else {
@@ -924,12 +993,12 @@ const ifRefundGold = () => {
// 打开撤回/退款确认弹窗
const openConfirm = (val, row) => {
if (val === 'refund') {
- textContent.value = '将要对该订单退款!'
+ textContent.value = t('common.willRefundOrder')
refundFormData.value = { ...row }
ifRefundGold()
refundConfirmDialog.value = true
} else if (val === 'recall') {
- textContent.value = '将要撤回该信息!'
+ textContent.value = t('common.willRecallOrder')
recallDialog.value = true
RecallNum.value = row.orderCode
}
@@ -950,7 +1019,7 @@ const handleRecall = async () => {
data: { orderCode: RecallNum.value }
})
if (result.code == 200) {
- ElMessage.success('撤回成功')
+ ElMessage.success(t('common.withdrawSuccess'))
getlist()
closeRecall()
}
@@ -985,20 +1054,20 @@ const submitRefund = async () => {
refundFormData.value.partRefundFree = refundFormData.value.freeGold
} else if (refundFormData.value.refundModel == 1) {
if (refundFormData.value.partRefundGold > refundFormData.value.permanentGold || refundFormData.value.partRefundFree > refundFormData.value.freeGold) {
- ElMessage.error('退款金额不能大于订单金额')
+ ElMessage.error(t('elmessage.limitRefundAmount'))
return
}
}
-
+
// 添加精网号验证
if (refundFormData.value.jwcode) {
const isPositiveInteger = /^[1-9]\d*$/.test(refundFormData.value.jwcode);
if (!isPositiveInteger) {
- ElMessage.error('请输入正确的精网号')
+ ElMessage.error(t('elmessage.checkJwcodeFormat'))
return;
}
if (refundFormData.value.jwcode.length > 8) {
- ElMessage.error('精网号长度不能超过8位')
+ ElMessage.error(t('elmessage.limitJwcodeLength'))
return;
}
}
@@ -1023,7 +1092,7 @@ const submitRefund = async () => {
}
})
if (result.code == 200) {
- ElMessage.success('新增退款成功')
+ ElMessage.success(t('elmessage.addRefundSuccess'))
getlist()
closeRefundForm()
} else {
@@ -1049,7 +1118,7 @@ const getActivitys = async () => {
if (result.code == 200) {
activityList.value = result.data
} else {
- ElMessage.error('活动列表获取失败')
+ ElMessage.error(t('elmessage.activityLoadFailed'))
}
} catch (error) {
console.log('活动列表请求失败', error)
@@ -1067,7 +1136,20 @@ const getAdminData = async () => {
}
// 支付方式列表(表格筛选用)
-const paytypeList = ["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-链接收款", "银行转账", "刷卡", "现金", "支票", "Grabpay", "Nets", "E-Transfer", "Paypal"]
+// 支付类型列表 - 使用cash.payMethods下的键名,保持与原始数组完全一致的顺序
+const paytypeList = ref([
+ t('cash.payMethods.stripe'), // Stripe-链接收款
+ t('cash.payMethods.paymentAsia'), // PaymentAsia-链接收款
+ t('cash.payMethods.ipay88'), // Ipay88-链接收款
+ t('cash.payMethods.bankTransfer'),// 银行转账
+ t('cash.payMethods.card'), // 刷卡
+ t('cash.payMethods.cash'), // 现金
+ t('cash.payMethods.check'), // 支票
+ t('cash.payMethods.grabpay'), // Grabpay
+ t('cash.payMethods.nets'), // Nets
+ t('cash.payMethods.transfer'), // E-Transfer
+ t('cash.payMethods.paypal') // PayPal
+])
const getMarket = async function () {
try {
const result = await API({
diff --git a/src/views/refund/gold/addCoinRefund.vue b/src/views/refund/gold/addCoinRefund.vue
index dadb9db..0abb825 100644
--- a/src/views/refund/gold/addCoinRefund.vue
+++ b/src/views/refund/gold/addCoinRefund.vue
@@ -64,7 +64,7 @@ const cancel = function () {
const getRefund = async function () {
if (!addRefund.value.jwcode) {
- ElMessage.error(t('elmessage.checkJwCode'))
+ ElMessage.error(t('elmessage.checkJwcode'))
return
}
addRefund.value.orderCode = ''
From 820d0093399b67a7a3acccd15f6661f4877f4330 Mon Sep 17 00:00:00 2001
From: zhangrenyuan <18990852002@163.com>
Date: Sat, 13 Dec 2025 11:53:59 +0800
Subject: [PATCH 09/12] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=AE=8C=E5=96=84?=
=?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E6=94=AF=E6=8C=81=EF=BC=8C=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E5=A4=9A=E4=B8=AA=E7=BB=84=E4=BB=B6=E7=9A=84=E5=9B=BD?=
=?UTF-8?q?=E9=99=85=E5=8C=96=E6=96=87=E6=9C=AC=E5=8F=8A=E8=A1=A8=E5=8D=95?=
=?UTF-8?q?=E9=AA=8C=E8=AF=81=E6=8F=90=E7=A4=BA=EF=BC=88=E6=94=B6=E6=AC=BE?=
=?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/MoneyManage/CurrencySelect.vue | 8 +-
src/components/MoneyManage/ProductSelect.vue | 135 ++++++++++++-----
src/components/locales/lang/en.js | 125 ++++++++++++++++
src/components/locales/lang/zh-CN.js | 72 +++++++++
.../moneyManage/receiveDetail/receiveHead.vue | 14 +-
.../receiveDetail/utils/recriveFormRules.js | 165 +++++++++++----------
6 files changed, 396 insertions(+), 123 deletions(-)
diff --git a/src/components/MoneyManage/CurrencySelect.vue b/src/components/MoneyManage/CurrencySelect.vue
index 0f4281f..100d304 100644
--- a/src/components/MoneyManage/CurrencySelect.vue
+++ b/src/components/MoneyManage/CurrencySelect.vue
@@ -31,6 +31,12 @@
@@ -489,18 +500,18 @@ const getTagText = (state) => {
- 精网号:
-
+ {{ t('common.jwcode') }}:
+
- 地区:
-
+ {{ t('common.market') }}:
+
- 频道:
-
+ {{ t('common.channel') }}:
+
@@ -509,9 +520,9 @@ const getTagText = (state) => {
-
消费时间:
-
{{ t('common.consumetime') }}:
+
今
@@ -520,24 +531,24 @@ const getTagText = (state) => {
- 查询
- 导出Excel
- 查看导出列表
- 重置
+ {{ t('common.search') }}
+ {{ t('common.exportExcel') }}
+ {{ t('common.viewExportList') }}
+ {{ t('common.reset') }}
- 金豆总数:{{ format3(Math.abs(permanentBean + freeBean)) }}
- 付费金豆数:{{ format3(Math.abs(permanentBean)) }}
- 免费金豆数:{{ format3(Math.abs(freeBean)) }}
+ {{ t('common.totalGoldBean') }}{{ format3(Math.abs(permanentBean + freeBean)) }}
+ {{ t('common.payGoldBean') }}{{ format3(Math.abs(permanentBean)) }}
+ {{ t('common.freeGoldBean') }}{{ format3(Math.abs(freeBean)) }}
-
-
+
{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
@@ -545,20 +556,20 @@ const getTagText = (state) => {
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
- {{consumeTypes.find(item => item.value === Number(scope.row.type))?.label || '未知类型'}}
+ {{consumeTypes.find(item => item.value === Number(scope.row.type))?.label || t('common_list.unknownType')}}
-
+
@@ -571,33 +582,33 @@ const getTagText = (state) => {
-
+
-
-
+
+
{{ getTagText(scope.row.state) }}
-
+
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
-
+
- 下载
+ {{ t('common_export.download') }}
@@ -663,7 +674,7 @@ const getTagText = (state) => {
padding: 0 0.5vw;
.text {
- width: 5vw;
+ width: 5.3vw;
font-size: 15px;
}
diff --git a/src/views/channelManage/reward/reward.vue b/src/views/channelManage/reward/reward.vue
index 43b0d48..b7cd3f8 100644
--- a/src/views/channelManage/reward/reward.vue
+++ b/src/views/channelManage/reward/reward.vue
@@ -1,16 +1,20 @@
@@ -523,42 +528,43 @@ const getTagText = (state) => {
- 精网号:
-
+ {{ t('common.jwcode') }}:
+
- 地区:
-
-
+ {{ t('common.market') }}:
+
+
- 礼物名称:
-
-
+ {{ t('common.giftName') }}:
+
+
-
-
频道:
-
-
+
+ {{ t('common.channel') }}:
+
+
-
-
直播间:
-
+
+ {{ t('common.liveRoom') }}:
+
-
消费时间:
-
+
{{ t('common.consumetime') }}:
+
今
昨
@@ -566,83 +572,84 @@ const getTagText = (state) => {
- 查询
- 导出excel
- 查看导出列表
- 重置
+ {{ t('common.search') }}
+ {{ t('common.exportExcel') }}
+ {{ t('common.viewExportList') }}
+ {{ t('common.reset') }}
- 金豆总数:{{ format3(Math.abs(permanentBean + freeBean)) }}
- 付费金豆数:{{ format3(Math.abs(permanentBean)) }}
- 免费金豆数:{{ format3(Math.abs(freeBean)) }}
+ {{ t('common.totalGoldBean') }}{{ format3(Math.abs(permanentBean + freeBean)) }}
+ {{ t('common.payGoldBean') }}{{ format3(Math.abs(permanentBean)) }}
+ {{ t('common.freeGoldBean') }}{{ format3(Math.abs(freeBean)) }}
-
-
+
+
{{
- scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
- }}
+ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
+ }}
-
+
-
-
-
+
+
+
-
-
+
+
- {{ scope.row.isBackpack == 1 ? '是' : '否' }}
+ {{ scope.row.isBackpack == 1 ? t('common_list.yes') : t('common_list.no') }}
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
-
+
+
{{ getTagText(scope.row.state) }}
-
+
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
-
+
- 下载
+ :disabled="scope.row.state !== 2">
+ {{ t('common_export.download') }}
@@ -675,7 +682,7 @@ const getTagText = (state) => {
:deep(.el-table__header-wrapper),
:deep(.el-table__body-wrapper),
:deep(.el-table__cell),
-/* 表格 */
+ /* 表格 */
:deep(.el-table__body td) {
background-color: #F3FAFE !important;
}
@@ -707,7 +714,7 @@ const getTagText = (state) => {
padding: 0 0.5vw;
.text {
- width: 5vw;
+ width: 5.3vw;
font-size: 15px;
}
From 35db67394fa7da97167786f7cd90249f3a39761c Mon Sep 17 00:00:00 2001
From: zhangrenyuan <18990852002@163.com>
Date: Sat, 13 Dec 2025 18:00:46 +0800
Subject: [PATCH 12/12] =?UTF-8?q?refactor(i18n):=20=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E5=92=8C=E7=BF=BB=E8=AF=91=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
重构活动状态显示逻辑,使用统一方法处理状态文本
添加并完善中英文翻译内容,包括权限管理和语言翻译模块
修复正则表达式中的转义字符问题
更新角色权限和语言翻译界面的国际化处理
---
src/components/locales/lang/en.js | 132 +++++++++++++++
src/components/locales/lang/zh-CN.js | 138 +++++++++++++++-
src/views/activityManage/activity.vue | 14 +-
src/views/language/languageTranslate.vue | 120 +++++++-------
src/views/permissions/rolePermission.vue | 120 +++++++-------
src/views/permissions/userPermission.vue | 271 ++++++++++++++++---------------
6 files changed, 536 insertions(+), 259 deletions(-)
diff --git a/src/components/locales/lang/en.js b/src/components/locales/lang/en.js
index addca5c..7d658b1 100644
--- a/src/components/locales/lang/en.js
+++ b/src/components/locales/lang/en.js
@@ -7,6 +7,8 @@ export default {
common: {
// Filters
name: 'Name',
+ account: 'OA Account',
+ accountPlaceholder: 'Please enter OA account',
jwcode: 'Homily ID',
jwcodePlaceholder: 'Please enter Homily ID',
activityName: 'Activity',
@@ -19,6 +21,10 @@ export default {
refundTypePlaceholder: 'Select refund type',
market: 'Region',
marketPlaceholder: 'Select region',
+ position: 'Position',
+ positionPlaceholder: 'Select position',
+ roleName: 'Role Name',
+ roleNamePlaceholder: 'Please enter role name',
consumePlatform: 'Consumption Platform',
consumePlatformPlaceholder: 'Select consumption platform',
rechargePlatform: 'Recharge Platform',
@@ -41,18 +47,32 @@ export default {
// Buttons
search: 'Query',
+ searchLabel: 'Search',
+ searchPlaceholder: 'Enter keywords',
+ searchButton: 'Search',
exportExcel: 'Export Excel',
viewExportList: 'View Export List',
reset: 'Reset',
edit: 'Edit',
+ editPermission: 'Edit Permission',
+ resetPassword: 'Reset Password',
+ delete: 'Delete',
pass: 'Approve',
reject: 'Reject',
cancel: 'Cancel',
confirm: 'Confirm',
submit: 'Submit',
+ add: 'Add',
+ addUser: 'Add User',
+ addRole: 'Add Role',
+ save: 'Save',
+ saving: 'Saving...',
addActivity: 'Add Activity',
addReceive: 'Add Receive',
confirmRecharge: 'Confirm Recharge',
+ batchImport: 'Batch Import',
+ import: 'Import',
+ uploadHint: 'Drag file here or click to upload',
// Buttons - Date
today: 'Today',
@@ -79,15 +99,35 @@ export default {
// Dialog Titles
will: 'Will ',
deleteRecord: 'Delete Record!',
+ deleteTranslationRecord: 'Delete this translation record',
deleteActivityRecord: 'Delete this activity record',
+ noData: 'No data'
+ ,
+ all: 'All'
+ },
+
+ // Permission module
+ permission: {
+ warning: 'Warning',
+ user: 'this user',
+ changeRoleConfirmContent1: 'Confirm role change?
You are changing the role of [',
+ changeRoleConfirmContent2: '] from [',
+ changeRoleConfirmContent3: '] to [',
+ changeRoleConfirmContent4: ']
After the change, the user’s permissions will be updated to the new role configuration, including data access and functional operations. Please confirm carefully.',
+ changeRoleSuccessContent1: 'User ',
+ changeRoleSuccessContent2: ' role has been changed to [',
+ roleRegionNote: 'This region setting has no practical effect; it is only for branch managers to view roles by region.'
},
// Message Group
elmessage: {
// Common
addSuccess: 'Added successfully',
+ submitFailed: 'Submission failed',
searchSuccess: 'Search completed',
requestFailed: 'Request failed',
+ inNetworkError: 'Network error, please try again',
+ prompt: 'Prompt',
jwcodeError: 'Invalid Homily ID',
addFailedUnknown: 'Add failed due to an unknown error',
addFailed: 'Add failed. Please check your network or contact the administrator',
@@ -155,6 +195,40 @@ export default {
rechargeFormatError: 'Recharge method format error. Please contact the administrator',
getRechargeError: 'Failed to obtain recharge methods. Please try again later',
deleteSuccess: 'Deleted successfully',
+ success: 'Success',
+ confirmDeleteUser: 'Are you sure you want to delete this user?',
+ resetPasswordConfirm: 'Confirm reset for this account password?',
+ resetPasswordDefault: 'After reset, the password will be: 123456. Please notify the user to change it.',
+ checkAccountFormat: 'Please check OA account format',
+ deviceLimitReached: 'Device count has reached the limit',
+ noParentRoleMarket: 'The selected parent role has no associated region',
+ roleAddSuccess: 'Role {roleName} added successfully',
+ enableSuccess: 'Enabled successfully',
+ disableSuccess: 'Disabled successfully',
+ inputRoleName: 'Please enter role name',
+ roleNameLengthLimit: 'Role name length should be 2–20 characters',
+ selectPermissionList: 'Please select permission list',
+ inputAccount: 'Please enter OA account',
+ onlyDigits: 'Must be digits',
+ lengthLimit20: 'Length must not exceed 20 characters',
+ inputUserName: 'Please enter user name',
+ inputPosition: 'Please enter position',
+ inputAtLeastOneMachineCode: 'Please enter at least one machine code',
+ roleNameDuplicate: 'Role name already exists',
+ resetPasswordSuccess: 'Password reset successful',
+ resetPasswordFailed: 'Password reset failed',
+ noPermissionResetMarket: 'You do not have permission to modify passwords for users in the {market} region',
+ // Import & Upload
+ importSuccess: 'Import successful',
+ importFailed: 'Import failed',
+ importFailedNetworkOrFormat: 'Import failed. Please check your network or file format',
+ onlyExcelAllowed: 'Only Excel files are allowed',
+ fileTooLarge5MB: 'File size cannot exceed 5MB',
+ fileSelectSuccess: 'File selected successfully',
+ uploadLimitOne: 'You can upload only one file',
+ selectFileFirst: 'Please select a file first',
+ // Plain text validation
+ onlyPlainText: 'Only plain text is supported; HTML is not allowed',
// Export
exportSuccess: 'Export successful',
@@ -173,9 +247,24 @@ export default {
// Common List Fields
common_list: {
id: 'No.',
+ originalChinese: 'Original Chinese',
+ english: 'English',
+ thai: 'Thai',
+ chineseTraditional: 'Traditional Chinese',
+ malay: 'Malay',
+ vietnamese: 'Vietnamese',
+ translated: 'Translated',
+ untranslated: 'Untranslated',
+ account: 'OA Account',
name: 'Name',
jwcode: 'Homily ID',
market: 'Region',
+ position: 'Position',
+ roleName: 'Role Name',
+ rolePermission: 'Role Permission',
+ departmentPermission: 'Department Permission',
+ parentRole: 'Parent Role',
+ permissionScope: 'Permission Scope',
sumGold: 'Total Coins',
payPlatform: 'Platform',
type: 'Update Type',
@@ -211,6 +300,16 @@ export default {
consumeTime: 'Consumption Time',
refundTime: 'Refund Time',
updateTime: 'Update Time',
+ activityStatus: {
+ notStarted: 'Not Started',
+ inProgress: 'In Progress',
+ ended: 'Ended',
+ },
+ operation: 'Operation',
+ configTime: 'Configuration Time',
+ status: 'Status',
+ enable: 'Enable',
+ disable: 'Disable',
},
// Common Export Fields
@@ -227,6 +326,39 @@ export default {
// Add Form Fields
common_add: {
jwcode: 'Homily ID',
+ addUserPermission: 'Add User Permission',
+ editUserPermission: 'Edit User Permission',
+ account: 'OA Account',
+ accountPlaceholder: 'Please enter OA account',
+ userName: 'User Name',
+ userNamePlaceholder: 'Please enter user name',
+ roleName: 'Role Name',
+ roleNamePlaceholder: 'Please select role name',
+ parentRole: 'Parent Role',
+ noParentRole: 'No Parent Role',
+ permissionList: 'Permission List',
+ machineCode: 'Machine Code',
+ machineCodePlaceholder: 'Please enter machine code',
+ remark: 'Remark',
+ addRole: 'Add Role',
+ editRole: 'Edit Role',
+ permissionDetails: 'Permission Details',
+ channelName: 'Channel Name',
+ channelPlaceholder: 'Please select channel',
+ originalChinese: 'Original Chinese',
+ originalChinesePlaceholder: 'Enter original Chinese',
+ english: 'English',
+ englishPlaceholder: 'Enter English',
+ thai: 'Thai',
+ thaiPlaceholder: 'Enter Thai',
+ chineseTraditional: 'Traditional Chinese',
+ chineseTraditionalPlaceholder: 'Enter Traditional Chinese',
+ malay: 'Malay',
+ malayPlaceholder: 'Enter Malay',
+ vietnamese: 'Vietnamese',
+ vietnamesePlaceholder: 'Enter Vietnamese',
+ addTranslation: 'Add Translation',
+ editTranslation: 'Edit Translation',
activity: 'Activity',
activityPlaceholder: 'Please enter activity name',
businessBelong: 'Performance Belonging',
diff --git a/src/components/locales/lang/zh-CN.js b/src/components/locales/lang/zh-CN.js
index 9b19908..c9af7c9 100644
--- a/src/components/locales/lang/zh-CN.js
+++ b/src/components/locales/lang/zh-CN.js
@@ -15,12 +15,18 @@ export default {
activityNameChoose: "请选择活动方式",
goodsName: "商品名称",
goodsNamePlaceholder: "请输入商品名称",
+ account: "OA号",
+ accountPlaceholder: "请输入OA号",
payModel: "支付方式",
payModelPlaceholder: "请选择支付方式",
refundType: "退款类型",
refundTypePlaceholder: "请选择退款类型",
market: "所属地区",
marketPlaceholder: "请选择所属地区",
+ position: "职位名称",
+ positionPlaceholder: "请选择职位名称",
+ roleName: "角色名称",
+ roleNamePlaceholder: "请输入角色名称",
refundCurrency: "退款币种",
refundCurrencyPlaceholder: "请选择退款币种",
refundMethod: "退款途径",
@@ -70,12 +76,18 @@ export default {
endTime: "结束时间",
// 按钮组
search: "查询",
+ searchLabel: "搜索",
+ searchPlaceholder: "请输入搜索内容",
+ searchButton: "查询",
exportExcel: "导出Excel",
viewExportList: "查看导出列表",
reset: "重置",
audit: "审核",
refund: "退款",
edit: "编辑",
+ editPermission: "修改权限",
+ resetPassword: "重置密码",
+ delete: "删除",
withdraw: "撤回",
pass: "通过",
close: "关闭",
@@ -83,10 +95,18 @@ export default {
cancel: "取消",
confirm: "确认",
submit: "提交",
+ add: "添加",
+ addUser: "新增用户",
+ addRole: "新增角色",
+ save: "保存",
+ saving: "保存中...",
addActivity: "新增活动",
modify: "修改",
addReceive: "添加收款",
confirmRecharge: "确认充值",
+ batchImport: "批量导入",
+ import: "导入",
+ uploadHint: "将文件拖到此处,或点击上传",
pendingFee: "待填写手续费",
viewRejectReason: "查看驳回理由",
// 按钮组-日期
@@ -127,19 +147,38 @@ export default {
// 对话框标题
will: "将要",
deleteRecord: "删除该翻译记录!",
+ deleteTranslationRecord: "删除该翻译记录",
deleteActivityRecord: "删除该活动数据",
willRefundOrder: "将要对该订单退款!",
willRecallOrder: "将要撤回该订单!",
// 市场
markets: {
- headquarter: "总部",
+ headquarters: "总部",
}
+ ,
+ noData: "暂无数据"
+ ,
+ all: "全部"
+ },
+
+ // 权限模块
+ permission: {
+ warning: "警告",
+ user: "该用户",
+ changeRoleConfirmContent1: "确认修改权限角色?
您正在将【",
+ changeRoleConfirmContent2: "】的权限角色从【",
+ changeRoleConfirmContent3: "】修改为【",
+ changeRoleConfirmContent4: "】
变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。",
+ changeRoleSuccessContent1: "用户",
+ changeRoleSuccessContent2: "的权限角色已更改为【",
+ roleRegionNote: "此地区无实际意义,仅用于各分部负责人查看其地区角色"
},
// 提示信息组
elmessage: {
// 通用
addSuccess: "添加成功", // 大写是添加成功,小写是新增
addsuccess: "新增成功",
+ prompt: "提示",
editSuccess: "编辑成功",
withdrawSuccess: "撤回成功",
dataException: "数据异常",
@@ -154,6 +193,7 @@ export default {
customerSuccess: "客户信息查询成功",
customerNotExist: "客户不存在",
addFailedUnknown: "添加失败,未知错误",
+ addUserPermissionFailed: "添加用户权限失败",
addFailed: "添加失败,请检查网络连接或联系管理员",
queryFailed: "查询失败,请检查网络连接或精网号是否正确",
refundTypeError: "退款类型数据格式错误,请联系管理员",
@@ -164,6 +204,42 @@ export default {
inNetworkError: "网络异常,请重试",
adminInfoLoadFailed: "管理员信息加载异常,请稍后重试",
deleteSuccess: "删除成功",
+ success: "成功",
+ confirmDeleteUser: "确定将此用户删除吗?",
+ resetPasswordConfirm: "确认重置该账号密码?",
+ resetPasswordDefault: "重置后密码为: 123456,请通知用户及时修改",
+ checkAccountFormat: "请检查OA号格式",
+ deviceLimitReached: "设备数量已达上限",
+ noParentRoleMarket: "该上级角色无归属地区",
+ roleAddSuccess: "角色{roleName}添加成功",
+ enableSuccess: "启用成功",
+ disableSuccess: "禁用成功",
+ inputRoleName: "请输入角色名称",
+ roleNameLengthLimit: "角色名称长度应在2-20个字符之间",
+ selectPermissionList: "请选择权限列表",
+ inputAccount: "请输入OA号",
+ onlyDigits: "必须为数字",
+ lengthLimit20: "长度不能超过20位",
+ inputUserName: "请输入用户名",
+ inputPosition: "请输入职位",
+ inputAtLeastOneMachineCode: "请至少输入一个机器码",
+ roleNameDuplicate: "角色名重复",
+ resetPasswordSuccess: "重置密码成功",
+ resetPasswordFailed: "重置密码失败",
+ noPermissionResetMarket1: "您没有修改",
+ noPermissionResetMarket2: "地区的用户密码的权限",
+ selectRoleName: "请选择角色名称",
+ // 导入与上传
+ importSuccess: "导入成功",
+ importFailed: "导入失败",
+ importFailedNetworkOrFormat: "导入失败,请检查网络或文件格式",
+ onlyExcelAllowed: "只能上传Excel文件",
+ fileTooLarge5MB: "文件大小不能超过5MB",
+ fileSelectSuccess: "文件选择成功",
+ uploadLimitOne: "最多只能上传一个文件",
+ selectFileFirst: "请先选择要导入的文件",
+ // 纯文本校验
+ onlyPlainText: "译文仅支持纯文本,不支持HTML标签",
// 校验精网号,充值等输入
checkInputContent: "请检查输入内容",
permanentAndFreeNoZero: "永久金币和免费金币不能同时为0",
@@ -291,14 +367,30 @@ export default {
// 权限
noPermissionText: "您暂无该页面操作权限,请联系管理员",
permissionPrompt: "权限提示",
+ noRoleAssigned: "暂未分配角色",
+ unknownRole: "未知角色",
},
// 通用列表字段组
common_list: {
id: "序号",
+ originalChinese: "原始中文",
+ english: "英文",
+ thai: "泰文",
+ chineseTraditional: "繁体中文",
+ malay: "马来文",
+ vietnamese: "越南文",
+ translated: "已翻译",
+ untranslated: "未翻译",
+ account: "OA号",
name: "姓名",
jwcode: "精网号",
market: "所属地区",
+ position: "职位",
+ roleName: "角色名称",
+ departmentPermission: "部门权限",
+ parentRole: "上级角色",
+ permissionScope: "权限范围",
gift: "礼物",
sumGold: "金币总数",
payPlatform: "平台信息",
@@ -387,6 +479,16 @@ export default {
payVoucher: "支付凭证",
refund: "退款",
normal: "正常",
+ activityStatus: {
+ notStarted: "未开始",
+ inProgress: "进行中",
+ ended: "已结束"
+ },
+ operation: "操作",
+ configTime: "配置时间",
+ status: "状态",
+ enable: "启用",
+ disable: "禁用",
},
// 通用导出字段组
common_export: {
@@ -403,6 +505,40 @@ export default {
common_add: {
jwcode: "精网号",
jwcodePlaceholder: "请输入精网号",
+ originalChinese: "原始中文",
+ originalChinesePlaceholder: "请输入原始中文",
+ english: "英文",
+ englishPlaceholder: "请输入英文",
+ thai: "泰文",
+ thaiPlaceholder: "请输入泰文",
+ chineseTraditional: "繁体中文",
+ chineseTraditionalPlaceholder: "请输入繁体中文",
+ malay: "马来文",
+ malayPlaceholder: "请输入马来文",
+ vietnamese: "越南文",
+ vietnamesePlaceholder: "请输入越南文",
+ addTranslation: "新增翻译",
+ editTranslation: "编辑翻译",
+ // 用户与角色管理
+ addUserPermission: "新增用户权限",
+ editUserPermission: "编辑用户权限",
+ account: "OA号",
+ accountPlaceholder: "请输入OA号",
+ userName: "用户名",
+ userNamePlaceholder: "请输入用户名",
+ roleName: "角色名称",
+ roleNamePlaceholder: "请选择角色名称",
+ parentRole: "上级角色",
+ noParentRole: "无上级角色",
+ permissionList: "权限列表",
+ machineCode: "机器码",
+ machineCodePlaceholder: "请输入机器码",
+ remark: "备注",
+ addRole: "新增角色",
+ editRole: "编辑角色",
+ permissionDetails: "权限详情",
+ channelName: "频道名称",
+ channelPlaceholder: "请选择频道",
customerName: "客户姓名",
customerNamePlaceholder: "请输入客户姓名",
rejectReason: "驳回理由",
diff --git a/src/views/activityManage/activity.vue b/src/views/activityManage/activity.vue
index 16ed76a..92c74a4 100644
--- a/src/views/activityManage/activity.vue
+++ b/src/views/activityManage/activity.vue
@@ -59,10 +59,7 @@
- {{ scope.row.status === '0' ? '未开始' :
- scope.row.status === '1' ? '进行中' :
- scope.row.status === '2' ? '已结束' : scope.row.status
- }}
+ {{ getActivityStatusText(scope.row.status) }}
@@ -167,8 +164,15 @@ import _ from 'lodash'
import { useI18n } from 'vue-i18n';
const {t} = useI18n();
+const getActivityStatusText = (status) => {
+ if (status === '0') return t('common_list.activityStatus.notStarted')
+ if (status === '1') return t('common_list.activityStatus.inProgress')
+ if (status === '2') return t('common_list.activityStatus.ended')
+ return status
+}
+
// 活动名称正则表达式
-const activityNameReg = /^[\u4e00-\u9fa5a-zA-Z0-9,。!?、;:“”()‘’《》【】{}——~,.!?:;'--()""\[\]_&+=]+$/;
+const activityNameReg = /^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:“”()‘’《》【】{}——~,.!?:;'--()\"\"\\[\\]_&+=]+$/;
// 为什么一定要两个--才能成功?????????
const tableData = ref([])
const pagination = ref({
diff --git a/src/views/language/languageTranslate.vue b/src/views/language/languageTranslate.vue
index 113f471..db4c273 100644
--- a/src/views/language/languageTranslate.vue
+++ b/src/views/language/languageTranslate.vue
@@ -3,13 +3,13 @@
- 搜索:
-
+ {{ t('common.searchLabel') }}:
+
- 搜索
- 重置
+ {{ t('common.searchButton') }}
+ {{ t('common.reset') }}
@@ -17,20 +17,20 @@
- 添加
+ {{ t('common.add') }}
- 批量导入
+ {{ t('common.batchImport') }}
-
+
{{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
-
+
@@ -40,7 +40,7 @@
-
+
@@ -52,13 +52,13 @@
- {{ scope.row.english ? '已翻译' : '未翻译' }}
+ {{ scope.row.english ? t('common_list.translated') : t('common_list.untranslated') }}
-
+
@@ -69,13 +69,13 @@
{{ scope.row.thai }}
- {{ scope.row.thai ? '已翻译' : '未翻译' }}
+ {{ scope.row.thai ? t('common_list.translated') : t('common_list.untranslated') }}
-
+
@@ -87,13 +87,13 @@
- {{ scope.row.chineseTraditional ? '已翻译' : '未翻译' }}
+ {{ scope.row.chineseTraditional ? t('common_list.translated') : t('common_list.untranslated') }}
-
+
@@ -104,13 +104,13 @@
{{ scope.row.malay }}
- {{ scope.row.malay ? '已翻译' : '未翻译' }}
+ {{ scope.row.malay ? t('common_list.translated') : t('common_list.untranslated') }}
-
+
@@ -122,24 +122,24 @@
- {{ scope.row.vietnamese ? '已翻译' : '未翻译' }}
+ {{ scope.row.vietnamese ? t('common_list.translated') : t('common_list.untranslated') }}
-
+
{{ moment(scope.row.configTime).format('YYYY-MM-DD HH:mm:ss') }}
-
+
- 编辑
- 删除
+ {{ t('common.edit') }}
+ {{ t('common.delete') }}
@@ -159,54 +159,54 @@
@cancel="handleDeleteCancel" @close="handleDeleteClose" />
-
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
- 取消
+ {{ t('common.cancel') }}
- {{ saveLoading ? '保存中...' : '保存' }}
+ {{ saveLoading ? t('common.saving') : t('common.save') }}
-
+
- 将文件拖到此处,或点击上传
+ {{ t('common.uploadHint') }}
- 取消
- 导入
+ {{ t('common.cancel') }}
+ {{ t('common.import') }}
@@ -307,7 +307,7 @@ const getTranslationList = async () => {
}
} catch (error) {
console.error('获取翻译列表失败:', error)
- ElMessage.error('获取数据失败')
+ ElMessage.error(t('elmessage.requestFailed'))
}
}
@@ -352,7 +352,7 @@ const getMenuTree = async function () {
} catch (error) {
console.error('菜单数据请求失败:', error)
// return { code: 500, msg: '获取菜单失败' }
- ElMessage.error('网络异常')
+ ElMessage.error(t('elmessage.inNetworkError'))
adminStore.clearState()
}
// console.log('1')
@@ -367,7 +367,7 @@ const handleSave = async () => {
const fields = ['english', 'thai', 'chineseTraditional', 'malay', 'vietnamese']
for (const field of fields) {
if (editForm.value[field] && /<[^>]*>/.test(editForm.value[field])) {
- ElMessage.error('译文仅支持纯文本,不支持HTML标签')
+ ElMessage.error(t('elmessage.onlyPlainText'))
saveLoading.value = false // 校验失败,恢复按钮状态
return
}
@@ -384,7 +384,7 @@ const handleSave = async () => {
await getMenuTree()
if (res.code === 200) {
- ElMessage.success(editForm.value.id ? '编辑成功' : '添加成功')
+ ElMessage.success(editForm.value.id ? t('elmessage.editSuccess') : t('elmessage.addSuccess'))
showEditDialog.value = false
// getTranslationList()
@@ -394,14 +394,14 @@ const handleSave = async () => {
}, 500)
} else if (res.code === 0) {
// 处理后端返回的错误信息
- ElMessage.error(res.msg || '操作失败')
+ ElMessage.error(res.msg || t('elmessage.operationFailed'))
} else {
// 处理其他错误码
- ElMessage.error(res.msg || '操作失败')
+ ElMessage.error(res.msg || t('elmessage.operationFailed'))
}
} catch (error) {
console.error('保存失败:', error)
- ElMessage.error('保存失败')
+ ElMessage.error(t('elmessage.submitFailed'))
} finally {
// 无论成功还是失败,都恢复按钮状态
saveLoading.value = false
@@ -425,7 +425,7 @@ const handleDeleteConfirm = async () => {
// 点击删除后,刷新菜单树
await getMenuTree()
if (res.code === 200) {
- ElMessage.success('删除成功')
+ ElMessage.success(t('elmessage.deleteSuccess'))
// getTranslationList()
// 触发页面刷新以重新加载数据
setTimeout(() => {
@@ -434,7 +434,7 @@ const handleDeleteConfirm = async () => {
}
} catch (error) {
console.error('删除失败:', error)
- ElMessage.error('删除失败')
+ ElMessage.error(t('elmessage.operationFailed'))
} finally {
showDeleteDialog.value = false
currentDeleteRow.value = null
@@ -465,28 +465,28 @@ const handleFileChange = (file) => {
// 验证文件类型
if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' &&
file.raw.type !== 'application/vnd.ms-excel') {
- ElMessage.error('只能上传Excel文件')
+ ElMessage.error(t('elmessage.onlyExcelAllowed'))
return
}
// 验证文件大小(限制为5MB)
if (file.raw.size > 5 * 1024 * 1024) {
- ElMessage.error('文件大小不能超过5MB')
+ ElMessage.error(t('elmessage.fileTooLarge5MB'))
return
}
// 存储文件
uploadFile.value = file.raw
- ElMessage.success('文件选择成功')
+ ElMessage.success(t('elmessage.fileSelectSuccess'))
}
// 添加文件超出限制的处理函数
const handleExceed = (files, fileList) => {
- ElMessage.warning('最多只能上传一个文件');
+ ElMessage.warning(t('elmessage.uploadLimitOne'));
};
// 导入处理
const handleImport = async () => {
if (!uploadFile.value) {
- ElMessage.warning('请先选择要导入的文件')
+ ElMessage.warning(t('elmessage.selectFileFirst'))
return
}
@@ -506,7 +506,7 @@ const handleImport = async () => {
})
if (res.code === 200) {
- ElMessage.success(`导入成功`)
+ ElMessage.success(t('elmessage.importSuccess'))
// 刷新菜单树(与保存、删除操作保持一致)
await getMenuTree()
// 触发页面刷新以重新加载数据
@@ -518,11 +518,11 @@ const handleImport = async () => {
// 清空上传文件
uploadFile.value = null
} else {
- ElMessage.error(res.msg || '导入失败')
+ ElMessage.error(res.msg || t('elmessage.importFailed'))
}
} catch (error) {
console.error('导入失败:', error)
- ElMessage.error('导入失败,请检查网络或文件格式')
+ ElMessage.error(t('elmessage.importFailedNetworkOrFormat'))
} finally {
importLoading.value = false
}
@@ -624,4 +624,4 @@ onMounted(() => {
width: 100%;
height: 180px;
}
-
\ No newline at end of file
+
diff --git a/src/views/permissions/rolePermission.vue b/src/views/permissions/rolePermission.vue
index 4e8fa09..b904b35 100644
--- a/src/views/permissions/rolePermission.vue
+++ b/src/views/permissions/rolePermission.vue
@@ -11,9 +11,11 @@ const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore);
import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
import { tr } from 'element-plus/es/locales.mjs'
+import { useI18n } from 'vue-i18n'
// 表单验证ref
const Ref = ref(null)
+const { t } = useI18n()
const roleData = ref([])
const roleTotal = ref(100)
const treeRef = ref(null)
@@ -37,10 +39,10 @@ const addRole = ref({
market: ''
})
const addRoleMarket = ref([])
-const channelList = ref(['全部'])
+const channelList = ref([t('common.all')])
const getRoleList = async function (val) {
if (!findMenuById(menuTree.value, permissionMapping.view_role_information)) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermissionText'))
return
}
try {
@@ -173,7 +175,7 @@ function processTreeData(data) {
const handleAddRole = async function () {
if (!findMenuById(menuTree.value, permissionMapping.add_role_information)) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermissionText'))
return
}
try {
@@ -182,7 +184,7 @@ const handleAddRole = async function () {
if (valid) {
resolve(); // 验证通过,继续执行后续代码
} else {
- reject(new Error('请检查并完善表单信息')); // 验证失败,抛出错误
+ reject(new Error(t('elmessage.checkFormInfo'))); // 验证失败,抛出错误
}
});
});
@@ -203,7 +205,7 @@ const handleAddRole = async function () {
}
})
if (res.code === 200) {
- ElMessage.success('角色' + addRole.value.roleName + '添加成功')
+ ElMessage.success(t('elmessage.roleAddSuccess', { roleName: addRole.value.roleName }))
console.log('成功了,看看addRole', addRole.value)
console.log('提交的权限ID列表:', finalCheckedKeys)
closePermissionAddVisible()
@@ -262,7 +264,7 @@ const getLists = async function () {
addRole.value.market = ''
}
} else {
- ElMessage.error('该上级角色无归属地区')
+ ElMessage.error(t('elmessage.noParentRoleMarket'))
console.log('该上级角色无归属地区')
}
@@ -417,7 +419,7 @@ const showMenuTree = (treeData, roleName) => {
Rolecheckedkeys.value = collectIds(treeData)
console.log('Rolecheckedkeys', Rolecheckedkeys.value)
- currentRoleName.value = roleName || '权限详情'
+ currentRoleName.value = roleName || t('common_add.permissionDetails')
menuTreeVisible.value = true;
}
@@ -525,7 +527,7 @@ const permissionEditRoleInit = async function (row) {
// 编辑角色提交
const permissionEditRole = async function () {
if (!findMenuById(menuTree.value, permissionMapping.edit_role_information)) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermission'))
return
}
try {
@@ -534,7 +536,7 @@ const permissionEditRole = async function () {
if (valid) {
resolve();
} else {
- reject(new Error('请检查并完善表单信息'));
+ reject(new Error(t('elmessage.checkFormInfo')));
}
});
});
@@ -562,13 +564,13 @@ const permissionEditRole = async function () {
console.log('提交的权限ID列表:', finalCheckedKeys);
permissionEditRoleVisible.value = false;
getRoleList();
- ElMessage.success('编辑角色成功');
+ ElMessage.success(t('elmessage.editSuccess'));
} else if (res.code === 0) {
console.log('角色名重复', permissionEditRoleObj.value);
- ElMessage.error('角色名重复');
+ ElMessage.error(t('elmessage.roleNameDuplicate'));
} else {
console.log('编辑角色失败', res);
- ElMessage.error('编辑角色失败');
+ ElMessage.error(t('elmessage.editFailed'));
}
} catch (error) {
console.log('编辑角色失败', error);
@@ -602,22 +604,22 @@ const selectParentNodesForSubmit = (treeData, nodeId, checkedKeys) => {
const Rolerules = reactive({
roleName: [
- { required: true, message: '请输入角色名称', trigger: 'blur' },
- { min: 2, max: 20, message: '角色名称长度应在2-20个字符之间', trigger: 'blur' }
+ { required: true, message: t('elmessage.inputRoleName'), trigger: 'blur' },
+ { min: 2, max: 20, message: t('elmessage.roleNameLengthLimit'), trigger: 'blur' }
],
market: [
- { required: true, message: '请选择归属地区', trigger: 'change' }
+ { required: true, message: t('elmessage.selectMarket'), trigger: 'change' }
],
checkedKeys: [
{
required: true,
- message: '请选择权限列表',
+ message: t('elmessage.selectPermissionList'),
trigger: 'change', // 选框变化或提交时触发,可根据实际调整
validator: (rule, value, callback) => {
if (value && value.length > 0) {
callback(); // 有选中项,校验通过
} else {
- callback(new Error('请选择权限列表')); // 未选中,抛出错误提示
+ callback(new Error(t('elmessage.selectPermissionList'))); // 未选中,抛出错误提示
}
}
}
@@ -642,11 +644,11 @@ onMounted(async function () {
-
角色名称:
-
+
{{ t('common.roleName') }}:
+
- 查询
- 重置
+ {{ t('common.search') }}
+ {{ t('common.reset') }}
@@ -654,13 +656,13 @@ onMounted(async function () {
新增角色
+ v-if="canAdd">{{ t('common.addRole') }}
-
+
{{
scope.$index + 1 + (getRoleObj.pageNum - 1) * getRoleObj.pageSize
@@ -668,24 +670,24 @@ onMounted(async function () {
-
-
+
+
{{ scope.row.fatherName || '-' }}
-
+
{{ formatPermissions(scope.row.tree) }}
-
+
- 编辑
+ {{ t('common.edit') }}
@@ -701,37 +703,37 @@ onMounted(async function () {
-
+
- 关闭
+ {{ t('common.close') }}
-
-
-
+
+
-
-
+
+
-
-
+
+
- (此地区无实际意义,仅用于各分部负责人查看其地区角色)
+ {{ t('permission.roleRegionNote') || '' }}
-
+
@@ -740,44 +742,44 @@ onMounted(async function () {
- 暂无数据
+ {{ t('common.noData') }}
-
-
+
+
- 取消
+ {{ t('common.cancel') }}
- 提交
+ {{ t('common.submit') }}
-
+
-
-
+
+
-
-
+
+
-
-
- (此地区无实际意义,仅用于各分部负责人查看其地区角色)
+
+
+ {{ t('permission.roleRegionNote') || '' }}
-
+
- 暂无数据
+ {{ t('common.noData') }}
-
-
+
+
- 取消
+ {{ t('common.cancel') }}
- 提交
+ {{ t('common.submit') }}
@@ -855,4 +857,4 @@ onMounted(async function () {
color: #409eff;
/* 蓝色文字,提示可点击 */
}
-
\ No newline at end of file
+
diff --git a/src/views/permissions/userPermission.vue b/src/views/permissions/userPermission.vue
index 4a6e774..69f5822 100644
--- a/src/views/permissions/userPermission.vue
+++ b/src/views/permissions/userPermission.vue
@@ -8,9 +8,11 @@ import API from '@/util/http'
import { useAdminStore } from "@/store/index.js"
import { storeToRefs } from "pinia"
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
+import { useI18n } from 'vue-i18n'
import BackGroundSvg from '@/assets/SvgIcons/promptBackground.svg'
+const { t } = useI18n()
const adminStore = useAdminStore()
const { adminData, menuTree } = storeToRefs(adminStore)
@@ -50,34 +52,34 @@ const showStatusConfirm = (row, targetStatus) => {
// 规则
const addUserRules = {
account: [
- { required: true, message: '请输入OA号', trigger: 'blur' },
- { pattern: /^\d+$/, message: 'OA号必须为数字', trigger: 'blur' },
- { max: 20, message: '长度不能超过20位', trigger: 'blur' }
+ { required: true, message: t('elmessage.inputAccount'), trigger: 'blur' },
+ { pattern: /^\d+$/, message: t('elmessage.onlyDigits'), trigger: 'blur' },
+ { max: 20, message: t('elmessage.lengthLimit20'), trigger: 'blur' }
],
name: [
- { required: true, message: '请输入用户名', trigger: 'blur' },
- { max: 20, message: '长度不能超过20位', trigger: 'blur' }
+ { required: true, message: t('elmessage.inputUserName'), trigger: 'blur' },
+ { max: 20, message: t('elmessage.lengthLimit20'), trigger: 'blur' }
],
market: [
- { required: true, message: '请选择所属地区', trigger: 'change' }
+ { required: true, message: t('elmessage.selectMarket'), trigger: 'change' }
],
permission: [
- { required: true, message: '请选择角色名称', trigger: 'change' }
+ { required: true, message: t('elmessage.selectRoleName'), trigger: 'change' }
],
postiton: [
- { required: true, message: '请输入职位', trigger: 'blur' },
- { max: 20, message: '长度不能超过20位', trigger: 'blur' }
+ { required: true, message: t('elmessage.inputPosition'), trigger: 'blur' },
+ { max: 20, message: t('elmessage.lengthLimit20'), trigger: 'blur' }
],
machineIds: [
{
required: true,
- message: '请至少输入一个机器码',
+ message: t('elmessage.inputAtLeastOneMachineCode'),
trigger: 'change',
validator: (rule, value, callback) => {
// 检查是否有非空的机器码
const hasValid = value.some(item => item.trim() !== '');
if (!hasValid) {
- callback(new Error('请至少输入一个机器码'));
+ callback(new Error(t('elmessage.inputAtLeastOneMachineCode')));
} else {
callback();
}
@@ -117,14 +119,14 @@ const permissionEditObj = ref({
})
const addMachineIdInput = function () {
if (addAdmin.value.machineIds.length >= 2) {
- ElMessage.warning('设备数量已达上限')
+ ElMessage.warning(t('elmessage.deviceLimitReached'))
return
}
addAdmin.value.machineIds.push('')
}
const UseraddMachineIdInput = function () {
if (permissionEditObj.value.machineIds.length >= 2) {
- ElMessage.warning('设备数量已达上限')
+ ElMessage.warning(t('elmessage.deviceLimitReached'))
return
}
permissionEditObj.value.machineIds.push('')
@@ -149,7 +151,7 @@ const getPermission = async function (val) {
// 检查是否不是数字
if (!numberRegex.test(admin.value.account)) {
- ElMessage.error('请检查OA号格式')
+ ElMessage.error(t('elmessage.checkAccountFormat'))
// 上面提示过了
return
}
@@ -272,7 +274,7 @@ const userAddInit = function () {
//新增用户
const permissionAdd = async function () {
if (!canLook) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermissionText'))
return
}
try {
@@ -281,7 +283,7 @@ const permissionAdd = async function () {
if (valid) {
resolve(); // 验证通过,继续执行后续代码
} else {
- reject(new Error('请检查并完善表单信息')); // 验证失败,抛出错误
+ reject(new Error(t('elmessage.checkFormInfo'))); // 验证失败,抛出错误
}
});
});
@@ -307,7 +309,7 @@ const permissionAdd = async function () {
console.log(addAdmin.value)
if (result.code === 200) {
- ElMessage.success('添加成功')
+ ElMessage.success(t('elmessage.addSuccess'))
} else {
ElMessage.error(result.msg)
}
@@ -319,7 +321,7 @@ const permissionAdd = async function () {
} catch (error) {
console.log('新增用户权限失败', error)
- ElMessage.error('新增用户权限失败')
+ ElMessage.error(t('elmessage.addUserPermissionFailed'))
}
}
// 表单验证ref
@@ -441,19 +443,19 @@ const getUserLists = async function (selectedRoleId) {
permissionEditObj.value.parentName = '';
permissionEditObj.value.checkedKeys = [];
parentRoleTip.value = '';
- const parentRes = await request({
- url: '/role/selectFather',
- data: { id: selectedRoleId } // 用选中的角色ID请求
- });
- const parentId = parentRes.data.fatherId;
- const parentName = parentRes.data.parentName;
-
- permissionEditObj.value.parentId = parentId;
- permissionEditObj.value.parentName = parentName;
- if (parentId == null) {
- // 无上级角色:显示提示
- parentRoleTip.value = '该角色无上级角色';
- }
+ const parentRes = await request({
+ url: '/role/selectFather',
+ data: { id: selectedRoleId } // 用选中的角色ID请求
+ });
+ const parentId = parentRes.data.fatherId;
+ const parentName = parentRes.data.parentName;
+
+ permissionEditObj.value.parentId = parentId;
+ permissionEditObj.value.parentName = parentName;
+ if (parentId == null) {
+ // 无上级角色:显示提示
+ parentRoleTip.value = t('common_add.noParentRole');
+ }
let roleId = permissionEditObj.value.roleId
// if (permissionEditObj.value.parentId === null || permissionEditObj.value.parentId === undefined) {
@@ -476,22 +478,22 @@ const getUserLists = async function (selectedRoleId) {
//编辑用户表单校验
const editAdminRules = {
market: [
- { required: true, message: '请选择所属地区', trigger: 'change' }
+ { required: true, message: t('elmessage.selectMarket'), trigger: 'change' }
],
postiton: [
- { required: true, message: '请输入职位', trigger: ['blur', 'change'] },
- { max: 20, message: '长度不能超过20位', trigger: ['blur', 'change'] }
+ { required: true, message: t('elmessage.inputPosition'), trigger: ['blur', 'change'] },
+ { max: 20, message: t('elmessage.lengthLimit20'), trigger: ['blur', 'change'] }
],
machineIds: [
{
required: true,
- message: '请至少输入一个机器码',
+ message: t('elmessage.inputAtLeastOneMachineCode'),
trigger: 'change',
validator: (rule, value, callback) => {
// 检查是否有非空的机器码
const hasValid = value.some(item => item.trim() !== '');
if (!hasValid) {
- callback(new Error('请至少输入一个机器码'));
+ callback(new Error(t('elmessage.inputAtLeastOneMachineCode')));
} else {
callback();
}
@@ -502,33 +504,34 @@ const editAdminRules = {
// 编辑用户权限提交
const permissionEdit = async function () {
if (!canEdit) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermissionText'))
return
}
let { adminName: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value;
if (oldRole == null) {
- oldRole = '暂未分配角色'
+ oldRole = t('elmessage.noRoleAssigned')
}
- const newRole = permissionList.value.find(item => item.value === newRoleId)?.label || '未知角色';
+ const newRole = permissionList.value.find(item => item.value === newRoleId)?.label || t('elmessage.unknownRole');
+ const confirmContent = `${t('permission.changeRoleConfirmContent1')}${userName}${t('permission.changeRoleConfirmContent2')}${oldRole}${t('permission.changeRoleConfirmContent3')}${newRole}${t('permission.changeRoleConfirmContent4')}`
try {
await new Promise((resolve, reject) => {
Ref.value.validate((valid) => {
if (valid) {
resolve(); // 验证通过,继续执行后续代码
} else {
- reject(new Error('请检查并完善表单信息')); // 验证失败,抛出错误
+ reject(new Error(t('elmessage.checkFormInfo'))); // 验证失败,抛出错误
}
});
});
await ElMessageBox.confirm(
- `确认修改权限角色?
您正在将【${userName}】的权限角色从【${oldRole}】修改为【${newRole}】
变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。`,
- '警告',
+ confirmContent,
+ t('permission.warning'),
{
- confirmButtonText: '确认',
- cancelButtonText: '取消',
+ confirmButtonText: t('common.confirm'),
+ cancelButtonText: t('common.cancel'),
type: "warning",
lockScroll: false,
- dangerouslyUseHTMLString: true //允许解析 HTML 标签
+ dangerouslyUseHTMLString: true
}
)
const result = await request({
@@ -548,11 +551,11 @@ const permissionEdit = async function () {
console.log('编辑最后提交数据', permissionEditObj.value);
if (result.code === 200) {
await ElMessageBox.alert(
- `用户${userName}的权限角色已更改为【${newRole}】`,
- '成功',
+ `${t('permission.changeRoleSuccessContent1')}${userName}${t('permission.changeRoleSuccessContent2')}${newRole}】`,
+ t('elmessage.success'),
{
- confirmButtonText: '确定',
- type: 'success' // 设置为 success 类型
+ confirmButtonText: t('common.confirm'),
+ type: 'success'
}
);
getPermission();
@@ -563,7 +566,7 @@ const permissionEdit = async function () {
} catch (error) {
console.log('编辑用户权限失败', error)
- ElMessage.error('编辑用户权限失败')
+ ElMessage.error(t('elmessage.editFailed') || t('elmessage.operationFailed'))
}
}
@@ -578,7 +581,7 @@ const del = function (row) {
// 删除权限
const delConfirm = async function () {
if (!canDel) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermissionText'))
return
}
try {
@@ -589,18 +592,18 @@ const delConfirm = async function () {
console.log('看看删除对象', delObj.value)
console.log('请求成功1', result)
- ElMessage.success('删除权限成功')
+ ElMessage.success(t('elmessage.deleteSuccess'))
delObj.value = {}
getPermission()
} catch (error) {
console.log('删除权限失败', error)
- ElMessage.error('删除权限失败')
+ ElMessage.error(t('elmessage.operationFailed'))
}
}
// 禁用启用用户权限
const editStatus = async function (row) {
if (!change) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermissionText'))
return
}
const { id, account, targetStatus, ...restRow } = currentStatusRow.value
@@ -622,7 +625,7 @@ const editStatus = async function (row) {
console.log('请求成功2', result)
if (result.code === 200) {
ElMessage.success(
- permissionEditObj.value.adminStatus === 1 ? '启用成功' : '禁用成功'
+ permissionEditObj.value.adminStatus === 1 ? t('elmessage.enableSuccess') : t('elmessage.disableSuccess')
)
statusLoading.value[id] = false
}
@@ -681,11 +684,11 @@ const handleMarketChangeAddUser = (value) => {
.filter(Boolean);
// 检查是否包含总部
- const hasHeadquarters = selectedMarkets.includes('总部');
+ const hasHeadquarters = selectedMarkets.includes(t('common.markets.headquarters'));
if (hasHeadquarters) {
// 如果包含总部,只保留总部
- addAdmin.value.market = ['总部'];
+ addAdmin.value.market = [t('common.markets.headquarters')];
} else {
// 不包含总部,保留所有选择
addAdmin.value.market = selectedMarkets;
@@ -705,11 +708,11 @@ const handleMarketChangeEditUser = (value) => {
.filter(Boolean);
// 检查是否包含总部
- const hasHeadquarters = selectedMarkets.includes('总部');
+ const hasHeadquarters = selectedMarkets.includes(t('common.markets.headquarters'));
if (hasHeadquarters) {
// 如果包含总部,只保留总部
- permissionEditObj.value.market = ['总部'];
+ permissionEditObj.value.market = [t('common.markets.headquarters')];
} else {
// 不包含总部,保留所有选择
permissionEditObj.value.market = selectedMarkets;
@@ -793,7 +796,7 @@ const resetPassword = function (row) {
// 确认重置密码
const confirmResetPassword = async function () {
if (!canEdit) {
- ElMessage.error('无此权限')
+ ElMessage.error(t('elmessage.noPermission'))
return
}
console.log('adminData', adminData.value)
@@ -827,20 +830,20 @@ const confirmResetPassword = async function () {
});
if (result.code === 200) { // 使用严格相等运算符
- ElMessage.success('重置密码成功');
+ ElMessage.success(t('elmessage.resetPasswordSuccess'));
resetConfirmVisible.value = false; // 关闭弹窗
await getPermission()
} else {
- ElMessage.error(result.message || '重置密码失败');
+ ElMessage.error(result.message || t('elmessage.resetPasswordFailed'));
}
} catch (error) {
- ElMessage.error('重置密码失败');
+ ElMessage.error(t('elmessage.resetPasswordFailed'));
console.error('请求错误:', error);
}
} else {
// console.log("为什么不能重置",adminData.value.markets)
- ElMessage.error('您没有修改' + currentRow.value.market + '地区的用户密码的权限');
+ ElMessage.error(t('elmessage.noPermissionResetMarket1') + currentRow.value.market + t('elmessage.noPermissionResetMarket2'));
resetConfirmVisible.value = false; // 关闭弹窗
}
@@ -918,25 +921,25 @@ onMounted(async function () {
- OA号:
-
+ {{ t('common.account') }}:
+
- 所属地区:
- {{ t('common.market') }}:
+
- 职位名称:
-
+ {{ t('common.position') }}:
+
- 查询
- 重置
+ {{ t('common.search') }}
+ {{ t('common.reset') }}
@@ -944,14 +947,14 @@ onMounted(async function () {
新增用户
+ @click="userAddInit()">{{ t('common.addUser') }}
-
+
{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
@@ -959,39 +962,39 @@ onMounted(async function () {
-
-
-
-
-
+
+
+
+
+
-
-
+
+
- 重置密码
+ {{ t('common.resetPassword') }}
- 修改权限
+ {{ t('common.editPermission') }}
-
+
- 删除
+ {{ t('common.delete') }}
- 取消
+ {{ t('common.cancel') }}
- 确定
+ {{ t('common.confirm') }}
-
+
showStatusConfirm(scope.row, targetStatus)" style="
--el-switch-on-color: #13ce66;
--el-switch-off-color: #ff4949;
- " active-text="启用" inactive-text="禁用" inline-prompt />
+ " :active-text="t('common_list.enable')" :inactive-text="t('common_list.disable')" inline-prompt />
@@ -1013,106 +1016,106 @@ onMounted(async function () {
-
-
-
+
+
-
-
+
+
-
-
+
-
-
+
+
-
-
+
+
-
+
-
-
添加
+
{{ t('common.add') }}
-
+
- 取消
+ {{ t('common.cancel') }}
- 提交
+ {{ t('common.submit') }}
-
+
-
-
+
+
-
-
+
+
-
-
+
-
-
+
+
-
-
+
+
-
-
+
-
+
- 暂无数据
+ {{ t('common.noData') }}
-
+
-
添加
+
{{ t('common.add') }}
@@ -1120,9 +1123,9 @@ onMounted(async function () {
- 取消
+ {{ t('common.cancel') }}
- 提交
+ {{ t('common.submit') }}
@@ -1138,15 +1141,15 @@ onMounted(async function () {
- 提示
- 确认重置该账号密码?
- 重置后密码为: 123456,请通知用户及时修改
+ {{ t('elmessage.prompt') }}
+ {{ t('elmessage.resetPasswordConfirm') }}
+ {{ t('elmessage.resetPasswordDefault') }}
- 取消
- 确定
+ {{ t('common.cancel') }}
+ {{ t('common.confirm') }}
@@ -1159,7 +1162,7 @@ onMounted(async function () {
}"
@close="() => { if (currentStatusRow) currentStatusRow.adminStatus = currentStatusRow.adminStatus === 1 ? 0 : 1 }">
- 将要{{ currentStatusRow?.adminStatus === 1 ? '禁用' : '启用' }}该用户
+ {{ t('common.will') }}{{ currentStatusRow?.adminStatus === 1 ? t('common_list.disable') : t('common_list.enable') }}{{ t('permission.user') }}
@@ -1168,13 +1171,13 @@ onMounted(async function () {
currentStatusRow.adminStatus = currentStatusRow.adminStatus === 1 ? 0 : 1
ackVisible = false
}">
- 取消
+ {{ t('common.cancel') }}
{
editStatus(currentStatusRow)
ackVisible = false
}">
- 确认
+ {{ t('common.confirm') }}
@@ -1241,4 +1244,4 @@ onMounted(async function () {
margin-bottom: 30px;
font-size: 48px;
}
-
\ No newline at end of file
+