操作员维护功能大体实现
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 76433cf..75f4f18 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -14,8 +14,8 @@
 public class TOperator implements UserDetails {
   private static final long serialVersionUID = 2148742269021236587L;
   @Id
-  @GenericGenerator(name = "idGenerator", strategy = "uuid")
-  @GeneratedValue(generator = "idGenerator")
+  /*@GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")*/
   @Column(name = "OPERID", nullable = false, length = 32)
   private String operid;
 
@@ -53,8 +53,11 @@
   private String regionid;
   @Transient
   private String roleids;
+  @Column(name = "FOPERID",length = 32)
+  private String foperid;
+  @Column(name= "REALNAME",length = 16)
+  private String realname;
 
-  private TOperator father;
 
   @Transient
   private Collection<? extends GrantedAuthority> authorities;  //权限
@@ -67,21 +70,25 @@
     this.opername = opername;
   }
 
-  public TOperator(String opercode, String opertype, String opername, String operpwd, String status, String sex, String mobile, String email, String opendate, String closedate, Collection<? extends GrantedAuthority> authorities) {
-    this.opercode = opercode;
-    this.opertype = opertype;
-    this.opername = opername;
-    this.operpwd = operpwd;
-    this.status = status;
-    this.sex = sex;
-    this.mobile = mobile;
-    this.email = email;
-    this.opendate = opendate;
-    this.closedate = closedate;
-    this.authorities = authorities;
-  }
+    public TOperator(String opercode, String opertype, String opername, String operpwd, String status, String sex, String mobile, String email, String opendate, String closedate, String regionid, String roleids, String foperid, String realname, Collection<? extends GrantedAuthority> authorities) {
+        this.opercode = opercode;
+        this.opertype = opertype;
+        this.opername = opername;
+        this.operpwd = operpwd;
+        this.status = status;
+        this.sex = sex;
+        this.mobile = mobile;
+        this.email = email;
+        this.opendate = opendate;
+        this.closedate = closedate;
+        this.regionid = regionid;
+        this.roleids = roleids;
+        this.foperid = foperid;
+        this.realname = realname;
+        this.authorities = authorities;
+    }
 
-  public String getOperid() {
+    public String getOperid() {
     return operid;
   }
 
@@ -216,14 +223,20 @@
     this.roleids = roleids;
   }
 
