第10次课后作业《web应用技术》

1、编写登录页面,让自己的页面有权限管理功能。使用session进行权限初步控制的案例代码参见:使用session进行登陆检验-CSDN博客

运行结果 

运行代码 

 index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!--引入组件库-->
    <script src="js/jquery.min.js"></script>
    <script src="js/vue.js"></script>
    <script src="js/element.js"></script>
    <script src="js/axios-0.18.0.js"></script>
    <link rel="stylesheet" href="js/element.css">
    <title>用户管理</title>
</head>
<body>
<div id="app">

    <div v-if="tableData1.code==1">
    <el-container style="height: 100vh; display: flex; flex-direction: row;">
        <!--侧边栏-->
        <el-aside width="200px" >
            <el-menu background-color="#FEF5E4" text-color="#F09466" active-text-color="#ffd04b" style="position: absolute;top: 100px;">
                <el-menu-item index="1">
                    <i class="el-icon-menu"></i>
                    <span slot="title">
                        用户管理
                        </span>
                </el-menu-item>
                <el-menu-item index="2">
                    <i class="el-icon-document"></i>
                    <span slot="title">
                        电影信息管理
                        </span>
                </el-menu-item>
                <el-menu-item index="3">
                    <i class="el-icon-document"></i>
                    <span slot="title">
                        场次管理
                        </span>
                </el-menu-item>
                <el-menu-item index="4">
                    <i class="el-icon-document"></i>
                    <span slot="title">
                        订单管理
                        </span>
                </el-menu-item>
            </el-menu>
        </el-aside>

        <el-container>
            <!--头部-->
            <el-header style="height:80px; position: sticky; top: 0;z-index: 10" >
                <div>
                    <img src="./img/head.jpg" alt="">
                    影院管理系统
                </div>
                <el-button type="info" @click="back" style="height:40px; background-color: #D7A93A">退出</el-button>
            </el-header>

            <!--查询-->
            <h1 align="center">场次管理</h1>

            <p align="center">
                <el-form :inline="true" :model="formInline" class="demo-form-inline">
                    <el-form-item label="场次">
                        <el-input v-model="formInline.sessionid" placeholder="场次"></el-input>
                    </el-form-item>
                    <el-form-item label="电影">
                        <el-input v-model="formInline.movieid" placeholder="电影"></el-input>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click="onSubmit">查询</el-button>
                    </el-form-item>
                </el-form>
            </p>

