大理考勤
diff --git a/src/main/java/com/supwisdom/dlpay/atte/bean/AtteDetailInfo.java b/src/main/java/com/supwisdom/dlpay/atte/bean/AtteDetailInfo.java
index d8563b1..f4ac20b 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/bean/AtteDetailInfo.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/bean/AtteDetailInfo.java
@@ -17,6 +17,7 @@
     private String deptcode;
     private String oldstate;
     private Integer timetype;
+    private String timename;
 
     public String getCustname() {
         return custname;
@@ -106,4 +107,12 @@
     public void setTimetype(Integer timetype) {
         this.timetype = timetype;
     }
+
+    public String getTimename() {
+        return timename;
+    }
+
+    public void setTimename(String timename) {
+        this.timename = timename;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/bean/AttedtlSearchBean.java b/src/main/java/com/supwisdom/dlpay/atte/bean/AttedtlSearchBean.java
index c319093..c4761af 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/bean/AttedtlSearchBean.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/bean/AttedtlSearchBean.java
@@ -9,6 +9,7 @@
     private String deptcode;
     private String devname;
     private String dtcode;
+    private String custid;
 
     public String getStartdate() {
         return startdate;
@@ -73,4 +74,12 @@
     public void setDtcode(String dtcode) {
         this.dtcode = dtcode;
     }
+
+    public String getCustid() {
+        return custid;
+    }
+
+    public void setCustid(String custid) {
+        this.custid = custid;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java b/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java
index 389eba6..9845ecf 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.atte.controller;
 
+import com.supwisdom.dlpay.atte.bean.AttedtlSearchBean;
 import com.supwisdom.dlpay.atte.bean.ClockInfo;
 import com.supwisdom.dlpay.atte.bean.ClockSearchBean;
 import com.supwisdom.dlpay.atte.bean.RestSearchBean;
@@ -480,7 +481,7 @@
             TCard card=cardDao.findCardByCustid(custid);
             Pagination page=new Pagination();
             if(card!=null){
-                page = webInterfaceService.findSystemTDoordtl("","","","",card.getCardno(),"","","","all",pageNo,10,"");
+                page = atteClassService.findSystemTDoordtl("","","","",card.getCardno(),"","","","all",pageNo,10,"");
             }
             map.put("page",page);
 
@@ -495,4 +496,95 @@
     }
 
 
+    /**
+     *    考勤明细
+     * @param model
+     * @return
+     */
+    @RequestMapping("/attedtl")
+    public String attedtl(@RequestParam(value = "custid") String custid, Model model){
+        model.addAttribute("custid",custid);
+        return "apph5/attedtl";
+    }
+
+    /**
+     *  考勤明细
+     */
+    @RequestMapping(value = "/getattedtllist")
+    @ResponseBody
+    public Map getattedtllist(
+            @RequestParam("custid") String custid,
+            @RequestParam("pageNo") Integer pageNo,
+            @RequestParam("startdate") String startdate,
+            @RequestParam("enddate") String enddate,
+            HttpServletRequest request){
+        Map map=new HashMap();
+
+        try {
+            if(custid==null || pageNo==null){
+                map.put("errStr","参数错误");
+                return map;
+            }
+            Pagination page=new Pagination();
+            AttedtlSearchBean searchBean=new AttedtlSearchBean();
+            searchBean.setCustid(custid);
+            searchBean.setStartdate(startdate);
+            searchBean.setEnddate(enddate);
+            page=atteClassService.getAtteDtlInfoWithPage(searchBean,pageNo,10);
+            map.put("page",page);
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.put("errStr",e.getMessage());
+        }
+
+        return map;
+
+    }
+
+    /**
+     *    考勤明细
+     * @param model
+     * @return
+     */
+    @RequestMapping("/atte/detailindex")
+    public String detailindex(@RequestParam(value = "custid") String custid,
+                              @RequestParam(value = "attedate") String attedate,Model model){
+        model.addAttribute("custid",custid);
+        model.addAttribute("attedate",attedate);
+        return "apph5/detailindex";
+    }
+
+    /**
+     *  考勤明细
+     */
+    @RequestMapping(value = "/getdetail")
+    @ResponseBody
+    public Map getdetail(
+            @RequestParam("custid") String custid,
+            @RequestParam("pageNo") Integer pageNo,
+            @RequestParam("attedate")String attedate,
+            HttpServletRequest request){
+        Map map=new HashMap();
+
+        try {
+            if(StringUtil.isEmpty(custid) || pageNo==null||StringUtil.isEmpty(attedate)){
+                map.put("errStr","参数错误");
+                return map;
+            }
+            attedate=attedate.replaceAll("-","");
+            Pagination page=new Pagination();
+            AttedtlSearchBean searchBean=new AttedtlSearchBean();
+            searchBean.setCustid(custid);
+            searchBean.setStartdate(attedate);
+            searchBean.setEnddate(attedate);
+            page=atteClassService.getDtlWithPage(searchBean,pageNo,10);
+            map.put("page",page);
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.put("errStr",e.getMessage());
+        }
+
+        return map;
+
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java b/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java
index b7f4c35..27c65d7 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java
@@ -76,4 +76,11 @@
     public List<AtteReport> getPReportList(AttedtlSearchBean searchBean);
 
     public TAtteDtl getDtl(Integer timeid,String attedate,String custid);
+
+    //门禁流水 除去考勤
+    public Pagination findSystemTDoordtl(
+            String startTranDate, String endTranDate,String startTranTime, String endTranTime,String cardno,
+            String custname,String buildingid,String devname,String streamstatus,int pageNo,int pageSize,String regionid);
+
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java b/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
index 97781e0..c3dd941 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
@@ -8,6 +8,7 @@
 import com.supwisdom.dlpay.atte.domain.TClassCust;
 import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
 import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;
 import com.supwisdom.dlpay.system.page.Pagination;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -279,7 +280,7 @@
     @Override
     public Pagination getAttedtlWithPage(AttedtlSearchBean searchBean, int pageNo, int pageSize) {
         StringBuffer sql=new StringBuffer();
-        sql.append(" select t.timeid,t.atteno,t.attedate,t.remark,c.custname,c.custtypeid,b.cardno,t.state,c.deptcode,t.oldstate,n.timetype    from t_atte_dtl t left join t_customer c on t.custid=c.custid ");
+        sql.append(" select t.timeid,t.atteno,t.attedate,t.remark,c.custname,c.custtypeid,b.cardno,t.state,c.deptcode,t.oldstate,n.timetype,n.timename    from t_atte_dtl t left join t_customer c on t.custid=c.custid ");
             sql.append(" left join t_card b on b.custid=t.custid left join t_nc_time n on t.timeid=n.timeid where c.status='1' and b.status='normal'   ");
             if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
                 sql.append(" and t.attedate between :sdate and :edate ");
@@ -299,7 +300,10 @@
             if(!StringUtil.isEmpty(searchBean.getDtcode())){
                 sql.append(" and c.deptcode = :dtcode ");
             }
-            sql.append(" order by t.atteno desc ");
+            if(!StringUtil.isEmpty(searchBean.getCustid())){
+                sql.append(" and t.custid = :cid ");
+            }
+            sql.append(" order by t.atteno desc,t.timeid desc ");
             Query query=entityManager.createNativeQuery(sql.toString(), AtteDetailInfo.class);
         if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
             query.setParameter("sdate",searchBean.getStartdate());
@@ -320,6 +324,9 @@
         if(!StringUtil.isEmpty(searchBean.getDtcode())){
             query.setParameter("dtcode",searchBean.getDtcode());
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            query.setParameter("cid",searchBean.getCustid());
+        }
         pageNo = pageNo <= 0 ? 1 : pageNo;
         query.setFirstResult((pageNo - 1) * pageSize);
         query.setMaxResults(pageSize);
@@ -357,6 +364,9 @@
         if(!StringUtil.isEmpty(searchBean.getDtcode())){
             sql.append(" and c.deptcode = :dtcode ");
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            sql.append(" and t.custid = :cid ");
+        }
         Query query=entityManager.createNativeQuery(sql.toString());
         if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
             query.setParameter("sdate",searchBean.getStartdate());
@@ -377,6 +387,9 @@
         if(!StringUtil.isEmpty(searchBean.getDtcode())){
             query.setParameter("dtcode",searchBean.getDtcode());
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            query.setParameter("cid",searchBean.getCustid());
+        }
         Object object=query.getSingleResult();
         if(object!=null){
             result= Integer.parseInt(object.toString());
@@ -465,6 +478,9 @@
         if(!StringUtil.isEmpty(searchBean.getCardno())){
             sql+="  and v.cardno like :cno ";
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            sql+=" and v.custid = :cid ";
+        }
         sql+=" order by v.transdate desc,v.transtime desc";
         Query query=entityManager.createNativeQuery(sql, AtteDtl.class);
         if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
@@ -489,6 +505,9 @@
         if(!StringUtil.isEmpty(searchBean.getDtcode())){
             query.setParameter("dtcode",searchBean.getDtcode());
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            query.setParameter("cid",searchBean.getCustid());
+        }
         pageNo = pageNo <= 0 ? 1 : pageNo;
         query.setFirstResult((pageNo - 1) * pageSize);
         query.setMaxResults(pageSize);
@@ -526,6 +545,9 @@
         if(!StringUtil.isEmpty(searchBean.getCardno())){
             sql+="  and v.cardno like :cno ";
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            sql+=" and v.custid = :cid ";
+        }
         sql+=" order by v.doorseqno ";
         Query query=entityManager.createNativeQuery(sql, AtteDtl.class);
         if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
@@ -550,6 +572,9 @@
         if(!StringUtil.isEmpty(searchBean.getDtcode())){
             query.setParameter("dtcode",searchBean.getDtcode());
         }
+        if(!StringUtil.isEmpty(searchBean.getCustid())){
+            query.setParameter("cid",searchBean.getCustid());
+        }
         List<AtteDtl> list=query.getResultList();
         if(list!=null){
             return list.size();
@@ -891,4 +916,169 @@
          }
         return null;
     }
+
+
+    @Transactional
+    @Override
+    public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String cardno, String custname, String buildingid, String devname, String streamstatus, int pageNo, int pageSize, String regionid) {
+        String queryString = "select a.doorseqno,b.deviceid,b.devname,a.custname,c.cardno,a.cardphyid,c.bankcardno,a.transdate||a.transtime transdate, a.coldate||a.coltime coldate,"
+                + " case when a.status='' then '失败' else '成功' end status,a.dtldesc "
+                + " from t_doordtl a left join t_card c on a.custid=c.custid,  t_nc_device b "
+                + " left join tb_region d on b.regionid=d.regionid "
+                + " left join t_building e on b.buildingid=e.buildingid "
+                + " where 1>0 and cast(substr(a.doorid,5) as integer) = b.deviceid ";
+        if (!startTranDate.equals("")){
+            queryString += " and transdate >= :startTranDate ";
+        }
+        if (!endTranDate.equals("")){
+            queryString += " and transdate <= :endTranDate ";
+        }
+        if (!cardno.equals("")) {
+            queryString += " and a.cardno like :cardno ";
+        }
+        if (!custname.equals("")) {
+            queryString += " and a.custname like :custname ";
+        }
+        if (!devname.equals("")) {
+            queryString += " and b.devname like :devname ";
+        }
+        if (!streamstatus.equals("all")) {
+            queryString += " and a.status =:streamstatus ";
+        }
+        if(!buildingid.equals("")){
+            queryString += " and e.buildingid = :buildingid ";
+        }
+        if (!regionid.equals("")){
+            queryString += " and d.regionid in  "
+                    +"("
+                    + "with recursive tmp as  "
+                    + "("
+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "
+                    + "union all  "
+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "
+                    + ") select regionid from tmp  )";
+        }
+        queryString +=" and b.deviceid not in (select distinct deviceid from t_dev_rule ) ";
+        queryString += " order by a.transdate DESC";
+        Query query = entityManager.createNativeQuery(queryString, TDoordtlInfo.class);
+        if (!startTranDate.equals("")) {
+            query.setParameter("startTranDate", startTranDate);
+        }
+        if (!endTranDate.equals("")){
+            query.setParameter("endTranDate", endTranDate);
+        }
+        if (!cardno.equals("")) {
+            query.setParameter("cardno", cardno);
+        }
+        if (!custname.equals("")) {
+            query.setParameter("custname", "%" + custname + "%");
+        }
+        if (!devname.equals("")) {
+            query.setParameter("devname", "%" + devname + "%");
+        }
+        if (!streamstatus.equals("all")) {
+            query.setParameter("streamstatus", streamstatus);
+        }
+        if(!buildingid.equals("")){
+            query.setParameter("buildingid",buildingid);
+        }
+        if (!regionid.equals("")){
+            query.setParameter("regionid", regionid);
+        }
+        pageNo = pageNo <= 0 ? 1 : pageNo;
+        query.setFirstResult((pageNo - 1) * pageSize);
+        query.setMaxResults(pageSize);
+        Pagination page = new Pagination();
+        page.setPageNo(pageNo);
+        page.setPageSize(pageSize);
+        List<TDoordtlInfo> list = query.getResultList();
+        page.setList(list);
+        int totalCount = getSystemCount(startTranDate, endTranDate, cardno, custname,
+                buildingid, devname, streamstatus,regionid);
+        page.setTotalCount(totalCount);
+        return page;
+    }
+
+
+
+
+    private int getSystemCount(String startTranDate, String endTranDate,
+                               String cardno, String custname, String buildingid, String devname, String streamstatus,String regionid) {
+        try {
+            String queryString = "select count(*) as cnt "
+                    + " from t_doordtl a "
+                    + " left join t_card c on a.custid=c.custid, t_nc_device b "
+                    + " left join tb_region d on b.regionid=d.regionid "
+                    + " left join t_building e on b.buildingid=e.buildingid "
+                    + " where 1>0 and cast(substr(a.doorid,5) as integer) = b.deviceid ";
+
+            if (!startTranDate.equals("")){
+                queryString += " and transdate >= :startTranDate ";
+            }
+            if (!endTranDate.equals("")){
+                queryString += " and transdate <= :endTranDate ";
+            }
+            if (!cardno.equals("")) {
+                queryString += " and a.cardno like :cardno ";
+            }
+            if (!custname.equals("")) {
+                queryString += " and a.custname like :custname ";
+            }
+            if (!devname.equals("")) {
+                queryString += " and b.devname like :devname ";
+            }
+            if (!streamstatus.equals("all")) {
+                queryString += " and a.status =:streamstatus ";
+            }
+            if(!buildingid.equals("")){
+                queryString += " and e.buildingid = :buildingid ";
+            }
+            if (!regionid.equals("")){
+                queryString += " and d.regionid in  "
+                        +"("
+                        + "with recursive tmp as  "
+                        + "("
+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "
+                        + "union all  "
+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "
+                        + ") select regionid from tmp  ) ";
+            }
+            queryString +=" and b.deviceid not in (select distinct deviceid from t_dev_rule ) ";
+            Query query = entityManager.createNativeQuery(queryString);
+            query.setMaxResults(5);
+            if (!startTranDate.equals("")) {
+                query.setParameter("startTranDate", startTranDate);
+            }
+            if (!endTranDate.equals("")){
+                query.setParameter("endTranDate", endTranDate);
+            }
+            if (!cardno.equals("")) {
+                query.setParameter("cardno", cardno);
+            }
+            if (!custname.equals("")) {
+                query.setParameter("custname", "%" + custname + "%");
+            }
+            if (!buildingid.equals("")) {
+                query.setParameter("buildingid", buildingid);
+            }
+            if (!devname.equals("")) {
+                query.setParameter("devname", "%" + devname + "%");
+            }
+            if (!streamstatus.equals("all")) {
+                query.setParameter("streamstatus", streamstatus);
+            }
+            if(!regionid.equals("")){
+                query.setParameter("regionid",regionid);
+            }
+            List list = query.getResultList();
+            int cnt = 0;
+            if (list!=null && list.size()>0){
+                cnt = Integer.parseInt(list.get(0).toString());
+            }
+            return cnt;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java b/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java
index 0af74ad..0405c16 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java
@@ -93,4 +93,12 @@
     //处理假条
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public boolean updateRestDtl(String startdate,String enddate,String custid,Integer state);
+
+
+     //门禁流水  除去 考勤
+     //根据查询条件获取系统管理员流水数据
+     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+     public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String cardno,
+                                          String custname, String buildingid, String devname, String streamstatus, int pageNo, int pageSize,String regionid);
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
index e330734..f210c31 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
@@ -549,4 +549,9 @@
         }
         return true;
     }
+
+    @Override
+    public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String cardno, String custname, String buildingid, String devname, String streamstatus, int pageNo, int pageSize, String regionid) {
+        return atteClassDao.findSystemTDoordtl(startTranDate, endTranDate, startTranTime, endTranTime, cardno, custname, buildingid, devname, streamstatus, pageNo, pageSize, regionid);
+    }
 }
diff --git a/src/main/resources/templates/apph5/attedtl.html b/src/main/resources/templates/apph5/attedtl.html
new file mode 100644
index 0000000..9d09b55
--- /dev/null
+++ b/src/main/resources/templates/apph5/attedtl.html
@@ -0,0 +1,340 @@
+
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+    <title>考勤流水</title>
+    <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+    <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="/static/libs/layui/css/layui.css" th:href="@{/static/libs/layui/css/layui.css}"/>
+
+    <link rel="stylesheet" href="/static/res/assets/plugins/element-ui/theme-default/index.css"
+          th:href="@{/static/res/assets/plugins/element-ui/theme-default/index.css}"/>
+    <link rel="stylesheet" href="/static/res/assets/css/wxpage.css"
+          th:href="@{/static/res/assets/css/wxpage.css}"/>
+    <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+    <!--<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>-->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/js/vue.min.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>
+
+
+</head>
+
+<body>
+
+<div id="app">
+
+    <div class="page-title" style="text-align:center; font-size: 24px;color: #FF8247;margin-top:7%">考勤流水</div><br>
+
+    <el-button type="primary" @click="showdiv()" style="float: right">筛 选</el-button>
+
+    <div class="row">
+        <div class="col-md-12" style="padding-left: 0px;padding-right: 0px">
+            <div class="box box-primary" style="margin-bottom: 15px">
+                <div class="box-body box-profile">
+                    <template>
+                        <el-table
+                                ref="singleTable"
+                                :data="tableData"
+                                highlight-current-row
+                                @current-change="currRowChange"
+                                stripe
+                                border>
+                            <el-table-column
+                                    prop="custid"
+                                    align="center"
+                                    v-show="false">
+                                <template scope="scope">
+                                    <div class="weui-panel__bd">
+                                        <div class="weui-media-box weui-media-box_text">
+                                            <h4 class="weui-media-box__title" style="display: flex">
+                                                <div style="flex: 1">
+                                                    <span v-if="scope.row.state=='0'" class="layui-badge layui-bg-orange">未打卡</span>
+                                                    <span v-if="scope.row.state=='1'" class="layui-badge layui-bg-green">正常</span>
+                                                    <span v-if="scope.row.state=='2' " class="layui-badge layui-bg-red">异常</span>
+                                                    <span v-if="scope.row.state=='11'" class="layui-badge layui-bg-gray">请假</span>
+                                                    <span v-if="scope.row.state=='12'" class="layui-badge layui-bg-gray">病假</span>
+                                                    <span v-if="scope.row.state=='13'" class="layui-badge layui-bg-gray">年假</span>
+                                                    <span v-if="scope.row.state=='14'" class="layui-badge layui-bg-gray">调休</span>
+                                                    <span v-if="scope.row.state=='15'" class="layui-badge layui-bg-gray">其他</span>
+                                                    <span v-if="scope.row.state=='8'" class="layui-badge layui-bg-gray">外出办公</span>
+                                                    <span v-if="scope.row.state=='9'" class="layui-badge layui-bg-gray">出差</span>
+                                                    <span v-if="scope.row.state=='7'" class="layui-badge layui-bg-gray">补休</span>
+                                                </div>
+                                                <div>
+                                                    {{scope.row.timename}}
+                                                </div>
+                                            </h4>
+                                            <p class="weui-media-box__desc">
+                                            <div class="weui-cell__bd">
+                                                <span style="font-size:14px;color:#999; "></span>
+                                            </div>
+                                            <div style="display: flex;">
+
+                                                <div style="font-size:14px;color:#999;flex: 1">
+
+                                                       {{scope.row.attedate}}
+
+                                                </div>
+                                                <div style="font-size:12px;color:#999;margin-left:10px">
+                                                    <span ><el-button
+                                                            type="warning"
+                                                            @click="detail(scope.row)">详情</el-button></span>
+                                                </div>
+
+
+                                            </div>
+                                            </p>
+                                        </div>
+                                    </div>
+
+                                </template>
+                            </el-table-column>
+                        </el-table>
+
+                          <el-input v-if="dialogFormVisible" id="addmore" type="button" value="加载更多" @click.native="addmore" ></el-input>
+
+                        <div class="clearfix"></div>
+
+
+                    </template>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <el-dialog  :title="updatetitle" :visible.sync="dialogFormVisible1" style="width: 85%" :modal-append-to-body='false'
+                @close="closeDialog('tempform')" size="large">
+        <el-form ref="tempform" :model="tempform" data-parsley-validate
+                 class="el-form-item" style="width: 100%">
+            <el-form-item label="开始日期:" prop="startdate">
+                <div class="el-col el-col-18">
+                    <el-col :span="18">
+                        <el-date-picker
+                                v-model="tempform.startdate" type="date"
+                                placeholder="选择日期" :editable="false"  value-format="yyyyMMdd">
+                        </el-date-picker>
+                    </el-col>
+                </div>
+            </el-form-item>
+            <el-form-item label="结束时间:" prop="enddate">
+                <label slot="label">结束时间:</label>
+                <el-col :span="18">
+                    <el-date-picker
+                            v-model="tempform.enddate" type="date"
+                            placeholder="选择日期" :editable="false"  value-format="yyyyMMdd">
+                    </el-date-picker>
+                </el-col>
+            </el-form-item>
+
+        </el-form>
+        <div slot="footer" style="text-align:center; ">
+            <el-button type="primary" @click="search()">查 询</el-button>
+            <!--<el-button type="primary" @click="closediv()">取 消</el-button>-->
+        </div>
+    </el-dialog>
+
+
+</div>
+
+
+</body>
+
+<script>
+
+
+    var app_vue = new Vue({
+        el: '#app',
+        data: {
+            tableData: [],
+            confName: '1234',
+            currPage: 1,
+            pageSize: 20,
+            totSize: 0,
+            currentRow: null,
+            tempform: {
+               custid:'',
+                startdate:'',
+                enddate:''
+            },
+            sexlist: [],
+            rtypelist: [],
+            custtypelist: [],
+            statuslist: [],
+            bannerHeight: 1000,
+            screenWidth: 0,
+            userId: '',
+            dialogFormVisible: false,
+            dialogFormVisible1: false,
+            updatetitle: '筛选',
+            updatetitle2: '详情',
+            rules: {
+
+            },
+        },
+
+        methods: {
+
+
+
+            closediv: function () {
+                this.dialogFormVisible = false;
+            },
+            currRowChange: function (val) {
+                this.currentRow = val;
+            },
+            indexChange: function (pre, next) {
+                var _self = this;
+                var devIdListTmp = _self.devIdList;
+                _self.selectDevId = devIdListTmp[pre];
+                // console.log(_self.selectDevId)
+
+            },
+            setSize: function () {
+                // 通过浏览器宽度(图片宽度)计算高度
+                this.bannerHeight = this.screenWidth;
+            }, handleSizeChange: function (val) {
+                this.pageSize = val;
+                commonQuery(this,  this.tempform.custid, this.currPage, this.pageSize);
+                //console.log('每页条'+val);
+            }, currPageChange: function (val) {
+                this.currPage = val;
+                commonQuery(this, this.tempform.custid, this.currPage, this.pageSize);
+                //console.log('当前页:'+val);
+            },
+            addmore:function() {
+                this.currPage=this.currPage+1;
+                commonQuery(this,  this.tempform.custid, this.currPage);
+            },
+            detail:function (row) {
+                window.location="[[@{'/app/atte/detailindex?custid='}]]"+'[[${custid}]]'+'&attedate='+row.attedate;
+            },
+            showdiv: function () {
+                this.dialogFormVisible1 = true;
+                this.updatetitle = "筛选"
+            },
+            search:function () {
+                this.currPage = 1;
+                this.tableData=[];
+                commonQuery(this,  this.tempform.custid, this.currPage);
+            },
+            closeDialog:function(formName) {
+                // this.$refs[formName].resetFields();
+                this.dialogFormVisible1 = false;
+            },
+
+
+        },
+        created: function () {
+            var _self = this;
+            // 首次加载时,需要调用一次
+            _self.screenWidth = window.innerWidth;
+            _self.setSize();
+            var confid = '[[${custid}]]';
+            console.log(confid);
+            _self.tempform.custid = confid;
+            this.currPage = 1;
+           commonQuery(this,  this.tempform.custid, this.currPage);
+
+        }
+    })
+
+    // 窗口大小发生改变时,调用一次
+    window.onresize = function () {
+        app_vue.screenWidth = window.innerWidth;
+        app_vue.setSize();
+    }
+
+
+    function commonQuery(_self,custid, pageno) {
+        var startdate=class_Formatdate(_self.tempform.startdate);
+        var enddate=class_Formatdate(_self.tempform.enddate);
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: "[[@{/app/getattedtllist?}]]" + "custid=" + custid + "&pageNo=" + pageno+ "&startdate=" + startdate+ "&enddate=" + enddate ,
+            success: function (info) {
+                console.log(info)
+                _self.totSize = info.page.totalCount;
+                var list=info.page.list;
+                for(var i=0;i<list.length;i++){
+                    var date=list[i].attedate;
+                    if (date == undefined||date.startsWith("n")) {
+                        return "";
+                    }
+                    var year =date.substring(0,4);
+                    var month=date.substring(4,6);
+                    var day=date.substring(6,8);
+                    // var hour=date.substring(8,10);
+                    // var min=date.substring(10,12);
+                    // var sec=date.substring(12,14);
+                    list[i].attedate= year+"-"+month+"-"+day;
+                        _self.tableData.push(list[i]);
+                }
+                if(list.length<10){
+                 _self.dialogFormVisible=false;
+                }else {
+                    _self.dialogFormVisible=true;
+                }
+            }
+        })
+    }
+
+
+
+
+    function class_Formatdate(date){
+        if(date==null||date==''){
+            return '';
+        }
+        var d=new Date(date);
+        var month=d.getMonth() + 1+'';
+        var date=d.getDate()+'';
+        if(month.length==1){
+            month='0'+month;
+        }
+        if(date.length==1){
+            date='0'+date;
+        }
+        var formated=d.getFullYear() + '' + month + '' +date;
+
+        return formated;
+    }
+
+</script>
+
+<style>
+
+    .el-carousel__item h3 {
+        color: #ff3366;
+        font-size: 14px;
+        opacity: 0.75;
+        line-height: 300px;
+        margin: 0;
+        /*background-color:#66cccc;
+        border: 0px solid #e5e5e5;
+        width: 50%;
+        left: 10%;
+        height: 100%;*/
+    }
+    .el-table__header th{
+        height: 0px;
+    }
+    .el-carousel__item:nth-child(2n) {
+        background-color: #ffffff;
+    }
+
+    .el-carousel__item:nth-child(2n+1) {
+        background-color: #ffffff;
+    }
+
+    .el-carousel__item .Carousel {
+        border-bottom: 1px solid #f1f4f8;
+    }
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/detailindex.html b/src/main/resources/templates/apph5/detailindex.html
new file mode 100644
index 0000000..5e72c93
--- /dev/null
+++ b/src/main/resources/templates/apph5/detailindex.html
@@ -0,0 +1,266 @@
+
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+    <title>打卡记录</title>
+    <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+    <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="/static/libs/layui/css/layui.css" th:href="@{/static/libs/layui/css/layui.css}"/>
+
+    <link rel="stylesheet" href="/static/res/assets/plugins/element-ui/theme-default/index.css"
+          th:href="@{/static/res/assets/plugins/element-ui/theme-default/index.css}"/>
+    <link rel="stylesheet" href="/static/res/assets/css/wxpage.css"
+          th:href="@{/static/res/assets/css/wxpage.css}"/>
+    <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+    <!--<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>-->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/js/vue.min.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>
+
+
+</head>
+
+<body>
+
+<div id="app">
+
+    <div class="row">
+        <div class="col-md-12" style="padding-left: 0px;padding-right: 0px">
+            <div class="box box-primary" style="margin-bottom: 15px">
+                <div class="box-body box-profile">
+                    <template>
+                        <el-table
+                                ref="singleTable"
+                                :data="tableData"
+                                highlight-current-row
+                                @current-change="currRowChange"
+                                stripe
+                                border>
+                            <el-table-column
+                                    prop="custid"
+                                    align="center"
+                                    v-show="false">
+                                <template scope="scope">
+                                    <div class="weui-panel__bd">
+                                        <div class="weui-media-box weui-media-box_text">
+                                            <h4 class="weui-media-box__title" style="display: flex">
+                                                <div style="flex: 1">{{scope.row.devicename}}</div>
+                                            </h4>
+                                            <p class="weui-media-box__desc">
+                                            <div class="weui-cell__bd">
+                                                <span style="font-size:14px;color:#999; "></span>
+                                            </div>
+                                            <div style="display: flex;">
+
+                                                <div style="font-size:14px;color:#999;flex: 1">
+
+                                                       {{scope.row.attedate}}
+
+                                                </div>
+
+
+                                            </div>
+                                            </p>
+                                        </div>
+                                    </div>
+
+                                </template>
+                            </el-table-column>
+                        </el-table>
+
+                          <el-input v-if="dialogFormVisible" id="addmore" type="button" value="加载更多" @click.native="addmore" ></el-input>
+
+                        <div class="clearfix"></div>
+
+
+                    </template>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+</div>
+
+
+</body>
+
+<script>
+
+
+    var app_vue = new Vue({
+        el: '#app',
+        data: {
+            tableData: [],
+            confName: '1234',
+            currPage: 1,
+            pageSize: 20,
+            totSize: 0,
+            currentRow: null,
+            tempform: {
+               custid:'',
+                attedate:''
+            },
+            historyform: {
+                custid: '',
+                custname: '',
+                startdate: '',
+                enddate: '',
+                remark: '',
+                rtype: '',
+                status: '',
+                custtype: '',
+                id: ''
+            },
+            sexlist: [],
+            rtypelist: [],
+            custtypelist: [],
+            statuslist: [],
+            bannerHeight: 1000,
+            screenWidth: 0,
+            userId: '',
+            dialogFormVisible: false,
+            updatetitle: '筛选',
+            updatetitle2: '详情',
+            rules: {
+
+            },
+        },
+
+        methods: {
+
+
+
+            closediv: function () {
+                this.dialogFormVisible = false;
+            },
+            currRowChange: function (val) {
+                this.currentRow = val;
+            },
+            indexChange: function (pre, next) {
+                var _self = this;
+                var devIdListTmp = _self.devIdList;
+                _self.selectDevId = devIdListTmp[pre];
+                // console.log(_self.selectDevId)
+
+            },
+            setSize: function () {
+                // 通过浏览器宽度(图片宽度)计算高度
+                this.bannerHeight = this.screenWidth;
+            }, handleSizeChange: function (val) {
+                this.pageSize = val;
+                commonQuery(this,  this.tempform.custid, this.currPage, this.pageSize);
+                //console.log('每页条'+val);
+            }, currPageChange: function (val) {
+                this.currPage = val;
+                commonQuery(this, this.tempform.custid, this.currPage, this.pageSize);
+                //console.log('当前页:'+val);
+            },
+            addmore:function() {
+                this.currPage=this.currPage+1;
+                commonQuery(this,  this.tempform.custid,this.tempform.attedate, this.currPage, this.pageSize);
+            }
+
+
+        },
+        created: function () {
+            var _self = this;
+            // 首次加载时,需要调用一次
+            _self.screenWidth = window.innerWidth;
+            _self.setSize();
+            var confid = '[[${custid}]]';
+            var attedate='[[${attedate}]]';
+            console.log(confid);
+            _self.tempform.custid = confid;
+            _self.tempform.attedate = attedate;
+
+            this.pagesize = 10;
+            this.currPage = 1;
+           commonQuery(this,  this.tempform.custid,this.tempform.attedate, this.currPage, this.pageSize);
+
+
+        }
+    })
+
+    // 窗口大小发生改变时,调用一次
+    window.onresize = function () {
+        app_vue.screenWidth = window.innerWidth;
+        app_vue.setSize();
+    }
+
+
+
+
+
+    function commonQuery(_self,custid,attedate, pageno, pagesize) {
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: "[[@{/app/getdetail?}]]" + "custid=" + custid+ "&attedate=" + attedate + "&pageNo=" + pageno ,
+            success: function (info) {
+                console.log(info)
+
+                _self.totSize = info.page.totalCount;
+                var list=info.page.list;
+                for(var i=0;i<list.length;i++){
+                    var date=list[i].attedate+list[i].attetime;
+                    if (date == undefined||date.startsWith("n")) {
+                        return "";
+                    }
+                    var year =date.substring(0,4);
+                    var month=date.substring(4,6);
+                    var day=date.substring(6,8);
+                    var hour=date.substring(8,10);
+                    var min=date.substring(10,12);
+                    var sec=date.substring(12,14);
+                    list[i].attedate= year+"-"+month+"-"+day+" "+hour+":"+min+":"+sec;
+                        _self.tableData.push(list[i]);
+                }
+                if(list.length<10){
+                 _self.dialogFormVisible=false;
+                }else {
+                    _self.dialogFormVisible=true;
+                }
+            }
+        })
+    }
+
+
+
+</script>
+
+<style>
+    .el-table__header th{
+        height: 0px;
+    }
+    .el-carousel__item h3 {
+        color: #ff3366;
+        font-size: 14px;
+        opacity: 0.75;
+        line-height: 300px;
+        margin: 0;
+        /*background-color:#66cccc;
+        border: 0px solid #e5e5e5;
+        width: 50%;
+        left: 10%;
+        height: 100%;*/
+    }
+
+    .el-carousel__item:nth-child(2n) {
+        background-color: #ffffff;
+    }
+
+    .el-carousel__item:nth-child(2n+1) {
+        background-color: #ffffff;
+    }
+
+    .el-carousel__item .Carousel {
+        border-bottom: 1px solid #f1f4f8;
+    }
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/doordtl.html b/src/main/resources/templates/apph5/doordtl.html
index 43685d9..ec4b8c1 100644
--- a/src/main/resources/templates/apph5/doordtl.html
+++ b/src/main/resources/templates/apph5/doordtl.html
@@ -235,36 +235,15 @@
         })
     }
 
