会议OA项目之会议发布(多功能下拉框的详解)

该文章介绍了OA项目的主要功能,包括信息提交、参与者和列席人员管理,以及使用下拉复选框处理数据。前端代码展示了jsp和js的实现,包括表单验证和多功能下拉框的使用。后端涉及实体类、DAO和Web层的添加方法。还讨论了String转Date的处理和多功能下拉框的详细使用步骤与下载链接。
摘要由CSDN通过智能技术生成

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于OA项目的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.主要功能点介绍

二.效果展示 

三.前端代码

jsp

js

四.后端代码 

实体类

dao

web

五.String转Date

六.多功能下拉框详细介绍

1.网站下载地址

2.使用步骤

3.效果演示


一.主要功能点介绍

①将表单中的信息提交后新增到t_oa_meeting_info表中去

②参与人员需要通过查询回显

③列席人员需要通过查询回显

⭐⭐④参与人员和列席人员都需要使用下拉复选框,把选中的id插入到t_oa_meeting_info中去

二.效果展示 

三.前端代码

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<html>
<head>
<%@include file="/common/head.jsp"%>
<script type="text/javascript"
	src="/LayUi/static/js/meeting/addMeeting.js"></script>



</head>
<body style="margin-left: 40px; margin-right: 80px;">



	<form class="layui-form" action="">
		<!--会议标题  -->
		<div class="layui-form-item">
			<label class="layui-form-label">会议标题</label>
			<div class="layui-input-block">
				<input type="text" name="title" lay-verify="title"
					autocomplete="off" placeholder="请输入标题" class="layui-input">
			</div>
		</div>

		<!-- 会议内容 -->
		<div class="layui-form-item layui-form-text">
			<label class="layui-form-label">会议内容 </label>
			<div class="layui-input-block">
				<textarea placeholder="请输入内容" name="content" class="layui-textarea"></textarea>
			</div>
		</div>

		<!-- 参与者 -->
		<div class="layui-form-item">
			<label class="layui-form-label">参与者</label>
			<div class="layui-input-block">
				<select name="canyuze" xm-select="canyuze" >
					<option value="" selected="selected">----请选择----</option>

				</select>
			</div>
		</div>

		<!-- 列席者 -->
		<div class="layui-form-item">
			<label class="layui-form-label">列席者</label>
			<div class="layui-input-block">
				<select name="liexize" xm-select="liexize" >
					<option value="" selected="selected">----请选择----</option>

				</select>
			</div>
		</div>

		<!--主持人:拿到当前登录的用户  -->
		<div class="layui-form-item">
	    <label class="layui-form-label">主持人</label>
	    <div class="layui-input-block">
	      <input type="text" readonly="readonly" name="zhuchirenname" value="${user.name }" autocomplete="off" placeholder="请输入标题" class="layui-input">
	      <input type="hidden" name="zhuchiren" value="${user.id }"/>
	    </div>
	</div>

		<!--会议地点  -->
		<div class="layui-form-item">
			<label class="layui-form-label">会议地点</label>
			<div class="layui-input-block">
				<input type="text" name="location" lay-verify="title"
					placeholder="请输入地点" autocomplete="off" class="layui-input">
			</div>
		</div>

		<!-- 会议时间 -->
		<div class="layui-form">
			<div class="layui-form-item">
				<div class="layui-inline">
					<label class="layui-form-label">日期范围</label>
					<div class="layui-inline" id="test6">
						<div class="layui-input-inline">
							<input type="text" autocomplete="off" id="startTime"
								class="layui-input" placeholder="开始日期" name="startTime">
						</div>
						<div class="layui-form-mid">-</div>
						<div class="layui-input-inline">
							<input type="text" autocomplete="off" id="endTime"
								class="layui-input" placeholder="开始日期" name="endTime">
						</div>
					</div>
				</div>
			</div>
		</div>



		<!-- 备注-->
		<div class="layui-form-item layui-form-text">
			<label class="layui-form-label">备注 </label>
			<div class="layui-input-block">
				<textarea placeholder="请输入内容" name="remark" class="layui-textarea"></textarea>
			</div>
		</div>

 <div class="layui-form-item">
    <button class="layui-btn" id="btn_submit" lay-submit="" lay-filter="addmeeting">提交</button>
    <button class="layui-btn layui-btn-primary" lay-filter="reset">重置</button>
  </div>

</body>
</html>

js

