Taro+vue3 电影H5 选择座位的时候 判断当前的座位是否 旁边留空 或者中间座位留空
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
const onConfirm = () => {
const area_arr = selectedSeat.value.map((item) => {
return item.areaId;
});
const abc = isRepeat(area_arr);
if (!abc) {
Taro.showToast({
title: "请选择同一价格的座位,暂不支持跨区域选座~~",
icon: "none",
duration: 2000,
});
return;
}
let flag = true
let tempList = seatList.value.reduce((acc, seat) => {
const rowIndex = seat.gRow - 1;
if (!acc[rowIndex]) {
acc[rowIndex] = [];
}
acc[rowIndex].push(seat);
return acc;
}, []);
const isSeatList = tempList
.filter(item => Array.isArray(item))
.map(row => row.filter(item => item.seatNo !== ''));
// Set realRow property for each seat
isSeatList.forEach((itemList, index) => {
for (let i = 0; i < itemList.length; i++) {
itemList[i].realRow = index + 1;
}
});
// Group selected seats by row
const seatsByRow = selectedSeat.value.reduce((acc, seat) => {
const row = seat.row;
if (!acc[row]) {
acc[row] = [];
}
acc[row].push(seat);
return acc;
}, {});
// Check conditions based on the number of selected seats in each row
Object.values(seatsByRow).forEach(rowList => {
rowList.sort((a, b) => a.col - b.col);
switch (rowList.length) {
case 1:
let target = rowList[0];
let targetIndex = 0;
let rowNum = 0;
for (let i = 0; i < isSeatList.length; i++) {
for (let j = 0; j < isSeatList[i].length; j++) {
if (target.seatNo === isSeatList[i][j].seatNo) {
targetIndex = j + 1;
rowNum = isSeatList[i].length;
}
}
}
if (targetIndex === 2 || targetIndex === rowNum - 1) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
break;
case 2:
let firstIndex = 0;
let secondIndex = 0;
let rowNum2 = 0;
for (let i = 0; i < isSeatList.length; i++) {
for (let j = 0; j < isSeatList[i].length; j++) {
if (rowList[0].seatNo === isSeatList[i][j].seatNo) {
firstIndex = j + 1;
rowNum2 = isSeatList[i].length;
}
if (rowList[1].seatNo === isSeatList[i][j].seatNo) {
secondIndex = j + 1;
}
}
}
if (isSeatList[firstIndex - 2]?.seatNo === '' || isSeatList[secondIndex]?.seatNo === '') {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false;
return;
}
// break;
if (rowList[1].col - rowList[0].col === 2) {
Taro.showToast({
title: "座位中间不要留空哦~",
icon: "none",
});
flag = false
return;
}
if (firstIndex === 2 && secondIndex === 3) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
if (firstIndex === rowNum2 - 2 && secondIndex === rowNum2 - 1) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
if (firstIndex === 2 || firstIndex === rowNum2 - 2 || secondIndex === rowNum2 - 1) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
if (firstIndex === 2 && secondIndex === rowNum2 - 1) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
break;
default:
for (let i = 0; i < rowList.length - 1; i++) {
if (rowList[i + 1].col - rowList[i].col === 2) {
Taro.showToast({
title: "座位中间不要留空哦~",
icon: "none",
});
flag = false
return;
}
}
let theRowSeatList = isSeatList[rowList[0].realRow - 1];
let first = theRowSeatList.findIndex(item => item.seatNo === rowList[0].seatNo) + 1;
let second = theRowSeatList.findIndex(item => item.seatNo === rowList[1].seatNo) + 1;
if (first === 2 && second === 3) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
let endFirst = theRowSeatList.findIndex(item => item.seatNo === rowList[rowList.length - 1].seatNo) + 1;
let endSecond = theRowSeatList.findIndex(item => item.seatNo === rowList[rowList.length - 2].seatNo) + 1;
if (endFirst === theRowSeatList.length - 1 && endSecond === theRowSeatList.length - 2) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
if (first === 2) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
if (endFirst === theRowSeatList.length - 1) {
Taro.showToast({
title: "座位旁边不要留空哦~",
icon: "none",
});
flag = false
return;
}
break;
}
});
if (flag) {
phoneInputVisible.value = true;
}
// phoneInputVisible.value = true;
};
选择座位的时候 点击确定的时候
GitHub 加速计划 / vu / vue
80
16
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
9e887079
[skip ci] 2 个月前
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 6 个月前
更多推荐
已为社区贡献9条内容
所有评论(0)