-    function reviewupdate(_self, status, id) {
-        $.ajax({
-            type: "get",
-            dataType: "json",
-            url: "[[@{/app/atte/cancelRest?id=}]]" + id + "&status=" + status,
-            success: function (info) {
-                console.log(info)
-                if (info.errStr != "") {
-                    layer.msg(info.errStr, {icon: 2, time: 2000});
-                } else {
-                    layer.msg('修改成功!', {icon: 1, time: 1000});
-                }
-                commonQuery(_self,  _self.tempform.custid, _self.currPage, _self.pageSize);
-            }
-        })
-    }
 
-    function isCellPhone(val) {
-        if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {
-            return false;
-        } else {
-            return true;
-        }
-    }
 
 
 </script>
 
 <style>
-
+    .el-table__header th{
+        height: 0px;
+    }
     .el-carousel__item h3 {
         color: #ff3366;
         font-size: 14px;
diff --git a/src/main/resources/templates/apph5/leavehistory.html b/src/main/resources/templates/apph5/leavehistory.html
index 5a68b68..a8291f7 100644
--- a/src/main/resources/templates/apph5/leavehistory.html
+++ b/src/main/resources/templates/apph5/leavehistory.html
@@ -267,7 +267,7 @@
                 this.dialogFormVisible = false;
 
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 this.tableData=[];
                 commonQuery(this, this.tempform.rtype, this.tempform.custtype, this.tempform.status, this.tempform.custid, this.currPage, this.pageSize);
@@ -281,7 +281,7 @@
                 this.dialogFormVisible2 = false;
 
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 this.tableData=[];
                 reviewupdate(this, 1,this.tempform.custid, this.historyform.id);
@@ -290,7 +290,7 @@
                 this.dialogFormVisible2 = false;
 
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 this.tableData=[];
                 reviewupdate(this, 2,this.tempform.custid, this.historyform.id);
@@ -417,7 +417,7 @@
                 }
             })
 