-  @ManyToOne(fetch = FetchType.EAGER)
-  @JoinColumn(name = "foperid")
-  public TOperator getFather() {
-    return father;
+  public String getFoperid() {
+    return foperid;
   }
 
-  public void setFather(TOperator father) {
-    this.father = father;
+  public void setFoperid(String foperid) {
+    this.foperid = foperid;
+  }
+
+  public String getRealname() {
+    return realname;
+  }
+
+  public void setRealname(String realname) {
+    this.realname = realname;
   }
 
   public String getRegionid() {
@@ -233,4 +246,5 @@
   public void setRegionid(String regionid) {
     this.regionid = regionid;
   }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/OperatorBean.java b/src/main/java/com/supwisdom/dlpay/system/bean/OperatorBean.java
new file mode 100644
index 0000000..a3e7b84
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/bean/OperatorBean.java
@@ -0,0 +1,85 @@
+package com.supwisdom.dlpay.system.bean;

+

+public class OperatorBean {

+    private String operid;

+    private String opername;

+    private String opercode;

+    private String opertype;

+    private String roleid;

+    private String mobile;

+    private String email;

+    private String realname;

+    private String regionid;

+

+    public String getOperid() {

+        return operid;

+    }

+

+    public void setOperid(String operid) {

+        this.operid = operid;

+    }

+

+    public String getOpername() {

+        return opername;

+    }

+

+    public void setOpername(String opername) {

+        this.opername = opername;

+    }

+

+    public String getOpercode() {

+        return opercode;

+    }

+

+    public void setOpercode(String opercode) {

+        this.opercode = opercode;

+    }

+

+    public String getOpertype() {

+        return opertype;

+    }

+

+    public void setOpertype(String opertype) {

+        this.opertype = opertype;

+    }

+

+    public String getRoleid() {

+        return roleid;

+    }

+

+    public void setRoleid(String roleid) {

+        this.roleid = roleid;

+    }

+

+    public String getMobile() {

+        return mobile;

+    }

+

+    public void setMobile(String mobile) {

+        this.mobile = mobile;

+    }

+

+    public String getEmail() {

+        return email;

+    }

+

+    public void setEmail(String email) {

+        this.email = email;

+    }

+

+    public String getRealname() {

+        return realname;

+    }

+

+    public void setRealname(String realname) {

+        this.realname = realname;

+    }

+

+    public String getRegionid() {

+        return regionid;

+    }

+

+    public void setRegionid(String regionid) {

+        this.regionid = regionid;

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java b/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java
new file mode 100644
index 0000000..9417cb4
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java
@@ -0,0 +1,99 @@
+package com.supwisdom.dlpay.system.bean;

+

+import javax.persistence.Entity;

+import javax.persistence.Id;

+

+@Entity

+public class OperatorListBean {

+    @Id

+    private String operid;

+    private String realname;

+    private String opername;

+    private String opertype;

+    private String roleid;

+    private String rolename;

+    private String regionid;

+    private String regionname;

+    private String mobile;

+    private String foperid;

+

+    public String getOperid() {

+        return operid;

+    }

+

+    public void setOperid(String operid) {

+        this.operid = operid;

+    }

+

+    public String getRealname() {

+        return realname;

+    }

+

+    public void setRealname(String realname) {

+        this.realname = realname;

+    }

+

+    public String getOpername() {

+        return opername;

+    }

+

+    public void setOpername(String opername) {

+        this.opername = opername;

+    }

+

+    public String getOpertype() {

+        return opertype;

+    }

+

+    public void setOpertype(String opertype) {

+        this.opertype = opertype;

+    }

+

+    public String getRoleid() {

+        return roleid;

+    }

+

+    public void setRoleid(String roleid) {

+        this.roleid = roleid;

+    }

+

+    public String getRolename() {

+        return rolename;

+    }

+

+    public void setRolename(String rolename) {

+        this.rolename = rolename;

+    }

+

+    public String getRegionid() {

+        return regionid;

+    }

+

+    public void setRegionid(String regionid) {

+        this.regionid = regionid;

+    }

+

+    public String getRegionname() {

+        return regionname;

+    }

+

+    public void setRegionname(String regionname) {

+        this.regionname = regionname;

+    }

+

+    public String getMobile() {

+        return mobile;

+    }

+

+    public void setMobile(String mobile) {

+        this.mobile = mobile;

+    }

+

+    public String getFoperid() {

+        return foperid;

+    }

+

+    public void setFoperid(String foperid) {

+        this.foperid = foperid;

+    }

+}

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 b1599d1..3d063fb 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
@@ -3,23 +3,32 @@
 import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.framework.domain.*;
 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.WebConstant;
+import com.supwisdom.dlpay.framework.util.*;
 import com.supwisdom.dlpay.system.bean.FunctionSearchBean;
 import com.supwisdom.dlpay.system.bean.LogBean;
+import com.supwisdom.dlpay.system.bean.OperatorBean;
 import com.supwisdom.dlpay.system.bean.OperatorSearchBean;
+import com.supwisdom.dlpay.system.domain.TDictionaryId;
+import com.supwisdom.dlpay.system.domain.TRegion;
+import com.supwisdom.dlpay.system.page.Pagination;
+import com.supwisdom.dlpay.system.service.ManagerService;
 import com.supwisdom.dlpay.system.service.OperatorService;
 import com.supwisdom.dlpay.system.service.RoleService;
+import com.supwisdom.dlpay.system.service.SystemService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 @Controller
@@ -218,4 +227,190 @@
         operatorService.saveOperator(operator);
         return JsonResult.ok("密码修改成功,请重新登录");
     }
+
+    @Autowired
+    ManagerService managerService;
+    @Autowired
+    SystemService systemService;
+
+
+    @RequestMapping("/operatorindex")
+    public String operatorindex(){
+        return "system/operator";
+    }
+
+    /**
+     * 根据查询条件分页获取管理员列表
+     * @param request
+     * @param response
+     * @param pageNo
+     * @param pageSize
+     * @param operid
+     * @param realname
+     * @param operUser
+     * @return
+     */
+    @RequestMapping("/loadOperatorList")
+    @ResponseBody
+    public Map loadRegionList(HttpServletRequest request,
+                              HttpServletResponse response,
+                              @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,
+                              @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,
+                              @RequestParam(value = "operid", required = false, defaultValue = "") String operid,
+                              @RequestParam(value = "realname", required = false, defaultValue = "") String realname,
+                              @AuthenticationPrincipal TOperator operUser){
+        Map map = new HashMap();
+        try{
+            Pagination page = managerService.getOperatorList(operid, realname, pageNo, pageSize);
+            map.put("PageResult", page);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return map;
+    }
+
+    /**
+     * 删除注销管理员
+     * @param operid
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping("/deleteOperator")
+    @ResponseBody
+    public Map deleteOperator(@RequestParam(value = "operid") String operid,
+                            HttpServletRequest request, HttpServletResponse response){
+        Map map = new HashMap();
+        String message="";
+        try{
+            boolean flag = managerService.deleteOperatorById(operid);
+            if (flag==false){
+                message="删除区域失败!";
+            }
+
+        }catch (Exception e){
+            e.printStackTrace();
+            message="删除区域出错!";
+        }
+        map.put("message", message);
+        return map;
+    }
+
+    /**
+     * 获取管理员填充数据
+     * @param operid
+     * @param operUser
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/loadOperatorForUpdate")
+    public Map loadOperatorForUpdate(@RequestParam(value = "operid") String operid,
+                                   @AuthenticationPrincipal TOperator operUser){
+        Map map = new HashMap();
+        try {
+            TOperator operator = managerService.getOperatorById(operid);
+            map.put("operator",operator);
+            if (operator!=null){
+                TRole operRole = managerService.getOperRoleById(operid);
+                map.put("operatorroleid", operRole.getRoleId());
+            }
+            List<TDictionaryId> opertypes = systemService.findOpertypes(operUser.getOpertype());
+            map.put("opertypes", opertypes);
+
+            List<TRole> roles = roleService.findAllRoles();
+            map.put("roles", roles);
+
+            List<TRegion> regions = systemService.getAllRegions();
+            map.put("regions", regions);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return map;
+    }
+
+    /**
+     * 保存操作员
+     * @param postData
+     * @param operUser
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/addOperator", method = {RequestMethod.POST})
+    public Map addOperator (@RequestBody OperatorBean postData,@AuthenticationPrincipal TOperator operUser){
+        Map map = new HashMap();
+        try{
+            TOperator operatorById = managerService.getOperatorById(postData.getOperid());
+            if (operatorById!=null){
+                map.put("errStr", "操作员编号已经存在,请修改!");
+                return map;
+            }
+            TOperator operator = new TOperator();
+            operator.setOperid(postData.getOperid());
+            operator.setOpername(postData.getOpername());
+            operator.setOpercode(postData.getOpercode());
+            operator.setOpertype(postData.getOpertype());
+            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+            operator.setOperpwd(encoder.encode(WebConstant.OPERPWD_DEFAULT));
+            operator.setStatus(TradeDict.STATUS_NORMAL);
+            operator.setEmail(postData.getEmail());
+            operator.setMobile(postData.getMobile());
+            operator.setOpendate(DateUtil.getNow("yyyyMMdd"));
+            operator.setRealname(postData.getRealname());
+            operator.setFoperid(operUser.getOperid());
+            operator.setRegionid(postData.getRegionid());
+
+            managerService.saveOperator(operator);
+
+            TOperRole operRole = new TOperRole();
+            operRole.setOperid(postData.getOperid());
+            operRole.setRoleId(postData.getRoleid());
+            managerService.saveOperRole(operRole);
+            map.put("errStr", "");
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("errStr", "保存操作员失败!");
+        }
+        return map;
+    }
+
+    /**
+     * 修改操作员
+     * @param postData
+     * @param operUser
+     * @return
+     */
+    @RequestMapping(value = "/updateOperator", method = {RequestMethod.POST})
+    @ResponseBody
+    public Map updateOperator(@RequestBody OperatorBean postData,@AuthenticationPrincipal TOperator operUser){
+        Map map = new HashMap();
+        try {
+            if (postData == null) {
+                map.put("errStr", "请先选择操作员,然后再修改!");
+                return map;
+            }
+
+            TOperator operator = managerService.getOperatorById(postData.getOperid());
+            operator.setOpername(postData.getOpername());
+            operator.setOpercode(postData.getOpercode());
+            operator.setOpertype(postData.getOpertype());
+            operator.setEmail(postData.getEmail());
+            operator.setMobile(postData.getMobile());
+            operator.setOpendate(DateUtil.getNow("yyyyMMdd"));
+            operator.setRealname(postData.getRealname());
+            operator.setFoperid(operUser.getOperid());
+            operator.setRegionid(postData.getRegionid());
+
+            TOperRole operRole = managerService.getTOperRoleByOperid(postData.getOperid());
+            operRole.setRoleId(postData.getRoleid());
+
+            managerService.updateOperator(operator);
+            managerService.updateTOperRole(operRole);
+            map.put("errStr", "");
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("errStr", "操作员修改失败!");
+        }
+        return map;
+    }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
index a978e81..8b932fd 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -137,7 +137,7 @@
         } catch (Exception e) {

             e.printStackTrace();

             map.put("errStr", "保存字典失败");

-            logger.error("保存字典失败:" + e.getMessage());

+            logger.error("保存字典失败:");

         }

         return map;

     }

@@ -193,7 +193,7 @@
         } catch (Exception e) {

             e.printStackTrace();

             map.put("errStr", "修改字典失败");

-            logger.error("修改字典失败:" + e.getMessage());

+            logger.error("修改字典失败:");

         }

         return map;

     }

@@ -332,7 +332,7 @@
             map.put("errStr", "");

         }catch (Exception e){

             e.printStackTrace();

-            map.put("errStr", "保存区域失败!"+e.getMessage());

+            map.put("errStr", "保存区域失败!");

         }

         return map;

     }

