diff --git a/backend/src/main/java/io/dataease/auth/aop/DeCleanerAnnotationHandler.java b/backend/src/main/java/io/dataease/auth/aop/DeCleanerAnnotationHandler.java index 3584de725a..0132c5559e 100644 --- a/backend/src/main/java/io/dataease/auth/aop/DeCleanerAnnotationHandler.java +++ b/backend/src/main/java/io/dataease/auth/aop/DeCleanerAnnotationHandler.java @@ -1,18 +1,13 @@ package io.dataease.auth.aop; import io.dataease.auth.annotation.DeCleaner; -import io.dataease.auth.api.dto.CurrentUserDto; -import io.dataease.commons.constants.AuthConstants; import io.dataease.commons.constants.DePermissionType; -import io.dataease.commons.model.AuthURD; import io.dataease.commons.utils.AopUtils; -import io.dataease.commons.utils.AuthUtils; +import io.dataease.commons.utils.CommonBeanFactory; import io.dataease.commons.utils.LogUtil; -import io.dataease.listener.util.CacheUtils; -import org.apache.commons.collections4.CollectionUtils; +import io.dataease.service.decatch.DeCatchProcess; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; @@ -20,9 +15,6 @@ import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; import java.lang.reflect.Method; -import java.util.List; -import java.util.Optional; - @Aspect @Component public class DeCleanerAnnotationHandler { @@ -43,15 +35,16 @@ public class DeCleanerAnnotationHandler { paramValue = AopUtils.getParamValue(arg, key, 0); } + switch (type.name()) { case "DATASOURCE": - cleanDataSource(paramValue); + catchProcess().cleanDataSource(paramValue); break; case "DATASET": - cleanDataSet(paramValue); + catchProcess().cleanDataSet(paramValue); break; default: - cleanPanel(paramValue); + catchProcess().cleanPanel(paramValue); break; } } catch (Throwable e) { @@ -60,78 +53,10 @@ public class DeCleanerAnnotationHandler { } } - - - private void cleanCacheParent(String pid, String type) { - if (StringUtils.isBlank(pid) || StringUtils.isBlank(type)) { - return; - } - CurrentUserDto user = AuthUtils.getUser(); - List resourceIds = AuthUtils.parentResources(pid.toString(), type); - if (CollectionUtils.isEmpty(resourceIds))return; - resourceIds.forEach(resourceId -> { - AuthURD authURD = AuthUtils.authURDR(resourceId); - Optional.ofNullable(authURD.getUserIds()).ifPresent(ids -> { - ids.forEach(id -> { - CacheUtils.remove("user_"+type, "user" + id); - }); - }); - Optional.ofNullable(authURD.getRoleIds()).ifPresent(ids -> { - ids.forEach(id -> { - CacheUtils.remove("role_"+type, "role" + id); - }); - }); - Optional.ofNullable(authURD.getDeptIds()).ifPresent(ids -> { - ids.forEach(id -> { - List depts = AuthUtils.getAuthModels(id.toString(), "dept", user.getUserId(), user.getIsAdmin()); - depts.forEach(deptId -> { - CacheUtils.remove("dept_"+type, "dept" + deptId); - }); - }); - }); - }); + public DeCatchProcess catchProcess() { + return CommonBeanFactory.getBean(DeCatchProcess.class); } - public void cleanPanel(Object pid) { - CurrentUserDto user = AuthUtils.getUser(); - CacheUtils.remove(AuthConstants.USER_PANEL_NAME, "user" + user.getUserId()); - CacheUtils.remove(AuthConstants.DEPT_PANEL_NAME, "dept" + user.getDeptId()); - user.getRoles().forEach(role -> { - CacheUtils.remove(AuthConstants.ROLE_PANEL_NAME, "role" + role.getId()); - }); - - Optional.ofNullable(pid).ifPresent(resourceId -> { - cleanCacheParent(resourceId.toString(), "panel"); - }); - - - } - - public void cleanDataSet(Object pid) { - CurrentUserDto user = AuthUtils.getUser(); - CacheUtils.remove(AuthConstants.USER_DATASET_NAME, "user" + user.getUserId()); - CacheUtils.remove(AuthConstants.DEPT_DATASET_NAME, "dept" + user.getDeptId()); - user.getRoles().forEach(role -> { - CacheUtils.remove(AuthConstants.ROLE_DATASET_NAME, "role" + role.getId()); - }); - - Optional.ofNullable(pid).ifPresent(resourceId -> { - cleanCacheParent(resourceId.toString(), "dataset"); - }); - } - - public void cleanDataSource(Object pid) { - CurrentUserDto user = AuthUtils.getUser(); - CacheUtils.remove(AuthConstants.USER_LINK_NAME, "user" + user.getUserId()); - CacheUtils.remove(AuthConstants.DEPT_LINK_NAME, "dept" + user.getDeptId()); - user.getRoles().forEach(role -> { - CacheUtils.remove(AuthConstants.ROLE_LINK_NAME, "role" + role.getId()); - }); - - Optional.ofNullable(pid).ifPresent(resourceId -> { - cleanCacheParent(resourceId.toString(), "link"); - }); - } } diff --git a/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java b/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java index c1ca4e8678..241d0fd29f 100644 --- a/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java +++ b/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java @@ -62,8 +62,20 @@ public class PanelGroupController { @DePermission(type = DePermissionType.PANEL, value = "pid", level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE) }, logical = Logical.AND) @I18n - public PanelGroup saveOrUpdate(@RequestBody PanelGroupRequest request) { - return panelGroupService.saveOrUpdate(request); + public PanelGroup save(@RequestBody PanelGroupRequest request) throws Exception{ + String panelId = panelGroupService.save(request); + return findOne(panelId); + } + + @ApiOperation("更新") + @PostMapping("/update") + @DePermissions(value = { + @DePermission(type = DePermissionType.PANEL, value = "id"), + @DePermission(type = DePermissionType.PANEL, value = "pid", level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE) + }, logical = Logical.AND) + @I18n + public String update(@RequestBody PanelGroupRequest request) { + return panelGroupService.update(request); } @ApiOperation("删除") @@ -107,7 +119,7 @@ public class PanelGroupController { @ApiOperation("仪表板组件信息") @GetMapping("/queryPanelComponents/{id}") @I18n - public Map queryPanelComponents(@PathVariable String id){ + public Map queryPanelComponents(@PathVariable String id) { return panelGroupService.queryPanelComponents(id); } @@ -115,15 +127,15 @@ public class PanelGroupController { @PostMapping("/exportDetails") @I18n public void exportDetails(@RequestBody PanelViewDetailsRequest request, HttpServletResponse response) throws IOException { - panelGroupService.exportPanelViewDetails(request,response); + panelGroupService.exportPanelViewDetails(request, response); } @ApiOperation("更新仪表板状态") @PostMapping("/updatePanelStatus/{panelId}") @I18n @DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE) - public void updatePanelStatus(@PathVariable String panelId,@RequestBody PanelGroupBaseInfoRequest request){ - panelGroupService.updatePanelStatus(panelId,request); + public void updatePanelStatus(@PathVariable String panelId, @RequestBody PanelGroupBaseInfoRequest request) { + panelGroupService.updatePanelStatus(panelId, request); } } diff --git a/backend/src/main/java/io/dataease/ext/ExtChartViewMapper.xml b/backend/src/main/java/io/dataease/ext/ExtChartViewMapper.xml index 7fc57a374f..68b45e2614 100644 --- a/backend/src/main/java/io/dataease/ext/ExtChartViewMapper.xml +++ b/backend/src/main/java/io/dataease/ext/ExtChartViewMapper.xml @@ -365,6 +365,7 @@ custom_filter, drill_fields, SNAPSHOT, + senior, data_from) SELECT pv_copy.chart_view_id AS id, `name`, @@ -392,6 +393,7 @@ custom_filter, drill_fields, SNAPSHOT, + senior, data_from FROM ( SELECT panel_id, diff --git a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java index 93bc11b59d..ea85812798 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java @@ -79,8 +79,11 @@ public class JdbcProvider extends DefaultJdbcProvider { List list = new LinkedList<>(); try (Connection connection = getConnectionFromPool(datasourceRequest)) { if (datasourceRequest.getDatasource().getType().equalsIgnoreCase("oracle")) { - Method setRemarksReporting = extendedJdbcClassLoader.loadClass("oracle.jdbc.driver.OracleConnection").getMethod("setRemarksReporting", boolean.class); - setRemarksReporting.invoke(((DruidPooledConnection) connection).getConnection(), true); + OracleConfiguration oracleConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), OracleConfiguration.class); + if (isDefaultClassLoader(oracleConfiguration.getCustomDriver())) { + Method setRemarksReporting = extendedJdbcClassLoader.loadClass("oracle.jdbc.driver.OracleConnection").getMethod("setRemarksReporting", boolean.class); + setRemarksReporting.invoke(((DruidPooledConnection) connection).getConnection(), true); + } } DatabaseMetaData databaseMetaData = connection.getMetaData(); ResultSet resultSet = databaseMetaData.getColumns(null, "%", datasourceRequest.getTable(), "%"); diff --git a/backend/src/main/java/io/dataease/service/datasource/DriverService.java b/backend/src/main/java/io/dataease/service/datasource/DriverService.java index 663d49c997..df44a4fef3 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DriverService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DriverService.java @@ -1,5 +1,6 @@ package io.dataease.service.datasource; +import cn.hutool.core.collection.CollectionUtil; import com.google.gson.Gson; import io.dataease.commons.constants.SysLogConstants; import io.dataease.commons.utils.BeanUtils; @@ -8,14 +9,13 @@ import io.dataease.commons.utils.DeLogUtils; import io.dataease.dto.DriverDTO; import io.dataease.dto.SysLogDTO; import io.dataease.i18n.Translator; -import io.dataease.plugins.common.base.domain.Datasource; -import io.dataease.plugins.common.base.domain.DeDriver; -import io.dataease.plugins.common.base.domain.DeDriverDetails; -import io.dataease.plugins.common.base.domain.DeDriverDetailsExample; +import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.DeDriverDetailsMapper; import io.dataease.plugins.common.base.mapper.DeDriverMapper; import io.dataease.plugins.datasource.entity.JdbcConfiguration; +import io.dataease.plugins.datasource.provider.DefaultJdbcProvider; import io.dataease.plugins.datasource.provider.ExtendedJdbcClassLoader; +import io.dataease.provider.ProviderFactory; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,10 +27,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Modifier; import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -78,6 +75,15 @@ public class DriverService { } public DeDriver save(DeDriver deDriver) { + if(StringUtils.isEmpty(deDriver.getName()) || StringUtils.isEmpty(deDriver.getType())){ + throw new RuntimeException("Name or Type cannot be empty."); + } + DeDriverExample example = new DeDriverExample(); + example.createCriteria().andNameEqualTo(deDriver.getName()); + if(CollectionUtil.isNotEmpty(deDriverMapper.selectByExample(example))){ + throw new RuntimeException(Translator.get("I18N_DRIVER_REPEAT_NAME")); + } + deDriver.setCreateTime(System.currentTimeMillis()); deDriver.setId(UUID.randomUUID().toString()); deDriverMapper.insert(deDriver); @@ -96,12 +102,15 @@ public class DriverService { return deDriverDetailsMapper.selectByExampleWithBLOBs(example); } - public void deleteDriverFile(String driverFileId) { + public void deleteDriverFile(String driverFileId) throws Exception{ DeDriverDetails deDriverDetails = deDriverDetailsMapper.selectByPrimaryKey(driverFileId); + DeDriver deDriver = deDriverMapper.selectByPrimaryKey(deDriverDetails.getDeDriverId()); DeFileUtils.deleteFile(DRIVER_PATH + deDriverDetails.getDeDriverId() + "/" + deDriverDetails.getFileName()); SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.DELETE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), deDriverDetails.getDeDriverId(), null, null); DeLogUtils.save(sysLogDTO); deDriverDetailsMapper.deleteByPrimaryKey(driverFileId); + DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType()); + defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver); } public DeDriverDetails saveJar(MultipartFile file, String driverId) throws Exception { @@ -129,6 +138,9 @@ public class DriverService { deDriverDetailsMapper.insert(deDriverDetails); SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.UPLOADFILE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), driverId, null, null); DeLogUtils.save(sysLogDTO); + DeDriver deDriver = deDriverMapper.selectByPrimaryKey(driverId); + DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType()); + defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver); return deDriverDetails; } diff --git a/backend/src/main/java/io/dataease/service/decatch/DeCatchProcess.java b/backend/src/main/java/io/dataease/service/decatch/DeCatchProcess.java new file mode 100644 index 0000000000..23010d6039 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/decatch/DeCatchProcess.java @@ -0,0 +1,97 @@ +package io.dataease.service.decatch; + +import io.dataease.auth.api.dto.CurrentUserDto; +import io.dataease.commons.constants.AuthConstants; +import io.dataease.commons.model.AuthURD; +import io.dataease.commons.utils.AuthUtils; +import io.dataease.listener.util.CacheUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +/** + * Author: wangjiahao + * Date: 2022/5/31 + * Description: + */ +@Service +public class DeCatchProcess { + + @Async("taskExecutor") + public void cleanPanel(Object pid) { + CurrentUserDto user = AuthUtils.getUser(); + CacheUtils.remove(AuthConstants.USER_PANEL_NAME, "user" + user.getUserId()); + CacheUtils.remove(AuthConstants.DEPT_PANEL_NAME, "dept" + user.getDeptId()); + user.getRoles().forEach(role -> { + CacheUtils.remove(AuthConstants.ROLE_PANEL_NAME, "role" + role.getId()); + }); + + Optional.ofNullable(pid).ifPresent(resourceId -> { + cleanCacheParent(resourceId.toString(), "panel"); + }); + + + } + + @Async("taskExecutor") + public void cleanDataSet(Object pid) { + CurrentUserDto user = AuthUtils.getUser(); + CacheUtils.remove(AuthConstants.USER_DATASET_NAME, "user" + user.getUserId()); + CacheUtils.remove(AuthConstants.DEPT_DATASET_NAME, "dept" + user.getDeptId()); + user.getRoles().forEach(role -> { + CacheUtils.remove(AuthConstants.ROLE_DATASET_NAME, "role" + role.getId()); + }); + + Optional.ofNullable(pid).ifPresent(resourceId -> { + cleanCacheParent(resourceId.toString(), "dataset"); + }); + } + + @Async("taskExecutor") + public void cleanDataSource(Object pid) { + CurrentUserDto user = AuthUtils.getUser(); + CacheUtils.remove(AuthConstants.USER_LINK_NAME, "user" + user.getUserId()); + CacheUtils.remove(AuthConstants.DEPT_LINK_NAME, "dept" + user.getDeptId()); + user.getRoles().forEach(role -> { + CacheUtils.remove(AuthConstants.ROLE_LINK_NAME, "role" + role.getId()); + }); + + Optional.ofNullable(pid).ifPresent(resourceId -> { + cleanCacheParent(resourceId.toString(), "link"); + }); + } + + private void cleanCacheParent(String pid, String type) { + if (StringUtils.isBlank(pid) || StringUtils.isBlank(type)) { + return; + } + CurrentUserDto user = AuthUtils.getUser(); + List resourceIds = AuthUtils.parentResources(pid.toString(), type); + if (CollectionUtils.isEmpty(resourceIds))return; + resourceIds.forEach(resourceId -> { + AuthURD authURD = AuthUtils.authURDR(resourceId); + Optional.ofNullable(authURD.getUserIds()).ifPresent(ids -> { + ids.forEach(id -> { + CacheUtils.remove("user_"+type, "user" + id); + }); + }); + Optional.ofNullable(authURD.getRoleIds()).ifPresent(ids -> { + ids.forEach(id -> { + CacheUtils.remove("role_"+type, "role" + id); + }); + }); + Optional.ofNullable(authURD.getDeptIds()).ifPresent(ids -> { + ids.forEach(id -> { + List depts = AuthUtils.getAuthModels(id.toString(), "dept", user.getUserId(), user.getIsAdmin()); + depts.forEach(deptId -> { + CacheUtils.remove("dept_"+type, "dept" + deptId); + }); + }); + }); + }); + } +} diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index 6280bd45e5..0e08e58ba6 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -121,20 +121,22 @@ public class PanelGroupService { } @DeCleaner(value = DePermissionType.PANEL, key = "pid") - public PanelGroup saveOrUpdate(PanelGroupRequest request) { + public String save(PanelGroupRequest request) { + checkPanelName(request.getName(), request.getPid(), PanelConstants.OPT_TYPE_INSERT, null, request.getNodeType()); + String panelId = newPanel(request); + panelGroupMapper.insertSelective(request); + // 清理权限缓存 + clearPermissionCache(); + sysAuthService.copyAuth(panelId, SysAuthConstants.AUTH_SOURCE_TYPE_PANEL); + DeLogUtils.save(SysLogConstants.OPERATE_TYPE.CREATE, sourceType, panelId, request.getPid(), null, null); + return panelId; + } + + + public String update(PanelGroupRequest request) { String panelId = request.getId(); - if (StringUtils.isNotEmpty(panelId)) { - panelViewService.syncPanelViews(request); - } - if (StringUtils.isEmpty(panelId)) { // 新建 - checkPanelName(request.getName(), request.getPid(), PanelConstants.OPT_TYPE_INSERT, null, request.getNodeType()); - panelId = newPanel(request); - panelGroupMapper.insertSelective(request); - // 清理权限缓存 - clearPermissionCache(); - sysAuthService.copyAuth(panelId, SysAuthConstants.AUTH_SOURCE_TYPE_PANEL); - DeLogUtils.save(SysLogConstants.OPERATE_TYPE.CREATE, sourceType, panelId, request.getPid(), null, null); - } else if ("toDefaultPanel".equals(request.getOptType())) { // 转存为默认仪表板 + panelViewService.syncPanelViews(request); + if ("toDefaultPanel".equals(request.getOptType())) { // 转存为默认仪表板 panelId = UUID.randomUUID().toString(); PanelGroupWithBLOBs newDefaultPanel = panelGroupMapper.selectByPrimaryKey(request.getId()); newDefaultPanel.setPanelType(PanelConstants.PANEL_TYPE.SYSTEM); @@ -191,19 +193,9 @@ public class PanelGroupService { request.setPid(panel.getPid()); } } - DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, sourceType, request.getId(), request.getPid(), null, sourceType); } - - //带有权限的返回 - PanelGroupRequest authRequest = new PanelGroupRequest(); - authRequest.setId(panelId); - authRequest.setUserId(String.valueOf(AuthUtils.getUser().getUserId())); - List panelGroupDTOList = extPanelGroupMapper.panelGroupList(authRequest); - if (!CollectionUtils.isNotEmpty(panelGroupDTOList)) { - DataEaseException.throwException("未查询到用户对应的资源权限,请尝试刷新重新保存"); - } - return panelGroupDTOList.get(0); + return panelId; } diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index 91c15e3406..7c5fa0cfc6 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -154,4 +154,5 @@ SOURCE_TYPE_DRIVER=DRIVER SOURCE_TYPE_DRIVER_FILE=DRIVER FILE SOURCE_TYPE_MENU=MENU -I18N_DRIVER_NOT_DELETE=Drivers in use cannot be deleted \ No newline at end of file +I18N_DRIVER_NOT_DELETE=Drivers in use cannot be deleted +I18N_DRIVER_REPEAT_NAME=Driver name cannot be same. \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index b0f7600640..ab615dae2a 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -158,3 +158,4 @@ I18N_USER=操作人 I18N_TIME=操作时间 I18N_DRIVER_NOT_DELETE=使用中的驱动不允许删除 +I18N_DRIVER_REPEAT_NAME=名称重复 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index f69b3e047b..33343c94ec 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -153,4 +153,5 @@ SOURCE_TYPE_DRIVER=驅動 SOURCE_TYPE_DRIVER_FILE=驅動文件 SOURCE_TYPE_MENU=菜單 -I18N_DRIVER_NOT_DELETE=使用中的驅動不允許删除 \ No newline at end of file +I18N_DRIVER_NOT_DELETE=使用中的驅動不允許删除 +I18N_DRIVER_REPEAT_NAME=名稱重複 \ No newline at end of file diff --git a/frontend/src/api/panel/panel.js b/frontend/src/api/panel/panel.js index 83849f1dd9..d97c41b615 100644 --- a/frontend/src/api/panel/panel.js +++ b/frontend/src/api/panel/panel.js @@ -72,6 +72,16 @@ export function panelSave(data) { data }) } + +export function panelUpdate(data) { + return request({ + url: 'panel/group/update', + method: 'post', + loading: true, + data + }) +} + export function findOne(id) { return request({ url: 'panel/group/findOne/' + id, diff --git a/frontend/src/components/canvas/components/Editor/Preview.vue b/frontend/src/components/canvas/components/Editor/Preview.vue index 517ca5e989..6e15a7685b 100644 --- a/frontend/src/components/canvas/components/Editor/Preview.vue +++ b/frontend/src/components/canvas/components/Editor/Preview.vue @@ -2,10 +2,11 @@
-
-            
-            {{ $t('panel.panel_off') }}
-        
+
+ +
+ {{ $t('panel.panel_off') }} +
{{ $t('panel.panelNull') }} diff --git a/frontend/src/components/canvas/components/Toolbar.vue b/frontend/src/components/canvas/components/Toolbar.vue index 66f8a630f9..7f092800f4 100644 --- a/frontend/src/components/canvas/components/Toolbar.vue +++ b/frontend/src/components/canvas/components/Toolbar.vue @@ -87,7 +87,7 @@ import { mapState } from 'vuex' import { commonStyle, commonAttr } from '@/components/canvas/custom-component/component-list' import eventBus from '@/components/canvas/utils/eventBus' import { deepCopy, mobile2MainCanvas } from '@/components/canvas/utils/utils' -import { panelSave } from '@/api/panel/panel' +import { panelUpdate } from '@/api/panel/panel' import { saveLinkage, getPanelAllLinkageInfo } from '@/api/panel/linkage' import bus from '@/utils/bus' import { @@ -295,7 +295,7 @@ export default { }) // 无需保存条件 requestInfo.panelData = JSON.stringify(components) - panelSave(requestInfo).then(response => { + panelUpdate(requestInfo).then(response => { this.$store.commit('refreshSaveStatus') this.$message({ message: this.$t('commons.save_success'), diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue index c387523dfc..80ec0dabac 100644 --- a/frontend/src/components/canvas/custom-component/UserView.vue +++ b/frontend/src/components/canvas/custom-component/UserView.vue @@ -549,14 +549,7 @@ export default { // 将视图传入echart组件 if (response.success) { this.chart = response.data - if (this.isEdit) { - this.componentViewsData[this.chart.id] = { - 'title': this.chart.title, - 'render': this.chart.render, - 'type': this.chart.type, - 'isPlugin': this.chart.isPlugin - } - } + this.getDataOnly(response.data) this.chart['position'] = this.inTab ? 'tab' : 'panel' // 记录当前数据 this.panelViewDetailsInfo[id] = JSON.stringify(this.chart) @@ -613,7 +606,6 @@ export default { tableChart.customStyle = JSON.stringify(tableChart.customStyle) eventBus.$emit('openChartDetailsDialog', { chart: this.chart, tableChart: tableChart }) }, - chartClick(param) { if (this.drillClickDimensionList.length < this.chart.drillFields.length - 1) { (this.chart.type === 'map' || this.chart.type === 'buddle-map') && this.sendToChildren(param) @@ -867,6 +859,21 @@ export default { } this.mergeScale() } + }, + getDataOnly(sourceResponseData) { + if (this.isEdit) { + if ((this.filter.filter && this.filter.filter.length) || (this.filter.linkageFilters && this.filter.linkageFilters.length)) { + viewData(this.chart.id, this.panelInfo.id, { + filter: [], + drill: [], + queryFrom: 'panel' + }).then(response => { + this.componentViewsData[this.chart.id] = response.data + }) + } else { + this.componentViewsData[this.chart.id] = sourceResponseData + } + } } } } diff --git a/frontend/src/components/canvas/custom-component/component-list.js b/frontend/src/components/canvas/custom-component/component-list.js index dc16d07ba3..ca788f5547 100644 --- a/frontend/src/components/canvas/custom-component/component-list.js +++ b/frontend/src/components/canvas/custom-component/component-list.js @@ -411,8 +411,7 @@ const list = [ verticalAlign: 'middle', borderStyle: 'solid', borderColor: '#000000', - time_margin: 0, - padding: 10 + time_margin: 0 }, formatInfo: { openMode: '0', diff --git a/frontend/src/views/chart/chart/gauge/gauge.js b/frontend/src/views/chart/chart/gauge/gauge.js index 477d155d4d..9c45f7f8d7 100644 --- a/frontend/src/views/chart/chart/gauge/gauge.js +++ b/frontend/src/views/chart/chart/gauge/gauge.js @@ -130,7 +130,7 @@ export function baseGaugeOption(chart_option, chart, scale = 1) { } } } - console.log(chart_option.series[0]) + // console.log(chart_option.series[0]) // console.log(chart_option); componentStyle(chart_option, chart) return chart_option diff --git a/frontend/src/views/chart/components/normal/LabelNormalText.vue b/frontend/src/views/chart/components/normal/LabelNormalText.vue index b60dc5ac2e..5da713827e 100644 --- a/frontend/src/views/chart/components/normal/LabelNormalText.vue +++ b/frontend/src/views/chart/components/normal/LabelNormalText.vue @@ -1,5 +1,5 @@