SSM小项目(会议管理系统)十 会议预定(图解超详细)(完结)

这是上一篇博客的地址:https://blog.csdn.net/qq_41115379/article/details/114548834
会议预定
这里就需要加依赖了

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.2</version>
</dependency>

bookmeeting.ftl

<!DOCTYPE html>
<html>
    <head>
        <title>CoolMeeting会议管理系统</title>
        <link rel="stylesheet" href="/styles/common.css"/>
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
        <style type="text/css">
            #divfrom{
                float:left;
                width:150px;
            }
            #divto{
                float:left;
                width:150px;
            }
            #divoperator{
                float:left;
                width:50px;
                padding:60px 5px;
            }
            #divoperator input[type="button"]{
                margin:10px 0;
            }
            #selDepartments{
                display:block;
                width:100%;
            }
            #selEmployees{
                display:block;
                width:100%;
                height:200px;
            }
            #selSelectedEmployees{
                display:block;
                width:100%;
                height:225px;
            }
        </style>
        <script type="application/javascript">
            function employee(employeeid, employeename){
                this.employeeid = employeeid;
                this.employeename = employeename;
            }
            function department(departmentid, departmentname, employees){
                this.departmentid = departmentid;
                this.departmentname = departmentname;
                this.employees = employees;
            }
            var data = new Array(
                new department(1, "技术部", new Array(
                    new employee(1001, "a00"), new employee(1002, "a01"), new employee(1003, "a02"), new employee(1004, "a03"))),
                new department(2, "销售部", new Array(
                    new employee(2001, "b00"), new employee(2002, "b01"), new employee(2003, "b02"), new employee(2004, "b03"))),
                new department(3, "市场部", new Array(
                    new employee(3001, "c00"), new employee(3002, "c01"), new employee(3003, "c02"), new employee(3004, "c03"))),
                new department(4, "行政部", new Array(
                    new employee(4001, "d00"), new employee(4002, "d01"), new employee(4003, "d02"), new employee(4004, "d03"))));
            
            var selDepartments;
            var selEmployees;
            var selSelectedEmployees;
            
            function body_load(){
                selDepartments = document.getElementById("selDepartments");
                selEmployees = document.getElementById("selEmployees");
                selSelectedEmployees = document.getElementById("selSelectedEmployees");
                
             /*   for(var i=0;i<data.length;i++){
                    var dep = document.createElement("option");
                    dep.value = data[i].departmentid;
                    dep.text = data[i].departmentname;
                    selDepartments.appendChild(dep);
                }*/
                $.get("/getAllDep",function (data){
                    for (let i=0;i<data.length;i++){
                        var item=data[i];
                        var dep = document.createElement("option");
                        dep.value = item.departmentid;
                        dep.text = item.departmentname;
                        selDepartments.appendChild(dep);
                    }
                    fillEmployees();
                })
                

            }
            
            function fillEmployees(){
                clearList(selEmployees);
                var departmentid = selDepartments.options[selDepartments.selectedIndex].value;
                var employees;
                $.get("/getAllEmpByDepId?depid="+departmentid,function (data){
                    for(i=0;i<data.length;i++){
                        var emp = document.createElement("option");
                        emp.value = data[i].employeeid;
                        emp.text = data[i].employeename;
                        selEmployees.appendChild(emp);
                    }
                })
            /*    for(var i=0;i<data.length;i++){
                    if (departmentid == data[i].departmentid){
                        employees = data[i].employees;
                        break;
                    }
                }*/

            }
            
            function clearList(list){
                while(list.childElementCount > 0){
                    list.removeChild(list.lastChild);
                }
            }
            
            function selectEmployees(){
                for(var i=0;i<selEmployees.options.length;i++){
                    if (selEmployees.options[i].selected){
                        addEmployee(selEmployees.options[i]);
                        selEmployees.options[i].selected = false;
                    }
                }
            }
            
            function deSelectEmployees(){
                var elementsToRemoved = new Array();
                var options = selSelectedEmployees.options;
                for(var i=0;i<options.length;i++){
                    if (options[i].selected){
                        elementsToRemoved.push(options[i]);
                    }
                }
                for(i=0;i<elementsToRemoved.length;i++){
                    selSelectedEmployees.removeChild(elementsToRemoved[i]);
                }
            }
            
            function addEmployee(optEmployee){
                var options = selSelectedEmployees.options;
                var i = 0;
                var insertIndex = -1;
                while(i < options.length){
                    if (optEmployee.value == options[i].value){
                        return;
                    } else if (optEmployee.value < options[i].value) {
                        insertIndex = i;
                        break;
                    }
                    i++;
                }
                var opt = document.createElement("option");
                opt.value = optEmployee.value;
                opt.text = optEmployee.text;
                opt.selected=true;
                
                if (insertIndex == -1){
                    selSelectedEmployees.appendChild(opt);
                } else {
                    selSelectedEmployees.insertBefore(opt, options[insertIndex]);
                }
            }            
        </script>
    </head>
    <body onload="body_load()">
    <#include 'top.ftl'>
        <div class="page-body">
            <#include 'leftMenu.ftl'>
            <div class="page-content">
                <div class="content-nav">
                    会议预定 > 预定会议
                </div>
                <form>
                    <fieldset>
                        <legend>会议信息</legend>
                        <table class="formtable">
                            <tr>
                                <td>会议名称:</td>
                                <td>
                                    <input type="text" id="meetingname" maxlength="20"/>
                                </td>
                            </tr>
                            <tr>
                                <td>预计参加人数:</td>
                                <td>
                                    <input type="text" id="numofattendents" />
                                </td>
                            </tr>
                            <tr>
                                <td>预计开始时间:</td>
                                <td>
                                    <input type="date" id="startdate"/>
                                    <input type="time" id="starttime"/>
                                </td>
                            </tr>
                            <tr>
                                <td>预计结束时间:</td>
                                <td>
                                    <input type="date" id="enddate" />
                                    <input type="time" id="endtime" />
                                </td>
                            </tr>
                     <tr>
                                <td>会议室名称:</td>
                                <td>
                                    <select name="roomid">
                                        <#list mrs as mr>
                                            <option value="${mr.roomid}">${mr.roomname}</option>
                                        </#list>

                                     </select>
                                </td>
                            </tr>
                            <tr>
                                <td>会议说明:</td>
                                <td>
                                    <textarea id="description" rows="5"></textarea>
                                </td>
                            </tr>
                            <tr>
                                <td>选择参会人员:</td>
                                <td>
                                    <div id="divfrom">
                                        <select id="selDepartments" onchange="fillEmployees()">
                                        </select>
                                        <select id="selEmployees" multiple="true">
                                        </select>
                                    </div>
                                    <div id="divoperator">
                                        <input type="button" class="clickbutton" value="&gt;" onclick="selectEmployees()"/>
                                        <input type="button" class="clickbutton" value="&lt;" onclick="deSelectEmployees()"/>
                                    </div>
                                    <div id="divto">
                                        <select id="selSelectedEmployees" multiple="true">
                                        </select>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td class="command" colspan="2">
                                    <input type="submit" class="clickbutton" value="预定会议"/>
                                    <input type="reset" class="clickbutton" value="重置"/>
                                </td>
                            </tr>
                        </table>
                    </fieldset>
                </form>
            </div>
        </div>
        <div class="page-footer">
            <hr/>
            更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a>
            <img src="/images/footer.png" alt="CoolMeeting"/>
        </div>
    </body>
