From 8e92df4d008bad6cea100463b0157472a7342a8e Mon Sep 17 00:00:00 2001
From: zhangrenyuan <18990852002@163.com>
Date: Thu, 11 Dec 2025 17:34:06 +0800
Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AE=8C=E5=96=84=E5=A4=9A?=
=?UTF-8?q?=E8=AF=AD=E8=A8=80=E6=94=AF=E6=8C=81=EF=BC=8C=E9=87=91=E8=B1=86?=
=?UTF-8?q?=E6=B6=88=E8=80=97=E7=9B=B8=E5=85=B3=EF=BC=8C=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E4=BA=86=E8=8B=B1=E6=96=87=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=9B=BE?=
=?UTF-8?q?=E8=A1=A8=E7=9A=84=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/locales/lang/zh-CN.js | 67 ++++++++++
src/components/workspace/CashManagement.vue | 2 +-
src/views/consume/bean/addBeanConsume.vue | 82 ++++++------
src/views/consume/bean/articleVideo.vue | 143 +++++++++++----------
src/views/consume/bean/beanConsume.vue | 18 +--
src/views/consume/bean/dieHardFan.vue | 127 +++++++++---------
src/views/consume/bean/liveStream.vue | 133 +++++++++----------
.../moneyManage/receiveDetail/receiveDetail1.vue | 2 +-
src/views/permissions/userPermission.vue | 4 +-
src/views/recharge/bean/addBeanRecharge.vue | 2 +-
src/views/workspace/index.vue | 2 +-
11 files changed, 340 insertions(+), 242 deletions(-)
diff --git a/src/components/locales/lang/zh-CN.js b/src/components/locales/lang/zh-CN.js
index ae32e5f..b29e042 100644
--- a/src/components/locales/lang/zh-CN.js
+++ b/src/components/locales/lang/zh-CN.js
@@ -18,6 +18,20 @@ export default {
refundTypePlaceholder: '请选择退款类型',
market: '所属地区',
marketPlaceholder: '请选择所属地区',
+ type: '类型',
+ typePlaceholder: '请选择类型',
+ articleVideoID: '文章/视频ID',
+ articleVideoIDPlaceholder: '请输入文章/视频ID',
+ author: '作者',
+ authorPlaceholder: '请输入作者',
+ articleVideoTitle: '文章/视频标题',
+ articleVideoTitlePlaceholder: '请输入文章/视频标题',
+ giftName: '礼物名称',
+ giftNamePlaceholder: '请输入礼物名称',
+ channel: '频道',
+ channelPlaceholder: '请输入频道',
+ liveRoom: '直播间',
+ liveRoomPlaceholder: '请输入直播间',
consumePlatform: '消耗平台',
consumePlatformPlaceholder: '请选择消耗平台',
rechargePlatform: '充值平台',
@@ -29,6 +43,8 @@ export default {
orderNo: '订单号',
orderNoPlaceholder: '请输入订单号',
consumeTime: '消耗时间',
+ consumetime: '消费时间',
+ payTime: '付费时间',
rechargeTime: '充值时间',
refundTime: '退款时间',
updateTime: '更新时间',
@@ -120,6 +136,7 @@ export default {
checkFreeBean: '请输入免费金豆数',
checkRemark: '请输入备注',
checkFormInfo: '请检查并完善表单信息',
+ checkArticleIdFormat: '请检查文章ID格式',
// 校验提示(error)
noEmptyJwcode: '精网号不能为空',
noEmptySumGold: '消耗金币总数不能为空',
@@ -181,6 +198,10 @@ export default {
// 金豆充值相关
systemRechargeAreaError: '系统充值地区获取失败',
onlineRechargeAreaError: '线上充值地区获取失败',
+ // 金豆消耗相关
+ getGiftListFailed: '获取礼物列表失败,请稍后重试',
+ getChannelListFailed: '获取频道列表失败,请稍后重试',
+ getRegionListFailed: '获取地区列表失败,请稍后重试',
},
// 通用列表字段组
@@ -189,6 +210,7 @@ export default {
name: '姓名',
jwcode: '精网号',
market: '所属地区',
+ gift: '礼物',
sumGold: '金币总数',
payPlatform: '平台信息',
type: '更新类型',
@@ -228,6 +250,21 @@ export default {
freeBean: '免费金豆',
mobile: '手机',
other: '其他',
+ beanNum: '金豆数量',
+ beanNumTotal: '金豆总数',
+ isBackpack: '背包礼物',
+ yes: '是',
+ no: '否',
+ channel: '频道',
+ liveRoomName: '直播间名称',
+ consumetime: '消费时间',
+ memberType: '会员类型',
+ unknownType: '未知类型',
+ joinTime: '加入时间',
+ articleVideoID: '文章/视频ID',
+ articleVideoTitle: '文章/视频标题',
+ author: '作者',
+ payTime: '付费时间',
},
// 通用导出字段组
common_export: {
@@ -278,6 +315,9 @@ export default {
buy: '购买',
operator: '操作人',
continueOperation: '是否继续操作?',
+ // 金豆相关
+ permanentBean: '付费金豆',
+ freeBean: '免费金豆',
},
// 新增表单客户信息字段组
common_add_user: {
@@ -296,6 +336,8 @@ export default {
currentPayableBean: '当前付费金豆',
currentFreeBean: '当前免费金豆',
consumeTotalBean: '消耗金豆总数',
+ permanentBean: '付费金豆',
+ freeBean: '免费金豆',
},
// 审核组
@@ -426,6 +468,31 @@ export default {
},
// 新增消耗
addCoinConsume: '新增消耗',
+ // 金豆消耗 ----------------------------------
+ addBeanConsume: '新增消耗',
+ liveStream: '直播',
+ dieHardFan: '铁粉',
+ articleVideo: '文章/视频',
+ confirmConsume: '确认消耗吗?',
+ prompt: '提示',
+ // 文章/视频
+ type: '类型',
+ reward: '打赏',
+ payBuy: '付费购买',
+ other: '其他',
+ consumeTypes: {
+ 1: '发礼物',
+ 2: '发红包',
+ 3: '发福袋',
+ 4: '付费直播',
+ 5: '加入粉丝团',
+ 6: '发弹幕',
+ 7: '单次付费',
+ 8: '连续包月',
+ 9: '打赏',
+ 10: '打赏',
+ 11: '付费购买',
+ },
},
//退款组
diff --git a/src/components/workspace/CashManagement.vue b/src/components/workspace/CashManagement.vue
index bb397dc..89c860d 100644
--- a/src/components/workspace/CashManagement.vue
+++ b/src/components/workspace/CashManagement.vue
@@ -195,7 +195,7 @@ const getAdminData = async function () {
loading.value = true; // 开始加载
const result = await API({url: '/admin/userinfo', data: {}});
marksFlag.value = result.markets === '总部' || result.markets === '研发部'
- || result.markets === 'headquarters' || result.markets === 'R&D Department';
+ || result.markets === 'Headquarters' || result.markets === 'R&D Department';
console.log("marksFlag", marksFlag.value);
// alert(marksFlag.value)
} catch (error) {
diff --git a/src/views/consume/bean/addBeanConsume.vue b/src/views/consume/bean/addBeanConsume.vue
index 1eaaebf..9c12b85 100644
--- a/src/views/consume/bean/addBeanConsume.vue
+++ b/src/views/consume/bean/addBeanConsume.vue
@@ -14,13 +14,17 @@ import throttle from 'lodash/throttle'
import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
import _ from 'lodash'
+// 国际化
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
const user = ref({})
const getUser = async function (jwcode) {
if (consumeForm.value.jwcode) {
consumeForm.value.jwcode = consumeForm.value.jwcode.replace(/\s/g, '');
} else {
- ElMessage.error('请先输入精网号')
+ ElMessage.error(t('elmessage.checkJwcode'))
return false
}
try {
@@ -33,15 +37,15 @@ const getUser = async function (jwcode) {
if (result.code === 0) {
ElMessage.error(result.msg);
} else if (result.data === null) {
- ElMessage.error("用户不存在");
+ ElMessage.error(t('elmessage.noUser'));
} else {
user.value = result.data;
console.log("用户信息", user.value);
- ElMessage.success("查询成功");
+ ElMessage.success(t('elmessage.searchSuccess'));
}
} catch (error) {
console.log("请求失败", error);
- ElMessage.error("精网号错误");
+ ElMessage.error(t('elmessage.jwcodeError'));
}
}
@@ -60,22 +64,22 @@ const adminStore = useAdminStore()
const { adminData } = storeToRefs(adminStore)
const rules = reactive({
jwcode: [
- { required: true, message: '请输入精网号', trigger: 'blur' },
+ { required: true, message: t('elmessage.checkJwcode'), trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (!value) {
- callback(new Error('精网号不能为空'));
+ callback(new Error(t('elmessage.noEmptyJwcode')));
return;
}
if (/[^0-9]/.test(value)) {
- callback(new Error('精网号只能包含数字'));
+ callback(new Error(t('elmessage.limitDigitJwcode')));
return;
}
callback();
}, trigger: 'blur'
}],
permanentBean: [
- { required: true, message: '请输入付费金豆数', trigger: 'change' },
+ { required: true, message: t('elmessage.checkPayBean'), trigger: 'change' },
{
validator: (rule, value, callback) => {
if (!value) {
@@ -83,13 +87,13 @@ const rules = reactive({
}
// 检查是否为非负整数
if (!/^\d+$/.test(value)) {
- callback(new Error('请输入非负整数'));
+ callback(new Error(t('elmessage.checkNonNegative')));
return;
}
// 检查位数
if (value.length > 6) {
- callback(new Error('整数位数不能超过6位'));
+ callback(new Error(t('elmessage.limitSix')));
return;
}
callback();
@@ -99,7 +103,7 @@ const rules = reactive({
}
],
freeBean: [
- { required: true, message: '请输入免费金豆数', trigger: 'change' },
+ { required: true, message: t('elmessage.checkFreeBean'), trigger: 'change' },
{
validator: (rule, value, callback) => {
if (!value) {
@@ -107,13 +111,13 @@ const rules = reactive({
}
// 检查是否为非负整数
if (!/^\d+$/.test(value)) {
- callback(new Error('请输入非负整数'));
+ callback(new Error(t('elmessage.checkNonNegative')));
return;
}
// 检查位数
if (value.length > 6) {
- callback(new Error('整数位数不能超过6位'));
+ callback(new Error(t('elmessage.limitSix')));
return;
}
callback();
@@ -122,7 +126,7 @@ const rules = reactive({
}
],
remark: [
- { required: true, message: '请输入备注', trigger: 'blur' }
+ { required: true, message: t('elmessage.checkRemark'), trigger: 'blur' }
]
});
@@ -143,11 +147,11 @@ const handleConsumeForm = async () => {
formRef.value.validate((valid) => {
if (valid) {
if (Number(consumeForm.value.permanentBean) === 0 && Number(consumeForm.value.freeBean) === 0) {
- reject(new Error('付费金豆和免费金豆不能同时为0'));
+ reject(new Error(t('elmessage.noPayBeanFreeBeanZero')));
}
resolve(); // 验证通过,继续执行后续代码
} else {
- reject(new Error('请检查并完善表单信息')); // 验证失败,抛出错误
+ reject(new Error(t('elmessage.checkFormInfo'))); // 验证失败,抛出错误
}
});
});
@@ -167,11 +171,11 @@ const handleConsumeForm = async () => {
// }
await ElMessageBox.confirm(
- '确认消耗吗?',
- '提示',
+ t('consume.confirmConsume'),
+ t('consume.prompt'),
{
- confirmButtonText: '确认',
- cancelButtonText: '取消',
+ confirmButtonText: t('common.confirm'),
+ cancelButtonText: t('common.cancel'),
type: "primary",
lockScroll: false,
}
@@ -189,7 +193,7 @@ const handleConsumeForm = async () => {
})
addDisabled.value = false
if (result.code == 200) {
- ElMessage.success('新增成功')
+ ElMessage.success(t('elmessage.addsuccess'))
deleteConsumeForm()
user.value = {}
} else {
@@ -197,7 +201,7 @@ const handleConsumeForm = async () => {
}
} catch (error) {
console.log('金豆新增充值失败');
- ElMessage.error(error.message || '操作失败');
+ ElMessage.error(error.message || t('elmessage.operationFailed'));
}
}
const throttledHandleConsumeFormt = _.throttle(handleConsumeForm, 5000, {
@@ -209,22 +213,22 @@ const throttledHandleConsumeFormt = _.throttle(handleConsumeForm, 5000, {
-
+
- 查询
+ {{ t('common.search') }}
-
+
-
+
-
+
- 重置
- 提交
+ {{ t('common.reset') }}
+ {{ t('common.submit') }}
@@ -233,12 +237,12 @@ const throttledHandleConsumeFormt = _.throttle(handleConsumeForm, 5000, {
- 客户信息
+ {{ t('common_add_user.customerInfo') }}
-
姓名:
+
{{ t('common_add_user.name') }}:
{{ user.name }}
-
当前付费金豆:
+
{{ t('common_add_user.permanentBean') }}:
{{ Number(user.permanentBean) }}
@@ -246,17 +250,17 @@ const throttledHandleConsumeFormt = _.throttle(handleConsumeForm, 5000, {
-
精网号:
+
{{ t('common_add_user.jwcode') }}:
{{ user.jwcode }}
-
当前免费金豆:
+
{{ t('common_add_user.freeBean') }}:
{{ user.freeBean }}
-
所属门店:
+
{{ t('common_add_user.store') }}:
{{ user.market }}
-
消耗金豆总数:
+
{{ t('common_add_user.consumeTotalBean') }}:
{{ user.consumeSum }}
{{ 0 }}
@@ -285,13 +289,13 @@ const throttledHandleConsumeFormt = _.throttle(handleConsumeForm, 5000, {
.right {
flex: 1;
display: flex;
- float: left;
+ // float: left;
.customer-info {
- width: 35vw;
+ min-width: 35vw;
height: 28vh;
margin-top: 5vh;
- display: flex;
+ // display: flex;
justify-content: center;
}
}
diff --git a/src/views/consume/bean/articleVideo.vue b/src/views/consume/bean/articleVideo.vue
index a52c598..d9c7c1d 100644
--- a/src/views/consume/bean/articleVideo.vue
+++ b/src/views/consume/bean/articleVideo.vue
@@ -9,6 +9,10 @@ import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
const adminStore = useAdminStore();
const { flag } = storeToRefs(adminStore);
+// 国际化
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
// 监听全局flag状态变化
watch(flag, (newFlag, oldFlag) => {
// 当flag状态改变时,重新发送请求
@@ -55,9 +59,9 @@ const channels = ref([])
// 抽离类型选项到响应式数组
const consumeTypes = ref([
- { label: '打赏', value: 9 },
- { label: '打赏', value: 10 },
- { label: '付费购买', value: 11 },
+ { label: t('consume.consumeTypes.9'), value: 9 },
+ { label: t('consume.consumeTypes.10'), value: 10 },
+ { label: t('consume.consumeTypes.11'), value: 11 },
])
// 处理 payMode 选择变化
@@ -110,7 +114,7 @@ const getDept = async function () {
console.log('请求地区列表失败', error)
ElMessage({
type: 'error',
- message: '获取地区列表失败,请稍后重试'
+ message: t('elmessage.getRegionListFailed')
})
}
}
@@ -257,14 +261,14 @@ const search = function () {
if (beanConsumeArticle.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(beanConsumeArticle.value.jwcode)) {
- ElMessage.error('请检查精网号格式')
+ ElMessage.error(t('elmessage.checkJwcodeFormat'))
return
}
}
if (beanConsumeArticle.value.articleId) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(beanConsumeArticle.value.articleId)) {
- ElMessage.error('请检查文章ID格式')
+ ElMessage.error(t('elmessage.checkArticleIdFormat'))
return
}
}
@@ -401,9 +405,16 @@ const exportExcel = async function () {
},
}
- const res = await API({ url: '/export/exportArticle', data: params })
- if (res.code === 200) {
- ElMessage.success('导出成功')
+ try {
+ const res = await API({url: '/export/exportArticle', data: params});
+ if (res.code === 200) {
+ ElMessage.success(t('elmessage.exportSuccess'));
+ } else {
+ ElMessage.error(res.message || t('elmessage.exportFailed'));
+ }
+ } catch (error) {
+ console.error('导出请求出错:', error);
+ ElMessage.error(t('elmessage.exportFailed'));
}
}
const exportListVisible = ref(false)
@@ -429,11 +440,11 @@ const getExportList = async () => {
});
exportList.value = filteredData
} else {
- ElMessage.error(result.msg || '获取导出列表失败')
+ ElMessage.error(result.msg || t('elmessage.getExportListError'))
}
} catch (error) {
console.error('获取导出列表出错:', error)
- ElMessage.error('获取导出列表失败,请稍后重试')
+ ElMessage.error(t('elmessage.getExportListError'))
} finally {
exportListLoading.value = false
}
@@ -446,7 +457,7 @@ const downloadExportFile = (item) => {
link.download = item.fileName
link.click()
} else {
- ElMessage.warning('文件还在导出中,请稍后再试')
+ ElMessage.warning(t('elmessage.exportingInProgress'))
}
}
//根据状态返回对应的标签类型
@@ -468,15 +479,15 @@ const getTagType = (state) => {
const getTagText = (state) => {
switch (state) {
case 0:
- return '待执行';
+ return t('elmessage.pendingExecution');
case 1:
- return '执行中';
+ return t('elmessage.executing');
case 2:
- return '执行完成';
+ return t('elmessage.executed');
case 3:
- return '执行出错';
+ return t('elmessage.errorExecution');
default:
- return '未知状态';
+ return t('elmessage.unknownStatus');
}
}
@@ -486,27 +497,27 @@ const getTagText = (state) => {
- 精网号:
-
+ {{ t('common.jwcode') }}:
+
- 地区:
-
+ {{ t('common.market') }}:
+
- 类型:
- {{ t('common.type') }}:
+
-
-
-
+
+
+
- 文章/视频ID:
-
+ {{ t('common.articleVideoID') }}:
+
@@ -515,9 +526,9 @@ const getTagText = (state) => {
-
付费时间:
-
{{ t('common.payTime') }}:
+
今
@@ -526,35 +537,35 @@ const getTagText = (state) => {
- 作者:
-
+ {{ t('common.author') }}:
+
- 文章/视频标题:
-
+ {{ t('common.articleVideoTitle') }}:
+
- 查询
- 导出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
@@ -562,26 +573,26 @@ const getTagText = (state) => {
-
+
-
-
-
+
+
+
{{
Array.isArray(consumeTypes)
- ? consumeTypes.find(item => item.value === Number(scope.row.type))?.label || '未知类型'
- : '未知类型'
+ ? consumeTypes.find(item => item.value === Number(scope.row.type))?.label || t('common_list.unknownType')
+ : t('common_list.unknownType')
}}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
{{ formatTime(scope.row.consumeTime) }}
@@ -598,33 +609,33 @@ const getTagText = (state) => {
-
+
-
-
+
+
{{ getTagText(scope.row.state) }}
-
+
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
-
+
- 下载
+ {{ t('common_export.download') }}
@@ -693,11 +704,11 @@ const getTagText = (state) => {
padding: 0 0.5vw;
.text {
- width: 5vw;
+ width: 5.3vw;
font-size: 15px;
}
.textB {
- width: 7vw;
+ width: 7.3vw;
font-size: 15px;
}
diff --git a/src/views/consume/bean/beanConsume.vue b/src/views/consume/bean/beanConsume.vue
index 000b01c..617ea62 100644
--- a/src/views/consume/bean/beanConsume.vue
+++ b/src/views/consume/bean/beanConsume.vue
@@ -6,36 +6,36 @@
:class="{ 'active-btn': activeTab === 'addBeanConsume' }"
@click="navigateTo('addBeanConsume')"
v-if="hasAdd"
- style="width: 6.5vw;"
+ style="min-width: 6.5vw;"
>
- 新增消耗
+ {{ t('consume.addBeanConsume') }}
- 直播
+ {{ t('consume.liveStream') }}
- 铁粉
+ {{ t('consume.dieHardFan') }}
- 文章/视频
+ {{ t('consume.articleVideo') }}
@@ -50,6 +50,8 @@ import {useRouter, useRoute} from 'vue-router';
import {storeToRefs} from 'pinia';
import {useAdminStore} from '@/store/index.js';
import {hasMenuPermission, permissionMapping} from "@/utils/menuTreePermission.js";
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
const router = useRouter();
const route = useRoute();
diff --git a/src/views/consume/bean/dieHardFan.vue b/src/views/consume/bean/dieHardFan.vue
index aba8f1f..a3cdb44 100644
--- a/src/views/consume/bean/dieHardFan.vue
+++ b/src/views/consume/bean/dieHardFan.vue
@@ -8,6 +8,10 @@ import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
const adminStore = useAdminStore();
const { flag } = storeToRefs(adminStore);
+// 国际化
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
// 监听全局flag状态变化
watch(flag, (newFlag, oldFlag) => {
// 当flag状态改变时,重新发送请求
@@ -68,7 +72,7 @@ const getChannel = async function () {
console.log('请求频道列表失败', error)
ElMessage({
type: 'error',
- message: '获取频道列表失败,请稍后重试'
+ message: t('elmessage.getChannelListFailed')
})
}
}
@@ -82,14 +86,14 @@ const getChannel = async function () {
// 抽离类型选项到响应式数组
const consumeTypes = ref([
- { label: '发礼物', value: 1 },
- { label: '发红包', value: 2 },
- { label: '发福袋', value: 3 },
- { label: '付费直播', value: 4 },
- { label: '加入粉丝团', value: 5 },
- { label: '发弹幕', value: 6 },
- { label: '单次付费', value: 7 },
- { label: '连续包月', value: 8 }
+ { label: t('consume.consumeTypes.1'), value: 1 },
+ { label: t('consume.consumeTypes.2'), value: 2 },
+ { label: t('consume.consumeTypes.3'), value: 3 },
+ { label: t('consume.consumeTypes.4'), value: 4 },
+ { label: t('consume.consumeTypes.5'), value: 5 },
+ { label: t('consume.consumeTypes.6'), value: 6 },
+ { label: t('consume.consumeTypes.7'), value: 7 },
+ { label: t('consume.consumeTypes.8'), value: 8 }
])
// // 处理类型选择变化
@@ -247,7 +251,7 @@ const search = function () {
if (beanConsumeFan.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(beanConsumeFan.value.jwcode)) {
- ElMessage.error('请检查精网号格式')
+ ElMessage.error(t('elmessage.checkJwcodeFormat'))
return
}
}
@@ -336,7 +340,7 @@ const getDept = async function () {
console.log('请求地区列表失败', error)
ElMessage({
type: 'error',
- message: '获取地区列表失败,请稍后重试'
+ message: t('elmessage.getRegionListFailed')
})
}
}
@@ -404,9 +408,16 @@ const exportExcel = async function () {
},
}
- const res = await API({ url: '/export/exportFan', data: params })
- if (res.code === 200) {
- ElMessage.success('导出成功')
+ try {
+ const res = await API({url: '/export/exportFan', data: params});
+ if (res.code === 200) {
+ ElMessage.success(t('elmessage.exportSuccess'));
+ } else {
+ ElMessage.error(res.message || t('elmessage.exportFailed'));
+ }
+ } catch (error) {
+ console.error('导出请求出错:', error);
+ ElMessage.error(t('elmessage.exportFailed'));
}
}
const exportListVisible = ref(false)
@@ -432,11 +443,11 @@ const getExportList = async () => {
});
exportList.value = filteredData
} else {
- ElMessage.error(result.msg || '获取导出列表失败')
+ ElMessage.error(result.msg || t('elmessage.getExportListError'))
}
} catch (error) {
console.error('获取导出列表出错:', error)
- ElMessage.error('获取导出列表失败,请稍后重试')
+ ElMessage.error(t('elmessage.getExportListError'))
} finally {
exportListLoading.value = false
}
@@ -449,7 +460,7 @@ const downloadExportFile = (item) => {
link.download = item.fileName
link.click()
} else {
- ElMessage.warning('文件还在导出中,请稍后再试')
+ ElMessage.warning(t('elmessage.exportingInProgress'))
}
}
//根据状态返回对应的标签类型
@@ -471,15 +482,15 @@ const getTagType = (state) => {
const getTagText = (state) => {
switch (state) {
case 0:
- return '待执行';
+ return t('elmessage.pendingExecution');
case 1:
- return '执行中';
+ return t('elmessage.executing');
case 2:
- return '执行完成';
+ return t('elmessage.executed');
case 3:
- return '执行出错';
+ return t('elmessage.errorExecution');
default:
- return '未知状态';
+ return t('elmessage.unknownStatus');
}
}
@@ -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/consume/bean/liveStream.vue b/src/views/consume/bean/liveStream.vue
index fc237ce..b7cd3f8 100644
--- a/src/views/consume/bean/liveStream.vue
+++ b/src/views/consume/bean/liveStream.vue
@@ -6,6 +6,9 @@ import API from '@/util/http.js'
import moment from 'moment'
import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from "pinia";
+// 国际化
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
const adminStore = useAdminStore();
const {flag} = storeToRefs(adminStore);
@@ -73,7 +76,7 @@ const getGift = async function () {
console.log('请求礼物列表失败', error)
ElMessage({
type: 'error',
- message: '获取礼物列表失败,请稍后重试'
+ message: t('elmessage.getGiftListFailed')
})
}
}
@@ -95,19 +98,19 @@ const getChannel = async function () {
console.log('请求频道列表失败', error)
ElMessage({
type: 'error',
- message: '获取频道列表失败,请稍后重试'
+ message: t('elmessage.getChannelListFailed')
})
}
}
// 抽离类型选项到响应式数组
const consumeTypes = ref([
- {label: '发礼物', value: 1},
- {label: '发红包', value: 2},
- {label: '发福袋', value: 3},
- {label: '付费直播', value: 4},
- {label: '加入粉丝团', value: 5},
- {label: '发弹幕', value: 6}
+ {label: t('consume.consumeTypes.1'), value: 1},
+ {label: t('consume.consumeTypes.2'), value: 2},
+ {label: t('consume.consumeTypes.3'), value: 3},
+ {label: t('consume.consumeTypes.4'), value: 4},
+ {label: t('consume.consumeTypes.5'), value: 5},
+ {label: t('consume.consumeTypes.6'), value: 6}
])
// 处理类型选择变化
const handleTypeChange = (value) => {
@@ -160,7 +163,7 @@ const getDept = async function () {
console.log('请求地区列表失败', error)
ElMessage({
type: 'error',
- message: '获取地区列表失败,请稍后重试'
+ message: t('elmessage.getRegionListFailed')
})
}
}
@@ -289,7 +292,7 @@ const search = function () {
if (beanConsumeLive.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(beanConsumeLive.value.jwcode)) {
- ElMessage.error('请检查精网号格式')
+ ElMessage.error(t('elmessage.checkJwcodeFormat'))
return
}
}
@@ -435,13 +438,13 @@ const exportExcel = async function () {
const res = await API({url: '/export/exportLive', data: params});
console.log('导出请求响应:', res);
if (res.code === 200) {
- ElMessage.success('导出成功');
+ ElMessage.success(t('elmessage.exportSuccess'));
} else {
- ElMessage.error(res.message || '导出失败,请稍后重试');
+ ElMessage.error(res.message || t('elmessage.exportFailed'));
}
} catch (error) {
console.error('导出请求出错:', error);
- ElMessage.error('导出失败,请稍后重试');
+ ElMessage.error(t('elmessage.exportFailed'));
}
}
const exportListVisible = ref(false)
@@ -468,11 +471,11 @@ const getExportList = async () => {
});
exportList.value = filteredData
} else {
- ElMessage.error(result.msg || '获取导出列表失败')
+ ElMessage.error(result.msg || t('elmessage.getExportListError'))
}
} catch (error) {
console.error('获取导出列表出错:', error)
- ElMessage.error('获取导出列表失败,请稍后重试')
+ ElMessage.error(t('elmessage.getExportListError'))
} finally {
exportListLoading.value = false
}
@@ -485,7 +488,7 @@ const downloadExportFile = (item) => {
link.download = item.fileName
link.click()
} else {
- ElMessage.warning('文件还在导出中,请稍后再试')
+ ElMessage.warning(t('elmessage.exportingInProgress'))
}
}
//根据状态返回对应的标签类型
@@ -507,15 +510,15 @@ const getTagType = (state) => {
const getTagText = (state) => {
switch (state) {
case 0:
- return '待执行';
+ return t('elmessage.pendingExecution');
case 1:
- return '执行中';
+ return t('elmessage.executing');
case 2:
- return '执行完成';
+ return t('elmessage.executed');
case 3:
- return '执行出错';
+ return t('elmessage.errorExecution');
default:
- return '未知状态';
+ return t('elmessage.unknownStatus');
}
}
@@ -525,42 +528,42 @@ const getTagText = (state) => {
- 精网号:
-
+ {{ t('common.jwcode') }}:
+
- 地区:
-
+ {{ t('common.market') }}:
+
- 礼物名称:
- {{ t('common.giftName') }}:
+
-
- 频道:
-
+ {{ t('common.channel') }}:
+
-
-
直播间:
-
+
+ {{ t('common.liveRoom') }}:
+
-
消费时间:
-
{{ t('common.consumetime') }}:
+
今
@@ -569,24 +572,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
@@ -594,23 +597,23 @@ const getTagText = (state) => {
-
+
-
-
-
+
+
+
-
-
+
+
- {{ 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') }}
-
+
- 下载
+ {{ t('common_export.download') }}
@@ -711,7 +714,7 @@ const getTagText = (state) => {
padding: 0 0.5vw;
.text {
- width: 5vw;
+ width: 5.3vw;
font-size: 15px;
}
diff --git a/src/views/moneyManage/receiveDetail/receiveDetail1.vue b/src/views/moneyManage/receiveDetail/receiveDetail1.vue
index a939432..8a73f47 100644
--- a/src/views/moneyManage/receiveDetail/receiveDetail1.vue
+++ b/src/views/moneyManage/receiveDetail/receiveDetail1.vue
@@ -1497,7 +1497,7 @@ onMounted(async function () {
if (adminData.value.roleId == 2) {
superAdmin.value = true
- if(adminData.value.markets == '总部' || adminData.value.markets == '研发部' || adminData.value.markets == 'headquarters'){
+ if(adminData.value.markets == '总部' || adminData.value.markets == '研发部' || adminData.value.markets == 'Headquarters'){
console.log('提示了吗');
ElMessageBox.alert('管理员账号只能看到所属地区对应地区财务数据,请注意设置所属地区','注意',{
diff --git a/src/views/permissions/userPermission.vue b/src/views/permissions/userPermission.vue
index 011a12b..4a6e774 100644
--- a/src/views/permissions/userPermission.vue
+++ b/src/views/permissions/userPermission.vue
@@ -810,9 +810,9 @@ const confirmResetPassword = async function () {
// 权限检查
- if (adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'headquarters' || adminData.value.markets[0] === 'R&D Department') {
+ if (adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'Headquarters' || adminData.value.markets[0] === 'R&D Department') {
- console.log('符合条件,可以操作', adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'headquarters' || adminData.value.markets[0] === 'R&D Department');
+ console.log('符合条件,可以操作', adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'Headquarters' || adminData.value.markets[0] === 'R&D Department');
const params = {
account: currentRow.value.account,
}
diff --git a/src/views/recharge/bean/addBeanRecharge.vue b/src/views/recharge/bean/addBeanRecharge.vue
index 6277518..dfc7138 100644
--- a/src/views/recharge/bean/addBeanRecharge.vue
+++ b/src/views/recharge/bean/addBeanRecharge.vue
@@ -276,7 +276,7 @@ const handleAddForm = async () => {
width: 35vw;
height: 28vh;
margin-top: 5vh;
- display: flex;
+ // display: flex;
justify-content: center;
}
}
diff --git a/src/views/workspace/index.vue b/src/views/workspace/index.vue
index d052dc3..4aac2fa 100644
--- a/src/views/workspace/index.vue
+++ b/src/views/workspace/index.vue
@@ -42,7 +42,7 @@ const getAdminData = async function () {
loading.value = true; // 开始加载
const result = await API({url: '/admin/userinfo', data: {}});
GraphFlag.value = result.markets !== '总部' && result.markets !== '研发部'
- && result.markets !== 'headquarters' && result.markets !== 'R&D Department'
+ && result.markets !== 'Headquarters' && result.markets !== 'R&D Department'
;