diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index 3e6a14a..a8fd46b 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -255,7 +255,6 @@
             eVisitorCheckDtl.setTranstime(time.substring(8));
             String s = StringUtil.getRandomString(18);
             s += time;
-            eVisitorCheckDtl.setSign(s);
             eVisitorCheckDtl.setTotalcount(3);
             eVisitorCheckDtl.setUsecount(0);
             String timeold = time.substring(8);
@@ -270,6 +269,8 @@
             eVisitorCheckDtl.setQrcodetime(lasttime);
             eVisitorCheckDtl.setIsqrcode("1");
             String sign = "SIGNFORVISITOR" + s;
+            eVisitorCheckDtl.setSign(s);
+
             eVisitorCheckDtl.setQrcode(sign);
 
             boolean b = visitormanageService.saveVisitorCheck(eVisitorCheckDtl);
@@ -280,9 +281,9 @@
                 long listid = RedisUtil.incr("seq_cardlist");
                 TNcCardlist tmpCardlist = new TNcCardlist();
                 tmpCardlist.setListid(listid + "");
-                tmpCardlist.setCustid(sign);
+                tmpCardlist.setCustid(s);
                 tmpCardlist.setCustname(postData.getVisitorname());
-                tmpCardlist.setCardno("");
+                tmpCardlist.setCardno(s);
                 tmpCardlist.setBankcardno("");
                 tmpCardlist.setCardphyid("");
                 tmpCardlist.setClosedate(lasttime);
diff --git a/src/main/resources/templates/apph5/askforleave.html b/src/main/resources/templates/apph5/askforleave.html
index 12d4379..0cd70e1 100644
--- a/src/main/resources/templates/apph5/askforleave.html
+++ b/src/main/resources/templates/apph5/askforleave.html
@@ -211,8 +211,10 @@
 
     function saveTempCustomer(_that, that, formName) {
         var token = $("meta[name='_csrf_token']").attr("value");
-        var startdate=that.tempform.startdate;
-        var enddate= that.tempform.enddate;
+        console.log(that.tempform.startdate)
+        console.log(that.tempform.enddate)
+        var startdate=class_Formatdate(that.tempform.startdate);
+        var enddate=class_Formatdate(that.tempform.enddate);
         var rtype=that.tempform.rtype;
         var remark=that.tempform.remark;
         var custid=that.tempform.custid;
@@ -245,6 +247,24 @@
             return 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>
diff --git a/src/main/resources/templates/apph5/leavehistory.html b/src/main/resources/templates/apph5/leavehistory.html
index 23726c8..3221759 100644
--- a/src/main/resources/templates/apph5/leavehistory.html
+++ b/src/main/resources/templates/apph5/leavehistory.html
@@ -51,8 +51,8 @@
                                     <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.custid}}</div>
-                                                <div>{{scope.row.company}}</div>
+                                                <div style="flex: 1">{{scope.row.custname}}</div>
+                                                <div>{{scope.row.deptname}}</div>
                                             </h4>
                                             <p class="weui-media-box__desc">
                                             <div class="weui-cell__bd">
@@ -61,13 +61,19 @@
                                             <div style="display: flex;">
 
                                                 <div style="font-size:14px;color:#999;flex: 1">
-                                                    请假时间{{scope.row.transdate}}--{{scope.row.transdate}}
+                                                    请假时间{{scope.row.startdate}}--{{scope.row.enddate}}
                                                 </div>
                                                 <div style="font-size:14px;color:#999;margin-left:10px">
+                                                    <span v-if="scope.row.status== '0'"><el-button
+                                                            type="warning"@click="editDtl(scope.row)">未审核</el-button></span>
                                                     <span v-if="scope.row.status== '1'"><el-button
-                                                            type="success"@click="editDtl(scope.row)">已批准</el-button></span>
+                                                            type="success"@click="editDtl(scope.row)">已通过</el-button></span>
                                                     <span v-if="scope.row.status== '2'"><el-button
-                                                            type="warning"@click="editDtl(scope.row)">未批准</el-button></span>
+                                                            type="success"@click="editDtl(scope.row)">未通过</el-button></span>
+                                                    <span v-if="scope.row.status== '3'"><el-button
+                                                            type="success"@click="editDtl(scope.row)">取消</el-button></span>
+                                                    <span v-if="scope.row.status== '4'"><el-button
+                                                            type="warning"@click="editDtl(scope.row)">删除</el-button></span>
                                                 </div>
 
                                             </div>
@@ -148,27 +154,33 @@
                :modal-append-to-body='false' @close="closeDialog('historyform')">
         <el-form ref="historyform" class="el-form-item " :model="historyform"
                  :rules="rules" label-width="36%">
