diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java
index d1f2d37..e125f7a 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java
@@ -18,11 +18,12 @@
 
     List<TRoleFunction> findByRoleId(String roleId);
 
-    @Query(value = " select f.id||'' as id ,f.parentid||'' as pid,f.name,case when rf.id is null then 0 else 1 end as checked,case when f.parentid=-1 then 1 else 0 end as open from tb_function f " +
+    @Query(value = "select tt.id,tt.pid,tt.name,tt.checked,tt.open from  " +
+            " ( select f.id||'' as id ,f.parentid||'' as pid,f.name,case when rf.id is null then 0 else 1 end as checked,case when f.parentid=-1 then 1 else 0 end as open from tb_function f " +
             " left join tb_role_function rf on rf.functionid = f.id and rf.roleid=?1  " +
             " union all " +
             " select r.id||'_res' as id,r.function_id||'' as pid,r.name,case when p.id is null then 0 else 1 end as checked,0 as open from tb_resource  r " +
-            " left join tb_permission p on p.resid = r.id and p.roleid=?1 " , nativeQuery = true)
+            " left join tb_permission p on p.resid = r.id and p.roleid=?1 ) tt order by tt.id " , nativeQuery = true)
     List<NodeData> findByRoleIdNative(String roleId);
 
     void deleteByRoleId(String roleId);
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
index 9d250ac..22fadc9 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -61,6 +61,10 @@
   @NotNull
   private String tenantId;
 
+  @Column(name = "thirdadmin", length = 20)
+  @NotNull
+  private String thirdadmin;
+
   @Transient
   private Collection<? extends GrantedAuthority> authorities;  //权限
 
@@ -228,4 +232,12 @@
   public void setTenantId(String tenantId) {
     this.tenantId = tenantId;
   }
+
+  public String getThirdadmin() {
+    return thirdadmin;
+  }
+
+  public void setThirdadmin(String thirdadmin) {
+    this.thirdadmin = thirdadmin;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/tenant/HibernateConfig.java b/src/main/java/com/supwisdom/dlpay/framework/tenant/HibernateConfig.java
index 5070d62..5c28d84 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/tenant/HibernateConfig.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/tenant/HibernateConfig.java
@@ -1,23 +1,10 @@
 package com.supwisdom.dlpay.framework.tenant;
 
-import lombok.extern.slf4j.Slf4j;
-import org.hibernate.MultiTenancyStrategy;
-import org.hibernate.cfg.Environment;
-import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
-import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
-import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.orm.jpa.JpaVendorAdapter;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-
-import javax.sql.DataSource;
 import java.util.HashMap;
 import java.util.Map;
+import javax.sql.DataSource;
+import org.springframework.beans.factory.annotation.Autowired;
+
 
 @Configuration
 @Slf4j
@@ -57,6 +44,7 @@
     em.setPackagesToScan("com.supwisdom");
     em.setJpaPropertyMap(properties);
     em.setJpaVendorAdapter(getJpaVendorAdapter());
+    log.info("setup multi-tenant entityManagerFactor");
     return em;
   }
 
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java b/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
index dc0ef57..3769118 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
@@ -5,6 +5,7 @@
 import com.supwisdom.dlpay.framework.security.OperUtil;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.framework.util.TradeDict;
 import com.supwisdom.dlpay.framework.util.WebConstant;
 import com.supwisdom.dlpay.system.bean.FunctionSearchBean;
 import com.supwisdom.dlpay.system.bean.LogBean;
@@ -95,7 +96,8 @@
     public JsonResult add(@RequestParam("operid") String operid, @RequestParam("opercode") String opercode,
                           @RequestParam("opername") String opername, @RequestParam("sex") String sex,
                           @RequestParam("mobile") String mobile, @RequestParam("email") String email,
-                          @RequestParam("roleId") String roleId, Model map) {
+                          @RequestParam("roleId") String roleId, @RequestParam(value = "thirdadmin", required = false) String thirdadmin,
+                          Model map) {
         if (operatorService.checkOpercodeExists(opercode, operid)) {
             return JsonResult.error("账号重复");
         }
@@ -106,6 +108,7 @@
         operator.setMobile(mobile);
         operator.setEmail(email);
         operator.setSex(sex);
+        operator.setThirdadmin("yes".equalsIgnoreCase(thirdadmin) ? "yes" : "no");
         boolean ret = operatorService.saveOperator(operator, roleId);
         if (ret) {
             return JsonResult.ok("操作成功");
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
index 7a16f3b..cdc4a4a 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
@@ -230,11 +230,11 @@
   @PreAuthorize("hasPermission('/param/load4addapiclient','')")
   public String load4AddApiclientPara(Model model) {
     Map<String, String> roles = new HashMap<>(0);
-    roles.put("ROLE_THIRD_COMMON", "ROLE_THIRD_COMMON");
-    roles.put("ROLE_THIRD_CONSUME", "ROLE_THIRD_CONSUME");
-    roles.put("ROLE_THIRD_DEPOSIT", "ROLE_THIRD_DEPOSIT");
-    roles.put("ROLE_THIRD_SHOP", "ROLE_THIRD_SHOP");
-    roles.put("ROLE_THIRD_ADMIN", "ROLE_THIRD_ADMIN");
+    roles.put("ROLE_THIRD_COMMON", "调用通用接口权限");
+    roles.put("ROLE_THIRD_CONSUME", "调用消费接口权限");
+    roles.put("ROLE_THIRD_DEPOSIT", "调用充值接口权限");
+    roles.put("ROLE_THIRD_SHOP", "调用商户接口权限");
+    roles.put("ROLE_THIRD_ADMIN", "调用用户接口权限");
     model.addAttribute("rolelist", roles);
     return "system/param/apiclientform";
   }
@@ -389,7 +389,7 @@
                                        @RequestParam("state") Boolean state,
                                        @RequestParam(value = "optype", required = false) String optype) {
     if (StringUtil.isEmpty(paytype)
-        || (!StringUtil.isEmpty(optype) && !"charge".equals(optype) && !"consume".equals(optype) && !"anonymous".equals(optype))) {
+        || (!StringUtil.isEmpty(optype) && !"charge".equals(optype) && !"consume".equals(optype) && !"anonymous".equals(optype) && !"reversable".equals(optype) && !"checkable".equals(optype))) {
       return JsonResult.error("参数传递错误");
     }
     try {
@@ -412,7 +412,17 @@
           return JsonResult.error("状态错误，请重新查询后操作");
         }
         tPaytype.setAnonymousEnable(state);
-      } else {
+      } else if("reversable".equals(optype)){
+        if(state.equals(tPaytype.getReversable())){
+          return JsonResult.error("状态错误，请重新查询后操作");
+        }
+        tPaytype.setReversable(state);
+      }else if("checkable".equals(optype)){
+        if(state.equals(tPaytype.getCheckable())){
+          return JsonResult.error("状态错误，请重新查询后操作");
+        }
+        tPaytype.setCheckable(state);
+      }else{
         if (state.equals(tPaytype.getEnable())) {
           return JsonResult.error("状态错误，请重新查询后操作");
         }
@@ -483,6 +493,8 @@
                                @RequestParam(value = "chargeEnable", required = false, defaultValue = "no") String chargeEnable,
                                @RequestParam(value = "consumeEnable", required = false, defaultValue = "no") String consumeEnable,
                                @RequestParam(value = "anonymousEnable", required = false, defaultValue = "no") String anonymousEnable,
+                               @RequestParam(value = "reversable", required = false, defaultValue = "no") String reversable,
+                               @RequestParam(value = "checkable", required = false, defaultValue = "no") String checkable,
                                @RequestParam("paydesc") String paydesc) {
     try {
       TSourceType tPaytype = paramService.getSourceType(paytype);
@@ -497,6 +509,8 @@
       tPaytype.setChargeEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(chargeEnable));
       tPaytype.setConsumeEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(consumeEnable));
       tPaytype.setAnonymousEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(anonymousEnable));
