From b246fd6a20c3da83a48098d9eaee1d66326add46 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Fri, 26 Jul 2024 17:53:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/gb28181/bean/DeviceChannel.java | 6 +- .../iot/vmp/gb28181/bean/RegionTree.java | 2 - .../controller/CommonChannelController.java | 15 +- .../gb28181/controller/RegionController.java | 8 +- .../gb28181/dao/CommonGBChannelMapper.java | 15 +- .../vmp/gb28181/dao/DeviceChannelMapper.java | 26 ++-- .../iot/vmp/gb28181/dao/RegionMapper.java | 9 ++ .../gb28181/service/IGbChannelService.java | 9 +- .../vmp/gb28181/service/IRegionService.java | 2 + .../service/impl/GbChannelServiceImpl.java | 9 +- .../service/impl/RegionServiceImpl.java | 34 ++++- .../{PageInfo.java => TablePageInfo.java} | 6 +- web_src/src/components/common/RegionTree.vue | 90 ++++++++---- web_src/src/components/dialog/regionCode.vue | 137 ++++++++++++------ web_src/src/components/region.vue | 51 +++---- 15 files changed, 263 insertions(+), 156 deletions(-) rename src/main/java/com/genersoft/iot/vmp/vmanager/bean/{PageInfo.java => TablePageInfo.java} (94%) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java index 30fae105..e122fa3d 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java @@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.gb28181.bean; import com.genersoft.iot.vmp.gb28181.utils.MessageElement; import com.genersoft.iot.vmp.gb28181.utils.XmlUtil; -import com.genersoft.iot.vmp.utils.CivilCodeUtil; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -225,11 +224,8 @@ public class DeviceChannel extends CommonGBChannel { if (ObjectUtils.isEmpty(deviceChannel.getCivilCode()) || deviceChannel.getCivilCode().length() > 8 ){ deviceChannel.setCivilCode(null); - }else { - if (CivilCodeUtil.INSTANCE.getCivilCodePo(deviceChannel.getCivilCode()) == null) { - deviceChannel.setCivilCode(null); - } } + // 此处对于不在wvp缓存中的行政区划,默认直接存储.保证即使出现wvp的行政区划缓存过老,也可以通过用户自主创建的方式正常使用系统 } return XmlUtil.elementDecode(element, DeviceChannel.class); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java index e6a9fd22..4a61eda6 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java @@ -50,8 +50,6 @@ public class RegionTree { return regionTree; } - - public static RegionTree getInstance(CommonGBChannel channel) { RegionTree regionTree = new RegionTree(); regionTree.setId(channel.getGbDeviceId()); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java index 95de9a7a..e1d51899 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java @@ -8,14 +8,13 @@ import com.genersoft.iot.vmp.gb28181.bean.NetworkIdentificationType; import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; import com.genersoft.iot.vmp.media.service.IMediaServerService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; -import com.genersoft.iot.vmp.vmanager.bean.PageInfo; +import com.github.pagehelper.PageInfo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; @@ -23,7 +22,7 @@ import java.util.List; @Tag(name = "全局通道管理") -@Controller +@RestController @Slf4j @RequestMapping(value = "/api/common/channel") public class CommonChannelController { @@ -41,48 +40,41 @@ public class CommonChannelController { @Operation(summary = "查询通道信息", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "id", description = "通道的数据库自增Id", required = true) @GetMapping(value = "/one") - @ResponseBody public CommonGBChannel getOne(int id){ return channelService.getOne(id); } @Operation(summary = "获取行业编码列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @ResponseBody @GetMapping("/industry/list") public List getIndustryCodeList(){ return channelService.getIndustryCodeList(); } @Operation(summary = "获取编码列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @ResponseBody @GetMapping("/type/list") public List getDeviceTypeList(){ return channelService.getDeviceTypeList(); } @Operation(summary = "获取编码列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @ResponseBody @GetMapping("/network/identification/list") public List getNetworkIdentificationTypeList(){ return channelService.getNetworkIdentificationTypeList(); } @Operation(summary = "更新通道", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @ResponseBody @PostMapping("/update") public void update(@RequestBody CommonGBChannel channel){ channelService.update(channel); } @Operation(summary = "重置国标通道", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @ResponseBody @PostMapping("/reset") public void reset(Integer id){ channelService.reset(id); } @Operation(summary = "增加通道", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @ResponseBody @PostMapping("/add") public CommonGBChannel add(@RequestBody CommonGBChannel channel){ channelService.add(channel); @@ -94,8 +86,7 @@ public class CommonChannelController { @Parameter(name = "count", description = "每页查询数量", required = true) @Parameter(name = "query", description = "查询内容") @Parameter(name = "online", description = "是否在线") - @ResponseBody - @PostMapping("/list") + @GetMapping("/list") public PageInfo queryList(int page, int count, @RequestParam(required = false) String query, @RequestParam(required = false) Boolean online){ diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java index e4368cfe..0a2ef6ee 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java @@ -78,10 +78,10 @@ public class RegionController { @Operation(summary = "删除区域") @Parameter(name = "regionDeviceId", description = "区域编码", required = true) @ResponseBody - @GetMapping("/delete") - public void delete(String regionDeviceId){ - assert regionDeviceId != null; - boolean result = regionService.deleteByDeviceId(regionDeviceId); + @DeleteMapping("/delete") + public void delete(String deviceId){ + assert !ObjectUtils.isEmpty(deviceId); + boolean result = regionService.deleteByDeviceId(deviceId); if (!result) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "移除失败"); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java index b0096979..f68e14a2 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java @@ -1,6 +1,7 @@ package com.genersoft.iot.vmp.gb28181.dao; import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; +import com.genersoft.iot.vmp.gb28181.bean.Region; import com.genersoft.iot.vmp.gb28181.bean.RegionTree; import com.genersoft.iot.vmp.gb28181.dao.provider.ChannelProvider; import org.apache.ibatis.annotations.*; @@ -238,7 +239,7 @@ public interface CommonGBChannelMapper { " coalesce(wdc.gb_manufacturer, wdc.manufacturer) as gb_manufacturer,\n" + " coalesce(wdc.gb_model, wdc.model) as gb_model,\n" + " coalesce(wdc.gb_owner, wdc.owner) as gb_owner,\n" + - " coalesce(wpgc.civil_code, wdc.gb_civil_code, wdc.civil_code) as gb_civil_code,\n" + + " wdc.gb_civil_code,\n" + " coalesce(wdc.gb_block, wdc.block) as gb_block,\n" + " coalesce(wdc.gb_address, wdc.address) as gb_address,\n" + " coalesce(wpgc.parental, wdc.gb_parental, wdc.parental) as gb_parental,\n" + @@ -275,7 +276,7 @@ public interface CommonGBChannelMapper { @Update(value = {" ") List queryForRegionTreeByCivilCode(@Param("query") String query, @Param("parent") String parent); + + @Update(value = {" "}) + int removeCivilCode(List allChildren); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java index 0263de1b..9d064873 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java @@ -16,12 +16,12 @@ import java.util.List; @Repository public interface DeviceChannelMapper { - @Insert("INSERT INTO wvp_device_channel (device_id, device_db_id, name, manufacturer, model, owner, civil_code, block, " + + @Insert("INSERT INTO wvp_device_channel (device_id, device_db_id, name, manufacturer, model, owner, civil_code, gb_civil_code, block, " + "address, parental, parent_id, safety_way, register_way, cert_num, certifiable, err_code, end_time, secrecy, " + "ip_address, port, password, status, longitude, latitude, ptz_type, position_type, room_type, use_type, " + "supply_light_type, direction_type, resolution, business_group_id, download_speed, svc_space_support_mod, " + "svc_time_support_mode, create_time, update_time, sub_count,stream_id, has_audio, gps_time, stream_identification) " + - "VALUES (#{deviceId}, #{deviceDbId}, #{name}, #{manufacturer}, #{model}, #{owner}, #{civilCode}, #{block}," + + "VALUES (#{deviceId}, #{deviceDbId}, #{name}, #{manufacturer}, #{model}, #{owner}, #{civilCode}, #{civilCode}, #{block}," + "#{address}, #{parental}, #{parentId}, #{safetyWay}, #{registerWay}, #{certNum}, #{certifiable}, #{errCode}, #{endTime}, #{secrecy}, " + "#{ipAddress}, #{port}, #{password}, #{status}, #{longitude}, #{latitude}, #{ptzType}, #{positionType}, #{roomType}, #{useType}, " + "#{supplyLightType}, #{directionType}, #{resolution}, #{businessGroupId}, #{downloadSpeed}, #{svcSpaceSupportMod}," + @@ -132,7 +132,7 @@ public interface DeviceChannelMapper { " coalesce(dc.gb_manufacturer, dc.manufacturer) as manufacturer,\n" + " coalesce(dc.gb_model, dc.model) as model,\n" + " coalesce(dc.gb_owner, dc.owner) as owner,\n" + - " coalesce(dc.gb_civil_code, dc.civil_code) as civil_code,\n" + + " gb_civil_code as civil_code,\n" + " coalesce(dc.gb_block, dc.block) as block,\n" + " coalesce(dc.gb_address, dc.address) as address,\n" + " coalesce(dc.gb_parental, dc.parental) as parental,\n" + @@ -169,7 +169,7 @@ public interface DeviceChannelMapper { "coalesce(dc.gb_device_id, dc.device_id) LIKE concat('%',#{query},'%') " + "OR coalesce(dc.gb_name, dc.name) LIKE concat('%',#{query},'%') " + ") " + - " AND (dc.parent_id=#{parentChannelId} OR dc.civil_code = #{parentChannelId}) " + + " AND (dc.parent_id=#{parentChannelId} OR dc.gb_civil_code = #{parentChannelId}) " + " AND dc.status= true" + " AND dc.status= false" + " AND dc.sub_count > 0 " + @@ -197,7 +197,7 @@ public interface DeviceChannelMapper { " coalesce(gb_manufacturer, manufacturer) as manufacturer,\n" + " coalesce(gb_model, model) as model,\n" + " coalesce(gb_owner, owner) as owner,\n" + - " coalesce(gb_civil_code, civil_code) as civil_code,\n" + + " gb_civil_code as civil_code,\n" + " coalesce(gb_block, block) as block,\n" + " coalesce(gb_address, address) as address,\n" + " coalesce(gb_parental, parental) as parental,\n" + @@ -269,7 +269,7 @@ public interface DeviceChannelMapper { " coalesce(dc.gb_manufacturer, dc.manufacturer) as manufacturer,\n" + " coalesce(dc.gb_model, dc.model) as model,\n" + " coalesce(dc.gb_owner, dc.owner) as owner,\n" + - " coalesce(dc.gb_civil_code, dc.civil_code) as civil_code,\n" + + " dc.gb_civil_code as civil_code,\n" + " coalesce(dc.gb_block, dc.block) as block,\n" + " coalesce(dc.gb_address, dc.address) as address,\n" + " coalesce(dc.gb_parental, dc.parental) as parental,\n" + @@ -359,7 +359,7 @@ public interface DeviceChannelMapper { " coalesce(gb_manufacturer, manufacturer) as manufacturer,\n" + " coalesce(gb_model, model) as model,\n" + " coalesce(gb_owner, owner) as owner,\n" + - " coalesce(gb_civil_code, civil_code) as civil_code,\n" + + " gb_civil_code as civil_code,\n" + " coalesce(gb_block, block) as block,\n" + " coalesce(gb_address, address) as address,\n" + " coalesce(gb_parental, parental) as parental,\n" + @@ -396,14 +396,14 @@ public interface DeviceChannelMapper { @Insert("") List queryForTree(@Param("query") String query, @Param("parentId") String parentId); + + @Select("SELECT * from wvp_common_region WHERE device_id = #{deviceId} ") + Region queryOneByDeviceId(@Param("deviceId") String deviceId); + + @Delete("") + void batchDelete(List allChildren); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java index 933dedc3..87560fca 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java @@ -1,10 +1,7 @@ package com.genersoft.iot.vmp.gb28181.service; -import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; -import com.genersoft.iot.vmp.gb28181.bean.DeviceType; -import com.genersoft.iot.vmp.gb28181.bean.IndustryCodeType; -import com.genersoft.iot.vmp.gb28181.bean.NetworkIdentificationType; -import com.genersoft.iot.vmp.vmanager.bean.PageInfo; +import com.genersoft.iot.vmp.gb28181.bean.*; +import com.github.pagehelper.PageInfo; import java.util.List; @@ -45,4 +42,6 @@ public interface IGbChannelService { void reset(int id); PageInfo queryList(int page, int count, String query, Boolean online); + + void removeCivilCode(List allChildren); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java index c4f00a6b..19c841da 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java @@ -35,4 +35,6 @@ public interface IRegionService { List queryForTree(String query, String parent); void syncFromChannel(); + + boolean delete(int id); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java index 10856d53..b1a734cd 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java @@ -8,8 +8,8 @@ import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; -import com.genersoft.iot.vmp.vmanager.bean.PageInfo; import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -324,4 +324,11 @@ public class GbChannelServiceImpl implements IGbChannelService { List all = commonGBChannelMapper.queryList(query, online); return new PageInfo<>(all); } + + @Override + public void removeCivilCode(List allChildren) { + commonGBChannelMapper.removeCivilCode(allChildren); + // TODO 是否需要通知上级, 或者等添加新的行政区划时发送更新通知 + + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java index 1dd7d5b9..1654bebd 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java @@ -1,11 +1,11 @@ package com.genersoft.iot.vmp.gb28181.service.impl; import com.genersoft.iot.vmp.common.CivilCodePo; -import com.genersoft.iot.vmp.conf.CivilCodeFileConf; import com.genersoft.iot.vmp.gb28181.bean.Region; import com.genersoft.iot.vmp.gb28181.bean.RegionTree; import com.genersoft.iot.vmp.gb28181.dao.CommonGBChannelMapper; import com.genersoft.iot.vmp.gb28181.dao.RegionMapper; +import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; import com.genersoft.iot.vmp.gb28181.service.IRegionService; import com.genersoft.iot.vmp.utils.CivilCodeUtil; import com.genersoft.iot.vmp.utils.DateUtil; @@ -34,7 +34,7 @@ public class RegionServiceImpl implements IRegionService { @Autowired - private CivilCodeFileConf civilCodeFileConf; + private IGbChannelService gbChannelService; @Override public void add(Region region) { @@ -51,10 +51,33 @@ public class RegionServiceImpl implements IRegionService { @Override @Transactional public boolean deleteByDeviceId(String regionDeviceId) { - + Region region = regionMapper.queryOneByDeviceId(regionDeviceId); + // 获取所有子节点 + List allChildren = getAllChildren(regionDeviceId); + allChildren.add(region); + // 设置使用这些节点的通道的civilCode为null, + gbChannelService.removeCivilCode(allChildren); + regionMapper.batchDelete(allChildren); return true; } + private List getAllChildren(String deviceId) { + if (deviceId == null || deviceId.length() >= 8) { + return new ArrayList<>(); + } + List children = regionMapper.getChildren(deviceId); + if (ObjectUtils.isEmpty(children)) { + return children; + } + List regions = new ArrayList<>(children); + for (Region region : children) { + if (region.getDeviceId().length() < 8) { + regions.addAll(getAllChildren(region.getDeviceId())); + } + } + return regions; + } + @Override public PageInfo query(String query, int page, int count) { PageHelper.startPage(page, count); @@ -140,4 +163,9 @@ public class RegionServiceImpl implements IRegionService { regionMapper.batchAdd(new ArrayList<>(regionMapForVerification.values())); } + + @Override + public boolean delete(int id) { + return regionMapper.delete(id) > 0; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/PageInfo.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/TablePageInfo.java similarity index 94% rename from src/main/java/com/genersoft/iot/vmp/vmanager/bean/PageInfo.java rename to src/main/java/com/genersoft/iot/vmp/vmanager/bean/TablePageInfo.java index 8894191a..73d42235 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/PageInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/TablePageInfo.java @@ -3,7 +3,7 @@ package com.genersoft.iot.vmp.vmanager.bean; import java.util.ArrayList; import java.util.List; -public class PageInfo { +public class TablePageInfo { //当前页 private int pageNum; //每页的数量 @@ -19,11 +19,11 @@ public class PageInfo { private List list; - public PageInfo(List resultData) { + public TablePageInfo(List resultData) { this.resultData = resultData; } - public PageInfo() { + public TablePageInfo() { } public void startPage(int page, int count) { diff --git a/web_src/src/components/common/RegionTree.vue b/web_src/src/components/common/RegionTree.vue index 04e67c8e..44e448b2 100755 --- a/web_src/src/components/common/RegionTree.vue +++ b/web_src/src/components/common/RegionTree.vue @@ -10,7 +10,7 @@ -
+
- - - {{ node.label }} - + + {{''}} + + + + {{ node.label }}({{ node.data.id }}) + {{ node.label }} +
@@ -47,13 +52,14 @@ export default { data() { return { searchSrt: "", + chooseId: "", // props: { // label: "name", // }, treeData: [], } }, - props: ['edit', 'clickEvent', 'contextMenuEvent'], + props: ['edit', 'clickEvent', 'chooseIdChange'], created() { // this.$axios({ // method: 'get', @@ -107,7 +113,14 @@ export default { loadNode: function (node, resolve) { console.log(22222) console.log(node) - if (node.level === 0 || node.data.id.length < 8) { + if (node.level === 0) { + resolve([{ + id: "", + label: "根资源组", + isLeaf: false, + type: 0 + }]); + } else if (node.data.id.length < 8) { this.$axios({ method: 'get', url: `/api/region/tree/list`, @@ -115,7 +128,7 @@ export default { query: this.searchSrt, parent: node.data.id } - }).then((res)=> { + }).then((res) => { if (res.data.code === 0) { resolve(res.data.data); } @@ -123,7 +136,7 @@ export default { }).catch(function (error) { console.log(error); }); - }else { + } else { resolve([]); } }, @@ -176,7 +189,8 @@ export default { reset: function () { this.$forceUpdate(); }, - contextmenuEventHandler: function (event,data,node,element){ + contextmenuEventHandler: function (event, data, node, element) { + console.log(node.level) if (node.data.type === 1) { data.parentId = node.parent.data.id; this.$contextmenu({ @@ -187,10 +201,10 @@ export default { disabled: false, onClick: () => { this.$axios({ - method:"delete", - url:"/api/platform/catalog/relation/del", + method: "delete", + url: "/api/platform/catalog/relation/del", data: data - }).then((res)=>{ + }).then((res) => { console.log("移除成功") node.parent.loaded = false node.parent.expand(); @@ -204,7 +218,7 @@ export default { customClass: "custom-class", // 自定义菜单 class zIndex: 3000, // 菜单样式 z-index }); - }else if (node.data.type === 0){ + } else if (node.data.type === 0) { this.$contextmenu({ items: [ { @@ -224,9 +238,9 @@ export default { } }, { - label: "修改节点", + label: "重命名", icon: "el-icon-edit", - disabled: false, + disabled: node.level === 1, onClick: () => { this.editCatalog(data, node); } @@ -234,14 +248,14 @@ export default { { label: "删除节点", icon: "el-icon-delete", - disabled: false, + disabled: node.level === 1, onClick: () => { this.$confirm('确定删除?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { - this.removeCatalog(data.id, node) + this.removeRegion(data.id, node) }).catch(() => { }); @@ -276,30 +290,43 @@ export default { return false; }, - refreshNode: function (node){ + removeRegion: function (id, node) { + this.$axios({ + method: "delete", + url: `/api/region/delete`, + params: { + deviceId: id, + } + }).then((res) => { + if (res.data.code === 0) { + console.log("移除成功") + node.parent.loaded = false + node.parent.expand(); + } + }) + .catch(function (error) { + console.log(error); + }); + }, + refreshNode: function (node) { node.loaded = false node.expand(); }, - addRegion: function (id, node){ + addRegion: function (id, node) { console.log(node) - this.$refs.regionCode.openDialog(code=>{ - - console.log(this.form) - console.log("code===> " + code) - this.form.gbDeviceId = code; - console.log("code22===> " + code) + this.$refs.regionCode.openDialog(form => { node.loaded = false node.expand(); }, id); }, - nodeClickHandler: function (data, node, tree){ + nodeClickHandler: function (data, node, tree) { console.log(data) console.log(node) - this.chooseId = data.id; - this.chooseName = data.name; - if (this.catalogIdChange)this.catalogIdChange(this.chooseId, this.chooseName); + // this.chooseId = data.id; + // this.chooseName = data.name; + // if (this.catalogIdChange)this.catalogIdChange(this.chooseId, this.chooseName); } }, destroyed() { @@ -325,4 +352,7 @@ export default { .device-offline { color: #727272; } +.custom-tree-node .el-radio__label { + padding-left: 4px !important; +} diff --git a/web_src/src/components/dialog/regionCode.vue b/web_src/src/components/dialog/regionCode.vue index 2e12d514..3b89ba31 100644 --- a/web_src/src/components/dialog/regionCode.vue +++ b/web_src/src/components/dialog/regionCode.vue @@ -14,39 +14,33 @@
{{ allVal[0].val }}
{{ allVal[0].meaning }}
- - - {{ item.name }} - {{ item.deviceId }} - - + + {{ item.name }} - {{ item.deviceId }} +
{{ allVal[1].val?allVal[1].val:"--" }}
{{ allVal[1].meaning }}
- - - 不添加 - - - {{ item.name }} - {{ item.deviceId.substring(2) }} - - + + 不添加 + + + {{ item.name }} - {{ item.deviceId.substring(2) }} +
{{ allVal[2].val?allVal[2].val:"--" }}
{{ allVal[2].meaning }}
- - - 不添加 - - - {{ item.name }} - {{ item.deviceId.substring(4) }} - - + + 不添加 + + + {{ item.name }} - {{ item.deviceId.substring(4) }} +
请手动输入基层接入单位编码,两位数字 @@ -136,21 +130,64 @@ export default { }, methods: { openDialog: function (endCallBck, parentDeviceId, code, lockContent) { - console.log(code) - console.log(parentDeviceId) this.showVideoDialog = true this.activeKey= '0'; this.regionList = [] this.form.parentDeviceId = parentDeviceId - - this.getRegionList() - if (typeof code != 'undefined' && code.length === 8) { - console.log(111) - this.allVal[0].val = code.substring(0, 2) - this.allVal[1].val = code.substring(2, 4) - this.allVal[2].val = code.substring(4, 6) - this.allVal[3].val = code.substring(6, 8) + this.allVal = [ + { + id: [1, 2], + meaning: '省级编码', + val: '11', + type: '中心编码', + lock: false, + }, + { + id: [3, 4], + meaning: '市级编码', + val: '', + type: '中心编码', + lock: false, + }, + { + id: [5, 6], + meaning: '区级编码', + val: '', + type: '中心编码', + lock: false, + }, + { + id: [7, 8], + meaning: '基层接入单位编码', + val: '', + type: '中心编码', + lock: false, + } + ] + if (parentDeviceId) { + console.log(parentDeviceId) + console.log(parentDeviceId.length) + if (parentDeviceId.length >= 2) { + this.allVal[0].val = parentDeviceId.substring(0, 2) + this.activeKey = "1" + } + if (parentDeviceId.length >= 4) { + this.allVal[1].val = parentDeviceId.substring(2, 4) + this.activeKey = "2" + } + if (parentDeviceId.length >= 6) { + this.allVal[2].val = parentDeviceId.substring(4, 6) + this.activeKey = "3" + } } + this.getRegionList() + // if (typeof code != 'undefined' && code.length === 8) { + // this.allVal[0].val = code.substring(0, 2) + // this.allVal[1].val = code.substring(2, 4) + // this.allVal[2].val = code.substring(4, 6) + // this.allVal[3].val = code.substring(6, 8) + // } + console.log(this.allVal) this.endCallBck = endCallBck; }, @@ -246,7 +283,8 @@ export default { closeModel: function (){ this.showVideoDialog = false }, - deviceChange: function (){ + deviceChange: function (item){ + console.log(item) let code = this.allVal[0].val if (this.allVal[1].val) { code += this.allVal[1].val @@ -263,22 +301,29 @@ export default { this.allVal[3].val = "" } this.form.deviceId = code + if (item) { + this.form.name = item.name + } + }, handleOk: function() { - const code = - this.allVal[0].val + - this.allVal[1].val + - this.allVal[2].val + - this.allVal[3].val + - this.allVal[4].val + - this.allVal[5].val + - this.allVal[6].val + - this.allVal[7].val - console.log(code) - if (this.endCallBck) { - this.endCallBck(code) - } - this.showVideoDialog = false + this.$axios({ + method: 'post', + url: "/api/region/add/", + data: this.form + }).then((res) => { + if (res.data.code === 0) { + if (typeof this.endCallBck == "function") { + this.endCallBck(this.form) + } + this.showVideoDialog = false + } else { + this.$message.error(res.data.msg); + } + }).catch((error) => { + this.$message.error(error); + }); + } }, }; diff --git a/web_src/src/components/region.vue b/web_src/src/components/region.vue index abe39526..00163038 100755 --- a/web_src/src/components/region.vue +++ b/web_src/src/components/region.vue @@ -2,7 +2,7 @@
- +
+ header-row-class-name="table-header" @selection-change="handleSelectionChange"> + + @@ -84,27 +86,23 @@ export default { searchSrt: "", channelType: "", online: "", - winHeight: window.innerHeight - 200, + winHeight: window.innerHeight - 180, currentPage: 1, count: 15, total: 0, loading: false, loadSnap: {}, + regionId: "" }; }, - mounted() { + created() { this.initData(); - }, destroyed() {}, methods: { initData: function () { - if (typeof (this.parentChannelId) == "undefined" || this.parentChannelId == 0) { - this.getChannelList(); - } else { - this.showSubchannels(); - } + this.getChannelList(); }, currentChange: function (val) { this.currentPage = val; @@ -116,28 +114,19 @@ export default { }, getChannelList: function () { let that = this; - if (typeof (this.$route.params.deviceId) == "undefined") return; this.$axios({ method: 'get', - url: `/api/device/query/devices/${this.$route.params.deviceId}/channels`, + url: `/api/common/channel/list`, params: { page: that.currentPage, count: that.count, query: that.searchSrt, - online: that.online, - channelType: that.channelType + online: that.online } }).then(function (res) { if (res.data.code === 0) { that.total = res.data.data.total; - that.deviceChannelList = res.data.data.list; - that.deviceChannelList.forEach(e => { - e.ptzType = e.ptzType + ""; - that.$set(e, "location", ""); - if (e.longitude && e.latitude) { - that.$set(e, "location", e.longitude + "," + e.latitude); - } - }); + that.channelList = res.data.data.list; // 防止出现表格错位 that.$nextTick(() => { that.$refs.channelListTable.doLayout(); @@ -148,7 +137,14 @@ export default { console.log(error); }); }, + handleSelectionChange: function (val){ + console.log(val) + }, add: function (row) { + if (!this.regionId) { + this.$message.info("请选择左侧行政区划节点") + } + }, remove: function (row) { }, @@ -165,13 +161,10 @@ export default { this.initData(); }, treeNodeClickEvent: function (device, data, isCatalog) { - console.log(device) - if (!!!data.channelId) { - this.parentChannelId = device.deviceId; - } else { - this.parentChannelId = data.channelId; - } - this.initData(); + + }, + chooseIdChange: function (id) { + this.regionId = id; }, } };