餐单支持输入小数(0.5倍)
This commit is contained in:
parent
5128cb21f4
commit
3513222783
@ -60,7 +60,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ui-stepper-box f-fbc">
|
<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)" />
|
<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)" />
|
<img class="ui-stepper-icon" src="https://image.fulllinkai.com/202307/13/4147b66b88a1932a3a2a40bcedddec99.png" alt="" @click="addNutrientChange(itemV2)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -311,14 +311,17 @@
|
|||||||
let data = {
|
let data = {
|
||||||
chat_id: userStore.chatId,
|
chat_id: userStore.chatId,
|
||||||
prepare_guide: {
|
prepare_guide: {
|
||||||
|
// list: formatListForSubmit(readyNutrientList.value),
|
||||||
list: readyNutrientList.value,
|
list: readyNutrientList.value,
|
||||||
menu: submitTransition(readyNutrientList.value),
|
menu: submitTransition(readyNutrientList.value),
|
||||||
},
|
},
|
||||||
decoration_guide: {
|
decoration_guide: {
|
||||||
|
// list: formatListForSubmit(fitmentNutrientList.value),
|
||||||
list: fitmentNutrientList.value,
|
list: fitmentNutrientList.value,
|
||||||
menu: submitTransition(fitmentNutrientList.value),
|
menu: submitTransition(fitmentNutrientList.value),
|
||||||
},
|
},
|
||||||
clean_guide: {
|
clean_guide: {
|
||||||
|
// list: formatListForSubmit(cleanNutrientList.value),
|
||||||
list: cleanNutrientList.value,
|
list: cleanNutrientList.value,
|
||||||
menu: submitTransition(cleanNutrientList.value),
|
menu: submitTransition(cleanNutrientList.value),
|
||||||
},
|
},
|
||||||
@ -346,6 +349,20 @@
|
|||||||
}, 100);
|
}, 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种餐单类型是否都设置完成
|
// 检查3种餐单类型是否都设置完成
|
||||||
const troubleshoot = (data) => {
|
const troubleshoot = (data) => {
|
||||||
let first = true;
|
let first = true;
|
||||||
@ -510,8 +527,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 减少营养元素或食物数量
|
// 减少营养元素或食物数量
|
||||||
|
|
||||||
const minusNutrientChange = (e) => {
|
const minusNutrientChange = (e) => {
|
||||||
if (e.oneNum == 1) {
|
if (e.oneNum - 1 <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selectNutrientList.value.forEach((item) => {
|
selectNutrientList.value.forEach((item) => {
|
||||||
@ -519,6 +537,9 @@
|
|||||||
item.config.forEach((j) => {
|
item.config.forEach((j) => {
|
||||||
if (e.time == j.time) {
|
if (e.time == j.time) {
|
||||||
j.oneNum--;
|
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) => {
|
const changeMenuNum = (e, row) => {
|
||||||
|
// 将输入值转换为数字并限制为 0.5 的倍数
|
||||||
|
let newValue = toHalfMultiple(e);
|
||||||
|
|
||||||
|
// 可选:添加边界限制(不能小于0)
|
||||||
|
if (newValue < 0) {
|
||||||
|
newValue = 0;
|
||||||
|
}
|
||||||
|
|
||||||
selectNutrientList.value.forEach((item) => {
|
selectNutrientList.value.forEach((item) => {
|
||||||
if (item.id == row.id && item.config && item.config.length > 0) {
|
if (item.id == row.id && item.config && item.config.length > 0) {
|
||||||
item.config.forEach((j) => {
|
item.config.forEach((j) => {
|
||||||
if (row.time == j.time) {
|
if (row.time == j.time) {
|
||||||
j.oneNum = e * 1;
|
j.oneNum = newValue;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -693,6 +731,11 @@
|
|||||||
i.config = i.config.filter((item, index) => {
|
i.config = i.config.filter((item, index) => {
|
||||||
return arr.indexOf(item.time) == 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 {
|
.ui-stepper-box {
|
||||||
width: px2rem(162);
|
width: px2rem(200);
|
||||||
height: px2rem(52);
|
height: px2rem(52);
|
||||||
padding: 0 px2rem(20);
|
padding: 0 px2rem(20);
|
||||||
border-radius: px2rem(30);
|
border-radius: px2rem(30);
|
||||||
@ -1033,7 +1076,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ui-stepper-input-box {
|
.ui-stepper-input-box {
|
||||||
width: px2rem(80);
|
width: px2rem(100);
|
||||||
height: px2rem(52);
|
height: px2rem(52);
|
||||||
border-left: px2rem(2) solid #ececec;
|
border-left: px2rem(2) solid #ececec;
|
||||||
border-right: 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="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">
|
<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-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 == 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 == 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 == 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 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 class="bold font_32 ui-pt-10">{{ index + 1 }}</div>
|
||||||
<!-- <div v-if="role != 0" class="font_20 ui-text-pt">准备</div>-->
|
<!-- <div v-if="role != 0" class="font_20 ui-text-pt">准备</div>-->
|
||||||
@ -630,7 +630,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ui-stepper-box f-fbc">
|
<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)" />
|
<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)" />
|
<img class="ui-stepper-icon" src="https://image.fulllinkai.com/202307/13/4147b66b88a1932a3a2a40bcedddec99.png" alt="" @click="addNutrientChange(itemV2)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1635,7 +1635,7 @@
|
|||||||
|
|
||||||
// 减少营养元素或食物数量
|
// 减少营养元素或食物数量
|
||||||
const minusNutrientChange = (e) => {
|
const minusNutrientChange = (e) => {
|
||||||
if (e.oneNum == 1) {
|
if (e.oneNum - 1 <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selectNutrientList.value.forEach((item) => {
|
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) => {
|
const changeMenuNum = (e, row) => {
|
||||||
|
// 将输入值转换为数字并限制为 0.5 的倍数
|
||||||
|
let newValue = toHalfMultiple(e);
|
||||||
|
|
||||||
|
// 可选:添加边界限制(不能小于0)
|
||||||
|
if (newValue < 0) {
|
||||||
|
newValue = 0;
|
||||||
|
}
|
||||||
|
|
||||||
selectNutrientList.value.forEach((item) => {
|
selectNutrientList.value.forEach((item) => {
|
||||||
if (item.id == row.id && item.config && item.config.length > 0) {
|
if (item.id == row.id && item.config && item.config.length > 0) {
|
||||||
item.config.forEach((j) => {
|
item.config.forEach((j) => {
|
||||||
if (row.time == j.time) {
|
if (row.time == j.time) {
|
||||||
j.oneNum = e * 1;
|
j.oneNum = newValue;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// assignment();
|
// assignment();
|
||||||
};
|
};
|
||||||
|
|
||||||
const showMenuList = (e) => {
|
const showMenuList = (e) => {
|
||||||
let menuList = [
|
let menuList = [
|
||||||
{ title: '早餐前', time: 'beforeMorning', config: [] },
|
{ title: '早餐前', time: 'beforeMorning', config: [] },
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user