一、Layui日期控件
1.开始时间结束时间的js
layui. use ( 'laydate' , function ( ) {
var laydate = layui. laydate;
var startDate = laydate. render ( {
elem: '#startTime' ,
type: 'datetime' ,
done: function ( value, { year, month, date, hours, minutes, seconds} ) {
endDate. config. min = {
year,
month: month - 1 ,
date,
hours,
minutes,
seconds
} ;
}
} ) ;
var endDate = laydate. render ( {
elem: '#endTime' ,
type: 'datetime' ,
done: function ( value, { year, month, date, hours, minutes, seconds} ) {
startDate. config. max = {
year,
month: month - 1 ,
date,
hours,
minutes,
seconds
} ;
}
} ) ;
} ) ;
2.时间框的HTML
< div class = " col-xs-6" >
< div class = " form-group" >
< label class = " control-label col-sm-4" title = " " >
< span class = " required " > *</ span> 结束时间:
</ label>
< div class = " col-sm-8" >
< div class = " input-group" >
< input type = " text" id = " endTime" name = " endTime" maxlength = " 64" minlength = 1 class = " form-control required " />
< span class = " input-group-btn" >
< a href = " javascript:$(' #endTime' ).focus();" class = " btn btn-default " > < i class = " fa fa-calendar" > </ i> </ a>
</ span>
</ div>
</ div>
</ div>
</ div>
3.补充重置的bug-
$ ( "#btn-resert" ) . on ( "click" , function ( ) {
$ ( "#searchForm" ) [ 0 ] . reset ( ) ;
endDate. config. min= '1900-1-1' ;
startDate. config. max= endDate. config. max;
} ) ;
二、Layui多选框
1.多选框的HTML
< div class = " form-unit" > 套餐明细</ div>
< div class = " row" >
< div class = " col-xs-11" >
< a href = " javascript:void(0);" class = " layui-btn layui-btn-default layui-btn-sm " id = " btnDishes" title = " 添加明细" onclick = " geroRepastPlanInfoAddForm.addDishesDialog();" > < i class = " fa fa-plus-square" > </ i> 添加菜品</ a>
< a href = " javascript:void(0);" class = " layui-btn layui-btn-primary layui-btn-sm" onclick = " geroRepastPlanInfoAddForm.removeAllLine();" > < i class = " fa fa-minus-square" > </ i> 全部移除</ a>
</ div>
</ div>
< div class = " row" >
< div class = " col-xs-12" >
< table id = " tab2" class = " layui-table" style =" margin-top : 5px; " >
< thead>
< tr>
< td align = " center" > 菜品名称</ td>
< td align = " center" > 餐饮类型</ td>
< td align = " center" > 操作</ td>
</ tr>
</ thead>
< tbody id = " shift_tr" >
</ tbody>
</ table>
</ div>
</ div>
2.多选框的JS
addDishesDialog: function ( ) {
var options = {
shade: 0.3 ,
type: 2 ,
maxmin: true ,
shadeClose: true ,
title: '【菜品选择】' ,
area: [ '50%' , '70%' ] ,
content: ctx + '/repast/order/info/dishesDialog' ,
btn: [ '<i class="fa fa-check"></i> 确定' ] ,
btn1: function ( index, layero) {
var win = parent. layer. iframeWindow ( index) ;
var ids = win. $ ( "#grid" ) . jqGrid ( 'getGridParam' , 'selarrrow' )
if ( ids. length == 0 ) {
parent. layer. msg ( "请选择菜品!" ) ;
} else {
var num= 0 ;
var len= $ ( "#shift_tr > tr" ) . length
if ( len== 1 ) {
num= len;
} else {
num= len+ num;
}
$. each ( ids, function ( i, v) {
var data = win. $ ( "#grid" ) . jqGrid ( 'getRowData' , v) ;
_that. addDishesLine ( i+ num, data) ;
} )
}
parent. layer. close ( index) ;
}
} ;
options. btn. push ( '<i class="fa fa-close"></i> 关闭' ) ;
options[ 'btn' + options. btn. length] = function ( index, layero) {
if ( typeof treeselectCallback == 'function' ) {
treeselectCallback ( 'parent' , 'cancel' , index, layero) ;
}
} ;
parent. layer. open ( options) ;
} ,
addDishesLine: function ( index, shift) {
var dom = "" ;
dom += "<tr id=\"shiftTr_" + index + "\" data-index-id=" + shift. id + ">" ;
dom += " <td align='center'>" ;
dom += " <div class=\"input-group input-group-sm\">" ;
dom += " <input type=\"hidden\" id=\"geroRepastPlanDineDishesList[" + index + "].dishesId\" name=\"geroRepastPlanDineDishesList[" + index + "].dishesId\" value=\"" + shift. id + "\" class=\"form-control dishesId\">" ;
dom += " <div>" + shift. dishesName+ "</div>" ;
dom += " </div>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <select id='geroRepastPlanDineDishesList[" + index + "].planDineType' name='geroRepastPlanDineDishesList[" + index + "].planDineType' class='form-control required'>" ;
dom += " <option value='' >--请选择--</option>" ;
dom += " <option value='0' >早餐</option>" ;
dom += " <option value='1' >早点</option>" ;
dom += " <option value='2' >午餐</option>" ;
dom += " <option value='3' >午点</option>" ;
dom += " <option value='4' >晚餐</option>" ;
dom += " <option value='5' >夜宵</option>" ;
dom += " </select>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <a href=\"javascript:void(0);\" class=\"btnList layui-btn layui-btn-xs layui-btn-danger\" οnclick=\"geroRepastPlanInfoAddForm.removeLine('shiftTr_" + index + "');\"> 删除</a>" ;
dom += " </td>" ;
dom += "</tr>" ;
var flag= true ;
$ ( 'tr .dishesId' ) . each ( function ( i, val) {
if ( shift. id== $ ( this ) . val ( ) ) {
Js. layer. msg ( "菜品【" + shift. dishesName+ "】已经存在,不能重复添加" ) ;
flag= false ;
}
} ) ;
if ( flag) {
$ ( "#shift_tr" ) . append ( dom) ;
}
} ,
removeLine: function ( id) {
$ ( "#" + id) . remove ( ) ;
} ,
removeAllLine: function ( ) {
$ ( "#shift_tr" ) . html ( "" ) ;
} ,
三、Dialog界面的书写
1.HTML
< div class = " form-unit" > 护理员明细</ div>
< div class = " row" >
< div class = " col-xs-11" >
< a href = " javascript:void(0);" class = " layui-btn layui-btn-default layui-btn-sm " id = " btnDishes" title = " 添加明细" onclick = " geroNursingArrangeCheckAddForm.addArrangeCheck();" > < i class = " fa fa-plus-square" > </ i> 添加明细</ a>
< a href = " javascript:void(0);" class = " layui-btn layui-btn-primary layui-btn-sm" onclick = " geroNursingArrangeCheckAddForm.removeAllLine();" > < i class = " fa fa-minus-square" > </ i> 全部移除</ a>
</ div>
</ div>
< div class = " row" >
< div class = " col-xs-12" >
< table id = " tab2" class = " layui-table" style =" margin-top : 5px; " >
< thead>
< tr>
< td align = " center" > 护理员名称</ td>
< td align = " center" > 排班时间</ td>
< td align = " center" > 排班开始时间</ td>
< td align = " center" > 排班结束时间</ td>
< td align = " center" > 排班完成情况</ td>
< td align = " center" > 操作</ td>
</ tr>
</ thead>
< tbody id = " shift_tr" >
</ tbody>
</ table>
</ div>
</ div>
< tbody id = " shift_tr" >
< tr id = " shiftTr_1" >
< td align = " center" >
< div class = " input-group input-group-sm" >
< div> ${geroNursingArrangeCheck.employeeName}</ div>
</ div>
</ td>
< td align = " center" style =" text-align : center; " >
< div class = " input-group input-group-sm" >
< div> ${geroNursingArrangeCheck.arrangeTime,"yyyy-MM-dd HH:mm:ss"}</ div>
</ div>
</ td>
< td align = " center" style =" text-align : center; " >
< div class = " input-group input-group-sm" >
< div> ${geroNursingArrangeCheck.startTime}</ div>
</ div>
</ td>
< td align = " center" style =" text-align : center; " >
< div class = " input-group input-group-sm" >
< div> ${geroNursingArrangeCheck.endTime}</ div>
</ div>
</ td>
< td align = " center" style =" text-align : center; " >
< div class = " input-group input-group-sm" >
< input id = " performance" name = " performance" class = ' form-control required' type = " number" min = " 0.00" max = " 1.00" value = " ${geroNursingArrangeCheck.performance}" step = " 0.01" />
</ div>
</ td>
</ tr>
</ tbody>
2.JS
addArrangeCheck: function ( ) {
var options = {
shade: 0.3 ,
type: 2 ,
maxmin: true ,
shadeClose: true ,
title: '【护理员选择】' ,
area: [ '60%' , '70%' ] ,
content: ctx + '/nursing/arrange/arrangeDialog' ,
btn: [ '<i class="fa fa-check"></i> 确定' ] ,
btn1: function ( index, layero) {
var win = parent. layer. iframeWindow ( index) ;
var ids = win. $ ( "#grid" ) . jqGrid ( 'getGridParam' , 'selarrrow' )
if ( ids. length == 0 ) {
parent. layer. msg ( "请选择护理员!" ) ;
} else {
var num= 0 ;
var len= $ ( "#shift_tr > tr" ) . length
if ( len== 1 ) {
num= len;
} else {
num= len+ num;
}
$. each ( ids, function ( i, v) {
var data = win. $ ( "#grid" ) . jqGrid ( 'getRowData' , v) ;
_that. addArrangeLine ( i+ num, data) ;
} )
}
parent. layer. close ( index) ;
}
} ;
options. btn. push ( '<i class="fa fa-close"></i> 关闭' ) ;
options[ 'btn' + options. btn. length] = function ( index, layero) {
if ( typeof treeselectCallback == 'function' ) {
treeselectCallback ( 'parent' , 'cancel' , index, layero) ;
}
} ;
parent. layer. open ( options) ;
} ,
addArrangeLine: function ( index, shift) {
var dom = "" ;
dom += "<tr id=\"shiftTr_" + index + "\" data-index-id=" + shift. id + ">" ;
dom += " <td align='center'>" ;
dom += " <div class=\"input-group input-group-sm\">" ;
dom += " <input type=\"hidden\" id=\"geroNursingArrangeCheckList[" + index + "].arrangeId\" name=\"geroNursingArrangeCheckList[" + index + "].arrangeId\" value=\"" + shift. id + "\" class=\"form-control arrangeId\">" ;
dom += " <div>" + shift. employeeName+ "</div>" ;
dom += " </div>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <div class=\"input-group input-group-sm\">" ;
dom += " <div>" + shift. arrangeTime+ "</div>" ;
dom += " </div>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <div class=\"input-group input-group-sm\">" ;
dom += " <div>" + shift. startTime+ "</div>" ;
dom += " </div>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <div class=\"input-group input-group-sm\">" ;
dom += " <div>" + shift. endTime+ "</div>" ;
dom += " </div>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <div class=\"input-group input-group-sm\">" ;
dom += "<input id=\"geroNursingArrangeCheckList[" + index + "].performance\" name=\"geroNursingArrangeCheckList[" + index + "].performance\" class='form-control required' type=\"number\" min=\"0.00\" max=\"1.00\" value='0.00' step=\"0.01\" />" ;
dom += " </div>" ;
dom += " </td>" ;
dom += " <td align='center' style=\"text-align:center;\">" ;
dom += " <a href=\"javascript:void(0);\" class=\"btnList layui-btn layui-btn-xs layui-btn-danger\" οnclick=\"geroNursingArrangeCheckAddForm.removeLine('shiftTr_" + index + "');\"> 删除</a>" ;
dom += " </td>" ;
dom += "</tr>" ;
var flag= true ;
$ ( 'tr .arrangeId' ) . each ( function ( i, val) {
if ( shift. id== $ ( this ) . val ( ) ) {
Js. layer. msg ( "已经存在的排班信息,不能重复添加" ) ;
flag= false ;
}
} ) ;
if ( flag) {
$ ( "#shift_tr" ) . append ( dom) ;
}
} ,
removeLine: function ( id) {
$ ( "#" + id) . remove ( ) ;
} ,
removeAllLine: function ( ) {
$ ( "#shift_tr" ) . html ( "" ) ;
} ,
3.controller
@GetMapping ( value = "/arrangeDialog" )
public String arrangeDialog (
HttpServletRequest request,
HttpServletResponse response,
Model model
) {
return prefix + "/arrange_dialog" ;
}
@PostMapping ( value = "/getNormalStatePage" )
@ResponseBody
public JqGrid< GeroNursingArrange> getNormalStatePage (
HttpServletRequest request,
@ModelAttribute GeroNursingArrange geroNursingArrange,
@RequestParam ( value = "pageNo" , required = true ) Integer pageNo,
@RequestParam ( value = "pageSize" , required = true ) Integer pageSize,
@RequestParam ( value = "startTime" , required = false ) String startTime,
@RequestParam ( value = "endTime" , required = false ) String endTime
) {
QueryWrapper< GeroNursingArrange> wrapper = new QueryWrapper < > ( ) ;
wrapper. lambda ( ) . like ( StringUtils. isNoneBlank ( geroNursingArrange. getEmployeeName ( ) ) ,
GeroNursingArrange: : getEmployeeName, geroNursingArrange. getEmployeeName ( ) )
. ne ( GeroNursingArrange: : getCheckFlag, "1" )
. ge ( StringUtils. isNoneBlank ( startTime) ,
GeroNursingArrange: : getArrangeTime, startTime)
. le ( StringUtils. isNoneBlank ( endTime) ,
GeroNursingArrange: : getArrangeTime, endTime) ;
return arrangeService. jqGridPage ( pageNo, pageSize, wrapper) ;
}
4.dialog的html
<% layout('/layouts/manager_content.html',{title:'geroNursingArrange-page',libs: ['jqGrid','siufung','select2']}){ %>
< div class = " main-content" >
< div class = " box box-main" >
< div class = " box-body" >
< form id = " searchForm" action = " ${ctxPath}/nursing/arrange/getNormalStatePage" class = " form-inline" method = " post" >
< div class = " form-group" >
< label class = " control-label" > 护理员名称:</ label>
< div class = " control-inline" >
< input id = " employeeName" name = " employeeName" class = " form-control width-140" />
</ div>
</ div>
< div class = " form-group" >
< label class = " control-label" > 排班起止时间:</ label>
< div class = " control-inline" >
< input id = " startTime" name = " startTime" readonly style =" background : #fff" class = " form-control width-120" /> -
< input id = " endTime" name = " endTime" readonly style =" background : #fff" class = " form-control width-120" />
</ div>
</ div>
< div class = " form-group" >
< button type = " submit" class = " layui-btn layui-btn-default layui-btn-sm" > < i class = " fa fa-search" > </ i> 查询</ button>
< button type = " reset" class = " layui-btn layui-btn-primary layui-btn-sm" > < i class = " fa fa-wrench" > </ i> 重置</ button>
</ div>
</ form>
< table id = " grid" > </ table>
< div id = " gridPage" > </ div>
</ div>
</ div>
</ div>
< script src = " ${ctxPath}/modules/nursing/arrange/arrange_dialog.js" > </ script>
< script type = " text/javascript" >
$ ( function ( ) {
arrangeCheckDialogForm. init ( ) ;
$ ( '#grid' ) . dataGrid ( {
searchForm: $ ( "#searchForm" ) ,
showCheckbox: true ,
columnModel: [
{ header: '序列号' , name: 'id' , index: 'ID' , hidden: true , key: true } ,
{ header: '护理员名称' , name: 'employeeName' , index: 'EMPLOYEE_NAME' , width: 150 , align: "center" } ,
{ header: '排班日期' , name: 'arrangeTime' , index: 'ARRANGE_TIME' , width: 150 , align: "center" } ,
{ header: '开始时间' , name: 'startTime' , index: 'START_TIME' , width: 150 , align: "center" } ,
{ header: '结束时间' , name: 'endTime' , index: 'END_TIME' , width: 150 , align: "center" } ,
] ,
ajaxSuccess: function ( data) {
}
} ) ;
} ) ;
</ script>
<% } %>
5.dialog的js
var arrangeCheckDialogForm = function ( $) {
var _that = null ;
return {
init: function ( ) {
_that = this ;
_that. bindEvent ( ) ;
_that. bindData ( ) ;
_that. bingComponent ( ) ;
} ,
bindEvent: function ( ) {
} ,
bindData: function ( ) {
} ,
bingComponent: function ( ) {
layui. use ( 'laydate' , function ( ) {
var laydate = layui. laydate;
var startDate = laydate. render ( {
elem: '#startTime' ,
type: 'date' ,
max: getNowFormatDate ( ) ,
done: function ( value, { year, month, date} ) {
endDate. config. min = {
year,
month: month - 1 ,
date
} ;
}
} ) ;
var endDate = laydate. render ( {
elem: '#endTime' ,
type: 'date' ,
max: getNowFormatDate ( ) ,
done: function ( value, { year, month, date} ) {
startDate. config. max = {
year,
month: month - 1 ,
date
} ;
}
} ) ;
} ) ;
function getNowFormatDate ( ) {
var date = new Date ( ) ;
var seperator1 = "-" ;
var seperator2 = ":" ;
var month = date. getMonth ( ) + 1 ;
var strDate = date. getDate ( ) ;
if ( month >= 1 && month <= 9 ) {
month = "0" + month;
}
if ( strDate >= 0 && strDate <= 9 ) {
strDate = "0" + strDate;
}
var currentdate = date. getFullYear ( ) + seperator1 + month
+ seperator1 + strDate + " " + date. getHours ( ) + seperator2
+ date. getMinutes ( ) + seperator2 + date. getSeconds ( ) ;
return currentdate;
}
} ,
}
} ( jQuery) ;