-            _self.pagesize = 7;
+            _self.pagesize = 10;
             _self.currPage = 1;
             commonQuery(this, this.tempform.rtype, this.tempform.custtype, this.tempform.status, this.tempform.custid, this.currPage, this.pageSize);
 
@@ -507,7 +507,7 @@
                 for(var i=0;i<list.length;i++){
                     _self.tableData.push(list[i]);
                 }
-                if(list.length<7){
+                if(list.length<10){
                     _self.addmoreVis=false;
                 }else {
                     _self.addmoreVis=true;
@@ -546,7 +546,9 @@
 </script>
 
 <style>
-
+    .el-table__header th{
+        height: 0px;
+    }
     .el-carousel__item h3 {
         color: #ff3366;
         font-size: 14px;
diff --git a/src/main/resources/templates/apph5/myleave.html b/src/main/resources/templates/apph5/myleave.html
index 0f760d3..33e1ee2 100644
--- a/src/main/resources/templates/apph5/myleave.html
+++ b/src/main/resources/templates/apph5/myleave.html
@@ -252,7 +252,7 @@
                 this.dialogFormVisible = false;
                  this.tableData=[];
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 this.tableData=[];
                 commonQuery(this, this.tempform.rtype,  this.tempform.status, this.tempform.custid, this.currPage, this.pageSize);
@@ -391,7 +391,7 @@
                 }
             })
 