+      tPaytype.setReversable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(reversable));
+      tPaytype.setCheckable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(checkable));
       if (paramService.saveOrUpdateSourceType(tPaytype)) {
         return JsonResult.ok("新增成功");
       } else {
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
index 0842e66..8a5a1c1 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
@@ -101,7 +101,7 @@
       op.setMobile(operator.getMobile());
       op.setOpername(operator.getOpername());
       op.setOpercode(operator.getOpercode());
-      op.setTenantId(operator.getTenantId());
+      op.setThirdadmin(operator.getThirdadmin());
       operatorDao.save(op);
       operRoleDao.deleteByOperid(op.getOperid());
       String[] roleids = roles.split(",");
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
index f45beb7..a0f86cd 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
@@ -178,9 +178,10 @@
   }
 
   @Override
-  @Cacheable(cacheNames = "source_type_cache", key = "#paytype.sourceType")
+  @CacheEvict(cacheNames = "source_type_cache", key = "#paytype.sourceType")
   public boolean saveOrUpdateSourceType(TSourceType paytype) {
     if (null != paytype) {
+      paytype.setTenantid(TenantContext.getTenantSchema());
       sourceTypeDao.save(paytype);
       return true;
     }
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
index 88178c8..3d83ae5 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
@@ -139,6 +139,7 @@
         permission.setTenantId(TenantContext.getTenantSchema());
         permissionDao.save(permission);
       } else {
+        if("-1".equals(func)) continue; //全选排除
         TRoleFunction roleFunction = new TRoleFunction();
         roleFunction.setFunctionId(Integer.valueOf(func));
         roleFunction.setRoleId(roleId);
@@ -153,15 +154,24 @@
   public List<ZTreeNode> findByRoleIdNative(String roleId) {
     List<NodeData> nodeData = roleFunctionDao.findByRoleIdNative(roleId);
     List<ZTreeNode> ret = new ArrayList<>();
+    boolean allChecked = true;
     for (NodeData data : nodeData) {
       ZTreeNode zTreeNode = new ZTreeNode();
       zTreeNode.setpId(data.getPid());
       zTreeNode.setId(data.getId());
       zTreeNode.setName(data.getName());
       zTreeNode.setChecked(data.getChecked() == 0 ? false : true);
+      if (allChecked && !zTreeNode.isChecked()) allChecked = false;
       zTreeNode.setOpen(data.getOpen() == 0 ? false : true);
       ret.add(zTreeNode);
     }
+    ZTreeNode root = new ZTreeNode();
+    root.setId("-1");
+    root.setpId("-99");
+    root.setName("选择全部功能");
+    root.setChecked(allChecked);
+    root.setOpen(true);
+    ret.add(root);
     return ret;
   }
 
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index e434042..37daf22 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -1,8 +1,8 @@
 INSERT INTO tb_tenantconfig(cfgid, tenantid, datacenter_id)
 values ('main', '{tenantid}', '01');
 
-INSERT INTO tb_operator(operid, closedate, opendate, opercode, opername, operpwd, opertype, status, tenantid)
-VALUES ('LOR2IwRkbOjp+sVG9KR2BpHZbwGKepS4', '20500101', '20190101', 'system', '系统管理员', '$2a$10$Ex9xp11.vCaD8D0a7ahiUOKqDij1TcCUBwRAmrqXeDvAkmzLibn4.', 'oper', 'normal', '{tenantid}');
+INSERT INTO tb_operator(operid, closedate, opendate, opercode, opername, operpwd, opertype, status, thirdadmin, tenantid)
+VALUES ('LOR2IwRkbOjp+sVG9KR2BpHZbwGKepS4', '20500101', '20190101', 'system', '系统管理员', '$2a$10$Ex9xp11.vCaD8D0a7ahiUOKqDij1TcCUBwRAmrqXeDvAkmzLibn4.', 'oper', 'normal', 'no', '{tenantid}');
 
 
 INSERT INTO tb_role(roleid, createtime, editflag, lastsaved, rolecode, roledesc, rolename, tenantid)
@@ -367,6 +367,10 @@
 VALUES ('ff8080816b7947ed016b795577370087', 45, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 INSERT INTO  "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
 VALUES ('ff8080816b7947ed016b795577370088', 43, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO  "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816bbb130c016bbb6ea2f700c9', 76, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO  "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816bbb130c016bbb6ea2f600b3', 26, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 
 
 INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
diff --git a/src/main/resources/templates/home/console.html b/src/main/resources/templates/home/console.html
index 94a54a5..63cb260 100755
--- a/src/main/resources/templates/home/console.html
+++ b/src/main/resources/templates/home/console.html
@@ -1,48 +1,5 @@
 <div class="layui-row layui-col-space15">
-    <div class="layui-col-xs6 layui-col-md3">
-        <div class="layui-card">
-            <div class="layui-card-header">
-                访问量<span class="layui-badge layui-bg-blue pull-right">周</span>
-            </div>
-            <div class="layui-card-body">
-                <p class="lay-big-font">9,999,666</p>
-                <p>总计访问量<span class="pull-right">88万 <i class="layui-icon layui-icon-flag"></i></span></p>
-            </div>
-        </div>
-    </div>
-    <div class="layui-col-xs6 layui-col-md3">
-        <div class="layui-card">
-            <div class="layui-card-header">
-                下载<span class="layui-badge layui-bg-black pull-right">月</span>
-            </div>
-            <div class="layui-card-body">
-                <p class="lay-big-font">33,555</p>
-                <p>新下载<span class="pull-right">10% <i class="layui-icon layui-icon-download-circle"></i></span></p>
-            </div>
-        </div>
-    </div>
-    <div class="layui-col-xs6 layui-col-md3">
-        <div class="layui-card">
-            <div class="layui-card-header">
-                Start<span class="layui-badge layui-bg-green pull-right">周</span>
-            </div>
-            <div class="layui-card-body">
-                <p class="lay-big-font">999,666</p>
-                <p>总Start数<span class="pull-right">88万 <i class="layui-icon layui-icon-rate"></i></span></p>
-            </div>
-        </div>
-    </div>
-    <div class="layui-col-xs6 layui-col-md3">
-        <div class="layui-card">
-            <div class="layui-card-header">
-                活跃用户<span class="layui-badge layui-bg-orange pull-right">月</span>
-            </div>
-            <div class="layui-card-body">
-                <p class="lay-big-font">66,666</p>
-                <p>最近一个月<span class="pull-right">15% <i class="layui-icon layui-icon-user"></i></span></p>
-            </div>
-        </div>
-    </div>
+
 </div>
 
 
diff --git a/src/main/resources/templates/home/theme.html b/src/main/resources/templates/home/theme.html
index 67cb12a..392a02a 100755
--- a/src/main/resources/templates/home/theme.html
+++ b/src/main/resources/templates/home/theme.html
@@ -7,8 +7,8 @@
 
 <div class="layui-card-header"><h2 class="header-title">设置主题：</h2></div>
 <div class="layui-card-body layui-text">
-    <a href="/home/setTheme" class="layui-btn" style="background-color: #009688;">默认主题</a>
-    <a href="/home/setTheme?themeName=blue" class="layui-btn layui-btn-normal">蓝色主题</a>
+    <a th:href="@{/home/setTheme}" class="layui-btn" style="background-color: #009688;">默认主题</a>
+    <a th:href="@{/home/setTheme?themeName=blue}" class="layui-btn layui-btn-normal">蓝色主题</a>
     <br><br><br>
   
 </div>
diff --git a/src/main/resources/templates/system/dtl/shopdtl.html b/src/main/resources/templates/system/dtl/shopdtl.html
index 92e7f60..644a6a7 100644
--- a/src/main/resources/templates/system/dtl/shopdtl.html
+++ b/src/main/resources/templates/system/dtl/shopdtl.html
@@ -1,4 +1,4 @@
-<div class="layui-card">
+<div class="layui-card" style="width: 1100px">
     <div class="layui-card-header">
         <h2 class="header-title">商户流水查询</h2>
         <span class="layui-breadcrumb pull-right">
@@ -8,7 +8,7 @@
     </div>
     <div class="layui-card-body">
         <div class="layui-form" lay-filter="shopdtl-search-form">
-            <div class="layui-form-item" style="margin-bottom: 0;">
+            <div class="layui-form-item" style="margin-bottom: 10px;">
                 <div class="layui-inline">
                     <label class="layui-form-label">记账日期</label>
                     <div class="layui-input-inline" style="width: 120px;">
@@ -24,17 +24,9 @@
                     </div>
                 </div>
 
-                <div class="layui-inline" style="width: 298px;">
-                    <label class="layui-form-label">商户名称</label>
-                    <div class="layui-input-block">
-                        <input type="text" name="shopname" id="shopdtl-search-shopname" placeholder="商户名称"
-                               autocomplete="off" class="layui-input" maxlength="20"/>
-                    </div>
-                </div>
-
                 <div class="layui-inline">
                     <label class="layui-form-label">支付方式</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <select name="sourcetype" id="shopdtl-search-sourcetype" class="layui-select">
                             <option value=""> 全部</option>
                             <option th:each="pt:${paytypeList}" th:value="${pt.sourceType}"
@@ -45,7 +37,7 @@
 
                 <div class="layui-inline">
                     <label class="layui-form-label">状态</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <select name="transStatus" id="shopdtl-search-transStatus" class="layui-select">
                             <option value=""> 全部</option>
                             <option th:each="st:${dtlStatusList}" th:value="${st.dictval}"
@@ -55,7 +47,7 @@
                 </div>
             </div>
 
-            <div class="layui-form-item" style="margin-bottom: 0;">
+            <div class="layui-form-item" style="margin-bottom: 10px;">
                 <div class="layui-inline">
                     <label class="layui-form-label">交易日期</label>
                     <div class="layui-input-inline" style="width: 120px;">
@@ -73,7 +65,7 @@
 
                 <div class="layui-inline">
                     <label class="layui-form-label">选择商户</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <input type="text" name="shopaccno" id="shopdtl-search-shopaccno" placeholder="选择商户"
                                lay-filter="shopdtl-search-shopaccno-filter"
                                autocomplete="off" class="layui-input"/>
@@ -82,7 +74,7 @@
 
                 <div class="layui-inline">
                     <label class="layui-form-label">类型</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <select name="tradeflag" id="shopdtl-search-tradeflag" class="layui-select">
                             <option value=""> 全部</option>
                             <option value="in">收入</option>
@@ -90,10 +82,20 @@
                         </select>&emsp;
                     </div>
                 </div>
+            </div>
+
+            <div class="layui-form-item" style="margin-bottom: 0;">
+                <div class="layui-inline" style="margin-right: 20px;">
+                    <label class="layui-form-label">商户名称</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="shopname" id="shopdtl-search-shopname" placeholder="商户名称"
+                               autocomplete="off" class="layui-input" maxlength="20"/>
+                    </div>
+                </div>
 
                 <div class="layui-inline">
                     <label class="layui-form-label">交易码</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <select name="transcode" id="shopdtl-search-transcode" class="layui-select">
                             <option value=""> 全部</option>
                             <option th:each="tc:${transcodeList}" th:value="${tc.transcode}"
diff --git a/src/main/resources/templates/system/dtl/userdtl.html b/src/main/resources/templates/system/dtl/userdtl.html
index a2e9d96..ead6ab2 100644
--- a/src/main/resources/templates/system/dtl/userdtl.html
+++ b/src/main/resources/templates/system/dtl/userdtl.html
@@ -8,7 +8,7 @@
     </div>
     <div class="layui-card-body">
         <div class="layui-form" lay-filter="userdtl-search-form">
-            <div class="layui-form-item" style="margin-bottom: 0;">
+            <div class="layui-form-item" style="margin-bottom: 10px;">
                 <div class="layui-inline">
                     <label class="layui-form-label">记账日期</label>
                     <div class="layui-input-inline" style="width: 120px;">
@@ -26,7 +26,7 @@
 
                 <div class="layui-inline">
                     <label class="layui-form-label">姓名</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="width: 211px;">
                         <input type="text" name="personname" id="userdtl-search-personname" placeholder="姓名"
                                autocomplete="off" class="layui-input" maxlength="20"/>
                     </div>
@@ -34,7 +34,7 @@
 
                 <div class="layui-inline">
                     <label class="layui-form-label">支付方式</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <select name="sourcetype" id="userdtl-search-sourcetype" class="layui-select">
                             <option value=""> 全部</option>
                             <option th:each="pt:${paytypelist}" th:value="${pt.sourceType}"
@@ -42,20 +42,9 @@
                         </select>&emsp;
                     </div>
                 </div>
-
-                <div class="layui-inline">
-                    <label class="layui-form-label">状态</label>
-                    <div class="layui-input-block">
-                        <select name="transStatus" id="userdtl-search-transStatus" class="layui-select">
-                            <option value=""> 全部</option>
-                            <option th:each="st:${dtlStatusList}" th:value="${st.dictval}"
-                                    th:text="${st.dictcaption}"></option>
-                        </select>&emsp;
-                    </div>
-                </div>
             </div>
 
-            <div class="layui-form-item" style="margin-bottom: 0;">
+            <div class="layui-form-item" style="margin-bottom: 10px;">
                 <div class="layui-inline">
                     <label class="layui-form-label">交易日期</label>
                     <div class="layui-input-inline" style="width: 120px;">
@@ -72,16 +61,19 @@
                 </div>
 
                 <div class="layui-inline">
-                    <label class="layui-form-label">市民卡号</label>
-                    <div class="layui-input-block">
-                        <input type="text" name="cardno" id="userdtl-search-cardno" placeholder="市民卡号"
-                               autocomplete="off" class="layui-input"/>
+                    <label class="layui-form-label">状态</label>
+                    <div class="layui-input-block" style="height:38px;">
+                        <select name="transStatus" id="userdtl-search-transStatus" class="layui-select">
+                            <option value=""> 全部</option>
+                            <option th:each="st:${dtlStatusList}" th:value="${st.dictval}"
+                                    th:text="${st.dictcaption}"></option>
+                        </select>&emsp;
                     </div>
                 </div>
 
                 <div class="layui-inline">
                     <label class="layui-form-label">类型</label>
-                    <div class="layui-input-block">
+                    <div class="layui-input-block" style="height: 38px;">
                         <select name="tradeflag" id="userdtl-search-tradeflag" class="layui-select">
                             <option value=""> 全部</option>
                             <option value="in">收入</option>
@@ -89,7 +81,16 @@
                         </select>&emsp;
                     </div>
                 </div>
+            </div>
 
+            <div class="layui-form-item" style="margin-bottom: 0;">
+                <div class="layui-inline" style="margin-right: 20px;">
+                    <label class="layui-form-label">市民卡号</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="cardno" id="userdtl-search-cardno" placeholder="市民卡号"
+                               autocomplete="off" class="layui-input"/>
+                    </div>
+                </div>
                 <div class="layui-inline">
                     <label class="layui-form-label">交易码</label>
                     <div class="layui-input-block">
diff --git a/src/main/resources/templates/system/function/index.html b/src/main/resources/templates/system/function/index.html
index 93d53ac..2e85a8c 100755
--- a/src/main/resources/templates/system/function/index.html
+++ b/src/main/resources/templates/system/function/index.html
@@ -54,7 +54,7 @@
                         }
                     },
                     {
-                        field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
+                        field: 'id', align: 'center', title: '操作', fixed: 'right', width:350, templet: function (item) {
                             if (item.isLeaf == 0) {
                                 return ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ' +
                                     ' <a class="layui-btn layui-btn-normal  layui-btn-xs" lay-event="addsub"><i class="layui-icon layui-icon-set-sm"></i>添加子功能</a> ' +
diff --git a/src/main/resources/templates/system/operator/index.html b/src/main/resources/templates/system/operator/index.html
index 96ba2bc..49e4ab1 100644
--- a/src/main/resources/templates/system/operator/index.html
+++ b/src/main/resources/templates/system/operator/index.html
@@ -31,10 +31,10 @@
 <script type="text/html" id="oper-tpl-state">
     {{# if(d.opercode == 'system') { }}
     <input type="checkbox" lay-filter="oper-tpl-state" value="{{d.operid}}" lay-skin="switch" lay-text="正常|注销"
-           {{d.transStatus=='normal'?'checked':''}} disabled/>
+           {{d.status=='normal'?'checked':''}} disabled/>
     {{# }else{ }}
     <input type="checkbox" lay-filter="oper-tpl-state" value="{{d.operid}}" lay-skin="switch" lay-text="正常|注销"
-           {{d.transStatus=='normal'?'checked':''}} />
+           {{d.status=='normal'?'checked':''}} />
     {{# } }}
 </script>
 
@@ -61,8 +61,8 @@
             page: true,
             cols: [
                 [
-                    {type: 'numbers', fixed: 'left'},
-                    {field: 'opercode', title: '管理员账号', fixed: 'left', sort: true},
+                    {type: 'numbers', fixed: 'left', width: 50},
+                    {field: 'opercode', title: '管理员账号', fixed: 'left',width: 150,  sort: true},
                     {field: 'opername', title: '管理员名称', sort: true},
                     {field: 'transStatus', title: '状态', sort: true, width: 100, templet: '#oper-tpl-state'},
                     {
@@ -78,8 +78,10 @@
                     },
                     {field: 'mobile', sort: true, title: '手机号'},
                     {field: 'email', sort: true, title: '电子邮箱'},
-                    {field: 'opendate', sort: true, width: 120, title: '注册日期'},
-                    {align: 'center', toolbar: '#oper-table-bar', title: '操作', fixed: 'right'}
+                    {field: 'opendate', sort: true, width: 120, title: '注册日期', align: 'center', templet: function (d) {
+                        return admin.formatDate(d.opendate);
+                        }},
+                    {align: 'center', toolbar: '#oper-table-bar', title: '操作',width: 160, fixed: 'right'}
                 ]
             ]
         });
@@ -100,7 +102,7 @@
         // 显示表单弹窗
         var showEditModel = function (data) {
             var title = data ? '修改用户' : '添加用户';
-            admin.putTempData('t_user', data);
+            admin.putTempData('tmp_user', data);
             admin.popupCenter({
                 title: title,
                 path: '[[@{/operator/load4add}]]',
diff --git a/src/main/resources/templates/system/operator/logs.html b/src/main/resources/templates/system/operator/logs.html
index 207b4ea..3f6f6ff 100644
--- a/src/main/resources/templates/system/operator/logs.html
+++ b/src/main/resources/templates/system/operator/logs.html
@@ -9,8 +9,8 @@
     <div class="layui-card-body">
         <div class="layui-form toolbar">
             搜索：
-            <input id="search-value" class="layui-input search-input" type="text" placeholder="输入管理员账号"/>&emsp;
-            <button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+            <input id="search-operlog-value" class="layui-input search-input" type="text" placeholder="输入管理员账号"/>&emsp;
+            <button id="btn-operlog-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
             </button>
         </div>
         <table class="layui-table" id="logtable" lay-filter="logtable"></table>
@@ -30,11 +30,11 @@
             cols: [
                 [
                     {field: 'opername', title: '管理员账号', width: 160,fixed: 'left', sort: true},
-                    {field: 'functionname', title: '所属功能', width: 160,fixed: 'left', sort: true},
-                    {field: 'resname', title: '操作内容', width: 160,fixed: 'left', sort: true},
-                    {field: 'respath', title: '操作路径', width: 200,},
+                    {field: 'functionname', title: '所属功能', sort: true},
+                    {field: 'resname', title: '操作内容', sort: true},
+                    {field: 'respath', title: '操作路径'},
                     {
-                        field: 'logdate', align: 'center', title: '操作时间', fixed: 'right', templet: function (item) {
+                        field: 'logdate', align: 'center', title: '操作时间', width: 200, fixed: 'right', templet: function (item) {
                             return admin.formatDate(item.logdate);
                         }
                     }
@@ -42,8 +42,8 @@
             ]
         });
         // 搜索按钮点击事件
-        $('#btn-search').click(function () {
-            let key = $('#search-value').val();
+        $('#btn-operlog-search').click(function () {
+            let key = $('#search-operlog-value').val();
             table.reload('logtable', {where: {searchkey: key}, page: {curr: 1}});
         });
     });
diff --git a/src/main/resources/templates/system/operator/operator.html b/src/main/resources/templates/system/operator/operator.html
index 682e6c4..0a50551 100644
--- a/src/main/resources/templates/system/operator/operator.html
+++ b/src/main/resources/templates/system/operator/operator.html
@@ -16,9 +16,9 @@
         </div>
     </div>
     <div class="layui-form-item">
-        <label class="layui-form-label" title="用于第三方授权登录，但不能访问本系统资源">授权登录用户</label>
+        <label class="layui-form-label" title="用于第三方授权登录，但不能访问本系统资源" style="width: 90px;">授权登录用户</label>
         <div class="layui-input-block">
-            <input type="checkbox" name="thirdadmin" value="yes"  />
+            <input type="checkbox" name="thirdadmin" lay-skin="switch" lay-text="启用|关闭" value="yes" />
         </div>
     </div>
     <div class="layui-form-item">
@@ -65,6 +65,7 @@
         var formSelects = layui.formSelects;
 
         form.render('radio');
+        form.render('checkbox');
         form.verify({
             "mobile": function (e) {
                 if (null != e && e.length > 0 && !(/^1\d{10}$/.test(e))) {
@@ -107,7 +108,7 @@
 
         var url = '[[@{/operator/add}]]';
         // 回显user数据
-        var user = admin.getTempData('t_user');
+        var user = admin.getTempData('tmp_user');
         if (user) {
             $('input[name="opercode"]').attr('readonly', 'readonly');
             form.val('oper-form', user);
@@ -119,6 +120,7 @@
         }
         // 表单提交事件
         form.on('submit(oper-form-submit)', function (data) {
+            debugger
             layer.load(2);
             var token_name = $("meta[name='_csrf_token']").attr("content");
             var token = $("meta[name='_csrf_token']").attr("value");
diff --git a/src/main/resources/templates/system/operator/setpwd.html b/src/main/resources/templates/system/operator/setpwd.html
index 53f4fef..7b77f60 100644
--- a/src/main/resources/templates/system/operator/setpwd.html
+++ b/src/main/resources/templates/system/operator/setpwd.html
@@ -41,7 +41,7 @@
         $('#cancelBtn').click(function () {
             admin.closeThisTabs()
         });
-        form.render('select');
+
         let url = '[[@{/operator/dosetpwd}]]';
         // 表单提交事件
         form.on('submit(setmypass)', function (data) {
diff --git a/src/main/resources/templates/system/operator/userinfor.html b/src/main/resources/templates/system/operator/userinfor.html
index 1193ef3..7cb1bce 100644
--- a/src/main/resources/templates/system/operator/userinfor.html
+++ b/src/main/resources/templates/system/operator/userinfor.html
@@ -55,7 +55,7 @@
         $('#cancelBtn').click(function () {
             admin.closeThisTabs()
         });
-        form.render('select');
+        form.render('radio');
         let url = '[[@{/operator/updateinfor}]]';
         // 表单提交事件
         form.on('submit(infor-form-submit)', function (data) {
diff --git a/src/main/resources/templates/system/param/apiclientform.html b/src/main/resources/templates/system/param/apiclientform.html
index 94353f7..16ace93 100644
--- a/src/main/resources/templates/system/param/apiclientform.html
+++ b/src/main/resources/templates/system/param/apiclientform.html
@@ -7,7 +7,7 @@
         </div>
     </div>
     <div class="layui-form-item">
-        <label class="layui-form-label">角色</label>
+        <label class="layui-form-label">权限</label>
         <div class="layui-input-block">
             <select name="roles" xm-select="roles" lay-verify="required">
                 <option th:each="role : ${rolelist}" th:value="${role.key}">[[${role.value}]]</option>
diff --git a/src/main/resources/templates/system/param/apiclientpara.html b/src/main/resources/templates/system/param/apiclientpara.html
index d8292d7..9f18342 100644
--- a/src/main/resources/templates/system/param/apiclientpara.html
+++ b/src/main/resources/templates/system/param/apiclientpara.html
@@ -22,14 +22,14 @@
 
 <!-- 表格操作列 -->
 <script type="text/html" id="apiclient-table-bar">
-    <a class="layui-btn layui-btn-xs" lay-event="editRole">修改角色</a>
+    <a class="layui-btn layui-btn-xs" lay-event="editRole">修改</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
 </script>
 
 <!-- 表格状态列 -->
 <script type="text/html" id="api-tpl-state">
     <input type="checkbox" lay-filter="api-tpl-state" value="{{d.appid}}" lay-skin="switch" lay-text="启用|关闭"
-           {{d.transStatus=='normal'?'checked':''}} />
+           {{d.status=='normal'?'checked':''}} />
 </script>
 
 <script>
@@ -47,8 +47,8 @@
                 [
                     {field: 'appid', title: 'APPID', width: 120, align: 'right', fixed: 'left', sort: true},
                     {field: 'secret', title: '密钥', align: 'center', edit: 'text'},
-                    {field: 'transStatus', title: '状态', width: 100, templet: '#api-tpl-state',sort: true},
-                    {field: 'roles', title: '角色', align: 'center' },
+                    {field: 'status', title: '状态', width: 100, templet: '#api-tpl-state',sort: true},
+                    {field: 'roles', title: '权限', align: 'center' },
                     {align: 'center', title: '操作', width: 150, toolbar: '#apiclient-table-bar',  fixed: 'right'}
                 ]
             ]
@@ -68,7 +68,7 @@
         });
 
         function showEditModel(data) {
-            var title = data ? '修改角色' : '新增应用';
+            var title = data ? '修改应用' : '新增应用';
             admin.putTempData('t_appclient', data);
             admin.popupCenter({
                 title: title,
diff --git a/src/main/resources/templates/system/param/paytype.html b/src/main/resources/templates/system/param/paytype.html
index 94ce96a..8c5d102 100644
--- a/src/main/resources/templates/system/param/paytype.html
+++ b/src/main/resources/templates/system/param/paytype.html
@@ -56,6 +56,28 @@
            {{(d.enable==true && d.anonymousEnable==true)?'checked':''}} disabled/>
     {{# } }}
 </script>
+<script type="text/html" id="reversable-tpl-state">
+    {{# if(d.enable == true ){ }}
+    <input type="checkbox" lay-filter="reversable-tpl-state" value="{{d.sourceType}}" lay-skin="switch"
+           lay-text="启用|关闭"
+           {{(d.enable==true && d.reversable==true)?'checked':''}}/>
+    {{# }else{ }}
+    <input type="checkbox" lay-filter="reversable-tpl-state" value="{{d.sourceType}}" lay-skin="switch"
+           lay-text="启用|关闭"
+           {{(d.enable==true && d.reversable==true)?'checked':''}} disabled/>
+    {{# } }}
+</script>
+<script type="text/html" id="checkable-tpl-state">
+    {{# if(d.enable == true ){ }}
+    <input type="checkbox" lay-filter="checkable-tpl-state" value="{{d.sourceType}}" lay-skin="switch"
+           lay-text="启用|关闭"
+           {{(d.enable==true && d.checkable==true)?'checked':''}}/>
+    {{# }else{ }}
+    <input type="checkbox" lay-filter="checkable-tpl-state" value="{{d.sourceType}}" lay-skin="switch"
+           lay-text="启用|关闭"
+           {{(d.enable==true && d.checkable==true)?'checked':''}} disabled/>
+    {{# } }}
+</script>
 
 <script>
     layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
@@ -94,6 +116,20 @@
                         sort: true
                     },
                     {
+                        field: 'reversable',
+                        title: '能否冲正',
+                        align: 'center',
+                        templet: '#reversable-tpl-state',
+                        sort: true
+                    },
+                    {
+                        field: 'checkable',
+                        title: '是否清算',
+                        align: 'center',
+                        templet: '#anonymousenable-tpl-state',
+                        sort: true
+                    },
+                    {
                         align: 'center', title: '操作', width: 150, fixed: 'right', templet: function (item) {
                             if (item.sourceType != 'balance') {
                                 return '<a class="layui-btn layui-btn-xs" lay-event="config">配置</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
@@ -167,6 +203,16 @@
             updatePaytypeState(obj, "anonymous", token);
         });
 
+        form.on('switch(reversable-tpl-state)', function (obj) {
+            var token = $("meta[name='_csrf_token']").attr("value");
+            updatePaytypeState(obj, "reversable", token);
+        });
+
+        form.on('switch(checkable-tpl-state)', function (obj) {
+            var token = $("meta[name='_csrf_token']").attr("value");
+            updatePaytypeState(obj, "checkable", token);
+        });
+
 
         function updatePaytypeState(obj, optype, token) {
             admin.go('[[@{/param/updatepaytypestate}]]', {
diff --git a/src/main/resources/templates/system/param/paytypeform.html b/src/main/resources/templates/system/param/paytypeform.html
index e3a2d5a..1ec0c3d 100644
--- a/src/main/resources/templates/system/param/paytypeform.html
+++ b/src/main/resources/templates/system/param/paytypeform.html
@@ -41,6 +41,20 @@
         </div>
     </div>
 
+    <div class="layui-form-item">
+        <label class="layui-form-label">能否冲正</label>
+        <div class="layui-input-block">
+            <input name="reversable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">是否清算</label>
+        <div class="layui-input-block">
+            <input name="checkable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+        </div>
+    </div>
+
     <div class="layui-form-item model-form-footer">
         <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
         <button class="layui-btn" lay-filter="form-submit" lay-submit  id="submitbtn">保存</button>
diff --git a/src/main/resources/templates/system/role/func.html b/src/main/resources/templates/system/role/func.html
index aeca844..f3ebd5e 100755
--- a/src/main/resources/templates/system/role/func.html
+++ b/src/main/resources/templates/system/role/func.html
@@ -54,6 +54,7 @@
             let treeObj = $.fn.zTree.getZTreeObj("funclist");
             let nodes = treeObj.getCheckedNodes(true);
             for (let i = 0; i < nodes.length; i++) {
+
                 ids.push(nodes[i].id);//存功能ID
             }
             if (ids.length < 1) {
diff --git a/src/main/resources/templates/system/role/index.html b/src/main/resources/templates/system/role/index.html
index f92912f..535ecf3 100644
--- a/src/main/resources/templates/system/role/index.html
+++ b/src/main/resources/templates/system/role/index.html
@@ -31,11 +31,11 @@
             page: true,
             cols: [
                 [
-                    {field: 'roleName', title: '角色名称', width: 160,fixed: 'left', sort: true},
-                    {field: 'roleCode', title: '角色代码', width: 160,fixed: 'left', sort: true},
+                    {field: 'roleName', title: '角色名称', width: 200,fixed: 'left', sort: true},
+                    {field: 'roleCode', title: '角色代码', width: 200,fixed: 'left', sort: true},
                     {field: 'roleDesc', title: '描述'},
                     {
-                        field: 'roleId', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
+                        field: 'roleId', align: 'center', title: '操作', width: 300, fixed: 'right', templet: function (item) {
                             let html =  ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ' +
                                 ' <a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="addfunc"><i class="layui-icon layui-icon-set-sm"></i>分配功能</a> ';
                             if(item.editflag===1){
diff --git a/src/main/resources/templates/system/shop/config.html b/src/main/resources/templates/system/shop/config.html
index b80ec4f..56400e7 100644
--- a/src/main/resources/templates/system/shop/config.html
+++ b/src/main/resources/templates/system/shop/config.html
@@ -13,9 +13,8 @@
                     <div class="layui-card-header">
                         商户树<span style="font-size: 12px;">（双击结算商户查询）</span>
                     </div>
-                    <div class="layui-card-body layui-show"
-                         style="background-color: #D7F9F7;max-height: 560px;overflow:auto;">
-                        <ul id="shopacctree" class="ztree"></ul>
+                    <div class="layui-card-body layui-show">
+                        <ul id="shopacctree" class="ztree" style="background-color: #D7F9F7;max-height: 560px;overflow:auto;"></ul>
                     </div>
                 </div>
             </div>
diff --git a/src/main/resources/templates/system/shop/index.html b/src/main/resources/templates/system/shop/index.html
index 000ef7d..5e441ae 100644
--- a/src/main/resources/templates/system/shop/index.html
+++ b/src/main/resources/templates/system/shop/index.html
@@ -10,9 +10,8 @@
         <div class="layui-row">
             <div class="layui-col-xs5 layui-col-md3">
                 <div class="layui-card">
-                    <div class="layui-card-body layui-show"
-                         style="background-color: #D7F9F7;max-height: 560px;overflow:auto;">
-                        <ul id="shoptree" class="ztree"></ul>
+                    <div class="layui-card-body layui-show">
+                        <ul id="shoptree" class="ztree" style="background-color: #D7F9F7;max-height: 560px;overflow:auto;"></ul>
                     </div>
                 </div>
             </div>
diff --git a/src/main/resources/templates/system/user/add.html b/src/main/resources/templates/system/user/add.html
index e2f2c81..d04999d 100755
--- a/src/main/resources/templates/system/user/add.html
+++ b/src/main/resources/templates/system/user/add.html
@@ -19,7 +19,7 @@
         <label class="layui-form-label">证件类型*</label>
         <div class="layui-input-block">
             <select name="idtype" id="idtype" lay-verify="required">
-                <option th:each="bean : ${idtypes}" th:value="${bean.idtype}">[[${bean.typename}]]</option>
+                <option th:each="bean : ${idtypeList}" th:value="${bean.dictval}">[[${bean.dictcaption}]]</option>
             </select>
         </div>
     </div>
diff --git a/src/main/resources/templates/system/user/index.html b/src/main/resources/templates/system/user/index.html
index 8e13364..5507955 100644
--- a/src/main/resources/templates/system/user/index.html
+++ b/src/main/resources/templates/system/user/index.html
@@ -10,7 +10,8 @@
         <div class="layui-form toolbar">
             搜索：
             <input id="search-value-user" class="layui-input search-input" type="text" placeholder="输入用户名称"/>&emsp;
-            <button id="btn-search-user" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+            <button id="btn-search-user" class="layui-btn icon-btn" data-type="search"><i
+                    class="layui-icon">&#xe615;</i>搜索
             </button>
             <button id="btn-add-user" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>添加用户
             </button>
@@ -31,44 +32,45 @@
             page: true,
             cols: [
                 [
-                    {field: 'name', title: '名称', width: 80, fixed: 'left', sort: true},
-                    {
-                        field: 'sex', title: '性别', fixed: 'left', width: 80,
-                        templet: function (item) {
+                    {field: 'name', title: '名称', width: 150, fixed: 'left', sort: true},
+                    {field: 'sex', title: '性别', align: 'center', width: 80, templet: function(item){
                             return getTempDictValue('sexList', item.sex);
-                        }
-                    },
+                        }},
                     {
-                        field: 'status', title: '状态', fixed: 'left', width: 80, templet: function (item) {
-                            let desc = getTempDictValue('accountStatusList', item.status)
+                        field: 'status', title: '状态', align: 'center',  width: 80, templet: function (item) {
+                            let desc = getTempDictValue('accountStatusList', item.status);
                             if (item.status === 'normal') {
-                                return '<span class="layui-badge layui-bg-green">' + desc + '</span>'
+                                return '<span class="layui-badge layui-bg-green">' + desc + '</span>';
                             } else if (item.status === 'closed') {
-                                return '<span class="layui-badge">' + desc + '</span>'
+                                return '<span class="layui-badge">' + desc + '</span>';
                             } else if (item.status === 'locked') {
-                                return '<span class="layui-badge layui-bg-orange">' + desc + '</span>'
+                                return '<span class="layui-badge layui-bg-orange">' + desc + '</span>';
                             } else {
-                                return '异常'
+                                return '异常';
                             }
                         }
                     },
                     {
-                        field: 'idtype', align: 'center', width: 100, title: '证件类型', fixed: 'left',
+                        field: 'idtype', align: 'center', width: 100, title: '证件类型',
                         templet: function (item) {
                             return getTempDictValue('idtypeList', item.idtype);
                         }
                     },
-                    {field: 'idno', title: '证件号', width: 120, fixed: 'left', sort: true},
-                    {field: 'email', title: '邮箱', width: 100, fixed: 'left', sort: true},
-                    {field: 'mobile', title: '手机', width: 120, fixed: 'left', sort: true},
-                    {field: 'tel', title: '电话', width: 100, fixed: 'left', sort: true},
-                    {field: 'addr', title: '地址', width: 200, fixed: 'left', sort: true},
-                    {field: 'lastsaved', title: '最后修改时间', width: 140, fixed: 'left', sort: true},
+                    {field: 'idno', title: '证件号', width: 120, align: 'center', sort: true},
+                    {field: 'email', title: '邮箱', width: 100, align: 'center',  sort: true},
+                    {field: 'mobile', title: '手机', width: 120, align: 'center', sort: true},
+                    {field: 'tel', title: '电话', align: 'center'},
+                    {field: 'addr', title: '地址', align: 'center' },
                     {
-                        field: 'userid',
+                        field: 'lastsaved', title: '最后修改时间', width: 180, sort: true, templet: function (d) {
+                            return admin.formatDate(d.lastsaved);
+                        }
+                    },
+                    {
                         align: 'center',
                         title: '操作',
                         fixed: 'right',
+                        width: 170,
                         templet: function (item) {
                             let html = ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ';
                             html += '<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>';
