删除 payapiconfig配置改为查表获取, 添加远程控制功能
diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
index 99c59f9..7c17c48 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
@@ -18,7 +18,6 @@
 import com.supwisdom.dlpay.mainservice.bean.TDoorcardlstInfo;

 import com.supwisdom.dlpay.mainservice.domain.TCard;

 import com.supwisdom.dlpay.mainservice.domain.TCustomer;

-import com.supwisdom.dlpay.mainservice.domain.TKey;

 import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;

 import com.supwisdom.dlpay.ncmgr.domain.TBuilding;

 import com.supwisdom.dlpay.ncmgr.domain.TNcAllottime;

@@ -28,7 +27,6 @@
 import com.supwisdom.dlpay.paysdk.ApiLoginHelper;

 import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;

 import com.supwisdom.dlpay.paysdk.proxy.UserProxy;

-import com.supwisdom.dlpay.system.bean.PayApiConfig;

 import com.supwisdom.dlpay.system.domain.TDictionaryId;

 import com.supwisdom.dlpay.system.domain.TRegion;

 import com.supwisdom.dlpay.system.domain.TSystemParam;

@@ -49,7 +47,6 @@
 

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

-import javax.servlet.http.HttpSession;

 import java.io.File;

 import java.text.SimpleDateFormat;

 import java.util.*;

@@ -64,6 +61,10 @@
 

     private static final String impcustomeFirstTime = "IMPCUSTOME_FIRST_TIME";

 

+    private static final String payapiAppid = "PAYAPI_APPID";

+

+    private static final String payapiSecret = "PAYAPI_SECRET";

+

     protected static Logger logger = LoggerFactory.getLogger(DoorlistMgrController.class);

 

     @Autowired

@@ -349,8 +350,6 @@
       return map;

     }

 

-    @Autowired

-    private PayApiConfig payApiConfig;

 

     @Autowired

     private ApiLoginProxy apiLoginProxy;

@@ -373,8 +372,10 @@
       return map;

     }

     try {

-      String appid = payApiConfig.getAppid();

-      String secret = payApiConfig.getSecret();

+        TSystemParam appidSystemParam = systemService.getSystemParamByKey(payapiAppid);

+        String appid = appidSystemParam.getParamValue();

+        TSystemParam secretSystemParam = systemService.getSystemParamByKey(payapiSecret);

+        String secret = secretSystemParam.getParamValue();

       ApiLoginHelper helper = new ApiLoginHelper(apiLoginProxy);

       helper.login(appid, secret);

 

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
index c280e6e..3bb36f2 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -61,4 +61,11 @@
     public List<TDoordevInfo> getBuildingOperDevList(String devname,String regionid,String buildingid,String operid);

 

     public void updateBuildingnameByBuildingid(String buildingid,String buildingname);

+

+    public Pagination getAllRemoteDev(String devname, int pageNo, int pageSize, String buildingid,String regionid);

+

+    public Pagination getOperateRemoteDev(String devname, int pageNo, int pageSize, String buildingid,String regionid,String operRegionid);

+

+    public Pagination getBuildingOperRemoteDev(String devname, int pageNo, int pageSize, String buildingid,String regionid,String operid);

+

 }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
index bdbc13c..1a16206 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
@@ -5,6 +5,7 @@
 import com.supwisdom.dlpay.ncmgr.dao.NcDeviceDao;

 import com.supwisdom.dlpay.ncmgr.domain.TBuilding;

 import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;

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

 import com.supwisdom.dlpay.system.domain.TRegion;

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

 import org.springframework.stereotype.Repository;

@@ -694,4 +695,231 @@
         query.setParameter("buildingname" ,buildingname );

         query.executeUpdate();

     }

+

+    @Transactional

+    @Override

+    public Pagination getAllRemoteDev(String devname, int pageNo, int pageSize, String buildingid, String regionid) {

+        String sql = "select a.deviceid,a.devname,b.regionname,a.buildingname from t_nc_device a, tb_region b " +

+                "  where a.regionid = b.regionid and a.devtype='R' ";

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if (!regionid.equals("")){

+            sql += " and b.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  )";

+        }

+        sql +=" order by deviceid";

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

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if (!("").equals(regionid)){

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

+        }

+

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

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

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getAllRemoteDevCount(devname, buildingid, regionid);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getAllRemoteDevCount(String devname,String buildingid,String regionid){

+        String sql = "select count(*) from t_nc_device a, tb_region b " +

+                " where a.regionid = b.regionid and a.devtype='R' ";

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if (!regionid.equals("")){

+            sql += " and b.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  )";

+        }

+        Query query = entityManager.createNativeQuery(sql);

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if (!("").equals(regionid)){

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

+        }

+        List list = query.getResultList();

+        int cnt = 0;

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

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

+        }

+        return cnt;

+    }

