elementui组件库实现电影选座面板demo

news2024/11/23 16:36:51

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cinema Seat Selection</title>
    <!-- 引入Element UI的CSS -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入Vue -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <!-- 引入Element UI的JavaScript -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <style>
        .seat-selection {
            max-width: 600px;
            margin: 50px auto;
        }
        .seat-row {
            display: flex;
            justify-content: space-around;
            margin-bottom: 10px;
        }
        .seat {
            width: 50px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            border: 1px solid #ddd;
            cursor: pointer;
            border-radius: 5px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .seat.selected {
            background-color: #409EFF;
            color: white;
        }
        .seat.unavailable {
            background-color: #F56C6C;
            color: white;
            cursor: not-allowed;
        }
        .modal-content {
            max-width: 600px;
            margin: 20px auto;
            padding: 20px;
            background-color: #f0f0f0;
            border: 1px solid #ccc;
            border-radius: 5px;
        }
        .modal-footer {
            text-align: right;
            margin-top: 20px;
        }
    </style>
</head>
<body>
<div id="app">
    <el-button type="primary" @click="openAdminModal">设置损坏座位</el-button>

    <!-- 管理员模态框开始 -->
    <el-dialog
            title="设置损坏座位"
            :visible.sync="adminModalVisible"
            width="60%"
            :before-close="handleAdminModalClose"
    >
        <div class="modal-content">
            <p>点击座位来设置损坏状态:</p>
            <div v-for="row in seats" :key="row.rowNumber" class="seat-row">
                <div
                        v-for="seat in row.seats"
                        :key="seat.number"
                        class="seat"
                        :class="{ selected: seat.damaged }"
                        @click="toggleDamagedSeat(seat)"
                >
                    {{ seat.number }}
                </div>
            </div>
        </div>
        <div class="modal-footer">
            <el-button type="primary" @click="saveDamagedSeats">保存设置</el-button>
        </div>
    </el-dialog>
    <!-- 管理员模态框结束 -->

    <div class="seat-selection">
        <div v-for="row in seats" :key="row.rowNumber" class="seat-row">
            <div
                    v-for="seat in row.seats"
                    :key="seat.number"
                    class="seat"
                    :class="{ selected: seat.selected, unavailable: seat.unavailable || seat.damaged }"
                    @click="selectSeat(row.rowNumber, seat.number)"
            >
                <i class="el-icon-milk-tea"></i>{{ seat.number }}
            </div>
        </div>
        <el-button type="primary" @click="confirmSelection">确认选座</el-button>
    </div>

    <div v-if="selectedSeats.length > 0" class="selected-seats">
        <h3>你选中的座位:</h3>
        <ul>
            <li v-for="seat in selectedSeats" :key="seat">{{ seat }}</li>
        </ul>
    </div>
</div>

<script>
    new Vue({
        el: '#app',
        data() {
            return {
                seats: [
                    { rowNumber: 1, seats: [] },
                    { rowNumber: 2, seats: [] },
                    { rowNumber: 3, seats: [] }
                ],
                selectedSeats: [],
                adminModalVisible: false,
                adminDamagedSeats: [] // 管理员设置的损坏座位
            };
        },
        mounted() {
            // 初始化座位数据
            this.initSeats();
        },
        methods: {
            initSeats() {
                // 初始化座位信息,包括座位号和是否损坏状态
                const seatCount = 3; // 每行座位数量
                for (let i = 0; i < this.seats.length; i++) {
                    for (let j = 0; j < seatCount; j++) {
                        this.seats[i].seats.push({
                            number: j + 1,
                            selected: false,
                            unavailable: false,
                            damaged: false
                        });
                    }
                }
            },
            openAdminModal() {
                // 打开管理员模态框时初始化损坏座位状态
                this.adminModalVisible = true;
            },
            toggleDamagedSeat(seat) {
                // 切换座位的损坏状态
                seat.damaged = !seat.damaged;
            },
            saveDamagedSeats() {
                // 保存管理员设置的损坏座位
                this.adminDamagedSeats = [];
                this.seats.forEach(row => {
                    row.seats.forEach(seat => {
                        if (seat.damaged) {
                            this.adminDamagedSeats.push(seat.number);
                        }
                    });
                });
                this.adminModalVisible = false;
            },
            selectSeat(rowNumber, seatNumber) {
                const row = this.seats.find(r => r.rowNumber === rowNumber);
                const seat = row.seats.find(s => s.number === seatNumber);
                if (!seat.unavailable && !seat.damaged) {
                    seat.selected = !seat.selected;
                }
            },
            confirmSelection() {
                this.selectedSeats = [];
                this.seats.forEach(row => {
                    row.seats.forEach(seat => {
                        if (seat.selected) {
                            this.selectedSeats.push(`Row ${row.rowNumber} Seat ${seat.number}`);
                        }
                    });
                });
                if (this.selectedSeats.length === 0) {
                    this.$message({
                        message: '你还没有选中任何座位',
                        type: 'warning'
                    });
                } else {
                    this.$message({
                        message: '选座成功!',
                        type: 'success'
                    });
                }
            },
            handleAdminModalClose(done) {
                // 处理管理员模态框关闭时的逻辑
                done();
            }
        }
    });
</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为重磅官宣:超9亿台、5000个头部应用已加入鸿蒙生态!人形机器人现身 专注AI芯片!英伟达挑战者Cerebras要上市了

内容提要 华为表示&#xff0c;盘古大模型5.0加持&#xff0c;小艺能力全新升级。小艺智能体与导航条融为一体&#xff0c;无处不在&#xff0c;随时召唤。只需将文字、图片、文档“投喂”小艺&#xff0c;即可便捷高效处理文字、识别图像、分析文档。 正文 据华为终端官方微…

策略模式:applicationContext.getBeansOfType()方法

applicationContext.getBeansOfType() 一般用来获取某个接口的所有实例Bean 方法定义如下&#xff1a; 入参一般是接口&#xff0c;即interface。响应是个Map结构&#xff0c;key bean在容器中的名称&#xff0c;value bean实列 开发步骤&#xff1a; 1.定义接口 2.定义…

“锟斤拷,烫烫烫,屯屯屯”的由来

在程序开发过程中&#xff0c;调试是不可或缺的一环。调试不仅可以帮助开发者发现错误&#xff0c;还能提供程序运行时的内部状态信息。然而&#xff0c;在调试过程中&#xff0c;开发者有时会遇到一些奇怪的字符。这些乱码通常是由内存状态的特殊标记&#xff0c;或者字符集不…

如何通过准确预测需求来减少PMC成为“夹心饼干”的风险?

在瞬息万变的商业环境中&#xff0c;产品物料控制&#xff08;PMC&#xff09;部门时常扮演着“夹心饼干”的角色&#xff0c;既要满足市场快速变化的需求&#xff0c;又要协调供应商、生产线等多方利益。如何减少这种风险&#xff0c;让PMC部门从“夹心困境”中脱颖而出&#…

【Git】 -- Part1 -- 基础操作

1. Git简介 Git 是一个开源的分布式版本控制系统&#xff0c;由 Linus Torvalds 于 2005 年开发&#xff0c;主要用于源代码管理。Git 允许多名开发者共同合作处理同一个项目&#xff0c;跟踪每个文件的修改&#xff0c;并且在必要时回滚到之前的版本。 Linus Torvalds是Linux…

使用 Kubernetes 部署 MinIO 和 Trino

Trino&#xff08;以前称为 Presto&#xff09;是一个 SQL 查询引擎&#xff0c;而不是 SQL 数据库。Trino 避开了 SQL 数据库的存储组件&#xff0c;只专注于一件事 - 超快的 SQL 查询。Trino 只是一个查询引擎&#xff0c;不存储数据。相反&#xff0c;Trino与各种数据库交互…

怎么添加网页到桌面快捷方式?

推荐用过最棒的学习网站&#xff01;https://offernow.cn 添加网页到桌面快捷方式&#xff1f; 很简单&#xff0c;仅需要两步&#xff0c;接下来以chrome浏览器为例。 第一步 在想要保存的网页右上角点击设置。 第二步 保存并分享-创建快捷方式&#xff0c;保存到桌面即可…

rancher快照备份至S3

巧用rancher的S3快照备份功能&#xff0c;快速实现集群复制、集群转移、完全崩溃后的极限修复 1.进入集群管理&#xff0c;在对应的集群菜单后&#xff0c;点击编辑配置 2.选择ETCD&#xff0c;启用&#xff0c;Backup Snapshots to S3选项 并填入你的minio 3 配置成功后 手…

【Linux基础IO】深入理解缓冲区

缓冲区在文件操作的过程中是比较重要的&#xff0c;理解缓冲区向文件刷新内容的原理可以更好的帮助我们更深层的理解操作系统内核对文件的操作。 FILE 因为IO相关函数与系统调用接口对应&#xff0c;并且库函数封装系统调用&#xff0c;所以本质上&#xff0c;访问文件都是通过…

怎么用二维码在线下载视频?视频用二维码下载的制作方法

怎么把视频转换成二维码之后还可以下载视频呢&#xff1f;现在使用二维码的方式来分享视频内容在很多行业和场景中都有应用&#xff0c;这种方式能够更加简单快捷的完成视频的传播分享&#xff0c;那么怎么让扫码者可以自由选择下载视频呢&#xff1f;下面来给大家分享扫码下载…

[Vulnhub] Troll FTP匿名登录+定时任务权限提升

信息收集 IP AddressPorts Opening192.168.8.104TCP:21,22,80 $ nmap -sC -sV 192.168.8.104 -p- --min-rate 1000 Nmap scan report for 192.168.8.104 (192.168.8.104) Host is up (0.0042s latency). Not shown: 65532 closed tcp ports (conn-refused) PORT STATE SER…

2024年老王磁力搜索引擎实测好用,赶快收藏一下

对于不少老司机&#xff0c;多多少少都不知道磁力搜索&#xff0c;不管是学习&#xff0c;还行电影、电视剧、音乐。一个好的工具可以让我们节省大量的时间&#xff0c;只要你想要就可以找的到。 今天整理了几个磁力搜索磁力链接资源&#xff0c;除老王磁力还有整理了9个好用的…

使用LangChain+Ollama自己做的一个和大语言模型聊天的网站支持上下文对话,学习记录。

0.引言 在自己学习的过程中可以自己做一个和聊天大模型对话的一个小网站&#xff0c;成就感不亚于人生第一次跑完10km。 1.项目介绍 前端代码&#xff1a;Vue3, MarkDownIT. 后端代码&#xff1a;Python3, Fernet库, OpenAPI, LangChain, Ollama. Ollama 本地模型的部署和管理…

【经验分享】RT600 serial boot mode测试

【经验分享】RT600 serial boot mode测试 一&#xff0c; 文档描述二&#xff0c; Serial boot mode测试2.1 evkmimxrt685_gpio_led_output 工程测试2.2 evkmimxrt685_dsp_hello_world_usart_cm33工程测试 一&#xff0c; 文档描述 RT600的启动模式共支持4种&#xff1a; 1&am…

Ubuntu系统下修改网卡IP地址

Ubuntu系统下修改网卡IP地址 一、Ubuntu系统介绍1.1 Ubuntu简介1.2 Ubuntu网络配置方式 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、配置网卡IP地址4.1 备份网卡配置文件4.2 查看当前IP地址4.3 修改…

不在枯燥用第三方库简化你的编程之路

简介&#xff1a; Python作为一种多用途的编程语言,得益于其丰富的第三方库和框架,极大地拓展了其功能和应用领域.这些工具不仅提升了开发效率,也使得Python在各个领域展现出色的表现. 今天我们就来聊一聊Python 第三方库是由第三方开发者编写并共享的库,可用于扩展 Python 的…

【windows|006】基本分区和动态磁盘详解

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

buuctf----firmware

- -一定不能再ubutu22进行,我是在18(血泪教训) binwalk安装 buuctf firmware(binwalk和firmware-mod-kit的使用)_buu firmware-CSDN博客 参考博客 指令 sudo apt-get update sudo apt-get install python3-dev python3-setuptools python3-pip zlib1g-dev libmagic-dev pi…

Mars3d实现汽车尾气粒子效果从汽车屁股开始发射效果

本身的汽车尾气粒子效果&#xff1a;在汽车模型的中间发射的↓↓↓↓↓↓↓↓↓↓↓ Mars3d实例中是使用transY偏移值实现汽车尾气粒子效果从汽车屁股开始发射效果&#xff1a; // 动态运行车辆的尾气粒子效果 function addDemoGraphic4(graphicLayer) {const fixedRoute new…

【ARMv8/v9 GIC 系列 4.2 -- GIC CPU Interface 详细介绍】

文章目录 GIC CPU Interface 介绍CPU Interface 主要寄存器 GIC CPU Interface 介绍 A 系列处理器提供 5个管脚来实现中断&#xff0c;分别是&#xff1a; nIRQ&#xff1a;物理普通中断nFIQ&#xff1a;物理快速中断nVIRQ&#xff1a;虚拟普通中断nVFIQ&#xff1a;虚拟快速…