-            <el-form-item label="姓名:" prop="custid">
+            <el-form-item label="姓名:" prop="custname">
                 <el-col :span="18">
-                    <el-input v-model="historyform.custid" readonly style="width: 90%;" maxlength="20">
+                    <el-input v-model="historyform.custname" readonly style="width: 90%;" maxlength="20">
                     </el-input>
                 </el-col>
             </el-form-item>
-            <el-form-item label="状态:" prop="status">
+            <el-form-item label="人员类别:" prop="custtypename">
                 <el-col :span="18">
-                    <el-select v-model="historyform.state" style="width: 90%;" clearable filterable placeholder="请选择">
-                        <el-option
-                                v-for="state in statuslist"
-                                :key="state.value"
-                                :label="state.label"
-                                :value="state.value">
-                        </el-option>
-                    </el-select>
+                    <el-input v-model="historyform.custtypename" readonly style="width: 90%;" maxlength="20">
+                    </el-input>
+                </el-col>
+            </el-form-item>
+            <el-form-item label="请假类型:" prop="rtypename">
+                <el-col :span="18">
+                    <el-input v-model="historyform.rtypename" readonly style="width: 90%;" maxlength="20">
+                    </el-input>
+                </el-col>
+            </el-form-item>
+            <el-form-item label="状态:" prop="statusname">
+                <el-col :span="18">
+                    <el-input v-model="historyform.statusname" readonly style="width: 90%;" maxlength="20">
+                    </el-input>
                 </el-col>
             </el-form-item>
             <el-form-item label="备注:" prop="remark">
                 <el-col :span="18">
-                    <el-input type="textarea" v-model="historyform.remark" placeholder="填写备注" readonly>
+                    <el-input type="textarea" style="width: 90%;"  v-model="historyform.remark" placeholder="填写备注" readonly>
                     </el-input>
                 </el-col>
             </el-form-item>
@@ -178,6 +190,8 @@
         <div slot="footer" class="dialog-footer">
             <el-button @click="resetForm('historyform') ">取 消</el-button>
             <el-button type="primary" @click="saveState('historyform')">确 定</el-button>
+            <el-button type="primary" @click="showdiv()" style="float: right">筛 选</el-button>
+
         </div>
     </el-dialog>
     <el-dialog :title="updatetitle" :visible.sync="dialogFormVisible" style="width: 100%"  :modal-append-to-body='false'
@@ -341,16 +355,14 @@
                 this.bannerHeight = this.screenWidth;
             },handleSizeChange:function(val) {
                 this.pageSize=val;
-                time_commonQuery(this,this.timeform.timename,this.currPage,val);
+                commonQuery(this, this.tempform.rtype, this.tempform.custtype, this.tempform.custid, this.currPage, this.pageSize);
                 //console.log('每页条'+val);
             },currPageChange:function(val) {
                 this.currPage=val;
-                time_commonQuery(this,this.timeform.timename,this.currPage,this.pageSize);
+                commonQuery(this, this.tempform.rtype, this.tempform.custtype, this.tempform.custid, this.currPage, this.pageSize);
                 //console.log('当前页:'+val);
-            },
-            currRowChange:function(val) {
-                this.currentRow = val;
-            },
+            }
+
         },
         created: function () {
             var _self = this;
@@ -449,8 +461,32 @@
     }
 
     function dtl_getFillData(_self, row) {
-        _self.historyform.custid = row.custid;
+        _self.historyform.custname = row.custname;
+        _self.historyform.custtype = row.custtype;
+        _self.historyform.custtypename = row.custtypename;
         _self.historyform.status = row.status;
+        if(row.status=="0"){
+            _self.historyform.statusname ="未审核"
+        }else if(row.status=="1"){
+            _self.historyform.statusname ="已通过"
+        }else if(row.status=="2"){
+            _self.historyform.statusname ="未通过"
+        }else if(row.status=="3"){
+            _self.historyform.statusname ="取消"
+        }else{
+            _self.historyform.statusname ="删除"
+        }
+        if(row.rtype=="11"){
+            _self.historyform.rtypename ="事假"
+        }else if(row.rtype=="12"){
+            _self.historyform.rtypename ="病假"
+        }else if(row.rtype=="13"){
+            _self.historyform.rtypename ="年假"
+        }else if(row.rtype=="14"){
+            _self.historyform.rtypename ="调休"
+        }else if(row.rtype=="15"){
+            _self.historyform.rtypename ="其他"
+        }
         _self.historyform.remark = row.remark;
     }
 
@@ -488,7 +524,7 @@
                 console.log(info)
 
                 _self.tableData = info.page.list;
-                _self.totSize=info.page.totalcount;            }
+                _self.totSize=info.page.totalCount;            }
         })
     }
 
