diff --git a/backend/src/main/java/io/dataease/auth/service/impl/ExtAuthServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/ExtAuthServiceImpl.java
index e141cc1b62..4220d88dfc 100644
--- a/backend/src/main/java/io/dataease/auth/service/impl/ExtAuthServiceImpl.java
+++ b/backend/src/main/java/io/dataease/auth/service/impl/ExtAuthServiceImpl.java
@@ -2,7 +2,6 @@ package io.dataease.auth.service.impl;
import io.dataease.auth.service.ExtAuthService;
import io.dataease.base.domain.SysAuth;
-import io.dataease.base.domain.SysAuthExample;
import io.dataease.base.mapper.SysAuthMapper;
import io.dataease.base.mapper.ext.ExtAuthMapper;
import io.dataease.commons.model.AuthURD;
diff --git a/backend/src/main/java/io/dataease/commons/utils/CodingUtil.java b/backend/src/main/java/io/dataease/commons/utils/CodingUtil.java
index 4bdea0e469..7e3c5ef7aa 100644
--- a/backend/src/main/java/io/dataease/commons/utils/CodingUtil.java
+++ b/backend/src/main/java/io/dataease/commons/utils/CodingUtil.java
@@ -7,7 +7,6 @@ import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
-import java.util.UUID;
/**
* 加密解密工具
diff --git a/backend/src/main/java/io/dataease/controller/IndexController.java b/backend/src/main/java/io/dataease/controller/IndexController.java
index 19c83d007f..70febde13c 100644
--- a/backend/src/main/java/io/dataease/controller/IndexController.java
+++ b/backend/src/main/java/io/dataease/controller/IndexController.java
@@ -2,7 +2,6 @@ package io.dataease.controller;
import io.dataease.commons.license.DefaultLicenseService;
import io.dataease.commons.license.F2CLicenseResponse;
-import io.dataease.exception.DataEaseException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java
index 5b50abc369..18bfca1765 100644
--- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java
+++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java
@@ -5,9 +5,7 @@ import io.dataease.base.domain.ChartViewWithBLOBs;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.request.chart.ChartExtRequest;
import io.dataease.controller.request.chart.ChartViewRequest;
-import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.dto.chart.ChartViewDTO;
-import io.dataease.dto.dataset.DataSetTableDTO;
import io.dataease.service.chart.ChartViewService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
diff --git a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java
index 430fb22f1c..7009e07eba 100644
--- a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java
+++ b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java
@@ -3,7 +3,6 @@ package io.dataease.controller.request.dataset;
import io.dataease.base.domain.DatasetGroup;
import lombok.Data;
-import java.util.List;
import java.util.Set;
/**
diff --git a/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java b/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java
index 8f1149ead6..4ddf049a69 100644
--- a/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java
+++ b/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java
@@ -4,7 +4,6 @@ import io.dataease.base.domain.SysUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import java.util.ArrayList;
import java.util.List;
@Data
diff --git a/backend/src/main/java/io/dataease/dto/chart/Series.java b/backend/src/main/java/io/dataease/dto/chart/Series.java
index 2052dca0cd..96b7d000d4 100644
--- a/backend/src/main/java/io/dataease/dto/chart/Series.java
+++ b/backend/src/main/java/io/dataease/dto/chart/Series.java
@@ -3,7 +3,6 @@ package io.dataease.dto.chart;
import lombok.Getter;
import lombok.Setter;
-import java.math.BigDecimal;
import java.util.List;
/**
diff --git a/backend/src/main/java/io/dataease/provider/QueryProvider.java b/backend/src/main/java/io/dataease/provider/QueryProvider.java
index b3f4ad5a8a..9caa1ebb68 100644
--- a/backend/src/main/java/io/dataease/provider/QueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/QueryProvider.java
@@ -5,7 +5,6 @@ import io.dataease.base.domain.DatasetTableField;
import io.dataease.base.domain.Datasource;
import io.dataease.controller.request.chart.ChartExtFilterRequest;
import io.dataease.datasource.dto.JdbcDTO;
-import io.dataease.datasource.dto.SqlServerConfigration;
import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
diff --git a/backend/src/main/java/io/dataease/provider/doris/DorisConstants.java b/backend/src/main/java/io/dataease/provider/doris/DorisConstants.java
index e25aa90085..fda5ea41ef 100644
--- a/backend/src/main/java/io/dataease/provider/doris/DorisConstants.java
+++ b/backend/src/main/java/io/dataease/provider/doris/DorisConstants.java
@@ -3,7 +3,6 @@ package io.dataease.provider.doris;
import io.dataease.provider.SQLConstants;
import static io.dataease.datasource.constants.DatasourceTypes.doris;
-import static io.dataease.datasource.constants.DatasourceTypes.mysql;
/**
* @Author gin
diff --git a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java
index eecb57b2d2..9944e3b1b8 100644
--- a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java
@@ -8,8 +8,6 @@ import io.dataease.base.mapper.DatasetTableFieldMapper;
import io.dataease.commons.constants.DeTypeConstants;
import io.dataease.controller.request.chart.ChartExtFilterRequest;
import io.dataease.datasource.dto.JdbcDTO;
-import io.dataease.datasource.dto.PgConfigration;
-import io.dataease.datasource.dto.SqlServerConfigration;
import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
diff --git a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java
index 6820889473..37d0ec4881 100644
--- a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java
@@ -8,7 +8,6 @@ import io.dataease.base.mapper.DatasetTableFieldMapper;
import io.dataease.commons.constants.DeTypeConstants;
import io.dataease.controller.request.chart.ChartExtFilterRequest;
import io.dataease.datasource.dto.JdbcDTO;
-import io.dataease.datasource.dto.SqlServerConfigration;
import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableFieldsService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableFieldsService.java
index 08a1b41d61..fe31ef30c1 100644
--- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableFieldsService.java
+++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableFieldsService.java
@@ -12,7 +12,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
/**
@@ -35,7 +34,7 @@ public class DataSetTableFieldsService {
datasetTableField.setId(UUID.randomUUID().toString());
// 若dataeasename为空,则用MD5(id)作为dataeasename
if (StringUtils.isEmpty(datasetTableField.getDataeaseName())) {
- datasetTableField.setDataeaseName(DorisTableUtils.dorisFieldName(datasetTableField.getId()));
+ datasetTableField.setDataeaseName(DorisTableUtils.columnName(datasetTableField.getId()));
}
if (ObjectUtils.isEmpty(datasetTableField.getLastSyncTime())) {
datasetTableField.setLastSyncTime(System.currentTimeMillis());
diff --git a/backend/src/main/java/io/dataease/service/dataset/DatasetFunctionService.java b/backend/src/main/java/io/dataease/service/dataset/DatasetFunctionService.java
index 92f2d61b4c..ff6337037f 100644
--- a/backend/src/main/java/io/dataease/service/dataset/DatasetFunctionService.java
+++ b/backend/src/main/java/io/dataease/service/dataset/DatasetFunctionService.java
@@ -2,9 +2,7 @@ package io.dataease.service.dataset;
import io.dataease.base.domain.*;
import io.dataease.base.mapper.DatasetTableFunctionMapper;
-import io.dataease.commons.utils.DorisTableUtils;
import io.dataease.datasource.service.DatasourceService;
-import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -35,6 +33,7 @@ public class DatasetFunctionService {
if (StringUtils.isNotEmpty(datasetTableFunction.getDbType())) {
criteria.andDbTypeEqualTo(datasetTableFunction.getDbType());
}
+ datasetTableFunctionExample.setOrderByClause("name asc");
return datasetTableFunctionMapper.selectByExampleWithBLOBs(datasetTableFunctionExample);
}
diff --git a/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java b/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java
index 20447092a0..0e5cfe21b0 100644
--- a/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java
+++ b/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java
@@ -1,7 +1,6 @@
package io.dataease.service.panel;
import io.dataease.base.domain.PanelViewLinkage;
-import io.dataease.base.domain.PanelViewLinkageExample;
import io.dataease.base.domain.PanelViewLinkageField;
import io.dataease.base.mapper.PanelViewLinkageFieldMapper;
import io.dataease.base.mapper.PanelViewLinkageMapper;
@@ -10,7 +9,6 @@ import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.request.panel.PanelLinkageRequest;
import io.dataease.dto.LinkageInfoDTO;
import io.dataease.dto.PanelViewLinkageDTO;
-import io.dataease.dto.PanelViewLinkageFieldDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/backend/src/main/java/io/dataease/service/sys/DeptService.java b/backend/src/main/java/io/dataease/service/sys/DeptService.java
index a065e84e9b..7eb30ae7c8 100644
--- a/backend/src/main/java/io/dataease/service/sys/DeptService.java
+++ b/backend/src/main/java/io/dataease/service/sys/DeptService.java
@@ -8,7 +8,6 @@ import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.controller.sys.base.BaseGridRequest;
-import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.controller.sys.request.DeptCreateRequest;
import io.dataease.controller.sys.request.DeptDeleteRequest;
import io.dataease.controller.sys.request.DeptStatusRequest;
@@ -19,7 +18,6 @@ import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
diff --git a/frontend/src/components/business/condition-table/DeComplexOperator.vue b/frontend/src/components/business/condition-table/DeComplexOperator.vue
index e0b57b5f22..4f995080b4 100644
--- a/frontend/src/components/business/condition-table/DeComplexOperator.vue
+++ b/frontend/src/components/business/condition-table/DeComplexOperator.vue
@@ -6,6 +6,7 @@
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue b/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue
index c927bbcf51..7aa7cd866e 100644
--- a/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue
+++ b/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue
@@ -1,7 +1,7 @@
- 清除所有联动
+ {{ $t('panel.remove_all_linkage') }}
diff --git a/frontend/src/components/canvas/components/Editor/EditBar.vue b/frontend/src/components/canvas/components/Editor/EditBar.vue
index e2ecad6e4b..f0803a8123 100644
--- a/frontend/src/components/canvas/components/Editor/EditBar.vue
+++ b/frontend/src/components/canvas/components/Editor/EditBar.vue
@@ -7,10 +7,19 @@
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
@@ -53,6 +62,19 @@ export default {
}
},
computed: {
+ existLinkage() {
+ let linkageFiltersCount = 0
+ this.componentData.forEach(item => {
+ if (item.linkageFilters && item.linkageFilters.length > 0) {
+ item.linkageFilters.forEach(linkage => {
+ if (this.element.propValue.viewId === linkage.sourceViewId) {
+ linkageFiltersCount++
+ }
+ })
+ }
+ })
+ return linkageFiltersCount
+ },
linkageInfo() {
return this.targetLinkageInfo[this.element.propValue.viewId]
},
@@ -93,6 +115,21 @@ export default {
},
linkageEdit() {
+ },
+ // 清除相同sourceViewId 的 联动条件
+ clearLinkage() {
+ this.componentData.forEach(item => {
+ if (item.linkageFilters && item.linkageFilters.length > 0) {
+ const newList = item.linkageFilters.filter(linkage => linkage.sourceViewId !== this.element.propValue.viewId)
+ item.linkageFilters.splice(0, item.linkageFilters.length)
+ // 重新push 可保证数组指针不变 可以watch到
+ if (newList.length > 0) {
+ newList.forEach(newLinkage => {
+ item.linkageFilters.push(newLinkage)
+ })
+ }
+ }
+ })
}
}
}
diff --git a/frontend/src/components/canvas/components/Editor/LinkageField.vue b/frontend/src/components/canvas/components/Editor/LinkageField.vue
index d4f50e9421..94c7783bef 100644
--- a/frontend/src/components/canvas/components/Editor/LinkageField.vue
+++ b/frontend/src/components/canvas/components/Editor/LinkageField.vue
@@ -3,6 +3,7 @@
@@ -13,52 +14,55 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
@@ -67,7 +71,6 @@
-
@@ -183,5 +186,9 @@ export default {
height: 35px;
border-radius: 3px;
}
+ >>>.el-popover{
+ height: 200px;
+ overflow: auto;
+ }
diff --git a/frontend/src/components/canvas/components/Toolbar.vue b/frontend/src/components/canvas/components/Toolbar.vue
index a4e3f4e5c0..10cea07695 100644
--- a/frontend/src/components/canvas/components/Toolbar.vue
+++ b/frontend/src/components/canvas/components/Toolbar.vue
@@ -76,10 +76,10 @@
-
+
-
+
{{ $t('panel.panel_save_warn_tips') }}
@@ -320,6 +320,38 @@ export default {
this.close()
},
saveLinkage() {
+ // 字段检查
+ // let checkCount = 0
+ for (const key in this.targetLinkageInfo) {
+ let subCheckCount = 0
+ const linkageInfo = this.targetLinkageInfo[key]
+ const linkageFields = linkageInfo['linkageFields']
+ if (linkageFields) {
+ linkageFields.forEach(function(linkage) {
+ if (!(linkage.sourceField && linkage.targetField)) {
+ subCheckCount++
+ }
+ })
+ }
+
+ if (subCheckCount > 0) {
+ this.$message({
+ message: this.$t('chart.datalist') + '【' + linkageInfo.targetViewName + '】' + this.$t('panel.exit_un_march_linkage_field'),
+ type: 'error',
+ showClose: true
+ })
+ return
+ }
+ }
+ // if (checkCount > 0) {
+ // this.$message({
+ // message: this.$t('panel.exit_un_march_linkage_field'),
+ // type: 'error',
+ // showClose: true
+ // })
+ // return
+ // }
+
const request = {
panelId: this.$store.state.panel.panelInfo.id,
sourceViewId: this.curLinkageView.propValue.viewId,
diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue
index 5c6210b454..c31f829010 100644
--- a/frontend/src/components/canvas/custom-component/UserView.vue
+++ b/frontend/src/components/canvas/custom-component/UserView.vue
@@ -113,7 +113,7 @@ export default {
linkageFilters() {
// 必要 勿删勿该 watch数组,哪怕发生变化 oldValue等于newValue ,深拷贝解决
if (!this.element.linkageFilters) return []
- console.log('linkageFilters:' + JSON.stringify(this.element.linkageFilters))
+ // console.log('linkageFilters:' + JSON.stringify(this.element.linkageFilters))
return JSON.parse(JSON.stringify(this.element.linkageFilters))
},
trackMenu() {
@@ -127,7 +127,7 @@ export default {
})
linkageCount && trackMenuInfo.push('linkage')
this.drillFields.length && trackMenuInfo.push('drill')
- console.log('trackMenuInfo' + JSON.stringify(trackMenuInfo))
+ // console.log('trackMenuInfo' + JSON.stringify(trackMenuInfo))
return trackMenuInfo
},
chartType() {
diff --git a/frontend/src/components/dataease/DeOutWidget.vue b/frontend/src/components/dataease/DeOutWidget.vue
index 7ce1807214..47316d13da 100644
--- a/frontend/src/components/dataease/DeOutWidget.vue
+++ b/frontend/src/components/dataease/DeOutWidget.vue
@@ -77,7 +77,11 @@ export default {
const titleWidth = this.$refs.deTitle.offsetWidth
const deContentContainer = this.$refs.deContentContainer
this.$nextTick(() => {
- if (height < 75) {
+ let min = 75
+ if (this.element.component === 'de-number-range') {
+ min = 105
+ }
+ if (height < min) {
// console.log(titleWidth)
this.mainClass = 'condition-main-line'
deContentContainer && (deContentContainer.style.inset = '0 0 0 ' + (titleWidth + 15) + 'px')
@@ -121,6 +125,8 @@ export default {
.condition-title-absolute {
inset: 0px 0px;
position: absolute;
+ top: 15px;
+ left: 4px;
}
.span-container {
diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js
index 10cca9e74a..9e060d75be 100644
--- a/frontend/src/lang/en.js
+++ b/frontend/src/lang/en.js
@@ -1210,7 +1210,12 @@ export default {
do_not_save: "Don't Save",
save_and_close: 'Save',
drill: 'drill',
- linkage: 'linkage'
+ linkage: 'linkage',
+ cancel_linkage: 'Cancel Linkage',
+ remove_all_linkage: 'Remove All Linkage',
+ exit_un_march_linkage_field: 'Exit Un March Linkage Field',
+ details: 'Details',
+ setting: 'Setting'
},
plugin: {
local_install: 'Local installation',
diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js
index 082eef1234..540539c9b6 100644
--- a/frontend/src/lang/tw.js
+++ b/frontend/src/lang/tw.js
@@ -1209,7 +1209,12 @@ export default {
do_not_save: '不保存',
save: '保存',
drill: '下钻',
- linkage: '联动'
+ linkage: '联动',
+ cancel_linkage: '取消联动',
+ remove_all_linkage: '清除所有联动',
+ exit_un_march_linkage_field: '存在未匹配联动关系的字段',
+ details: '详情',
+ setting: '设置'
},
plugin: {
local_install: '本地安裝',
diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js
index 465790a6d4..881f1ef0e5 100644
--- a/frontend/src/lang/zh.js
+++ b/frontend/src/lang/zh.js
@@ -1211,7 +1211,12 @@ export default {
do_not_save: '不保存',
save: '保存',
drill: '下钻',
- linkage: '联动'
+ linkage: '联动',
+ cancel_linkage: '取消联动',
+ remove_all_linkage: '清除所有联动',
+ exit_un_march_linkage_field: '存在未匹配联动关系的字段',
+ details: '详情',
+ setting: '设置'
},
plugin: {
local_install: '本地安装',
diff --git a/frontend/src/main.js b/frontend/src/main.js
index 81003687bd..81b11d9db2 100644
--- a/frontend/src/main.js
+++ b/frontend/src/main.js
@@ -21,7 +21,7 @@ import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import './utils/dialog'
import DeComplexInput from '@/components/business/condition-table/DeComplexInput'
-
+import DeComplexSelect from '@/components/business/condition-table/DeComplexSelect'
import '@/components/canvas/custom-component' // 注册自定义组件
Vue.config.productionTip = false
Vue.use(VueClipboard)
@@ -74,6 +74,7 @@ Vue.use(directives)
Vue.use(message)
Vue.component('Treeselect', Treeselect)
Vue.component('DeComplexInput', DeComplexInput)
+Vue.component('DeComplexSelect', DeComplexSelect)
Vue.config.productionTip = false
Vue.prototype.hasDataPermission = function(pTarget, pSource) {
diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js
index 43facb6fe1..b9b876dea1 100644
--- a/frontend/src/store/index.js
+++ b/frontend/src/store/index.js
@@ -178,7 +178,7 @@ const data = {
if (element.propValue.viewId === targetViewId) { // 如果目标视图 和 当前循环组件id相等 则进行条件增减
const targetFieldId = targetInfoArray[1] // 目标视图列ID
const condition = new Condition('', targetFieldId, 'eq', [dimension.value], [targetViewId])
-
+ condition.sourceViewId = viewId
let j = currentFilters.length
while (j--) {
const filter = currentFilters[j]
diff --git a/frontend/src/views/chart/chart/chart.js b/frontend/src/views/chart/chart/chart.js
index 77687da0ef..45f0e413b6 100644
--- a/frontend/src/views/chart/chart/chart.js
+++ b/frontend/src/views/chart/chart/chart.js
@@ -715,6 +715,12 @@ export const BASE_TREEMAP = {
{
// name: '',
type: 'treemap',
+ itemStyle: {
+ gapWidth: 2
+ },
+ breadcrumb: {
+ show: false
+ },
// radius: ['0%', '60%'],
// avoidLabelOverlap: false,
// emphasis: {
diff --git a/frontend/src/views/chart/chart/scatter/scatter.js b/frontend/src/views/chart/chart/scatter/scatter.js
index 0ed0b07ad0..c90278c189 100644
--- a/frontend/src/views/chart/chart/scatter/scatter.js
+++ b/frontend/src/views/chart/chart/scatter/scatter.js
@@ -1,6 +1,8 @@
import { hexColorToRGBA } from '@/views/chart/chart/util'
import { componentStyle } from '../common/common'
+let bubbleArray = []
+
export function baseScatterOption(chart_option, chart) {
// 处理shape attr
let customAttr = {}
@@ -21,6 +23,7 @@ export function baseScatterOption(chart_option, chart) {
if (chart.data) {
chart_option.title.text = chart.title
chart_option.xAxis.data = chart.data.x
+ bubbleArray = []
for (let i = 0; i < chart.data.series.length; i++) {
const y = chart.data.series[i]
// color
@@ -33,6 +36,9 @@ export function baseScatterOption(chart_option, chart) {
const extBubble = JSON.parse(chart.extBubble)
if (extBubble && extBubble.length > 0) {
+ y.data.forEach(ele => {
+ bubbleArray.push(ele.value[2])
+ })
y.symbolSize = funcSize
} else {
y.symbolSize = customAttr.size.scatterSymbolSize ? customAttr.size.scatterSymbolSize : 20
@@ -53,5 +59,7 @@ export function baseScatterOption(chart_option, chart) {
}
const funcSize = function(data) {
- return data[2]
+ const k = 80
+ const max = Math.max(...bubbleArray)
+ return (data[2] / max) * k
}
diff --git a/frontend/src/views/chart/chart/treemap/treemap.js b/frontend/src/views/chart/chart/treemap/treemap.js
index de7c07eb49..c4b7dc719f 100644
--- a/frontend/src/views/chart/chart/treemap/treemap.js
+++ b/frontend/src/views/chart/chart/treemap/treemap.js
@@ -28,9 +28,17 @@ export function baseTreemapOption(chart_option, chart) {
chart_option.series[0].height = (customAttr.size.treemapHeight ? customAttr.size.treemapHeight : 80) + '%'
}
// label
- // if (customAttr.label) {
- // chart_option.series[0].label = customAttr.label
- // }
+ if (customAttr.label) {
+ // chart_option.series[0].label = customAttr.label
+ const l = {
+ show: true,
+ position: customAttr.label.position,
+ color: customAttr.label.color,
+ fontSize: customAttr.label.fontSize,
+ formatter: customAttr.label.show ? customAttr.label.formatter : ''
+ }
+ chart_option.series[0].label = l
+ }
const valueArr = chart.data.series[0].data
for (let i = 0; i < valueArr.length; i++) {
// const y = {
diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue
index d6192b8414..fd511aecd1 100644
--- a/frontend/src/views/chart/view/ChartEdit.vue
+++ b/frontend/src/views/chart/view/ChartEdit.vue
@@ -338,6 +338,12 @@
{{ $t('chart.bubble_size') }}
/
{{ $t('chart.quota') }}
+
+
+ 该指标生效时,样式大小中的气泡大小属性将失效
+
+
+
-
+
diff --git a/frontend/src/views/dataset/data/CalcFieldEdit.vue b/frontend/src/views/dataset/data/CalcFieldEdit.vue
index 74d833eb76..99b2eb0427 100644
--- a/frontend/src/views/dataset/data/CalcFieldEdit.vue
+++ b/frontend/src/views/dataset/data/CalcFieldEdit.vue
@@ -56,7 +56,19 @@
- {{ $t('dataset.click_ref_field') }}
+
+ {{ $t('dataset.click_ref_field') }}
+
+
+ 引用字段以 "[" 开始, "]" 结束
+
+ 请勿修改引用内容,否则将引用失败
+
+ 若输入与引用字段相同格式的内容,将被当作引用字段处理
+
+
+
+
- {{ $t('dataset.click_ref_function') }}
+
+ {{ $t('dataset.click_ref_function') }}
+
+
+ 使用数据集对应数据库类型所支持的函数,语法同对应数据库
+
+ 如日期格式化:MySQL使用DATE_FORMAT(date,format);Oracle使用TO_DATE(X,[,fmt])
+
+ 非直连模式数据集,使用Doris数据库函数,可参考Doris官网 http://doris.apache.org/master/zh-CN/
+
+
+
+
{{ item.name }}
{{ item.func }}
{{ item.desc }}
- {{ item.func }}
+ {{ item.func }}
@@ -444,9 +468,13 @@ export default {
padding: 2px 4px;
cursor: pointer;
margin: 4px 0;
- overflow-x: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
+ word-break: break-word;
+ border: solid 1px #eee;
+ }
+ .function-style:hover {
+ background: #e8f4ff;
+ border-color: #a3d3ff;
+ cursor: pointer;
}
.function-height{
height: calc(100% - 50px);
diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue
index 36eb05ae1b..3754776dd0 100644
--- a/frontend/src/views/system/user/index.vue
+++ b/frontend/src/views/system/user/index.vue
@@ -192,6 +192,10 @@ export default {
label: this.$t('member.edit_password'), icon: 'el-icon-s-tools', type: 'success', click: this.editPassword,
show: this.checkPermission(['user:editPwd'])
}
+ // , {
+ // label: '权限查看', icon: 'el-icon-lock', type: 'warning', click: this.showAuth,
+ // show: this.checkPermission(['user:editPwd'])
+ // }
],
searchConfig: {
useQuickSearch: true,
@@ -202,7 +206,7 @@ export default {
{
field: 'u.enabled',
label: this.$t('commons.status'),
- component: 'FuComplexSelect',
+ component: 'DeComplexSelect',
options: [
{ label: this.$t('commons.enable'), value: '1' },
{ label: this.$t('commons.disable'), value: '0' }
@@ -352,6 +356,9 @@ export default {
edit(row) {
this.$router.push({ name: 'system-user-form', params: row })
},
+ showAuth(row) {
+ this.$router.push({ name: 'system-user-form', params: row })
+ },
// edit(row) {
// this.depts = null
// this.formType = 'modify'