wu.jian2 1 rok pred
rodič
commit
1b59a2a042
35 zmenil súbory, kde vykonal 645 pridanie a 160 odobranie
  1. 3 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenFlyMapChart.java
  2. 23 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/extend/DataRoomExtendClient.java
  3. 17 1
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/extend/IDataRoomExtendService.java
  4. 37 6
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java
  5. 35 8
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java
  6. 8 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dao/DataRoomMapDao.java
  7. 1 1
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapDTO.java
  8. 2 2
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapRepeatDTO.java
  9. 2 2
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/MapSearchDTO.java
  10. 2 2
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/entity/DataRoomMapEntity.java
  11. 17 2
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/IDataRoomMapService.java
  12. 123 17
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java
  13. 26 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/vo/DataRoomMapDataVO.java
  14. 10 1
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/vo/DataRoomMapVO.java
  15. 17 3
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java
  16. 9 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java
  17. 16 5
      DataRoom/dataroom-core/src/main/resources/mapper/DataRoomMapDao.xml
  18. 1 1
      DataRoom/dataroom-server/src/main/resources/init-h2.sql
  19. 1 1
      DataRoom/doc/init.sql
  20. 1 1
      DataRoom/doc/update.sql
  21. 1 1
      data-room-ui/packages/BasicComponents/Map/settingConfig.js
  22. 105 41
      data-room-ui/packages/BigScreenDesign/DataViewDialog/index.vue
  23. 1 2
      data-room-ui/packages/BizComponent/Preview.vue
  24. 48 4
      data-room-ui/packages/BizComponent/config/defaultEchartsConfig.js
  25. 59 36
      data-room-ui/packages/BizComponent/index.vue
  26. 40 1
      data-room-ui/packages/ComponentList/EditForm.vue
  27. 5 1
      data-room-ui/packages/G2Plots/进度图/仪表盘.js
  28. 6 2
      data-room-ui/packages/G2Plots/进度图/矩形水波图.js
  29. 5 1
      data-room-ui/packages/G2Plots/进度图/进度仪表盘.js
  30. 5 1
      data-room-ui/packages/G2Plots/进度图/进度环图.js
  31. 6 1
      data-room-ui/packages/G2Plots/进度图/钻石水波图.js
  32. 7 10
      data-room-ui/packages/MapDataManagement/src/AddForm.vue
  33. 1 2
      data-room-ui/packages/MapDataManagement/src/EditForm.vue
  34. 3 2
      data-room-ui/packages/MapDataManagement/src/index.vue
  35. 2 2
      data-room-ui/packages/Render/Configuration.vue

+ 3 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenFlyMapChart.java

@@ -26,6 +26,9 @@ public class ScreenFlyMapChart extends Chart{
     @Data
     public static class Customize {
 
+        @ApiModelProperty(notes = "地图id")
+        private String mapId;
+
         @ApiModelProperty(notes = "是否显示文字")
         private Boolean mapName;
 

+ 23 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/extend/DataRoomExtendClient.java

@@ -3,6 +3,8 @@ package com.gccloud.dataroom.core.module.manage.extend;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @author hongyang
  * @version 1.0
@@ -25,4 +27,25 @@ public class DataRoomExtendClient {
         }
     }
 
+    /**
+     * 大屏新增后的处理
+     * @param code 新增的大屏code
+     */
+    public void afterAdd(String code) {
+        if (extendService != null) {
+            extendService.afterAdd(code);
+        }
+    }
+
+    /**
+     * 大屏删除后的处理
+     * @param code 删除的大屏code
+     */
+    public void afterDelete(String code) {
+        if (extendService != null) {
+            extendService.afterDelete(code);
+        }
+    }
+
+
 }

+ 17 - 1
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/extend/IDataRoomExtendService.java

@@ -1,5 +1,7 @@
 package com.gccloud.dataroom.core.module.manage.extend;
 
+import java.util.List;
+
 /**
  * 大屏扩展接口
  * @author hongyang
@@ -11,8 +13,22 @@ public interface IDataRoomExtendService {
     /**
      * 大屏删除拓展
      * 会在大屏删除后调用
+     * 已废弃,请使用afterDelete方法
      * @param code
      */
-    void deleteByCode(String code);
+    @Deprecated
+    default void deleteByCode(String code) {}
+
+    /**
+     * 大屏新增后的处理, 可在此处处理权限等
+     * @param code 新增的大屏code
+     */
+    default void afterAdd(String code) {}
+
+    /**
+     * 大屏删除后的处理, 可在此处处理权限等
+     * @param code 删除的大屏code
+     */
+    default void afterDelete(String code) {}
 
 }

+ 37 - 6
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java

@@ -14,11 +14,11 @@ import com.gccloud.dataroom.core.module.manage.extend.DataRoomExtendClient;
 import com.gccloud.dataroom.core.module.manage.service.IDataRoomPageService;
 import com.gccloud.dataroom.core.module.template.entity.PageTemplateEntity;
 import com.gccloud.dataroom.core.module.template.service.IPageTemplateService;
+import com.gccloud.dataroom.core.permission.DataRoomPermissionClient;
 import com.gccloud.dataroom.core.utils.CodeGenerateUtils;
 import com.gccloud.common.exception.GlobalException;
 import com.gccloud.common.utils.AssertUtils;
 import com.gccloud.common.utils.BeanConvertUtils;
-import com.gccloud.common.utils.QueryWrapperUtils;
 import com.gccloud.common.vo.PageVO;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +34,7 @@ import java.io.IOException;
 import java.util.Base64;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author hongyang
@@ -54,6 +55,9 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
     @Resource
     private DataRoomExtendClient dataRoomExtendClient;
 
