My97DatePicker关于请假日期前后端判断已选日期不可再选

关于My97DatePicker关于请假日期前后端判断已选日期不可再选,不过有个小bug(关于在数据库中已经存在 比如:请假12-15,17-18这几天,但我又请了11号 16号,在前端页面没有提示 其实已经重复了,不能再请,我写在了后台页面,可查看连接https://www.cnblogs.com/TripMaster/p/11398399.html),后期会修改。
 
 1 遍历所有的日期 取出最小值,然后for遍历最大不能超过你所取到的日期
 2 
 3 beginArray.sort();//遍历所有时间,进行排序,小——大。取最小值进行比较,如果小于返回,没有操作,大于返回操作数值
 4         
 5         //alert(beginArray[0]);
 6         
 7         var begin = $("#beginLeave").val();
 8         var i;
 9         for( i=0 ;i<=beginArray.length;i++ ){
10             if(begin<beginArray[i]){
11                 j = i;
12                 //alert(j+","+i);
13                 break;
14             }
15         };
16 
17 
18 
19 maxDate:beginArray[i],
jsp后加
 1 <tr>
 2                         <td align="right" width="30%">开始时间:</td>
 3                         <td align="left"><input type="text" name="tbLeave.beginLeave" readOnly="readonly"
 4                             id="beginLeave"  
 5                             onClick="WdatePicker({onclearing:wp()})" class="Wdate"  /><br/>
 6                         </td>
 7                     </tr><br/>
 8                     <tr>
 9                         <td align="right" width="30%">结束时间:</td>
10                         <td align="left"><input type="text" name="tbLeave.endLeave" readOnly="readonly"
11                             id="endLeave" onClick="WdatePicker({onclearing:wp()})" class="Wdate"/><br/></td>
12                     </tr><br/> 
jsp
 1 public String getVacationsTime(){
 2         TbUser tbUser=(TbUser) getFromSession("loginUser");
 3         String beginLeave = "";
 4         String endLeave = "";//构造2个字符串存放每个请假条的开始和结束时间//获取当前用户所有请假条
 5         try {
 6             leaveList=leaveService.getLeavesByUsername(tbUser.getId());
 7              for (int i = 0; i < leaveList.size(); i++) {
 8                     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
 9                     String begins = sdf.format(leaveList.get(i).getBeginLeave());
10                     String ends = sdf.format(leaveList.get(i).getEndLeave());
11                     
12                     if(beginLeave!="" && beginLeave!=null){//拼接开始时间和结束时间的字符串,传递到用户端
13                         beginLeave+=",";
14                     }
15                     beginLeave+=begins;
16                     if(endLeave!="" && endLeave!=null){
17                         endLeave+=",";
18                     }
19                     endLeave+=ends;
20                     
21                 }
22                  
23                      resultMap.put("beginLeave", beginLeave);
24                      resultMap.put("endLeave", endLeave);
25                      
26                 log.info("method getVacationsTime 获取开始结束时间 is successful!!!!");
27                 resultMap.put("retcode", RetCode.SUCCESS);
28                 resultMap.put("retmsg", "获取开始结束时间 成功");
29                 
30                 log.info("请假时间冲突,fail!!!");
31                 resultMap.put("retcode", RetCode.FAIL);
32                 resultMap.put("retmsg", "请假时间冲突,从新选择");
33                  
34         } catch (Exception e) {
35             e.printStackTrace();
36             log.error("method addEmails bug:{}",e);
37             resultMap.put("retcode", RetCode.UNKOWN_WRONG);
38             resultMap.put("retmsg", "未知错误,请重试或联系管理员");
39         }
40        
41         return SUCCESS;
42     }
action
 1 <action name="getVacationsTime" class="leaveAction" method="getVacationsTime">
 2                 <result type="json">
 3                      <param name="root">resultMap</param>
 4                   </result>
 5            </action>
 6         
 7         <action name="beginTOEnd" class="leaveAction" method="beginTOEnd">
 8                 <result type="json">
 9                      <param name="root">resultMap</param>
10                   </result>
11            </action>
struts
 1 <script type="text/javascript">
 2 $(function wp(){
 3     var beginArray=new Array();
 4     var endArray=new Array();
 5     var disableDate=new Array();
 6 //得到数据库中beginLeave和endLeave,构造数组
 7     $(document).ready(function(){
 8     var url="${ctx}/leave/getVacationsTime.action";//获取到所有值,进行判断
 9       $.post(
10             url,
11             function(data){
12                     //alert(data.beginLeave);
13                     //alert(data.endLeave);
14                     
15                 beginArray = data.beginLeave.split(",");//去掉 , 号
16                 endArray = data.endLeave.split(",");
17                 
18                 var index=0;
19                 for(var i=0;i<beginArray.length;i++){//遍历每个TbLeave的开始时间和结束时间
20                     var beginLeave=new Date(beginArray[i]).dateFormat();
21                     var endLeave=new Date(endArray[i]).dateFormat();
22                     beginArray[i] = beginLeave;
23                     endArray[i] = endLeave;
24                     var arr=getAll(beginLeave,endLeave);//调用下面自定义getAll()方法,获取该TbLeave开始时间和结束时间之间所有的日期
25                     for(var j=0;j<arr.length;j++){//遍历getAll()所有的日期,放到disableDate数组中
26                         
27                         disableDate[index]=arr[j];
28                         index+=1;
29                     }
30                 }
31                 //alert(disableDate.toString());  //输出是否显示所有日期
32             }
33         );
34     });
35     $("#beginLeave").click(function(){//开始时间日历控件的单击事件
36         WdatePicker({
37             skin:'whyGreen',
38             dateFmt:'yyyy-MM-dd',
39             minDate:'%y-%M-%d+1',//限制今天之前的日期
40             maxDate:'#F{$dp.$D(\'endLeave\')}',//endLeave是结束时间的id
41             disabledDays:[0,6],//限制周六和周日不能请假
42             disabledDates:disableDate//限制所有的日期,disableDate数组获取到的值,全部限制
43         });
44     });
45     $("#endLeave").click(function(){//结束时间日历控件的单击事件
46         WdatePicker({
47             skin:'whyGreen',
48             dateFmt:'yyyy-MM-dd',
49             minDate:'#F{$dp.$D(\'beginLeave\')}',
50             disabledDays:[0,6],
51             disabledDates:disableDate
52         });
53     });  
54     
55     //获取begin和end之间所有的 日期格式化 函数
56     Date.prototype.dateFormat = function() {
57     var s = '';  
58         var mouth = (this.getMonth() + 1)>=10?(this.getMonth() + 1):('0'+(this.getMonth() + 1));  
59         var day = this.getDate()>=10?this.getDate():('0'+this.getDate());  
60         s += this.getFullYear() + '-'; // 获取年份。  
61         s += mouth + "-"; // 获取月份。  
62         s += day; // 获取日。  
63         return (s); // 返回日期。  
64     };
65     //获取begin和end之间所有的 日期 函数
66     function getAll(begin, end) {
67           var arr=new Array();
68           var ab = begin.split("-");  
69           var ae = end.split("-");  
70           var db = new Date();  
71           db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);  
72           var de = new Date();  
73           de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);  
74           var unixDb = db.getTime();  
75           var unixDe = de.getTime();
76           var i=0;
77           for (var k = unixDb; k <= unixDe;) {  
78               /* console.log((new Date(parseInt(k))).dateFormat()); */
79               arr[i]=(new Date(parseInt(k))).dateFormat();
80               i+=1;
81               k = k + 24 * 60 * 60 * 1000;  
82           }
83           return arr;
84     }
85     
86 });
87 </script>
script

<a>

 

posted @ 2019-08-23 10:16  TripMaster无名  阅读(257)  评论(0编辑  收藏  举报