餐单支持输入小数(0.5倍)
This commit is contained in:
parent
5128cb21f4
commit
3513222783
@ -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;
|
||||
|
||||
@ -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: [] },
|
||||
|
||||
Loading…
Reference in New Issue
Block a user