+    @Resource
+    private DataRoomPermissionClient permissionClient;
+
     @Override
     public String add(DataRoomPageDTO bigScreenPageDTO) {
         if (StringUtils.isBlank(bigScreenPageDTO.getCode())) {
@@ -80,6 +84,7 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
         AssertUtils.isTrue(!checkNameRepeat(bigScreenEntity), "名称重复");
         AssertUtils.isTrue(!checkCodeRepeat(bigScreenEntity), "编码重复");
         this.save(bigScreenEntity);
+        dataRoomExtendClient.afterAdd(bigScreenEntity.getCode());
         return bigScreenEntity.getCode();
     }
 
@@ -171,16 +176,39 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
         if (StringUtils.isBlank(searchDTO.getType())) {
             throw new GlobalException("类型不能为空");
         }
-        LambdaQueryWrapper<PageEntity> queryWrapper = QueryWrapperUtils.wrapperLike(new LambdaQueryWrapper<>(), searchDTO.getSearchKey(), PageEntity::getName);
+        LambdaQueryWrapper<PageEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.like(StringUtils.isNotBlank(searchDTO.getSearchKey()), PageEntity::getName, searchDTO.getSearchKey());
         if (StringUtils.isNotBlank(searchDTO.getParentCode())) {
             queryWrapper.eq(PageEntity::getParentCode, searchDTO.getParentCode());
         }
         queryWrapper.eq(PageEntity::getType, searchDTO.getType());
-        queryWrapper.select(PageEntity::getId, PageEntity::getAppCode, PageEntity::getCode, PageEntity::getName, PageEntity::getParentCode, PageEntity::getOrderNum, PageEntity::getCoverPicture, PageEntity::getUpdateDate);
+        queryWrapper.select(PageEntity::getCode);
+        List<PageEntity> idEntityList = this.list(queryWrapper);
+        if (idEntityList == null || idEntityList.isEmpty()) {
+            PageVO<PageEntity> pageVO = new PageVO<>();
+            pageVO.setList(Lists.newArrayList());
+            return pageVO;
+        }
+        List<String> codeList = idEntityList.stream().map(PageEntity::getCode).collect(Collectors.toList());
+        List<String> filterByPermission = permissionClient.filterByPermission(codeList);
+        if (filterByPermission == null || filterByPermission.isEmpty()) {
+            PageVO<PageEntity> pageVO = new PageVO<>();
+            pageVO.setList(Lists.newArrayList());
+            return pageVO;
+        }
+        LambdaQueryWrapper<PageEntity> reQueryWrapper =  new LambdaQueryWrapper<>();
+        if (idEntityList.size() == filterByPermission.size()) {
+            // 说明没有过滤掉任何一个, 按照原来的条件查询
+            reQueryWrapper = queryWrapper;
+        } else {
+            // 说明过滤掉了一些, 按照过滤后的编码查询
+            reQueryWrapper.in(PageEntity::getCode, filterByPermission);
+        }
+        reQueryWrapper.select(PageEntity::getId, PageEntity::getAppCode, PageEntity::getCode, PageEntity::getName, PageEntity::getParentCode, PageEntity::getOrderNum, PageEntity::getCoverPicture, PageEntity::getUpdateDate);
         // 优先序号升序,其次创建时间降序
-        queryWrapper.orderByAsc(PageEntity::getOrderNum);
-        queryWrapper.orderByDesc(PageEntity::getCreateDate);
-        PageVO<PageEntity> page = page(searchDTO, queryWrapper);
+        reQueryWrapper.orderByAsc(PageEntity::getOrderNum);
+        reQueryWrapper.orderByDesc(PageEntity::getCreateDate);
+        PageVO<PageEntity> page = this.page(searchDTO, reQueryWrapper);
         List<PageEntity> list = page.getList();
         if (list == null || list.isEmpty()) {
             return page;
@@ -242,6 +270,7 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
             chart.setCode(CodeGenerateUtils.generate(chart.getType() == null ? "chart" : chart.getType()));
         }
         this.save(screenEntity);
+        dataRoomExtendClient.afterAdd(screenEntity.getCode());
         return screenEntity.getCode();
     }
 
@@ -253,5 +282,7 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
         PAGE_ENTITY_CACHE.invalidate(code);
         // 调用拓展接口
         dataRoomExtendClient.deleteByCode(code);
+        // 移除权限拓展
+        dataRoomExtendClient.afterDelete(code);
     }
 }

+ 35 - 8
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java

@@ -3,6 +3,7 @@ package com.gccloud.dataroom.core.module.map.controller;
 import com.gccloud.common.utils.BeanConvertUtils;
 import com.gccloud.common.vo.R;
 import com.gccloud.dataroom.core.module.map.dto.DataRoomMapRepeatDTO;
+import com.gccloud.dataroom.core.module.map.vo.DataRoomMapDataVO;
 import com.gccloud.dataroom.core.module.map.vo.DataRoomMapVO;
 import com.gccloud.dataroom.core.module.map.vo.MapChildVO;
 import com.gccloud.dataroom.core.module.map.dto.DataRoomMapDTO;
@@ -72,10 +73,10 @@ public class DataRoomMapController {
         return R.success();
     }
 
