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 @@ - - - -