diff --git a/index.html b/index.html index b5a317e..9fe99cd 100644 --- a/index.html +++ b/index.html @@ -3,8 +3,8 @@ - - 财务金币管理系统 + + 嫡盾管理系统
diff --git a/src/views/audit/rechargeAudit.vue b/src/views/audit/rechargeAudit.vue index fc702b0..c9f8d37 100644 --- a/src/views/audit/rechargeAudit.vue +++ b/src/views/audit/rechargeAudit.vue @@ -61,7 +61,7 @@
总条数:{{ stats.totalNum }}条     - 退款总金币数:{{ (stats.permanentGolds + stats.freeGolds + stats.taskGolds).toFixed(2) }}金币     + 总金币数:{{ (stats.permanentGolds + stats.freeGolds + stats.taskGolds).toFixed(2) }}金币     永久金币:{{ stats.permanentGolds.toFixed(2) }}金币     免费金币:{{ stats.freeGolds.toFixed(2) }}金币     @@ -153,7 +153,7 @@ - + diff --git a/src/views/audit/refundAudit.vue b/src/views/audit/refundAudit.vue index 1deff6b..5cf4af4 100644 --- a/src/views/audit/refundAudit.vue +++ b/src/views/audit/refundAudit.vue @@ -136,7 +136,7 @@ - + diff --git a/src/views/consume/addCoinConsume.vue b/src/views/consume/addCoinConsume.vue index c07cbf4..d03ccd2 100644 --- a/src/views/consume/addCoinConsume.vue +++ b/src/views/consume/addCoinConsume.vue @@ -69,8 +69,8 @@ const rules = reactive({ sumGold: [ {required: true, message: "消费金币总数不能为空", trigger: "blur"}, { - pattern: /^\d+(\.\d{1})?$/, - message: "只能输入最多一个小数点的数字", + pattern: /^\d+(\.\d+)?$/, + message: "存在负数或数字格式不正确,请输入正数", trigger: "blur" } ], @@ -107,15 +107,19 @@ function validateInput() { if (user.value.jwcode == null) { ElMessage.warning("请先查询用户信息"); addConsume.value.sumGold = null; + user.value = {}; return false; } - // 验证金币数值 - if (user.value.jwcode && (isNaN(sumGold) || sumGold <= 0)) { - ElMessage.warning("消费金币总数必须是大于0的数字"); - // 将sumGold设置为null - addConsume.value.sumGold = null; - return false; - } + + /* 这块逻辑加到规则里面 + // 验证金币数值 + if (user.value.jwcode && (isNaN(sumGold) || sumGold <= 0)) { + ElMessage.warning("消费金币总数必须是大于0的数字"); + // 将sumGold设置为null + addConsume.value.sumGold = null; + return false; + } + */ // 验证金币总和 @@ -285,7 +289,7 @@ const getUser = async function (jwcode) { // 发送POST请求 const result = await request({ // url: "user/selectUser", - url: "/user/selectUser", // todo 服务器改回无ip的 + url: "/user/selectUser", data: { // 只需要传精网号 jwcode: addConsume.value.jwcode, @@ -293,7 +297,7 @@ const getUser = async function (jwcode) { }); console.log("请求成功", result); - if (result.code === 200) { + if (result.code === 200 && result.data !== null) { user.value = result.data; user.value.nowPermanentGold = result.data.nowPermanentGold / 100; user.value.nowFreeGold = result.data.nowFreeGold / 100; @@ -306,11 +310,13 @@ const getUser = async function (jwcode) { user.value.historyPermanentGold = (result.data.historyPermanentGold) / 100; user.value.historyFreeGold = (result.data.historyFreeGold) / 100; user.value.historyTaskGold = (result.data.historyTaskGold) / 100; + } else if (result.data == null){ + ElMessage.warning("用户不存在"); + // 重置表单 + resetForm(); } - if (result.code === 0) { + else if (result.code === 0 ) { ElMessage.warning("请检查查询参数") - } else if (result.data === null) { - ElMessage.error("用户不存在"); } else { console.log("用户信息", user.value); ElMessage.success(result.msg); @@ -326,8 +332,9 @@ const getGoods = async function () { try { // 发送POST请求 const result = await request({ - // url: "/product", // todo 后续换3楼的 2025年6月27日10:38:26 解决 - url: "http://39.101.133.168:8828/live_mall/api/product/all", + // url: "/product", // + // url: "http://39.101.133.168:8828/live_mall/api/product/all", + url: "https://api.homilychart.com/live_mall", }); // 将响应结果存储到响应式数据中 console.log("请求成功", result); diff --git a/src/views/login.vue b/src/views/login.vue index e0a944f..7e10e20 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -63,7 +63,7 @@ onMounted(() => { -

金币系统登录

+

嫡盾管理系统登录

diff --git a/src/views/refund/addCoinRefund.vue b/src/views/refund/addCoinRefund.vue index c7e398c..586c8bc 100644 --- a/src/views/refund/addCoinRefund.vue +++ b/src/views/refund/addCoinRefund.vue @@ -322,35 +322,61 @@ const handleSelectionChange = (selectedOption) => { } console.log('选择的商品', selectedOption); } -// 验证输入的金币数量是否超过商品花费的金币数量 -const validateGoldInput = (type, value) => { +// 统一的输入处理函数 +const handleGoldInput = (type, value) => { + // 1. 过滤非法字符(只允许数字和小数点) + let filtered = value.replace(/[^\d.]/g, ''); + + // 2. 防止多个小数点 + const dotCount = (filtered.match(/\./g) || []).length; + if (dotCount > 1) { + // 保留第一个小数点,移除后续的小数点 + const parts = filtered.split('.'); + filtered = parts[0] + '.' + parts.slice(1).join(''); + } + + // 3. 限制小数点后两位 + if (filtered.includes('.')) { + const [integer, decimal] = filtered.split('.'); + if (decimal.length > 2) { + filtered = `${integer}.${decimal.slice(0, 2)}`; + } + } + + // 4. 检查是否以小数点开头,如果是,在前面添加0 + if (filtered.startsWith('.')) { + filtered = '0' + filtered; + } + + // 5. 更新值 + addRefund.value[type] = filtered; + + // 6. 验证逻辑(这里直接应用修正后的值) const maxValue = selectedGoodsGold.value[type]; - const inputValue = Number(value); + const inputValue = Number(filtered || 0); + if (isNaN(inputValue)) { - return 0; + return; } + if (inputValue > maxValue) { - // 当输入金额大于商品金额时,显示提示信息 + // 修正为最大值并设置回输入框 + const correctedValue = maxValue.toFixed(2); + addRefund.value[type] = correctedValue; ElMessage.warning('所填金额大于该类金币余额'); - return maxValue; } - return Math.min(inputValue, maxValue); -} - -// 处理永久金币输入 -const handlePermanentGoldInput = (value) => { - addRefund.value.permanentGold = validateGoldInput('permanentGold', value); -} - -// 处理免费金币输入 -const handleFreeGoldInput = (value) => { - addRefund.value.freeGold = validateGoldInput('freeGold', value); + + if (inputValue < 0) { + // 修正为0并设置回输入框 + addRefund.value[type] = '0'; + ElMessage.warning('不能输入负数'); + } } -// 处理任务金币输入 -const handleTaskGoldInput = (value) => { - addRefund.value.taskGold = validateGoldInput('taskGold', value); -} +// 使用示例 +const handlePermanentGoldInput = (value) => handleGoldInput('permanentGold', value); +const handleFreeGoldInput = (value) => handleGoldInput('freeGold', value); +const handleTaskGoldInput = (value) => handleGoldInput('taskGold', value); // 计算总金币 const calculatedRechargeGoods = computed(() => { @@ -442,9 +468,9 @@ onMounted(async function () { style="width: 100px" :disabled="addRe.typeR === '0' ? true : false" @input="handlePermanentGoldInput($event)" - type="number" + > - +

@@ -467,7 +493,7 @@ onMounted(async function () { style="float: left; width: 100px" :disabled="addRe.typeR === '0' ? true : false" @input="handleTaskGoldInput($event)" - type="number" + />

diff --git a/src/views/usergold/clientCountDetail.vue b/src/views/usergold/clientCountDetail.vue index 8be6c0a..163f6b7 100644 --- a/src/views/usergold/clientCountDetail.vue +++ b/src/views/usergold/clientCountDetail.vue @@ -191,16 +191,17 @@ const get = async function (val) { //由于免费金币的计算方式是6月免费+12月免费,所以需要单独处理,以及计算总的免费金币和总的金币数放在一块 - const totalResult = await API({ + const totalResult = await API({ url: '/goldDetail/getTotal', method: 'post', data: { - jwcode: goldDetail.value.jwcode || '', + goldDetail:{...goldDetail.value}, + /* jwcode: goldDetail.value.jwcode || '', payPlatform: goldDetail.value.payPlatform || '', type: goldDetail.value.type || '', market: goldDetail.value.market || '', startTime: goldDetail.value.startTime || '', - endTime: goldDetail.value.endTime || '' + endTime: goldDetail.value.endTime || ''*/ } })