let $, formSelects, laydate,form;
layui.use([ 'jquery', 'formSelects', 'laydate','form' ], function() {
	$ = layui.jquery, formSelects = layui.formSelects, laydate = layui.laydate,form=layui.form;
	initForm();//初始化表单
	//监听提交
	form.on('submit(addmeeting)', function(data){
		  let rs = data.field;
	  	  console.log("rs",rs);
	  	  
	  	  rs["methodName"]="add";
		  $.post("meetingInfo.action", rs, function(data){
			  console.log("data",data)
		   layer.alert(data.msg+"🥳🥳", {icon: 1})
		  }, "json");
		  return false;
		});
	//日期范围
	laydate.render({
		elem : '#test6'
		//设置开始日期、日期日期的 input 选择器
		//数组格式为 2.6.6 开始新增,之前版本直接配置 true 或任意分割字符即可
		,
		type:"datetime",
		range : [ '#startTime', '#endTime' ],

	});
	
});


//初始化表单
function initForm(){
//	添加多功能下拉框选项
	//第一个参数:指的是下拉框的xm-select值,
	//第二个参数:select是指全选
	//第三个参数:remove是指移除
	//第四个参数:reverse是指反选
	formSelects.btns('canyuze', [ 'select', 'remove', 'reverse' ]);
	formSelects.btns('liexize', [ 'select', 'remove', 'reverse' ]);
	$.getJSON("user.action", {
		methodName : "selectusers"
	}, function(rs) {
		console.log(rs);
		//使用本地的数组数据进行绑定
		formSelects.data('canyuze', 'local', {
			arr : rs.data
		});

		formSelects.data('liexize', 'local', {
			arr : rs.data
		});
	});
}

四.后端代码 

实体类

package com.wh.entity;

import java.util.Date;

public class MeetingInfo {
private long id;
private String title;
private String content;
private String canyuze;
private String liexize;
private String zhuchiren;
private String location;
private Date startTime;
private Date endTime;
private String fujian;
private int state;
private String seatPic;
private String remark;
private String auditor;


public MeetingInfo() {
	// TODO Auto-generated constructor stub
}


public MeetingInfo(long id, String title, String content, String canyuze, String liexize, String zhuchiren,
		String location, Date startTime, Date endTime, String fujian, int state, String seatPic, String remark,
		String auditor) {
	super();
	this.id = id;
	this.title = title;
	this.content = content;
	this.canyuze = canyuze;
	this.liexize = liexize;
	this.zhuchiren = zhuchiren;
	this.location = location;
	this.startTime = startTime;
	this.endTime = endTime;
	this.fujian = fujian;
	this.state = state;
	this.seatPic = seatPic;
	this.remark = remark;
	this.auditor = auditor;
}


public MeetingInfo(String title, String content, String canyuze, String liexize, String zhuchiren, String location,
		Date startTime, Date endTime, String fujian, int state, String seatPic, String remark, String auditor) {
	super();
	this.title = title;
	this.content = content;
	this.canyuze = canyuze;
	this.liexize = liexize;
	this.zhuchiren = zhuchiren;
	this.location = location;
	this.startTime = startTime;
	this.endTime = endTime;
	this.fujian = fujian;
	this.state = state;
	this.seatPic = seatPic;
	this.remark = remark;
	this.auditor = auditor;
}


public long getId() {
	return id;
}


public void setId(long id) {
	this.id = id;
}


public String getTitle() {
	return title;
}


public void setTitle(String title) {
	this.title = title;
}


public String getContent() {
	return content;
}


public void setContent(String content) {
	this.content = content;
}


public String getCanyuze() {
	return canyuze;
}


public void setCanyuze(String canyuze) {
	this.canyuze = canyuze;
}


public String getLiexize() {
	return liexize;
}


public void setLiexize(String liexize) {
	this.liexize = liexize;
}


public String getZhuchiren() {
	return zhuchiren;
}


public void setZhuchiren(String zhuchiren) {
	this.zhuchiren = zhuchiren;
}


public String getLocation() {
	return location;
}


public void setLocation(String location) {
	this.location = location;
}


public Date getStartTime() {
	return startTime;
}


public void setStartTime(Date startTime) {
	this.startTime = startTime;
}


public Date getEndTime() {
	return endTime;
}


public void setEndTime(Date endTime) {
	this.endTime = endTime;
}


public String getFujian() {
	return fujian;
}


public void setFujian(String fujian) {
	this.fujian = fujian;
}


public int getState() {
	return state;
}


public void setState(int state) {
	this.state = state;
}


public String getSeatPic() {
	return seatPic;
}


public void setSeatPic(String seatPic) {
	this.seatPic = seatPic;
}


public String getRemark() {
	return remark;
}


public void setRemark(String remark) {
	this.remark = remark;
}


public String getAuditor() {
	return auditor;
}


public void setAuditor(String auditor) {
	this.auditor = auditor;
}


@Override
public String toString() {
	return "MeetingInfo [id=" + id + ", title=" + title + ", content=" + content + ", canyuze=" + canyuze + ", liexize="
			+ liexize + ", zhuchiren=" + zhuchiren + ", location=" + location + ", startTime=" + startTime
			+ ", endTime=" + endTime + ", fujian=" + fujian + ", state=" + state + ", seatPic=" + seatPic + ", remark="
			+ remark + ", auditor=" + auditor + "]";
}
}

