diff --git a/src/components/dialogs/LanguageSwitch.vue b/src/components/dialogs/LanguageSwitch.vue
index db2f8f3..e61e067 100644
--- a/src/components/dialogs/LanguageSwitch.vue
+++ b/src/components/dialogs/LanguageSwitch.vue
@@ -1,7 +1,7 @@
-
+
@@ -43,7 +43,7 @@ import request from "@/util/http.js";
import {useAdminStore} from '@/store/index.js';
import {storeToRefs} from "pinia";
-const {locale} = useI18n()
+const { locale, t } = useI18n()
// 控制弹窗显示
const dialogVisible = ref(false)
@@ -55,17 +55,14 @@ const currentLang = computed(() => locale.value)
const tempLang = ref('')
// 语言选项
-const langOptions = [
- {label: '中文(简体)', value: 'zh-CN'},
- // {label: '中文(繁體)', value: 'zh-TW'},
- {label: 'English', value: 'en'},
- // {label: 'ภาษาไทย', value: 'th'},
- // {label: 'Tiếng Việt', value: 'vi'}
-]
+const langOptions = computed(() => ([
+ { label: t('home.languageDialog.options.zhCN'), value: 'zh-CN' },
+ { label: t('home.languageDialog.options.en'), value: 'en' },
+]))
// 获取语言显示名称
const getLangLabel = (langCode) => {
- const find = langOptions.find(item => item.value === langCode)
+ const find = langOptions.value.find(item => item.value === langCode)
return find ? find.label : langCode
}
@@ -84,7 +81,7 @@ const handleConfirm = async () => {
await getMenuTree()
await selectMarket()
- ElMessage.success(`语言已切换为:${getLangLabel(tempLang.value)}`)
+ ElMessage.success(t('elmessage.languageChangedSuccess', { lang: getLangLabel(tempLang.value) }))
dialogVisible.value = false
// 触发页面刷新以重新加载数据
setTimeout(() => {
@@ -118,7 +115,7 @@ const getMenuTree = async function () {
} catch (error) {
console.error('菜单数据请求失败:', error)
// return { code: 500, msg: '获取菜单失败' }
- ElMessage.error('网络异常')
+ ElMessage.error(t('elmessage.inNetworkError'))
adminStore.clearState()
}
}
@@ -176,4 +173,4 @@ const selectMarket = async function () {
height: 220px !important;
overflow-y: auto !important;
} */
-
\ No newline at end of file
+
diff --git a/src/components/dialogs/changePassword.vue b/src/components/dialogs/changePassword.vue
index d0577e0..fb045dc 100644
--- a/src/components/dialogs/changePassword.vue
+++ b/src/components/dialogs/changePassword.vue
@@ -7,10 +7,13 @@ import {ElMessage} from "element-plus";
import API from '@/util/http.js'
import PasswordSuccess from '../PasswordSuccess.vue';
import router from "@/router/index.js";
+import { useI18n } from 'vue-i18n'
// 父组件调用
const emit = defineEmits(['confirm'])
+const { t } = useI18n()
+
const passwdFormRef = ref(null)
const passwd = reactive({
account: '',
@@ -43,7 +46,7 @@ const isComplexValid = computed(() => {
watch(() => passwd.newPassword, (val) => {
if (val && val === passwd.oldPassword) {
- errorMsg.value = '新密码不能与旧密码一致'
+ errorMsg.value = t('home.password.rules.notSameAsOld')
} else {
errorMsg.value = ''
}
@@ -52,22 +55,22 @@ watch(() => passwd.newPassword, (val) => {
const loading = ref(false)
// 表单校验规则
const rules = reactive({
- oldPassword: [{required: true, message: '请输入原密码', trigger: 'blur'}],
+ oldPassword: [{required: true, message: t('home.password.oldPasswordPlaceholder'), trigger: 'blur'}],
newPassword: [
- {required: true, message: '新密码不能为空', trigger: 'blur'},
+ {required: true, message: t('home.password.rules.newPasswordRequired'), trigger: 'blur'},
{
validator: (rule, value, callback) => {
if (!/^[a-zA-Z0-9!@#$%^&*()-_+={}[\]|\\:;"'<>,.?/~\`]+$/.test(value)) {
- callback(new Error('密码只能包含数字、字母或符号'));
+ callback(new Error(t('home.password.rules.allowedChars')));
} else if (value === passwd.oldPassword) {
- callback(new Error('新密码不能与旧密码一致'))
+ callback(new Error(t('home.password.rules.notSameAsOld')))
} else if (value.length < 8 || value.length > 16) {
- callback(new Error('长度应在 8 到 16 个字符'))
+ callback(new Error(t('home.password.rules.length')))
} else {
const types = [/\d/, /[a-z]/, /[A-Z]/, /[!@#$%^&*()\-_+={}[\]|\\:;"'<>,.?/~`]/];
const matchCount = types.filter((r) => r.test(value)).length
if (matchCount < 2) {
- callback(new Error('密码至少包含两种类型(数字、字母或符号)'))
+ callback(new Error(t('home.password.rules.complexity')))
} else {
callback()
}
@@ -77,11 +80,11 @@ const rules = reactive({
}
],
againPassword: [
- {required: true, message: '请再次输入新密码', trigger: 'blur'},
+ {required: true, message: t('home.password.rules.againPasswordRequired'), trigger: 'blur'},
{
validator: (rule, value, callback) => {
if (value !== passwd.newPassword) {
- callback(new Error('两次输入密码不一致'))
+ callback(new Error(t('home.password.rules.notMatch')))
} else {
callback()
}
@@ -107,7 +110,7 @@ const changePassword = async function () {
if (result.code === 200) {
// 使用命名路由跳转
//await router.push({ name: 'PasswordSuccess' });
- ElMessage.success('修改密码成功');
+ ElMessage.success(t('elmessage.resetPasswordSuccess'));
// 或者使用路径跳转(确保大小写完全匹配)
//await router.push('/PasswordSuccess');
emit('confirm')
@@ -117,20 +120,20 @@ const changePassword = async function () {
router.push('/PasswordSuccess'); // push跳转,留下历史记录,replace跳转,不留下历史记录
}, 1000);
}else if (result.code === 0){
- ElMessage.error('原密码错误,请重新输入')
+ ElMessage.error(t('elmessage.oldPasswordError'))
passwd.oldPassword = '';
}else if(result.code === 400){
// 显示失败弹窗
console.log('修改密码失败')
- ElMessage.error('修改密码失败')
+ ElMessage.error(t('elmessage.resetPasswordFailed'))
//todo 待完善
}
} catch (error) {
console.error('修改密码失败', error)
- ElMessage.error('操作失败')
+ ElMessage.error(t('elmessage.operationFailed'))
// 抛出错误让外层捕获,保持finally正常执行
throw error
}
@@ -186,34 +189,34 @@ onMounted(() => {
label-width="100px"
class="password-form"
>
-
+
-
+
-
+
-
+
@@ -225,13 +228,13 @@ onMounted(() => {
- 密码由8-16位数字、字母或符号组成
+ {{ t('home.password.tips.lengthAndChars') }}
- 至少含2种以上字符
+ {{ t('home.password.tips.complexity') }}
@@ -250,7 +253,7 @@ onMounted(() => {
:loading="loading"
:disabled="!isLengthValid || !isComplexValid"
>
- {{ loading ? '修改中...' : '确定' }}
+ {{ loading ? t('home.password.submitting') : t('common.confirm') }}
diff --git a/src/components/locales/lang/en.js b/src/components/locales/lang/en.js
index e47b8ca..bf98dde 100644
--- a/src/components/locales/lang/en.js
+++ b/src/components/locales/lang/en.js
@@ -1,731 +1,1068 @@
-
-
// Do not modify the variables in this package arbitrarily!!!
export default {
// Common Group (Filters, Buttons, Units)
common: {
// Filters
- name: 'Name',
- account: 'OA Account',
- accountPlaceholder: 'Please enter OA account',
- jwcode: 'Homily ID',
- jwcodePlaceholder: 'Please enter Homily ID',
- activityName: 'Activity',
- activityNamePlaceholder: 'Please enter activity name',
- goodsName: 'Product Name',
- goodsNamePlaceholder: 'Please enter product name',
- payModel: 'Payment Method',
- payModelPlaceholder: 'Select a payment method',
- refundType: 'Refund Type',
- 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',
- rechargePlatformPlaceholder: 'Select recharge platform',
- payPlatform: 'Platform',
- payPlatformPlaceholder: 'Select platform',
- updateType: 'Update Type',
- updateTypePlaceholder: 'Select update type',
- customerBelong: 'Customer Belonging',
- activityBelong: 'Activity Belonging',
- consumeTime: 'Consumption Time',
- rechargeTime: 'Recharge Time',
- refundTime: 'Refund Time',
- updateTime: 'Update Time',
- submitTime: 'Submit Time',
- auditTime: 'Review time',
- startTime: 'Start Time',
- to: 'To',
- endTime: 'End Time',
-
+ name: "Name",
+ pleaseInputName: "Enter name",
+ customerName: "Customer",
+ customerNamePlaceholder: "Enter customer name",
+ jwcode: "Homily ID",
+ jwcodePlaceholder: "Enter Homily ID",
+ activityName: "Activity",
+ activityNamePlaceholder: "Enter activity",
+ activityNameChoose: "Choose activity",
+ goodsName: "Product Name",
+ goodsNamePlaceholder: "Enter product name",
+ account: "OA Account",
+ accountPlaceholder: "Enter OA account",
+ payModel: "Payment Method",
+ payModelPlaceholder: "Select payment method",
+ refundType: "Refund Type",
+ refundTypePlaceholder: "Select refund type",
+ market: "Region",
+ marketPlaceholder: "Select region",
+ position: "Position",
+ positionPlaceholder: "Select position",
+ roleName: "Role",
+ roleNamePlaceholder: "Enter role name",
+ refundCurrency: "Refund Currency",
+ refundCurrencyPlaceholder: "Select currency",
+ refundMethod: "Refund Via",
+ refundMethodPlaceholder: "Select method",
+ orderStatus: "Order Status",
+ orderStatusPlaceholder: "Select status",
+ payCurrency: "Pay Currency",
+ payCurrencyPlaceholder: "Select currency",
+ productName: "Product",
+ productNamePlaceholder: "Enter product",
+ type: "Type",
+ typePlaceholder: "Select type",
+ customerBelong: "Cust. Region",
+ activityBelong: "Activity Region",
+ articleVideoID: "Post/Video ID",
+ articleVideoIDPlaceholder: "Enter ID",
+ author: "Author",
+ authorPlaceholder: "Enter author",
+ articleVideoTitle: "Title",
+ articleVideoTitlePlaceholder: "Enter title",
+ giftName: "Gift",
+ giftNamePlaceholder: "Enter gift",
+ channel: "Channel",
+ channelPlaceholder: "Enter channel",
+ liveRoom: "Live Room",
+ liveRoomPlaceholder: "Enter live room",
+ consumePlatform: "Consume Platform",
+ consumePlatformPlaceholder: "Select platform",
+ rechargePlatform: "Recharge Platform",
+ rechargePlatformPlaceholder: "Select platform",
+ payPlatform: "Platform",
+ payPlatformPlaceholder: "Select platform",
+ updateType: "Update Type",
+ updateTypePlaceholder: "Select type",
+ orderNo: "Order No.",
+ orderNoPlaceholder: "Enter order no.",
+ consumeTime: "Consume Time",
+ consumetime: "Consume Time",
+ payTime: "Payment Time",
+ rechargeTime: "Recharge Time",
+ refundTime: "Refund Time",
+ updateTime: "Update Time",
+ submitTime: "Submit Time",
+ auditTime: "Audit Time",
+ startTime: "Start Time",
+ to: "To",
+ endTime: "End Time",
// 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',
- yesterday: 'Yesterday',
- last7Days: 'Last 7 Days',
-
+ search: "Query",
+ searchLabel: "Search",
+ searchPlaceholder: "Enter keywords",
+ searchButton: "Search",
+ exportExcel: "Export Excel",
+ viewExportList: "Export List",
+ reset: "Reset",
+ audit: "Audit",
+ refund: "Refund",
+ edit: "Edit",
+ editPermission: "Edit Perm",
+ resetPassword: "Reset Pwd",
+ delete: "Delete",
+ withdraw: "Recall",
+ pass: "Approve",
+ close: "Close",
+ reject: "Reject",
+ cancel: "Cancel",
+ confirm: "Confirm",
+ submit: "Submit",
+ add: "Add",
+ addUser: "Add User",
+ addRole: "Add Role",
+ save: "Save",
+ saving: "Saving...",
+ addActivity: "Add Activity",
+ modify: "Modify",
+ addReceive: "Add Receipt",
+ confirmRecharge: "Confirm",
+ batchImport: "Batch Import",
+ import: "Import",
+ uploadHint: "Drag file here or click",
+ pendingFee: "Fee Pending",
+ viewRejectReason: "Reject Reason",
+ viewProgress: "View Progress",
+ viewProgress: "View Progress",
+ // Buttons-Date
+ today: "Today",
+ yesterday: "Yesterday",
+ last7Days: "Last 7 Days",
+ // Buttons-Cash-Audit
+ pendingAudit: "Pending",
+ passed: "Passed",
+ completed: "Completed",
+ withdrawn: "Recalled",
+ rejected: "Rejected",
+ refunded: "Refunded",
// Units
- rechargeSGD: 'Recharge (SGD)',
- consumeSGD: 'Consumption (SGD)',
- refundGoldCoin: 'Total refunded coins',
- totalGoldCoin: 'Total Gold Coins',
- netGoldChange: 'Net Coin Change',
+ rechargeSGD: "Recharge (SGD)",
+ consumeSGD: "Consume (SGD)",
+ refundGoldCoin: "Refunded Coins",
+ totalGoldCoin: "Total Coins",
+ netGoldChange: "Net Change",
netGoldChangeTip:
- 'The current total shows the net change in gold coins within the selected range (Total Recharged - Total Consumed + Total Refunded)',
- permanentGold: 'Permanent Gold Coins',
- freeGold: 'Free Gold Coins',
- taskGold: 'Task Gold Coins',
- SGD: 'SGD',
- goldCoin: '',
- 条: 'items',
- 个: '',
- goldBean: '',
-
+ "Current total shows net coin change in selected range (Recharge - Consume + Refund)",
+ permanentGold: "Permanent Coins",
+ freeGold: "Free Coins",
+ taskGold: "Task Coins",
+ SGD: "SGD",
+ goldCoin: "Coins",
+ 条: "items",
+ 个: "",
+ goldBean: "Beans",
+ // Gold Bean Units
+ totalGoldBean: "Total Beans:",
+ payGoldBean: "PermanentBeans:",
+ freeGoldBean: "Free Beans:",
+ rechargeGoldBean: "Recharge Beans:",
+ totalRechargeSGD: "Total SGD:",
+ nowGoldBeanNum: "Current Beans:",
+ consumeGoldBean: "Consumed Beans:",
// Dialog Titles
- will: 'Will ',
- deleteRecord: 'Delete Record!',
- customerName: 'Customer Name',
- orderStatus: 'Order Status',
- paymentCurrency: 'Payment Currency',
- payType: 'Payment Method',
- customerNamePlaceholder: 'Please enter the customer name',
- payTime: 'Payment time',
- deleteTranslationRecord: 'Delete this translation record',
- deleteActivityRecord: 'Delete this activity record',
- noData: 'No data',
- all: 'All'
+ will: "Will ",
+ deleteRecord: "Delete Record!",
+ deleteTranslationRecord: "Delete translation",
+ deleteActivityRecord: "Delete activity data",
+ willRefundOrder: "Will refund this order!",
+ willRecallOrder: "Will recall this order!",
+ // Markets
+ markets: {
+ headquarters: "HQ",
+ },
+ noData: "No Data",
+ all: "All",
+ unknownSubmitter: "Unknown submitter",
+ noAuditorRecorded: "No auditor recorded",
+ noExecutorRecorded: "No executor recorded",
},
- // Permission module
+ // 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.'
+ warning: "Warning",
+ user: "This user",
+ changeRoleConfirmContent1: "Confirm role change?
Changing role for [",
+ changeRoleConfirmContent2: "] from [",
+ changeRoleConfirmContent3: "] to [",
+ changeRoleConfirmContent4:
+ "]
Permissions will update to the new role configuration. Please confirm.",
+ changeRoleSuccessContent1: "User ",
+ changeRoleSuccessContent2: "'s role changed to [",
+ roleRegionNote:
+ "Region setting is for display only; used by branch managers to view roles.",
},
// 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',
- queryFailed: 'Query failed. Please check your network or Homily ID',
- refundTypeError: 'Refund type format error. Please contact the administrator',
- getTotalFailed: 'Failed to obtain summary data. Please try again later',
- payPlatformError: 'Platform data format error. Please contact the administrator',
- confirmRefund: 'Confirm refund?',
-
+ languageChangedSuccess: 'Language switched to {lang}',
+ refreshLoading: 'Refreshing data...',
+ refreshSuccess: 'Data refreshed',
+ refreshFailed: 'Refresh failed: {msg}',
+ unknownError: 'Unknown error',
+ refreshError: 'Refresh error, try again',
+ logoutSuccess: 'Logged out',
+ staffHidden: 'Staff data hidden',
+ staffShown: 'Staff data shown',
+ jumpSuccess: 'Navigated',
+ jumpFailed: 'Navigation failed',
+ oldPasswordError: 'Old password incorrect',
+ addSuccess: "Added successfully",
+ addsuccess: "Added successfully",
+ prompt: "Prompt",
+ editSuccess: "Edited successfully",
+ withdrawSuccess: "Recalled successfully",
+ dataException: "Data exception",
+ addRefundSuccess: "Refund added",
+ submitSuccess: "Submitted",
+ submitFailed: "Submission failed",
+ cancelOperation: "Cancelled",
+ searchSuccess: "Query successful",
+ searchFailed: "Query failed",
+ requestFailed: "Request failed",
+ jwcodeError: "Invalid Homily ID",
+ customerSuccess: "Customer found",
+ customerNotExist: "Customer not found",
+ addFailedUnknown: "Unknown error",
+ addUserPermissionFailed: "Add permission failed",
+ addFailed: "Add failed, check network/admin",
+ queryFailed: "Query failed, check network/ID",
+ refundTypeError: "Refund type error",
+ getTotalFailed: "Get total failed, retry later",
+ payPlatformError: "Platform info error",
+ confirmRefund: "Confirm refund?",
+ limitRedAmount: "Insufficient red envelope deduction",
+ inNetworkError: "Network error, retry",
+ adminInfoLoadFailed: "Admin info load failed",
+ deleteSuccess: "Deleted",
+ success: "Success",
+ confirmDeleteUser: "Delete this user?",
+ resetPasswordConfirm: "Reset this password?",
+ resetPasswordDefault: "Pwd will be: 123456",
+ checkAccountFormat: "Check OA format",
+ deviceLimitReached: "Device limit reached",
+ noParentRoleMarket: "Parent role has no region",
+ inputRefundBeansBoth: "Enter refund coin and free coin counts",
+ limitRefundGoldNotExceedOriginal: "Refund coins cannot exceed original coins",
+ limitRefundFreeNotExceedOriginal: "Refund free coins cannot exceed original free coins",
+ refundAmountError: "Refund amount incorrect",
+ roleAddSuccess: "Role {roleName} added",
+ enableSuccess: "Enabled",
+ disableSuccess: "Disabled",
+ inputRoleName: "Enter role name",
+ roleNameLengthLimit: "Role name 2-20 chars",
+ selectPermissionList: "Select permission",
+ inputAccount: "Enter OA account",
+ onlyDigits: "Digits only",
+ lengthLimit20: "Max 20 chars",
+ inputUserName: "Enter username",
+ inputPosition: "Enter position",
+ inputAtLeastOneMachineCode: "Enter machine code",
+ roleNameDuplicate: "Role name exists",
+ resetPasswordSuccess: "Reset successful",
+ resetPasswordFailed: "Reset failed",
+ noPermissionResetMarket1: "No permission to modify ",
+ noPermissionResetMarket2: " region user passwords",
+ selectRoleName: "Select role name",
+ // Import & Upload
+ importSuccess: "Import successful",
+ importFailed: "Import failed",
+ importFailedNetworkOrFormat: "Check network/format",
+ onlyExcelAllowed: "Excel only",
+ fileTooLarge5MB: "Max 5MB",
+ fileSelectSuccess: "File selected",
+ uploadLimitOne: "One file only",
+ selectFileFirst: "Select file first",
+ // Plain text validation
+ onlyPlainText: "Plain text only, no HTML",
// Validation
- checkInputContent: 'Please verify the input content',
- permanentAndFreeNoZero: 'Permanent and free gold coins cannot both be 0',
- checkRate: 'Please select',
- checkMoney: 'Please enter the amount',
- checkJwcode: 'Please enter Homily ID',
- checkGoodsName: 'Please select a product',
- checkUserInfo: 'Please query user information first',
- checkActivity: 'Please enter activity name',
- checkPermanentGold: 'Please enter permanent gold coin amount',
- checkFreeGold: 'Please enter free gold coin amount',
- checkTaskGold: 'Please enter task gold coin amount',
- checkNumber: 'Please enter a valid number',
- checkPayModel: 'Please select a payment method',
- checkPayTime: 'Please select a payment time',
- checkQueryParams: 'Please check query parameters',
- checkRefundType: 'Please select a refund type',
- checkRefundGoods: 'Please select a refund product',
- checkOrderNo: 'Please enter the order number',
-
+ checkInputContent: "Check input",
+ permanentAndFreeNoZero: "Perm/Free coins cannot both be 0",
+ checkRate: "Select currency",
+ checkMoney: "Enter amount",
+ checkJwcode: "Enter Homily ID",
+ checkJwcodeFormat: "Invalid ID format",
+ checkGoodsName: "Select product",
+ checkUserInfo: "Query user first",
+ checkActivity: "Enter activity",
+ checkPermanentGold: "Enter perm coins",
+ checkFreeGold: "Enter free coins",
+ checkTaskGold: "Enter task coins",
+ checkNumber: "Enter valid number",
+ checkPayModel: "Select payment method",
+ checkPayTime: "Select payment time",
+ checkQueryParams: "Check params",
+ checkRefundType: "Select refund type",
+ checkRefundGoods: "Select refund product",
+ checkOrderNo: "Enter order no.",
+ checkPayBean: "Enter paid beans",
+ checkNonNegative: "Non-negative integer only",
+ checkFreeBean: "Enter free beans",
+ checkRemark: "Enter remark",
+ checkFormInfo: "Complete the form",
+ selectBusinessBelong: "Select performance region",
+ selectMarket: "Select region",
+ selectStartTime: "Select start time",
+ selectEndTime: "Select end time",
+ currentSelectionEmpty: "No data selected",
+ checkArticleIdFormat: "Check Article ID",
+ checkNameOrJwcode: "Enter Name or ID",
+ checkPermanentFormat: "Check perm coin format",
+ checkFreeFormat: "Check free coin format",
+ checkProductNum: "Enter quantity",
+ checkNumUnit: "Select unit",
+ productNumError: "Quantity must be integer > 0",
+ checkFormInfoSubmit: "Complete form to submit",
+ checkPayAmountFormat: "Check amount format",
+ checkNumberOrDecimal: "Enter number/decimal",
// Validation Error
- noEmptyJwcode: 'Homily ID cannot be empty',
- noEmptySumGold: 'Total consumed gold coins cannot be empty',
- noUser: 'User does not exist',
- noOrder: 'No related order found',
- noTotalGoldZero: 'Total gold coins cannot be 0',
- noNegativeNumber: 'Negative numbers are not allowed',
- limitDigitJwcode: 'Homily ID may only contain digits',
- limitNoSpecialChar: 'Cannot contain special characters or negative numbers',
- limitNegativeNumber: 'Consumed gold coins cannot be negative',
- limitExceeded: 'Consumed gold coins exceed the available balance',
- limitSix: 'Integer part cannot exceed 6 digits',
- limitTwoDecimal: 'Decimal part cannot exceed 2 digits',
- limitZero: 'Amount cannot be less than 0',
- limitPositiveNumber: 'Enter a positive number greater than 0 (up to 2 decimals)',
- limitJwcodeNine: 'Homily ID must be numeric and up to 9 digits',
- limitBalance: 'Entered amount exceeds available balance',
- limitRedAmount: 'Insufficient total amount (coins + red envelope)',
-
+ noEmptyJwcode: "Homily ID required",
+ noEmptySumGold: "Total consumed coins required",
+ noUser: "User not found",
+ noOrder: "Order not found",
+ noTotalGoldZero: "Total coins cannot be 0",
+ noNegativeNumber: "No negative numbers",
+ noPayBeanFreeBeanZero: "Paid/Free beans cannot both be 0",
+ limitDigitJwcode: "ID digits only",
+ limitJwcodeLength: "ID max 8 digits",
+ limitNoSpecialChar: "No special chars/negative",
+ limitNegativeNumber: "Consumed cannot be negative",
+ limitExceeded: "Exceeds available balance",
+ limitSix: "Integer max 6 digits",
+ limitTwoDecimal: "Decimal max 2 digits",
+ limitZero: "Amount cannot be < 0",
+ limitPositiveNumber: "Enter positive number (>0, max 2 decimals)",
+ limitPositiveNumber2: "Valid amount (max 2 decimals)",
+ limitPayAmountZero: "Amount cannot be 0",
+ limitPayAmountMax: "Max amount 9,999,999",
+ limitPayAmountFormat: "Max 6 integers, 2 decimals",
+ limitJwcodeNine: "ID must be digits (max 9)",
+ limitBalance: "Amount > balance",
+ limitRefundAmount: "Refund > Order Amount",
// Image Upload
- onlyUploadJPGPNG: 'Only JPG/PNG images are allowed',
- limitImageSize: 'Image size cannot exceed 1MB',
- uploadSuccess: 'Upload successful',
- uploadFailed: 'Upload failed',
-
+ onlyUploadJPGPNG: "JPG/PNG only!",
+ limitImageSize: "Max 1MB!",
+ uploadSuccess: "Upload success",
+ uploadFailed: "Upload failed",
+ photoFormatError: "Must be JPG/PNG!",
+ limitImageSize2MB: "Max 2MB!",
// Audit
- noPermission: 'No permission',
- checkJwcodeFormat: 'Please check the Homily ID format',
- rejectReasonPlaceholder: 'Please enter a rejection reason',
- rejectSuccess: 'Rejected successfully',
- rejectFailed: 'Rejection failed',
- operationFailed: 'Operation failed',
- approveSuccess: 'Review approved successfully',
- approveFailed: 'Approval failed',
- activityFormatError: 'Activity data format error. Please contact the administrator',
- 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',
-
+ noPermission: "No permission",
+ rejectReasonPlaceholder: "Enter reject reason",
+ rejectSuccess: "Rejected",
+ rejectFailed: "Reject failed",
+ operationFailed: "Operation failed",
+ approveSuccess: "Approved",
+ approveFailed: "Approve failed",
+ editSuccess: "Edit submitted",
+ editFailed: "Edit failed",
+ activityFormatError: "Activity data format error",
+ rechargeFormatError: "Recharge method error",
+ getRechargeError: "Get method failed",
+ formValidationFailed: "Validation failed",
// Export
- exportSuccess: 'Export successful',
- exportFailed: 'Export failed. Please try again later',
- getExportListError: 'Failed to retrieve export list. Please try again later',
- exportingInProgress: 'File is being generated. Please try again later',
-
+ exportSuccess: "Export successful",
+ exportFailed: "Export failed, retry later",
+ getExportListError: "Get list failed",
+ exportingInProgress: "Exporting...",
// Export Status
- pendingExecution: 'Pending',
- executing: 'In Progress',
- executed: 'Completed',
- errorExecution: 'Error',
- unknownStatus: 'Unknown',
- noPermissionRefundView: 'No permission to view refunds',
- noPermissionRefundAudit: 'No permission to audit refunds',
- noPermissionRefundTrack: 'No permission to track refund progress',
- jwcodeTooLong: 'Homily ID must be no more than 8 digits',
- noPermissionAreaRefundView: 'no refund authority view area',
- noPermissionAreaRefundAudit: 'no refund authority audit area',
- noPermissionAreaRefundTrack: 'no view refund district authority',
- invalidJwcodeFormat: 'The fine network number format is incorrect. Please enter a positive integer.',
-
- checkRefundModel: 'Please select the refund method',
- checkRefundReason: 'Please enter the reason for the refund',
- checkRefundGold: 'Please enter the number of refunded gold coins and free gold coins.',
- invalidPermanentGold: 'Please enter the correct number of permanent gold coins',
- invalidFreeGold: 'Please enter the correct number of free gold coins',
- refundGoldExceed: "The number of refunded gold coins cannot exceed the original number of gold coins.",
- refundFreeExceed: 'The number of refunded free gold coins cannot exceed the original number of free gold coins.',
+ pendingExecution: "Pending",
+ executing: "Processing",
+ executed: "Done",
+ errorExecution: "Error",
+ unknownStatus: "Unknown",
+ // Fetch
+ getMarketListFailed: "Get markets failed",
+ getChartDataFailed: "Get chart data failed",
+ renderChartFailed: "Chart render failed",
+ // Rate
+ pleaseInputRate: "Enter rate",
+ pleaseInputCorrectRateFormat: "Check rate format",
+ pleaseInputCorrectSymbol: "Check symbol",
+ onlyOneDecimalPoint: "One decimal point only",
+ integerPartLimit: "Integer max 6 digits",
+ decimalPartLimit: "Decimal max 7 digits",
+ // Gold Bean
+ systemRechargeAreaError: "System recharge region error",
+ onlineRechargeAreaError: "Online recharge region error",
+ // Gold Bean Consume
+ getGiftListFailed: "Get gifts failed",
+ getChannelListFailed: "Get channels failed",
+ getRegionListFailed: "Get regions failed",
+ // Cash Management
+ jwcodePositiveError: "ID must be positive integer",
+ orderDataLoadFailed: "Order load failed",
+ onlineDataSupport: "Online supports coin recharge only",
+ selectRefundModel: "Select refund method",
+ refundReasonPlaceholder: "Enter refund reason",
+ activityLoadFailed: "Activity load failed",
+ activityDataLoadFailed: "Activity data error",
+ // Permission
+ noPermissionText: "No permission, contact admin",
+ permissionPrompt: "Permission Prompt",
+ noRoleAssigned: "No role assigned",
+ unknownRole: "Unknown role",
},
// 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',
- orderNo: 'Order No.',
- goodsName: 'Product Name',
- refundType: 'Refund Type',
- refundModel: 'Refund Method',
- refundModelAll: 'Full Refund',
- refundModelPart: 'Partial Refund',
- refundGoldCoin: 'Total refunded coins',
- activity: 'Activity',
- businessBelong: 'Performance Belonging',
- startTime: 'Start Time',
- endTime: 'End Time',
- status: 'Status',
- creator: 'Creator',
- rateName: 'Currency',
- rechargeAmount: 'Recharge Amount',
- Gold: 'Gold Coin Quantity',
- freeGold6Month: 'Free Gold (Exp. June)',
- freeGold12Month: 'Free Gold (Exp. Dec)',
- permanentGold: 'Permanent Gold Coins',
- freeGold: 'Free Gold Coins',
- taskGold: 'Task Gold Coins',
- rechargePlatform: 'Recharge Platform',
- consumePlatform: 'Consumption Platform',
- consumeTotalGold: 'Total coins consumed',
- payModel: 'Payment Method',
- remark: 'Remark',
- orderStatus: 'Order Status',
- submitter: 'Submitter',
- rechargeTime: 'Recharge Time',
- consumeTime: 'Consumption Time',
- refundTime: 'Refund Time',
- updateTime: 'Update Time',
- homilyId: 'Homily ID',
- goodsNum: 'Quantity',
- refundReason: 'Refund Reason',
+ id: "No.",
+ originalChinese: "Chinese",
+ english: "English",
+ thai: "Thai",
+ chineseTraditional: "Trad. Chinese",
+ malay: "Malay",
+ vietnamese: "Vietnamese",
+ translated: "Translated",
+ untranslated: "Untranslated",
+ account: "OA Account",
+ name: "Name",
+ jwcode: "Homily ID",
+ market: "Region",
+ position: "Position",
+ roleName: "Role",
+ departmentPermission: "Dept Perm",
+ parentRole: "Parent Role",
+ permissionScope: "Scope",
+ gift: "Gift",
+ sumGold: "Total Coins",
+ payPlatform: "Platform",
+ type: "Type",
+ orderNo: "Order No.",
+ number: "number",
+ money: "Amount",
+ goodsName: "Product Name",
+ productName: "Product",
+ productNum: "productNum",
+ refundType: "Refund Type",
+ refundModel: "Refund Method",
+ refundModelAll: "Full Refund",
+ refundModelPart: "Part Refund",
+ refundCurrency: "Refund Curr",
+ refundGoldCoin: "Refunded Coins",
+ refundAmount: "Refund Amt",
+ refundChannels: "Refund Via",
+ refundVoucher: "Refund IMG",
+ refundSuccess: "Refund Success",
+ refundReason: "Refund Reason",
+ activity: "Activity",
+ businessBelong: "Region",
+ startTime: "Start Time",
+ endTime: "End Time",
+ status: "Status",
+ creator: "Creator",
+ rateName: "Currency",
+ num: "Rate",
+ rechargeAmount: "Recharge Amt",
+ Gold: "Coin Qty",
+ freeGold6Month: "Free (Exp Jun)",
+ freeGold12Month: "Free (Exp Dec)",
+ permanentGold: "Perm Coins",
+ freeGold: "Free Coins",
+ taskGold: "Task Coins",
+ rechargePlatform: "Recharge Plat",
+ consumePlatform: "Consume Plat",
+ consumeTotalGold: "Total Consumed",
+ payModel: "Payment",
+ remark: "Remark",
+ orderStatus: "Status",
+ submitter: "Submitter",
+ operator: "Operator",
+ approver: "Approver",
+ rechargeTime: "Recharge Time",
+ consumeTime: "Consume Time",
+ refundTime: "Refund Time",
+ updateTime: "Update Time",
+ receiveTime: "Received Time",
+ rejectTime: "Reject Time",
+ rejectReason: "Reject Reason",
+ refundReason: "Refund Reason",
+ operation: "Operation",
+ // Gold Bean
+ permanentBean: "PermanentBeans",
+ freeBean: "Free Beans",
+ mobile: "Phone",
+ other: "Other",
+ beanNum: "Bean Qty",
+ beanNumTotal: "Total Beans",
+ isBackpack: "Backpack",
+ yes: "Yes",
+ no: "No",
+ channel: "Channel",
+ liveRoomName: "Live Room",
+ consumetime: "Consume Time",
+ memberType: "Member Type",
+ unknownType: "Unknown",
+ joinTime: "Join Time",
+ articleVideoID: "Post/Video ID",
+ articleVideoTitle: "Title",
+ author: "Author",
+ payTime: "Pay Time",
+ currentGoldBean: "Current Beans",
+ historyConsumption: "Hist. Consume",
+ customerName: "Customer",
+ // Cash Management
+ goldRecharge: "Coin Recharge",
+ payCurrency: "Pay Currency",
+ payAmount: "Pay Amount",
+ receiveCurrency: "Rcv Currency",
+ receiveAmount: "Rcv Amount",
+ toSupply: "Pending",
+ pending: "Pending",
+ fee: "Fee",
+ transferVoucher: "Transfer IMG",
+ payVoucher: "Payment IMG",
+ refund: "Refund",
+ normal: "Normal",
activityStatus: {
- notStarted: 'Not Started',
- inProgress: 'In Progress',
- ended: 'Ended',
+ notStarted: "Not Started",
+ inProgress: "In Progress",
+ ended: "Ended",
},
- operation: 'Operation',
- configTime: 'Configuration Time',
- status: 'Status',
- enable: 'Enable',
- disable: 'Disable',
+ configTime: "Config Time",
+ enable: "Enable",
+ disable: "Disable",
},
-
// Common Export Fields
common_export: {
- exportList: 'Export List',
- fileName: 'File Name',
- status: 'Status',
- createTime: 'Created At',
- operation: 'Operation',
- download: 'Download',
- close: 'Close',
+ exportList: "Export List",
+ fileName: "File Name",
+ status: "Status",
+ createTime: "Created At",
+ operation: "Operation",
+ download: "Download",
+ close: "Close",
},
// 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',
- startTime: 'Start Time',
- endTime: 'End Time',
- permanentGold: 'Permanent Gold Coins',
- freeGold: 'Free Gold Coins',
- taskGold: 'Task Gold Coins',
- rechargeAmount: 'Recharge Amount',
- currencyName: 'Currency',
- goodsName: 'Product Name',
- price: 'Original Price',
- goodsNamePlaceholder: 'Select product',
- payModel: 'Collection Method',
- refundType: 'Refund Type',
- refundTypePlaceholder: 'Select refund type',
- orderNo: 'Order No.',
- orderNoPlaceholder: 'Select order number',
- refundModel: 'Refund Method',
- refundModelAll: 'Full Refund',
- refundModelPart: 'Partial Refund',
- refundGoldCoin: 'Total refunded coins',
- payModelPlaceholder: 'Select collection method',
- consumeTotalGold: 'Total coins consumed',
- totalGold: 'Total Coins',
- paymentTime: 'Payment Time',
- paymentVoucher: 'Payment Voucher',
- paymentVoucherPlaceholder: 'JPG/PNG only, ≤1MB',
- remark: 'Remark',
-
- // Confirm Form
- operationConfirm: 'Operation Confirmation',
- userInfo: 'User Information',
- prompt: 'Duplicate Recharge Warning',
- similarRechargeRecords: 'Recent similar recharge records were detected for this user',
- rechargePermanentGold: 'Recharge permanent coins',
- buy: 'Purchase',
- operator: 'Operator',
- continueOperation: 'Do you want to continue the operation?',
+ jwcode: "Homily ID",
+ jwcodePlaceholder: "Enter Homily ID",
+ originalChinese: "Chinese",
+ originalChinesePlaceholder: "Enter Chinese",
+ english: "English",
+ englishPlaceholder: "Enter English",
+ thai: "Thai",
+ thaiPlaceholder: "Enter Thai",
+ chineseTraditional: "Trad. Chinese",
+ chineseTraditionalPlaceholder: "Enter Trad. Chinese",
+ malay: "Malay",
+ malayPlaceholder: "Enter Malay",
+ vietnamese: "Vietnamese",
+ vietnamesePlaceholder: "Enter Vietnamese",
+ addTranslation: "Add Trans",
+ editTranslation: "Edit Trans",
+ refundApplyInfo: "Refund Request Info",
+ originalOrderInfo: "Original Order Info",
+ // User & Role
+ addUserPermission: "Add User Perm",
+ editUserPermission: "Edit User Perm",
+ account: "OA Account",
+ accountPlaceholder: "Enter OA account",
+ userName: "Username",
+ userNamePlaceholder: "Enter username",
+ roleName: "Role",
+ roleNamePlaceholder: "Select role",
+ parentRole: "Parent Role",
+ noParentRole: "None",
+ permissionList: "Permissions",
+ machineCode: "Machine Code",
+ machineCodePlaceholder: "Enter machine code",
+ remark: "Remark",
+ addRole: "Add Role",
+ editRole: "Edit Role",
+ permissionDetails: "Perm Details",
+ channelName: "Channel",
+ channelPlaceholder: "Select channel",
+ customerName: "Customer",
+ customerNamePlaceholder: "Enter customer name",
+ rejectReason: "Reject Reason",
+ rejectReasonPlaceholder: "Enter reason",
+ market: "Region",
+ marketPlaceholder: "Enter region",
+ activity: "Activity",
+ activityPlaceholder: "Enter activity",
+ businessBelong: "Region",
+ startTime: "Start Time",
+ endTime: "End Time",
+ permanentGold: "Perm Coins",
+ freeGold: "Free Coins",
+ taskGold: "Task Coins",
+ rechargeAmount: "Recharge Amt",
+ currencyName: "Currency",
+ goodsName: "Product",
+ productName: "Product",
+ productNamePlaceholder: "Select product",
+ productNum: "productNum",
+ productNumPlaceholder: "Enter quantity",
+ numUnit: "Unit",
+ payCurrency: "Pay Currency",
+ payCurrencyPlaceholder: "Select currency",
+ payAmount: "Pay Amount",
+ payAmountPlaceholder: "Enter amount",
+ payMethod: "Payment",
+ payMethodPlaceholder: "Select method",
+ receiveArea: "Rcv Region",
+ receiveAreaPlaceholder: "Select region",
+ price: "Price",
+ goodsNamePlaceholder: "Select product",
+ payModel: "Collection",
+ refundType: "Refund Type",
+ refundTypePlaceholder: "Select type",
+ orderNo: "Order No.",
+ orderNoPlaceholder: "Select order",
+ refundModel: "Method",
+ refundModelAll: "Full",
+ refundModelPart: "Partial",
+ refundGoldCoin: "Refund Coins",
+ refundCurrency: "Refund Curr",
+ refundCurrencyPlaceholder: "Select currency",
+ refundAmount: "Refund Amt",
+ refundAmountPlaceholder: "Enter amount",
+ refundChannels: "Refund Via",
+ refundChannelsPlaceholder: "Select method",
+ refundTime: "Refund Time",
+ refundTimePlaceholder: "Select time",
+ refundVoucher: "Refund IMG",
+ payModelPlaceholder: "Select method",
+ consumeTotalGold: "Total Consumed",
+ totalGold: "Total Coins",
+ paymentTime: "Pay Time",
+ payTime: "Pay Time",
+ payTimePlaceholder: "Select time",
+ paymentVoucher: "Pay Voucher",
+ transferVoucher: "Transfer IMG",
+ noTransferVoucher: "No Voucher",
+ paymentVoucherPlaceholder: "JPG/PNG ≤1MB",
+ transferVoucherPlaceholder: "JPG/PNG ≤2MB",
+ uploadPhoto: "Upload Image",
+ remarkPlaceholder: "Enter remark",
+ // Confirm
+ operationConfirm: "Confirm",
+ userInfo: "User Info",
+ prompt: "Risk Alert",
+ similarRechargeRecords: "Similar recent records detected",
+ rechargePermanentGold: "Recharge Perm Coins",
+ buy: "Buy",
+ operator: "Operator",
+ submitter: "Submitter",
+ continueOperation: "Continue?",
+ // Gold Bean
+ permanentBean: "PermanentBeans",
+ freeBean: "Free Beans",
+ // Cash
+ receiveCurrency: "Rcv Currency",
+ receiveCurrencyPlaceholder: "Select currency",
+ receiveAmount: "Rcv Amount",
+ receiveAmountPlaceholder: "Enter amount",
+ fee: "Fee",
+ feePlaceholder: "Enter fee",
+ receiveTime: "Rcv Time",
+ receiveTimePlaceholder: "Select time",
+ refundReason: "Reason",
+ tip: "Note: State user refund request.",
+ refund: "Refund",
},
-
- // Add Form User Info
+ // Add Form Customer Info
common_add_user: {
- customerInfo: 'Customer Information',
- name: 'Name',
- currentGoldCoinTotal: 'Current total coins',
- permanentGold: 'Permanent Gold Coins',
- freeGold: 'Free Gold Coins',
- taskGold: 'Task Gold Coins',
- jwcode: 'Homily ID',
- consumptionTimes: 'Consumption Count',
- onlyStatisticsDataAfter20250101: 'Statistics only include data after 2025-01-01',
- store: 'Store',
- maxReductionAmount: 'Maximum Redemption Amount',
+ customerInfo: "Customer Info",
+ name: "Name",
+ currentGoldCoinTotal: "Total Coins",
+ permanentGold: "Perm Coins",
+ freeGold: "Free Coins",
+ taskGold: "Task Coins",
+ jwcode: "Homily ID",
+ consumptionTimes: "Consumptions",
+ onlyStatisticsDataAfter20250101: "Stats after 2025-01-01",
+ store: "Store",
+ maxReductionAmount: "Max Deduction",
+ // Bean
+ currentPayableBean: "Current Paid",
+ currentFreeBean: "Current Free",
+ consumeTotalBean: "Total Consumed",
+ permanentBean: "PermanentBeans",
+ freeBean: "Free Beans",
},
// Audit Group
audit: {
+ // General
refundTypeOptions: {
- '商品退款': 'Product Refund',
- '金币退款': 'Gold Coin Refund',
+ 商品退款: "Product Refund",
+ 金币退款: "Coin Refund",
},
- audit: 'Audit',
- waitAudit: 'Pending',
- RefundSuccessful: 'Refund Successful',
- passed: 'Approved',
- rejected: 'Rejected',
- permanentGold: 'Permanent Gold Coins',
- freeGold: 'Free Gold Coins',
- taskGold: 'Task Gold Coins',
-
- id: 'No.',
- name: 'Name',
- jwcode: 'Homily ID',
- market: 'Region',
- activityName: 'Activity',
- currencyName: 'Currency',
- rechargeAmount: 'Recharge Amount',
- note: 'Remark',
- payModel: 'Payment Method',
- paymentVoucher: 'Payment Voucher',
- submitter: 'Submitter',
- auditor: 'Auditor',
- rejectReason: 'Rejection Reason',
- rejectReasonPlaceholder: 'Enter rejection reason',
- paymentTime: 'Payment Time',
- submitTime: 'Submit Time',
- auditTime: 'Review time',
- operation: 'Operation',
-
- orderCode: 'Order No.',
- refundType: 'Refund Type',
- refundModel: 'Refund Method',
- allRefund: 'Full Refund',
- partialRefund: 'Partial Refund',
- refundGoods: 'Refund Product',
-
- permanentBean: 'Paid Gold Beans',
- freeBean: 'Free Gold Beans',
-
- rechargeAudit: 'Recharge Audit',
- rechargeSGD: 'Recharge (SGD)',
- totalGold: 'Total Gold Coins',
-
+ waitAudit: "Pending",
+ passed: "Passed",
+ rejected: "Rejected",
+ permanentGold: "Perm Coins",
+ freeGold: "Free Coins",
+ taskGold: "Task Coins",
+ // Recharge Audit List
+ id: "No.",
+ name: "Name",
+ jwcode: "Homily ID",
+ market: "Region",
+ activityName: "Activity",
+ currencyName: "Currency",
+ rechargeAmount: "Amount",
+ note: "Note",
+ payModel: "Payment",
+ paymentVoucher: "Voucher",
+ submitter: "Submitter",
+ auditor: "Auditor",
+ rejectReason: "Reject Reason",
+ rejectReasonPlaceholder: "Enter reason",
+ paymentTime: "Pay Time",
+ submitTime: "Submit Time",
+ auditTime: "Audit Time",
+ operation: "Operation",
+ // Refund Audit List
+ orderCode: "Order No.",
+ refundType: "Type",
+ refundModel: "Method",
+ allRefund: "Full",
+ partialRefund: "Partial",
+ refundGoods: "Product",
+ // Bean Audit
+ permanentBean: "PermanentBeans",
+ freeBean: "Free Beans",
+ // Coin Recharge
+ rechargeAudit: "Recharge Audit",
+ rechargeSGD: "Recharge SGD",
+ totalGold: "Total Coins",
+ // Pay Methods
payMethods: {
- bankTransfer: 'Bank Transfer',
- cash: 'Cash',
- check: 'Check',
- card: 'Card Payment',
- grabpay: 'GrabPay',
- nets: 'NETS',
- paypal: 'PayPal',
- stripe: 'Stripe (Link)',
- ipay88: 'iPay88 (Link)',
- paymentAsia: 'PaymentAsia (Link)',
- other: 'Other',
+ bankTransfer: "Bank Transfer",
+ cash: "Cash",
+ check: "Check",
+ card: "Card",
+ grabpay: "Grabpay",
+ nets: "Nets",
+ paypal: "PayPal",
+ stripe: "Stripe",
+ ipay88: "Ipay88",
+ paymentAsia: "PaymentAsia",
+ other: "Other",
},
-
- refundAudit: 'Refund Audit',
- refundTotalGold: 'Total Total refunded coins',
-
- totalNum: 'Total Items',
- totalBean: 'Total Gold Beans',
-
- rejectRecord: 'Reject This Record',
- passRecord: 'Approve This Record',
+ // Coin Refund
+ refundAudit: "Refund Audit",
+ refundTotalGold: "Refund Total Coins",
+ // Bean Audit
+ totalNum: "Total Items",
+ totalBean: "Total Beans",
+ // Dialog Titles
+ rejectRecord: "Reject Record!",
+ passRecord: "Approve Record!",
},
// Recharge Group
recharge: {
- coinRechargeDetail: 'Gold Coin Recharge Details',
-
- normal: 'Normal',
- refunded: 'Refunded',
- unknown: 'Unknown',
-
- addCoinRecharge: 'New Recharge',
-
+ coinRechargeDetail: "Coin Recharge Details",
+ normal: "Normal",
+ refunded: "Refunded",
+ unknown: "Unknown",
+ addCoinRecharge: "New Recharge",
+ // Pay Methods
payMethods: {
- bankTransfer: 'Bank Transfer',
- cash: 'Cash',
- check: 'Check',
- card: 'Card Payment',
- grabpay: 'GrabPay',
- nets: 'NETS',
- paypal: 'PayPal',
- stripe: 'Stripe (Link)',
- ipay88: 'iPay88 (Link)',
- paymentAsia: 'PaymentAsia (Link)',
- other: 'Other',
+ bankTransfer: "Bank Transfer",
+ cash: "Cash",
+ check: "Check",
+ card: "Card",
+ grabpay: "Grabpay",
+ nets: "Nets",
+ paypal: "PayPal",
+ stripe: "Stripe",
+ ipay88: "Ipay88",
+ paymentAsia: "PaymentAsia",
+ other: "Other",
},
+ // Bean
+ permanentBean: "PermanentBeans",
+ freeBean: "Free Beans",
+ confirmRecharge: "Confirm recharge?",
+ prompt: "Prompt",
+ addBeanRecharge: "New Recharge",
+ systemRecharge: "System",
+ onlineRecharge: "Online",
+ mobile: "Mobile",
},
// Consume Group
consume: {
- coinConsumeDetail: 'Gold Coin Consumption Details',
-
- normal: 'Normal',
- refunded: 'Refunded',
- unknown: 'Unknown',
-
+ coinConsumeDetail: "Coin Consume Details",
+ normal: "Normal",
+ refunded: "Refunded",
+ unknown: "Unknown",
consumePlatforms: {
- goldSystem: 'Gold System',
- HomilyChart: 'HomilyChart',
- HomilyLink: 'HomilyLink',
- ERP: 'ERP',
- other: 'Other',
- initGold: 'Gold Initialization',
+ goldSystem: "Gold System",
+ HomilyChart: "HomilyChart",
+ HomilyLink: "HomilyLink",
+ ERP: "ERP",
+ other: "Other",
+ initGold: "Init Gold",
+ },
+ addCoinConsume: "New Consume",
+ addBeanConsume: "New Consume",
+ liveStream: "Live",
+ dieHardFan: "Die-hard Fan",
+ articleVideo: "Post/Video",
+ confirmConsume: "Confirm consume?",
+ prompt: "Prompt",
+ // Post/Video
+ type: "Type",
+ reward: "Reward",
+ payBuy: "Purchase",
+ other: "Other",
+ consumeTypes: {
+ 1: "Gift",
+ 2: "Red Packet",
+ 3: "Lucky Bag",
+ 4: "Paid Live",
+ 5: "Join Fan Club",
+ 6: "Bullet Chat",
+ 7: "Single Pay",
+ 8: "Monthly Sub",
+ 9: "Reward",
+ 10: "Reward",
+ 11: "Purchase",
},
-
- addCoinConsume: 'New Consumption',
},
// Refund Group
refund: {
- coinRefundDetail: 'Gold Coin Refund Details',
-
- normal: 'Normal',
- refunded: 'Refunded',
- unknown: 'Unknown',
-
+ coinRefundDetail: "Coin Refund Details",
+ normal: "Normal",
+ refunded: "Refunded",
+ unknown: "Unknown",
refundMethods: {
- allRefund: 'Full Refund',
- partialRefund: 'Partial Refund',
+ allRefund: "Full",
+ partialRefund: "Partial",
},
-
refundTypeOptions: {
- '商品退款': 'Product Refund',
- '金币退款': 'Gold Coin Refund',
+ 商品退款: "Product Refund",
+ 金币退款: "Coin Refund",
},
-
- addCoinRefund: 'New Refund',
-
- id: 'No.',
- type: 'Type',
- recharge: 'Recharge',
- consume: 'Consumption',
- productName: 'Product Name',
- orderCode: 'Order No.',
- permanentGold: 'Permanent Gold Coins',
- freeGold: 'Free Gold Coins',
- taskGold: 'Task Gold Coins',
- isRefund: 'Refund Allowed',
- no: 'No',
- yes: 'Yes',
+ addCoinRefund: "New Refund",
+ id: "No.",
+ type: "Type",
+ recharge: "Recharge",
+ consume: "Consume",
+ productName: "Product",
+ orderCode: "Order No.",
+ permanentGold: "Perm Coins",
+ freeGold: "Free Coins",
+ taskGold: "Task Coins",
+ isRefund: "Allow Refund",
+ no: "No",
+ yes: "Yes",
},
- // Client Count Group
+ // Client Count
clientCount: {
- clientCountBalance: 'Gold Coin Balance',
-
- clientCountDetail: 'Gold Coin Details',
-
- recharge: 'Recharge',
- consume: 'Consumption',
- refund: 'Refund',
- other: 'Other',
-
+ clientCountBalance: "Coin Balance",
+ clientCountDetail: "Coin Details",
+ recharge: "Recharge",
+ consume: "Consume",
+ refund: "Refund",
+ other: "Other",
type: {
- recharge: 'Recharge',
- consume: 'Consumption',
- refund: 'Refund',
+ recharge: "Recharge",
+ consume: "Consume",
+ refund: "Refund",
},
},
- cash_refund: {
- audit: 'Audit',
- viewProgress: 'View Progress',
- refundApplicationInfo: 'Refund Application Info',
- refundModel: 'Refund Mode',
- fullRefund: 'Full Refund',
- partialRefund: 'Partial Refund',
- refundReason: 'Refund Reason',
- originalOrderInfo: 'Original Order Info',
- jwcode: 'Homily ID',
- marketName: 'Region',
- goodsName: 'Product Name',
- paymentCurrency: 'Payment Currency',
- paymentAmount: 'Payment Amount',
- payTime: 'Payment Time',
- payVoucher: 'Payment Voucher',
- noVoucher: 'No Voucher',
- customerName: 'Customer Name',
- activityName: 'Activity Name',
- payType: 'Payment Method',
- receivedCurrency: 'Received Currency',
- receivedAmount: 'Received Amount',
- receivedTime: 'Received Time',
- handlingCharge: 'Handling Charge',
- submitter: 'Submitter',
- remark: 'Remark',
- rejectionInfo: 'Rejection Info',
- rejectionRemark: 'Rejection Remark',
- placeholder: {
- rejectionRemark: 'Please enter rejection remark',
- },
- reject: 'Reject',
- pass: 'Approve',
- cancel: 'Cancel',
- confirm: 'Confirm',
- submitted: 'Submitted',
- withdrawn: 'withdrawn',
- inProgress: 'In progress',
- rejected: 'Rejected',
- refundAmountError: 'The refund amount was filled in incorrectly.',
- withdrawRecord: 'withdraw that message!!',
- refundReasonTip: 'ps: Please indicate the user\'s refund request in the refund reason.',
+
+ // Workbench
+ workbench: {
+ dataOverview: "Overview",
+ loading: "Loading...",
+ cashManagement: "Cash",
+ dataExplanationTitle: "Note",
+ dataExplanationContent: "Real-time data, deviations possible.",
+ totalRevenue: "Revenue",
+ SGD: "SGD",
+ collect: "Collect",
+ Singapore: "Singapore",
+ Malaysia: "Malaysia",
+ HongKong: "Hong Kong",
+ Thailand: "Thailand",
+ VietnamHCM: "Vietnam HCM",
+ Canada: "Canada",
+ MYR: "MYR",
+ HKD: "HKD",
+ CAD: "CAD",
+ THB: "THB",
+ VND: "VND",
+ goldManagement: "Gold",
+ lastUpdateTime: "Updated: ",
+ noData: "No Data",
+ // Card 1
+ currentGoldBalance: "Coin Balance",
+ compareToPreviousDay: "vs Day Before",
+ permanentGold: "Perm",
+ freeGold: "Free",
+ taskGold: "Task",
+ goldExpireIn6Months: "Exp Jun:",
+ goldExpireIn12Months: "Exp Dec:",
+ // Card 2
+ annualCumulativeRecharge: "Year Recharge:",
+ convertedSGDCumulativeAmount: "Total SGD:",
+ yesterdayNew: "Yest. New:",
+ wherePermanentGold: "Perm:",
+ // Card 3
+ annualCumulativeConsume: "Year Consume:",
+ consume: "Consume:",
+ refund: "Refund:",
+ yesterdayNewAll: "Yest. Total:",
+ yesterdayNewConsume: "Yest. Consume:",
+ yesterdayNewRefund: "Yest. Refund:",
+ // Card 4
+ annualCumulativeRechargePeople: "Year Users:",
+ weekYearOnYear: "WoW:",
+ dayYearOnYear: "DoD:",
+ yesterdayRechargePeople: "Yest. Users:",
+ whereFirstRecharge: "First Chg:",
+ // Table
+ coinRecharge: "Coin Recharge",
+ coinConsume: "Coin Consume",
+ total: "Total:",
+ yesterday: "Yesterday",
+ today: "Today",
+ thisWeek: "This Week",
+ thisMonth: "This Month",
+ thisYear: "This Year",
+ startTime: "Start",
+ endTime: "End",
+ query: "Query",
+ gold: "Gold",
+ recharge: "Recharge",
+ consume: "Consume",
+ rank: "Rank",
+ allTypes: "All Types",
+ region: "Region",
+ goldCount: "Coins",
+ all: "Total",
+ marketTitle: "Note",
+ marketContent: ">40 days aggregates by month.",
},
- refundProgress: {
- title: 'Refund Progress',
- submitter: 'Submitter',
- areaFinance: 'Regional Finance',
- areaCharge: 'Regional Manager',
- headFinance: 'HQ Finance',
- executor: 'Executor',
- unknownSubmitter: 'Unknown',
- notRecorded: 'Not Recorded',
+
+ // Rate
+ rate: {
+ modifyRate: "Modify Rate",
+ prompt1: "Note: per",
+ prompt2: "--exchanges 1 SGD",
+ },
+ // Settings Center (Home)
+ home: {
+ settingsCenter: "Settings",
+ languageSwitch: "Language",
+ languageDialog: {
+ placeholder: "Select language",
+ options: {
+ zhCN: "中文(简体)",
+ en: "English"
+ }
+ },
+ showStaffData: "Show staff",
+ hideStaffData: "Hide staff",
+ viewProfile: "Profile",
+ changePassword: "Change password",
+ logout: "Logout",
+ messageCenter: "Messages",
+ noMessage: "No pending messages",
+ goToView: "View",
+ viewAll: "View all",
+ collapse: "Collapse",
+ backToTop: "Top",
+ dialog: {
+ userName: "Name",
+ jwcode: "Homily ID",
+ market: "Region",
+ registerTime: "Registered at",
+ },
+ orderNeedsReview: "A receipt order requires review",
+ password: {
+ title: "Change Password",
+ oldPassword: "Old Password",
+ newPassword: "New Password",
+ againPassword: "Repeat Password",
+ oldPasswordPlaceholder: "Enter old password",
+ newPasswordPlaceholder: "Enter new password",
+ againPasswordPlaceholder: "Re-enter new password",
+ tips: {
+ lengthAndChars: "8–16 chars: digits/letters/symbols",
+ complexity: "At least 2 types"
+ },
+ rules: {
+ allowedChars: "Only digits, letters, or symbols",
+ notSameAsOld: "New password cannot equal old",
+ length: "Length 8–16",
+ complexity: "At least 2 types (digit/letter/symbol)",
+ notMatch: "Passwords do not match",
+ newPasswordRequired: "New password required",
+ againPasswordRequired: "Confirm password required"
+ },
+ submitting: "Changing..."
+ },
},
+ // Cash Management
cash: {
- // 收款管理
- receiveCashDataTitle: "Data Desc",
- receiveCashDataContent: "All cash receipt pages: Orders sorted by payment time desc by default",
+ refundProgress: "Refund Progress",
+ progress: {
+ areaFinance: "Area Finance",
+ areaCharge: "Area Manager",
+ headFinance: "HQ Finance",
+ executor: "Executor",
+ },
+ receiveCashDataTitle: "Note",
+ receiveCashDataContent:
+ "All receipt pages: Default sort by payment time (desc)",
currency: {
- usd: "US Dollar(USD)",
- hkd: "Hong Kong Dollar(HKD)",
- sgd: "Singapore Dollar(SGD)",
- myr: "Malaysian Ringgit(MYR)",
- thb: "Thai Baht(THB)",
- cad: "Canadian Dollar(CAD)",
- vnd: "Vietnamese Dong(VDN)",
- krw: "South Korean Won(KRW)",
+ usd: "USD",
+ hkd: "HKD",
+ sgd: "SGD",
+ myr: "MYR",
+ thb: "THB",
+ cad: "CAD",
+ vnd: "VND",
+ krw: "KRW",
},
- // 收款方式
payMethods: {
- bankTransfer: 'Bank Transfer',
- cash: 'Cash',
- check: 'Check',
- card: 'Card Payment',
- grabpay: 'GrabPay',
- nets: 'NETS',
- paypal: 'PayPal',
- stripe: 'Stripe (Link)',
- ipay88: 'iPay88 (Link)',
- paymentAsia: 'PaymentAsia (Link)',
+ bankTransfer: "Bank Transfer",
+ cash: "Cash",
+ check: "Check",
+ card: "Card",
+ grabpay: "Grabpay",
+ nets: "Nets",
+ paypal: "PayPal",
+ stripe: "Stripe",
+ ipay88: "Ipay88",
+ paymentAsia: "PaymentAsia",
transfer: "E-Transfer",
},
unit: "Unit",
year: "Year",
month: "Month",
- // AI Services
+ // Products
aiService: {
- aiTracking: "AI Org Track",
- aiAttack: "AI Org Attack",
- aiFunds: "AI Org Funds",
- aiActivity: "AI Org Activity",
- superPerspective: "Super Org View",
- superAmbush: "Super Org Ambush",
- superHunting: "Super Org Hunt",
- superPulse: "Super Org Pulse",
- superCompass: "Super Org Compass",
- aiDetectionTool: "AI Org Detector",
- superDetectionTool: "Super Org Detector"
+ aiTracking: "AI Track",
+ aiAttack: "AI Attack",
+ aiFunds: "AI Funds",
+ aiActivity: "AI Activity",
+ superPerspective: "Super View",
+ superAmbush: "Super Ambush",
+ superHunting: "Super Hunt",
+ superPulse: "Super Pulse",
+ superCompass: "Super Compass",
+ aiDetectionTool: "AI Detector",
+ superDetectionTool: "Super Detector",
},
- // Markets
markets: {
HongKong: "Hong Kong",
Malaysia: "Malaysia",
Canada: "Canada",
Singapore: "Singapore",
Thailand: "Thailand",
- VietnamHCM: "Vietnam HCM"
+ VietnamHCM: "Vietnam HCM",
},
coinRecharge: "Coin Recharge",
staticInfoFee: "Static Fee",
BGmember: "BG Member",
HC: "HC Fee",
- goldProduct: "Gold Product",
- softwareProduct: "SoftwareProduct",
+ goldProduct: "Gold Prod",
+ softwareProduct: "Software",
software: "Software",
other: "Other",
- // Software Menu (for ProductSelect component)
+ // Software Menu
softwareMenu: {
- // Market Names
usStock: "US Stock",
hkStock: "HK Stock",
aStock: "A Stock",
@@ -738,52 +1075,52 @@ export default {
koreaStock: "KR Stock",
taiwanStock: "TW Stock",
- // Software Types
usStockSoftware: "US Stock SW",
- usStockGoldCard: "US Stock Gold",
- usStockPackage: "US Stock Pack",
+ usStockGoldCard: "US Gold",
+ usStockPackage: "US Pack",
hkStockSoftware: "HK Stock SW",
- hkStockGoldCard: "HK Stock Gold",
- hkStockPackage: "HK Stock Pack",
+ hkStockGoldCard: "HK Gold",
+ hkStockPackage: "HK Pack",
aStockSoftware: "A Stock SW",
- aStockGoldCard: "A Stock Gold",
- aStockPackage: "A Stock Pack",
+ aStockGoldCard: "A Gold",
+ aStockPackage: "A Pack",
singaporeStockSoftware: "SG Stock SW",
- singaporeStockGoldCard: "SG Stock Gold",
- singaporeStockPackage: "SG Stock Pack",
+ singaporeStockGoldCard: "SG Gold",
+ singaporeStockPackage: "SG Pack",
malaysiaStockSoftware: "MY Stock SW",
- malaysiaStockGoldCard: "MY Stock Gold",
- malaysiaStockPackage: "MY Stock Pack",
+ malaysiaStockGoldCard: "MY Gold",
+ malaysiaStockPackage: "MY Pack",
japanStockSoftware: "JP Stock SW",
- japanStockGoldCard: "JP Stock Gold",
- japanStockPackage: "JP Stock Pack",
+ japanStockGoldCard: "JP Gold",
+ japanStockPackage: "JP Pack",
thailandStockSoftware: "TH Stock SW",
- thailandStockGoldCard: "TH Stock Gold",
- thailandStockPackage: "TH Stock Pack",
+ thailandStockGoldCard: "TH Gold",
+ thailandStockPackage: "TH Pack",
vietnamStockSoftware: "VN Stock SW",
- vietnamStockGoldCard: "VN Stock Gold",
- vietnamStockPackage: "VN Stock Pack",
+ vietnamStockGoldCard: "VN Gold",
+ vietnamStockPackage: "VN Pack",
indonesiaStockSoftware: "ID Stock SW",
- indonesiaStockGoldCard: "ID Stock Gold",
- indonesiaStockPackage: "ID Stock Pack",
+ indonesiaStockGoldCard: "ID Gold",
+ indonesiaStockPackage: "ID Pack",
koreaStockSoftware: "KR Stock SW",
- koreaStockGoldCard: "KR Stock Gold",
- koreaStockPackage: "KR Stock Pack",
+ koreaStockGoldCard: "KR Gold",
+ koreaStockPackage: "KR Pack",
taiwanStockSoftware: "TW Stock SW",
- taiwanStockGoldCard: "TW Stock Gold",
- taiwanStockPackage: "TW Stock Pack"
+ taiwanStockGoldCard: "TW Gold",
+ taiwanStockPackage: "TW Pack",
},
statusList: {
+ submitted: "Submitted",
pending: "Pending",
passed: "Passed",
recalled: "Recalled",
@@ -791,6 +1128,6 @@ export default {
rejected: "Rejected",
},
pending: "Pending",
- refundSuccess: "Refund Successful",
+ refundSuccess: "Refund Success",
},
-}
+};
diff --git a/src/views/activityManage/activity.vue b/src/views/activityManage/activity.vue
index 92c74a4..66dded4 100644
--- a/src/views/activityManage/activity.vue
+++ b/src/views/activityManage/activity.vue
@@ -81,11 +81,11 @@
- {{ t('common_add.activity') }}
+ {{ t('common_add.activity') }}:
- {{ t('common_add.businessBelong') }}
+ {{ t('common_add.businessBelong') }}:
{{ t('common.customerBelong') }}
{{ t('common.activityBelong') }}
@@ -97,12 +97,12 @@
style="width: 12vw" />
- {{ t('common_add.startTime') }}
+ {{ t('common_add.startTime') }}:
- {{ t('common_add.endTime') }}
+ {{ t('common_add.endTime') }}:
@@ -119,24 +119,24 @@
- {{ t('common_add.businessBelong') }}
+ {{ t('common_add.businessBelong') }}:
{{ t('common.customerBelong') }}
{{ t('common.activityBelong') }}
- {{ t('common_add.market') }}
+ {{ t('common_add.market') }}:
- {{ t('common_add.startTime') }}
+ {{ t('common_add.startTime') }}:
- {{ t('common_add.endTime') }}
+ {{ t('common_add.endTime') }}:
@@ -171,9 +171,7 @@ const getActivityStatusText = (status) => {
return status
}
-// 活动名称正则表达式
-const activityNameReg = /^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:“”()‘’《》【】{}——~,.!?:;'--()\"\"\\[\\]_&+=]+$/;
-// 为什么一定要两个--才能成功?????????
+const activityNameReg = /^[\u4e00-\u9fa5a-zA-Z0-9,。!?、;:“”()‘’《》【】{}——~,.!?:;'()\[\]_&+=\/-]+$/;
const tableData = ref([])
const pagination = ref({
pageNum: 1,
@@ -451,18 +449,19 @@ const hideAdd = () => {
}
}
const validateActivityName = (name) => {
+ const value = name.trim()
// 非空校验
- if (!name.trim()) {
+ if (!value) {
ElMessage.error('活动名称不能为空');
return false;
}
// 长度校验(限制100字符)
- if (name.length > 100) {
+ if (value.length > 100) {
ElMessage.error('活动名称长度不能超过100字符');
return false;
}
// 字符格式校验
- if (!activityNameReg.test(name)) {
+ if (!activityNameReg.test(value)) {
ElMessage.error('活动名称仅支持汉字、英文字母、数字及常见标点,中文字符,。!?、;:“ ” ‘ ’ ()《》【】——~,英文字符, . ! ? : ; " ( ) [ ] - _ & + =/')
return false;
}
diff --git a/src/views/audit/bean/beanAudit.vue b/src/views/audit/bean/beanAudit.vue
index 854520e..5c9238b 100644
--- a/src/views/audit/bean/beanAudit.vue
+++ b/src/views/audit/bean/beanAudit.vue
@@ -68,8 +68,8 @@
-
-
+
+
diff --git a/src/views/consume/bean/articleVideo.vue b/src/views/consume/bean/articleVideo.vue
index d9c7c1d..99672a5 100644
--- a/src/views/consume/bean/articleVideo.vue
+++ b/src/views/consume/bean/articleVideo.vue
@@ -586,9 +586,9 @@ const getTagText = (state) => {
}}
-
-
-
+
+
+
diff --git a/src/views/consume/bean/dieHardFan.vue b/src/views/consume/bean/dieHardFan.vue
index a3cdb44..0d05d20 100644
--- a/src/views/consume/bean/dieHardFan.vue
+++ b/src/views/consume/bean/dieHardFan.vue
@@ -561,10 +561,10 @@ const getTagText = (state) => {
-
-
+
+
-
+
{{consumeTypes.find(item => item.value === Number(scope.row.type))?.label || t('common_list.unknownType')}}
diff --git a/src/views/consume/bean/liveStream.vue b/src/views/consume/bean/liveStream.vue
index b7cd3f8..3977315 100644
--- a/src/views/consume/bean/liveStream.vue
+++ b/src/views/consume/bean/liveStream.vue
@@ -609,8 +609,8 @@ const getTagText = (state) => {
{{ scope.row.isBackpack == 1 ? t('common_list.yes') : t('common_list.no') }}
-
-
+
+
diff --git a/src/views/home.vue b/src/views/home.vue
index d3db58d..f322902 100644
--- a/src/views/home.vue
+++ b/src/views/home.vue
@@ -17,6 +17,9 @@ import {getOrderPage} from '@/utils/goToCheck.js'
import {groupMessages} from "@/utils/getMessage.js"
import {findMenuById,permissionMapping} from "@/utils/menuTreePermission.js"
import {useMessageStore} from '@/store/index.js'
+// 国际化
+import { useI18n } from 'vue-i18n'
+const {t} = useI18n();
// ------------------ ICONS ------------------
const icons = import.meta.glob('@/assets/SvgIcons/*.svg', {eager: true})
@@ -56,26 +59,26 @@ const openLanguageSwitch = () => {
}
const handleLanguageChanged = (lang) => {
- ElMessage.success(`语言已切换到${lang}`)
+ ElMessage.success(t('elmessage.languageChangedSuccess', { lang }))
}
// ------------------ 刷新数据 ------------------
const refreshData = async () => {
try {
- ElMessage({message: '数据刷新中,请稍候...', type: 'info'});
+ ElMessage({ message: t('elmessage.refreshLoading'), type: 'info' })
const response = await API({url: '/Mysql', method: 'POST', data: {}});
if (response && response.code === 200) {
const currentRoute = route.fullPath;
router.replace('/blank');
setTimeout(() => router.replace(currentRoute), 10);
- ElMessage.success('数据刷新成功');
+ ElMessage.success(t('elmessage.refreshSuccess'))
} else {
- ElMessage.error('数据刷新失败:' + (response?.msg || '未知错误'));
+ ElMessage.error(t('elmessage.refreshFailed', { msg: response?.msg || t('elmessage.unknownError') }))
}
} catch (error) {
console.error(error)
- ElMessage.error('数据刷新异常,请重试');
+ ElMessage.error(t('elmessage.refreshError'))
}
}
@@ -126,14 +129,14 @@ function logout() {
localStorage.removeItem('token')
adminStore.clearState()
router.push('/login?machineId=' + machineId)
- ElMessage.success('退出成功')
+ ElMessage.success(t('elmessage.logoutSuccess'))
}
// ------------------ 员工数据开关 ------------------
const toggleFlag = () => {
const newFlag = flag.value === 1 ? 0 : 1
adminStore.setFlag(newFlag)
- ElMessage.success(newFlag === 1 ? '员工数据已隐藏' : '员工数据已显示')
+ ElMessage.success(newFlag === 1 ? t('elmessage.staffHidden') : t('elmessage.staffShown'))
}
// ------------------ 消息中心(完全修复版) ------------------
@@ -290,9 +293,9 @@ const handleMessageClick = async (item) => {
closeMessageDialog()
await router.push(getOrderPage(item.status))
await getMessage()
- ElMessage.success('跳转成功')
+ ElMessage.success(t('elmessage.jumpSuccess'))
} else {
- ElMessage.error('跳转失败')
+ ElMessage.error(t('elmessage.jumpFailed'))
}
}
@@ -374,8 +377,8 @@ onMounted(() => getMessage())
-
- 设置中心
+
+ {{ t('home.settingsCenter') }}
@@ -383,13 +386,13 @@ onMounted(() => getMessage())
- 语言切换
+ {{ t('home.languageSwitch') }}
- {{ flag === 1 ? '显示员工数据' : '隐藏员工数据' }}
+ {{ flag === 1 ? t('home.showStaffData') : t('home.hideStaffData') }}
- 查看个人信息
- 修改密码
- 退出登录
+ {{ t('home.viewProfile') }}
+ {{ t('home.changePassword') }}
+ {{ t('home.logout') }}
@@ -424,24 +427,24 @@ onMounted(() => getMessage())
-
+
-
+
{{ adminData.adminName }}
-
+
{{ adminData.account }}
-
+
{{ adminData.markets }}
-
+
{{ adminData.createTime }}
- 关闭
+ {{ t('common_export.close') }}
@@ -458,13 +461,13 @@ onMounted(() => getMessage())
class="divider"
direction="vertical"
>
- 消息中心 ({{ messageNum }})
+ {{ t('home.messageCenter') }} ({{ messageNum }})
-
暂无未办消息,快去处理工作吧~
+
{{ t('home.noMessage') }}
getMessage())
-
-
[{{ item.marketName }}]
-
[{{item.name}}{{ item.jwcode }}]用户有条收款订单需审核
-
+
+
[{{ item.marketName }}]
+
[{{item.name}}{{ item.jwcode }}]{{ t('home.orderNeedsReview') }}
+
- 前往查看
+ {{ t('home.goToView') }}
getMessage())
class="view-all"
@click="toggleShowAll"
>
- {{ showAll ? '收起' : '查看全部' }}
+ {{ showAll ? t('home.collapse') : t('home.viewAll') }}
@@ -532,7 +535,7 @@ onMounted(() => getMessage())
style="width: 20px; height: 20px;"
fit="contain"
/>
- 返回顶部
+ {{ t('home.backToTop') }}
@@ -850,4 +853,4 @@ display: flex;
padding: 8px;
}
-
\ No newline at end of file
+
diff --git a/src/views/moneyManage/receiveDetail/receiveFinance.vue b/src/views/moneyManage/receiveDetail/receiveFinance.vue
index 7fa822f..248cd4b 100644
--- a/src/views/moneyManage/receiveDetail/receiveFinance.vue
+++ b/src/views/moneyManage/receiveDetail/receiveFinance.vue
@@ -654,7 +654,7 @@ import CurrencySelect from '@/components/MoneyManage/CurrencySelect.vue';
// 静态数据与规则(仅保留必要项)
import { editFormRule } from './utils/recriveFormRules.js';
-import { productList, MarketNameForId, CurrencyForId, marketList } from './utils/staticData.js';
+import { productList, MarketNameForId, CurrencyForId, marketList, normalizeSubmitterMarket } from './utils/staticData.js';
import { useAdminStore } from '@/store/index.js';
import { hasMenuPermission } from '@/utils/menuTreePermission.js';
@@ -941,7 +941,7 @@ const getlist = async () => {
// 地区财务固定参数:角色ID=1,按标签页筛选状态
const cashRoleId = '1';
- const receivedMarket = adminData.value.markets;
+ const receivedMarket = normalizeSubmitterMarket(adminData.value.markets);
if (activeTab.value === 'wait') searchData.value.status = 0;
else if (activeTab.value === 'pass') searchData.value.status = 13;
else if (activeTab.value === 'done') searchData.value.status = 46;
@@ -975,7 +975,7 @@ const getlist = async () => {
receivedMarket: MarketNameForId(receivedMarket),
cashRoleId: cashRoleId,
paymentCurrency: payCurrencySelect,
- submitterMarket: receivedMarket,
+ submitterMarket: normalizeSubmitterMarket(receivedMarket),
goodsName: goodsName,
// market: MarketNameForId(searchData.value.market)
market: markets.value
@@ -1838,4 +1838,4 @@ const handlePagination = (type, val) => {
}
}
}
-
\ No newline at end of file
+
diff --git a/src/views/moneyManage/receiveDetail/receiveHead.vue b/src/views/moneyManage/receiveDetail/receiveHead.vue
index 82d03ce..7ef59c4 100644
--- a/src/views/moneyManage/receiveDetail/receiveHead.vue
+++ b/src/views/moneyManage/receiveDetail/receiveHead.vue
@@ -517,7 +517,7 @@ import CurrencySelect from '@/components/MoneyManage/CurrencySelect.vue';
// 静态数据与规则(仅保留必要项)
import { editFormRule } from './utils/recriveFormRules.js';
-import { productList, MarketNameForId, CurrencyForId, marketList } from './utils/staticData.js';
+import { productList, MarketNameForId, CurrencyForId, marketList, normalizeSubmitterMarket } from './utils/staticData.js';
import { useAdminStore } from '@/store/index.js';
import { hasMenuPermission } from '@/utils/menuTreePermission.js';
@@ -624,7 +624,7 @@ const exportExcel = async function () {
// }
const cashRoleId = '2';
- const submitterMarket = adminData.value.markets;
+ const submitterMarket = normalizeSubmitterMarket(adminData.value.markets);
searchData.value.status = 46;
const params = {
...pageInfo.value,
@@ -829,7 +829,7 @@ const getlist = async () => {
receivedMarket: MarketNameForId(receivedMarket),
cashRoleId: cashRoleId,
paymentCurrency: payCurrencySelect,
- submitterMarket: receivedMarket,
+ submitterMarket: normalizeSubmitterMarket(receivedMarket),
goodsName: goodsName,
//market: MarketNameForId(searchData.value.market)
market: markets.value
@@ -1607,4 +1607,4 @@ const handlePagination = (type, val) => {
}
}
}
-
\ No newline at end of file
+
diff --git a/src/views/moneyManage/receiveDetail/receiveManage.vue b/src/views/moneyManage/receiveDetail/receiveManage.vue
index 7fa822f..3aaac91 100644
--- a/src/views/moneyManage/receiveDetail/receiveManage.vue
+++ b/src/views/moneyManage/receiveDetail/receiveManage.vue
@@ -654,7 +654,7 @@ import CurrencySelect from '@/components/MoneyManage/CurrencySelect.vue';
// 静态数据与规则(仅保留必要项)
import { editFormRule } from './utils/recriveFormRules.js';
-import { productList, MarketNameForId, CurrencyForId, marketList } from './utils/staticData.js';
+import { productList, MarketNameForId, CurrencyForId, marketList, normalizeSubmitterMarket } from './utils/staticData.js';
import { useAdminStore } from '@/store/index.js';
import { hasMenuPermission } from '@/utils/menuTreePermission.js';
@@ -820,7 +820,7 @@ const exportExcel = async function () {
// }
const cashRoleId = '1';
- const submitterMarket = adminData.value.markets;
+ const submitterMarket = normalizeSubmitterMarket(adminData.value.markets);
searchData.value.status = 46;
const params = {
...pageInfo.value,
@@ -941,7 +941,7 @@ const getlist = async () => {
// 地区财务固定参数:角色ID=1,按标签页筛选状态
const cashRoleId = '1';
- const receivedMarket = adminData.value.markets;
+ const receivedMarket = normalizeSubmitterMarket(adminData.value.markets);
if (activeTab.value === 'wait') searchData.value.status = 0;
else if (activeTab.value === 'pass') searchData.value.status = 13;
else if (activeTab.value === 'done') searchData.value.status = 46;
@@ -975,7 +975,7 @@ const getlist = async () => {
receivedMarket: MarketNameForId(receivedMarket),
cashRoleId: cashRoleId,
paymentCurrency: payCurrencySelect,
- submitterMarket: receivedMarket,
+ submitterMarket: normalizeSubmitterMarket(receivedMarket),
goodsName: goodsName,
// market: MarketNameForId(searchData.value.market)
market: markets.value
@@ -1838,4 +1838,4 @@ const handlePagination = (type, val) => {
}
}
}
-
\ No newline at end of file
+
diff --git a/src/views/moneyManage/receiveDetail/receiveService.vue b/src/views/moneyManage/receiveDetail/receiveService.vue
index 89314f6..0553813 100644
--- a/src/views/moneyManage/receiveDetail/receiveService.vue
+++ b/src/views/moneyManage/receiveDetail/receiveService.vue
@@ -450,7 +450,7 @@ import _ from 'lodash'
import { isNumber } from 'lodash'
// 导入客服相关规则和静态数据
import { addFormRule } from './utils/recriveFormRules.js'
-import { productList, MarketNameForId, CurrencyForId, marketList, statusList } from './utils/staticData.js'
+import { productList, MarketNameForId, CurrencyForId, marketList, normalizeSubmitterMarket, normalizeGoodsName, normalizePayType } from './utils/staticData.js'
// 国际化
import { useI18n } from 'vue-i18n'
@@ -575,7 +575,7 @@ const getlist = async () => {
receivedMarket: MarketNameForId(receivedMarket),
cashRoleId: cashRoleId,
paymentCurrency: payCurrencySelect,
- submitterMarket: adminData.value.markets,
+ submitterMarket: normalizeSubmitterMarket(adminData.value.markets),
goodsName: goodsName,
market: MarketNameForId(searchData.value.market)
}
@@ -774,6 +774,8 @@ const handleAddForm = async () => {
url: '/cashCollection/add',
data: {
...addFormData.value,
+ goodsName: normalizeGoodsName(addFormData.value.goodsName),
+ payType: normalizePayType(addFormData.value.payType),
submitterId: adminData.value.id,
permanentGold: (addFormData.value.permanentGold || 0) * 100,
freeGold: (addFormData.value.freeGold || 0) * 100,
@@ -781,7 +783,7 @@ const handleAddForm = async () => {
paymentCurrency: CurrencyForId(addFormData.value.paymentCurrency) || '',
receivedMarket: MarketNameForId(addFormData.value.receivedMarket) || '',
paymentAmount: (addFormData.value.paymentAmount) * 100,
- submitterMarket: adminData.value.markets
+ submitterMarket: normalizeSubmitterMarket(adminData.value.markets)
}
})
if (result.code == 200) {
@@ -1474,4 +1476,4 @@ onMounted(async () => {
display: flex;
justify-content: flex-end;
}
-
\ No newline at end of file
+
diff --git a/src/views/moneyManage/receiveDetail/utils/staticData.js b/src/views/moneyManage/receiveDetail/utils/staticData.js
index f022fa3..8520a33 100644
--- a/src/views/moneyManage/receiveDetail/utils/staticData.js
+++ b/src/views/moneyManage/receiveDetail/utils/staticData.js
@@ -213,6 +213,80 @@ export const MarketNameForId = (name) => {
return 24018
} else if (name == t('cash.markets.VietnamHCM') || name == '越南HCM' || name == 'Vietnam HCM') {
return 24022
+ } else if (name == t('common.markets.headquarters') || name == '总部' || name == 'Headquarters' || name == 'HQ') {
+ return '总部'
+ } else {
+ return name
+ }
+}
+
+export const normalizeSubmitterMarket = (name) => {
+ if (name == t('common.markets.headquarters') || name == '总部' || name == 'Headquarters' || name == 'HQ') {
+ return '总部'
+ } else {
+ return name
+ }
+}
+
+export const normalizeGoodsName = (name) => {
+ if (name == t('cash.coinRecharge') || name == '金币充值' || name == 'Coin Recharge') {
+ return '金币充值'
+ } else if (name == t('cash.aiService.aiTracking') || name == 'AI机构追踪' || name == 'AI Track') {
+ return 'AI机构追踪'
+ } else if (name == t('cash.aiService.aiAttack') || name == 'AI机构出击' || name == 'AI Attack') {
+ return 'AI机构出击'
+ } else if (name == t('cash.aiService.aiFunds') || name == 'AI机构资金' || name == 'AI Funds') {
+ return 'AI机构资金'
+ } else if (name == t('cash.aiService.aiActivity') || name == 'AI机构活跃度' || name == 'AI Activity') {
+ return 'AI机构活跃度'
+ } else if (name == t('cash.aiService.superPerspective') || name == '超级机构透视' || name == 'Super View') {
+ return '超级机构透视'
+ } else if (name == t('cash.aiService.superAmbush') || name == '超级机构伏击' || name == 'Super Ambush') {
+ return '超级机构伏击'
+ } else if (name == t('cash.aiService.superHunting') || name == '超级机构猎杀' || name == 'Super Hunt') {
+ return '超级机构猎杀'
+ } else if (name == t('cash.aiService.superPulse') || name == '超级机构脉搏' || name == 'Super Pulse') {
+ return '超级机构脉搏'
+ } else if (name == t('cash.aiService.superCompass') || name == '超级机构罗盘' || name == 'Super Compass') {
+ return '超级机构罗盘'
+ } else if (name == t('cash.aiService.aiDetectionTool') || name == 'AI机构探测神器' || name == 'AI Detector') {
+ return 'AI机构探测神器'
+ } else if (name == t('cash.aiService.superDetectionTool') || name == '超级机构探测神器' || name == 'Super Detector') {
+ return '超级机构探测神器'
+ } else if (name == t('cash.staticInfoFee') || name == '静态信息费' || name == 'Static Fee') {
+ return '静态信息费'
+ } else if (name == t('cash.BGmember') || name == '博股会员' || name == 'BG Member') {
+ return '博股会员'
+ } else if (name == t('cash.HC') || name == 'HC信息费' || name == 'HC Fee') {
+ return 'HC信息费'
+ } else {
+ return name
+ }
+}
+
+export const normalizePayType = (name) => {
+ if (name == t('cash.payMethods.stripe') || name == 'Stripe' || name == 'Stripe-链接收款') {
+ return 'Stripe-链接收款'
+ } else if (name == t('cash.payMethods.ipay88') || name == 'Ipay88' || name == 'Ipay88-链接收款') {
+ return 'Ipay88-链接收款'
+ } else if (name == t('cash.payMethods.paymentAsia') || name == 'PaymentAsia' || name == 'PaymentAsia-链接收款') {
+ return 'PaymentAsia-链接收款'
+ } else if (name == t('cash.payMethods.transfer') || name == 'E-Transfer') {
+ return 'E-Transfer'
+ } else if (name == t('cash.payMethods.grabpay') || name == 'Grabpay') {
+ return 'Grabpay'
+ } else if (name == t('cash.payMethods.nets') || name == 'Nets') {
+ return 'Nets'
+ } else if (name == t('cash.payMethods.paypal') || name == 'PayPal') {
+ return 'PayPal'
+ } else if (name == t('cash.payMethods.bankTransfer') || name == '银行转账' || name == 'Bank Transfer') {
+ return '银行转账'
+ } else if (name == t('cash.payMethods.cash') || name == '现金' || name == 'Cash') {
+ return '现金'
+ } else if (name == t('cash.payMethods.check') || name == '支票' || name == 'Check') {
+ return '支票'
+ } else if (name == t('cash.payMethods.card') || name == '刷卡' || name == 'Card') {
+ return '刷卡'
} else {
return name
}
diff --git a/src/views/moneyManage/refundDetail/refundCharge.vue b/src/views/moneyManage/refundDetail/refundCharge.vue
index 67440b3..48ea8ff 100644
--- a/src/views/moneyManage/refundDetail/refundCharge.vue
+++ b/src/views/moneyManage/refundDetail/refundCharge.vue
@@ -1,344 +1,343 @@
-
-
-
- {{ $t('common.jwcode') }}
-
-
-
- {{ $t('common.customerName') }}
-
-
-
- {{ $t('common.goodsName') }}
-
-
-
- {{ $t('common.market') }}
-
-
-
- {{ $t('common.orderStatus') }}
-
-
-
-
-
-
-
- {{ $t('cash_refund.paymentCurrency') }}
-
-
-
-
-
- {{ $t('common.payModel') }}
-
-
-
-
-
- {{ $t('cash_refund.payTime') }}
-
-
-
- {{ $t('common.search') }}
- {{ $t('common.exportExcel') }}
- {{ $t('common.viewExportList') }}
- {{ $t('common.reset') }}
-
-
-
-
-
-
-
-
- {{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
-
-
-
-
-
-
-
-
-
- {{ scope.row.refundModel === 1 ? $t('cash_refund.partialRefund') : $t('cash_refund.fullRefund') }}
-
-
-
-
-
-
-
- {{
- [20].includes(scope.row.status) ? $t('audit.waitAudit') :
- [30, 40].includes(scope.row.status) ? $t('audit.passed') :
- [22, 32].includes(scope.row.status) ? $t('audit.rejected') :
- scope.row.status === 41 ? $t('audit.RefundSuccessful') : scope.row.status
- }}
-
-
-
-
-
-
- {{ $t('audit.audit') }}
-
-
- {{ $t('cash_refund.viewProgress') }}
-
-
-
-
-
-
-
-
-
-
-
{{ $t('cash_refund.refundApplicationInfo') }}
-
- {{ $t('cash_refund.refundModel') }}
-
-
-
-
-
-
- {{ $t('common.permanentGold') }}
- {{ $t('common.个') }}
-
-
- {{ $t('common.freeGold') }}
- {{ $t('common.个') }}
-
-
- {{ $t('common_list.refundReason') }}
-
-
-
- {{ $t('cash_refund.originalOrderInfo') }}
-
-
-
- {{ $t('common.jwcode') }}
-
-
-
- {{ $t('common.market') }}
-
-
-
- {{ $t('common.goodsName') }}
-
-
-
- {{ $t('cash_refund.paymentCurrency') }}
-
-
-
- {{ $t('cash_refund.paymentAmount') }}
-
-
-
-
{{ $t('cash_refund.payTime') }}
-
+
+
+
+ {{ t('common.jwcode') }}
+
+
+
+ {{ t('common.customerName') }}
+
+
+
+ {{ t('common.productName') }}
+
+
+
+ {{ t('common.market') }}
+
+
+
+ {{ t('common.orderStatus') }}
+
+
+
+
-
-
{{ $t('cash_refund.payVoucher') }}
-
![]()
-
- {{ $t('cash_refund.noVoucher') }}
-
+
+
+ {{ t('common.payCurrency') }}
+
+
+
+
+
+ {{ t('common.payModel') }}
+
+
+
+
+
+ {{ t('common.payTime') }}
+
+
+
+ {{ t('common.search') }}
+ {{ t('common.exportExcel') }}
+ {{ t('common.viewExportList') }}
+ {{ t('common.reset') }}
+
-
-
-
-
{{ $t('common.customerName') }}
-
+
+
+
+
+
+
+ {{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.refundModel === 1 ? t('common_list.refundModelPart') : t('common_list.refundModelAll') }}
+
+
+
+
+
+
+
+ {{
+ [20].includes(scope.row.status) ? t('cash.statusList.pending') :
+ [30, 40].includes(scope.row.status) ? t('cash.statusList.passed') :
+ [22, 32].includes(scope.row.status) ? t('cash.statusList.rejected') :
+ scope.row.status === 41 ? t('cash.refundSuccess') : scope.row.status
+ }}
+
+
+
+
+
+
+ {{ t('common.audit') }}
+
+
+ {{ t('common.viewProgress') }}
+
+
+
+
+
+
+
+
+
+
+
{{ t('common_add.refundApplyInfo') }}
+
+ {{ t('common_add.refundModel') }}
+
+
+
+
+
+
+ {{ t('common_add.permanentGold') }}
+ {{ t('common.个') }}
+
+
+ {{ t('common_add.freeGold') }}
+ {{ t('common.个') }}
+
+
+ {{ t('common_add.refundReason') }}
+
+
-
-
{{ $t('common.activityName') }}
-
+
{{ t('common_add.originalOrderInfo') }}
+
+
+
+ {{ t('common_add.jwcode') }}
+
+
+
+ {{ t('common_add.market') }}
+
+
+
+ {{ t('common_add.productName') }}
+
+
+
+ {{ t('common_add.payCurrency') }}
+
+
+
+ {{ t('common_add.payAmount') }}
+
+
+
+ {{ t('common_add.payTime') }}
+
+
+
+
{{ t('common_add.transferVoucher') }}
+
![]()
+
+ {{ t('common_add.noTransferVoucher') }}
+
+
+
+
+
+ {{ t('common_add.customerName') }}
+
+
+
+ {{ t('common_add.activity') }}
+
+
+
+ {{ t('common_add.payMethod') }}
+
+
+
+ {{ t('common_add.receiveCurrency') }}
+
+
+
+ {{ t('common_add.receiveAmount') }}
+
+
+
+ {{ t('common_add.receiveTime') }}
+
+
+
+ {{ t('common_add.fee') }}
+
+
+
+ {{ t('common_add.submitter') }}
+
+
+
+ {{ t('common_add.remark') }}
+
+
+
-
-
{{ $t('common.payModel') }}
-
+
+
{{ t('common.rejectInfo') }}
+
+ {{ t('common_add.rejectRemark') }}
+
+
+
+ {{ t('common.reject') }}
+ {{ t('common.pass') }}
+
+
+ {{ t('common.cancel') }}
+ {{ t('common.confirm') }}
+
-
- {{ $t('cash_refund.receivedCurrency') }}
-
-
-
- {{ $t('cash_refund.receivedAmount') }}
-
-
-
- {{ $t('cash_refund.receivedTime') }}
-
-
-
- {{ $t('cash_refund.handlingCharge') }}
-
-
-
- {{ $t('common_list.submitter') }}
-
-
-
- {{ $t('common_list.remark') }}
-
-
-
-
-
-
{{ $t('cash_refund.rejectionInfo') }}
-
- {{ $t('cash_refund.rejectionRemark') }}
-
-
-
- {{ $t('common.reject') }}
- {{ $t('common.pass') }}
-
-
- {{ $t('common.cancel') }}
- {{ $t('common.confirm') }}
-
-
-
-
-
-
-
-
- {{ $t('common.confirm') }}
-
-
-
-
-
-
-
-
-
-
- {{ getTagText(scope.row.state) }}
-
-
-
-
-
- {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
-
-
-
-
-
- {{ $t('common_export.download') }}
-
+
+
+
+ {{ t('common.confirm') }}
+
+
+
+
+
+
+
+
+
+
+ {{ getTagText(scope.row.state) }}
+
+
+
+
+
+ {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
+
+
+
+
+
+ {{ t('common_export.download') }}
+
+
+
+
+
+
-
-
-
-
-
-
+