diff --git a/backend/src/main/java/io/dataease/commons/constants/SysLogConstants.java b/backend/src/main/java/io/dataease/commons/constants/SysLogConstants.java
index 3218776040..c6606211fa 100644
--- a/backend/src/main/java/io/dataease/commons/constants/SysLogConstants.java
+++ b/backend/src/main/java/io/dataease/commons/constants/SysLogConstants.java
@@ -55,7 +55,8 @@ public class SysLogConstants {
DEPT(7, "SOURCE_TYPE_DEPT"),
ROLE(8, "SOURCE_TYPE_ROLE"),
DRIVER(9, "SOURCE_TYPE_DRIVER"),
- DRIVER_FILE(10, "SOURCE_TYPE_DRIVER_FILE");
+ DRIVER_FILE(10, "SOURCE_TYPE_DRIVER_FILE"),
+ MENU(11, "SOURCE_TYPE_MENU");
private Integer value;
private String name;
diff --git a/backend/src/main/java/io/dataease/ext/ExtSysLogMapper.xml b/backend/src/main/java/io/dataease/ext/ExtSysLogMapper.xml
index bd0b9fad2c..e4ea15c486 100644
--- a/backend/src/main/java/io/dataease/ext/ExtSysLogMapper.xml
+++ b/backend/src/main/java/io/dataease/ext/ExtSysLogMapper.xml
@@ -153,6 +153,17 @@
+
+ menu_id as id ,title as name
+ from sys_menu
+
+ menu_id in
+
+ #{id}
+
+
+
+
diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java
index 556e16e9ff..9cd0fa9f21 100644
--- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java
+++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java
@@ -109,7 +109,7 @@ public class XAuthServer {
return SysLogConstants.SOURCE_TYPE.DATASOURCE;
}
if (StringUtils.equals("menu", sourceType)) {
- return SysLogConstants.SOURCE_TYPE.DATASOURCE;
+ return SysLogConstants.SOURCE_TYPE.MENU;
}
if (StringUtils.equals("dataset", sourceType)) {
return SysLogConstants.SOURCE_TYPE.DATASET;
diff --git a/backend/src/main/java/io/dataease/service/sys/log/LogManager.java b/backend/src/main/java/io/dataease/service/sys/log/LogManager.java
index 254a719c28..0d15e29798 100644
--- a/backend/src/main/java/io/dataease/service/sys/log/LogManager.java
+++ b/backend/src/main/java/io/dataease/service/sys/log/LogManager.java
@@ -100,6 +100,9 @@ public class LogManager {
case 7:
typeValue = "dept";
break;
+ case 11:
+ typeValue = "menu";
+ break;
default:
break;
}
diff --git a/frontend/src/components/ElTreeSelect/index.vue b/frontend/src/components/ElTreeSelect/index.vue
index 7dea1fd05c..ac3ad6d816 100644
--- a/frontend/src/components/ElTreeSelect/index.vue
+++ b/frontend/src/components/ElTreeSelect/index.vue
@@ -14,6 +14,7 @@
v-model="labels"
v-popover:popover
:style="styles"
+ :collapse-tags="showNumber"
class="el-tree-select-input"
:disabled="disabled"
popper-class="select-option"
@@ -77,7 +78,9 @@ export default {
type: Object,
// {}
default() {
- return {}
+ return {
+ width: '100%'
+ }
}
},
// 下拉框 挂类
@@ -119,8 +122,10 @@ export default {
}
},
// 树渲染方法,具体参考el-tree Function(h, { node, data, store }) {}
+ // eslint-disable-next-line vue/require-default-prop
treeRenderFun: Function,
// 搜索过滤方法,具体参考el-tree Function(h, { value, data, node }) {}
+ // eslint-disable-next-line vue/require-default-prop
filterNodeMethod: Function,
/*
文本框参数,几乎支持el-select所有的API
@@ -215,7 +220,8 @@ export default {
ids: [], // 存储id
visible: false, // popover v-model
width: 150,
- showParent: false
+ showParent: false,
+ showNumber: false
}
},
computed: {
@@ -241,6 +247,9 @@ export default {
this.ids = val === '' ? [] : [val]
}
}
+ },
+ labels: function() {
+ this.setShowNumber()
}
},
created() {
@@ -549,6 +558,22 @@ export default {
*/
filterFun(val) {
this.$refs.tree.filter(val)
+ },
+
+ setShowNumber() {
+ this.showNumber = false
+
+ this.$nextTick(() => {
+ if (!this.selectParams.multiple || !this.$refs.select || !this.$refs.select.$refs.tags) {
+ return
+ }
+ const kids = this.$refs.select.$refs.tags.children[0].children
+ let contentWidth = 0
+ kids.forEach(kid => {
+ contentWidth += kid.offsetWidth
+ })
+ this.showNumber = contentWidth > ((this.$refs.select.$refs.tags.clientWidth - 35) * 0.9)
+ })
}
}
}
diff --git a/frontend/src/components/widget/DeWidget/DeSelectTree.vue b/frontend/src/components/widget/DeWidget/DeSelectTree.vue
index 0c73552eda..f9a879600b 100644
--- a/frontend/src/components/widget/DeWidget/DeSelectTree.vue
+++ b/frontend/src/components/widget/DeWidget/DeSelectTree.vue
@@ -5,7 +5,6 @@
ref="deSelectTree"
v-model="value"
popover-class="test-class-wrap"
- :is-single="isSingle"
:data="datas"
:select-params="selectParams"
:tree-params="treeParams"
@@ -45,9 +44,8 @@ export default {
},
data() {
return {
- showNumber: false,
- selectOptionWidth: 0,
show: true,
+ selectOptionWidth: 0,
datas: [],
value: this.isSingle ? '' : [],
selectParams: {
@@ -135,14 +133,17 @@ export default {
},
'element.options.attrs.multiple': function(value, old) {
if (typeof old === 'undefined' || value === old) return
+
if (!this.inDraw) {
this.value = value ? [] : null
this.element.options.value = ''
}
-
this.show = false
this.$nextTick(() => {
this.show = true
+ this.$nextTick(() => {
+ this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.datas)
+ })
})
}
@@ -212,25 +213,14 @@ export default {
this.element.options.manualModify = true
}
this.setCondition()
- this.showNumber = false
-
- this.$nextTick(() => {
- if (!this.element.options.attrs.multiple || !this.$refs.deSelect || !this.$refs.deSelect.$refs.tags) {
- return
- }
- const kids = this.$refs.deSelect.$refs.tags.children[0].children
- let contentWidth = 0
- kids.forEach(kid => {
- contentWidth += kid.offsetWidth
- })
- this.showNumber = contentWidth > ((this.$refs.deSelectTree.$refs.tags.clientWidth - 30) * 0.9)
- })
},
setCondition() {
+ const val = this.formatFilterValue()
+
const param = {
component: this.element,
- value: this.formatFilterValue(),
+ value: val,
operator: this.operator,
isTree: true
}
@@ -267,7 +257,8 @@ export default {
return results
// return this.value
}
- return this.value.split(',')
+ const result = this.value.split(',').map(v => v.replaceAll(SEPARATOR, ','))
+ return result
},
fillValueDerfault() {
@@ -286,14 +277,6 @@ export default {
return datas.filter(item => !!item)
},
- setOptionWidth(event) {
- // 下拉框弹出时,设置弹框的宽度
- this.$nextTick(() => {
- // this.selectOptionWidth = event.srcElement.offsetWidth + 'px'
- this.selectOptionWidth = event.srcElement.parentElement.parentElement.offsetWidth + 'px'
- })
- },
-
/* 下面是树的渲染方法 */
_filterFun(value, data, node) {
@@ -308,9 +291,9 @@ export default {
_searchFun(value) {
console.log(value, '<--_searchFun')
// 自行判断 是走后台查询,还是前端过滤
- this.$refs.treeSelect.filterFun(value)
+ this.$refs.deSelectTree.filterFun(value)
// 后台查询
- // this.$refs.treeSelect.treeDataUpdateFun(treeData);
+ // this.$refs.deSelectTree.treeDataUpdateFun(treeData);
},
// 自定义render
_renderFun(h, { node, data, store }) {
diff --git a/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js b/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js
index 9180883558..23674de94f 100644
--- a/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js
+++ b/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js
@@ -88,7 +88,11 @@ class TextSelectTreeServiceImpl extends WidgetService {
const param = {
component: element,
value: !value ? [] : Array.isArray(value) ? value : value.toString().split(','),
- operator: element.options.attrs.multiple ? 'in' : 'eq'
+ operator: element.options.attrs.multiple ? 'in' : 'eq',
+ isTree: true
+ }
+ if (param.value && param.value.length) {
+ param.value = param.value.map(val => val.replaceAll('-de-', ','))
}
return param
}
diff --git a/frontend/src/utils/conditionUtil.js b/frontend/src/utils/conditionUtil.js
index 4416b25f4c..27ba99e879 100644
--- a/frontend/src/utils/conditionUtil.js
+++ b/frontend/src/utils/conditionUtil.js
@@ -27,8 +27,19 @@ export const valueValid = condition => {
export const formatCondition = obj => {
const { component, value, operator, isTree } = obj
- const fieldId = component.options.attrs.fieldId
+
+ let fieldId = component.options.attrs.fieldId
const viewIds = component.options.attrs.viewIds
+ if (isTree && !component.options.attrs.multiple && value && value.length) {
+ // 单选树
+ const val = value[0]
+ if (val) {
+ const len = val.split(',').length
+ if (len) {
+ fieldId = fieldId.split(',').slice(0, len).join(',')
+ }
+ }
+ }
const condition = new Condition(component.id, fieldId, operator, value, viewIds, isTree)
return condition
}
diff --git a/frontend/src/views/system/test/MyTree.vue b/frontend/src/views/system/test/MyTree.vue
deleted file mode 100644
index 12ae1d25dc..0000000000
--- a/frontend/src/views/system/test/MyTree.vue
+++ /dev/null
@@ -1,150 +0,0 @@
-
-
-
-
-
-
diff --git a/frontend/src/views/system/test/index.vue b/frontend/src/views/system/test/index.vue
deleted file mode 100644
index 0e6f81a882..0000000000
--- a/frontend/src/views/system/test/index.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 测试焦点触发
-
-
-
-
-
-
-
-
-
-