dao

package com.wh.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.wh.entity.MeetingInfo;
import com.wh.entity.Permission;
import com.wh.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.BuildTree;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;
import com.zking.util.TreeVo;

public class MeetingInfoDao extends BaseDao<MeetingInfo> {
	//发布会议(增加)
	public int add(MeetingInfo t) throws Exception {
		String sql = "insert into t_oa_meeting_info"
				+ "(title,content,canyuze,liexize,zhuchiren,location,startTime,endTime,remark) "
				+ "value(?,?,?,?,?,?,?,?,?)";
		return super.executeUpdate(sql, t, new String[] { "title", "content", "canyuze", "liexize", "zhuchiren",
				"location", "startTime", "endTime", "remark" });
	}
}

web

package com.wh.web;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.ConvertUtils;

import com.wh.dao.MeetingInfoDao;
import com.wh.entity.MeetingInfo;
import com.wh.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.MyDateConverter;
import com.zking.util.PageBean;
import com.zking.util.R;
import com.zking.util.ResponseUtil;
import com.zking.util.StringUtils;

import java.util.Date;

public class MeetingInfoAction extends ActionSupport implements ModelDriver<MeetingInfo> {
	private MeetingInfo meetingInfo = new MeetingInfo();
	private MeetingInfoDao mid = new MeetingInfoDao();

	// 增加
	public void add(HttpServletRequest req, HttpServletResponse resp) throws Exception {
			// 影响行数
			int add = mid.add(meetingInfo);
			if (add > 0) {
				ResponseUtil.writeJson(resp,R.ok(0, "发布会议成功"));
			} else {
				ResponseUtil.writeJson(resp,R.error(0, "发布会议失败"));
			}
	}
	

	@Override
	public MeetingInfo getModel() {
		ConvertUtils.register(new MyDateConverter(), Date.class);
		return meetingInfo;
	}

}

五.String转Date

可以看到,我们在实体类中的时间用的是Date类型,但是我们子啊表单中所获取到的数据是String类型的,如果直接将获取的数据添加到数据库中,便会报出一个异常!!

 大致意思就是无法将String类型转换成Date类型

 那么在这里,我们可以用到一个工具类(将转换的代码全部封装起来,那么以后在其他的地方就方便调用)

package com.zking.util;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.Converter;

public class MyDateConverter implements Converter {
	@Override
	public Object convert(Class type, Object value) {
		String dateStr = (String)value;
		SimpleDateFormat spdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			Date date = spdt.parse(dateStr);
			return date;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

六.多功能下拉框详细介绍

1.网站下载地址

插件下载地址https://github.com/hnzzmsf/layui-formSelects文档下载地址https://hnzzmsf.github.io/example/example_v4.html#download

2.使用步骤

先进入插件下载的地址

 

之后只需要在需要使用的jsp界面上引用就行啦!! (这里我是把它引入到了公共页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta name="viewport" content="width=device-width,initial-scale=1.33,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<meta http-equiv="Content-Language" content="zh-CN">

<!-- 引入layui的css -->
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath}/static/js//layui/css/layui.css" type="text/css" media="all">
<!-- 引入layui的js -->
<script type="text/javascript" src="${pageContext.request.contextPath}/static/js/layui/layui.js"></script>
<!-- 引入formSelects的css -->
<link rel="stylesheet" href="${pageContext.request.contextPath }/static/js/plugin/formSelects-v4.css" />
<!-- 引入formSelects的js -->
<script src="${pageContext.request.contextPath }/static/js/plugin/formSelects-v4.js" type="text/javascript" charset="utf-8"></script>

<base href="${pageContext.request.contextPath}/"  />

对了,在这里还需要说一个注意事项

我们可以看到,其中的'data',也就是数据,它里面的数据的基本格式是name及value


但是我们的数据库中的字段与它不一样(我们的是name和id) 

所以我们需要写一个sql语句,将数据库中数据转换成我们需要的数据格式!!

package com.wh.dao;

import java.util.List;
import java.util.Map;

import com.wh.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;
/**
 * dao层
 * @author W
 *
 */
public class UserDao extends BaseDao<User> {
		//查询用作发布会议下拉框中的数据
		public List<Map<String, Object>> selectusers(User user, PageBean pageBean) throws Exception {
			  String sql="select id as value,name from t_oa_user";
			  return super.executeQuery(sql, pageBean);
				}
}

具体使用的js代码都在前端代码中的js中了

3.效果演示

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊  

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是辉辉啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值