Taro+vue3 电影H5 选择座位的时候 判断当前的座位是否 旁边留空 或者中间座位留空

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;
};

选择座位的时候 点击确定的时候 

Taro+vue3 电影H5 选择座位的时候 判断当前的座位是否 旁边留空 或者中间座位留空_第1张图片

你可能感兴趣的:(taro,前端)