Browse Source

feat(consume): 优化消费金币验证逻辑,对数字 0的 优化

- 修改消费金币总数的验证规则,增加对负数和数字格式的校验
- 限制小数位数为最多两位- 在 managerecharge/rate.vue 中添加表单验证逻辑
zhangrenyuan/feature-20250623164058-金币前端
lihui 4 weeks ago
parent
commit
7d3158e2df
  1. 46
      src/views/consume/addCoinConsume.vue
  2. 33
      src/views/managerecharge/rate.vue

46
src/views/consume/addCoinConsume.vue

@ -68,15 +68,23 @@ const rules = reactive({
{required: true, message: "请输入精网号", trigger: "blur"}, {required: true, message: "请输入精网号", trigger: "blur"},
// { type: 'number', message: "", trigger: "blur" } // { type: 'number', message: "", trigger: "blur" }
], ],
goodsName: [{required: true, message: "请选择消费商品", trigger: "change"}],
goodsName: [{required: true, message: "请选择消费商品", trigger: "blur"}],
sumGold: [ sumGold: [
{required: true, message: "消费金币总数不能为空", trigger: "blur"},
{ required: true, message: "消费金币总数不能为空", trigger: "blur" },
{ {
pattern: /^\d+(\.\d+)?$/,
message: "存在负数或数字格式不正确,请输入正数",
validator: (rule, value, callback) => {
// 00.10
const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value);
if (!isValid) {
callback(new Error("请输入大于0的正数(可包含最多两位小数)"));
} else {
callback();
}
},
trigger: "blur" trigger: "blur"
} }
],
]
}); });
// //
const goods = ref([]); const goods = ref([]);
@ -102,6 +110,7 @@ const getAdminData = async function () {
} }
}; };
// //
function validateInput() { function validateInput() {
const sumGold = parseFloat(addConsume.value.sumGold); const sumGold = parseFloat(addConsume.value.sumGold);
@ -123,6 +132,33 @@ function validateInput() {
return false; 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
if (addConsume.value.sumGold) {
const sumGoldStr = addConsume.value.sumGold.toString();
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('最多允许输入两位小数');
}
}
}
// //

33
src/views/managerecharge/rate.vue

@ -208,17 +208,28 @@ const editRate = async function () {
} }
} }
//
//
const edit = () => { const edit = () => {
ElMessageBox.confirm('确认修改?')
.then(() => {
editRate()
regeEdit.value = false
})
.catch(() => {
regeEdit.value = false
})
}
editFormRef.value.validate(async (valid) => {
if (valid) {
try {
await ElMessageBox.confirm("确认修改?");
await editRate();
console.log("修改成功");
regeEdit.value = false;
} catch (error) {
console.log("取消修改", error);
regeEdit.value = false;
}
} else {
ElMessage({
type: "error",
message: "请检查输入内容",
});
}
});
};
// //
const cancelEdit = () => { const cancelEdit = () => {
@ -284,7 +295,6 @@ function handleInput(value) {
// //
// ElMessage.info('0'); // ElMessage.info('0');
} }
// //
rateEdit.value.num = value; rateEdit.value.num = value;
@ -393,6 +403,7 @@ onMounted(async function () {
ref="editFormRef" ref="editFormRef"
style="max-width: 600px" style="max-width: 600px"
:model="rateEdit" :model="rateEdit"
:rules="rules" :rules="rules"
label-width="auto" label-width="auto"
class="demo-ruleForm" class="demo-ruleForm"

Loading…
Cancel
Save