|
|
@ -64,16 +64,27 @@ const addConsume = ref({ |
|
|
|
const Ref = ref(null); |
|
|
|
// 表单验证规则 |
|
|
|
const rules = reactive({ |
|
|
|
jwcode: [{required: true, message: "请输入精网号", trigger: "blur"}], |
|
|
|
goodsName: [{required: true, message: "请选择消费商品", trigger: "change"}], // 修改为 change |
|
|
|
jwcode: [ |
|
|
|
{required: true, message: "请输入精网号", trigger: "blur"}, |
|
|
|
// { type: 'number', message: "精网号必须为数字", trigger: "blur" } |
|
|
|
], |
|
|
|
goodsName: [{required: true, message: "请选择消费商品", trigger: "blur"}], |
|
|
|
sumGold: [ |
|
|
|
{required: true, message: "消费金币总数不能为空", trigger: "blur"}, |
|
|
|
{ required: true, message: "消费金币总数不能为空", trigger: "blur" }, |
|
|
|
{ |
|
|
|
pattern: /^\d+(\.\d+)?$/, |
|
|
|
message: "存在负数或数字格式不正确,请输入正数", |
|
|
|
validator: (rule, value, callback) => { |
|
|
|
// 允许0开头的小数(如0.1)但不允许单独的0 |
|
|
|
const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value); |
|
|
|
|
|
|
|
if (!isValid) { |
|
|
|
callback(new Error("请输入大于0的正数(可包含最多两位小数)")); |
|
|
|
} else { |
|
|
|
callback(); |
|
|
|
} |
|
|
|
}, |
|
|
|
trigger: "blur" |
|
|
|
} |
|
|
|
], |
|
|
|
] |
|
|
|
}); |
|
|
|
// 查询商品的表单 |
|
|
|
const goods = ref([]); |
|
|
@ -99,6 +110,7 @@ const getAdminData = async function () { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// 输入验证函数 |
|
|
|
function validateInput() { |
|
|
|
const sumGold = parseFloat(addConsume.value.sumGold); |
|
|
@ -107,7 +119,7 @@ function validateInput() { |
|
|
|
if (user.value.jwcode == null) { |
|
|
|
ElMessage.warning("请先查询用户信息"); |
|
|
|
addConsume.value.sumGold = null; |
|
|
|
user.value = {}; |
|
|
|
user.value = {}; |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
@ -120,6 +132,53 @@ function validateInput() { |
|
|
|
return false; |
|
|
|
} |
|
|
|
*/ |
|
|
|
// sumGold 补充0(比如.1 为0.1) |
|
|
|
if (addConsume.value.sumGold && addConsume.value.sumGold.toString().startsWith('.')) { |
|
|
|
addConsume.value.sumGold = '0' + addConsume.value.sumGold; |
|
|
|
// ElMessage.info('已自动补充前导0'); |
|
|
|
} |
|
|
|
// 验证金币不能为负数 |
|
|
|
if (sumGold < 0) { |
|
|
|
ElMessage.warning("消费金币总数不能为负数"); |
|
|
|
addConsume.value.sumGold = null; |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
// 小数位数限制 2位,整数位数限制 6位 |
|
|
|
if (addConsume.value.sumGold) { |
|
|
|
const sumGoldStr = addConsume.value.sumGold.toString(); |
|
|
|
|
|
|
|
// 检查整数部分长度 |
|
|
|
if (sumGoldStr.includes('.')) { |
|
|
|
const integerPart = sumGoldStr.split('.')[0]; |
|
|
|
if (integerPart.length > 6) { |
|
|
|
// 截断整数部分到6位并提示 |
|
|
|
const truncatedInteger = integerPart.slice(0, 6); |
|
|
|
addConsume.value.sumGold = parseFloat(truncatedInteger); |
|
|
|
ElMessage.info('整数部分最多允许6位'); |
|
|
|
return; // 直接返回,不再处理小数部分 |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 纯整数情况 |
|
|
|
if (sumGoldStr.length > 6) { |
|
|
|
addConsume.value.sumGold = parseFloat(sumGoldStr.slice(0, 6)); |
|
|
|
ElMessage.info('整数部分最多允许6位'); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 处理小数部分 |
|
|
|
if (sumGoldStr.includes('.')) { |
|
|
|
const decimalPart = sumGoldStr.split('.')[1]; |
|
|
|
if (decimalPart.length > 2) { |
|
|
|
// 截断到两位小数并提示 |
|
|
|
const truncatedValue = parseFloat(sumGoldStr.slice(0, sumGoldStr.indexOf('.') + 3)); |
|
|
|
addConsume.value.sumGold = truncatedValue; |
|
|
|
ElMessage.info('最多允许输入两位小数'); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 验证金币总和 |
|
|
@ -284,47 +343,72 @@ const addBefore = () => { |
|
|
|
}; |
|
|
|
// 查询客户信息(通过精网号) |
|
|
|
const getUser = async function (jwcode) { |
|
|
|
trimJwCode(); |
|
|
|
try { |
|
|
|
// 验证精网号 |
|
|
|
if (!jwcode) { |
|
|
|
ElMessage.warning('精网号不能为空'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 验证精网号是否为数字 |
|
|
|
if (!/^\d+$/.test(jwcode)) { |
|
|
|
ElMessage.warning('精网号必须为数字'); |
|
|
|
resetForm() |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 发送POST请求 |
|
|
|
const result = await request({ |
|
|
|
// url: "user/selectUser", |
|
|
|
url: "/user/selectUser", |
|
|
|
data: { |
|
|
|
// 只需要传精网号 |
|
|
|
jwcode: addConsume.value.jwcode, |
|
|
|
}, |
|
|
|
data: { jwcode } |
|
|
|
}); |
|
|
|
|
|
|
|
console.log("请求成功", result); |
|
|
|
|
|
|
|
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; |
|
|
|
user.value.nowSumGold = result.data.nowSumGold / 100; |
|
|
|
user.value.nowTaskGold = result.data.nowTaskGold / 100; |
|
|
|
user.value.nowFreeJune = (result.data.nowFreeJune) / 100; |
|
|
|
user.value.nowFreeDecember = (result.data.nowFreeDecember) / 100; |
|
|
|
|
|
|
|
user.value.historySumGold = (result.data.historySumGold) / 100; |
|
|
|
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){ |
|
|
|
if (result.code === 200 && result.data) { |
|
|
|
// 处理用户数据 |
|
|
|
user.value = { |
|
|
|
...result.data, |
|
|
|
// 统一处理所有黄金数值,除以100 |
|
|
|
nowPermanentGold: result.data.nowPermanentGold / 100, |
|
|
|
nowFreeGold: result.data.nowFreeGold / 100, |
|
|
|
nowSumGold: result.data.nowSumGold / 100, |
|
|
|
nowTaskGold: result.data.nowTaskGold / 100, |
|
|
|
nowFreeJune: result.data.nowFreeJune / 100, |
|
|
|
nowFreeDecember: result.data.nowFreeDecember / 100, |
|
|
|
historySumGold: result.data.historySumGold / 100, |
|
|
|
historyPermanentGold: result.data.historyPermanentGold / 100, |
|
|
|
historyFreeGold: result.data.historyFreeGold / 100, |
|
|
|
historyTaskGold: result.data.historyTaskGold / 100 |
|
|
|
}; |
|
|
|
|
|
|
|
ElMessage.success("查询成功"); |
|
|
|
// 检查sumGold是否有值,如果有则重新计算金币分配 |
|
|
|
if (addConsume.value.sumGold) { |
|
|
|
const parsedSumGold = parseFloat(addConsume.value.sumGold); |
|
|
|
if (!isNaN(parsedSumGold) && parsedSumGold > 0) { |
|
|
|
const {free, permanent, task} = calculateCoins(parsedSumGold); |
|
|
|
addConsume.value.freeGold = free; |
|
|
|
addConsume.value.permanentGold = permanent; |
|
|
|
addConsume.value.taskGold = task; |
|
|
|
} |
|
|
|
} |
|
|
|
// 验证输入 |
|
|
|
validateInput() |
|
|
|
|
|
|
|
|
|
|
|
} else if (!result.data) { |
|
|
|
ElMessage.warning("用户不存在"); |
|
|
|
// 重置表单 |
|
|
|
resetForm(); |
|
|
|
} |
|
|
|
else if (result.code === 0 ) { |
|
|
|
ElMessage.warning("请检查查询参数") |
|
|
|
user.value.jwcode = null |
|
|
|
addConsume.value.jwcode = null |
|
|
|
// resetForm(); // 重置表单 |
|
|
|
} else { |
|
|
|
console.log("用户信息", user.value); |
|
|
|
ElMessage.success(result.msg); |
|
|
|
ElMessage.warning(result.msg || "请检查查询参数"); |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
console.log("请求失败", error); |
|
|
|
ElMessage.error("查询失败,请检查精网号是否正确"); |
|
|
|
// 在这里可以处理错误逻辑,比如显示错误提示等 |
|
|
|
console.error("请求失败", error); |
|
|
|
ElMessage.error("查询失败,请检查网络连接或精网号是否正确"); |
|
|
|
resetForm(); // 重置表单 |
|
|
|
} |
|
|
|
}; |
|
|
|
// 获取商品信息(三楼接口) |
|
|
|