import { NForm, NFormItem, NInput, NSelect, NSpace, NButton, NTreeSelect, useMessage, NRadioGroup, NRadio, NCascader, NGrid, NFormItemGi, NInputNumber, useDialog } from 'naive-ui' import { defineComponent, onMounted, PropType, reactive, ref } from 'vue' import { sysMenuSave, sysMenuUpdate } from './api' export default defineComponent({ name: 'city-operation', props: { type: { type: String, default: 'add' }, menuList: { type: Array, default: () => [] }, applyList: { type: Array as PropType, default: () => [] }, data: { type: Object as PropType, default: () => {} } }, emits: ['close', 'getList'], setup(props, { emit }) { // parentId 上级菜单 // path 路径 // name 名称 // component 组件名 // icon 图标 // type 菜单 | 按钮 // permission 权限 // parentPermission 高亮路径 // sort 菜单排序 // hidden 是否隐藏 // linkPath 外链地址 const forms = reactive({ appId: null, parentId: null, type: 0, name: null, path: null, icon: null, component: null, permission: null, parentPermission: null, linkPath: null, sort: 0, hidden: 0 }) const menuList = ref([{ id: '0', name: '根结点', isLeaf: true }, ...props.menuList]) const btnLoading = ref(false) const formsRef = ref() const message = useMessage() const onSubmit = async () => { formsRef.value.validate(async (error: any) => { if (error) return false try { btnLoading.value = true if (props.type === 'add') { await sysMenuSave({ ...forms }) message.success('添加成功') } else if (props.type === 'edit') { await sysMenuUpdate({ ...forms, id: props.data.id }) message.success('修改成功') } emit('close') emit('getList') } catch {} btnLoading.value = false }) } onMounted(async () => { if (props.type === 'edit') { const data = props.data forms.appId = data.appId forms.parentId = data.parentId forms.type = Number(data.type) forms.name = data.name forms.path = data.path forms.icon = data.icon forms.component = data.component forms.permission = data.permission forms.parentPermission = data.parentPermission forms.linkPath = data.linkPath forms.sort = data.sort forms.hidden = data.hidden } }) return () => (
菜单 按钮 {forms.type === 0 && ( <> )} {forms.type === 0 && ( )} emit('close')}> 取消 onSubmit()} loading={btnLoading.value}> 保存
) } })