这是上一篇博客的地址: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=">" onclick="selectEmployees()"/>
<input type="button" class="clickbutton" value="<" 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>
运行一下:
完结撒花!!!