<!--            主要内容区-->
            <el-main style="flex: 1; overflow: auto;">
            <el-table
                    :data="tableData.filter(data => !search || data.sessionid.toLowerCase().includes(search.toLowerCase()))"
                    style="width: 100%">
                <el-table-column
                        label="场次"
                        prop="sessionid">
                </el-table-column>
                <el-table-column
                        label="电影"
                        prop="movieid">
                </el-table-column>
                <el-table-column
                        label="影厅号"
                        prop="theaterhallid">
                </el-table-column>
                <el-table-column
                        label="票价"
                        prop="ticketprice">
                </el-table-column>
                <el-table-column
                        label="放映时间"
                        prop="screeningdatetime">
                </el-table-column>
                <el-table-column
                        label="座位号"
                        prop="seatcount">
                </el-table-column>
                <el-table-column
                        align="right">
                    <template slot="header" slot-scope="scope">
                        <el-input
                                v-model="search"
                                size="mini"
                                placeholder="输入关键字搜索"/>
                    </template>
                            <template slot-scope="scope">
                                <!--编辑信息弹框-->
                                <el-dialog title="编辑场次信息" :visible.sync="editRule.editDialog" width="50%" center>
                                    <el-form :model="editRule.ruleForm" label-width="100px">
                                        <el-row :gutter="20">
                                            <el-col :span="20">
                                                <el-form-item label="场次编号" prop="sessionid">
                                                    <el-row :gutter="4">
                                                        <el-col :span="12" class="checkRule_list">
                                                            <el-input v-model="SreSession.sessionid" placeholder="请输入场次编号"></el-input>
                                                        </el-col>
                                                    </el-row>
                                                </el-form-item>
                                            </el-col>
                                        </el-row>

                                        <el-row :gutter="20">
                                            <el-col :span="20">
                                                <el-form-item label="电影编号" prop="movieid">
                                                    <el-row :gutter="4">
                                                        <el-col :span="12" class="checkRule_list">
                                                            <el-input v-model="SreSession.movieid" placeholder="请输入电影编号"></el-input>
                                                        </el-col>
                                                    </el-row>
                                                </el-form-item>
                                            </el-col>
                                        </el-row>

                                        <el-row :gutter="20">
                                            <el-col :span="20">
                                                <el-form-item label="影厅号" prop="theaterhallid">
                                                    <el-row :gutter="4">
                                                        <el-col :span="12" class="checkRule_list">
                                                            <el-input v-model="SreSession.theaterhallid" placeholder="请输入影厅号"></el-input>
                                                        </el-col>
                                                    </el-row>
                                                </el-form-item>
                                            </el-col>
                                        </el-row>

                                        <el-row :gutter="20">
                                            <el-col :span="20">
                                                <el-form-item label="放映日期" prop="screeningdatetime">
                                                    <el-row :gutter="4">
                                                        <el-col :span="12" class="checkRule_list">
                                                            <el-input v-model="SreSession.screeningdatetime" placeholder="请输入放映日期"></el-input>
                                                        </el-col>
                                                    </el-row>
                                                </el-form-item>
                                            </el-col>
                                        </el-row>

                                        <el-row :gutter="20">
                                            <el-col :span="20">
                                                <el-form-item label="票价" prop="ticketprice">
                                                    <el-row :gutter="4">
                                                        <el-col :span="12" class="checkRule_list">
                                                            <el-input v-model="SreSession.ticketprice" placeholder="请输入票价"></el-input>
                                                        </el-col>
                                                    </el-row>
                                                </el-form-item>
                                            </el-col>
                                        </el-row>

                                        <el-row :gutter="20">
                                            <el-col :span="20">
                                                <el-form-item label="座位号" prop="seatcount">
                                                    <el-row :gutter="4">
                                                        <el-col :span="12" class="checkRule_list">
                                                            <el-input v-model="SreSession.seatcount" placeholder="请输入座位号"></el-input>
                                                        </el-col>
                                                    </el-row>
                                                </el-form-item>
                                            </el-col>
                                        </el-row>
                                    </el-form>

                                    <span slot="footer" class="checkRule_footer">
                                        <el-button @click="cancel">取 消</el-button>
                                        <el-button type="primary" @click="update">确 定</el-button>
                                    </span>
                                </el-dialog>
                                <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
                                <el-button
                                        size="mini"
                                        type="danger"
                                        @click="handleDelete(scope.row)">Delete</el-button>
                            </template>
                        </el-table-column>
                    </el-table>

                    <!--分页-->
                    <el-pagination
                            @size-change="handleSizeChange"
                            @current-change="handleCurrentChange"
                            :current-page="currentPage"
                            :page-sizes="[4,6,8,10]"
                            :page-size="pageSize"
                            layout="total, sizes, prev, pager, next, jumper"
                            :total="total">
                    </el-pagination>
                </el-card>
            </el-main>
        </el-container>
    </el-container>
    </div>
    <div v-else-if="tableData1.code==0">
        {{tableData1.code}}没有权限访问!
    </div>

</div>
</body>

<script>
    new Vue({
        el: "#app",
        data: {
            search: '',
            total:null,// 用于显示总条目数的变量
            currentPage: 1,
            pageSize: 10, // 默认每页显示15条数据
            currentPageData: [], // 当前页显示的数据
            tableData: [],
            formInline:{
                sessionid:'',
                movieid:'',
            },//编辑规则
            editRule: {
                editDialog: false, //弹窗
            },
            SreSession:{},
            //验证是否发登录
            tableData1: {
                code:""  ,
                msg:""  ,
                data:""
            },
        },
        methods:{
            //退出
            back(){
                var URL='/scres/logout';
                axios.get(URL).then(res=>{
                    location.href='login.html'
                })
            },
            handleSizeChange(val) {
                this.pageSize = val;
                this.currentPage = 1; // 通常改变每页大小后,回到第一页
                this.findAll();
                console.log(`每页 ${val} 条`);
            },
            handleCurrentChange(val) {
                this.currentPage = val;
                this.findAll();
                console.log(`当前页: ${val}`);
            },

            handleDelete(row) {
                if (window.confirm("确定要删除该条数据吗???")) {
                    axios.delete(`/deleteScreSession?sessionid=${row.sessionid}`) // 假设row有一个SessionID属性
                        .then((response) => {
                            alert("删除成功");
                            this.findAll(); // 假设这个方法会从后端获取数据并更新UI
                        })
                        .catch((error) => {
                            console.error(error);
                            alert("删除失败,请稍后再试:" + error.message); // 显示更详细的错误信息
                        });
                }
            },
            findAll() {
                var url = `/scresession/${this.currentPage}/${this.pageSize}`
                axios.get(url)
                    .then(res => {
                        this.tableData = res.data.data.rows; // 假设这里是实际数据的数组
                        this.total = res.data.data.total;
                        console.log(this.tableData);
                        console.log(this.total);
                    }).catch(error => {
                    console.error(error);
                });
            },
            onSubmit() {

                var url = `/scresession1/${this.currentPage}/${this.pageSize}?sessionid=${encodeURIComponent(this.formInline.sessionid)}&movieid=${encodeURIComponent(this.formInline.movieid)}`
                console.log(this.formInline.sessionid);
                console.log(this.formInline.movieid);
                axios.get(url)
                    .then(res => {
                        this.tableData = res.data.data.rows;
                        this.total = res.data.data.total;
                        console.log(this.tableData);
                        console.log(this.total);
                    }).catch(err => {
                    console.error(err);
                })
            },

            //编辑
            handleEdit(index, row) {
                this.editRule.editDialog = true;
                var URL = `sessionfindById/${row.sessionid}`
                axios.get(URL).then(response => {
                    if (response.data.code) {
                        this.SreSession = response.data.data;
                    }
                }).catch(error => {
                })
                console.log(index, row);
            },
            //取消弹框
            cancel() {
                this.editRule.editDialog = false;
            },
            //弹框编辑信息并确认
            update: function () {
                var URL = 'editScreSession';
                //put请求用于更新资源.url 是你想要更新的资源的地址;this.poet是包含更新后数据的对象,这个对象将被发送到服务器以更新资源。
                axios.put(URL, this.SreSession).then(res => {
                    if (res.data.code) {
                        this.editRule.editDialog = false;
                        location.href = 'ScreeningSession.html';
                    } else {
                        alert(res.data.message);
                    }
                }).catch(error => {
                })
            },
        },
        created() {
            this.findAll();
        },
        mounted() {
            //登录验证
            var url = `/scres/index`
            axios.get(url)
                .then(response => {
                    this.tableData1 = response.data;
                    console.log(this.tableData1);
                })
                .catch(error=>{
                    console.error(error);
                })
        }
    })
