diff --git a/admin-ui/src/utils/westernNumberFormat.js b/admin-ui/src/utils/westernNumberFormat.js index fd216df..7583fa7 100644 --- a/admin-ui/src/utils/westernNumberFormat.js +++ b/admin-ui/src/utils/westernNumberFormat.js @@ -74,3 +74,52 @@ export function intStringToNumber(digits) { if (isNaN(n)) return undefined return n } + +/** 有符号积分:供可输入负数的整数字段,范围 [-INT_MAX, INT_MAX] */ +export function sanitizeSignedIntDigits(raw) { + let t = String(raw == null ? '' : raw).replace(/,/g, '') + t = t.trim() + if (t === '' || t === '+') { + return '' + } + if (t === '-') { + return '-' + } + const neg = t.startsWith('-') + let rest = neg ? t.slice(1) : t + rest = rest.replace(/\D/g, '') + if (rest === '') { + return neg ? '-' : '' + } + let n = parseInt(rest, 10) + if (isNaN(n)) { + return neg ? '-' : '' + } + n = Math.min(INT_MAX, Math.max(0, n)) + return (neg ? '-' : '') + String(n) +} + +export function formatSignedIntDisplay(s) { + if (s == null || s === '') { + return '' + } + if (s === '-') { + return '-' + } + const n = parseInt(String(s).replace(/,/g, ''), 10) + if (isNaN(n)) { + return '' + } + return n.toLocaleString('en-US') +} + +export function signedIntStringToNumber(s) { + if (s == null || s === '' || s === '-') { + return undefined + } + const n = parseInt(String(s).replace(/,/g, ''), 10) + if (isNaN(n)) { + return undefined + } + return n +} diff --git a/admin-ui/src/views/ai/balanceChangeRecord/index.vue b/admin-ui/src/views/ai/balanceChangeRecord/index.vue index 6609b04..d2aba14 100644 --- a/admin-ui/src/views/ai/balanceChangeRecord/index.vue +++ b/admin-ui/src/views/ai/balanceChangeRecord/index.vue @@ -46,11 +46,6 @@ 搜索 重置 - - - - - 导出 - - - + + + - - - - - + + + + + + - - + + @@ -146,17 +149,17 @@ export default { dateRange: [], // 操作类型映射关系 typeMap: { - 0: "充值", - 1: "返佣", - 2: "充值赠送", - 3: "体验金赠送", - 4: "体验金回收", - 5: "一键换衣", - 6: "图生图2", - 7: "一键换脸", - 8: "快捷生图", + // 0: "充值", + // 1: "返佣", + // 2: "充值赠送", + // 3: "体验金赠送", + // 4: "体验金回收", + // 5: "一键换衣", + // 6: "图生图2", + // 7: "一键换脸", + // 8: "快捷生图", 9: "快捷生视频", - 10: "退款", + // 10: "退款", 11: "系统操作", 12: "团队下发", 13: "团队收回" @@ -184,6 +187,7 @@ export default { pageNum: 1, pageSize: 10, type: null, + uuid: null, userId: null }, // 表单参数 @@ -200,14 +204,39 @@ export default { this.getList(); }, methods: { - formatChangeAmount(row, column) { - const value = row.changeAmount; - // 检查值是否为数字且大于 0 - if (typeof value === "number" && value > 0) { - return `+${value}`; + /** 西式千分位(en-US),积分为整数 */ + formatPointsWestern(value) { + if (value === null || value === undefined || value === "") { + return ""; } - // 对于小于等于 0 的值,直接返回原始值(或根据需要格式化) - return value; + const n = Number(value); + if (Number.isNaN(n)) { + return String(value); + } + return n.toLocaleString("en-US", { maximumFractionDigits: 0 }); + }, + formatChangeAmount(row) { + const value = row.changeAmount; + if (value === null || value === undefined || value === "") { + return ""; + } + const n = Number(value); + if (Number.isNaN(n)) { + return String(value); + } + const formatted = Math.abs(n).toLocaleString("en-US", { + maximumFractionDigits: 0 + }); + if (n > 0) { + return `+${formatted}`; + } + if (n < 0) { + return `-${formatted}`; + } + return "0"; + }, + formatResultAmount(row) { + return this.formatPointsWestern(row.resultAmount); }, handleTypeChange(val) { this.queryParams.type = val; @@ -320,9 +349,7 @@ export default { handleExport() { this.download( "ai/balance-change-record/export", - { - ...this.queryParams - }, + this.addDateRange({ ...this.queryParams }, this.dateRange), `record_${new Date().getTime()}.xlsx` ); } diff --git a/admin-ui/src/views/ai/config/index.vue b/admin-ui/src/views/ai/config/index.vue index dc0830b..d6ebd9d 100644 --- a/admin-ui/src/views/ai/config/index.vue +++ b/admin-ui/src/views/ai/config/index.vue @@ -1,10 +1,10 @@