+

+    @Transactional

+    @Override

+    public Pagination getOperateRemoteDev(String devname, int pageNo, int pageSize, String buildingid, String regionid, String operRegionid) {

+        String sql = "select a.deviceid,a.devname,b.regionname,a.buildingname from t_nc_device a, tb_region b " +

+                "  where a.regionid = b.regionid and a.devtype='R' ";

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+            sql += " and b.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  )";

+

+        sql+=" order by deviceid";

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

+

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if (!("").equals(regionid)){

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

+        }else {

+            query.setParameter("regionid", operRegionid);

+        }

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

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

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getOperateRemoteDevCount(devname, buildingid, regionid, operRegionid);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getOperateRemoteDevCount(String devname,String buildingid,String regionid,String operRegionid){

+        String sql = "select count(*) from t_nc_device a, tb_region b " +

+                " where a.regionid = b.regionid and a.devtype='R' ";

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+            sql += " and b.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  )";

+

+        Query query = entityManager.createNativeQuery(sql);

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if (!("").equals(regionid)){

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

+        }else {

+            query.setParameter("regionid", operRegionid);

+        }

+        List list = query.getResultList();

+        int cnt = 0;

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

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

+        }

+        return cnt;

+    }

+

+    @Transactional

+    @Override

+    public Pagination getBuildingOperRemoteDev(String devname, int pageNo, int pageSize, String buildingid, String regionid, String operid) {

+        String sql = "select a.deviceid,a.devname,b.regionname,a.buildingname from t_nc_device a, tb_region b, t_operbuilding c " +

+                " where a.regionid = b.regionid and a.devtype='R' and a.buildingid=c.buildingid and c.operid=:operid ";

+        if(!devname.equals("")){

+            sql+=" and bean.devname like :devname ";

+        }

+        if(!buildingid.equals("")){

+            sql+=" and  bean.buildingid = :buildingid ";

+        }

+        sql+=" order by deviceid";

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

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

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+

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

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

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getBuildingOperRemoteDevCount(devname, buildingid,operid);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getBuildingOperRemoteDevCount(String devname,String buildingid,String operid){

+        String sql = "select count(*) from t_nc_device a, tb_region b, t_operbuilding c " +

+                " where a.regionid = b.regionid and a.devtype='R' and a.buildingid=c.buildingid and c.operid=:operid ";

+        if(!devname.equals("")){

+            sql+=" and bean.devname like :devname ";

+        }

+        if(!buildingid.equals("")){

+            sql+=" and  bean.buildingid = :buildingid ";

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

+        if(!devname.equals("")){

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        List list = query.getResultList();

+        int cnt = 0;

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

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

+        }

+        return cnt;

+    }

 }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
index ecfce32..d4b8de8 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -282,4 +282,13 @@
     //获取管理员权限下的设备

     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})

     public List<TNcDevice> findOperatorDevices(String operRegionid);

+

+    //根据查询条件分页获取所有可以远程的设备

+    public Pagination getAllRemoteDev(String devname, int pageNo, int pageSize, String buildingid,String regionid);

+

+    //根据查询条件分页获取所有管理员权限下可以远程的设备

+    public Pagination getOperateRemoteDev(String devname, int pageNo, int pageSize, String buildingid,String regionid,String operRegionid);

+

+    //根据查询条件分页获取所有楼栋管理员权限下可以远程的设备

+    public Pagination getBuildingOperRemoteDev(String devname, int pageNo, int pageSize, String buildingid,String regionid,String operid);

 }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
index b038b9b..73592e9 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
@@ -377,4 +377,19 @@
     public List<TNcDevice> findOperatorDevices(String operRegionid) {

         return ncDeviceDao.findOperatorDevices(operRegionid);

     }

+

+    @Override

+    public Pagination getAllRemoteDev(String devname, int pageNo, int pageSize, String buildingid, String regionid) {

+        return ncDeviceDao.getAllRemoteDev(devname, pageNo, pageSize, buildingid, regionid);

+    }

