mirror of
https://gitee.com/ssssssss-team/magic-boot.git
synced 2025-03-03 22:32:50 +08:00
修复mb-tree绑定bug
This commit is contained in:
parent
4a0b81e70d
commit
9514df0fa6
@ -8,29 +8,28 @@
|
||||
<el-input v-model="searchValue" placeholder="输入关键字进行过滤" @input="tree.filter(searchValue)" :style="{ width: searchWidth }" />
|
||||
</div>
|
||||
<el-tree
|
||||
v-if="refreshTree"
|
||||
ref="tree"
|
||||
:data="treeData"
|
||||
v-bind="props.props"
|
||||
node-key="id"
|
||||
:default-expand-all="defaultExpandAll"
|
||||
:default-checked-keys="checkedIds"
|
||||
@check-change="checkChange"
|
||||
@node-click="nodeClick"
|
||||
:props="defaultProps"
|
||||
:filter-node-method="searchTree"
|
||||
:style="style"
|
||||
v-if="refreshTree"
|
||||
ref="tree"
|
||||
:data="treeData"
|
||||
v-bind="props.props"
|
||||
node-key="id"
|
||||
:default-expand-all="defaultExpandAll"
|
||||
@check-change="checkChange"
|
||||
@node-click="nodeClick"
|
||||
:props="defaultProps"
|
||||
:filter-node-method="searchTree"
|
||||
:style="style"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
import { watch, ref, reactive, defineExpose, nextTick, getCurrentInstance, onBeforeMount, onMounted } from 'vue'
|
||||
import { watch, ref, reactive, defineExpose, nextTick, getCurrentInstance, onBeforeMount } from 'vue'
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
const emit = defineEmits(['update:select-values', 'check-change', 'node-click', 'mounted'])
|
||||
const emit = defineEmits(['update:modelValue', 'check-change', 'node-click', 'mounted'])
|
||||
|
||||
const props = defineProps({
|
||||
url: {
|
||||
@ -41,7 +40,7 @@ const props = defineProps({
|
||||
type: Object,
|
||||
default: () => {}
|
||||
},
|
||||
selectValues: {
|
||||
modelValue: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
@ -71,8 +70,6 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const checkedIds = ref(props.selectValues.split(','))
|
||||
|
||||
const tree = ref()
|
||||
const treeData = ref([])
|
||||
const defaultProps = reactive({
|
||||
@ -88,13 +85,16 @@ onBeforeMount(async () => {
|
||||
await loadTreeData()
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
emit('mounted')
|
||||
watch(() => props.modelValue, (value) => {
|
||||
nextTick(() => selectIds(value))
|
||||
})
|
||||
|
||||
watch(() => props.selectValues, async () => {
|
||||
checkedIds.value = props.selectValues.split(',')
|
||||
})
|
||||
function selectIds(ids){
|
||||
ids = ids.split(',')
|
||||
for(var i=0;i<ids.length;i++){
|
||||
tree.value && tree.value.setChecked(ids[i],true,false)
|
||||
}
|
||||
}
|
||||
|
||||
function searchTree(value, data) {
|
||||
if (!value) return true
|
||||
@ -113,6 +113,7 @@ async function loadTreeData() {
|
||||
treeData.value = res.data.list
|
||||
})
|
||||
refreshTree.value = true
|
||||
nextTick(() => selectIds(props.modelValue))
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,8 +127,7 @@ function checkChange(node) {
|
||||
for (var i = 0; i < checkedNodes.length; i++) {
|
||||
selectMenus.push(checkedNodes[i].id)
|
||||
}
|
||||
console.log(selectMenus.join(','))
|
||||
emit('update:select-values', selectMenus.join(','))
|
||||
emit('update:modelValue', selectMenus.join(','))
|
||||
emit('check-change', selectMenus.join(','))
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<mb-tree ref="tree" :props="{ 'show-checkbox': true }" url="/system/menu/tree" :search="true" search-width="230px" v-model:select-values="menus" />
|
||||
<mb-tree ref="tree" v-model="menus" :props="{ 'show-checkbox': true }" url="/system/menu/tree" :search="true" search-width="230px" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
@ -41,13 +41,13 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="菜单权限" prop="menus">
|
||||
<mb-tree ref="tree" :props="{ 'show-checkbox': true }" style="height: 270px; overflow: auto" url="/system/menu/tree" :search="true" v-model:select-values="temp.menus" />
|
||||
<mb-tree ref="tree" v-model="temp.menus" :props="{ 'show-checkbox': true }" style="height: 270px; overflow: auto" url="/system/menu/tree" :search="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="数据权限" prop="permission">
|
||||
<mb-select v-model="temp.permission" :options="permissionData" />
|
||||
<mb-tree v-if="temp.permission == 1" style="height: 270px; overflow: auto" :props="{ 'check-strictly': true, 'show-checkbox': true }" ref="office" url="/system/office/tree" v-model:select-values="temp.offices" />
|
||||
<mb-tree v-if="temp.permission == 1" style="height: 270px; overflow: auto" :props="{ 'check-strictly': true, 'show-checkbox': true }" ref="office" url="/system/office/tree" v-model="temp.offices" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div class="left">
|
||||
<mb-tree
|
||||
url="/system/office/tree"
|
||||
:el="{ 'expand-on-click-node': false,'show-checkbox': true }"
|
||||
:props="{ 'expand-on-click-node': false,'show-checkbox': true }"
|
||||
:checked-ids="[tableOptions.where.officeId]"
|
||||
:expand="false"
|
||||
:search="true"
|
||||
|
Loading…
Reference in New Issue
Block a user