@@ -370,7 +370,7 @@
             map.put("errStr", "");

         }catch (Exception e){

             e.printStackTrace();

-            map.put("errStr", "区域修改失败!"+e.getMessage());

+            map.put("errStr", "区域修改失败!");

         }

         return map;

     }

@@ -537,7 +537,7 @@
             map.put("errStr", "");

         }catch (Exception e){

             e.printStackTrace();

-            map.put("errStr", "楼栋修改失败"+e.getMessage());

+            map.put("errStr", "楼栋修改失败");

         }

         return map;

     }

@@ -566,7 +566,7 @@
 

         }catch (Exception e){

             e.printStackTrace();

-            message="删除楼栋错误"+e.getMessage();

+            message="删除楼栋错误";

         }

         map.put("message", message);

         return map;

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/DictionaryDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/DictionaryDao.java
index 5c805df..e2cc53e 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/DictionaryDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/DictionaryDao.java
@@ -19,6 +19,8 @@
 

     public List<TDictionaryId> findTDictionaryByType(int type);

 

+    public List<TDictionaryId> findOpertypes(String opertype);

+

     public List<TDictionaryId> findByType(int type, String dicVal);

 

     public TDictionary updateDictionary(String dicttype, String dicttypename, String dictval, String dictcaption, String oriengaltype, String oriengalval);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
new file mode 100644
index 0000000..a594e37
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
@@ -0,0 +1,27 @@
+package com.supwisdom.dlpay.system.dao;

+

+import com.supwisdom.dlpay.framework.domain.TOperRole;

+import com.supwisdom.dlpay.framework.domain.TOperator;

+import com.supwisdom.dlpay.framework.domain.TRole;

+import com.supwisdom.dlpay.system.page.Pagination;

+

+public interface ManagerDao {

+

+    Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize);

+

+    boolean updateOperatorStatusById(String operid);

