diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml
index 79cd414d..46c7cdfb 100644
--- a/DataRoom/dataroom-core/pom.xml
+++ b/DataRoom/dataroom-core/pom.xml
@@ -18,6 +18,7 @@
+
com.gccloud
dataset-core
@@ -42,103 +43,21 @@
-
- org.aspectj
- aspectjrt
-
-
- org.springframework.boot
- spring-boot-starter-aop
-
-
-
- io.swagger
- swagger-annotations
- ${swagger.annotations.version}
-
-
- com.github.xiaoymin
- swagger-bootstrap-ui
- ${swagger.bootstrap.version}
-
-
-
- org.projectlombok
- lombok
- ${lombok.version}
-
-
-
- org.mybatis
- mybatis
- ${mybatis.version}
-
-
- com.baomidou
- mybatis-plus-core
- ${mybatis.plus.version}
-
-
- org.mybatis
- mybatis
-
-
-
-
- org.mybatis
- mybatis-spring
- ${mybatis-spring.version}
-
-
- com.baomidou
- mybatis-plus-boot-starter
- ${mybatis.plus.version}
-
-
- com.baomidou
- mybatis-plus-extension
- ${mybatis.plus.version}
-
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.apache.commons
- commons-collections4
- ${commons-collections4.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.hibernate.validator
- hibernate-validator
-
-
- com.google.guava
- guava
- ${guava.version}
-
com.fasterxml.jackson.core
jackson-core
- ${jackson.core.version}
+ ${jackson.version.core}
com.fasterxml.jackson.core
jackson-databind
- ${jackson.core.version}
+ ${jackson.version.core}
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.core.version}
+ ${jackson.version.core}
org.json
@@ -148,60 +67,7 @@
com.fasterxml.jackson.datatype
jackson-datatype-json-org
- ${jackson.core.version}
-
-
-
- org.codehaus.groovy
- groovy-all
- pom
- ${groovy.version}
-
-
- org.kohsuke
- groovy-sandbox
- 1.19
-
-
-
- com.github.ben-manes.caffeine
- caffeine
-
-
-
- com.alibaba
- druid-spring-boot-starter
- ${druid.version}
-
-
- p6spy
- p6spy
- ${p6spy.version}
-
-
- mysql
- mysql-connector-java
- ${mysql.version}
-
-
- com.oracle.database.jdbc
- ojdbc8
- ${ojdbc8.version}
-
-
- org.postgresql
- postgresql
- ${postgresql.version}
-
-
- com.clickhouse
- clickhouse-jdbc
- ${clickhouse.version}
-
-
- com.squareup.okhttp3
- okhttp
- 4.9.1
+ ${jackson.version.core}
\ No newline at end of file
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java
index b7c63375..00636c65 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java
@@ -50,35 +50,6 @@ public class DataSetDataSource extends BaseChartDataSource {
@ApiModelProperty(notes = "服务端分页页长")
private Integer pageSize;
- /**
- * 树组件的配置
- * 懒加载时,需要配置treeNodeField、
- */
-
- @ApiModelProperty(notes = "是否懒加载树")
- private boolean lazy = false;
-
- @ApiModelProperty(notes = "子级列表字段,非懒加载时使用")
- private String childrenField;
-
- @ApiModelProperty(notes = "树节点显示字段, 用于树组件,树表组件可不填")
- private String treeNodeField;
-
- @ApiModelProperty(notes = "父节点字段所存储的字段")
- private String parentIdValueField;
-
- @ApiModelProperty(notes = "父节点字段参数")
- private String parentIdParam;
-
- @ApiModelProperty(notes = "父节点字段")
- private String parentIdField;
-
- @ApiModelProperty(notes = "是否有子节点字段")
- private String hasChildrenField;
-
- @ApiModelProperty(notes = "默认根节点的父节点ID的值,如果不设置则默认为0")
- private String rootNodeParentIdValue;
-
/**
* 散点图特殊配置
*/
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 315faa25..e905671a 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
@@ -8,7 +8,7 @@ import com.gccloud.dataroom.core.module.manage.dto.DataRoomSearchDTO;
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;
-import com.gccloud.dataroom.core.permission.ScreenPermission;
+import com.gccloud.common.permission.ApiPermission;
import com.gccloud.dataroom.core.utils.Webjars;
import com.gccloud.common.exception.GlobalException;
import com.gccloud.common.utils.BeanConvertUtils;
@@ -45,7 +45,7 @@ public class DataRoomPageController {
@Resource
private DataRoomConfig bigScreenConfig;
- @ScreenPermission(permissions = {Permission.Screen.VIEW})
+ @ApiPermission(permissions = {Permission.DataRoom.VIEW})
@GetMapping("/info/code/{code}")
@ApiOperation(value = "大屏页/组件详情", position = 10, produces = MediaType.APPLICATION_JSON_VALUE)
public MixinsResp info(@PathVariable("code") String code) {
@@ -57,7 +57,7 @@ public class DataRoomPageController {
return resp;
}
- @ScreenPermission(permissions = {Permission.Screen.VIEW})
+ @ApiPermission(permissions = {Permission.DataRoom.VIEW})
@GetMapping("/page")
@ApiOperation(value = "大屏/组件分页列表", position = 10, produces = MediaType.APPLICATION_JSON_VALUE)
public MixinsResp> page(DataRoomSearchDTO searchDTO) {
@@ -68,7 +68,7 @@ public class DataRoomPageController {
}
- @ScreenPermission(permissions = {Permission.Screen.EDIT})
+ @ApiPermission(permissions = {Permission.DataRoom.ADD})
@PostMapping("/add")
@ApiOperation(value = "从空白新增大屏/组件", position = 20, produces = MediaType.APPLICATION_JSON_VALUE)
public R add(@RequestBody DataRoomPageDTO bigScreenPageDTO) {
@@ -80,7 +80,7 @@ public class DataRoomPageController {
return R.success(bigScreenPageDTO.getCode());
}
- @ScreenPermission(permissions = {Permission.Screen.EDIT})
+ @ApiPermission(permissions = {Permission.DataRoom.UPDATE})
@PostMapping("/update")
@ApiOperation(value = "修改大屏/组件", position = 30, produces = MediaType.APPLICATION_JSON_VALUE)
public R update(@RequestBody DataRoomPageDTO bigScreenPageDTO) {
@@ -92,7 +92,7 @@ public class DataRoomPageController {
return R.success(bigScreenPageDTO.getCode());
}
- @ScreenPermission(permissions = {Permission.Screen.DELETE})
+ @ApiPermission(permissions = {Permission.DataRoom.DELETE})
@PostMapping("/delete/{code}")
@ApiOperation(value = "删除大屏/组件", position = 40, produces = MediaType.APPLICATION_JSON_VALUE)
public R delete(@PathVariable String code) {
@@ -104,7 +104,7 @@ public class DataRoomPageController {
return R.success();
}
- @ScreenPermission(permissions = {Permission.Screen.EDIT})
+ @ApiPermission(permissions = {Permission.DataRoom.ADD})
@PostMapping("/copy/{code}")
@ApiOperation(value = "复制大屏/组件", position = 50, produces = MediaType.APPLICATION_JSON_VALUE)
public R copy(@PathVariable String code) {
@@ -116,7 +116,7 @@ public class DataRoomPageController {
return R.success(newCode);
}
- @ScreenPermission(permissions = {Permission.Screen.EDIT})
+ @ApiPermission(permissions = {Permission.DataRoom.ADD})
@PostMapping("/add/template")
@ApiOperation(value = "从模板新增大屏页", position = 20, produces = MediaType.APPLICATION_JSON_VALUE)
public R addByTemplate(@RequestBody DataRoomPageDTO bigScreenPageDTO) {
@@ -127,7 +127,6 @@ public class DataRoomPageController {
return R.success(code);
}
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW})
@PostMapping("/get/template")
@ApiOperation(value = "根据模板获取配置", position = 20, produces = MediaType.APPLICATION_JSON_VALUE)
public MixinsResp getByTemplate(@RequestBody DataRoomPageDTO bigScreenPageDTO) {
@@ -138,7 +137,7 @@ public class DataRoomPageController {
}
- @ScreenPermission
+ @ApiPermission
@GetMapping("/bg/list")
@ApiOperation(value = "背景图片列表", position = 60, produces = MediaType.APPLICATION_JSON_VALUE)
public R> getBgList() {
@@ -154,7 +153,7 @@ public class DataRoomPageController {
return R.success(bgList);
}
- @ScreenPermission
+ @ApiPermission
@GetMapping("/map/list/{level}")
@ApiOperation(value = "地图数据列表", position = 60, produces = MediaType.APPLICATION_JSON_VALUE)
public R> getMapJsonList(@PathVariable("level") String level) {
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java
index 99b3fc05..26dbf2c4 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java
@@ -6,8 +6,6 @@ import com.gccloud.dataroom.core.module.template.dto.PageTemplateSearchDTO;
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.vo.PageTemplateVO;
-import com.gccloud.dataroom.core.permission.Permission;
-import com.gccloud.dataroom.core.permission.ScreenPermission;
import com.gccloud.common.controller.SuperController;
import com.gccloud.common.utils.BeanConvertUtils;
import com.gccloud.common.validator.ValidatorUtils;
@@ -47,7 +45,6 @@ public class PageTemplateController extends SuperController {
* @param searchDTO
* @return
*/
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW})
@GetMapping("/page")
@ApiOperation(value = "分页查询", position = 10, notes = "分页查询列表", produces = MediaType.APPLICATION_JSON_VALUE)
@ApiImplicitParams({@ApiImplicitParam(name = "current", value = "页码", paramType = "query", required = true, dataType = "int"), @ApiImplicitParam(name = "size", value = "每页条数", paramType = "query", required = true, dataType = "int"), @ApiImplicitParam(name = "searchKey", value = "查询条件", paramType = "query", dataType = "string")})
@@ -68,7 +65,6 @@ public class PageTemplateController extends SuperController {
* @param searchDTO
* @return
*/
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW})
@GetMapping("/list")
@ApiOperation(value = "列表查询", position = 10, notes = "查询列表", produces = MediaType.APPLICATION_JSON_VALUE)
public R> getList(@ApiParam(name = "查询", value = "传入查询的业务条件", required = true) PageTemplateSearchDTO searchDTO) {
@@ -88,7 +84,6 @@ public class PageTemplateController extends SuperController {
* @param id
* @return
*/
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW})
@GetMapping("/info/{id}")
@ApiOperation(value = "详情", position = 20, notes = "获取详情", produces = MediaType.APPLICATION_JSON_VALUE)
public R getById(@ApiParam(name = "id", value = "传入String格式", required = true) @PathVariable("id") String id) {
@@ -103,7 +98,6 @@ public class PageTemplateController extends SuperController {
* @param pageTemplateDTO
* @return
*/
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_EDIT})
@PostMapping("/add")
@ApiOperation(value = "新增", position = 30, notes = "新增数据", produces = MediaType.APPLICATION_JSON_VALUE)
public R add(@ApiParam(name = "新增对象", value = "传入json格式", required = true) @RequestBody PageTemplateDTO pageTemplateDTO) {
@@ -119,7 +113,6 @@ public class PageTemplateController extends SuperController {
* @param pageTemplateDTO
* @return
*/
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_EDIT})
@PostMapping("/update")
@ApiOperation(value = "更新", position = 40, notes = "更新数据", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public R update(@ApiParam(name = "更新对象", value = "传入json格式", required = true) @RequestBody PageTemplateDTO pageTemplateDTO) {
@@ -136,7 +129,6 @@ public class PageTemplateController extends SuperController {
* @param idList
* @return
*/
- @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_DELETE})
@PostMapping("/delete")
@ApiOperation(value = "删除", position = 50, notes = "删除", produces = MediaType.APPLICATION_JSON_VALUE)
public R deleteById(@ApiParam(name = "id列表", value = "传入id列表", required = true) @RequestBody List idList) {
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java
index c991e93d..646e6328 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java
@@ -16,15 +16,13 @@ public class DataRoomPermissionClient {
@Autowired(required = false)
private IDataRoomPermissionService tokenService;
- public boolean verifyApiPermission(HttpServletRequest request, String... permissions) {
- boolean verify = true;
- if (tokenService != null) {
- verify = tokenService.verifyApiPermission(request, permissions);
- }
- return verify;
- }
-
+ /**
+ * 校验大屏页面访问权限
+ * @param request 请求
+ * @param pageCode 页面编码
+ * @return 是否有权限
+ */
public boolean verifyDataPermission(HttpServletRequest request, String pageCode) {
boolean verify = true;
if (tokenService != null) {
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java
index f1e1f722..152651e5 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java
@@ -10,15 +10,6 @@ import javax.servlet.http.HttpServletRequest;
*/
public interface IDataRoomPermissionService {
- /**
- * 校验接口权限
- * @param request
- * @param permission
- * @return
- */
- boolean verifyApiPermission(HttpServletRequest request, String... permission);
-
-
/**
* 校验大屏页面数据访问权限
* @param request
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/LoginRequiredAspect.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/LoginRequiredAspect.java
deleted file mode 100644
index f82cce2d..00000000
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/LoginRequiredAspect.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.gccloud.dataroom.core.permission;
-
-import com.gccloud.common.exception.GlobalException;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.AfterThrowing;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.lang.reflect.Method;
-import java.util.Objects;
-
-/**
- * @author hongyang
- * @version 1.0
- * @date 2023/5/15 10:51
- */
-@Slf4j
-@Aspect
-@Component("dataRoomLoginRequiredAspect")
-public class LoginRequiredAspect {
- @Resource
- private DataRoomPermissionClient tokenClient;
-
- @Before("@annotation(loginRequired) || @within(loginRequired)")
- public void doBefore(JoinPoint joinPoint, ScreenPermission loginRequired) {
- // 获取request
- HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
- // 判断方法所属的类是否标记了该注解
- Class> targetClass = joinPoint.getTarget().getClass();
- ScreenPermission classAnnotation = targetClass.getAnnotation(ScreenPermission.class);
- boolean classRequired = (classAnnotation != null && classAnnotation.required());
- // 判断方法是否标记了该注解
- MethodSignature signature = (MethodSignature) joinPoint.getSignature();
- Method method = signature.getMethod();
- ScreenPermission methodAnnotation = method.getAnnotation(ScreenPermission.class);
- boolean methodRequired = (methodAnnotation != null && methodAnnotation.required());
- // 判断是否需要登录权限,就近原则,方法上有优先方法上的,方法上没有则使用类上的
- boolean required = methodRequired || classRequired;
- if (required) {
- // 获取权限
- String[] permissions = methodAnnotation != null ? methodAnnotation.permissions() : classAnnotation.permissions();
- // 校验token
- boolean verify = tokenClient.verifyApiPermission(request, permissions);
- if (!verify) {
- throw new GlobalException("请求权限不足");
- }
- }
- }
-
- @AfterThrowing(pointcut = "@annotation(loginRequired) || @within(loginRequired)")
- public void doAfterThrowing(JoinPoint joinPoint, ScreenPermission loginRequired) {
- // 记录日志等操作
- }
-}
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java
index 99950e34..1b907295 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java
@@ -1,16 +1,18 @@
package com.gccloud.dataroom.core.permission;
+import com.gccloud.dataset.constant.DatasetConstant;
+
/**
* @author hongyang
* @version 1.0
* @date 2023/5/15 17:08
*/
-public interface Permission {
+public interface Permission extends DatasetConstant.Permission {
/**
* 大屏页面的权限
*/
- interface Screen {
+ interface DataRoom {
/**
* 大屏页面/组件的查询接口权限
@@ -18,85 +20,20 @@ public interface Permission {
String VIEW = "screen:view";
/**
- * 大屏页面/组件的编辑接口权限
- */
- String EDIT = "screen:edit";
-
- /**
- * 大屏页面/组件的删除接口权限
- */
- String DELETE = "screen:delete";
-
-
- /**
- * 大屏页面模板的查询接口权限
- */
- String TEMPLATE_VIEW = "screen:template:view";
-
- /**
- * 大屏页面模板的编辑接口权限
- */
- String TEMPLATE_EDIT = "screen:template:edit";
-
- /**
- * 大屏页面模板的删除接口权限
- */
- String TEMPLATE_DELETE = "screen:template:delete";
-
-
- }
-
- interface DataSource {
-
- /**
- * 数据源的查询接口权限
+ * 大屏页面/组件的新增接口权限
*/
- String VIEW = "dataSource:view";
+ String ADD = "screen:add";
/**
- * 数据源的编辑接口权限
- */
- String EDIT = "dataSource:edit";
-
- /**
- * 数据源的删除接口权限
- */
- String DELETE = "dataSource:delete";
-
- /**
- * 数据源的测试接口权限
- */
- String TEST = "dataSource:test";
-
- }
-
- interface DataSet {
-
- /**
- * 数据集的分类树查询接口权限
- */
- String CATEGORY = "dataSet:category";
-
- /**
- * 数据集的查询接口权限
- */
- String VIEW = "dataSet:view";
-
- /**
- * 数据集的编辑接口权限
+ * 大屏页面/组件的编辑接口权限
*/
- String EDIT = "dataSet:edit";
+ String UPDATE = "screen:update";
/**
- * 数据集的删除接口权限
+ * 大屏页面/组件的删除接口权限
*/
- String DELETE = "dataSet:delete";
+ String DELETE = "screen:delete";
- /**
- * 数据集的执行(获取数据)接口权限
- */
- String EXECUTE = "dataSet:execute";
}
-
}
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/ScreenPermission.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/ScreenPermission.java
deleted file mode 100644
index e00ac80e..00000000
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/ScreenPermission.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.gccloud.dataroom.core.permission;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author hongyang
- * @version 1.0
- * @date 2023/5/15 10:51
- */
-@Target({ElementType.METHOD, ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ScreenPermission {
-
- boolean required() default true;
-
- String[] permissions() default {};
-}
diff --git a/DataRoom/pom.xml b/DataRoom/pom.xml
index f5a184b6..018b6514 100644
--- a/DataRoom/pom.xml
+++ b/DataRoom/pom.xml
@@ -50,16 +50,17 @@
portable-1.7.8
5.3.1
20.0
- 2.13.3
+ 2.13.3
20220320
1.2.11
3.9.0
- 12.2.0.1
+ 12.2.0.1
5.1.49
42.3.3
0.3.2
2.2
- 0.0.1.2023071001.Alpha
+ 4.9.1
+ 0.0.1.2023071101.Alpha
diff --git a/data-room-ui/packages/js/store/mutations.js b/data-room-ui/packages/js/store/mutations.js
index 30ed4eb8..8c5bc62c 100644
--- a/data-room-ui/packages/js/store/mutations.js
+++ b/data-room-ui/packages/js/store/mutations.js
@@ -250,6 +250,12 @@ export default {
state.pageInfo.chartList = _.cloneDeep(currentStore?.chartList || [])
}
}
+ state.pageInfo.chartList = state.pageInfo.chartList.map(chart => {
+ return {
+ ...chart,
+ key: chart.code + new Date().getTime()
+ }
+ })
},
clearTimeline (state) {
// 最后一个状态