feat: 代码合并

main
wu.jian2 2 years ago
commit 1b59a2a042

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

@ -3,6 +3,8 @@ package com.gccloud.dataroom.core.module.manage.extend;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
/** /**
* @author hongyang * @author hongyang
* @version 1.0 * @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);
}
}
} }

@ -1,5 +1,7 @@
package com.gccloud.dataroom.core.module.manage.extend; package com.gccloud.dataroom.core.module.manage.extend;
import java.util.List;
/** /**
* *
* @author hongyang * @author hongyang
@ -11,8 +13,22 @@ public interface IDataRoomExtendService {
/** /**
* *
* *
* 使afterDelete
* @param code * @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) {}
} }

@ -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.manage.service.IDataRoomPageService;
import com.gccloud.dataroom.core.module.template.entity.PageTemplateEntity; import com.gccloud.dataroom.core.module.template.entity.PageTemplateEntity;
import com.gccloud.dataroom.core.module.template.service.IPageTemplateService; 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.dataroom.core.utils.CodeGenerateUtils;
import com.gccloud.common.exception.GlobalException; import com.gccloud.common.exception.GlobalException;
import com.gccloud.common.utils.AssertUtils; import com.gccloud.common.utils.AssertUtils;
import com.gccloud.common.utils.BeanConvertUtils; import com.gccloud.common.utils.BeanConvertUtils;
import com.gccloud.common.utils.QueryWrapperUtils;
import com.gccloud.common.vo.PageVO; import com.gccloud.common.vo.PageVO;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -34,6 +34,7 @@ import java.io.IOException;
import java.util.Base64; import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @author hongyang * @author hongyang
@ -54,6 +55,9 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
@Resource @Resource
private DataRoomExtendClient dataRoomExtendClient; private DataRoomExtendClient dataRoomExtendClient;
@Resource
private DataRoomPermissionClient permissionClient;
@Override @Override
public String add(DataRoomPageDTO bigScreenPageDTO) { public String add(DataRoomPageDTO bigScreenPageDTO) {
if (StringUtils.isBlank(bigScreenPageDTO.getCode())) { if (StringUtils.isBlank(bigScreenPageDTO.getCode())) {
@ -80,6 +84,7 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
AssertUtils.isTrue(!checkNameRepeat(bigScreenEntity), "名称重复"); AssertUtils.isTrue(!checkNameRepeat(bigScreenEntity), "名称重复");
AssertUtils.isTrue(!checkCodeRepeat(bigScreenEntity), "编码重复"); AssertUtils.isTrue(!checkCodeRepeat(bigScreenEntity), "编码重复");
this.save(bigScreenEntity); this.save(bigScreenEntity);
dataRoomExtendClient.afterAdd(bigScreenEntity.getCode());
return bigScreenEntity.getCode(); return bigScreenEntity.getCode();
} }
@ -171,16 +176,39 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
if (StringUtils.isBlank(searchDTO.getType())) { if (StringUtils.isBlank(searchDTO.getType())) {
throw new GlobalException("类型不能为空"); 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())) { if (StringUtils.isNotBlank(searchDTO.getParentCode())) {
queryWrapper.eq(PageEntity::getParentCode, searchDTO.getParentCode()); queryWrapper.eq(PageEntity::getParentCode, searchDTO.getParentCode());
} }
queryWrapper.eq(PageEntity::getType, searchDTO.getType()); 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); reQueryWrapper.orderByAsc(PageEntity::getOrderNum);
queryWrapper.orderByDesc(PageEntity::getCreateDate); reQueryWrapper.orderByDesc(PageEntity::getCreateDate);
PageVO<PageEntity> page = page(searchDTO, queryWrapper); PageVO<PageEntity> page = this.page(searchDTO, reQueryWrapper);
List<PageEntity> list = page.getList(); List<PageEntity> list = page.getList();
if (list == null || list.isEmpty()) { if (list == null || list.isEmpty()) {
return page; return page;
@ -242,6 +270,7 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
chart.setCode(CodeGenerateUtils.generate(chart.getType() == null ? "chart" : chart.getType())); chart.setCode(CodeGenerateUtils.generate(chart.getType() == null ? "chart" : chart.getType()));
} }
this.save(screenEntity); this.save(screenEntity);
dataRoomExtendClient.afterAdd(screenEntity.getCode());
return screenEntity.getCode(); return screenEntity.getCode();
} }
@ -253,5 +282,7 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
PAGE_ENTITY_CACHE.invalidate(code); PAGE_ENTITY_CACHE.invalidate(code);
// 调用拓展接口 // 调用拓展接口
dataRoomExtendClient.deleteByCode(code); dataRoomExtendClient.deleteByCode(code);
// 移除权限拓展
dataRoomExtendClient.afterDelete(code);
} }
} }

@ -3,6 +3,7 @@ package com.gccloud.dataroom.core.module.map.controller;
import com.gccloud.common.utils.BeanConvertUtils; import com.gccloud.common.utils.BeanConvertUtils;
import com.gccloud.common.vo.R; import com.gccloud.common.vo.R;
import com.gccloud.dataroom.core.module.map.dto.DataRoomMapRepeatDTO; 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.DataRoomMapVO;
import com.gccloud.dataroom.core.module.map.vo.MapChildVO; import com.gccloud.dataroom.core.module.map.vo.MapChildVO;
import com.gccloud.dataroom.core.module.map.dto.DataRoomMapDTO; import com.gccloud.dataroom.core.module.map.dto.DataRoomMapDTO;
@ -72,10 +73,10 @@ public class DataRoomMapController {
return R.success(); return R.success();
} }
@GetMapping("/getMapChildFromGeoJson/{code}") @GetMapping("/getMapChildFromGeoJson/{id}")
@ApiOperation(value = "根据父编码解析父级json中的子级", position = 60, notes = "根据父编码解析父级json中的子级", produces = MediaType.APPLICATION_JSON_VALUE) @ApiOperation(value = "根据地图id解析json中的子级", position = 60, notes = "根据地图id解析json中的子级", produces = MediaType.APPLICATION_JSON_VALUE)
public R<List<MapChildVO>> getMapChildFromGeoJson(@PathVariable String code) { public R<List<MapChildVO>> getMapChildFromGeoJson(@PathVariable String id) {
List<MapChildVO> list = dataRoomMapService.getChildFromGeo(code); List<MapChildVO> list = dataRoomMapService.getChildFromGeo(id);
return R.success(list); 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) @ApiOperation(value = "数据", position = 80, notes = "地图数据数据", produces = MediaType.APPLICATION_JSON_VALUE)
public R<String> data(@PathVariable String id) { public R<DataRoomMapDataVO> data(@PathVariable String parentId, @PathVariable String code) {
DataRoomMapEntity info = dataRoomMapService.info(id); DataRoomMapEntity info = dataRoomMapService.getByParentIdAndCode(parentId, code);
return R.success(info.getGeoJson()); 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);
}
} }

@ -23,4 +23,12 @@ public interface DataRoomMapDao extends BaseMapper<DataRoomMapEntity> {
*/ */
List<DataRoomMapVO> getList(@Param("searchDTO") MapSearchDTO searchDTO); List<DataRoomMapVO> getList(@Param("searchDTO") MapSearchDTO searchDTO);
/**
*
* ...
* @param level
* @return
*/
List<DataRoomMapEntity> getMapByLevel(@Param("level") Integer level);
} }

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

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

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

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

