You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
<template>
|
|
<div>
|
|
<w-tree-grid
|
|
ref="treeGrid"
|
|
title="机构树"
|
|
:nodes="nodes"
|
|
label-key="titleI18nKey"
|
|
label-i18n
|
|
label-empty="--------------------"
|
|
:actions="actions"
|
|
tick-strategy="leaf"
|
|
/>
|
|
<q-btn label="ok" @click="ok"></q-btn>
|
|
</div>
|
|
</template>
|
|
<script setup lang="ts">
|
|
import { ref, toRaw, onMounted } from 'vue';
|
|
import { useI18n } from 'vue-i18n';
|
|
import { Environment, axios, BackendTools } from '@/platform';
|
|
|
|
const { t } = useI18n();
|
|
|
|
const treeGrid = ref();
|
|
const nodes = ref([]);
|
|
const selected = [];
|
|
const ticked = [];
|
|
const expanded = [];
|
|
const actions = [
|
|
{
|
|
name: 'refresh',
|
|
label: '刷新',
|
|
},
|
|
{
|
|
name: 'expandAll',
|
|
label: '全部展开',
|
|
},
|
|
{
|
|
name: 'selectAll',
|
|
label: '全部选择',
|
|
},
|
|
{
|
|
name: 'save',
|
|
label: '保存',
|
|
},
|
|
];
|
|
|
|
onMounted(() => {
|
|
axios.get(Environment.apiContextPath('/api/system/menu?pageable=false')).then((response) => {
|
|
treeGrid.value.setNodes(response.data.content);
|
|
});
|
|
});
|
|
|
|
const ok = () => {
|
|
console.log(treeGrid.value.getCascadeParentIds(treeGrid.value.getSelected()));
|
|
console.log(treeGrid.value.getCascadeChildrenIds(treeGrid.value.getSelected()));
|
|
console.log(treeGrid.value.getSelectedNode(treeGrid.value.getSelected()));
|
|
};
|
|
</script>
|
|
|