+

+    TOperator getOperatorById(String operid);

+

+    TRole getOperRoleById(String operid);

+

+    boolean saveOperator(TOperator bean);

+

+    boolean updateOperator(TOperator bean);

+

+    boolean saveOperRole(TOperRole bean);

+

+    TOperRole getTOperRoleByOperid(String operid);

+

+    boolean updateTOperRole(TOperRole bean);

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
index 5887a6a..ca8e547 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
@@ -13,6 +13,7 @@
 import javax.persistence.EntityManager;

 import javax.persistence.PersistenceContext;

 import javax.persistence.Query;

+import javax.persistence.TypedQuery;

 import java.util.ArrayList;

 import java.util.List;

 

@@ -128,6 +129,24 @@
 

     @Transactional

     @Override

+    public List<TDictionaryId> findOpertypes(String opertype) {

+        String sql = "select bean.id from TDictionary bean where bean.id.dicttype=1";

+        if (opertype.equals("P")){

+            sql +=" and bean.id.dictval<>'P'";

+        }else if (opertype.equals("S")){

+            sql +=" and bean.id.dictval<>'P' and bean.id.dictval<>'S'";

+        }else if (opertype.equals("H")){

+            sql +=" and bean.id.dictval<>'P' and bean.id.dictval<>'S' and bean.id.dictval<>'H'";

+        }else {

+            return null;

+        }

+        TypedQuery<TDictionaryId> query = entityManager.createQuery(sql, TDictionaryId.class);

+        List<TDictionaryId> list = query.getResultList();

+        return list;

+    }

+

+    @Transactional