</html>

BookMeetingController

package org.javaboy.meeting.controller;

import org.javaboy.meeting.model.Department;
import org.javaboy.meeting.model.Employee;
import org.javaboy.meeting.service.DepartmentService;
import org.javaboy.meeting.service.EmployeeService;
import org.javaboy.meeting.service.MeetingRoomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class BookMeetingConroller {
    @Autowired
    MeetingRoomService  meetingRoomService;
    @Autowired
    DepartmentService departmentService;
    @Autowired
    EmployeeService employeeService;
    @RequestMapping("/bookmeeting")
    public String bookmeeting(Model model){
        model.addAttribute("mrs",meetingRoomService.getAllMrs());
        return "bookmeeting";

    }
    //要写一个方法用来返回所有的部门
    @RequestMapping("/getAllDep")
    @ResponseBody
    public List<Department> getAllDep(){
       return departmentService.getAllDeps();
    }

    @RequestMapping("/getAllEmpByDepId")
    @ResponseBody
    public List<Employee> getAllEmpByDepId(Integer depid){
        return  employeeService.getAllEmpByDepId(depid);
    }
}

EmployeeService

public List<Employee> getAllEmpByDepId(Integer depid) {
    return employeeMapper.getAllEmpByDepId(depid);
}

EmployeeMapper

List<Employee> getAllEmpByDepId(Integer depid);

EmployeeMapper.xml

<select id="getAllEmpByDepId" resultType="org.javaboy.meeting.model.Employee">
    select * from employee where departmentid=#{depid};
</select>

运行一下
在这里插入图片描述
在这里下载:
http://www.my97.net/down.asp
在这里插入图片描述
直接复制到这里
在这里插入图片描述
然后最好重启一下
再spring-servlet里加入

<mvc:exclude-mapping path="/My97DatePicker/**"/>

并在bookmeeting.ftl
先加入:

<script src="/My97DatePicker/WdatePicker.js"></script>

并对时间进行修改:

<tr>
    <td>预计开始时间:</td>
    <td>
        <input type="text" class="Wdate" id="starttime"name="starttime" οnclick="WdatePicker({dateFmt: 'yyyy-MM-dd HH:mm:ss'})">
    </td>
</tr>
<tr>
    <td>预计结束时间:</td>
    <td>
        <input type="text" class="Wdate" id="endtime"name="endtime" οnclick="WdatePicker({dateFmt: 'yyyy-MM-dd HH:mm:ss'})">
    </td>
</tr>

运行一下:
在这里插入图片描述
完结撒花!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值