Extjs6增加日历记事本功能

目前在做OA首页的时候,打算增加一个日历记事本功能。要求简单,不占版面,经过努力,终于完成,大家可以参考下。
主要实现功能:前后台交互,新增/修改、获取记录等,删除功能也可以写,时间有限,自己写吧!


1.png
2.png

主要参考:http://bbs.itheima.com/forum.php?mod=viewthread&tid=412056&highlight=layui
采用layui和jquery实现
1、js页面集成,通过iframe嵌入

 {
                        xtype : 'panel',
                        width : 350,
                        margin : '0 5 0 5',
                        cls : 'panelCls',
                        border : false,
                        region : 'east',
                        html : '<iframe allowtransparency="true" frameborder="0" style="width:380px;height:100%;position:absolute; top:-10px; left:-15px;" scrolling="no" src="../OA/jishiben/index.html"></iframe>'
                    }

2、记事本html页面

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="stylesheet" href="layui/css/layui.css">
  <link rel="stylesheet" href="css/date.css">
</head>
<body>
 
<!-- 你的HTML代码 -->

<div class="layui-container" style="padding: 15px;">  
  <div class="layui-row">
    <div class="layui-col-md12">
    <div class="layui-inline" id="test-n2" ></div>
    
    </div>
  </div>
</div>



 
<script src="layui/layui.js"></script>
<script>


layui.use(['layer', 'form','jquery','laydate'], function() {
    var layer = layui.layer,
        $ = layui.jquery,
        laydate = layui.laydate,
        form = layui.form;
        

        
            
        //定义json    
        var  data={};
        //页面加载后初始化data 
        $.ajax({
                  type: 'POST',
                  url: "../../datenote.do?method=getDateNote",
                  dataType : "text",
                  success: function(res){
                        data = JSON.parse(res); 
                        var new_date = new Date();    
                        loding_date(new_date ,data); 
                  }
                });
         
        //var  dataArr = [];
        //var new_date = new Date();
        //loding_date(new_date ,data);


        //日历插件调用方法  
        function loding_date(date_value,data){
        console.log("得到的日期2:"+data)
          laydate.render({
            elem: '#test-n2'
            ,type: 'date'
            ,theme: 'grid'
            ,max: '2099-06-16 23:59:59'
            ,position: 'static'
            ,range: false
            ,value:date_value
            ,isInitValue: false
            ,calendar: true
            ,btns:false
            /* ,ready: function(value){
                //console.log(value);
                hide_mr(value);
            } */
            ,done: function(value, date, endDate){
              console.log(value); //得到日期生成的值,如:2017-08-18
              console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
              console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
              //layer.msg(value)
              
              //调用弹出层方法
              date_chose(value,data);
            }
           , mark:data//重要json!
           
          });
        }

  
      //获取隐藏的弹出层内容
      var date_choebox = $('.date_box').html();
  
      //定义弹出层方法
      function date_chose(obj_date,data){
          var index = layer.open({
          type: 1,
          skin: 'layui-layer-rim', //加上边框
          title:'添加记录',
          area: ['300px', '200px'], //宽高
          btn:['确定','撤销','取消'],
          content: '<div class="text_box">'+
                '<form class="layui-form" action="">'+
                 '<div class="layui-form-item layui-form-text">'+
                             ' <textarea id="text_book" placeholder="请输入内容"  class="layui-textarea"></textarea>'+
                          '</div>'+
                '</form>'+
                '</div>'
          ,success:function(){
              console.log(data)
              console.log(obj_date)
                $('#text_book').val(data[obj_date])
            }
          ,yes:function (){
            //调用添加/编辑标注方法
            if($('#text_book').val()!=''){
                 chose_moban(obj_date,data);
                layer.close(index); 
            }else{
                 layer.msg('不能为空', {icon: 2});
            }
           
          },btn2:function (){
            chexiao(obj_date,data);
          }
        });
      }
  




    //定义添加/编辑标注方法
        function chose_moban(obj_date,markJson){
          //获取弹出层val
          var chose_moban_val = $('#text_book').val();
          
          $('#test-n2').html('');//重要!由于插件是嵌套指定容器,再次调用前需要清空原日历控件
            //添加属性 
            markJson[obj_date] = chose_moban_val;
            
            $.ajax({
                  type: 'POST',
                  url: "../../datenote.do?method=setDateNote",
                  data: {
                        markDate:obj_date,
                        markNote:markJson[obj_date]
                  },
                  success: function(res){
                      console.log(res)
                  }
                });        
           
            //再次调用日历控件,
            loding_date(obj_date,markJson);//重要!,再标注一个日期后会刷新当前日期变为初始值,所以必须调用当前选定日期。
            
        }


        //撤销选择
        function chexiao(obj_date,markJson){
            //删除指定日期标注
            delete markJson[obj_date]; 
           
            //原理同添加一致
            $('#test-n2').html('');
            loding_date(obj_date,markJson);
        
        }

        
        
            

    });</script> 
</body>
</html>

3、java端

@Resource(name = "sessionFactoryPrimary")
    private SessionFactory sessionFactory;

    @SuppressWarnings("rawtypes")
    @RequestMapping(params = "method=getDateNote")
    public void getDateNote(HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.setContentType("text/json;charset=utf-8");
        Session session = sessionFactory.getCurrentSession();
        String userName = (String) request.getSession().getAttribute("userName");

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        List list = session.createQuery("from DateNote where reportMan=:reportMan ")
                .setParameter("reportMan", userName).list();
        StringBuffer sb=new StringBuffer();
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            DateNote dn = (DateNote) iterator.next();
            sb.append(",\""+sdf.format(dn.getMarkDate())+"\":\""+dn.getMarkNote()+"\""); 
        }
        String sbStr=sb.toString().replaceAll("\n", "");
        String str ="{"+ sbStr.substring(1,sbStr.length())+"}";   
        response.getWriter().write(str); 
    }

    @SuppressWarnings("rawtypes")
    @RequestMapping(params = "method=setDateNote")
    public void  setDateNote(HttpServletRequest request, HttpServletResponse response,String markDate,String markNote)
            throws Exception {
        response.setContentType("text/json;charset=utf-8");
        Session session = sessionFactory.getCurrentSession();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        String userName = (String) request.getSession().getAttribute("userName");
        Success success=new Success();
        if(StringUtils.isBlank(markDate) || StringUtils.isBlank(markNote)){
            success.setMsg("N");
        }else{
            //1、查询当天是否已经添加记录
            List queryExist=session.createQuery("select d.id from DateNote d where Date(d.markDate) = :mkdate")
                    .setParameter("mkdate", sdf.parse(markDate)).list();
            if(queryExist.size()>0){
                String id=queryExist.get(0).toString();
                DateNote dn=session.get(DateNote.class, id);
                dn.setMarkNote(markNote);
                dn.setUpdateTime(new Date());
                session.update(dn);
            }else{
                DateNote dn=new DateNote();
                dn.setMarkDate(sdf.parse(markDate));
                dn.setMarkNote(markNote);
                dn.setCreateTime(new Date());
                dn.setUpdateTime(new Date());
                dn.setReportMan(userName);
                session.save(dn);
            }
            success.setMsg("Y");
            
        }
        CommonHelper.responseToFront(response, success);
    }

Ok,完工!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343