</script>

<style>
    a {
        color: white;
        text-decoration: none;
    }

    .el-header {
        background-color: #FEF5E4;
        display: flex;
        justify-content: space-between;
        align-items: center;
        color: #F09466;
        font-size: 40px;
    }

    > div {
        display: flex;
        align-items: center;
    }



    img {
        width: 55px;
        border-radius: 50%;
        background-color: #eee;
    }

    .el-aside {
        background-color:#FEF5E4;
        height: 100%;
    }

    body>.el-container {
        margin-bottom: 40px;
    }

    .el-container:nth-child(5) .el-aside,
    .el-container:nth-child(6) .el-aside {
        line-height: 260px;
    }

    .el-container:nth-child(7) .el-aside {
        line-height: 280px;
    }
</style>
</html>

ScreSessionMapper1.java

package com.example.Mapper;

import com.example.pojo.Manager;
import com.example.pojo.SreSession;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface ScreSessionMapper1 {
    public List<SreSession> list_chaxun(@Param("sessionid") Integer sessionid, @Param("movieid") Integer movieid);

    public List<SreSession> list();

    public List<SreSession> findAll();

    public int deleteScreSession(Integer sessionid);

    public SreSession ScreSessionfindById(Integer sessionid);

    public int add(SreSession sreSession);

    public boolean editScreSession(SreSession sreSession);

    public Manager getByManager(Manager manager);
}

 ScreSessionMapper1.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.ScreSessionMapper1">
    <!-- 查询 -->
    <select id="list" resultType="com.example.pojo.SreSession">
        select * from screeningsession
    </select>
    <!-- 条件分页查询 -->
    <select id="list_chaxun" resultType="com.example.pojo.SreSession">
        select * from screeningsession
        <where>
            <if test="sessionid != null and sessionid != ''">
                name like concat('%',#{sessionid},'%')
            </if>
            <if test="movieid != null and movieid != ''">
                and  movieid like concat('%',#{movieid},'%')
            </if>
        </where>
    </select>

    <!-- findAll -->
    <select id="findAll" resultType="com.example.pojo.SreSession">
        select * from screeningsession
    </select>

    <!-- 删除 -->
    <delete id="deleteScreSession" parameterType="java.lang.Integer">
        DELETE FROM screeningsession WHERE sessionid = #{sessionid}
    </delete>

    <!--    增加-->
    <select id="ScreSessionfindById" parameterType="java.lang.Integer" resultType="com.example.pojo.SreSession">
        SELECT * FROM screeningsession WHERE sessionid = #{sessionid}
    </select>

    <!-- 添加一个SreSession -->
    <insert id="add" parameterType="com.example.pojo.SreSession">
        INSERT INTO screeningsession (sessionid, movieid,theaterhallid,screeningdatetime,ticketprice,seatcount) VALUES (#{sessionid}, #{movieid}, #{theaterhallid},#{screeningdatetime},#{ticketprice},#{seatcount},)
    </insert>

    <!-- 更新一个SreSession -->
    <update id="editScreSession" parameterType="com.example.pojo.SreSession">
        UPDATE screeningsession
        SET sessionid = #{sessionid}, movieid = #{movieid}, theaterhallid = #{theaterhallid}, screeningdatetime = #{screeningdatetime},ticketprice = #{ticketprice},seatcount = #{seatcount},
        WHERE sessionid = #{sessionid}
        <!-- 注意:这里需要根据SreSession的可更新属性和数据库表的实际列进行替换 -->
    </update>

    <!--登录-->
    <select id="getByManager" parameterType="com.example.pojo.Manager" resultType="com.example.pojo.Manager">
        select * from manager where username=#{username} and password=#{password}
    </select>


</mapper>

 ScreSessionService .java

package com.example.Service;


import com.example.pojo.Manager;
import com.example.pojo.PageBean;
import com.example.pojo.SreSession;

import java.util.List;

public interface ScreSessionService {
   /* public List<SreSession> list();
*/
    public List<SreSession> findAll();

    public SreSession scresessionfindById(Integer sessionid);

    public int deleteScreSession(Integer sessionid);

 public boolean addUser(SreSession sreSession);

    public boolean editScreSession(SreSession sreSession);

    public PageBean list(Integer page,Integer pageSize);

    public PageBean list_chaxun(Integer page, Integer pageSize, Integer sessionid, Integer movieid);

    public Manager login(Manager manager);
}

ScreSessionImpl.java

package com.example.Service.impl;

import com.example.Mapper.ScreSessionMapper;
import com.example.Service.ScreSessionService;
import com.example.pojo.Manager;
import com.example.pojo.PageBean;
import com.example.pojo.SreSession;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ScreSessionImpl implements ScreSessionService {
    @Autowired
    private ScreSessionMapper screSessionMapper;

    /*@Override
    public List<SreSession> list(){return screSessionMapper.list();}
    //直接返回数据*/

    @Override
    public List<SreSession> findAll(){
        return screSessionMapper.findAll();
    }
    //按照id查询
    @Override
    public SreSession scresessionfindById(Integer sessionid){return screSessionMapper.ScreSessionfindById(sessionid);}

    //按id删除
    @Override
    public int deleteScreSession(Integer sessionid){return screSessionMapper.deleteScreSession(sessionid);}

   /* //增加
    @Override
    public boolean addUser(SreSession sreSession){
        int result=screSessionMapper.add(sreSession);
        return result==1;
    }*/
    //增加
    @Override
    public boolean addUser(SreSession sreSession) {
        int result = screSessionMapper.add(sreSession);
        return result > 0;
    }
    //修改
    @Override
    public boolean editScreSession(SreSession sreSession){return screSessionMapper.editScreSession(sreSession);}

    @Override
    public PageBean list(Integer page, Integer pageSize){
//        当你调用了这个方法之后,紧接着执行的MyBatis查询(通常是一个 select 语句)就会自动被 PageHelper 插件处理,从而只返回指定页的数据。
//        例如,如果你调用了 PageHelper.startPage(2, 10);,然后执行了一个查询,那么你将得到第2页的数据,每页包含10条记录。这意味着你将得到数据库中第11到20条记录(假设记录是从1开始编号的)。
        //设置分页参数
        PageHelper.startPage(page,pageSize);
        //执行分页查询
        List<SreSession> scresessionList=screSessionMapper.findAll();

        //获取分页结果 PageInfo是一个工具类,它接收一个查询结果列表作为参数,并自动分析这个列表来获取分页信息
        PageInfo<SreSession> p=new PageInfo<>(scresessionList);

        //封装PageBean
        PageBean pageBean=new PageBean(p.getTotal(),p.getList());
        System.out.println(page+pageSize);
        return pageBean;
    }

    @Override
    public PageBean list_chaxun(Integer page,Integer pageSize,Integer sessionid,Integer movieid){
        //设置分页参数
        PageHelper.startPage(page,pageSize);

        List<SreSession> scresessionList=screSessionMapper.list_chaxun(sessionid,movieid);
        //System.out.println(poetList);

        //获取分页结果 PageInfo是一个工具类,它接收一个查询结果列表作为参数,并自动分析这个列表来获取分页信息
        PageInfo<SreSession> p=new PageInfo<>(scresessionList);
        //封装PageBean
        PageBean pageBean=new PageBean(p.getTotal(),p.getList());
        return pageBean;
    }

    //登录
    @Override
    public Manager login(Manager manager){
        return screSessionMapper.getByManager(manager);
    }
}

Manager.java

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Manager {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private String gender;
    private String position;
}

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值