Browse Source

自定义应用菜单处理

v8_master
超级管理员 2 years ago
parent
commit
dc104b5a0b
  1. 16
      src/api/DesignForm/requestapi.ts
  2. 8
      src/types/components.d.ts
  3. 23
      src/views/sysworkflow/lowcodepage/appFormList.vue
  4. 9
      src/views/sysworkflow/lowcodepage/appPage/appMenuGroup.vue
  5. 78
      src/views/sysworkflow/lowcodepage/appPage/appMenus.vue
  6. 6
      src/views/sysworkflow/lowcodepage/appPage/index.vue

16
src/api/DesignForm/requestapi.ts

@ -375,3 +375,19 @@ export function saveAppMenu(data: any) {
data: data
});
}
//获取完整APP菜单树
export function gainAllAppMenu(data: any) {
return request({
url: '/systemapi/app/gainAllAppMenu',
method: 'post',
data: data
});
}
//获取完整APP菜单树
export function editAppMenuCont(data: any) {
return request({
url: '/systemapi/app/editAppMenuCont',
method: 'post',
data: data
});
}

8
src/types/components.d.ts

@ -32,7 +32,6 @@ declare module '@vue/runtime-core' {
ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
@ -64,7 +63,6 @@ declare module '@vue/runtime-core' {
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
@ -113,13 +111,7 @@ declare module '@vue/runtime-core' {
IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpClose: typeof import('~icons/ep/close')['default']
IEpDelete: typeof import('~icons/ep/delete')['default']
IEpEdit: typeof import('~icons/ep/edit')['default']
IEpPlus: typeof import('~icons/ep/plus')['default']
IEpRefresh: typeof import('~icons/ep/refresh')['default']
IEpSearch: typeof import('~icons/ep/search')['default']
IEpSetting: typeof import('~icons/ep/setting')['default']
IEpView: typeof import('~icons/ep/view')['default']
LangSelect: typeof import('./../components/LangSelect/index.vue')['default']
LayoutPage: typeof import('./../components/DesignForm/layoutPage/index.vue')['default']
List: typeof import('./../components/DesignForm/public/form/components/list.vue')['default']

23
src/views/sysworkflow/lowcodepage/appFormList.vue

@ -53,12 +53,14 @@ const pageAppTotal = ref<number>(0) //总记录数
const contList = ref<customerFormCont[]>()
const lookPageIsShow = ref(false)
const loadingApp = ref(false)
/**
@ 作者: 秦东
@ 时间: 2024-03-21 10:54:23
@ 功能: 获取表单列表
*/
const getFormAppList = () => {
loadingApp.value = true
let sendInfo = {
page:pageApp.value,
pagesize:pageAppSize.value,
@ -66,11 +68,13 @@ const getFormAppList = () => {
}
getCustomerFormList(sendInfo)
.then(({ data }) => {
// console.log("-->",data);
console.log("搜索表单-->",data);
pageAppTotal.value = data.total
contList.value = data.list
})
.finally(() => {})
.finally(() => {
loadingApp.value = false
})
}
/**
@ 作者: 秦东
@ -225,9 +229,18 @@ const editAppCont = (val:string) => {
appKey.value = val.toString();
appPageShow.value = true;
}
/**
@ 作者: 秦东
@ 时间: 2024-04-24 10:44:42
@ 功能: 翻页
*/
const fanyePage = (val: number) =>{
pageApp.value = val
getFormAppList()
}
</script>
<template>
<div>
<div v-loading="loadingApp">
<el-row :gutter="10" >
<el-col v-for="item in contList" :key="item.id" :xs="8" :sm="12" :md="8" :lg="8" :xl="8" style=" margin-top: 10px;">
<el-card class="cardpattern" body-style="padding:5px;">
@ -274,14 +287,14 @@ const editAppCont = (val:string) => {
</el-col>
</el-row>
<div class="formGroupPage">
<el-pagination layout="prev, pager, next" v-model:current-page="pageApp" :page-size="pageAppSize" :total="pageAppTotal" />
<el-pagination layout="prev, pager, next" v-model:current-page="pageApp" :page-size="pageAppSize" :total="pageAppTotal" @current-change="fanyePage" />
</div>
<TableFlow v-model:isopen="openTaskDrawer" :versionid="versionId" :versiontitle="versionTitle" :drawerwith="props.drawerWith" @searchquery="getFormAppList" />
<LowCodeFormPage v-if="addFormIsShow" :drawer-with="props.drawerWith" v-model:form-key="formId" @refreshPage="refreshPage" />
<DesignAPPpage v-model:is-show="appPageShow" v-model:form-key="appKey" :drawer-with="props.drawerWith" @refreshPage="closeAppPage" />
<DesignAPPpage v-model:is-show="appPageShow" v-model:form-key="appKey" :drawer-with="props.drawerWith" @refreshPage="getFormAppList" />
<el-drawer
v-model="lookPageIsShow"

9
src/views/sysworkflow/lowcodepage/appPage/appMenuGroup.vue

@ -26,11 +26,18 @@ const props = defineProps({
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)
if(props.menuParentKey !=""){
menuGroupInfo.group = props.menuParentKey
isNotEdit.value = true
}else{
isNotEdit.value = false
}
getOldMenuTree()
}
})
@ -51,6 +58,7 @@ const handleClose = () => {
loading.value = false;
emits("updateMenu")
emits("update:isShow",false)
isNotEdit.value = false
resetForm()
}
/**
@ -149,6 +157,7 @@ const saveMenuData = () => {
value-key="id"
check-on-click-node
clearable
:disabled="isNotEdit"
/>
</el-form-item>
</el-form>

78
src/views/sysworkflow/lowcodepage/appPage/appMenus.vue

@ -8,11 +8,21 @@ import type {
AllowDropType,
NodeDropType,
} from 'element-plus/es/components/tree/src/tree.type'
import { gainAllAppMenu,editAppMenuCont } from '@/api/DesignForm/requestapi'
import SvgIcon from "@/components/SvgIcon/index.vue";
import { threeShiyanData } from "@/api/date/type"
import AppMenuSvgPage from "@/components/IconSelect/appMenuSvgPage.vue";
import AppMenuGroup from "@/views/sysworkflow/lowcodepage/appPage/appMenuGroup.vue"
const props = defineProps({
appCont:{
type:Object,
default(){
return {}
}
},
formKey:{
type:String,
default:""
@ -25,21 +35,43 @@ const props = defineProps({
}
});
const svgIsShow = ref(false)
const emits = defineEmits(["update:menusTree"]);
/**
@ 作者: 秦东
@ 时间: 2024-04-24 13:17:30
@ 功能: 菜单列表
*/
const appMenuTree = computed({
get() {
return props.menusTree
},
set(val: any) {
emits('update:menusTree', val)
}
});
/**
@ 作者: 秦东
@ 时间: 2024-04-22 10:06:20
@ 功能: 树移动完毕后执行的操作
*/
const handleDrop = (
draggingNode: Node,
dropNode: Node,
dropType: NodeDropType,
ev: DragEvents
draggingNode: Node,
dropNode: Node,
dropType: NodeDropType,
ev: DragEvents
) => {
console.log('draggingNode:', draggingNode)
console.log('dropNode:', dropNode)
console.log('dropType:', dropType)
console.log('ev:', ev)
let sendCont = {
id:props.appCont.uuid,
menuTree:appMenuTree.value
}
editAppMenuCont(sendCont)
.then((data)=>{
console.log('树移动完毕后执行的操作============>',data)
})
}
const treeList = ref<any[]>([])
@ -102,10 +134,36 @@ const diguiData = (val:any) =>{
}
}
}
/**
@ 作者: 秦东
@ 时间: 2024-04-24 13:12:18
@ 功能: 新建子分组
*/
const menuGroupShow = ref(false)
const menuParentKey = ref("")
const addNewSunMenuGroup = (val:any) =>{
console.log('新建子分组:', val);
menuParentKey.value = val.id
menuGroupShow.value = true
}
/**
@ 作者: 秦东
@ 时间: 2024-04-24 13:22:47
@ 功能: 更新
*/
const gainSunAppContent = () =>{
console.log('更新:');
gainAllAppMenu({id:props.appCont.uuid})
.then((data) =>{
console.log('更新:',data);
appMenuTree.value = data.data
})
}
</script>
<template>
<AppMenuGroup v-model:is-show="menuGroupShow" :menu-parent-key="menuParentKey" :app-cont="props.appCont" @updateMenu="gainSunAppContent" />
<el-tree
:data="props.menusTree"
:data="appMenuTree"
draggable
default-expand-all
node-key="id"
@ -124,7 +182,7 @@ const diguiData = (val:any) =>{
<el-dropdown-item>修改名称</el-dropdown-item>
<el-dropdown-item>复制</el-dropdown-item>
<el-dropdown-item>移动到</el-dropdown-item>
<el-dropdown-item divided>新建子分组</el-dropdown-item>
<el-dropdown-item divided @click="addNewSunMenuGroup(data)">新建子分组</el-dropdown-item>
<el-dropdown-item>新建普通表单</el-dropdown-item>
<el-dropdown-item>新建流程表单</el-dropdown-item>
<el-dropdown-item divided>隐藏PC端</el-dropdown-item>

6
src/views/sysworkflow/lowcodepage/appPage/index.vue

@ -101,7 +101,7 @@ const addMenu = (key?:string) => {
</script>
<template>
<div class="drawerClass">
<AppMenuGroup v-model:is-show="menuGroupShow" :menu-parent-key="menuParentKey" :app-cont="appCont" @updateMenu="gainAppContent" />
<el-drawer v-model="props.isShow" title="设置/编辑自定义表单" :with-header="false" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerWith">
<div class="common-layout">
<el-container>
@ -233,7 +233,7 @@ const addMenu = (key?:string) => {
</el-menu-item>
</el-menu> -->
<AppMenus :form-Key="formKey" :menus-tree="menusTree" />
<AppMenus :form-Key="formKey" v-model:menus-tree="menusTree" :app-cont="appCont" />
@ -247,7 +247,7 @@ const addMenu = (key?:string) => {
</el-container>
</el-container>
</div>
<AppMenuGroup v-model:is-show="menuGroupShow" :menu-parent-key="menuParentKey" :app-cont="appCont" @updateMenu="gainAppContent" />
</el-drawer >
</div>
</template>

Loading…
Cancel
Save