-            _self.pagesize = 7;
+            _self.pagesize = 10;
             _self.currPage = 1;
             commonQuery(this, this.tempform.rtype,  this.tempform.status, this.tempform.custid, _self.currPage, _self.pageSize);
 
@@ -457,7 +457,7 @@
                 for(var i=0;i<list.length;i++){
                     _self.tableData.push(list[i]);
                 }
-                if(list.length<7){
+                if(list.length<10){
                     _self.addmoreVis=false;
                 }else {
                     _self.addmoreVis=true;
@@ -495,7 +495,9 @@
 </script>
 
 <style>
-
+    .el-table__header th{
+        height: 0px;
+    }
     .el-carousel__item h3 {
         color: #ff3366;
         font-size: 14px;
diff --git a/src/main/resources/templates/apph5/reviewclock.html b/src/main/resources/templates/apph5/reviewclock.html
index d60d97c..b5c44c1 100644
--- a/src/main/resources/templates/apph5/reviewclock.html
+++ b/src/main/resources/templates/apph5/reviewclock.html
@@ -265,7 +265,7 @@
         methods: {
             saveTemp: function (formName) {
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 // if(this.tempform.attedate==''||this.tempform.attedate==undefined){
                 //     layer.msg("请选择日期!", {icon: 2, time: 2000});
@@ -284,7 +284,7 @@
                 this.dialogFormVisible2 = false;
 
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 this.tableData=[];
                 reviewupdate(this, 1,this.historyform.id);
@@ -293,7 +293,7 @@
                 this.dialogFormVisible2 = false;
 
                 var _that = this;
-                this.pagesize = 7;
+                this.pagesize = 10;
                 this.currPage = 1;
                 this.tableData=[];
                 reviewupdate(this, 2,this.historyform.id);
@@ -392,7 +392,7 @@
                 }
             })
 
-            this.pagesize = 7;
+            this.pagesize = 10;
             this.currPage = 1;
             commonQuery(this, this.currPage, this.pageSize);
 
@@ -468,7 +468,7 @@
                 for(var i=0;i<list.length;i++){
                     _self.tableData.push(list[i]);
                 }
-                if(list.length<7){
+                if(list.length<10){
                     _self.addmoreVis=false;
                 }else {
                     _self.addmoreVis=true;
@@ -507,7 +507,9 @@
 </script>
 
 <style>
-
+    .el-table__header th{
+        height: 0px;
+    }
     .el-carousel__item h3 {
         color: #ff3366;
         font-size: 14px;
diff --git a/src/main/resources/templates/atte/app/re_index.html b/src/main/resources/templates/atte/app/re_index.html
index 6753f76..50e2fcd 100644
--- a/src/main/resources/templates/atte/app/re_index.html
+++ b/src/main/resources/templates/atte/app/re_index.html
@@ -89,6 +89,26 @@
     </a>
 
 </div>
+<div class="weui-cells">
+    <a class="weui-cell weui-cell_access" th:href="@{'/app/doordtl?custid='+${custid}}" >
+        <div class="weui-cell__bd">
+            <p>门禁流水</p>
+        </div>
+        <div  class="weui-cell__ft">
+        </div>
+    </a>
+
+</div>
+
+<div class="weui-cells">
+    <a class="weui-cell weui-cell_access" th:href="@{'/app/attedtl?custid='+${custid}}" >
+        <div class="weui-cell__bd">
+            <p>考勤详情</p>
+        </div>
+        <div  class="weui-cell__ft">
+        </div>
+    </a>
+</div>
 
 
 </body>