-    @GetMapping("/getMapChildFromGeoJson/{code}")
-    @ApiOperation(value = "根据父编码解析父级json中的子级", position = 60, notes = "根据父编码解析父级json中的子级", produces = MediaType.APPLICATION_JSON_VALUE)
-    public R<List<MapChildVO>> getMapChildFromGeoJson(@PathVariable String code) {
-        List<MapChildVO> list = dataRoomMapService.getChildFromGeo(code);
+    @GetMapping("/getMapChildFromGeoJson/{id}")
+    @ApiOperation(value = "根据地图id解析json中的子级", position = 60, notes = "根据地图id解析json中的子级", produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<List<MapChildVO>> getMapChildFromGeoJson(@PathVariable String id) {
+        List<MapChildVO> list = dataRoomMapService.getChildFromGeo(id);
         return R.success(list);
     }
 
@@ -89,11 +90,23 @@ public class DataRoomMapController {
     }
 
 
-    @GetMapping("/data/{id}")
+    @GetMapping("/data/{parentId}/{code}")
     @ApiOperation(value = "数据", position = 80, notes = "地图数据数据", produces = MediaType.APPLICATION_JSON_VALUE)
-    public R<String> data(@PathVariable String id) {
-        DataRoomMapEntity info = dataRoomMapService.info(id);
-        return R.success(info.getGeoJson());
+    public R<DataRoomMapDataVO> data(@PathVariable String parentId, @PathVariable String code) {
+        DataRoomMapEntity info = dataRoomMapService.getByParentIdAndCode(parentId, code);
+        DataRoomMapDataVO vo = new DataRoomMapDataVO();
+        // 如果没有找到该地图,或地图没有上传geojson数据,
+        if (info == null) {
+            vo.setAvailable(0);
+            return R.success(vo);
+        }
+        vo.setAvailable(0);
+        if (info.getUploadedGeoJson().equals(1)) {
+            vo.setAvailable(1);
+        }
+        vo.setGeoJson(info.getGeoJson());
+        vo.setId(info.getId());
+        return R.success(vo);
     }
 
 
@@ -113,5 +126,19 @@ public class DataRoomMapController {
     }
 
 
+    @GetMapping("/tree/{level}")
+    @ApiOperation(value = "树", position = 110, notes = "地图数据树", produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<List<DataRoomMapVO>> tree(@PathVariable String level) {
+        int levelInt = 0;
+        try {
+            levelInt = Integer.parseInt(level);
+        } catch (NumberFormatException e) {
+            return R.error("地图层级参数错误");
+        }
+        List<DataRoomMapVO> list = dataRoomMapService.getAvailableTree(levelInt);
+        return R.success(list);
+    }
+
+
 
 }

+ 8 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dao/DataRoomMapDao.java

@@ -23,4 +23,12 @@ public interface DataRoomMapDao extends BaseMapper<DataRoomMapEntity> {
      */
     List<DataRoomMapVO> getList(@Param("searchDTO") MapSearchDTO searchDTO);
 
+    /**
+     * 根据层级获取地图列表
+     * 列表包括所有目标层级的地图,以及目标层级的父地图...
+     * @param level
+     * @return
+     */
+    List<DataRoomMapEntity> getMapByLevel(@Param("level") Integer level);
+
 }

+ 1 - 1
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapDTO.java

@@ -15,7 +15,7 @@ public class DataRoomMapDTO {
     private String id;
 
     @ApiModelProperty(notes = "父级编码")
-    private String parentCode;
+    private String parentId;
 
     @ApiModelProperty(notes = "地图编码")
     private String mapCode;

+ 2 - 2
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapRepeatDTO.java

@@ -14,8 +14,8 @@ public class DataRoomMapRepeatDTO {
     @ApiModelProperty(notes = "主键")
     private String id;
 
-    @ApiModelProperty(notes = "父级编码")
-    private String parentCode;
+    @ApiModelProperty(notes = "父级地图id")
+    private String parentId;
 
     @ApiModelProperty(notes = "地图编码")
     private String mapCode;

+ 2 - 2
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/MapSearchDTO.java

@@ -12,8 +12,8 @@ import lombok.Data;
 @Data
 public class MapSearchDTO extends SearchDTO {
 
-    @ApiModelProperty(notes = "父级编码")
-    private String parentCode;
+    @ApiModelProperty(notes = "父级地图id")
+    private String parentId;
 
     @ApiModelProperty(notes = "层级")
     private Integer level;

+ 2 - 2
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/entity/DataRoomMapEntity.java

@@ -21,8 +21,8 @@ import lombok.experimental.Accessors;
 @ToString(callSuper = true)
 public class DataRoomMapEntity extends SuperEntity {
 
-    @ApiModelProperty(notes = "父级编码")
-    private String parentCode;
+    @ApiModelProperty(notes = "父级地图id")
+    private String parentId;
 
     @ApiModelProperty(notes = "地图编码")
     private String mapCode;

+ 17 - 2
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/IDataRoomMapService.java

@@ -18,9 +18,9 @@ import java.util.List;
 public interface IDataRoomMapService extends ISuperService<DataRoomMapEntity> {
 
     /**
-     * 顶级父级编码
+     * 顶级父级id
      */
-    String SUPER_PARENT_CODE = "0";
+    String SUPER_PARENT_ID = "0";
 
 
     /**
@@ -31,6 +31,13 @@ public interface IDataRoomMapService extends ISuperService<DataRoomMapEntity> {
     List<DataRoomMapVO> getList(MapSearchDTO searchDTO);
 
 
+    /**
+     * 获取可用的地图树
+     * @param level
+     * @return
+     */
+    List<DataRoomMapVO> getAvailableTree(Integer level);
+
     /**
      * 添加地图
      * @param mapDTO
@@ -66,6 +73,14 @@ public interface IDataRoomMapService extends ISuperService<DataRoomMapEntity> {
      */
     DataRoomMapEntity info(String id);
 
+    /**
+     * 根据父级id和编码获取地图
+     * @param parentId
+     * @param code
+     * @return
+     */
+    DataRoomMapEntity getByParentIdAndCode(String parentId, String code);
+
 
     /**
      * 获取地图

+ 123 - 17
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java

@@ -20,7 +20,9 @@ import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -36,14 +38,98 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
 
     @Override
     public List<DataRoomMapVO> getList(MapSearchDTO searchDTO) {
-        List<DataRoomMapVO> list = this.baseMapper.getList(searchDTO);
-        return list;
+        return this.baseMapper.getList(searchDTO);
     }
 
+    @Override
+    public List<DataRoomMapVO> getAvailableTree(Integer level) {
+        // 根据层级,如果某个地图的某个子级(或子级的子级...)也符合该层级,那么把该地图也返回
+        LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(DataRoomMapEntity::getId, DataRoomMapEntity::getLevel, DataRoomMapEntity::getParentId,
+                DataRoomMapEntity::getMapCode, DataRoomMapEntity::getName, DataRoomMapEntity::getEnableDown, DataRoomMapEntity::getUploadedGeoJson);
+        queryWrapper.le(DataRoomMapEntity::getLevel, level);
+        List<DataRoomMapEntity> list = list(queryWrapper);
+        // 转成树形结构
+        return this.convertToTree(list, level);
+    }
+
+
+    /**
+     * 转树形结构
+     * @param list
+     * @return
+     */
+    private List<DataRoomMapVO> convertToTree(List<DataRoomMapEntity> list, Integer targetLevel) {
+        List<DataRoomMapVO> voList = BeanConvertUtils.convert(list, DataRoomMapVO.class);
+        // 根节点
+        List<DataRoomMapVO> rootList = Lists.newArrayList();
+        // 组装id为key,地图为value的map
+        Map<String, DataRoomMapVO> map = new HashMap<>();
+        voList.forEach(vo -> map.put(vo.getId(), vo));
+        // 目标层级的地图
+        List<DataRoomMapVO> targetLevelList = voList.stream().filter(vo -> vo.getLevel().equals(targetLevel)).collect(Collectors.toList());
+        // 目标层级的地图,以及其父级地图...
+        List<DataRoomMapVO> match = Lists.newArrayList(targetLevelList);
+        for (DataRoomMapVO mapVO : targetLevelList) {
+            mapVO.setDisabled(!mapVO.getUploadedGeoJson().equals(YES));
+            if (mapVO.getLevel().equals(0)) {
+                // 已经是最顶级了,没有父级了
+                continue;
+            }
+            DataRoomMapVO parent = map.get(mapVO.getParentId());
+            if(parent == null) {
+                continue;
+            }
+            // 将目标层级的地图,以及其父级地图...加入到match中
+            this.getParentMap(parent, map, match);
+        }
+        for (DataRoomMapVO vo : match) {
+            if (vo.getParentId().equals(SUPER_PARENT_ID)) {
+                rootList.add(vo);
+                continue;
+            }
+            DataRoomMapVO parent = map.get(vo.getParentId());
+            if (parent == null) {
+                continue;
+            }
+            if (parent.getChildren() == null) {
+                parent.setChildren(Lists.newArrayList());
+            }
+            parent.getChildren().add(vo);
+        }
+        return rootList;
+    }
+
+    /**
+     * 获取地图的父级地图,以及父级地图的父级地图...
+     * @param parentMap
+     * @param mapIdMap
+     * @param match
+     */
+    private void getParentMap(DataRoomMapVO parentMap, Map<String, DataRoomMapVO> mapIdMap, List<DataRoomMapVO> match) {
+        if (parentMap == null) {
+            return;
+        }
+        if (match.contains(parentMap)) {
+            // 已经包含了,不需要再加入了
+            return;
+        }
+        match.add(parentMap);
+        if (parentMap.getLevel().equals(0)) {
+            // 已经是最顶级了,没有父级了
+            return;
+        }
+        DataRoomMapVO parent = mapIdMap.get(parentMap.getParentId());
+        this.getParentMap(parent, mapIdMap, match);
+    }
+
+
+
+
     @Override
     public String add(DataRoomMapDTO mapDTO) {
-        if (StringUtils.isBlank(mapDTO.getParentCode())) {
-            mapDTO.setParentCode(SUPER_PARENT_CODE);
+        if (StringUtils.isBlank(mapDTO.getParentId())) {
+            mapDTO.setParentId(SUPER_PARENT_ID);
         }
         if (StringUtils.isBlank(mapDTO.getMapCode())) {
             throw new GlobalException("地图编码不能为空");
@@ -91,10 +177,10 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
 
     /**
      * 从geoJson中解析下一级的基础数据,保存到数据库
-     * @param old
+     * @param mapEntity
      * @param geoJson
      */
-    private void parseNextLevelAndSave(DataRoomMapEntity old, String geoJson) {
+    private void parseNextLevelAndSave(DataRoomMapEntity mapEntity, String geoJson) {
         JSONObject jsonObject = new JSONObject(geoJson);
         JSONArray features = jsonObject.getJSONArray("features");
         if (features == null || features.length() == 0) {
@@ -108,8 +194,8 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
                 continue;
             }
             DataRoomMapEntity childMapEntity = new DataRoomMapEntity();
-            childMapEntity.setParentCode(old.getMapCode());
-            childMapEntity.setLevel(old.getLevel() + 1);
+            childMapEntity.setParentId(mapEntity.getId());
+            childMapEntity.setLevel(mapEntity.getLevel() + 1);
             childMapEntity.setMapCode(properties.getString("name"));
             childMapEntity.setName(properties.getString("name"));
             childMapEntity.setEnableDown(NO);
@@ -131,7 +217,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
             return;
         }
         LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(DataRoomMapEntity::getParentCode, mapEntity.getMapCode());
+        queryWrapper.eq(DataRoomMapEntity::getParentId, mapEntity.getId());
         List<DataRoomMapEntity> list = this.list(queryWrapper);
         if (list != null && list.size() > 0) {
             throw new GlobalException("该地图下存在子地图,不能删除");
@@ -154,7 +240,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
             return;
         }
         LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(DataRoomMapEntity::getParentCode, mapEntity.getMapCode());
+        queryWrapper.eq(DataRoomMapEntity::getParentId, mapEntity.getId());
         List<DataRoomMapEntity> list = this.list(queryWrapper);
         if (list != null && list.size() > 0) {
             for (DataRoomMapEntity entity : list) {
@@ -173,6 +259,27 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
         return mapEntity;
     }
 
+    @Override
+    public DataRoomMapEntity getByParentIdAndCode(String parentId, String code) {
+        if (StringUtils.isBlank(parentId)) {
+            parentId = SUPER_PARENT_ID;
+        }
+        if (StringUtils.isBlank(code)) {
+            throw new GlobalException("地图编码不能为空");
+        }
+        LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DataRoomMapEntity::getParentId, parentId);
+        queryWrapper.eq(DataRoomMapEntity::getMapCode, code);
+        List<DataRoomMapEntity> list = this.list(queryWrapper);
+        if (list == null || list.size() == 0) {
+            return null;
+        }
+        if (list.size() > 1) {
+            throw new GlobalException("地图编码重复");
+        }
+        return list.get(0);
+    }
+
     @Override
     public DataRoomMapEntity infoByMapCode(String mapCode) {
         LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
@@ -190,12 +297,12 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
 
     /**
      * 根据编码获取地图信息,取到geoJson,根据geoJson解析下一级的基础数据
-     * @param code
+     * @param id
      * @return
      */
     @Override
-    public List<MapChildVO> getChildFromGeo(String code) {
-        DataRoomMapEntity mapEntity = this.infoByMapCode(code);
+    public List<MapChildVO> getChildFromGeo(String id) {
+        DataRoomMapEntity mapEntity = this.getById(id);
         if (mapEntity.getUploadedGeoJson().equals(NO)) {
             return Lists.newArrayList();
         }
@@ -211,7 +318,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
         // 查询当前地图下的所有子地图
         LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(DataRoomMapEntity::getMapCode);
-        queryWrapper.eq(DataRoomMapEntity::getParentCode, code);
+        queryWrapper.eq(DataRoomMapEntity::getParentId, id);
         List<DataRoomMapEntity> list = this.list(queryWrapper);
         List<String> mapCodeList = list.stream().map(DataRoomMapEntity::getMapCode).collect(Collectors.toList());
         // 解析geoJson,获取下一级的基础数据
@@ -254,13 +361,12 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
         if (StringUtils.isBlank(mapDTO.getMapCode())) {
             throw new GlobalException("地图编码不能为空");
         }
-        if (StringUtils.isBlank(mapDTO.getParentCode())) {
+        if (StringUtils.isBlank(mapDTO.getParentId())) {
             throw new GlobalException("上级地图编码不能为空");
         }
-        // TODO 这里存在问题,因为编码只在某个地图下的某个层级下是唯一的,所以如果碰巧有两个地图下的某个层级下的编码相同,就会出现问题
         LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(DataRoomMapEntity::getMapCode, mapDTO.getMapCode());
-        queryWrapper.eq(DataRoomMapEntity::getParentCode, mapDTO.getParentCode());
+        queryWrapper.eq(DataRoomMapEntity::getParentId, mapDTO.getParentId());
         if (StringUtils.isNotBlank(mapDTO.getId())) {
             queryWrapper.ne(DataRoomMapEntity::getId, mapDTO.getId());
         }

+ 26 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/vo/DataRoomMapDataVO.java

@@ -0,0 +1,26 @@
+package com.gccloud.dataroom.core.module.map.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author hongyang
+ * @version 1.0
+ * @date 2023/9/4 17:16
+ */
+@Data
+public class DataRoomMapDataVO {
+
+    @ApiModelProperty(notes = "主键")
+    private String id;
+
+    @ApiModelProperty(notes = "是否支持下钻 0-否 1-是")
+    private Integer enableDown;
+
+    @ApiModelProperty(notes = "geo地图数据json")
+    private String geoJson;
+
+    @ApiModelProperty(notes = "是否可用")
+    private Integer available;
+
+}

+ 10 - 1
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/vo/DataRoomMapVO.java

@@ -3,6 +3,8 @@ package com.gccloud.dataroom.core.module.map.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @author hongyang
  * @version 1.0
@@ -15,7 +17,7 @@ public class DataRoomMapVO {
     private String id;
 
     @ApiModelProperty(notes = "父级编码")
-    private String parentCode;
+    private String parentId;
 
     @ApiModelProperty(notes = "地图编码")
     private String mapCode;
@@ -37,4 +39,11 @@ public class DataRoomMapVO {
 
     @ApiModelProperty(notes = "是否有子节点")
     private Boolean hasChildren;
+
+    @ApiModelProperty(notes = "子级")
+    private List<DataRoomMapVO> children;
+
+    @ApiModelProperty(notes = "是否禁用")
+    private Boolean disabled;
+
 }

+ 17 - 3
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java

@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * @author hongyang
@@ -14,7 +15,7 @@ import javax.servlet.http.HttpServletRequest;
 public class DataRoomPermissionClient {
 
     @Autowired(required = false)
-    private IDataRoomPermissionService tokenService;
+    private IDataRoomPermissionService permissionService;
 
 
     /**
@@ -25,13 +26,26 @@ public class DataRoomPermissionClient {
      */
     public boolean verifyDataPermission(HttpServletRequest request, String pageCode) {
         boolean verify = true;
-        if (tokenService != null) {
-            verify = tokenService.verifyDataPermission(request, pageCode);
+        if (permissionService != null) {
+            verify = permissionService.verifyDataPermission(request, pageCode);
         }
         return verify;
     }
 
 
+    /**
+     * 根据权限过滤
+     * @param allCode 全部的大屏code
+     * @return 当前用户有权限的大屏code
+     */
+    public List<String> filterByPermission(List<String> allCode) {
+        if (permissionService != null) {
+            return permissionService.filterByPermission(allCode);
+        }
+        return allCode;
+    }
+
+
 
 
 }

+ 9 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java

@@ -2,6 +2,7 @@ package com.gccloud.dataroom.core.permission;
 
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * @author hongyang
@@ -18,5 +19,13 @@ public interface IDataRoomPermissionService {
      */
     boolean verifyDataPermission(HttpServletRequest request, String pageCode);
 
+    /**
+     * 根据权限过滤
+     * @param allCode 全部的大屏code
+     * @return 当前用户有权限的大屏code
+     */
+    default List<String> filterByPermission(List<String> allCode) {
+        return allCode;
+    }
 
 }

+ 16 - 5
DataRoom/dataroom-core/src/main/resources/mapper/DataRoomMapDao.xml

@@ -6,7 +6,7 @@
     <!--  查询地图数据  -->
     <select id="getList" resultType="com.gccloud.dataroom.core.module.map.vo.DataRoomMapVO">
         SELECT id,
-               parent_code,
+               parent_id,
                map_code,
                name,
                level,
@@ -18,18 +18,18 @@
                create_by,
                update_by,
                del_flag,
-                map_code as curentMapcode,
+               id as curentMapId,
                CASE WHEN EXISTS(SELECT 1
                                 FROM big_screen_map
-                                WHERE parent_code = curentMapcode
+                                WHERE parent_id = curentMapId
                                   AND del_flag = 0)
                    THEN 1
                ELSE 0 END AS has_children
         FROM big_screen_map
         WHERE del_flag = 0
         <if test="searchDTO != null">
-            <if test="searchDTO.parentCode != null and searchDTO.parentCode != ''">
-                AND parent_code = #{searchDTO.parentCode}
+            <if test="searchDTO.parentId != null and searchDTO.parentId != ''">
+                AND parent_id = #{searchDTO.parentId}
             </if>
             <if test="searchDTO.searchKey != null and searchDTO.searchKey != ''">
                 AND (
@@ -51,5 +51,16 @@
 
     </select>
 
+    <select id="getMapByLevel" resultType="com.gccloud.dataroom.core.module.map.entity.DataRoomMapEntity">
+        select id, level, parent_id, map_code
+        from big_screen_map
+        where (level &lt; #{level}
+        and id in (select distinct parent_id from big_screen_map where del_flag != 0)
+        )
+        OR level = #{level}
+        and del_flag = 0
+    </select>
+
+
 
 </mapper>

+ 1 - 1
DataRoom/dataroom-server/src/main/resources/init-h2.sql

@@ -167,7 +167,7 @@ CREATE TABLE IF NOT EXISTS  ds_dataset_label (
 
 CREATE TABLE IF NOT EXISTS big_screen_map (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
-    parent_code VARCHAR(255) DEFAULT NULL COMMENT '父级地图编码',
+    parent_id VARCHAR(255) DEFAULT NULL COMMENT '父级地图id',
     map_code VARCHAR(255) DEFAULT NULL COMMENT '地图编码',
     name VARCHAR(255) DEFAULT NULL COMMENT '地图名称',
     geo_json CLOB DEFAULT NULL COMMENT '地图geoJson',

+ 1 - 1
DataRoom/doc/init.sql

@@ -191,7 +191,7 @@ DROP TABLE IF EXISTS `big_screen_map`;
 CREATE TABLE `big_screen_map`
 (
     `id`                bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `parent_code`       varchar(255)        DEFAULT NULL COMMENT '父级地图编码',
+    `parent_id`       varchar(255)        DEFAULT NULL COMMENT '父级地图id',
     `map_code`          varchar(255)        DEFAULT NULL COMMENT '地图编码',
     `name`              varchar(255)        DEFAULT NULL COMMENT '地图名称',
     `geo_json`          longtext            DEFAULT NULL COMMENT '地图geoJson',

+ 1 - 1
DataRoom/doc/update.sql

@@ -111,7 +111,7 @@ DROP TABLE IF EXISTS `big_screen_map`;
 CREATE TABLE `big_screen_map`
 (
     `id`                bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `parent_code`       varchar(255)        DEFAULT NULL COMMENT '父级地图编码',
+    `parent_id`       varchar(255)        DEFAULT NULL COMMENT '父级地图id',
     `map_code`          varchar(255)        DEFAULT NULL COMMENT '地图编码',
     `name`              varchar(255)        DEFAULT NULL COMMENT '地图名称',
     `geo_json`          longtext            DEFAULT NULL COMMENT '地图geoJson',

+ 1 - 1
data-room-ui/packages/BasicComponents/Map/settingConfig.js

@@ -58,7 +58,7 @@ const customConfig = {
     // 分割线颜色
     mapLineColor: 'rgba(53, 86, 165, 1)',
     fontGraphicColor: '#fff',
-    fontSize:'30',
+    fontSize: '30',
     // 是否开启下钻
     down: false,
     // 地图级别

+ 105 - 41
data-room-ui/packages/BigScreenDesign/DataViewDialog/index.vue

@@ -13,32 +13,42 @@
       :append-to-body="false"
       class="bs-dialog-wrap bs-el-dialog"
     >
-      <el-table
-        ref="table"
-        v-loading="loading"
-        class="bs-table bs-el-table"
-        height="300"
-        :data="dataList"
-      >
-        <el-table-column
-          v-for="(col,index) in columnData"
-          :key="index"
-          show-overflow-tooltip
-          :prop="col.alias"
-          :label="getLabel(col)"
-          align="center"
-        />
-      </el-table>
+      <div class="table-box">
+        <el-table
+          ref="table"
+          v-loading="loading"
+          class="bs-table bs-el-table"
+          height="300"
+          :data="dataList"
+        >
+          <el-table-column
+            v-for="(col,index) in columnData"
+            :key="index"
+            show-overflow-tooltip
+            :prop="col.alias"
+            :label="getLabel(col)"
+            align="center"
+          />
+        </el-table>
+      </div>
+
       <div
         slot="footer"
         class="dialog-footer"
       >
+        <el-button
+          class="bs-el-button-default cancel"
+          @click="cancel"
+        >
+          取消
+        </el-button>
         <DownloadExcel
           :data="dataList"
           :fields="fields"
           :name="chartTitle+'数据导出'"
           class="output-excel"
           :before-finish="exportHandler"
+          :before-generate="generate"
         >
           <el-button
             type="primary"
@@ -96,7 +106,7 @@ export default {
     getDataList (config) {
       this.loading = true
       // 如果是G2组件则需要从option里面取数据
-      if (config.type === 'customComponent' && (!config.dataSource.businessKey)) {
+      if (['customComponent', 'remoteComponent'].includes(config.type) && (!config.dataSource.businessKey)) {
         this.getDataByOption(config)
         this.fieldsFormat()
         this.loading = false
@@ -116,7 +126,9 @@ export default {
           if (Array.isArray(res.data)) {
             this.dataList = res.data || []
           } else {
-            // 如果返回的data不是数组,则是js数据集或者是http前端数据集,则直接从option中获取
+            // 如果返回的data不是数组,存在以下几种情况:则直接从option中获取
+            // 1、是组件绑定的是js数据集或者是http前端数据集,
+            // 2、是组件返回的模拟数据为null
             this.getDataByOption(config)
           }
           this.columnData = res.columnData || {}
@@ -128,22 +140,41 @@ export default {
     },
     // 通过option获取数据
     getDataByOption (config) {
-      const list = config.option.data || []
-      for (const key of Object.keys(list[0])) {
-        this.columnData[key] = {
-          aggregate: '',
-          alias: key,
-          originalColumn: key,
-          remark: key,
-          tableName: '',
-          type: 'varchar'
+      let list = []
+      if (config.chartType === 'Treemap') {
+        list = config.option.data.children
+      } else if (config.type === 'tables') {
+        list = config.option.tableData
+      } else {
+        list = config.option.data
+      }
+      let keyList = []
+      if (list && list.length) {
+        // 如果list[0]是对象
+        if (typeof list[0] === 'object' && list[0] !== null) {
+          keyList = Object.keys(list[0])
+        } else {
+          keyList = list
         }
+        for (const key of keyList) {
+          const _key = key + ''
+          this.columnData[_key] = {
+            aggregate: '',
+            alias: _key,
+            originalColumn: _key,
+            remark: _key,
+            tableName: '',
+            type: 'varchar'
+          }
+        }
+      } else {
+        this.columnData = {}
       }
-      this.dataList = list
+      this.dataList = list || []
     },
     // 获取表格的表头
     getLabel (col) {
-      return col.remark || col.originalColumn
+      return col.remark || col.alias
     },
     // 数据重置
     resetData () {
@@ -154,13 +185,32 @@ export default {
     },
     // 格式化fields
     fieldsFormat () {
-      for (const item in this.columnData) {
-        this.fields[this.columnData[item].remark || this.columnData[item].originalColumn] = this.columnData[item].originalColumn
+      if (this.columnData && Object.keys(this.columnData).length) {
+        for (const item in this.columnData) {
+          this.fields[this.columnData[item].remark || this.columnData[item].alias] = this.columnData[item].alias
+        }
+      } else {
+        this.fields = {}
+      }
+    },
+    // 取消
+    cancel () {
+      this.formVisible = false
+    },
+    generate (val) {
+      if (!Object.keys(this.fields).length) {
+        this.$message.warning('数据为空')
       }
+      this.formVisible = false
+      this.exportLoading = true
     },
     // 导出数据
     exportHandler () {
-      this.$message.success('导出数据')
+      this.exportLoading = false
+      if (Object.keys(this.fields).length) {
+        this.$message.success('数据导出成功')
+      }
+      this.formVisible = false
     }
   }
 }
@@ -170,8 +220,20 @@ export default {
 .bs-data-view-dialog{
   /deep/.el-dialog__body{
     background-color: var(--bs-background-2) !important;
-    max-height: unset!important;
-    min-height: unset!important;
+    height: 500px!important;
+    overflow-y: auto!important;
+  }
+  .table-box{
+    max-height: 500px; /* 设置最大高度,根据需要调整 */
+    overflow-y: auto; /* 当内容溢出时显示垂直滚动条 */
+  }
+  .dialog-footer{
+    display: flex;
+    justify-content: flex-end;
+    .cancel{
+      margin-right: 10px;
+      overflow-y: hidden;
+    }
   }
  .el-table th.el-table__cell.is-leaf, .el-table /deep/td.el-table__cell{
     border-bottom:none;
@@ -185,25 +247,27 @@ export default {
   .bs-el-table /deep/td.el-table__cell{
     color: #bcc9d4;
   }
-  /* 自定义滚动条样式 */
-  /deep/.el-table__body-wrapper::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
+  .el-table--scrollable-y /deep/.el-table__body-wrapper{
+    overflow-y: hidden;
+  }
+  /* 修改滚动条的样式 */
+  /deep/.el-dialog__body::-webkit-scrollbar {
+    width: 8px; /* 滚动条宽度 */
   }
 
-  /deep/.el-table__body-wrapper::-webkit-scrollbar-thumb {
+ /deep/.el-dialog__body::-webkit-scrollbar-thumb {
     background-color: #888; /* 滚动条拖动块颜色 */
     height: 30px;
     border-radius: 5px;
   }
 
-  /deep/.el-table__body-wrapper::-webkit-scrollbar-track {
+  /deep/.el-dialog__body::-webkit-scrollbar-track {
     background-color: transparent; /* 滚动条轨道颜色 */
   }
 
   /* 鼠标悬停在滚动条上时的样式 */
-  /deep/.el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
+  /deep/.el-dialog__body::-webkit-scrollbar-thumb:hover {
     background-color: #555;
-    cursor: pointer;
   }
 }
 </style>

+ 1 - 2
data-room-ui/packages/BizComponent/Preview.vue

@@ -39,7 +39,6 @@ export default {
         let setting = []
         // eslint-disable-next-line prefer-const, no-unused-vars
         let title = ''
-
         // eslint-disable-next-line prefer-const, no-unused-vars
         let data = []
         let g2Plots=g2Plot
@@ -203,7 +202,7 @@ export default {
     height: calc(100% - 40px);
     width: 100%;
     overflow: auto;
-    padding: 20px;
+    padding: 5px 20px;
     background-color: var(--bs-background-1);
   }
 }

+ 48 - 4
data-room-ui/packages/BizComponent/config/defaultEchartsConfig.js

@@ -120,6 +120,15 @@ const setting = [
     value: '',
     tabName: 'data'
   },
+  {
+    label: '柱形颜色',
+    type: 'colorPicker',
+    field: 'color',
+    optionField: 'color',
+    value: '#007aff',
+    tabName: 'custom',
+    groupName: 'graph'
+  },
   {
     label: 'x轴类型',
     type: 'input',
@@ -129,6 +138,33 @@ const setting = [
     tabName: 'custom',
     groupName: 'xAxis'
   },
+  {
+    label: '是否显示标签',
+    type: 'switch',
+    field: 'xAxis_axisLabel_show',
+    optionField: 'xAxis.axisLabel.show',
+    value: true,
+    tabName: 'custom',
+    groupName: 'xAxis'
+  },
+  {
+    label: '标签旋转角度',
+    type: 'inputNumber',
+    field: 'xAxis_axisLabel_rotate',
+    optionField: 'xAxis.axisLabel.rotate',
+    value: 0,
+    tabName: 'custom',
+    groupName: 'xAxis'
+  },
+  {
+    label: '标签颜色',
+    type: 'colorPicker',
+    field: 'xAxis_axisLabel_color',
+    optionField: 'xAxis.axisLabel.color',
+    value: '#fff',
+    tabName: 'custom',
+    groupName: 'xAxis'
+  },
   {
     label: 'y轴类型',
     type: 'input',
@@ -158,14 +194,19 @@ const option = {
   // 数据将要放入到哪个字段中
   dataKey: 'data',
   data,
-  color: '',
+  //柱状图颜色
+  color: '#007aff',
   appendPadding: [16, 16, 16, 16], // 设置图标的边距
   xField: 'Date',
   yField: 'scales',
-  smooth: true,
   xAxis: {
     type:'category',
-	  data: []
+	  data: [],
+	  axisLabel:{
+	   show:true,
+		color:'#fff',
+		rotate:0
+	  }
    },
   yAxis: {
     type: 'value'
@@ -173,7 +214,10 @@ const option = {
   series:[
 	{
 	  data: [],
-	  type:'line'
+	  type: 'bar',
+	  backgroundStyle: {
+       color: '#fff'
+      }
     }
   ]
 }

+ 59 - 36
data-room-ui/packages/BizComponent/index.vue

@@ -26,27 +26,19 @@
         <div class="left-vue-code component-code">
           <div class="code-tab-header">
             <div class="code-tab-left">
-              <div class="code-tab">
-                组件模板
-              </div>
-              <div
-                class="code-tab-btn"
-                @click="change('echarts')"
-              >
+              <div class="code-tab">组件模板</div>
+              <div class="code-tab-btn" @click="change('echart')">
                 echarts组件
               </div>
-              <div
-                class="code-tab-btn"
-                @click="change('g2')"
-              >
+              <div class="code-tab-btn" @click="change('g2plot')">
                 G2Plot组件
               </div>
-              <div
-                class="code-tab-btn"
-                @click="change('base')"
-              >
+              <div class="code-tab-btn" @click="change('native')">
                 原生组件
               </div>
+              <div class="code-tab-btn" @click="change('3DEchart')">
+                3D组件
+              </div>
             </div>
             <div class="upload-btn">
               <CusBtn @click="upload('vueContent')">
@@ -228,33 +220,63 @@ export default {
   methods: {
     getBizComponentInfo () {
       const code = this.$route.query.code
+      const type = this.$route.query.type
       if (code) {
         getBizComponentInfo(code).then(data => {
-          this.form = {
-            ...data,
-            name: data.name,
-            coverPicture: data.coverPicture,
-            settingContent: data.settingContent || defaultSettingContent,
-            vueContent: data.vueContent || defaultVueContent
+         if(type&&type==='g2plot'){
+            this.form = {
+              ...data,
+              name: data.name,
+              coverPicture: data.coverPicture,
+              settingContent: data.settingContent || defaultG2SettingContent,
+              vueContent: data.vueContent || defaultG2VueContent
+            }
+          }else if(type&&type==='echart'){
+            this.form = {
+              ...data,
+              name: data.name,
+              coverPicture: data.coverPicture,
+              settingContent: data.settingContent || defaultEchartsSettingContent,
+              vueContent: data.vueContent || defaultEchartsVueContent
+            }
+          }else{
+            this.form = {
+              ...data,
+              name: data.name,
+              coverPicture: data.coverPicture,
+              settingContent: data.settingContent || defaultSettingContent,
+              vueContent: data.vueContent || defaultVueContent
+            }
           }
+
           // this.$refs.vueContent.editor.setValue(this.form.vueContent)
           // this.$refs.settingContent.editor.setValue(this.form.settingContent)
         })
       }
     },
-    changeTemp (val) {
-      if (val == 'g2') {
-        this.form.settingContent = defaultG2SettingContent
-        this.form.vueContent = defaultG2VueContent
-      } else if (val == 'base') {
-        this.form.settingContent = defaultSettingContent
-        this.form.vueContent = defaultVueContent
-      } else if (val == 'echarts') {
-        this.form.settingContent = defaultEchartsSettingContent
-        this.form.vueContent = defaultEchartsVueContent
+    changeTemp(val){
+      if(val=='g2plot'){
+        this.form.settingContent=defaultG2SettingContent
+        this.form.vueContent=defaultG2VueContent
+      }else if(val=='native'){
+        this.form.settingContent=defaultSettingContent
+        this.form.vueContent=defaultVueContent
+      }else if(val=='echart'){
+        this.form.settingContent= defaultEchartsSettingContent
+        this.form.vueContent=defaultEchartsVueContent
       }
     },
-    change (val) {
+    change(val) {
+      if(val==='3DEchart') return this.$confirm('开发中。。。。', '提示', {
+        distinguishCancelAndClose: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        cancelButtonClass: 'cancel-btn',
+        type: 'warning',
+        customClass: 'bs-el-message-box'
+      }).then(() => {
+      }).catch((action) => {
+      })
       this.$confirm('确定替换为选中模板吗?未保存的代码将被覆盖!', '提示', {
         distinguishCancelAndClose: true,
         confirmButtonText: '确定',
@@ -454,8 +476,8 @@ export default {
       display: flex;
       justify-content: space-between;
       width: 100%;
-      height: 400px;
-      padding: 16px;
+      height: 354px;
+      padding: 5px 16px;
 
       .left-vue-code {
         width: 60%;
@@ -484,8 +506,9 @@ export default {
             align-items: center;
             justify-content: space-between;
             .code-tab-btn{
-              width: 90px;
+              // width: 90px;
               cursor: pointer;
+              text-align: center;
             }
             .code-tab {
               font-size: 14px;
@@ -511,7 +534,7 @@ export default {
         }
 
         .code-tab-content {
-          height: calc(100% - 40px);
+          height: calc(100% - 88px);
           background: var(--bs-background-1);
         }
       }

+ 40 - 1
data-room-ui/packages/ComponentList/EditForm.vue

@@ -28,6 +28,25 @@
             maxlength="30"
             class="bs-el-input"
           />
+        </el-form-item>
+         <el-form-item
+          label="组件类型"
+          v-if="type === 'bizComponent'"
+        >
+          <el-select
+            v-model="bizType"
+            class="bs-el-select"
+            popper-class="bs-el-select"
+            placeholder="请选择组件类型"
+            clearable
+          >
+            <el-option
+              v-for="resolutionRatioItem in BizList"
+              :key="resolutionRatioItem.value"
+              :label="resolutionRatioItem.label"
+              :value="resolutionRatioItem.value"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item
           v-if="type === 'component'"
@@ -126,8 +145,21 @@ export default {
   },
   data () {
     return {
+      bizType:'native',
       resolutionRatioValue: '',
       resolutionRatio: {},
+      BizList:[
+        {
+          label:'echarts组件',
+          value:'echarts'
+        }, {
+          label:'g2Plot组件',
+          value:'g2plot'
+        }, {
+          label:'基础组件',
+          value:'native'
+        },
+      ],
       resolutionRatioOptions: [
         {
           value: '1024*768',
@@ -220,6 +252,7 @@ export default {
     closeAddDialog () {
       this.formVisible = false
       this.$refs.dataForm.resetFields()
+      this.bizType='native'
     },
     // 初始化
     init (nodeData, parentCode) {
@@ -422,7 +455,13 @@ export default {
     // 跳转设计态
     toDesign (form) {
       const path = this.type === 'component' ? (window.BS_CONFIG?.routers?.designUrl || '/big-screen/design') : 'big-screen-biz-component-design'
-      const { href: bigScreenHref } = this.$router.resolve({
+      const { href: bigScreenHref } =this.type=='bizComponent'? this.$router.resolve({
+        path,
+        query: {
+          code: form.code,
+          type:this.bizType
+        }
+      }):this.$router.resolve({
         path,
         query: {
           code: form.code

+ 5 - 1
data-room-ui/packages/G2Plots/进度图/仪表盘.js

@@ -135,7 +135,11 @@ const setting = [
     groupName: 'padding'
   }
 ]
-const data = []
+const data = [
+  {
+    percent: 0.75
+  }
+]
 // 数据处理脚本
 const dataHandler = '// 取返回数据列表的第一项指标值\noption.percent = data[0][setting.filter(settingItem=>settingItem.field === \'percent\')[0].value]'
 

+ 6 - 2
data-room-ui/packages/G2Plots/进度图/矩形水波图.js

@@ -1,6 +1,6 @@
 
 // 配置版本号
-const version = '2023071001'
+const version = '2023090801'
 // 分类
 const category = 'Liquid'
 // 标题
@@ -148,7 +148,11 @@ const setting = [
     groupName: 'padding'
   }
 ]
-const data = []
+const data = [
+  {
+    percent: 0.25
+  }
+]
 // 数据处理脚本
 const dataHandler = '// 取返回数据列表的第一项指标值\noption.percent = data[0][setting.filter(settingItem=>settingItem.field === \'percent\')[0].value]'
 

+ 5 - 1
data-room-ui/packages/G2Plots/进度图/进度仪表盘.js

@@ -123,7 +123,11 @@ const setting = [
     groupName: 'padding'
   }
 ]
-const data = []
+const data = [
+  {
+    percent: 0.75
+  }
+]
 // 数据处理脚本
 const dataHandler = '// 取返回数据列表的第一项指标值\noption.percent = data[0][setting.filter(settingItem=>settingItem.field === \'percent\')[0].value]'
 

+ 5 - 1
data-room-ui/packages/G2Plots/进度图/进度环图.js

@@ -148,7 +148,11 @@ const setting = [
 
 // 配置处理脚本
 const optionHandler = 'option.color = [option.color1, option.color2]'
-const data = []
+const data = [
+  {
+    percent: 0.6
+  }
+]
 // 数据处理脚本
 const dataHandler =
   "option.percent = data[0][setting.filter(settingItem=>settingItem.field === 'percent')[0].value]"

+ 6 - 1
data-room-ui/packages/G2Plots/进度图/钻石水波图.js

@@ -148,7 +148,11 @@ const setting = [
     groupName: 'padding'
   }
 ]
-
+const data = [
+  {
+    percent: 0.25
+  }
+]
 // 数据处理脚本
 const dataHandler = '// 取返回数据列表的第一项指标值\noption.percent = data[0][setting.filter(settingItem=>settingItem.field === \'percent\')[0].value]'
 
@@ -157,6 +161,7 @@ const option = {
   renderer: 'canvas',
   color: '#598BF2',
   percent: 0.25,
+  data,
   appendPadding: [16, 16, 16, 16], // 设置图标的边距
   shape: 'diamond',
   outline: {

+ 7 - 10
data-room-ui/packages/MapDataManagement/src/AddForm.vue

@@ -18,7 +18,7 @@
       >
         <el-form-item
           label="上级地图"
-          prop="parentCode"
+          prop="parentId"
         >
           <el-input
             v-model="parentName"
@@ -41,7 +41,7 @@
           prop="mapCode"
         >
           <el-input
-            v-if="mapForm.parentCode === '0'"
+            v-if="mapForm.parentId === '0'"
             v-model="mapForm.mapCode"
             class="bs-el-input"
             placeholder="请输入地图编码"
@@ -71,7 +71,7 @@
         >
           <el-select
             v-model="mapForm.level"
-            :disabled="mapForm.parentCode !== '0'"
+            :disabled="mapForm.parentId !== '0'"
             class="bs-el-select"
             placeholder="请选择地图级别"
             popper-class="bs-el-select"
@@ -171,12 +171,12 @@ export default {
   },
   data () {
     const validateCode = (rule, value, callback) => {
-      if (this.mapForm.parentCode !== '0') {
+      if (this.mapForm.parentId !== '0') {
         // 不需要校验
         callback()
       }
       repeatCheck({
-        parentCode: this.mapForm.parentCode,
+        parentId: this.mapForm.parentId,
         mapCode: value
       }).then(res => {
         if (res) {
@@ -194,7 +194,6 @@ export default {
       parentName: '顶级',
       mapForm: {
         parentId: '0',
-        parentCode: '0',
         mapCode: '',
         name: '',
         level: 0,
@@ -229,7 +228,6 @@ export default {
     init (parentMap) {
       this.mapForm = {
         parentId: '0',
-        parentCode: '0',
         mapCode: `map-${new Date().getTime()}`,
         name: '',
         level: 0,
@@ -241,7 +239,6 @@ export default {
       this.parentName = '顶级'
       if (parentMap) {
         this.mapForm.parentId = parentMap.id
-        this.mapForm.parentCode = parentMap.mapCode
         this.parentName = parentMap.name
         this.mapForm.level = parentMap.level + 1
         this.mapForm.mapCode = ''
@@ -283,13 +280,13 @@ export default {
     },
     getMapCodeList () {
       this.mapCodeList = []
-      if (this.mapForm.parentCode === '0') {
+      if (this.mapForm.parentId === '0') {
         this.mapCodeList = [{
           name: `map-${new Date().getTime()}`,
           exist: false
         }]
       } else {
-        getMapChildFromGeoJson(this.mapForm.parentCode).then(res => {
+        getMapChildFromGeoJson(this.mapForm.parentId).then(res => {
           this.mapCodeList = res
         })
       }

+ 1 - 2
data-room-ui/packages/MapDataManagement/src/EditForm.vue

@@ -18,7 +18,7 @@
       >
         <el-form-item
           label="上级地图"
-          prop="parentCode"
+          prop="parentId"
         >
           <el-input
             v-model="parentName"
@@ -162,7 +162,6 @@ export default {
       parentName: '顶级',
       mapForm: {
         parentId: '0',
-        parentCode: '0',
         mapCode: '',
         name: '',
         level: 0,

+ 3 - 2
data-room-ui/packages/MapDataManagement/src/index.vue

@@ -232,7 +232,7 @@ export default {
         level: null,
         enableDown: null,
         uploadedGeoJson: null,
-        parentCode: '0'
+        parentId: '0'
       },
       levelList: [
         {
@@ -296,7 +296,7 @@ export default {
     load(data, treeNode, resolve) {
       this.lazyResolveIds.push(data.id)
       mapList({
-        parentCode: data.mapCode
+        parentId: data.id
       }).then(res => {
         resolve(res)
       }).catch(err => {
@@ -422,5 +422,6 @@ export default {
 .jv-container.dark {
   color: aliceblue;
   background: #161A26;
+  height: 150px;
 }
 </style>

+ 2 - 2
data-room-ui/packages/Render/Configuration.vue

@@ -2,8 +2,8 @@
   <div
     class="configuration-wrap"
     :class="{
-      'active': activeCodes.includes(config.code),
-      'hover': hoverCode === config.code
+      'active': activeCodes.includes(config.code) && (!isPreview),
+      'hover': hoverCode === config.code && (!isPreview)
     }"
     @mouseenter.stop="changeHover(config.code)"
     @mouseleave="changeHover('')"