diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/constant/PageDesignConstant.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/constant/PageDesignConstant.java index ba7f503f..8991d18f 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/constant/PageDesignConstant.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/constant/PageDesignConstant.java @@ -156,6 +156,13 @@ public interface PageDesignConstant { * Tab切换 */ String TAB_CHART = "chartTab"; + + /** + * 选择器 + */ + String SELECT = "select"; + + } } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java index c0d536e3..bb80ffef 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java @@ -76,4 +76,16 @@ public class Chart { @ApiModelProperty(notes = "主题配置") private Map theme; + + /** + * 边框配置,格式如下 + * { + * type: '', + * titleHeight: 60, + * fontSize: 30, + * color: ['#5B8FF9', '#61DDAA', '#5D7092', '#F6BD16', '#6F5EF9'] + */ + @ApiModelProperty(notes = "边框配置") + private Map border; + } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenFlyMapChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenFlyMapChart.java index 6e000f02..cacb7f83 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenFlyMapChart.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenFlyMapChart.java @@ -56,6 +56,9 @@ public class ScreenFlyMapChart extends Chart{ @ApiModelProperty(notes = "是否开启下钻") private Boolean down; + @ApiModelProperty(notes = "允许下钻的层级") + private Integer downLevel; + @ApiModelProperty(notes = "轨迹图像") private String symbol; diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenSelectChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenSelectChart.java new file mode 100644 index 00000000..6da18e8c --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenSelectChart.java @@ -0,0 +1,55 @@ +package com.gccloud.dataroom.core.module.chart.components; + +import com.gccloud.dataroom.core.constant.PageDesignConstant; +import com.gccloud.dataroom.core.module.chart.bean.Chart; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 下拉选择 + * @author hongyang + * @version 1.0 + * @date 2023/3/13 16:44 + */ +@Data +public class ScreenSelectChart extends Chart { + + @ApiModelProperty(notes = "组件类型") + private String type = PageDesignConstant.BigScreen.Type.SELECT; + + @ApiModelProperty(notes = "个性化") + private Customize customize = new Customize(); + + @Data + public static class Customize { + @ApiModelProperty("输入框背景颜色") + private String backgroundColor; + + @ApiModelProperty("输入框字体大小") + private Integer fontSize; + + @ApiModelProperty("输入框字体颜色") + private String fontColor; + + @ApiModelProperty("下拉框背景颜色") + private String dropDownBackgroundColor; + + @ApiModelProperty("下拉框字体颜色") + private String dropDownFontColor; + + @ApiModelProperty("下拉项hover背景颜色") + private String dropDownHoverBackgroundColor; + + @ApiModelProperty("下拉项hover字体颜色") + private String dropDownHoverFontColor; + + @ApiModelProperty("激活项背景颜色") + private String activeBackgroundColor; + + @ApiModelProperty("激活项字体颜色") + private String activeFontColor; + + } + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java index f3e33be1..f86c02a3 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java @@ -94,7 +94,7 @@ public class DataRoomPageController { @PostMapping("/update") @ApiOperation(value = "修改大屏/组件", position = 30, produces = MediaType.APPLICATION_JSON_VALUE) public R update(@RequestBody DataRoomPageDTO bigScreenPageDTO) { - if (bigScreenPageDTO.getIsPreview().equals(Boolean.TRUE)) { + if (Boolean.TRUE.equals(bigScreenPageDTO.getIsPreview())) { // 保存到预览临时缓存表 String code = previewService.add(bigScreenPageDTO); return R.success(code); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java index c7e4b6c1..6916c809 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java @@ -104,7 +104,6 @@ public class DataRoomMapController { if (info.getUploadedGeoJson().equals(1)) { vo.setAvailable(1); } - vo.setEnableDown(info.getEnableDown()); vo.setGeoJson(info.getGeoJson()); vo.setId(info.getId()); return R.success(vo); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapDTO.java index 93276b14..8e30df45 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapDTO.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/DataRoomMapDTO.java @@ -26,9 +26,6 @@ public class DataRoomMapDTO { @ApiModelProperty(notes = "地图级别 0-世界 1-国家 2-省 3-市 4-区县") private Integer level; - @ApiModelProperty(notes = "是否支持下钻") - private Integer enableDown; - @ApiModelProperty(notes = "geo地图数据json") private String geoJson; diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/MapSearchDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/MapSearchDTO.java index c55090d9..16ff9da6 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/MapSearchDTO.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/dto/MapSearchDTO.java @@ -21,7 +21,5 @@ public class MapSearchDTO extends SearchDTO { @ApiModelProperty(notes = "是否已上传") private Integer uploadedGeoJson; - @ApiModelProperty(notes = "是否支持下钻") - private Integer enableDown; } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/entity/DataRoomMapEntity.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/entity/DataRoomMapEntity.java index 6c989de5..f6ac6141 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/entity/DataRoomMapEntity.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/entity/DataRoomMapEntity.java @@ -33,9 +33,6 @@ public class DataRoomMapEntity extends SuperEntity { @ApiModelProperty(notes = "地图级别 0-世界 1-国家 2-省 3-市 4-区县") private Integer level; - @ApiModelProperty(notes = "是否支持下钻 0-否 1-是") - private Integer enableDown; - @ApiModelProperty(notes = "geo地图数据json") private String geoJson; diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java index 3487cbee..734cb2a7 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java @@ -46,7 +46,7 @@ public class DataRoomMapServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(DataRoomMapEntity::getId, DataRoomMapEntity::getLevel, DataRoomMapEntity::getParentId, - DataRoomMapEntity::getMapCode, DataRoomMapEntity::getName, DataRoomMapEntity::getEnableDown, DataRoomMapEntity::getUploadedGeoJson); + DataRoomMapEntity::getMapCode, DataRoomMapEntity::getName, DataRoomMapEntity::getUploadedGeoJson); queryWrapper.le(DataRoomMapEntity::getLevel, level); List list = list(queryWrapper); // 转成树形结构 @@ -162,7 +162,6 @@ public class DataRoomMapServiceImpl extends ServiceImpl - - AND enable_down = #{searchDTO.enableDown} - AND level = #{searchDTO.level} diff --git a/DataRoom/doc/init.sql b/DataRoom/doc/init.sql index d491ca46..9f403161 100644 --- a/DataRoom/doc/init.sql +++ b/DataRoom/doc/init.sql @@ -196,7 +196,6 @@ CREATE TABLE `big_screen_map` `name` varchar(255) DEFAULT NULL COMMENT '地图名称', `geo_json` longtext DEFAULT NULL COMMENT '地图geoJson', `level` tinyint(2) NOT NULL DEFAULT 0 COMMENT '地图级别 0-世界 1-国家 2-省 3-市 4-区县', - `enable_down` tinyint(2) NOT NULL DEFAULT 0 COMMENT '是否支持下钻 0-否 1-是', `uploaded_geo_json` tinyint(2) NOT NULL DEFAULT 0 COMMENT '是否已上传geoJson 0-否 1-是', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -205,4 +204,15 @@ CREATE TABLE `big_screen_map` `del_flag` tinyint(2) NOT NULL DEFAULT '0' COMMENT '删除标识', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB - DEFAULT CHARSET = utf8 COMMENT ='地图数据维护表'; \ No newline at end of file + DEFAULT CHARSET = utf8 COMMENT ='地图数据维护表'; + +DROP TABLE IF EXISTS `big_screen_page_preview`; +CREATE TABLE `big_screen_page_preview` +( + `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键', + `code` varchar(255) NOT NULL DEFAULT '' COMMENT '页面编码,页面唯一标识符', + `config` longtext COMMENT '页面配置', + `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='页面预览缓存表,每日定时删除'; \ No newline at end of file diff --git a/DataRoom/doc/update.sql b/DataRoom/doc/update.sql index f4119bcd..24c5cce8 100644 --- a/DataRoom/doc/update.sql +++ b/DataRoom/doc/update.sql @@ -122,7 +122,6 @@ CREATE TABLE `big_screen_map` `name` varchar(255) DEFAULT NULL COMMENT '地图名称', `geo_json` longtext DEFAULT NULL COMMENT '地图geoJson', `level` tinyint(2) NOT NULL DEFAULT 0 COMMENT '地图级别 0-世界 1-国家 2-省 3-市 4-区县', - `enable_down` tinyint(2) NOT NULL DEFAULT 0 COMMENT '是否支持下钻 0-否 1-是', `uploaded_geo_json` tinyint(2) NOT NULL DEFAULT 0 COMMENT '是否已上传geoJson 0-否 1-是', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', diff --git a/data-room-ui/packages/BasicComponents/Select/index.vue b/data-room-ui/packages/BasicComponents/Select/index.vue new file mode 100644 index 00000000..aaa656dd --- /dev/null +++ b/data-room-ui/packages/BasicComponents/Select/index.vue @@ -0,0 +1,208 @@ + + + + + + + diff --git a/data-room-ui/packages/BasicComponents/Select/setting.vue b/data-room-ui/packages/BasicComponents/Select/setting.vue new file mode 100644 index 00000000..af998968 --- /dev/null +++ b/data-room-ui/packages/BasicComponents/Select/setting.vue @@ -0,0 +1,182 @@ + + + + diff --git a/data-room-ui/packages/BasicComponents/Select/settingConfig.js b/data-room-ui/packages/BasicComponents/Select/settingConfig.js new file mode 100644 index 00000000..3e986cea --- /dev/null +++ b/data-room-ui/packages/BasicComponents/Select/settingConfig.js @@ -0,0 +1,56 @@ + +import { commonConfig, displayOption } from 'data-room-ui/js/config' + +export const settingConfig = { + // text内容 + text: '选择器', + // 设置面板属性的显隐 + displayOption: { + ...displayOption, + dimensionField: { + // 维度 + label: '选项的标签', // 维度/查询字段 + enable: true, + multiple: false // 是否多选 + }, + metricField: { + // 指标 + label: '绑定值', + enable: true, + multiple: false // 是否多选 + } + } +} + +const customConfig = { + type: 'select', + // 名称 + title: '下拉框', + root: { + version: '2023071001' + }, + // 自定义属性 + customize: { + // 输入框背景颜色 + backgroundColor: '#35393F', + // 输入框字体大小 + fontSize: 20, + // 输入框字体颜色 + fontColor: '#FFFFFF', + // 下拉框背景颜色 + dropDownBackgroundColor: '#35393F', + // 下拉框字体颜色 + dropDownFontColor: '#FFFFFF', + // 下拉项hover背景颜色 + dropDownHoverBackgroundColor: '#6A7E9D', + // 下拉项hover字体颜色 + dropDownHoverFontColor: '#FFFFFF', + // 激活项背景颜色 + activeBackgroundColor: '#6A7E9D', + // 激活项字体颜色 + activeFontColor: '#FFFFFF' + } +} +export const dataConfig = { + ...commonConfig(customConfig) +} diff --git a/data-room-ui/packages/BigScreenDesign/PageDesignTop.vue b/data-room-ui/packages/BigScreenDesign/PageDesignTop.vue index 724250e7..56720ff1 100644 --- a/data-room-ui/packages/BigScreenDesign/PageDesignTop.vue +++ b/data-room-ui/packages/BigScreenDesign/PageDesignTop.vue @@ -29,9 +29,7 @@ trigger="click" class="align-list-dropdown" > - + 对齐方式 @@ -58,9 +56,7 @@ > 设计分工 - + 历史操作 { - this.preview() + this.save('preview').then((res) => { + this.preview(res) }) }, // 预览 - preview () { + preview (previewCode) { const { href } = this.$router.resolve({ path: window.BS_CONFIG?.routers?.previewUrl || '/big-screen/preview', query: { - code: this.pageCode + code: previewCode || this.pageCode } }) window.open(href, '_blank') }, // 保存 - save (loadingType = 'saveLoading', hasPageTemplateId = false) { + async save (type, hasPageTemplateId = false) { const pageInfo = cloneDeep(this.handleSaveData()) // 保存页面 - this[loadingType] = true - return new Promise((resolve, reject) => { + try { if (!hasPageTemplateId) { delete pageInfo.pageTemplateId } - const node = document.querySelector('.render-theme-wrap') - toJpeg(node, { quality: 0.2 }) - .then((dataUrl) => { - const that = this - if (showSize(dataUrl) > 200) { - const url = dataURLtoBlob(dataUrl) - // 压缩到500KB,这里的500就是要压缩的大小,可自定义 - imageConversion - .compressAccurately(url, { - size: 200, // 图片大小压缩到100kb - width: 1280, // 宽度压缩到1280 - height: 720 // 高度压缩到720 - }) - .then((res) => { - translateBlobToBase64(res, function (e) { - pageInfo.coverPicture = e.result - saveScreen(pageInfo) - .then((res) => { - that.$message.success('保存成功') - resolve(res) - }) - .finally(() => { - that[loadingType] = false - }) - }) - }) - } else { - pageInfo.coverPicture = dataUrl - saveScreen(pageInfo) - .then((res) => { - this.$message.success('保存成功') - resolve(res) - }) - .finally(() => { - this[loadingType] = false - }) - } - }) - .catch(() => { - this[loadingType] = false - }) - }) + if (type === 'preview') { + pageInfo.isPreview = true + const res = await saveScreen(pageInfo) + return res + } else { + pageInfo.isPreview = false + this.saveLoading = true + const node = document.querySelector('.render-theme-wrap') + const dataUrl = await toJpeg(node, { quality: 0.2 }) + if (showSize(dataUrl) > 200) { + const url = dataURLtoBlob(dataUrl) + // 压缩到500KB,这里的500就是要压缩的大小,可自定义 + const imgRes = await imageConversion.compressAccurately(url, { + size: 200, // 图片大小压缩到100kb + width: 1280, // 宽度压缩到1280 + height: 720 // 高度压缩到720 + }) + const base64 = await translateBlobToBase64(imgRes) + pageInfo.coverPicture = base64.result + const res = await saveScreen(pageInfo) + this.$message.success('保存成功') + return res + } else { + pageInfo.coverPicture = dataUrl + const res = await saveScreen(pageInfo) + this.$message.success('保存成功') + return res + } + } + } catch (error) { + console.error(error) + this.saveLoading = false + throw error + } finally { + this.saveLoading = false + } }, goBack (path) { this.$router.push({ @@ -520,6 +509,7 @@ export default {