瀏覽代碼

Merge branch 'master' of github.com:gcpaas/DataRoom

liu.tao3 1 年之前
父節點
當前提交
5345aa6f69
共有 19 個文件被更改,包括 296 次插入63 次删除
  1. 15 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/dao/DataRoomPagePreviewDao.java
  2. 41 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/entity/PagePreviewEntity.java
  3. 33 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/task/PreviewClearTask.java
  4. 15 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java
  5. 3 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomPageDTO.java
  6. 36 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/IDataRoomPagePreviewService.java
  7. 56 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java
  8. 14 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java
  9. 1 0
      DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/controller/DataRoomMapController.java
  10. 1 1
      DataRoom/doc/init.sql
  11. 19 0
      DataRoom/doc/update.sql
  12. 3 1
      data-room-ui/packages/BigScreenDesign/DataViewDialog/index.vue
  13. 0 1
      data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
  14. 5 2
      data-room-ui/packages/BigScreenRun/index.vue
  15. 6 7
      data-room-ui/packages/BizComponent/index.vue
  16. 38 42
      data-room-ui/packages/MapDataManagement/src/AddForm.vue
  17. 7 6
      data-room-ui/packages/RemoteComponents/index.vue
  18. 2 2
      data-room-ui/packages/Render/Configuration.vue
  19. 1 1
      data-room-ui/packages/js/store/mutations.js

+ 15 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/dao/DataRoomPagePreviewDao.java

@@ -0,0 +1,15 @@
+package com.gccloud.dataroom.core.module.basic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author gcpaas
+ * @Date 2022/06/07
+ * @Version 1.0.0
+ */
+@Mapper
+public interface DataRoomPagePreviewDao extends BaseMapper<PagePreviewEntity> {
+
+}

+ 41 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/entity/PagePreviewEntity.java

@@ -0,0 +1,41 @@
+package com.gccloud.dataroom.core.module.basic.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.gccloud.common.entity.SuperEntity;
+import com.gccloud.dataroom.core.module.basic.dto.BasePageDTO;
+import com.gccloud.dataroom.core.module.basic.entity.type.BasePageDTOTypeHandler;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 预览缓存临时表
+ *
+ * @Author qianxing
+ * @Date 2022/06/07
+ * @Version 1.0.0
+ */
+@Data
+@TableName(value = "big_screen_page_preview", autoResultMap = true)
+@ApiModel
+public class PagePreviewEntity implements Serializable {
+
+    @TableId
+    @ApiModelProperty(notes = "主键")
+    private String id;
+
+    @ApiModelProperty(notes = "页面编码,页面唯一标识符")
+    private String code;
+
+    @ApiModelProperty(notes = "具体组件配置、JSON格式")
+    @TableField(typeHandler = BasePageDTOTypeHandler.class)
+    private BasePageDTO config;
+
+    @TableField(fill = FieldFill.INSERT, updateStrategy = FieldStrategy.NEVER)
+    @ApiModelProperty(notes = "创建时间")
+    private Date createDate;
+
+}

+ 33 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/task/PreviewClearTask.java

@@ -0,0 +1,33 @@
+package com.gccloud.dataroom.core.module.basic.task;
+
+import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 每日定时清理预览临时表数据
+ * @author hongyang
+ * @version 1.0
+ * @date 2023/9/13 10:37
+ */
+@EnableScheduling
+@Component
+@Slf4j
+public class PreviewClearTask {
+
+    @Resource
+    private IDataRoomPagePreviewService previewService;
+
+
+    @Scheduled(cron = "0 0 1 * * ?")
+    private void clear() {
+        log.info("开始清理预览数据");
+        previewService.clear();
+    }
+
+
+}

+ 15 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java

@@ -3,8 +3,10 @@ package com.gccloud.dataroom.core.module.manage.controller;
 import com.gccloud.dataroom.core.config.DataRoomConfig;
 import com.gccloud.dataroom.core.constant.DataRoomConst;
 import com.gccloud.dataroom.core.module.basic.entity.PageEntity;
