Browse Source

feat: 优化红包使用逻辑,完善输入验证和表单重置功能

zhangrenyuan/feature-20251125114759-多语言
zhangrenyuan 4 weeks ago
parent
commit
d16c65c7f3
  1. 50
      src/views/consume/gold/addCoinConsume.vue

50
src/views/consume/gold/addCoinConsume.vue

@ -77,6 +77,19 @@ const rules = reactive({
{ required: true, message: t('elmessage.noEmptySumGold'), trigger: "blur" }, { required: true, message: t('elmessage.noEmptySumGold'), trigger: "blur" },
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
// 使0
if (addConsume.value.redMoney === 1) {
const price = Number(addConsume.value.price || 0)
const redAmount = totalRedAmount.value
if (redAmount >= price) {
// 0
if (parseFloat(value) === 0 || value === 0) {
callback();
return;
}
}
}
// 00.10 // 00.10
const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value); const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value);
@ -164,16 +177,18 @@ function validateInput() {
// //
const totalAvailableGold = (user.value.nowSumGold) const totalAvailableGold = (user.value.nowSumGold)
// 使
//
if (user.value.jwcode && sumGold > totalAvailableGold) { if (user.value.jwcode && sumGold > totalAvailableGold) {
// 使
if (addConsume.value.redMoney == 0) {
if (addConsume.value.redMoney === 1) {
ElMessage.error('红包抵扣额不足');
//
selectedReds.value = []
} else {
ElMessage.error(t('elmessage.limitExceeded')); ElMessage.error(t('elmessage.limitExceeded'));
// sumGoldnull
addConsume.value.sumGold = null;
return false;
} }
// 使validateRedLimit
// sumGoldnull
addConsume.value.sumGold = null;
return false;
} }
return true; return true;
@ -479,6 +494,11 @@ const getUser = async function (jwcode) {
console.log("请求成功", result); console.log("请求成功", result);
if (result.code === 200 && result.data) { if (result.code === 200 && result.data) {
//
const currentJwcode = addConsume.value.jwcode;
resetForm();
addConsume.value.jwcode = currentJwcode;
// //
user.value = { user.value = {
...result.data, ...result.data,
@ -496,24 +516,14 @@ const getUser = async function (jwcode) {
}; };
ElMessage.success(t('elmessage.searchSuccess')); ElMessage.success(t('elmessage.searchSuccess'));
// 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()
// //
if (addConsume.value.redMoney === 1) { if (addConsume.value.redMoney === 1) {
getRedList() getRedList()
} }
//
validateInput()
} else if (!result.data) { } else if (!result.data) {
ElMessage.warning(t('elmessage.noUser')); ElMessage.warning(t('elmessage.noUser'));
@ -561,7 +571,7 @@ watch(
() => addConsume.value.sumGold, () => addConsume.value.sumGold,
(newValue) => { (newValue) => {
const parsedNewValue = parseFloat(newValue); const parsedNewValue = parseFloat(newValue);
if (!isNaN(parsedNewValue) && parsedNewValue > 0) {
if (!isNaN(parsedNewValue) && parsedNewValue >= 0) {
const { free, permanent, task } = calculateCoins(parsedNewValue); const { free, permanent, task } = calculateCoins(parsedNewValue);
addConsume.value.freeGold = free; addConsume.value.freeGold = free;
addConsume.value.permanentGold = permanent; addConsume.value.permanentGold = permanent;

Loading…
Cancel
Save