+    @Override

     public List<TDictionaryId> findByType(int type, String dicVal) {

         String sql = "select bean.id from TDictionary bean where bean.id.dicttype=?1 and bean.id.dictval = ?2";

         Query query = entityManager.createQuery(sql,TDictionaryId.class);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
new file mode 100644
index 0000000..5c2b501
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
@@ -0,0 +1,203 @@
+package com.supwisdom.dlpay.system.dao.impl;

+

+import com.supwisdom.dlpay.framework.domain.TOperRole;

+import com.supwisdom.dlpay.framework.domain.TOperator;

+import com.supwisdom.dlpay.framework.domain.TRole;

+import com.supwisdom.dlpay.framework.util.StringUtil;

+import com.supwisdom.dlpay.system.bean.OperatorListBean;

+import com.supwisdom.dlpay.system.dao.ManagerDao;

+import com.supwisdom.dlpay.system.page.Pagination;

+import org.springframework.stereotype.Repository;

+import org.springframework.transaction.annotation.Transactional;

+

+import javax.persistence.EntityManager;

+import javax.persistence.PersistenceContext;

+import javax.persistence.Query;

+import javax.persistence.TypedQuery;

+import java.util.List;

+

+@Repository

+public class ManagerDaoImpl implements ManagerDao {

+

+    @PersistenceContext

+    EntityManager entityManager;

+

+    @Transactional

+    @Override

+    public Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize) {

+        String sql = "select a.operid,a.opername,a.opertype,a.realname,a.regionid,a.mobile,a.foperid,c.roleid,c.rolename,d.regionname " +

+                " from Tb_Operator a " +

+                " left join tb_oper_role b on a.operid = b.operid " +

+                " left join tb_role c on b.roleid = c.roleid " +

+                " left join tb_region d on a.regionid = d.regionid " +

+                " where 1>0 and a.status='normal' ";

+        if (!StringUtil.isEmpty(operid)){

+            sql += " and a.operid = :operid ";

+        }

+

+        if (!StringUtil.isEmpty(realname)){

+            sql += " and a.realname like :realname ";

+        }

+

+        sql += " order by a.operid";

+        Query query = entityManager.createNativeQuery(sql, OperatorListBean.class);

+

+        if (!StringUtil.isEmpty(operid)){

+            query.setParameter("operid", operid);

+        }

+

+        if (!StringUtil.isEmpty(realname)){

+            query.setParameter("realname", "%"+realname+"%");

+        }

+        pageNo = pageNo <= 0 ? 1 : pageNo;

+        query.setFirstResult((pageNo - 1) * pageSize);

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

+        List<OperatorListBean> list = query.getResultList();

+        page.setList(list);

+        int totalCount = getOperatorListCount(operid, realname);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getOperatorListCount(String operid, String realname){

+        String sql = "select count(*) from tb_operator a " +

+                " left join tb_oper_role b on a.operid = b.operid " +

+                " left join tb_role c on b.roleid = c.roleid " +

+                " left join tb_region d on a.regionid = d.regionid " +

+                "where a.status='normal' ";

+

+        if (!StringUtil.isEmpty(operid)){

+            sql += " and a.operid = :operid ";

+        }

+

+        if (!StringUtil.isEmpty(realname)){

+            sql += " and a.realname like :realname ";

+        }

+

+        Query query = entityManager.createNativeQuery(sql);

+        if (!StringUtil.isEmpty(operid)){

+            query.setParameter("operid", operid);

+        }

+

+        if (!StringUtil.isEmpty(realname)){

+            query.setParameter("realname", "%"+realname+"%");

+        }

+        int cnt=0;

+        List list = query.getResultList();

+        if (list!=null && list.size()>0){

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

+

+    @Transactional

+    @Override

+    public boolean updateOperatorStatusById(String operid) {

+        boolean flag = false;

+        try {

+            String sql = "update tb_operator set status = 'closed' where operid = :operid";

+            Query query = entityManager.createNativeQuery(sql);

+            query.executeUpdate();

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return false;

+    }

+

+    @Transactional

+    @Override

+    public TOperator getOperatorById(String operid) {

+        String sql = "select bean from TOperator bean where bean.status='normal' and bean.operid=:operid ";

+        TypedQuery<TOperator> query = entityManager.createQuery(sql, TOperator.class);

+        query.setParameter("operid", operid);

+        List<TOperator> list = query.getResultList();

+        if (list!=null && list.size()>0){

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public TRole getOperRoleById(String operid) {

+        String sql = "select a.roleid,a.createtime,a.editflag,a.lastsaved,a.rolecode,a.roledesc,a.rolename " +

+                " from Tb_Role a left join tb_oper_role b on a.roleid = b.roleid where b.operid=?1 ";

+        Query query = entityManager.createNativeQuery(sql, TRole.class);

+        query.setParameter(1, operid);

+        List<TRole> list = query.getResultList();

+        if (list!=null && list.size()>0){

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public boolean saveOperator(TOperator bean) {

+        boolean flag=false;

+        try {

+            entityManager.persist(bean);

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public boolean updateOperator(TOperator bean) {

+        boolean flag=false;

+        try {

+            entityManager.merge(bean);

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public boolean saveOperRole(TOperRole bean) {

+        boolean flag=false;

+        try {

+            entityManager.persist(bean);

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public TOperRole getTOperRoleByOperid(String operid) {

+        String sql = "select bean from TOperRole bean where bean.operid=:operid";

+        TypedQuery<TOperRole> query = entityManager.createQuery(sql, TOperRole.class);

+        query.setParameter("operid", operid);

+        List<TOperRole> list = query.getResultList();

+        if (list!=null && list.size()>0){

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public boolean updateTOperRole(TOperRole bean) {

+        boolean flag=false;

+        try {

+            entityManager.merge(bean);

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java b/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
new file mode 100644
index 0000000..c7a013e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
@@ -0,0 +1,36 @@
+package com.supwisdom.dlpay.system.service;

+

+import com.supwisdom.dlpay.framework.domain.TOperRole;

+import com.supwisdom.dlpay.framework.domain.TOperator;

+import com.supwisdom.dlpay.framework.domain.TRole;

+import com.supwisdom.dlpay.system.page.Pagination;

+

+public interface ManagerService {

+

+    //分页获取所有操作员列表

+    Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize);

+

+    //根据id删除操作员 -- 实际修改状态status为close

+    boolean deleteOperatorById(String operid);

+

+    //根据id获取对应管理员

+    TOperator getOperatorById(String operid);

+

+    //根据管理员id获取其对应角色

+    TRole getOperRoleById(String operid);

+

+    //保存管理员

+    boolean saveOperator(TOperator bean);

+

+    //修改操作员

+    boolean updateOperator(TOperator bean);

+

+    //保存管理员角色

+    boolean saveOperRole(TOperRole bean);

+

+    //根据操作员id获取TOperRole

+    TOperRole getTOperRoleByOperid(String operid);

+

+    //修改ToperRole

+    boolean updateTOperRole(TOperRole bean);

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
index 1bd453e..22d43c4 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
@@ -24,6 +24,9 @@
     //根据类型获取字典值

     public List<TDictionaryId> findTDictionaryByType(int type);

 

+    //根据管理员属性获取其能分配的管理员属性 sql中字典type固定为1

+    public List<TDictionaryId> findOpertypes(String opertype);

+

     //根据类型和值获取字典值

     public List<TDictionaryId> findByType(int type, String dicVal);

 

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java
new file mode 100644
index 0000000..793769d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java
@@ -0,0 +1,61 @@
+package com.supwisdom.dlpay.system.service.impl;

+

+import com.supwisdom.dlpay.framework.domain.TOperRole;

+import com.supwisdom.dlpay.framework.domain.TOperator;

+import com.supwisdom.dlpay.framework.domain.TRole;

+import com.supwisdom.dlpay.system.dao.ManagerDao;

+import com.supwisdom.dlpay.system.page.Pagination;

+import com.supwisdom.dlpay.system.service.ManagerService;

+import org.springframework.beans.factory.annotation.Autowired;

+import org.springframework.stereotype.Service;

+

+@Service

+public class ManagerServiceImpl implements ManagerService {

+    @Autowired

+    ManagerDao managerDao;

+

+    @Override

+    public Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize) {

+        return managerDao.getOperatorList(operid, realname, pageNo, pageSize);

+    }

+

+    @Override

+    public boolean deleteOperatorById(String operid) {

+        return managerDao.updateOperatorStatusById(operid);

+    }

+

+    @Override

+    public TOperator getOperatorById(String operid) {

+        return managerDao.getOperatorById(operid);

+    }

+

+    @Override

+    public TRole getOperRoleById(String operid) {

+        return managerDao.getOperRoleById(operid);

+    }

+

+    @Override

+    public boolean saveOperator(TOperator bean) {

+        return managerDao.saveOperator(bean);

+    }

+

+    @Override

+    public boolean updateOperator(TOperator bean) {

+        return managerDao.updateOperator(bean);

+    }

+

+    @Override

+    public boolean saveOperRole(TOperRole bean) {

+        return managerDao.saveOperRole(bean);

+    }

+

+    @Override

+    public TOperRole getTOperRoleByOperid(String operid) {

+        return managerDao.getTOperRoleByOperid(operid);

+    }

+

+    @Override

+    public boolean updateTOperRole(TOperRole bean) {

+        return managerDao.updateTOperRole(bean);

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
index f729371..a571bc6 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
@@ -56,6 +56,11 @@
     }

 

     @Override

+    public List<TDictionaryId> findOpertypes(String opertype) {

+        return dictionaryDao.findOpertypes(opertype);

+    }

+

+    @Override

     public List<TDictionaryId> findByType(int type, String dicVal) {

         return dictionaryDao.findByType(type, dicVal);

     }

diff --git a/src/main/resources/templates/system/operator.html b/src/main/resources/templates/system/operator.html
new file mode 100644
index 0000000..2279473
--- /dev/null
+++ b/src/main/resources/templates/system/operator.html
@@ -0,0 +1,523 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">操作员管理</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">系统中心</a>
+          <a><cite>操作员管理</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div id="operatorapp">
+            <el-form :inline="true" ref="operatorform" :model="operatorform" data-parsley-validate class="form-horizontal form-label-left">
+
+                <div class="col-md-4">
+                    <div class="form-group">
+                        <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">操作员编号:</span>
+                        </label>
+                        <div class="col-md-8 col-sm-12 col-xs-12">
+                            <el-input v-model="operatorform.operid"></el-input>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="col-md-4">
+                    <div class="form-group">
+                        <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">姓名:</span>
+                        </label>
+                        <div class="col-md-8 col-sm-12 col-xs-12">
+                            <el-input v-model="operatorform.realname"></el-input>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-3">
+                    <div class="form-group">
+                        <button type="button" class="btn btn-info" @click="query" id="qrybtn">查 询</button>
+                        <button class="btn btn-primary" type="button" @click="addOperator">添加操作员</button>
+                    </div>
+                </div>
+            </el-form>
+
+            <template>
+                <el-table
+                        ref="singletable"
+                        :data="tableData"
+                        highlight-current-row
+                        @current-change="currRowChange"
+                        stripe
+                        max-height="2000"
+                        border
+                        style="width: 100%">
+                    <el-table-column
+                            prop="operid"
+                            label="操作员号"
+                            width="140">
+                    </el-table-column>
+                    <el-table-column
+                            prop="realname"
+                            label="姓名"
+                            width="140">
+                    </el-table-column>
+                    <el-table-column
+                            prop="opertype"
+                            label="操作员类别"
+                            width="140"
+                            :formatter="typeform">
+                    </el-table-column>
+                    <el-table-column
+                            prop="rolename"
+                            label="角色"
+                            width="140">
+                    </el-table-column>
+                    <el-table-column
+                            prop="mobile"
+                            label="联系电话"
+                            width="180">
+                    </el-table-column>
+                    <el-table-column
+                            prop="regionname"
+                            label="管辖区域"
+                            width="180">
+                    </el-table-column>
+                    <el-table-column
+                            fixed="right"
+                            label="操作"
+                            width="179">
+                        <template scope="scope">
+                            <button type="button" class="btn btn-info btn-xs" title="编辑操作员" @click="editOperator(scope.row.operid)">编辑</button>
+                            <button type="button" class="btn btn-success btn-xs" title="重置密码" @click="resetPwd(scope.row.operid)">重置</button>
+                            <button type="button" class="btn btn-danger btn-xs" title="删除操作员" @click="delOperator(scope.row.operid)">删除</button>
+                            <button type="button" class="btn btn-info btn-xs" title="分配楼栋"
+                                    @click="allocationBulding(scope.row.deviceid)" v-if="scope.row.opertype=='L'">分配楼栋
+                            </button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <div class="clearfix"></div>
+                <el-pagination
+                        @size-change="handleSizeChange"
+                        @current-change="currPageChange"
+                        :current-page="currPage"
+                        :page-sizes="[10, 20, 50, 100]"
+                        :page-size="pageSize"
+                        layout="prev, pager, next,sizes, jumper,total"
+                        :total="totSize">
+                </el-pagination>
+            </template>
+
+            <el-dialog :title="operatortitile" :visible.sync="dialogFormVisible"  >
+                <el-form ref="operatorDiaForm" :model="operatorDiaForm" :rules="rules" label-width="36%" >
+                    <el-form-item label="操作员编号:" prop="operid">
+                        <div class="el-col el-col-15">
+                            <div class="el-input" style="width: 187px;">
+                                <el-input v-model="operatorDiaForm.operid">
+                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                </el-input>
+                            </div>
+                        </div>
+                    </el-form-item>
+
+                    <el-form-item label="登录名:" prop="opercode">
+                        <div class="el-col el-col-18">
+                            <div class="el-input" style="width: 187px;">
+                                <el-input v-model="operatorDiaForm.opercode">
+                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                </el-input>
+                            </div>
+                        </div>
+                    </el-form-item>
+
+                    <el-form-item label="操作员名称:" prop="opername">
+                        <div class="el-col el-col-18">
+                            <div class="el-input" style="width: 187px;">
+                                <el-input v-model="operatorDiaForm.opername">
+                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                </el-input>
+                            </div>
+                        </div>
+                    </el-form-item>
+
+                    <el-form-item label="操作员类别:" prop="opertype">
+                        <el-col :span="18">
+                            <el-select v-model="operatorDiaForm.opertype" style="width: 187px;"
+                                       filterable
+                                       @Change="opertypeChange"
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="opertype in opertypes"
+                                        :key="opertype.value"
+                                        :label="opertype.label"
+                                        :value="opertype.value">
+                                </el-option>
+                            </el-select>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="角色:" prop="roleid">
+                        <el-col :span="18">
+                            <el-select v-model="operatorDiaForm.roleid"
+                                       style="width: 187px;" clearable
+                                       filterable
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="roleid in roles"
+                                        :key="roleid.value"
+                                        :label="roleid.label"
+                                        :value="roleid.value">
+                                </el-option>
+                            </el-select>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="管辖区域:" prop="regionid">
+                        <el-col :span="18">
+                            <el-select v-model="operatorDiaForm.regionid"
+                                       style="width: 187px;" clearable
+                                       filterable
+                                       :disabled="regionDis"
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="regionid in regions"
+                                        :key="regionid.value"
+                                        :label="regionid.label"
+                                        :value="regionid.value">
+                                </el-option>
+                            </el-select>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="联系方式:" prop="mobile">
+                        <el-col :span="18">
+                            <el-input v-model.number="operatorDiaForm.mobile"  style="width: 187px;">
+                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            </el-input>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="邮箱:" prop="email">
+                        <el-col :span="18">
+                            <el-input v-model.number="operatorDiaForm.email"  style="width: 187px;">
+                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            </el-input>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="姓名:" prop="realname">
+                        <el-col :span="18">
+                            <el-input v-model.number="operatorDiaForm.realname"  style="width: 187px;">
+                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            </el-input>
+                        </el-col>
+                    </el-form-item>
+
+                </el-form>
+                <div slot="footer" class="dialog-footer">
+                    <el-button @click="resetForm('operatorDiaForm') ">取 消</el-button>
+                    <el-button type="primary" @click="saveOperator('operatorDiaForm')">确 定</el-button>
+                </div>
+            </el-dialog>
+        </div>
+    </div>
+</div>
+
+<script>
+    var vue = new Vue({
+        el:'#operatorapp',
+        data:{
+            tableData:[],
+            currPage: 1,
+            pageSize:10,
+            totSize:0,
+            currentRow: null,
+            regionDis:true,
+            operatorform:{
+                operid:'',
+                realname:''
+            },
+            roles:[],
+            dialogFormVisible: false,
+            regions:[],
+            opertypes:[],
+            operatorDiaForm:{
+                operid:'',
+                opercode:'',
+                opername:'',
+                opertype:'',
+                roleid:'',
+                regionid:'',
+                mobile:'',
+                email:'',
+                realname:''
+            },
+            rules:{
+                operid:[
+                    {required:true,message:'请输入操作员编号',trigger:'blur'},
+                ],
+                opercode:[
+                    {required:true,message:'请输入登陆名',trigger:'blur'},
+                ],
+                opername:[
+                    {required:true,message:'请输入操作员名称',trigger:'blur'},
+                ],
+                opertype: [
+                    {required: true, message: '请选择操作员类别', trigger: 'blur'}
+                ],
+                roleid: [
+                    {required: true, message: '请选择角色', trigger: 'blur'}
+                ]
+            },
+            operatortitile:'添加操作员(默认密码为123456)',
+        },
+        methods:{
+            handleSizeChange:function(val) {
+                this.pageSize=val;
+                commonQuery(this,this.operatorform.operid,this.operatorform.realname,this.currPage,val);
+                //console.log('每页条'+val);
+            },
+            currPageChange:function(val) {
+                this.currPage=val;
+                commonQuery(this,this.operatorform.operid,this.operatorform.realname,this.currPage,this.pageSize);
+                //console.log('当前页:'+val);
+            },
+            currRowChange:function(val) {
+                this.currentRow = val;
+            },
+            query:function(){
+                this.pagesize=10;
+                this.currPage=1;
+                commonQuery(this,this.operatorform.operid,this.operatorform.realname,this.currPage,this.pageSize);
+            },
+            addOperator:function () {
+                getFillData(this,"-1");
+                this.dialogFormVisible = true;
+                this.operatortitile="添加操作员(默认密码为123456)"
+            },
+            delOperator:function(operid){
+                deletedata(operid);
+            },
+            editOperator:function(operid){
+                getFillData(this,operid);
+                this.dialogFormVisible = true;
+                this.operatortitile="修改操作员(默认密码为123456)"
+            },
+            resetForm: function (formName) {
+                this.$refs[formName].resetFields();
+                this.dialogFormVisible = false;
+            },
+            saveOperator:function (formName) {
+                var _that=this;
+                var vali = false;
+                this.$refs[formName].validate(
+                    function(valid){
+                        if (valid){
+                            vali = true;
+                        }else{
+                            vali=false;
+                        }
+                    });
+                if (vali==true){
+                    saveData(_that,_that.operatorDiaForm,formName);
+                }
+            },
+            opertypeChange: function (value) {
+                if (value == 'H') {
+                    this.regionDis = false;
+                } else  {
+                    this.regionDis = true;
+                }
+            },
+            typeform: function (row) {
+                if (row.opertype == 'P') {
+                    return '超级管理员';
+                }
+                else if (row.opertype == 'S') {
+                    return '系统管理员';
+                }
+                else if (row.opertype == 'H') {
+                    return '区域管理员';
+                }
+                else if (row.opertype == 'L') {
+                    return '物业管理员';
+                }
+                else {
+                    return row.opertype;
+                }
+            },
+            resetPwd:function (operid) {
+                resetpwd(operid);
+            }
+        },
+        created:function(){
+            var _self=this;
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:encodeURI("/operator/loadOperatorList"),
+                success:function(ret){
+                    //console.log(ret);
+                    _self.totSize=ret.PageResult.totalCount;
+                    _self.tableData=ret.PageResult.list;
+                }
+            })
+        }
+    })
+
+    function refreshThisTable(){
+        $("#qrybtn").click();
+    };
+
+    function commonQuery(_self,operid,realname,pageno,pagesize){
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/operator/loadOperatorList?operid="+operid+"&realname=" + realname + "&pageNo=" + pageno + "&pageSize=" + pagesize),
+            success: function (ret) {
+                _self.totSize = ret.PageResult.totalCount;
+                _self.tableData = ret.PageResult.list;
+                if (_self.totSize == 0) {
+                    layer.msg("暂无数据", {icon: 2, time: 1000});
+                }
+            }
+        })
+    }
+
+    function deletedata(operid){
+        layer.confirm('是否删除该操作员', {icon: 3, title:'请确认',offset:'30%'},function(index){
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:"/operator/deleteOperator?operid="+operid,
+                success:function(ret){
+                    if(ret.message == undefined){
+                        layer.msg('用户认证已过期,请重新登录', {icon:2,time:1000});
+                        window.location="login";
+                        return;
+                    }
+                    if (ret.message != "") {
+                        layer.msg(ret.message, {icon: 2, time: 1000});
+                    } else {
+                        layer.msg('删除成功', {icon: 1, time: 1000});
+                        refreshThisTable();
+                    }
+                }
+            })
+        })
+    }
+
+
+    function getFillData(_self, id) {
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/operator/loadOperatorForUpdate?operid=" + id),
+            success: function (ret) {
+                var opertypelist = [];
+                var opertypes = ret.opertypes;
+                for (var i = 0; i < opertypes.length; i++) {
+                    opertypelist.push({
+                        value: opertypes[i]["dictval"],
+                        label: opertypes[i]["dictcaption"]
+                    });
+                }
+                _self.opertypes = opertypelist;
+
+                if (ret.operator != null) {
+                    _self.operatorDiaForm.operid = ret.operator.operid;
+                    _self.operatorDiaForm.opercode = ret.operator.opercode;
+                    _self.operatorDiaForm.opername = ret.operator.opername;
+                    _self.operatorDiaForm.opertype = ret.operator.opertype;
+                    _self.operatorDiaForm.roleid = ret.operatorroleid;
+                    _self.operatorDiaForm.mobile = ret.operator.mobile;
+                    _self.operatorDiaForm.email = ret.operator.email;
+                    _self.operatorDiaForm.realname = ret.operator.realname;
+                    _self.operatorDiaForm.regionid = ret.operator.regionid;
+                    if (ret.operator.opertype == 'H') {
+                        _self.regionDis = false;
+                    }
+                }
+
+                var rolelist = [];
+                var roles = ret.roles;
+                for (var j=0;j<roles.length;j++){
+                    rolelist.push({
+                        value:roles[j]["roleId"],
+                        label:roles[j]["roleName"]
+                    });
+                }
+                _self.roles = rolelist;
+
+                var regionlist = [];
+                var regions = ret.regions;
+                for (var z=0;z<regions.length;z++){
+                    regionlist.push({
+                        value:regions[z]["regionid"],
+                        label:regions[z]["regionname"]
+                    });
+                }
+                _self.regions = regionlist;
+            }
+        })
+    }
+
+
+
+    function saveData(_that,formdata,formName){
+        var url = null;
+        if(vue.operatortitile == "添加操作员(默认密码为123456)"){
+            url = encodeURI("/operator/addOperator");
+        }
+        if(vue.operatortitile == "修改操作员(默认密码为123456)"){
+            url = encodeURI("/operator/updateOperator")
+        }
+        var token=$("meta[name='_csrf_token']").attr("value");
+        $.ajax({
+            type: "POST",
+            url: url,
+            dataType: "json",
+            contentType: "application/json",
+            headers: {
+                'Accept': 'application/json',
+                'Content-Type': 'application/json',
+                'X-CSRF-TOKEN':token,
+            },
+            data: JSON.stringify(formdata),
+            success: function (data) {
+                if (data.errStr != "") {
+                    layer.msg(data.errStr, {icon: 2,time:1000});
+                } else {
+                    layer.msg('保存信息成功!', {icon: 1,time:1000});
+                    refreshThisTable();
+                    _that.$refs[formName].resetFields();
+                    _that.dialogFormVisible = false;
+                }
+            }
+        });
+    }
+
+
+    function resetpwd(operid){
+        layer.confirm('是否重置该操作员密码?', {icon: 3, title:'请确认'}, function(index){
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:"/operator/resetpwd?operid="+operid,
+                success:function(ret){
+                    //console.log(ret);
+                    if(ret.code == undefined){
+                        layer.msg('用户认证已过期,请重新登录', {icon:2,time:1000});
+                        window.location="login";
+                        return;
+                    }
+                    if (ret.code != 200) {
+                        layer.msg(ret.message, {icon:2,time:1000});
+                    }else{
+                        layer.msg(ret.message, {icon: 1,time:1000});
+
+                    }
+                }
+            })
+        });
+    };
+
+
+
+</script>
\ No newline at end of file