OA系统增加会议

news2024/10/5 20:22:03

目录

一.前期准备工作

A.建立数据库会议信息类

B.建立增加会议的jsp界面

1.注意事项

2.存储路径图片展示

C.构建JS 

1.构建addmetting.js

 2.导入Layui的formSelects(为了下拉框选择值做准备)

二.实现绑定多功能下拉框dao方法

A.查询所有用户  绑定多功能下拉框(凭借layui的formSelects组件)

1.效果图

 2.实现.查询所有用户  绑定多功能下拉框的dao方法,并且通过juni测试,部署在useaction中

2.1dao方法

2.2juni测试效果

 2.3部署在useraction

B.在界面实现效果通过Javascript

1.实现相对应的区域化

2.将多选下拉框封装在一个方法中

2.1解释说明

三.时间生成

A.效果图

 B.实现流程

1.在layui官网将我们需要的时间日期选择copy到我们的项目中

2.进一步完善,将我们的时间进行截取保存

3.增加会议

3.1dao方法

3.2部署在servelt中

C.最终效果图


一.前期准备工作

A.建立数据库会议信息类

package com.zking.entity;

import java.util.Date;
/**
 * 数据库会议信息
 * @author lzzxq
 *
 */
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 Integer state;//状态

    private String seatPic;//会议排座

    private String remark;//备注
    
    private String auditor;//审批人

	public String getAuditor() {
		return auditor;
	}

	public void setAuditor(String auditor) {
		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 Integer getState() {
		return state;
	}

	public void setState(Integer 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 MeetingInfo() {
		super();
		// TODO Auto-generated constructor stub
	}

	@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 + "]";
	}
    
}

B.建立增加会议的jsp界面

1.注意事项

当然在构建jsp界面时要注意:jsp存储的路径,避免在运行时出现404


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- 导入formSelects  css -->
<link rel="stylesheet"
	src="${pageContext.request.contextPath }/static/js/plugins/formSelects/formSelects-v4.css">
<!-- 导入formSelects  js -->
<script type="text/javascript"
	src="${pageContext.request.contextPath }/static/js/plugins/formSelects/formSelects-v4.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/addMeeting.js"></script>
<title>用户管理</title>
</head>
<body>
	<form class="layui-form layui-form-pane">
		<div class="layui-form-item">
			<button id="btn_add" type="submit" class="layui-btn" lay-submit=""
				lay-filter="meeting">立即提交</button>
			<button id="btn_reset" type="reset"
				class="layui-btn layui-btn-primary">重置</button>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">会议标题</label>
			<div class="layui-input-block">
				<input type="text" name="title" lay-verify="required"
					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 name="content" lay-verify="required" placeholder="请输入内容"
					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" lay-verify="required"
					lay-vertype="tips">
					<option value="">---请选择---</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" lay-verify="required"
					lay-vertype="tips">
					<option value="">---请选择---</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="R"
					value="${user.id }" />
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">会议地点</label>
			<div class="layui-input-block">
				<input type="text" lay-verify="required" name="location"
					autocomplete="off" placeholder="请输入会议地点" class="layui-input">
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">会议时间</label>
			<div class="layui-input-block">
				<input type="text" readonly="readonly" lay-verify="required" id="dt"
					name="dt" 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 name="remark" placeholder="请输入备注" class="layui-textarea"></textarea>
			</div>
		</div>
	</form>
</body>
</html>

界面图片

 

 

2.存储路径图片展示

C.构建JS 

1.构建addmetting.js

 2.导入Layui的formSelects(为了下拉框选择值做准备)

当然我们的这个js和css选择 v4版本的,然后要下载的话直接在layui的官网实施下载即可,

然后再导入我们的addmeeting.中

 

当然在导入我们需要的资源时,要注意先后顺序,不然也会出现404的错误

二.实现绑定多功能下拉框dao方法

