餐单支持输入小数(0.5倍)

This commit is contained in:
lanzhihui 2026-05-25 18:39:09 +08:00
parent 5128cb21f4
commit 3513222783
2 changed files with 72 additions and 11 deletions

View File

@ -60,7 +60,7 @@
</div>
<div class="ui-stepper-box f-fbc">
<img class="ui-stepper-icon" src="https://image.fulllinkai.com/202307/13/cbff16e20c89514f8766b1bfa708c3e9.png" alt="" @click="minusNutrientChange(itemV2)" />
<van-field v-model="itemV2.oneNum" type="tel" maxlength="4" :min="1" class="ui-stepper-input-box f-fcc font_28 color3" @update:model-value="changeMenuNum($event, itemV2)" />
<van-field v-model="itemV2.oneNum" type="number" maxlength="6" :min="0.1" class="ui-stepper-input-box f-fcc font_28 color3" @update:model-value="changeMenuNum($event, itemV2)" />
<img class="ui-stepper-icon" src="https://image.fulllinkai.com/202307/13/4147b66b88a1932a3a2a40bcedddec99.png" alt="" @click="addNutrientChange(itemV2)" />
</div>
</div>
@ -311,14 +311,17 @@
let data = {
chat_id: userStore.chatId,
prepare_guide: {
// list: formatListForSubmit(readyNutrientList.value),
list: readyNutrientList.value,
menu: submitTransition(readyNutrientList.value),
},
decoration_guide: {
// list: formatListForSubmit(fitmentNutrientList.value),
list: fitmentNutrientList.value,
menu: submitTransition(fitmentNutrientList.value),
},
clean_guide: {
// list: formatListForSubmit(cleanNutrientList.value),
list: cleanNutrientList.value,
menu: submitTransition(cleanNutrientList.value),
},
@ -346,6 +349,20 @@
}, 100);
};
//
const formatListForSubmit = (list) => {
return list.map((item) => {
if (item.config && item.config.length > 0) {
item.config = item.config.map((configItem) => {
// oneNum "1.0", "0.5"
configItem.oneNum = Number(configItem.oneNum).toFixed(1);
return configItem;
});
}
return item;
});
};
// 3
const troubleshoot = (data) => {
let first = true;
@ -510,8 +527,9 @@
};
//
const minusNutrientChange = (e) => {
if (e.oneNum == 1) {
if (e.oneNum - 1 <= 0) {
return;
}
selectNutrientList.value.forEach((item) => {
@ -519,6 +537,9 @@
item.config.forEach((j) => {
if (e.time == j.time) {
j.oneNum--;
// if (j.oneNum <= 0) {
// j.oneNum = 0;
// }
}
});
}
@ -526,12 +547,29 @@
};
//
// 0.5
const toHalfMultiple = (value) => {
const num = parseFloat(value);
if (isNaN(num)) return 0;
// 0.5
return Math.round(num * 2) / 2;
};
//
const changeMenuNum = (e, row) => {
// 0.5
let newValue = toHalfMultiple(e);
// 0
if (newValue < 0) {
newValue = 0;
}
selectNutrientList.value.forEach((item) => {
if (item.id == row.id && item.config && item.config.length > 0) {
item.config.forEach((j) => {
if (row.time == j.time) {
j.oneNum = e * 1;
j.oneNum = newValue;
}
});
}
@ -693,6 +731,11 @@
i.config = i.config.filter((item, index) => {
return arr.indexOf(item.time) == index;
});
// i.config = i.config.map((item, index) => {
// console.log(item, 'item===');
// item.oneNum = parseFloat(item.oneNum) || 1.0;
// return item;
// });
}
});
}
@ -1019,7 +1062,7 @@
}
.ui-stepper-box {
width: px2rem(162);
width: px2rem(200);
height: px2rem(52);
padding: 0 px2rem(20);
border-radius: px2rem(30);
@ -1033,7 +1076,7 @@
}
.ui-stepper-input-box {
width: px2rem(80);
width: px2rem(100);
height: px2rem(52);
border-left: px2rem(2) solid #ececec;
border-right: px2rem(2) solid #ececec;

View File

@ -28,9 +28,9 @@
<div v-for="index in nbsp" :key="index + '-only'" class="day_number font_28 colorF"></div>
<div v-for="(item, index) in signInList" :key="index" class="day_number ui-relative">
<img v-if="copyYear == year && month == copyMonth && date == index + 1" class="ui-toDay-icon" src="https://image.fulllinkai.com/202411/05/6c704d26056175e681093ecb90f50ecd.png" alt="" />
<img v-else-if="item == 5" class="ui-right-icon" src="https://image.fulllinkai.com/202411/07/12c66a726bd8458331250d059ae8ca8f.png" alt="" />
<img v-else-if="item == 6" class="ui-right-icon" src="https://image.fulllinkai.com/202411/07/86ba822a51499157b1ecfd1e5d0d7584.png" alt="" />
<img v-else-if="item == 7" class="ui-right-icon" src="https://image.fulllinkai.com/202411/07/017af8f5179d7c1843c9d80dae0060b8.png" alt="" />
<!-- <img v-else-if="item == 5" class="ui-right-icon" src="https://image.fulllinkai.com/202411/07/12c66a726bd8458331250d059ae8ca8f.png" alt="" />-->
<!-- <img v-else-if="item == 6" class="ui-right-icon" src="https://image.fulllinkai.com/202411/07/86ba822a51499157b1ecfd1e5d0d7584.png" alt="" />-->
<!-- <img v-else-if="item == 7" class="ui-right-icon" src="https://image.fulllinkai.com/202411/07/017af8f5179d7c1843c9d80dae0060b8.png" alt="" />-->
<div v-if="item == 1 || item == 2 || item == 5" class="number_box menuV3 text-center" :class="index == signIndex ? 'ui-select-menu-three' : ''" @click.stop="getMenu(item, index + 1)">
<div class="bold font_32 ui-pt-10">{{ index + 1 }}</div>
<!-- <div v-if="role != 0" class="font_20 ui-text-pt">准备</div>-->
@ -630,7 +630,7 @@
</div>
<div class="ui-stepper-box f-fbc">
<img class="ui-stepper-icon" src="https://image.fulllinkai.com/202307/13/cbff16e20c89514f8766b1bfa708c3e9.png" alt="" @click="minusNutrientChange(itemV2)" />
<van-field v-model="itemV2.oneNum" type="tel" maxlength="4" :min="1" class="ui-stepper-input-box f-fcc font_28 color3" @update:model-value="changeMenuNum($event, itemV2)" />
<van-field v-model="itemV2.oneNum" type="number" maxlength="4" :min="0" class="ui-stepper-input-box f-fcc font_28 color3" @update:model-value="changeMenuNum($event, itemV2)" />
<img class="ui-stepper-icon" src="https://image.fulllinkai.com/202307/13/4147b66b88a1932a3a2a40bcedddec99.png" alt="" @click="addNutrientChange(itemV2)" />
</div>
</div>
@ -1635,7 +1635,7 @@
//
const minusNutrientChange = (e) => {
if (e.oneNum == 1) {
if (e.oneNum - 1 <= 0) {
return;
}
selectNutrientList.value.forEach((item) => {
@ -1650,18 +1650,36 @@
};
//
// 0.5
const toHalfMultiple = (value) => {
const num = parseFloat(value);
if (isNaN(num)) return 0;
// 0.5
return Math.round(num * 2) / 2;
};
//
const changeMenuNum = (e, row) => {
// 0.5
let newValue = toHalfMultiple(e);
// 0
if (newValue < 0) {
newValue = 0;
}
selectNutrientList.value.forEach((item) => {
if (item.id == row.id && item.config && item.config.length > 0) {
item.config.forEach((j) => {
if (row.time == j.time) {
j.oneNum = e * 1;
j.oneNum = newValue;
}
});
}
});
// assignment();
};
const showMenuList = (e) => {
let menuList = [
{ title: '早餐前', time: 'beforeMorning', config: [] },