+

+    @Override

+    public Pagination getOperateRemoteDev(String devname, int pageNo, int pageSize, String buildingid, String regionid, String operRegionid) {

+        return ncDeviceDao.getOperateRemoteDev(devname, pageNo, pageSize, buildingid, regionid, operRegionid);

+    }

+

+    @Override

+    public Pagination getBuildingOperRemoteDev(String devname, int pageNo, int pageSize, String buildingid, String regionid, String operid) {

+        return ncDeviceDao.getBuildingOperRemoteDev(devname, pageNo, pageSize, buildingid, regionid, operid);

+    }

 }

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

+

+import javax.persistence.Entity;

+import javax.persistence.Id;

+

+@Entity

+public class DevRemoteBean {

+    private String deviceid;

+    private String devname;

+    private String regionname;

+    private String buildingname;

+

+    @Id

+    public String getDeviceid() {

+        return deviceid;

+    }

+

+    public void setDeviceid(String deviceid) {

+        this.deviceid = deviceid;

+    }

+

+    public String getDevname() {

+        return devname;

+    }

+

+    public void setDevname(String devname) {

+        this.devname = devname;

+    }

+

+    public String getRegionname() {

+        return regionname;

+    }

+

+    public void setRegionname(String regionname) {

+        this.regionname = regionname;

+    }

+

+    public String getBuildingname() {

+        return buildingname;

+    }

+

+    public void setBuildingname(String buildingname) {

+        this.buildingname = buildingname;

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/PayApiConfig.java b/src/main/java/com/supwisdom/dlpay/system/bean/PayApiConfig.java
deleted file mode 100644
index 1820435..0000000
--- a/src/main/java/com/supwisdom/dlpay/system/bean/PayApiConfig.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.supwisdom.dlpay.system.bean;

-

-import org.springframework.beans.factory.annotation.Value;

-import org.springframework.stereotype.Component;

-

-@Component

-public class PayApiConfig {

-    @Value("${payapi.appid}")

-    private String appid;

-    @Value("${payapi.secret}")

-    private String secret;

-

-    public String getAppid() {

-        return appid;

-    }

-

-    public String getSecret() {

-        return secret;

-    }

-}

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 375ec39..b3aef5a 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -59,6 +59,11 @@
         return "system/building";

     }

 

+    @RequestMapping("/remoteCtrlindex")

+    public String remoteCtrlindex(){

+        return "/system/remote/remoteCtrl";

+    }

+

     /**

      * 获取字典列表

      * @param dicttype

@@ -709,4 +714,87 @@
         map.put("okFlag", okFlag);

         return map;

     }

+

+    /**

+     * 分页获取所有可以远程控制的设备(读头)

+     * @param devname

+     * @param regionid

+     * @param buildingid

+     * @param pageNo

+     * @param pageSize

+     * @param operUser

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping(value = "/getAllNcDevForRemote",method = RequestMethod.POST)

+    public Map getAllNcDevForRemote(

+            @RequestParam(value = "devname", required = false,defaultValue = "") String devname,

+            @RequestParam(value = "regionid", required = false,defaultValue = "") String regionid,

+            @RequestParam(value = "buildingid", required = false,defaultValue = "") String buildingid,

+            @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,

+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,

+            @AuthenticationPrincipal TOperator operUser){

+        Map map = new HashMap();

+        try {

+            String opertype = operUser.getOpertype();

+            Pagination page = null;

+            List<TRegion> regions = null;

+            List<TBuilding> buildings = null;

+            if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))) {

+                page = ncService.getAllRemoteDev(devname, pageNo, pageSize, buildingid, regionid);

+                map.put("PageResult", page);

+                regions = systemService.getAllRegions();

+                map.put("regions", regions);

+                buildings = ncService.getAllBuilding();

+                map.put("buildings", buildings);

+            }else if (opertype.equals("H") && !StringUtil.isEmpty(operUser.getRegionid())){

+                page = ncService.getOperateRemoteDev(devname, pageNo, pageSize, buildingid, regionid, operUser.getRegionid());

+                map.put("PageResult", page);

+                regions = systemService.getRegionListById(operUser.getRegionid());

+                map.put("regions", regions);

+                buildings = systemService.getBuildingByRegionId(operUser.getRegionid());

+                map.put("buildings", buildings);

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

+                page = ncService.getBuildingOperRemoteDev(devname, pageNo, pageSize, buildingid, regionid, operUser.getOperid());

+                map.put("PageResult", page);

+                map.put("regions", regions);

+                buildings = systemService.getBuildingOperBuildings(operUser.getOperid());

+                map.put("buildings", buildings);

+            }

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+

+    @ResponseBody

+    @RequestMapping(value = "/remoteCtrlDoorOnlyOne",method = RequestMethod.POST)

+    public Map remoteCtrlDoorOnlyOne(

+            @RequestParam(value = "deviceid", required = false) String deviceid,

+            @RequestParam(value = "crtlcode", required = false) String crtlcode){

+        Map map = new HashMap();

+        try {

+            int okFlag = 0;

+            TNcDevice ncDevice = ncService.getDevInfoByDevid(Integer.parseInt(deviceid));

+            if (ncDevice!=null && "C".equals(ncDevice.getDevtype())){

+                map.put("msg", "请选择要控制的门锁!");

+                map.put("okFlag", okFlag);

+                return map;

+            }

+            int devNo = ncDevice.getDevno();

+            String rmtDev = RedisUtil.get("remote_"+ncDevice.getDevphyid());

+

+            if (StringUtil.isEmpty(rmtDev)){

+                rmtDev = "----------------";

+            }

+            String tmpVal = rmtDev.substring(0,devNo-1)+crtlcode+rmtDev.substring(devNo);

+            RedisUtil.set("remote_"+ncDevice.getDevphyid(),tmpVal);

+            map.put("msg", "远程操作成功!");

+            map.put("okFlag", 1);

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

 }

diff --git a/src/main/resources/templates/system/remote/remoteCtrl.html b/src/main/resources/templates/system/remote/remoteCtrl.html
new file mode 100644
index 0000000..e85fc5e
--- /dev/null
+++ b/src/main/resources/templates/system/remote/remoteCtrl.html
@@ -0,0 +1,406 @@
+<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="remoteCtrl">
+            <el-form :inline="true" ref="remoteform" :model="remoteform" data-parsley-validate
+                     class="form-horizontal form-label-left">
+
+                <div class="col-md-3" >
+                    <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="remoteform.devname" ></el-input>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-3" >
+                    <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-select v-model="devform.regionid"
+                                       filterable
+                                       clearable
+                                       @Change="regionChange"
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="regionid in regions"
+                                        :key="regionid.value"
+                                        :label="regionid.label"
+                                        :value="regionid.value">
+                                </el-option>
+                            </el-select>-->
+                            <el-cascader style="width:163px"
+                                         v-model="remoteform.regionvalue"
+                                         :options="regionoptions"
+                                         :show-all-levels="false"
+                                         clearable
+                                         filterable change-on-select
+                                         @change="handleChange">
+                            </el-cascader>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="col-md-3" >
+                    <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-select v-model="remoteform.buildingid"
+                                       filterable
+                                       clearable
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="buildingid in buildings"
+                                        :key="buildingid.value"
+                                        :label="buildingid.label"
+                                        :value="buildingid.value">
+                                </el-option>
+                            </el-select>
+                        </div>
+                    </div>
+                </div>
+
+
+                <div class="col-md-3">
+                    <div class="form-group">
+                        <button type="button" class="btn btn-info" @click="query" id="remoteCtrl_qrybtn">查 询</button>
+                    </div>
+                </div>
+            </el-form>
+
+            <template>
+                <el-table
+                        ref="singleTable"
+                        :data="tableData"
+                        highlight-current-row
+                        @current-change="currRowChange"
+                        stripe
+                        border
+                @selection-change="handleSelect"
+                style="width: 100%;">
+
+                <el-table-column
+                        type="selection"
+                        width="55">
+                </el-table-column>
+                <el-table-column
+                            prop="deviceid"
+                            label="设备编号"
+                            width="140">
+                </el-table-column>
+                <el-table-column
+                            prop="devname"
+                            label="设备名称"
+                            width="220">
+                </el-table-column>
+                <el-table-column
+                            prop="regionname"
+                            label="区域"
+                            width="200">
+                </el-table-column>
+                <el-table-column
+                            prop="buildingname"
+                            label="楼栋"
+                            width="200">
+                </el-table-column>
+                <el-table-column
+                            fixed="right"
+                            label="操作"
+                            width="240">
+                        <template scope="scope">
+                            <button type="button" class="btn btn-info btn-xs" title="开一次" @click="remoteCtrl_remoteCtrlSelect(scope.row.deviceid,1)">开一次</button>
+                            <button type="button" class="btn btn-info btn-xs" title="常开" @click="remoteCtrl_remoteCtrlSelect(scope.row.deviceid,9)">常开</button>
+                            <button type="button" class="btn btn-info btn-xs" title="关闭" @click="remoteCtrl_remoteCtrlSelect(scope.row.deviceid,0)">关闭</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>
+
+        </div>
+    </div>
+</div>
+
+<script>
+    var remoteCtrl_vue = new Vue({
+        el: '#remoteCtrl',
+        data: {
+            tableData: [],
+            currPage: 1,
+            pageSize: 10,
+            totSize: 0,
+            currentRow: null,
+            remoteform: {
+                devname: '',
+                buildingid: '',
+                regionid:'',
+                regionvalue:[],
+                Rregionid:''
+            },
+            regions:[],
+            regionoptions:[],
+            buildings:[],
+            selectList:[],
+
+        },
+        methods: {
+            handleSizeChange: function (val) {
+                this.pageSize = val;
+                remoteCtrl_commonQuery(this, this.remoteform, this.currPage, val);
+            },
+            currPageChange: function (val) {
+                this.currPage = val;
+                remoteCtrl_commonQuery(this, this.remoteform, this.currPage, this.pageSize);
+            },
+            currRowChange: function (val) {
+                this.currentRow = val;
+            },
+            query: function () {
+                this.pageSize = 10;
+                this.currPage = 1;
+                remoteCtrl_commonQuery(this, this.remoteform, this.currPage, this.pageSize);
+            },
+
+            handleSelect:function(val){
+                this.selectList=val;
+            },
+            regionChange:function(value){
+                this.buildings=[];
+                this.remoteform.buildingid='';
+                remoteCtrl_getRegionBuilding(this,value);
+            },
+            handleChange(value) {
+                if (value.length > 0) {
+                    this.remoteform.Rregionid = value[value.length - 1]
+                } else {
+                    this.remoteform.Rregionid = ''
+                }
+                //console.log(this.remoteform.Rregionid);
+
+                this.buildings = [];
+                this.remoteform.buildingid = '';
+                if (this.remoteform.Rregionid == '') {
+                    remoteCtrl_getRegionBuilding(this, '0');
+                } else {
+                    remoteCtrl_getRegionBuilding(this, this.remoteform.Rregionid);
+                }
+            }
+        },
+        created: function () {
+            var url = "[[@{/system/getAllNcDevForRemote}]]";
+            var _self = this;
+            var token=$("meta[name='_csrf_token']").attr("value");
+            $.ajax({
+                type: "post",
+                dataType: "json",
+                url: encodeURI(url),
+                contentType: "application/json",
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json',
+                    'X-CSRF-TOKEN':token,
+                },
+                success: function (data) {
+                    _self.totSize = data.PageResult.totalCount;
+                    _self.tableData = data.PageResult.list;
+                    var regionlist = [];
+                    regionlist.push({
+                        value:'',
+                        label:'全部'
+                    });
+                    var region = data.regions;
+                    if(region!=null) {
+                        for (var i = 0; i < region.length; i++) {
+                            regionlist.push({
+                                value: region[i]["regionid"],
+                                label: region[i]["regionname"]
+                            })
+                        }
+                        //级联选择器区域数据填充
+                        remoteCtrl_vue.regionoptions = remoteCtrl_getTreeData(data.regions) ;
+                    }
+
+                    var buildinglist = [];
+                    buildinglist.push({
+                        value:'',
+                        label:'全部'
+                    });
+                    var building = data.buildings;
+                    for (var i = 0; i < building.length; i++) {
+                        buildinglist.push({
+                            value: building[i]["buildingid"],
+                            label: building[i]["buildingname"]
+                        })
+                    }
+                    remoteCtrl_vue.regions = regionlist;
+                    remoteCtrl_vue.buildings = buildinglist
+                }
+            })
+        }
+    });
+
+    function remoteCtrl_getTreeData(regionlst){
+        var f = [];
+
+        //获取第一级
+        for(var i=0;i<regionlst.length;i++){
+            if(regionlst[i].parentid == '0'){
+                f.push({
+                    value:regionlst[i].regionid,
+                    label:regionlst[i].regionname,
+                })
+            }
+        }
+        if(f.length>0){
+            //获取第二级
+            remoteCtrl_pushRegion(regionlst,f);
+        }else {
+            f.push({
+                value:regionlst[0].regionid,
+                label:regionlst[0].regionname,
+            })
+            //获取第二级
+            remoteCtrl_pushRegion(regionlst,f);
+        }
+        remoteCtrl_cyclePushRegion(f,regionlst)
+        return f;
+    }
+
+    function remoteCtrl_pushRegion(regionlst,pRe){
+        for(var i in regionlst){
+            for(var j in pRe){
+                if(regionlst[i].parentid == pRe[j].value){
+                    if (pRe[j].children==undefined){
+                        pRe[j].children=[]
+                    }
+                    pRe[j].children.push({
+                        value:regionlst[i].regionid,
+                        label:regionlst[i].regionname,
+                    })
+                }
+            }
+        }
+    }
+
+    function remoteCtrl_cyclePushRegion(fList,regionlst){
+        for (var i in fList){
+            var s = fList[i].children;
+            if (s!=undefined && s.length>0){
+                remoteCtrl_pushRegion(regionlst,s);
+            }
+            for (j in s) {
+                var l = s[j].children;
+                if (l!=undefined && l.length>0){
+                    remoteCtrl_cyclePushRegion(s,regionlst)
+                }
+            }
+        }
+    }
+
+
+    function remoteCtrl_commonQuery(_self, remoteCtrl, pageno, pagesize) {
+
+        var url = "[[@{/system/getAllNcDevForRemote?}]]"+"&devname=" + remoteCtrl.devname
+            +"&regionid=" +remoteCtrl.Rregionid + "&buildingid=" + remoteCtrl.buildingid;
+        var token=$("meta[name='_csrf_token']").attr("value");
+        $.ajax({
+            type: "POST",
+            dataType: "json",
+            url: encodeURI(url),
+            contentType: "application/json",
+            headers: {
+                'Accept': 'application/json',
+                'Content-Type': 'application/json',
+                'X-CSRF-TOKEN':token,
+            },
+            success: function (ret) {
+                if (ret.PageResult != null) {
+                    _self.totSize = ret.PageResult.totalCount;
+                    _self.tableData = ret.PageResult.list;
+                    if(_self.totSize == 0 ){
+                        layer.msg("暂无数据", {icon: 2, time: 1000});
+                    }
+                }
+            }
+        })
+    }
+
+
+    function remoteCtrl_getRegionBuilding(_self,value){
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("[[@{/ncmgr/getRegionBuilding?regionid=}]]" + value),
+            success: function (ret) {
+                var bList = [];
+                bList.push({
+                    value:'',
+                    label:'全部'
+                });
+                var rB = ret.reBuilding;
+                if (rB!=null) {
+                    for (var j = 0; j < rB.length; j++) {
+                        bList.push({
+                            value: rB[j]["buildingid"],
+                            label: rB[j]["buildingname"]
+                        });
+                    }
+                }
+
+                _self.buildings = bList;
+            }
+        })
+    }
+
+
+    function remoteCtrl_remoteCtrlSelect(deviceid,crtlcode){
+
+        layer.confirm('确定执行此动作吗?', {icon: 3, title:'请确认'}, function(index) {
+            var token=$("meta[name='_csrf_token']").attr("value");
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: encodeURI("[[@{/system/remoteCtrlDoorOnlyOne?deviceid=}]]" +deviceid+
+                    "&crtlcode=" + crtlcode),
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json',
+                    'X-CSRF-TOKEN':token,
+                },
+                success: function (ret) {
+                    if (ret.okFlag == undefined) {
+                        layer.msg('用户认证已过期,请重新登录', {icon: 2, time: 1000});
+                        window.location = "[[@{/login}]]";
+                        return;
+                    }
+                    if (ret.okFlag != 1) {
+                        layer.msg(ret.msg, {icon: 2, time: 1000});
+                    } else {
+                        layer.msg(ret.msg, {icon: 1, time: 1000});
+                    }
+                }
+            })
+        })
+    }
+
+
+</script>
\ No newline at end of file