A.查询所有用户  绑定多功能下拉框(凭借layui的formSelects组件

1.效果图

 2.实现.查询所有用户  绑定多功能下拉框的dao方法,并且通过juni测试,部署在useaction中

2.1dao方法

//查询所有用户  绑定多功能下拉框
	public List<Map<String, Object>> queryUserAll(User user, PageBean pageBean) throws Exception {
		String sql ="select  id  as   value ,name  from t_oa_user";
		return super.executeQuery(sql, pageBean);
	}

2.2juni测试效果

 2.3部署在useraction

B.在界面实现效果通过Javascript

1.实现相对应的区域化

let form, layer, $, formSelects, laydate;
layui.use([ 'form', 'layer', 'jquery', 'laydate' ], function() {
	form = layui.form, layer = layui.layer, $ = layui.jquery,
			laydate = layui.laydate,
			// 非模块化处理方式
			formSelects = layui.formSelects;

// 初始化多选下拉框
	initForm()


});

2.将多选下拉框封装在一个方法中

// 初始化多选下拉框
function initForm() {
	// 绑定多功能下拉框
	formSelects.btns('canyuze', [ 'select', 'remove', 'reverse' ]);
	formSelects.btns('liexize', [ 'select', 'remove', 'reverse' ]);

	$.getJSON("user.action", {
		methodName : "queryUserAll"
	}, function(rs) {
		console.log(rs);
		// local模式
		formSelects.data('canyuze', 'local', {
			arr : rs.data
		});
		formSelects.data('liexize', 'local', {
			arr : rs.data
		});
	});
}

2.1解释说明

在其中的,formSelects.btn是通过ayui的官网copy,然后进行修改,将我们所需要的属性定义在划线地方

 其次我们在通过Json发送请求,将我们之前通过的dao方法查询的数据传输过来,并且保存在rs中 打印效果图如下

 然后在通过local模式,将我们需要的属性名,通过键值对的方法遍历出来,最后就是我们前面展示的效果图了!


三.时间生成

A.效果图

 B.实现流程

1.在layui官网将我们需要的时间日期选择copy到我们的项目中

let form, layer, $, formSelects, laydate;
layui.use([ 'form', 'layer', 'jquery', 'laydate' ], function() {
	form = layui.form, layer = layui.layer, $ = layui.jquery,
			laydate = layui.laydate,
			// 非模块化处理方式
			formSelects = layui.formSelects;

	// 会议时间组件初始化
	laydate.render({
		elem : '#dt',
		type : 'datetime',
		range : '至'
	});
	// 初始化多选下拉框
	initForm();

});

在其中的elem是小编定义的一个id属性的,其他的不需要修改!

2.进一步完善,将我们的时间进行截取保存

orm.on('submit(meeting)', function(data) {
		// 将原有的时间范围进行处理,拿到开始,结束时间,去除空格,放入json对象rs
		let rs = data.field;
		rs['startTime'] = rs.dt.split('至')[0].trim();
		rs['endTime'] = rs.dt.split('至')[1].trim();
		rs['methodName'] = 'add';
		console.log(rs);
		//发生请求
		 $.post('info.action',rs,function(json){	 
			 console.log(rs)
		  if(json.success){
				  layer.msg(json.msg,{icon:6},function(){});
				  $('#btn_reset').click();
			  }else{
				  layer.msg(json.msg,{icon:5},function(){});
			  }
		  },'json');
		return false; // 阻止表单跳转。如果需要表单跳转,去掉这段即可。
	});

这些代码是保存在小编前面的代码里面的,/将原有的时间范围进行处理,拿到开始,结束时间,去除空格,放入json对象rs

 在其中划线的是我们在实体类定义的字段名,并且通过此来保存:add是我们在增加会议是提及发送请求,

3.增加会议

3.1dao方法

// 添加会议信息
		public int add(MeetingInfo info) throws Exception {
			String sql = "insert into t_oa_meeting_info(title,content,canyuze,liexize,zhuchiren,\r\n"
					+ "location,startTime,endTime,remark) values(?,?,?,?,?,?,?,?,?)";
			System.out.println("sql语句:"+sql);
			return super.executeUpdate(sql, info, new String[] { "title", "content", "canyuze", "liexize", "zhuchiren",
					"location", "startTime", "endTime", "remark" });
		}

3.2部署在servelt中

// 增加
	public  String add(HttpServletRequest req, HttpServletResponse resp) {
		try {
			int add = meetingInfoDao.add(info);
			ResponseUtil.writeJson(resp, R.ok(0, "会议信息增加成功"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

C.最终效果图

 

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

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

相关文章

【UE4 塔防游戏系列】10-防御塔升级

目录 效果 步骤 一、根据防御塔等级修改子弹伤害 二、根据防御塔等级修改子弹速度 三、根据防御塔等级修改检测半径 四、根据防御塔等级修改子弹颜色 五、根据防御塔等级修改换弹时间 效果 步骤 一、根据防御塔等级修改子弹伤害 1. 打开“TowerBaseBullet_Child”&…

C#安装.Net平台科学计算库Math.Net Numerics

工作的时候需要使用到C#的Math.Net库来进行计算。 Math.Net库涵盖的主题包括特殊函数&#xff0c;线性代数&#xff0c;概率模型&#xff0c;随机数&#xff0c;插值&#xff0c;积分&#xff0c;回归&#xff0c;优化问题等。 这里记录一下&#xff0c;安装Math.Net库的过程…

【广州华锐互动】VR商场超市火灾事故应急演练系统

VR商场超市火灾事故应急演练系统由广州华锐互动开发&#xff0c;是一种基于虚拟现实技术的消防演练系统&#xff0c;可以帮助商场管理者和员工在计算机上进行火灾逃生演练&#xff0c;提高应对火灾的能力和安全意识。 首先&#xff0c;VR技术可以提供逼真的三维场景&#xff0…

re学习(19)[ACTF新生赛2020]easyre1(UPX脱壳)

文章链接&#xff1a;BUUCTF在线评测 参考视频&#xff1a;B站 【新手教程三】小Z带你学习什么是ESP定律和什么是堆栈平衡 &#xff1f; - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn 题解&#xff1a; 工具脱壳 key"*F\"N,\"…

Element+Vue+OpenLayers webgis实战

WebGIS 信息系统-ElementVueOpenLayers ElementVueOpenLayers项目某校园的遥感影像作为底图多语言切换各种语言的配置文件自定义主题样式切换组件过渡动画 ElementVueOpenLayers项目 以 某校园的遥感影像作为底图 &#xff0c;通过OpenLayers将遥感影像加载到浏览器中&#…

Python的下载与安装教程

Python的下载安装 进入官网Python官网&#xff0c;主页如下 2.点击Downloads&#xff0c;下载最新版本的Python.目前是3.11.4 3.下载完成之后&#xff0c;打开安装包python-3.11.4-amd64.exe进行安装 因为我装了之前的版本&#xff0c;这里是Upgrade Now.正常情况是Instal…

提升车载娱乐体验;优化蓝牙通信,从MTU和连接参数着手

车载开发中&#xff0c;蓝牙通信是一项重要的技术&#xff0c;用于实现车辆与其他设备&#xff08;如手机、车载音响、传感器等&#xff09;之间的无线数据传输和通信。蓝牙通信在车载领域有多种应用&#xff0c;例如车辆诊断、音频播放、电话通话、导航信息传输等。 蓝牙通信…

高效利剑:利用 空号检测API 清洗客户数据

导言 在当今竞争激烈的商业环境中&#xff0c;拥有准确、可靠的客户数据是企业取得成功的关键。然而&#xff0c;不可避免地&#xff0c;客户数据库中会存在一些无效的电话号码&#xff0c;这可能导致市场的浪费和客户沟通的障碍。然而&#xff0c;现在有了一把高效利剑&#…

day03-python运算符的使用

常用运算符 算术运算符 运算符说明实例结果加112-减1-10*乘1*33/除法&#xff08;和数学中的规则一样&#xff0c;但是结果为浮点数&#xff09;4/22//整除&#xff08;只保留商的整数部分&#xff09;7 // 23%取余&#xff0c;求模&#xff0c;即返回除法的余数7 % 21**幂运…

深入理解Java虚拟机(四)虚拟机性能监控、基础故障处理工具

Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 给一个系统定位问题的时候&#xff0c;知识、经验是关键基础&#xff0c;数据是依据&#xff0c;工具是运用知识处理数据的手段。这里说的数据包括但…

酷开科技以内容为核心打造OTT大屏营销投放新体系

如何打造“因地制宜”的营销策略&#xff0c;围绕内容场景&#xff0c;搭建更具效能的OTT大屏营销投放体系&#xff1f;是一个值得思考的问题。 酷开科技OTT大屏营销&#xff0c; 以营销内容为核心、通过更加立体化的沟通模式&#xff0c;创新性整合和打通多元资源&#xff0c…

EXCEl——移除单元格中换行符

方法一&#xff1a;使用清除格式功能 步骤如下: 1.选中需要取消换行的单元格 2.在“开始"选项卡中找到"清除”功能&#xff0c;点击下拉菜单中的“清除格式" 3.这时单元格的换行就被取消了。 清除前效果图 清除后效果图 方法一&#xff1a;使用函数功能 步骤…

React和Vue生命周期

主要就是命名不同 目录 React 组件挂载 挂载前constructor() 挂载时render() 挂载后componentDidMount()&#xff1a;初始化节点 更新 更新时render()&#xff1a;prop/state改变 更新后componentDidUpdate() 卸载 卸载前componentWillUnmount()&#xff1a;清理 V…

计算机网络 day10 DNAT问题 - 堡垒机 - WLAN

目录 DNAT策略拓扑图&#xff1a; 问题一&#xff1a;当我们访问内网的Web服务的时候&#xff0c;我们防火墙服务器的80端口和Web服务器的8000端口是否需要一直调用程序监控呢&#xff1f; DNAT的作用就是可以帮助我们进行路由转发功能 问题二&#xff1a;当我们在继续DNAT…

wpf RadioButton自定义样式 圆角/直角变化 背景色渐变

样式部分 <LinearGradientBrush x:Key"GradientBrush_1" EndPoint"0.5,1" StartPoint"0.5,0"><GradientStop Offset"1" Color"#CEE5D1" /><GradientStop Offset"0" Color"#FAFAFA" /&…

全志F1C200S嵌入式驱动开发(u盘写读)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 f1c200s本身也支持usb接口。并且它的接口和v3s一样,有两个用途。第一个用途是在f1c200s进入fel状态之后,可以用sunxi-fel等工具完成norflash、nandflash的烧写;第二个用途,就是…

MySQL八股学习记录5MySQL锁from小林coding

MySQL八股学习记录5MySQL锁from小林coding 锁的总览全局锁表级锁表锁元数据锁意向锁AUTO-INC锁 行级锁Record LockGap LockNext-Key-Lock插入意向锁行级锁是如何作用的唯一索引等值查询 唯一索引范围查询非唯一索引等值查询 锁的总览 MySQL锁分为三种,分别是全局锁,表级锁,行级…

模拟行走机器人-python

leetcode第874题 链接https://leetcode.cn/problems/walking-robot-simulation 机器人在一个无限大小的 XY 网格平面上行走&#xff0c;从点 (0, 0) 处开始出发&#xff0c;面向北方。该机器人可以接收以下三种类型的命令 commands &#xff1a; -2 &#xff1a;向左转 90 度…

文本挖掘 day4 基于PMC知识框架文本挖掘的新能源汽车政策动态评价

基于PMC知识框架文本挖掘的新能源汽车政策动态评价 2. 研究设计2.1 研究技术路线2.2 数据采集2.3 动态分相 3. 基于PMC知识框架的策略动态挖掘3.1 PMC知识框架的建立3.2 基于PMC知识框架的策略挖掘字典3.2.1 字典建立步骤3.2.2 建立经验证据的词典 3.3 策略动态挖掘分析3.3.1 发…

python实现接口压力测试

python实现接口压力测试 直接上代码&#xff1a; # -*- coding: utf-8 -*-import json import requests import logginglogging.basicConfig(levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s) logger logging.getLogger(__name__)restime …