@ -18,9 +18,9 @@ import java.util.List;
public interface IDataRoomMapService extends ISuperService<DataRoomMapEntity> { 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); List<DataRoomMapVO> getList(MapSearchDTO searchDTO);
/**
*
* @param level
* @return
*/
List<DataRoomMapVO> getAvailableTree(Integer level);
/** /**
* *
* @param mapDTO * @param mapDTO
@ -66,6 +73,14 @@ public interface IDataRoomMapService extends ISuperService<DataRoomMapEntity> {
*/ */
DataRoomMapEntity info(String id); DataRoomMapEntity info(String id);
/**
* id
* @param parentId
* @param code
* @return
*/
DataRoomMapEntity getByParentIdAndCode(String parentId, String code);
/** /**
* *

@ -20,7 +20,9 @@ import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -36,14 +38,98 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
@Override @Override
public List<DataRoomMapVO> getList(MapSearchDTO searchDTO) { public List<DataRoomMapVO> getList(MapSearchDTO searchDTO) {
List<DataRoomMapVO> list = this.baseMapper.getList(searchDTO); return this.baseMapper.getList(searchDTO);
return list;
} }
@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 @Override
public String add(DataRoomMapDTO mapDTO) { public String add(DataRoomMapDTO mapDTO) {
if (StringUtils.isBlank(mapDTO.getParentCode())) { if (StringUtils.isBlank(mapDTO.getParentId())) {
mapDTO.setParentCode(SUPER_PARENT_CODE); mapDTO.setParentId(SUPER_PARENT_ID);
} }
if (StringUtils.isBlank(mapDTO.getMapCode())) { if (StringUtils.isBlank(mapDTO.getMapCode())) {
throw new GlobalException("地图编码不能为空"); throw new GlobalException("地图编码不能为空");
@ -91,10 +177,10 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
/** /**
* geoJson * geoJson
* @param old * @param mapEntity
* @param geoJson * @param geoJson
*/ */
private void parseNextLevelAndSave(DataRoomMapEntity old, String geoJson) { private void parseNextLevelAndSave(DataRoomMapEntity mapEntity, String geoJson) {
JSONObject jsonObject = new JSONObject(geoJson); JSONObject jsonObject = new JSONObject(geoJson);
JSONArray features = jsonObject.getJSONArray("features"); JSONArray features = jsonObject.getJSONArray("features");
if (features == null || features.length() == 0) { if (features == null || features.length() == 0) {
@ -108,8 +194,8 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
continue; continue;
} }
DataRoomMapEntity childMapEntity = new DataRoomMapEntity(); DataRoomMapEntity childMapEntity = new DataRoomMapEntity();
childMapEntity.setParentCode(old.getMapCode()); childMapEntity.setParentId(mapEntity.getId());
childMapEntity.setLevel(old.getLevel() + 1); childMapEntity.setLevel(mapEntity.getLevel() + 1);
childMapEntity.setMapCode(properties.getString("name")); childMapEntity.setMapCode(properties.getString("name"));
childMapEntity.setName(properties.getString("name")); childMapEntity.setName(properties.getString("name"));
childMapEntity.setEnableDown(NO); childMapEntity.setEnableDown(NO);
@ -131,7 +217,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
return; return;
} }
LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataRoomMapEntity::getParentCode, mapEntity.getMapCode()); queryWrapper.eq(DataRoomMapEntity::getParentId, mapEntity.getId());
List<DataRoomMapEntity> list = this.list(queryWrapper); List<DataRoomMapEntity> list = this.list(queryWrapper);
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
throw new GlobalException("该地图下存在子地图,不能删除"); throw new GlobalException("该地图下存在子地图,不能删除");
@ -154,7 +240,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
return; return;
} }
LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataRoomMapEntity::getParentCode, mapEntity.getMapCode()); queryWrapper.eq(DataRoomMapEntity::getParentId, mapEntity.getId());
List<DataRoomMapEntity> list = this.list(queryWrapper); List<DataRoomMapEntity> list = this.list(queryWrapper);
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
for (DataRoomMapEntity entity : list) { for (DataRoomMapEntity entity : list) {
@ -173,6 +259,27 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
return mapEntity; 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 @Override
public DataRoomMapEntity infoByMapCode(String mapCode) { public DataRoomMapEntity infoByMapCode(String mapCode) {
LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
@ -190,12 +297,12 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
/** /**
* geoJsongeoJson * geoJsongeoJson
* @param code * @param id
* @return * @return
*/ */
@Override @Override
public List<MapChildVO> getChildFromGeo(String code) { public List<MapChildVO> getChildFromGeo(String id) {
DataRoomMapEntity mapEntity = this.infoByMapCode(code); DataRoomMapEntity mapEntity = this.getById(id);
if (mapEntity.getUploadedGeoJson().equals(NO)) { if (mapEntity.getUploadedGeoJson().equals(NO)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
@ -211,7 +318,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
// 查询当前地图下的所有子地图 // 查询当前地图下的所有子地图
LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DataRoomMapEntity::getMapCode); queryWrapper.select(DataRoomMapEntity::getMapCode);
queryWrapper.eq(DataRoomMapEntity::getParentCode, code); queryWrapper.eq(DataRoomMapEntity::getParentId, id);
List<DataRoomMapEntity> list = this.list(queryWrapper); List<DataRoomMapEntity> list = this.list(queryWrapper);
List<String> mapCodeList = list.stream().map(DataRoomMapEntity::getMapCode).collect(Collectors.toList()); List<String> mapCodeList = list.stream().map(DataRoomMapEntity::getMapCode).collect(Collectors.toList());
// 解析geoJson获取下一级的基础数据 // 解析geoJson获取下一级的基础数据
@ -254,13 +361,12 @@ public class DataRoomMapServiceImpl extends ServiceImpl<DataRoomMapDao, DataRoom
if (StringUtils.isBlank(mapDTO.getMapCode())) { if (StringUtils.isBlank(mapDTO.getMapCode())) {
throw new GlobalException("地图编码不能为空"); throw new GlobalException("地图编码不能为空");
} }
if (StringUtils.isBlank(mapDTO.getParentCode())) { if (StringUtils.isBlank(mapDTO.getParentId())) {
throw new GlobalException("上级地图编码不能为空"); throw new GlobalException("上级地图编码不能为空");
} }
// TODO 这里存在问题,因为编码只在某个地图下的某个层级下是唯一的,所以如果碰巧有两个地图下的某个层级下的编码相同,就会出现问题
LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataRoomMapEntity::getMapCode, mapDTO.getMapCode()); queryWrapper.eq(DataRoomMapEntity::getMapCode, mapDTO.getMapCode());
queryWrapper.eq(DataRoomMapEntity::getParentCode, mapDTO.getParentCode()); queryWrapper.eq(DataRoomMapEntity::getParentId, mapDTO.getParentId());
if (StringUtils.isNotBlank(mapDTO.getId())) { if (StringUtils.isNotBlank(mapDTO.getId())) {
queryWrapper.ne(DataRoomMapEntity::getId, mapDTO.getId()); queryWrapper.ne(DataRoomMapEntity::getId, mapDTO.getId());
} }

@ -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;
}

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

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

@ -2,6 +2,7 @@ package com.gccloud.dataroom.core.permission;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* @author hongyang * @author hongyang
@ -18,5 +19,13 @@ public interface IDataRoomPermissionService {
*/ */
boolean verifyDataPermission(HttpServletRequest request, String pageCode); boolean verifyDataPermission(HttpServletRequest request, String pageCode);
/**
*
* @param allCode code
* @return code
*/
default List<String> filterByPermission(List<String> allCode) {
return allCode;
}
} }

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

@ -167,7 +167,7 @@ CREATE TABLE IF NOT EXISTS ds_dataset_label (
CREATE TABLE IF NOT EXISTS big_screen_map ( CREATE TABLE IF NOT EXISTS big_screen_map (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键', 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 '地图编码', map_code VARCHAR(255) DEFAULT NULL COMMENT '地图编码',
name VARCHAR(255) DEFAULT NULL COMMENT '地图名称', name VARCHAR(255) DEFAULT NULL COMMENT '地图名称',
geo_json CLOB DEFAULT NULL COMMENT '地图geoJson', geo_json CLOB DEFAULT NULL COMMENT '地图geoJson',

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

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

@ -13,6 +13,7 @@
:append-to-body="false" :append-to-body="false"
class="bs-dialog-wrap bs-el-dialog" class="bs-dialog-wrap bs-el-dialog"
> >
<div class="table-box">
<el-table <el-table
ref="table" ref="table"
v-loading="loading" v-loading="loading"
@ -29,16 +30,25 @@
align="center" align="center"
/> />
</el-table> </el-table>
</div>
<div <div
slot="footer" slot="footer"
class="dialog-footer" class="dialog-footer"
> >
<el-button
class="bs-el-button-default cancel"
@click="cancel"
>
取消
</el-button>
<DownloadExcel <DownloadExcel
:data="dataList" :data="dataList"
:fields="fields" :fields="fields"
:name="chartTitle+'数据导出'" :name="chartTitle+'数据导出'"
class="output-excel" class="output-excel"
:before-finish="exportHandler" :before-finish="exportHandler"
:before-generate="generate"
> >
<el-button <el-button
type="primary" type="primary"
@ -96,7 +106,7 @@ export default {
getDataList (config) { getDataList (config) {
this.loading = true this.loading = true
// G2option // G2option
if (config.type === 'customComponent' && (!config.dataSource.businessKey)) { if (['customComponent', 'remoteComponent'].includes(config.type) && (!config.dataSource.businessKey)) {
this.getDataByOption(config) this.getDataByOption(config)
this.fieldsFormat() this.fieldsFormat()
this.loading = false this.loading = false
@ -116,7 +126,9 @@ export default {
if (Array.isArray(res.data)) { if (Array.isArray(res.data)) {
this.dataList = res.data || [] this.dataList = res.data || []
} else { } else {
// datajshttp,option // dataoption
// 1jshttp,
// 2null
this.getDataByOption(config) this.getDataByOption(config)
} }
this.columnData = res.columnData || {} this.columnData = res.columnData || {}
@ -128,22 +140,41 @@ export default {
}, },
// option // option
getDataByOption (config) { getDataByOption (config) {
const list = config.option.data || [] let list = []
for (const key of Object.keys(list[0])) { if (config.chartType === 'Treemap') {
this.columnData[key] = { 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: '', aggregate: '',
alias: key, alias: _key,
originalColumn: key, originalColumn: _key,
remark: key, remark: _key,
tableName: '', tableName: '',
type: 'varchar' type: 'varchar'
} }
} }
this.dataList = list } else {
this.columnData = {}
}
this.dataList = list || []
}, },
// //
getLabel (col) { getLabel (col) {
return col.remark || col.originalColumn return col.remark || col.alias
}, },
// //
resetData () { resetData () {
@ -154,13 +185,32 @@ export default {
}, },
// fields // fields
fieldsFormat () { fieldsFormat () {
if (this.columnData && Object.keys(this.columnData).length) {
for (const item in this.columnData) { for (const item in this.columnData) {
this.fields[this.columnData[item].remark || this.columnData[item].originalColumn] = this.columnData[item].originalColumn 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 () { 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{ .bs-data-view-dialog{
/deep/.el-dialog__body{ /deep/.el-dialog__body{
background-color: var(--bs-background-2) !important; background-color: var(--bs-background-2) !important;
max-height: unset!important; height: 500px!important;
min-height: unset!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{ .el-table th.el-table__cell.is-leaf, .el-table /deep/td.el-table__cell{
border-bottom:none; border-bottom:none;
@ -185,25 +247,27 @@ export default {
.bs-el-table /deep/td.el-table__cell{ .bs-el-table /deep/td.el-table__cell{
color: #bcc9d4; color: #bcc9d4;
} }
/* 自定义滚动条样式 */ .el-table--scrollable-y /deep/.el-table__body-wrapper{
/deep/.el-table__body-wrapper::-webkit-scrollbar { overflow-y: hidden;
width: 6px; /* 滚动条宽度 */ }
/* 修改滚动条的样式 */
/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; /* 滚动条拖动块颜色 */ background-color: #888; /* 滚动条拖动块颜色 */
height: 30px; height: 30px;
border-radius: 5px; border-radius: 5px;
} }
/deep/.el-table__body-wrapper::-webkit-scrollbar-track { /deep/.el-dialog__body::-webkit-scrollbar-track {
background-color: transparent; /* 滚动条轨道颜色 */ background-color: transparent; /* 滚动条轨道颜色 */
} }
/* 鼠标悬停在滚动条上时的样式 */ /* 鼠标悬停在滚动条上时的样式 */
/deep/.el-table__body-wrapper::-webkit-scrollbar-thumb:hover { /deep/.el-dialog__body::-webkit-scrollbar-thumb:hover {
background-color: #555; background-color: #555;
cursor: pointer;
} }
} }
</style> </style>

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

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

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

@ -28,6 +28,25 @@
maxlength="30" maxlength="30"
class="bs-el-input" 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>
<el-form-item <el-form-item
v-if="type === 'component'" v-if="type === 'component'"
@ -126,8 +145,21 @@ export default {
}, },
data () { data () {
return { return {
bizType:'native',
resolutionRatioValue: '', resolutionRatioValue: '',
resolutionRatio: {}, resolutionRatio: {},
BizList:[
{
label:'echarts组件',
value:'echarts'
}, {
label:'g2Plot组件',
value:'g2plot'
}, {
label:'基础组件',
value:'native'
},
],
resolutionRatioOptions: [ resolutionRatioOptions: [
{ {
value: '1024*768', value: '1024*768',
@ -220,6 +252,7 @@ export default {
closeAddDialog () { closeAddDialog () {
this.formVisible = false this.formVisible = false
this.$refs.dataForm.resetFields() this.$refs.dataForm.resetFields()
this.bizType='native'
}, },
// //
init (nodeData, parentCode) { init (nodeData, parentCode) {
@ -422,7 +455,13 @@ export default {
// //
toDesign (form) { toDesign (form) {
const path = this.type === 'component' ? (window.BS_CONFIG?.routers?.designUrl || '/big-screen/design') : 'big-screen-biz-component-design' 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, path,
query: { query: {
code: form.code code: form.code

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save