import { NButton, NModal, NSpace, NDataTable, useDialog, useMessage, NTag, NFormItem, NCascader } from 'naive-ui' import { defineComponent, onMounted, reactive, ref } from 'vue' import { sysApplicationPage, sysMenuPage, sysMenuRemove } from '../api' import MenuOperation from './menu-operation' import SaveForm from '@/components/save-form' import { formatDataList } from '@/utils/urlUtils' /* parentId 要结点 path 路径 name 名称 component 组件名 icon 图标 type 菜单 | 按钮 permission 权限 parentPermission 高亮路径 sort 菜单排序 hidden 是否隐藏 */ export default defineComponent({ name: 'menu-manage', setup() { const dialog = useDialog() const message = useMessage() const state = reactive({ loading: false, applyList: [] as any, dataList: [] as any, visiableMenu: false, menuType: 'add', applyData: {} as any, expandedRowKeys: [], searchForm: { appId: null } }) const columns = (): any => [ { title: '菜单名称', key: 'name', width: 330, render(row: any) { return `${row.name} - ${row.id}` } }, { title: '应用名称', key: 'appName' }, { title: '组件名', key: 'component' }, { title: '路由路径', key: 'path' }, { title: '权限标识', key: 'permission' }, { title: '排序', key: 'sort' }, { title: '类型', key: 'type', render(row: any) { return row.type === '0' ? ( 菜单 ) : ( 按钮 ) } }, { title: '操作', key: 'operation', render(row: any) { return ( { state.visiableMenu = true state.menuType = 'edit' state.applyData = row }} > 编辑 onRmove(row)} > 删除 ) } } ] const onRmove = (row: any): void => { dialog.warning({ title: '警告', content: `删除"${row.name}",是否继续?`, positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { try { await sysMenuRemove({ id: row.id }) getList() message.success('删除成功') } catch {} } }) } const getList = async () => { try { state.loading = true // state.expandedRowKeys = [] const { data } = await sysMenuPage({ ...state.searchForm, parentId: 0, delFlag: false }) state.loading = false const tempList = [] as any ;(data || []).forEach((item: any) => { item.isLeaf = item.children ? false : true tempList.push(item) }) state.dataList = formatDataList(tempList) } catch {} } const getApplyList = async (parentId = 0) => { try { const { data } = await sysApplicationPage({ page: 1, rows: 999, leafQuery: true, parentId }) state.applyList = formatDataList(data.rows || [], 'bizApps') } catch {} } const saveForm = ref() const onSubmit = () => { getList() } const onSearch = () => { saveForm.value?.submit() } const onBtnReset = () => { saveForm.value?.reset() } onMounted(() => { getList() getApplyList() }) return () => (
(state.searchForm = val)} > 搜索 重置
{ state.menuType = 'add' state.applyData = [] state.visiableMenu = true }} > 添加菜单 { state.expandedRowKeys = keys }} rowKey={(row: any) => row.id} >
(state.visiableMenu = false)} onGetList={getList} />
) } })