数通互联化工云平台
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.
 
 
 
 
 
 

175 lines
3.8 KiB

<!--
@ 作者: 秦东
@ 时间: 2024-04-23 16:56:36
@ 备注: 菜单分组
-->
<script lang='ts' setup>
import { appMenuTreeInfo } from "@/api/date/type"
import { ginOthenMenuTree,saveAppMenu } from '@/api/DesignForm/requestapi'
const props = defineProps({
appCont:{
type:Object,
default(){
return {}
}
},
menuParentKey:{
type:String,
default:""
},
isShow:{
type: Boolean,
default: false,
},
menuType:{
type:Number,
default:1
}
});
const isNotEdit = ref(false)
const emits = defineEmits(["update:isShow","updateMenu"]);
watch(()=>props.isShow,(val:boolean)=>{
if(val){
// console.log("props.appCont",props.appCont)
// console.log("props.menuParentKey",props.menuParentKey.value)
if(props.menuParentKey.value !="" && props.menuParentKey.value != undefined && props.menuParentKey.value != "undefined"){
menuGroupInfo.group = props.menuParentKey.value
isNotEdit.value = true
}else{
isNotEdit.value = false
}
getOldMenuTree()
// console.log("menuGroupInfo.group",menuGroupInfo.group)
}
})
const loading = ref(false)
const saveMenuGroup = ref(ElForm);
const menuOldTree = ref<appMenuTreeInfo[]>([])
const menuGroupInfo = reactive({
name:"",
group:""
})
const ssd = ref()
/**
@ 作者: 秦东
@ 时间: 2024-04-24 08:50:40
@ 功能: 关闭
*/
const handleClose = () => {
loading.value = false;
emits("updateMenu")
emits("update:isShow",false)
isNotEdit.value = false
resetForm()
}
/**
@ 作者: 秦东
@ 时间: 2024-04-24 09:09:24
@ 功能: 获取已有菜单树
*/
const getOldMenuTree = () => {
ginOthenMenuTree({id:props.appCont.uuid})
.then((data) =>{
// console.log("获取已有菜单树",data)
if(data.code == 0){
menuOldTree.value = data.data
}
});
}
/**
@ 作者: 秦东
@ 时间: 2024-04-24 09:29:59
@ 功能: 表单验证规则
*/
const rules = reactive({
name: [{ required: true, message: "请输入分组名称", trigger: "blur" }],
});
/**
@ 作者: 秦东
@ 时间: 2024-04-24 09:33:56
@ 功能: 重置表单
*/
const resetForm = () => {
saveMenuGroup.value.resetFields();
saveMenuGroup.value.clearValidate();
menuGroupInfo.name = undefined;
menuGroupInfo.group = "";
}
/**
@ 作者: 秦东
@ 时间: 2024-04-24 09:35:12
@ 功能: 写入菜单分组
*/
const saveMenuData = () => {
// console.log("写入菜单分组",menuGroupInfo)
loading.value = true;
saveMenuGroup.value.validate((valid: any) => {
if (valid) {
let groupId = menuGroupInfo.group
if(menuGroupInfo.group == "") {
groupId = props.appCont.uuid
}
let sendCont = {
name:menuGroupInfo.name,
appkey:props.appCont.uuid,
type:props.menuType,
group:groupId
}
// console.log("写入菜单分组",sendCont)
saveAppMenu(sendCont)
.then((data) =>{
handleClose()
})
.finally(() =>{
loading.value = false;
})
}else{
loading.value = false;
}
})
}
</script>
<template>
<el-dialog
v-model="props.isShow"
title="新建分组"
width="500"
:before-close="handleClose"
>
<el-form
ref="saveMenuGroup"
:model="menuGroupInfo"
:rules="rules"
label-width="120px"
>
<el-form-item label="分组名称" prop="name">
<el-input v-model="menuGroupInfo.name" clearable placeholder="请输入分组名称" />
</el-form-item>
<el-form-item label="选择上级分组">
<el-tree-select
v-model="menuGroupInfo.group"
:data="menuOldTree"
check-strictly
:render-after-expand="false"
show-checkbox
node-key="id"
value-key="id"
check-on-click-node
clearable
:disabled="isNotEdit"
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" v-loading="loading" :disabled="loading" @click="saveMenuData">确定</el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>