+import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
 import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
 import com.gccloud.dataroom.core.module.manage.dto.DataRoomSearchDTO;
+import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
 import com.gccloud.dataroom.core.module.manage.service.IDataRoomPageService;
 import com.gccloud.dataroom.core.module.manage.vo.StaticFileVO;
 import com.gccloud.dataroom.core.permission.Permission;
@@ -44,11 +46,19 @@ public class DataRoomPageController {
     private IDataRoomPageService bigScreenPageService;
     @Resource
     private DataRoomConfig bigScreenConfig;
+    @Resource
+    private IDataRoomPagePreviewService previewService;
 
     @ApiPermission(permissions = {Permission.DataRoom.VIEW})
     @GetMapping("/info/code/{code}")
     @ApiOperation(value = "大屏页/组件详情", position = 10, produces = MediaType.APPLICATION_JSON_VALUE)
     public MixinsResp<DataRoomPageDTO> info(@PathVariable("code") String code) {
+        if (code.startsWith(IDataRoomPagePreviewService.PREVIEW_KEY)) {
+            PagePreviewEntity preview = previewService.getByCode(code);
+            MixinsResp<DataRoomPageDTO> r = new MixinsResp<DataRoomPageDTO>().setData((DataRoomPageDTO) preview.getConfig());
+            r.setCode(DataRoomConst.Response.Code.SUCCESS);
+            return r;
+        }
         PageEntity bigScreen = bigScreenPageService.getByCode(code);
         DataRoomPageDTO bigScreenPageDTO = (DataRoomPageDTO) bigScreen.getConfig();
         BeanConvertUtils.convert(bigScreen, bigScreenPageDTO);
@@ -84,6 +94,11 @@ public class DataRoomPageController {
     @PostMapping("/update")
     @ApiOperation(value = "修改大屏/组件", position = 30, produces = MediaType.APPLICATION_JSON_VALUE)
     public R<String> update(@RequestBody DataRoomPageDTO bigScreenPageDTO) {
+        if (bigScreenPageDTO.getIsPreview().equals(Boolean.TRUE)) {
+            // 保存到预览临时缓存表
+            String code = previewService.add(bigScreenPageDTO);
+            return R.success(code);
+        }
         ValidatorUtils.validateEntity(bigScreenPageDTO, Update.class);
         if (StringUtils.isBlank(bigScreenPageDTO.getParentCode())) {
             bigScreenPageDTO.setParentCode("0");

+ 3 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomPageDTO.java

@@ -72,6 +72,9 @@ public class DataRoomPageDTO extends BasePageDTO {
     @ApiModelProperty(notes = "所属应用编码")
     private String appCode;
 
+    @ApiModelProperty(notes = "是否预览")
+    private Boolean isPreview;
+
     @Data
     public static class CacheDataSet {
         @ApiModelProperty(notes = "数据集名称")

+ 36 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/IDataRoomPagePreviewService.java

@@ -0,0 +1,36 @@
+package com.gccloud.dataroom.core.module.manage.service;
+
+import com.gccloud.common.service.ISuperService;
+import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
+import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
+
+/**
+ * @author hongyang
+ * @version 1.0
+ * @date 2023/9/13 10:10
+ */
+public interface IDataRoomPagePreviewService extends ISuperService<PagePreviewEntity> {
+
+    String PREVIEW_KEY = "preview";
+
+    /**
+     * 保存大屏预览数据
+     * @param bigScreenPageDTO
+     * @return
+     */
+    String add(DataRoomPageDTO bigScreenPageDTO);
+
+
+    /**
+     * 根据code获取大屏预览数据
+     * @param code
+     * @return
+     */
+    PagePreviewEntity getByCode(String code);
+
+    /**
+     * 清理预览数据
+     */
+    void clear();
+
+}

+ 56 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java

@@ -0,0 +1,56 @@
+package com.gccloud.dataroom.core.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gccloud.common.exception.GlobalException;
+import com.gccloud.common.utils.BeanConvertUtils;
+import com.gccloud.dataroom.core.module.basic.dao.DataRoomPagePreviewDao;
+import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
+import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
+import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
+import com.gccloud.dataroom.core.utils.CodeGenerateUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author hongyang
+ * @version 1.0
+ * @date 2023/9/13 10:11
+ */
+@Service
+public class DataRoomPagePreviewServiceImpl extends ServiceImpl<DataRoomPagePreviewDao, PagePreviewEntity> implements IDataRoomPagePreviewService {
+
+    @Override
+    public String add(DataRoomPageDTO bigScreenPageDTO) {
+        String code = CodeGenerateUtils.generate(PREVIEW_KEY);
+        bigScreenPageDTO.setCode(code);
+        PagePreviewEntity pagePreviewEntity = BeanConvertUtils.convert(bigScreenPageDTO, PagePreviewEntity.class);
+        pagePreviewEntity.setCreateDate(new Date());
+        pagePreviewEntity.setConfig(bigScreenPageDTO);
+        this.save(pagePreviewEntity);
+        return code;
+    }
+
+    @Override
+    public PagePreviewEntity getByCode(String code) {
+        LambdaQueryWrapper<PagePreviewEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PagePreviewEntity::getCode, code);
+        List<PagePreviewEntity> list = this.list(queryWrapper);
+        if (list == null || list.isEmpty()) {
+            throw new GlobalException("大屏预览数据不存在,可能已过期");
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public void clear() {
+        // 清除创建时间超过一天的预览数据
+        Date date = new Date();
+        date.setTime(date.getTime() - 24 * 60 * 60 * 1000);
+        LambdaQueryWrapper<PagePreviewEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.le(PagePreviewEntity::getCreateDate, date);
+        this.delete(queryWrapper);
+    }
+}

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

@@ -6,11 +6,13 @@ import com.gccloud.dataroom.core.config.DataRoomConfig;
 import com.gccloud.dataroom.core.constant.PageDesignConstant;
 import com.gccloud.dataroom.core.module.basic.dao.DataRoomPageDao;
 import com.gccloud.dataroom.core.module.basic.entity.PageEntity;
+import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
 import com.gccloud.dataroom.core.module.chart.bean.Chart;
 import com.gccloud.dataroom.core.module.chart.components.datasource.DataSetDataSource;
 import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
 import com.gccloud.dataroom.core.module.manage.dto.DataRoomSearchDTO;
 import com.gccloud.dataroom.core.module.manage.extend.DataRoomExtendClient;
+import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
 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;
@@ -58,6 +60,18 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
     @Resource
     private DataRoomPermissionClient permissionClient;
 
+    @Resource
+    private IDataRoomPagePreviewService previewService;
+
+    @Override
+    public PageEntity getByCode(String code) {
+        if (code.startsWith(IDataRoomPagePreviewService.PREVIEW_KEY)) {
+            PagePreviewEntity preview = previewService.getByCode(code);
+            return BeanConvertUtils.convert(preview, PageEntity.class);
+        }
+        return IDataRoomPageService.super.getByCode(code);
+    }
+
     @Override
     public String add(DataRoomPageDTO bigScreenPageDTO) {
         if (StringUtils.isBlank(bigScreenPageDTO.getCode())) {

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

@@ -104,6 +104,7 @@ 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);

+ 1 - 1
DataRoom/doc/init.sql

@@ -33,7 +33,7 @@ CREATE TABLE `big_screen_page`
     `icon_color`  varchar(100) NOT NULL DEFAULT '' COMMENT '图标颜色',
     `type`        varchar(100) NOT NULL DEFAULT 'custom' COMMENT '页面类型',
     `layout`      varchar(255) NOT NULL DEFAULT '' COMMENT '组件布局,记录组件的相对位置和顺序',
-    `config`      longtext COMMENT '表单属性,只有表单类型时才有这个值',
+    `config`      longtext COMMENT '页面配置',
     `parent_code` varchar(255) NOT NULL DEFAULT '' COMMENT '父级目录编码',
     `order_num`   bigint(64)   NOT NULL DEFAULT '0' COMMENT '排序',
     `remark`      varchar(100) NOT NULL DEFAULT '' COMMENT '备忘',

+ 19 - 0
DataRoom/doc/update.sql

@@ -1,3 +1,9 @@
+###########################################################################
+# 该sql文件只用于版本升级,如果您执行init.sql文件的时间在如下时间之后,您可以忽略该文件
+# 否则您需要按照时间顺序选择性执行该文件中的sql语句
+###########################################################################
+
+
 
 #20230621 配置表中的类名替换
 UPDATE big_screen_page SET config = REPLACE(config, '"className":"com.gccloud.bigscreen', '"className":"com.gccloud.dataroom');
@@ -126,3 +132,16 @@ CREATE TABLE `big_screen_map`
     PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8 COMMENT ='地图数据维护表';
+
+
+# 20230913 新增大屏页面预览缓存表
+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 ='页面预览缓存表,每日定时删除';

+ 3 - 1
data-room-ui/packages/BigScreenDesign/DataViewDialog/index.vue

@@ -202,11 +202,13 @@ export default {
         this.$message.warning('数据为空')
       }
       this.formVisible = false
+      this.exportLoading = true
     },
     // 导出数据
     exportHandler () {
+      this.exportLoading = false
       if (Object.keys(this.fields).length) {
-        this.$message.success('导出数据')
+        this.$message.success('数据导出成功')
       }
       this.formVisible = false
     }

+ 0 - 1
data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue

@@ -751,7 +751,6 @@ export default {
           } else {
             this.params = res.params
           }
-
           this.datasetName = res.name
           // 选择数据集的时候,如果数据集类型是dataModel,则不显示参数配置
           this.config.option.displayOption.params.enable = res.type !== 'dataModel'

+ 5 - 2
data-room-ui/packages/BigScreenRun/index.vue

@@ -47,7 +47,6 @@ import RenderCard from 'data-room-ui/Render/RenderCard.vue'
 import { mapActions, mapMutations, mapState } from 'vuex'
 import { compile } from 'tiny-sass-compiler/dist/tiny-sass-compiler.esm-browser.prod.js'
 import NotPermission from 'data-room-ui/NotPermission'
-import cloneDeep from 'lodash/cloneDeep'
 import Configuration from 'data-room-ui/Render/Configuration.vue'
 import DataViewDialog from 'data-room-ui/BigScreenDesign/DataViewDialog/index.vue'
 export default {
@@ -225,7 +224,11 @@ export default {
             that.chartList.forEach((chart, index) => {
               if (item.code === chart.code && item.time === time) {
                 item.time = item.time + item.originTime
-                that.$refs.RenderCardRef[index].$refs[chart.code].changeData(chart)
+                if (that.$refs.RenderCardRef[index].$refs[chart.code]?.componentInstance) {
+                  that.$refs.RenderCardRef[index].$refs[chart.code].componentInstance.changeData(chart)
+                } else {
+                  that.$refs.RenderCardRef[index].$refs[chart.code].changeData(chart)
+                }
               }
             })
           }

+ 6 - 7
data-room-ui/packages/BizComponent/index.vue

@@ -13,7 +13,6 @@
         </div>
       </div>
       <div class="right-btn-wrap">
-
         <CusBtn
           :loading="loading"
           @click="save"
@@ -92,12 +91,12 @@
               效果预览
             </div>
             <div class="upload-btn">
-             <CusBtn
-              :loading="loading"
-              @click.native="createdImg()"
-            >
-              生成图片
-            </CusBtn>
+              <CusBtn
+                :loading="loading"
+                @click.native="createdImg()"
+              >
+                生成图片
+              </CusBtn>
             </div>
           </div>
           <BizComponentPreview

+ 38 - 42
data-room-ui/packages/MapDataManagement/src/AddForm.vue

@@ -124,25 +124,24 @@
             class="bs-el-switch"
           />
         </el-form-item>
-
       </el-form>
       <span
         slot="footer"
         class="dialog-footer"
       >
-      <el-button
-        class="bs-el-button-default"
-        @click="handleClose"
-      >
-        取消
-      </el-button>
-      <el-button
-        type="primary"
-        @click="submitForm"
-      >
-        确定
-      </el-button>
-    </span>
+        <el-button
+          class="bs-el-button-default"
+          @click="handleClose"
+        >
+          取消
+        </el-button>
+        <el-button
+          type="primary"
+          @click="submitForm"
+        >
+          确定
+        </el-button>
+      </span>
     </el-dialog>
     <input
       ref="geoJsonFile"
@@ -157,20 +156,20 @@
 
 <script>
 import vueJsonViewer from 'vue-json-viewer'
-import {getMapChildFromGeoJson, mapAdd, repeatCheck} from 'data-room-ui/js/utils/mapDataService'
+import { getMapChildFromGeoJson, mapAdd, repeatCheck } from 'data-room-ui/js/utils/mapDataService'
 
 export default {
-  name: "AddForm",
+  name: 'AddForm',
   components: {
     vueJsonViewer
   },
   computed: {
-    autoParseNextLevelShow() {
+    autoParseNextLevelShow () {
       // geoJson 不为空,且支持下钻
       return !this.isEmpty(this.mapForm.geoJson) && this.mapForm.enableDown === 1
     }
   },
-  data() {
+  data () {
     const validateCode = (rule, value, callback) => {
       if (this.mapForm.parentId !== '0') {
         // 不需要校验
@@ -186,7 +185,6 @@ export default {
           callback()
         }
       })
-
     }
     return {
       mapFormVisible: false,
@@ -206,28 +204,28 @@ export default {
       },
       rules: {
         mapCode: [
-          {required: true, message: '请选择地图编码', trigger: 'blur'},
-          {validator: validateCode, trigger: 'blur'}
+          { required: true, message: '请选择地图编码', trigger: 'blur' },
+          { validator: validateCode, trigger: 'blur' }
         ],
         name: [
-          {required: true, message: '请输入地图名称', trigger: 'blur'}
+          { required: true, message: '请输入地图名称', trigger: 'blur' }
         ],
         level: [
-          {required: true, message: '请选择地图级别', trigger: 'change'}
+          { required: true, message: '请选择地图级别', trigger: 'change' }
         ]
       },
       levelList: [
-        {value: 0, label: '世界'},
-        {value: 1, label: '国家'},
-        {value: 2, label: '省份'},
-        {value: 3, label: '城市'},
-        {value: 4, label: '区县'}
+        { value: 0, label: '世界' },
+        { value: 1, label: '国家' },
+        { value: 2, label: '省份' },
+        { value: 3, label: '城市' },
+        { value: 4, label: '区县' }
       ],
       mapCodeList: []
     }
   },
   methods: {
-    init(parentMap) {
+    init (parentMap) {
       this.mapForm = {
         parentId: '0',
         mapCode: `map-${new Date().getTime()}`,
@@ -247,10 +245,10 @@ export default {
         this.getMapCodeList()
       }
     },
-    handleClose() {
+    handleClose () {
       this.mapFormVisible = false
     },
-    submitForm() {
+    submitForm () {
       this.$refs.mapForm.validate(valid => {
         if (!valid) {
           return false
@@ -269,19 +267,18 @@ export default {
           this.mapFormVisible = false
           this.$emit('refresh')
         })
-
       })
     },
-    isEmpty(obj) {
+    isEmpty (obj) {
       if (typeof obj === 'object') {
-        return Object.keys(obj).length === 0 && obj.constructor === Object;
+        return Object.keys(obj).length === 0 && obj.constructor === Object
       }
       if (typeof obj === 'string') {
-        return /^\s*$/.test(obj);
+        return /^\s*$/.test(obj)
       }
-      return Array.isArray(obj) && obj.length === 0;
+      return Array.isArray(obj) && obj.length === 0
     },
-    getMapCodeList() {
+    getMapCodeList () {
       this.mapCodeList = []
       if (this.mapForm.parentId === '0') {
         this.mapCodeList = [{
@@ -294,17 +291,17 @@ export default {
         })
       }
     },
-    upload() {
+    upload () {
       this.$refs.geoJsonFile.click()
     },
-    handleBatchUpload(source) {
+    handleBatchUpload (source) {
       this.uploadLoading = true
       const file = source.target.files
       const reader = new FileReader() // 新建一个FileReader
       reader.readAsText(file[0], 'UTF-8') // 读取文件
 
       reader.onload = (event) => {
-        let jsonStr = event.target.result
+        const jsonStr = event.target.result
         // 读取文件内容
         try {
           this.mapForm.geoJson = JSON.parse(jsonStr)
@@ -317,13 +314,12 @@ export default {
         // input通过onchange事件来触发js代码的,由于两次文件是重复的,所以这个时候onchange事件是没有触发到的,所以需要手动清空input的值
         source.target.value = ''
       }
-    },
+    }
 
   }
 }
 </script>
 
-
 <style lang="scss" scoped>
 @import '../../assets/style/bsTheme.scss';
 

+ 7 - 6
data-room-ui/packages/RemoteComponents/index.vue

@@ -22,7 +22,6 @@ import { mapMutations, mapState } from 'vuex'
 import innerRemoteComponents, { getRemoteComponents } from 'data-room-ui/RemoteComponents/remoteComponentsList'
 import { getBizComponentInfo } from 'data-room-ui/js/api/bigScreenApi'
 import { settingToTheme } from 'data-room-ui/js/utils/themeFormatting'
-import _ from 'lodash'
 import cloneDeep from 'lodash/cloneDeep'
 export default {
   name: 'LcdpRemoteComponent',
@@ -45,7 +44,8 @@ export default {
   data () {
     return {
       loading: false,
-      remoteComponent: null
+      remoteComponent: null,
+      componentInstance: null
     }
   },
   watch: {
@@ -92,8 +92,9 @@ export default {
     },
     async chartInit () {
       let config = this.config
-      config.g2Plots=g2Plot
-      config.echarts=_echarts
+      config.g2Plots = g2Plot
+      config.echarts = _echarts
+      this.componentInstance = this.$refs['remoteComponent' + config.code]
       // key和code相等,说明是一进来刷新,调用list接口
       if (this.config.code === this.config.key || this.isPreview) {
         // 改变样式
@@ -110,7 +111,7 @@ export default {
         }
       }
     },
-    linkEvent (formData) {
+        linkEvent (formData) {
       this.linkage(formData)
     },
     /**
@@ -215,7 +216,7 @@ export default {
       }
       // 只有样式改变时更新主题配置,切换主题时不需要保存
       if (!isUpdateTheme) {
-        config.theme = settingToTheme(_.cloneDeep(config), this.customTheme)
+        config.theme = settingToTheme(cloneDeep(config), this.customTheme)
       }
       if (this.chart) {
         this.chart.update(config.option)

+ 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('')"

+ 1 - 1
data-room-ui/packages/js/store/mutations.js

@@ -87,7 +87,7 @@ export default {
   // 改变当前组件配置
   changeChartConfig (state, itemConfig) {
     // 如果存在parentCode的组件,则是tab中的组件
-    if (itemConfig.parentCode) {
+    if (itemConfig?.parentCode) {
       state.pageInfo.chartList.forEach((chart, index) => {
         if (chart.code === itemConfig.parentCode) {
           chart.customize.tabList.forEach((tabItem, i) => {