yh-pub 1.0.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/AdminLogin-BoxKRRwd.js +140 -0
  2. package/AdminLogin-BoxKRRwd.js.map +1 -0
  3. package/Dict.vue_vue_type_script_setup_true_lang-A8BZwEiK.js +55 -0
  4. package/Dict.vue_vue_type_script_setup_true_lang-A8BZwEiK.js.map +1 -0
  5. package/Error-BCu4KHfU.js +43 -0
  6. package/Error-BCu4KHfU.js.map +1 -0
  7. package/Error401-C5kTyMSM.js +30 -0
  8. package/Error401-C5kTyMSM.js.map +1 -0
  9. package/Error404-P3qKjHk6.js +30 -0
  10. package/Error404-P3qKjHk6.js.map +1 -0
  11. package/Error500-NVnuOBIQ.js +30 -0
  12. package/Error500-NVnuOBIQ.js.map +1 -0
  13. package/HomeIndex-C806Fp-9.js +438 -0
  14. package/HomeIndex-C806Fp-9.js.map +1 -0
  15. package/IconExplorer-CBg1lvD0.js +66 -0
  16. package/IconExplorer-CBg1lvD0.js.map +1 -0
  17. package/Index-AjfvK7Ss.js +5 -0
  18. package/Index-AjfvK7Ss.js.map +1 -0
  19. package/MainLogin-wW7bSk0F.js +155 -0
  20. package/MainLogin-wW7bSk0F.js.map +1 -0
  21. package/MenuManage-CIxqmusr.js +641 -0
  22. package/MenuManage-CIxqmusr.js.map +1 -0
  23. package/OrgManage-BcTWbnyc.js +378 -0
  24. package/OrgManage-BcTWbnyc.js.map +1 -0
  25. package/RoleManage-Bw83c_7q.js +729 -0
  26. package/RoleManage-Bw83c_7q.js.map +1 -0
  27. package/SysConfig-L0A1eY-O.js +727 -0
  28. package/SysConfig-L0A1eY-O.js.map +1 -0
  29. package/TenantList-B5imzQc5.js +696 -0
  30. package/TenantList-B5imzQc5.js.map +1 -0
  31. package/index-BP41Ph8K.js +55257 -0
  32. package/index-BP41Ph8K.js.map +1 -0
  33. package/index-CJ0So9-k.js +7 -0
  34. package/index-CJ0So9-k.js.map +1 -0
  35. package/index-wVC41gTc.js +23955 -0
  36. package/index-wVC41gTc.js.map +1 -0
  37. package/index.d.ts +35 -0
  38. package/index.es.js +66 -0
  39. package/index.es.js.map +1 -0
  40. package/package.json +27 -6
  41. package/style.css +1 -0
  42. package/README.MD +0 -19
  43. package/layout/admin/adminIndex.vue +0 -104
  44. package/layout/admin/api/loginApi.js +0 -24
  45. package/layout/admin/api/routers.js +0 -93
  46. package/layout/admin/api/tenantApi.js +0 -123
  47. package/layout/admin/home/homeIndex.vue +0 -25
  48. package/layout/admin/login/login.vue +0 -161
  49. package/layout/admin/menu/MenuIndex.vue +0 -648
  50. package/layout/admin/menu/icon.vue +0 -108
  51. package/layout/admin/menu/iconList.js +0 -934
  52. package/layout/admin/saTenant/saTenant.js +0 -0
  53. package/layout/admin/saTenant/saTenant.vue +0 -173
  54. package/layout/admin/saTenant/saTenantForm.js +0 -80
  55. package/layout/admin/saTenant/saTenantForm.vue +0 -61
  56. package/layout/admin/saTenant/saTenantRoleManage.js +0 -417
  57. package/layout/admin/saTenant/saTenantRoleManage.vue +0 -99
  58. package/layout/admin/user/saUser.less +0 -6
  59. package/layout/admin/user/saUser.vue +0 -72
  60. package/layout/main/components/console/console.vue +0 -205
  61. package/layout/main/components/error-store/error-store.vue +0 -72
  62. package/layout/main/components/error-store/index.js +0 -2
  63. package/layout/main/components/fullscreen/fullscreen.vue +0 -57
  64. package/layout/main/components/fullscreen/index.js +0 -2
  65. package/layout/main/components/language/language.vue +0 -71
  66. package/layout/main/components/side-menu/side-menu.less +0 -74
  67. package/layout/main/components/side-menu/side-menu.vue +0 -75
  68. package/layout/main/components/tags-nav/tags-nav.less +0 -45
  69. package/layout/main/components/tags-nav/tags-nav.vue +0 -144
  70. package/layout/main/components/user/user.less +0 -12
  71. package/layout/main/components/user/user.vue +0 -185
  72. package/layout/main/home/home.vue +0 -480
  73. package/layout/main/home/index.js +0 -2
  74. package/layout/main/home/toDoList.vue +0 -32
  75. package/layout/main/login/login.less +0 -93
  76. package/layout/main/login/login.vue +0 -151
  77. package/layout/main/main.less +0 -81
  78. package/layout/main/main.vue +0 -254
  79. package/layout/main/system/dict.vue +0 -64
  80. package/layout/main/system/orgManage.vue +0 -473
  81. package/layout/main/system/roleManage.js +0 -807
  82. package/layout/main/system/roleManage.vue +0 -424
  83. package/view/basic/error-logger.vue +0 -74
  84. package/view/basic/error-page/401.vue +0 -22
  85. package/view/basic/error-page/404.vue +0 -22
  86. package/view/basic/error-page/500.vue +0 -22
  87. package/view/basic/error-page/back-btn-group.vue +0 -48
  88. package/view/basic/error-page/error-content.vue +0 -28
  89. package/view/basic/error-page/error.less +0 -46
  90. package/view/config/component/confFormItem.vue +0 -49
  91. package/view/config/config.scss +0 -45
  92. package/view/config/configIndex.vue +0 -150
  93. package/view/config/subPage/router-config.vue +0 -5
  94. package/view/config/subPage/sys-config.vue +0 -249
  95. package/view/window/IframeFReportView.vue +0 -28
  96. package/view/window/windowIndex.vue +0 -22
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuManage-CIxqmusr.js","sources":["../components/common/basic/IconSelect.vue","../components/business/admin/menu/MenuManage.vue"],"sourcesContent":["<template>\n <el-dialog\n v-model=\"iconModal\"\n title=\"选择ICON\"\n :width=\"1200\">\n <div style=\"height: 600px\">\n <el-form\n :model=\"searchForm\"\n layout=\"inline\">\n <el-form-item label=\"筛选图标\">\n <el-input\n v-model=\"searchForm.icon\"\n placeholder=\"输入中文、英文、拼音筛选\"\n allow-clear></el-input>\n </el-form-item>\n </el-form>\n <div\n v-loading=\"loading\"\n class=\"icon-choose-container\">\n <template v-for=\"item in resultList\">\n <YhIcon\n :font-family=\"item.fontFamily\"\n :prefix=\"item.prefix\"\n :name=\"item.value\"\n @click=\"clickIcon(item)\" />\n </template>\n </div>\n </div>\n <div slot=\"footer\">\n <el-button\n type=\"primary\"\n @click=\"ok()\">\n 关闭\n </el-button>\n </div>\n </el-dialog>\n</template>\n<script setup>\n import {ref, reactive, watch, computed, onMounted} from 'vue';\n import {getIconList} from './iconData';\n import YhIcon from './YhIcon.vue';\n\n const props = defineProps({\n actionData: {\n type: Object,\n },\n });\n const emits = defineEmits(['clickSure']);\n watch(\n () => props.actionData,\n (val) => {\n if (val.type === 'select') {\n iconModal.value = true;\n } else {\n iconModal.value = false;\n }\n },\n {\n deep: true,\n }\n );\n const resultList = computed(() => {\n const keyword = searchForm.icon.toLowerCase();\n if (!keyword) return iconList.value;\n return iconList.value.filter((item) => {\n return (\n (item.label && item.label.toLowerCase().indexOf(keyword) > -1) ||\n (item.value && item.value.toLowerCase().indexOf(keyword) > -1) ||\n (item.pinyinFull && item.pinyinFull.indexOf(keyword) > -1) ||\n (item.pinyinFirst && item.pinyinFirst.indexOf(keyword) > -1)\n );\n });\n });\n function ok() {\n searchForm.icon = '';\n iconModal.value = false;\n }\n function cancel() {\n searchForm.icon = '';\n iconModal.value = false;\n }\n function clickIcon(val) {\n const fullClass = `${val.fontFamily} ${val.prefix}${val.value}`;\n toIcon.value = fullClass;\n emits('clickSure', fullClass);\n iconModal.value = false;\n }\n const searchForm = reactive({\n icon: '',\n });\n\n const iconModal = ref(false);\n const toIcon = ref('');\n const iconList = ref([]);\n const loading = ref(false);\n\n // 首次挂载时加载图标数据(动态加载 pinyin-pro)\n onMounted(async () => {\n if (iconList.value.length > 0) return;\n loading.value = true;\n try {\n iconList.value = await getIconList();\n } finally {\n loading.value = false;\n }\n });\n</script>\n\n<style lang=\"scss\">\n .icon-choose-container {\n overflow: auto;\n height: 536px;\n border-top: 1px solid #ccc;\n border-left: 1px solid #ccc;\n display: flex;\n align-content: flex-start;\n flex-wrap: wrap;\n margin-top: 24px;\n\n // YhIcon 组件容器样式\n i {\n cursor: pointer;\n font-size: 26px;\n display: inline-block;\n width: 56.7px;\n height: 56.7px;\n text-align: center;\n line-height: 56.7px;\n border-right: 1px solid #ccc;\n border-bottom: 1px solid #ccc;\n box-sizing: border-box;\n overflow: hidden;\n transition: font-size 0.2s ease-in-out 0s;\n &:hover {\n font-size: 40px;\n }\n }\n }\n</style>\n","<template>\n <div class=\"menu-manage\">\n <el-row class=\"operation\">\n <div>\n <el-button @click=\"addNew\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"plus\"></YhIcon>\n 新增\n </el-button>\n <el-button @click=\"delAll\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"delete2\"></YhIcon>\n 删除\n </el-button>\n <el-button @click=\"getAllList\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"refresh\"></YhIcon>\n 刷新\n </el-button>\n </div>\n </el-row>\n <el-row\n type=\"flex\"\n justify=\"start\"\n :gutter=\"16\"\n v-show=\"showType === 'tree'\">\n <el-col\n :sm=\"8\"\n :md=\"8\"\n :lg=\"8\"\n :xl=\"6\">\n <div class=\"edit-status-row\">\n <el-alert\n class=\"tree-tips\"\n show-icon\n :closable=\"false\"\n :title=\"`当前选择编辑:${editTitle}`\"></el-alert>\n <YhIcon\n class=\"select-clear-icon\"\n @click=\"cancelEdit\"\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"circle-close\"></YhIcon>\n </div>\n <el-input\n v-model=\"searchKey\"\n @change=\"search\"\n placeholder=\"输入菜单名搜索\"\n clearable>\n <template #prepend>\n <i class=\"iconfont icon-search\"></i>\n </template>\n </el-input>\n <div v-loading=\"loading\">\n <div\n class=\"tree-bar\"\n :style=\"{maxHeight: maxHeight}\">\n <el-tree\n ref=\"treeRef\"\n :data=\"data\"\n :props=\"menuTreeProps\"\n node-key=\"key\"\n default-expand-all\n :expand-on-click-node=\"false\"\n highlight-current\n :current-node-key=\"treeSelectedKeys\"\n @current-change=\"selectTree\"></el-tree>\n </div>\n </div>\n </el-col>\n <el-col\n :sm=\"16\"\n :md=\"16\"\n :lg=\"16\"\n :xl=\"9\">\n <el-form\n ref=\"formRef\"\n class=\"menu-edit-form\"\n :model=\"form\"\n :rules=\"formValidate\"\n label-width=\"90px\">\n <el-form-item\n label=\"名称\"\n prop=\"name\">\n <el-input\n v-model=\"form.name\"\n ref=\"nameInputRef\" />\n </el-form-item>\n <el-form-item\n label=\"类型\"\n prop=\"menuType\">\n <el-select\n v-model=\"form.menuType\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable>\n <el-option\n v-for=\"item in MENU_TYPE_OPTIONS\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"></el-option>\n </el-select>\n </el-form-item>\n <el-form-item\n label=\"所属模块\"\n prop=\"sysModuleId\">\n <Dict\n dict=\"sysModuleId\"\n _select_id=\"59C1E77AE78D44DF8876688FE78DB53E\"\n v-model=\"form.sysModuleId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n label=\"请求地址\"\n prop=\"url\"\n v-show=\"['LINK', 'SUBPAGE'].includes(form.menuType)\">\n <el-autocomplete\n v-model=\"form.url\"\n :fetch-suggestions=\"queryUrlSuggestions\"\n placeholder=\"请输入或选择组件路径\"\n clearable\n style=\"width: 100%\" />\n </el-form-item>\n <el-form-item\n label=\"访问窗口\"\n prop=\"sysWindowId\"\n v-show=\"form.menuType === 'WINDOW' || form.menuType === 'JOIN'\">\n <Dict\n dict=\"sysWindowId\"\n _select_id=\"F56B868C8FF44053926920588FB3C76C\"\n v-model=\"form.sysWindowId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n label=\"App页面\"\n prop=\"sysAppDesignId\"\n v-show=\"form.menuType === 'APP'\">\n <Dict\n dict=\"sysAppDesignId\"\n _select_id=\"1352728B367842EDAFF195BF073DD817\"\n v-model=\"form.sysAppDesignId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n label=\"上级菜单\"\n prop=\"parentId\">\n <el-select\n v-model=\"form.parentId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable>\n <el-option\n v-for=\"m in menuListOptions\"\n :value=\"m.adMenuId\"\n :label=\"m.name\"\n :key=\"m.adMenuId\"></el-option>\n </el-select>\n </el-form-item>\n <el-form-item\n label=\"显示模式\"\n prop=\"showMode\">\n <el-select\n v-model=\"form.showMode\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable>\n <el-option\n value=\"P\"\n label=\"电脑端\"></el-option>\n <el-option\n value=\"M\"\n label=\"手机端\"></el-option>\n <el-option\n value=\"PM\"\n label=\"电脑+手机\"></el-option>\n </el-select>\n </el-form-item>\n <el-form-item\n label=\"排序\"\n prop=\"seq\">\n <el-input\n type=\"number\"\n v-model=\"form.seq\" />\n </el-form-item>\n <el-form-item\n label=\"图标地址\"\n prop=\"iconPath\"\n class=\"icon-select-form-item\">\n <el-button\n type=\"info\"\n @click=\"getIcon()\">\n 图标选择\n </el-button>\n <el-input v-model=\"form.iconPath\" />\n <span class=\"icon-preview\">\n <YhIcon\n v-if=\"form.iconPath\"\n :name=\"form.iconPath\" />\n </span>\n </el-form-item>\n <el-form-item\n label=\"备注\"\n prop=\"description\">\n <el-input\n v-model=\"form.description\"\n type=\"textarea\" />\n </el-form-item>\n <el-form-item label=\"是否有效\">\n <el-switch\n v-model=\"form.active\"\n active-text=\"Y\"\n inactive-text=\"N\" />\n </el-form-item>\n <el-form-item>\n <el-button\n style=\"margin-right: 5px\"\n @click=\"submitEdit\"\n :loading=\"submitLoading\"\n :disabled=\"form.adMenuId !== ''\"\n type=\"primary\">\n <i class=\"iconfont icon-plus\"></i>\n 保存新增\n </el-button>\n <el-button\n style=\"margin-right: 5px\"\n @click=\"submitEdit\"\n :loading=\"submitLoading\"\n :disabled=\"form.adMenuId === ''\"\n type=\"primary\">\n <i class=\"iconfont icon-save\"></i>\n 保存修改\n </el-button>\n <el-button @click=\"handleReset\">重置</el-button>\n </el-form-item>\n </el-form>\n </el-col>\n </el-row>\n <IconSelect\n :actionData=\"toIconData\"\n @clickSure=\"iconSure\"></IconSelect>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, computed, onMounted, onActivated, nextTick} from 'vue';\n import {ElMessage, ElMessageBox} from 'element-plus';\n import type {FormInstance, FormRules} from 'element-plus';\n import {deepClone, httpRequest} from 'yh-client';\n import {getComponentMap} from '../../../../router/component-map';\n import Dict from '../../system/Dict.vue';\n import IconSelect from '../../../common/basic/IconSelect.vue';\n import YhIcon from '../../../common/basic/YhIcon.vue';\n\n // 定义组件名(keep-alive 缓存 key)\n defineOptions({\n name: 'MenuManage',\n });\n\n // ==================== 类型定义 ====================\n\n interface MenuForm {\n name: string;\n menuType: string;\n sysModuleId: string;\n sysWindowId: string;\n sysAppDesignId: string;\n url: string;\n parentId: string;\n showMode: string | null;\n seq: number | null;\n iconPath: string;\n description: string;\n adMenuId: string;\n active: boolean;\n }\n\n interface TreeNode {\n key: string;\n title: string;\n level: number;\n data: any;\n children?: TreeNode[];\n }\n\n interface MenuListItem {\n adMenuId: string;\n name: string;\n menuType: string;\n _childs?: any[];\n }\n\n // ==================== 常量定义 ====================\n\n // 树形高度偏移量(页面布局预留空间)\n const TREE_OFFSET = 287;\n\n const MENU_TYPE_OPTIONS = [\n {value: 'WINDOW', label: '窗口'},\n {value: 'LINK', label: '访问链接'},\n {value: 'SUBPAGE', label: '子页面'},\n {value: 'JOIN', label: '关联弹窗'},\n {value: 'GROUP', label: '菜单分组'},\n {value: 'APP', label: '手机页面'},\n ];\n\n // ==================== 响应式数据 ====================\n\n const showType = ref('tree');\n const loading = ref(true);\n const maxHeight = ref('500px');\n const searchKey = ref('');\n const editTitle = ref('');\n const treeSelectedKeys = ref<string | null>(null);\n const submitLoading = ref(false);\n\n const treeRef = ref();\n const formRef = ref<FormInstance>();\n const nameInputRef = ref();\n\n const data = ref<TreeNode[]>([]);\n const allMenu = ref<any[]>([]);\n const menuList = ref<MenuListItem[]>([]);\n const toIconData = ref<Record<string, any>>({});\n const selectedNodes = ref<any>(null);\n const isCancelling = ref(false); // 防止 cancelEdit 递归\n\n // 表单数据\n const form = ref<MenuForm>({\n name: '',\n menuType: '',\n sysModuleId: '',\n sysWindowId: '',\n sysAppDesignId: '',\n url: '',\n parentId: '',\n showMode: null,\n seq: null,\n iconPath: '',\n description: '',\n adMenuId: '',\n active: true,\n });\n\n // 表单验证规则\n const formValidate: FormRules<MenuForm> = {\n name: [{required: true, message: '名称不能为空', trigger: 'blur'}],\n menuType: [{required: true, message: '菜单类型不能为空', trigger: 'blur'}],\n sysModuleId: [{required: true, message: '所属模块不能为空', trigger: 'blur'}],\n showMode: [{required: true, message: '显示模式不能为空', trigger: 'blur'}],\n seq: [{required: true, message: '排序值不能为空', trigger: 'blur'}],\n iconPath: [{required: true, message: '图标不能为空', trigger: 'blur'}],\n };\n\n const menuTreeProps = {\n label: 'title',\n };\n\n // ==================== 计算属性 ====================\n\n const menuListOptions = computed(() => {\n return menuList.value.filter((menu) => {\n return ['JOIN'].includes(form.value.menuType) || menu.menuType === 'GROUP';\n });\n });\n\n // 查询组件路径建议\n const queryUrlSuggestions = (queryString: string, cb: (suggestions: any[]) => void) => {\n const componentMap = getComponentMap();\n const paths = Object.keys(componentMap);\n\n const results = queryString\n ? paths.filter((path) => path.toLowerCase().includes(queryString.toLowerCase()))\n : paths;\n\n cb(results.map((path) => ({value: path})));\n };\n\n // ==================== 方法 ====================\n\n // 获取所有菜单数据\n const getAllList = () => {\n loading.value = true;\n httpRequest\n .post<{result: boolean; menuList: any[]}>('/menuController/getMenuData', {})\n .then((response) => {\n if (response.data.result) {\n menuList.value = [];\n allMenu.value = response.data.menuList;\n data.value = parseTreeData(allMenu.value, 0);\n }\n })\n .catch((error) => {\n console.error('获取菜单列表失败:', error);\n ElMessage.error('获取菜单列表失败');\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n // 搜索\n const search = () => {\n loading.value = true;\n data.value = parseTreeData(allMenu.value, 0, searchKey.value);\n loading.value = false;\n };\n\n // 解析树形数据\n const parseTreeData = (menus: any[], curLevel: number, search?: string): TreeNode[] => {\n const result: TreeNode[] = [];\n menus.forEach((menu) => {\n const newLevelData: TreeNode = {\n data: menu,\n key: '',\n title: '',\n level: curLevel,\n };\n\n if (menu['_childs'] && menu['_childs'].length > 0) {\n newLevelData.children = parseTreeData(menu['_childs'], curLevel + 1, search);\n }\n\n if (\n search !== undefined &&\n (newLevelData.children === undefined || newLevelData.children.length === 0) &&\n menu.name.indexOf(search) === -1\n ) {\n return;\n } else if (search === undefined) {\n menuList.value.push(menu);\n }\n\n newLevelData.key = menu.adMenuId;\n newLevelData.title = menu.name;\n result.push(newLevelData);\n });\n return result;\n };\n\n // 选择树节点\n const selectTree = (treeNode: TreeNode | null, node: any) => {\n if (treeNode) {\n // 深拷贝避免直接引用原始数据\n const formData = deepClone(treeNode.data);\n formData.active = formData.active === 'Y';\n form.value = formData;\n editTitle.value = formData.name;\n selectedNodes.value = node;\n treeSelectedKeys.value = treeNode.data.adMenuId;\n } else {\n // 直接重置,不再调用 cancelEdit 避免递归\n treeSelectedKeys.value = null;\n handleReset();\n }\n };\n\n // 新增\n const addNew = () => {\n cancelEdit();\n nextTick(() => {\n nameInputRef.value?.focus();\n });\n };\n\n // 取消编辑\n const cancelEdit = () => {\n if (isCancelling.value) return;\n isCancelling.value = true;\n treeRef.value?.setCurrentKey(null);\n nextTick(() => {\n treeSelectedKeys.value = null;\n handleReset();\n isCancelling.value = false;\n });\n };\n\n // 重置表单\n const handleReset = () => {\n form.value.adMenuId = '';\n editTitle.value = '';\n formRef.value?.resetFields();\n };\n\n // 提交编辑\n const submitEdit = () => {\n if (form.value.adMenuId && form.value.parentId === form.value.adMenuId) {\n ElMessage.error('父级菜单不能为自身!');\n return;\n }\n\n formRef.value?.validate((valid) => {\n if (valid) {\n submitLoading.value = true;\n // 深拷贝并排除不需要的字段\n const clonedForm = deepClone(form.value) as Record<string, any>;\n delete clonedForm.created;\n delete clonedForm.updated;\n delete clonedForm._childs;\n clonedForm.active = clonedForm.active ? 'Y' : 'N';\n\n httpRequest\n .post<{result: boolean; msg: string}>('/menuController/submitMenu', clonedForm)\n .then((response) => {\n if (response.data.result) {\n ElMessage.success((form.value.adMenuId !== '' ? '修改' : '新增') + '成功');\n getAllList();\n handleReset();\n } else {\n ElMessage.error(response.data.msg);\n }\n })\n .catch((error) => {\n console.error('提交菜单失败:', error);\n ElMessage.error('提交失败,请稍后重试');\n })\n .finally(() => {\n submitLoading.value = false;\n });\n }\n });\n };\n\n // 删除\n const delAll = () => {\n if (!selectedNodes.value) {\n ElMessage.warning('您还未勾选要删除的数据');\n return;\n }\n\n ElMessageBox.confirm('您确认要删除所选的数据?', '确认删除', {\n type: 'warning',\n }).then(() => {\n const ids = form.value.adMenuId;\n httpRequest\n .post<{result: boolean; msg: string}>('/menuController/delMenuByIds', {ids})\n .then((response) => {\n if (response.data.result) {\n ElMessage.success('删除成功');\n getAllList();\n handleReset();\n } else {\n ElMessage.error(response.data.msg);\n }\n })\n .catch((error) => {\n console.error('删除菜单失败:', error);\n ElMessage.error('删除失败,请稍后重试');\n });\n });\n };\n\n // 图标选择\n const getIcon = () => {\n toIconData.value = {\n type: 'select',\n };\n };\n\n const iconSure = (iconPath: string) => {\n form.value.iconPath = iconPath;\n };\n\n // ==================== 生命周期 ====================\n\n // 首次加载数据\n onMounted(() => {\n getAllList();\n });\n\n // Keep-alive 激活时只更新布局高度(保持缓存)\n onActivated(() => {\n const height = document.documentElement.clientHeight;\n maxHeight.value = `${height - TREE_OFFSET}px`;\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .menu-manage {\n padding: 10px 0;\n\n .operation {\n margin-bottom: 2vh;\n\n .more-btn {\n margin-left: 10px;\n }\n }\n\n .edit-status-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n margin-bottom: 10px;\n\n .tree-tips {\n flex: 1;\n margin-bottom: 0;\n }\n\n .select-clear-icon {\n flex-shrink: 0;\n font-size: 18px;\n cursor: pointer;\n color: var(--el-color-danger);\n transition: all 0.3s;\n\n &:hover {\n color: var(--el-color-danger-light-3);\n transform: scale(1.1);\n }\n }\n }\n\n .select-title {\n font-weight: 600;\n color: #40a9ff;\n }\n\n .tree-bar {\n overflow: auto;\n margin-top: 5px;\n position: relative;\n min-height: 80px;\n\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 4px;\n box-shadow: inset 0 0 2px #d1d1d1;\n background: #e4e4e4;\n }\n }\n\n .menu-edit-form {\n :deep(.el-form-item__content) {\n display: flex;\n\n .el-input,\n .el-select {\n flex: 1;\n }\n }\n\n .icon-select-form-item {\n :deep(.el-input) {\n margin: 0 10px;\n }\n\n .icon-preview {\n padding: 0 10px 0 0;\n\n .iconfont {\n font-size: 24px;\n }\n }\n }\n }\n }\n</style>\n"],"names":["props","__props","emits","__emit","watch","val","iconModal","resultList","computed","keyword","searchForm","iconList","item","ok","clickIcon","fullClass","toIcon","reactive","ref","loading","onMounted","getIconList","_createBlock","_component_el_dialog","$event","_createElementVNode","_hoisted_1","_createVNode","_component_el_form","_component_el_form_item","_component_el_input","_cache","_withDirectives","_openBlock","_createElementBlock","_hoisted_2","_Fragment","_renderList","YhIcon","_hoisted_3","_component_el_button","TREE_OFFSET","MENU_TYPE_OPTIONS","showType","maxHeight","searchKey","editTitle","treeSelectedKeys","submitLoading","treeRef","formRef","nameInputRef","data","allMenu","menuList","toIconData","selectedNodes","isCancelling","form","formValidate","menuTreeProps","menuListOptions","menu","queryUrlSuggestions","queryString","cb","componentMap","getComponentMap","paths","results","path","getAllList","httpRequest","response","parseTreeData","error","ElMessage","search","menus","curLevel","result","newLevelData","selectTree","treeNode","node","formData","deepClone","handleReset","addNew","cancelEdit","nextTick","_a","submitEdit","valid","clonedForm","delAll","ElMessageBox","ids","getIcon","iconSure","iconPath","onActivated","height","_component_el_row","_component_el_col","_component_el_alert","_component_el_tree","_component_el_select","_component_el_option","Dict","_component_el_autocomplete","_vShow","m","_component_el_switch","IconSelect"],"mappings":"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"}
@@ -0,0 +1,378 @@
1
+ import { defineComponent as le, ref as d, onMounted as ae, resolveComponent as m, resolveDirective as te, openBlock as T, createElementBlock as M, createVNode as l, withCtx as o, createElementVNode as y, createTextVNode as v, withDirectives as N, createBlock as oe, createCommentVNode as ne, vShow as re, nextTick as B } from "vue";
2
+ import { ElMessage as _ } from "element-plus";
3
+ import { h as V, j as K } from "./index-BP41Ph8K.js";
4
+ import "lodash-es";
5
+ import { _ as Y } from "./Dict.vue_vue_type_script_setup_true_lang-A8BZwEiK.js";
6
+ const de = { class: "yh-org-manage" }, ue = { class: "yh-orm-manage-tree" }, ce = /* @__PURE__ */ le({
7
+ name: "OrgManage",
8
+ __name: "OrgManage",
9
+ setup(ie) {
10
+ const j = d("tree"), f = d(!0), q = d("500px"), x = d(!0), O = d(""), b = d(""), c = d(!1), U = d(), I = d(), E = d(), H = {
11
+ label: "title"
12
+ }, a = d({
13
+ value: "",
14
+ name: "",
15
+ adOrgtypeId: "",
16
+ parentId: "",
17
+ description: "",
18
+ active: "Y",
19
+ adOrgId: "",
20
+ mainPage: ""
21
+ }), S = {
22
+ value: [{ required: !0, message: "编码不能为空", trigger: "change" }],
23
+ name: [{ required: !0, message: "名称不能为空", trigger: "change" }]
24
+ }, k = d([]), h = d([]), g = d(null), A = d(null), G = () => {
25
+ w();
26
+ }, z = () => {
27
+ x.value = !1, B(() => {
28
+ x.value = !0;
29
+ });
30
+ }, C = (t, e, n) => {
31
+ const u = [];
32
+ return t.forEach((s) => {
33
+ const i = {
34
+ data: s,
35
+ key: "",
36
+ title: "",
37
+ level: e
38
+ };
39
+ s._childs && s._childs.length > 0 && (i.children = C(s._childs, e + 1, n)), !(n !== void 0 && (i.children === void 0 || i.children.length === 0) && s.name.indexOf(n) === -1) && (i.key = s.adOrgId, i.title = s.name, u.push(i));
40
+ }), u;
41
+ }, w = () => {
42
+ f.value = !0, z(), K.post("/orgController/getOrgData", {}).then((t) => {
43
+ t.data.result && (h.value = t.data.orgList, k.value = C(h.value, 0));
44
+ }).catch((t) => {
45
+ console.error("获取机构列表失败:", t), _.error("获取机构列表失败");
46
+ }).finally(() => {
47
+ f.value = !1;
48
+ });
49
+ }, J = () => {
50
+ f.value = !0, k.value = C(h.value, 0, O.value), f.value = !1;
51
+ }, Q = (t, e) => {
52
+ if (t) {
53
+ const n = t.data;
54
+ a.value = { ...n }, b.value = n.name, A.value = e, g.value = t.data.adOrgId;
55
+ } else
56
+ F();
57
+ }, W = () => {
58
+ F(), g.value = null, B(() => {
59
+ var t;
60
+ (t = E.value) == null || t.focus();
61
+ });
62
+ }, F = () => {
63
+ R();
64
+ }, R = () => {
65
+ var t;
66
+ g.value = null, a.value.adOrgId = "", a.value.active = "Y", b.value = "", (t = I.value) == null || t.resetFields();
67
+ }, P = () => {
68
+ var t;
69
+ (t = I.value) == null || t.validate((e) => {
70
+ if (e) {
71
+ c.value = !0;
72
+ const n = {
73
+ value: a.value.value,
74
+ name: a.value.name,
75
+ adOrgtypeId: a.value.adOrgtypeId,
76
+ parentId: a.value.parentId,
77
+ description: a.value.description,
78
+ active: a.value.active,
79
+ adOrgId: a.value.adOrgId,
80
+ mainPage: a.value.mainPage
81
+ };
82
+ K.post("/orgController/submitOrg", n).then((u) => {
83
+ u.data.result ? (_.success((a.value.adOrgId !== "" ? "修改" : "新增") + "成功"), w(), R()) : _.error(u.data.msg);
84
+ }).catch((u) => {
85
+ console.error("提交机构失败:", u), _.error("提交失败,请稍后重试");
86
+ }).finally(() => {
87
+ c.value = !1;
88
+ });
89
+ }
90
+ });
91
+ }, D = (t) => {
92
+ var n;
93
+ const e = (n = U.value) == null ? void 0 : n.root.store.nodesMap;
94
+ if (e)
95
+ for (const u in e)
96
+ e[u].expanded = t;
97
+ };
98
+ return ae(() => {
99
+ const t = document.documentElement.clientHeight;
100
+ q.value = `${t - 106}px`, G();
101
+ }), (t, e) => {
102
+ const n = m("el-button"), u = m("el-row"), s = m("el-alert"), i = m("el-input"), X = m("el-tree"), $ = m("el-col"), p = m("el-form-item"), Z = m("el-switch"), L = m("el-form"), ee = te("loading");
103
+ return T(), M("div", de, [
104
+ l(u, { class: "operation" }, {
105
+ default: o(() => [
106
+ y("div", null, [
107
+ l(n, { onClick: W }, {
108
+ default: o(() => [
109
+ l(V, {
110
+ fontFamily: "yhicon",
111
+ prefix: "yh-",
112
+ name: "plus"
113
+ }),
114
+ e[10] || (e[10] = v(" 新增 ", -1))
115
+ ]),
116
+ _: 1
117
+ }),
118
+ l(n, {
119
+ onClick: e[0] || (e[0] = (r) => D(!0))
120
+ }, {
121
+ default: o(() => [
122
+ l(V, {
123
+ fontFamily: "yhicon",
124
+ prefix: "yh-",
125
+ name: "colum-height"
126
+ }),
127
+ e[11] || (e[11] = v(" 展开 ", -1))
128
+ ]),
129
+ _: 1
130
+ }),
131
+ l(n, {
132
+ onClick: e[1] || (e[1] = (r) => D(!1))
133
+ }, {
134
+ default: o(() => [
135
+ l(V, {
136
+ fontFamily: "yhicon",
137
+ prefix: "yh-",
138
+ name: "vertical-align-middl"
139
+ }),
140
+ e[12] || (e[12] = v(" 折叠 ", -1))
141
+ ]),
142
+ _: 1
143
+ }),
144
+ l(n, { onClick: w }, {
145
+ default: o(() => [
146
+ l(V, {
147
+ fontFamily: "yhicon",
148
+ prefix: "yh-",
149
+ name: "refresh"
150
+ }),
151
+ e[13] || (e[13] = v(" 刷新 ", -1))
152
+ ]),
153
+ _: 1
154
+ })
155
+ ])
156
+ ]),
157
+ _: 1
158
+ }),
159
+ N(l(u, {
160
+ class: "contenx",
161
+ type: "flex",
162
+ justify: "start",
163
+ gutter: 16
164
+ }, {
165
+ default: o(() => [
166
+ l($, {
167
+ class: "yh-org-manage-right",
168
+ sm: 8,
169
+ md: 8,
170
+ lg: 8,
171
+ xl: 6
172
+ }, {
173
+ default: o(() => [
174
+ l(s, {
175
+ "show-icon": "",
176
+ title: `当前选择编辑: ${b.value} `,
177
+ closable: !1,
178
+ style: { "margin-bottom": "10px" }
179
+ }, null, 8, ["title"]),
180
+ l(i, {
181
+ modelValue: O.value,
182
+ "onUpdate:modelValue": e[2] || (e[2] = (r) => O.value = r),
183
+ onChange: J,
184
+ placeholder: "输入机构名搜索",
185
+ clearable: ""
186
+ }, {
187
+ prepend: o(() => [...e[14] || (e[14] = [
188
+ y("i", { class: "iconfont icon-search" }, null, -1)
189
+ ])]),
190
+ _: 1
191
+ }, 8, ["modelValue"]),
192
+ N((T(), M("div", ue, [
193
+ l(X, {
194
+ ref_key: "treeRef",
195
+ ref: U,
196
+ data: k.value,
197
+ props: H,
198
+ "node-key": "key",
199
+ "default-expand-all": "",
200
+ "expand-on-click-node": !1,
201
+ "current-node-key": g.value,
202
+ onCurrentChange: Q
203
+ }, null, 8, ["data", "current-node-key"])
204
+ ])), [
205
+ [ee, f.value]
206
+ ])
207
+ ]),
208
+ _: 1
209
+ }),
210
+ l($, {
211
+ sm: 16,
212
+ md: 16,
213
+ lg: 16,
214
+ xl: 9
215
+ }, {
216
+ default: o(() => [
217
+ l(L, {
218
+ ref_key: "formRef",
219
+ ref: I,
220
+ model: a.value,
221
+ rules: S,
222
+ "label-width": "90px"
223
+ }, {
224
+ default: o(() => [
225
+ l(p, {
226
+ label: "机构编码",
227
+ prop: "value"
228
+ }, {
229
+ default: o(() => [
230
+ l(i, {
231
+ modelValue: a.value.value,
232
+ "onUpdate:modelValue": e[3] || (e[3] = (r) => a.value.value = r),
233
+ ref_key: "orgCodeRef",
234
+ ref: E
235
+ }, null, 8, ["modelValue"])
236
+ ]),
237
+ _: 1
238
+ }),
239
+ l(p, {
240
+ label: "机构名称",
241
+ prop: "name"
242
+ }, {
243
+ default: o(() => [
244
+ l(i, {
245
+ modelValue: a.value.name,
246
+ "onUpdate:modelValue": e[4] || (e[4] = (r) => a.value.name = r)
247
+ }, null, 8, ["modelValue"])
248
+ ]),
249
+ _: 1
250
+ }),
251
+ l(p, {
252
+ label: "机构类型",
253
+ prop: "adOrgtypeId"
254
+ }, {
255
+ default: o(() => [
256
+ l(Y, {
257
+ dict: "adOrgtypeId",
258
+ url: "/orgController/getOrgType",
259
+ _select_id: "",
260
+ modelValue: a.value.adOrgtypeId,
261
+ "onUpdate:modelValue": e[5] || (e[5] = (r) => a.value.adOrgtypeId = r),
262
+ placeholder: "请选择或输入搜索",
263
+ filterable: "",
264
+ clearable: ""
265
+ }, null, 8, ["modelValue"])
266
+ ]),
267
+ _: 1
268
+ }),
269
+ x.value ? (T(), oe(p, {
270
+ key: 0,
271
+ label: "上级机构",
272
+ prop: "parentId"
273
+ }, {
274
+ default: o(() => [
275
+ l(Y, {
276
+ dict: "parentId",
277
+ url: "/orgController/getGroupOrgs",
278
+ modelValue: a.value.parentId,
279
+ "onUpdate:modelValue": e[6] || (e[6] = (r) => a.value.parentId = r),
280
+ placeholder: "请选择或输入搜索",
281
+ filterable: "",
282
+ clearable: ""
283
+ }, null, 8, ["modelValue"])
284
+ ]),
285
+ _: 1
286
+ })) : ne("", !0),
287
+ l(p, {
288
+ label: "默认首页",
289
+ prop: "mainPage"
290
+ }, {
291
+ default: o(() => [
292
+ l(i, {
293
+ modelValue: a.value.mainPage,
294
+ "onUpdate:modelValue": e[7] || (e[7] = (r) => a.value.mainPage = r)
295
+ }, null, 8, ["modelValue"])
296
+ ]),
297
+ _: 1
298
+ }),
299
+ l(p, {
300
+ label: "备注",
301
+ prop: "description"
302
+ }, {
303
+ default: o(() => [
304
+ l(i, {
305
+ modelValue: a.value.description,
306
+ "onUpdate:modelValue": e[8] || (e[8] = (r) => a.value.description = r),
307
+ type: "textarea"
308
+ }, null, 8, ["modelValue"])
309
+ ]),
310
+ _: 1
311
+ }),
312
+ l(p, { label: "是否有效" }, {
313
+ default: o(() => [
314
+ l(Z, {
315
+ modelValue: a.value.active,
316
+ "onUpdate:modelValue": e[9] || (e[9] = (r) => a.value.active = r),
317
+ "active-value": "Y",
318
+ "inactive-value": "N"
319
+ }, null, 8, ["modelValue"])
320
+ ]),
321
+ _: 1
322
+ }),
323
+ l(p, null, {
324
+ default: o(() => [
325
+ l(n, {
326
+ style: { "margin-right": "5px" },
327
+ onClick: P,
328
+ loading: c.value,
329
+ disabled: a.value.adOrgId !== "",
330
+ type: "primary"
331
+ }, {
332
+ default: o(() => [...e[15] || (e[15] = [
333
+ y("i", { class: "iconfont icon-plus" }, null, -1),
334
+ v(" 保存新增 ", -1)
335
+ ])]),
336
+ _: 1
337
+ }, 8, ["loading", "disabled"]),
338
+ l(n, {
339
+ style: { "margin-right": "5px" },
340
+ onClick: P,
341
+ loading: c.value,
342
+ disabled: a.value.adOrgId === "",
343
+ type: "primary"
344
+ }, {
345
+ default: o(() => [...e[16] || (e[16] = [
346
+ y("i", { class: "iconfont icon-save" }, null, -1),
347
+ v(" 保存修改 ", -1)
348
+ ])]),
349
+ _: 1
350
+ }, 8, ["loading", "disabled"]),
351
+ l(n, { onClick: R }, {
352
+ default: o(() => [...e[17] || (e[17] = [
353
+ v("重置", -1)
354
+ ])]),
355
+ _: 1
356
+ })
357
+ ]),
358
+ _: 1
359
+ })
360
+ ]),
361
+ _: 1
362
+ }, 8, ["model"])
363
+ ]),
364
+ _: 1
365
+ })
366
+ ]),
367
+ _: 1
368
+ }, 512), [
369
+ [re, j.value === "tree"]
370
+ ])
371
+ ]);
372
+ };
373
+ }
374
+ });
375
+ export {
376
+ ce as default
377
+ };
378
+ //# sourceMappingURL=OrgManage-BcTWbnyc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrgManage-BcTWbnyc.js","sources":["../components/business/system/OrgManage.vue"],"sourcesContent":["<template>\n <div class=\"yh-org-manage\">\n <el-row class=\"operation\">\n <div>\n <el-button @click=\"addNew\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"plus\"></YhIcon>\n 新增\n </el-button>\n <el-button @click=\"expandTree(true)\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"colum-height\"></YhIcon>\n 展开\n </el-button>\n <el-button @click=\"expandTree(false)\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"vertical-align-middl\"></YhIcon>\n 折叠\n </el-button>\n <el-button @click=\"getAllList\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"refresh\"></YhIcon>\n 刷新\n </el-button>\n </div>\n </el-row>\n <el-row\n class=\"contenx\"\n type=\"flex\"\n justify=\"start\"\n :gutter=\"16\"\n v-show=\"showType === 'tree'\">\n <el-col\n class=\"yh-org-manage-right\"\n :sm=\"8\"\n :md=\"8\"\n :lg=\"8\"\n :xl=\"6\">\n <el-alert\n show-icon\n :title=\"`当前选择编辑: ${editTitle} `\"\n :closable=\"false\"\n style=\"margin-bottom: 10px\"></el-alert>\n <el-input\n v-model=\"searchKey\"\n @change=\"search\"\n placeholder=\"输入机构名搜索\"\n clearable>\n <template #prepend>\n <i class=\"iconfont icon-search\"></i>\n </template>\n </el-input>\n <div\n class=\"yh-orm-manage-tree\"\n v-loading=\"loading\">\n <el-tree\n ref=\"treeRef\"\n :data=\"data\"\n :props=\"treeProp\"\n node-key=\"key\"\n default-expand-all\n :expand-on-click-node=\"false\"\n :current-node-key=\"treeSelectedKeys\"\n @current-change=\"selectTree\"></el-tree>\n </div>\n </el-col>\n <el-col\n :sm=\"16\"\n :md=\"16\"\n :lg=\"16\"\n :xl=\"9\">\n <el-form\n ref=\"formRef\"\n :model=\"form\"\n :rules=\"formValidate\"\n label-width=\"90px\">\n <el-form-item\n label=\"机构编码\"\n prop=\"value\">\n <el-input\n v-model=\"form.value\"\n ref=\"orgCodeRef\" />\n </el-form-item>\n <el-form-item\n label=\"机构名称\"\n prop=\"name\">\n <el-input v-model=\"form.name\" />\n </el-form-item>\n <el-form-item\n label=\"机构类型\"\n prop=\"adOrgtypeId\">\n <Dict\n dict=\"adOrgtypeId\"\n url=\"/orgController/getOrgType\"\n _select_id=\"\"\n v-model=\"form.adOrgtypeId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n label=\"上级机构\"\n prop=\"parentId\"\n v-if=\"pOrgRefreshFlag\">\n <Dict\n dict=\"parentId\"\n url=\"/orgController/getGroupOrgs\"\n v-model=\"form.parentId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n label=\"默认首页\"\n prop=\"mainPage\">\n <el-input v-model=\"form.mainPage\" />\n </el-form-item>\n <el-form-item\n label=\"备注\"\n prop=\"description\">\n <el-input\n v-model=\"form.description\"\n type=\"textarea\" />\n </el-form-item>\n <el-form-item label=\"是否有效\">\n <el-switch\n v-model=\"form.active\"\n active-value=\"Y\"\n inactive-value=\"N\" />\n </el-form-item>\n <el-form-item>\n <el-button\n style=\"margin-right: 5px\"\n @click=\"submitEdit\"\n :loading=\"submitLoading\"\n :disabled=\"form.adOrgId !== ''\"\n type=\"primary\">\n <i class=\"iconfont icon-plus\"></i>\n 保存新增\n </el-button>\n <el-button\n style=\"margin-right: 5px\"\n @click=\"submitEdit\"\n :loading=\"submitLoading\"\n :disabled=\"form.adOrgId === ''\"\n type=\"primary\">\n <i class=\"iconfont icon-save\"></i>\n 保存修改\n </el-button>\n <el-button @click=\"handleReset\">重置</el-button>\n </el-form-item>\n </el-form>\n </el-col>\n </el-row>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, onMounted, nextTick} from 'vue';\n import {ElMessage} from 'element-plus';\n import type {FormInstance, FormRules} from 'element-plus';\n import {httpRequest} from 'yh-client';\n import YhIcon from '../../common/basic/YhIcon.vue';\n import Dict from './Dict.vue';\n\n defineOptions({\n name: 'OrgManage',\n });\n\n // ==================== 类型定义 ====================\n\n interface OrgForm {\n value: string;\n name: string;\n adOrgtypeId: string;\n parentId: string;\n description: string;\n active: 'Y' | 'N';\n adOrgId: string;\n mainPage: string;\n }\n\n interface TreeNode {\n key: string;\n title: string;\n level: number;\n data: any;\n children?: TreeNode[];\n }\n\n // ==================== 响应式数据 ====================\n\n const showType = ref('tree');\n const loading = ref(true);\n const maxHeight = ref('500px');\n const pOrgRefreshFlag = ref(true);\n const searchKey = ref('');\n const editTitle = ref('');\n const submitLoading = ref(false);\n\n const treeRef = ref();\n const formRef = ref<FormInstance>();\n const orgCodeRef = ref();\n\n const treeProp = {\n label: 'title',\n };\n\n const form = ref<OrgForm>({\n value: '',\n name: '',\n adOrgtypeId: '',\n parentId: '',\n description: '',\n active: 'Y',\n adOrgId: '',\n mainPage: '',\n });\n\n const formValidate: FormRules<OrgForm> = {\n value: [{required: true, message: '编码不能为空', trigger: 'change'}],\n name: [{required: true, message: '名称不能为空', trigger: 'change'}],\n };\n\n const data = ref<TreeNode[]>([]);\n const allOrg = ref<any[]>([]);\n const treeSelectedKeys = ref<string | null>(null);\n const selectedNodes = ref<any>(null);\n\n const init = () => {\n getAllList();\n };\n\n const pOrgReload = () => {\n pOrgRefreshFlag.value = false;\n nextTick(() => {\n pOrgRefreshFlag.value = true;\n });\n };\n\n const parseTreeData = (curLevelData: any[], curLevel: number, search?: string): TreeNode[] => {\n const result: TreeNode[] = [];\n curLevelData.forEach((curLeve) => {\n const newLevelData: TreeNode = {\n data: curLeve,\n key: '',\n title: '',\n level: curLevel,\n };\n\n if (curLeve['_childs'] && curLeve['_childs'].length > 0) {\n newLevelData.children = parseTreeData(curLeve['_childs'], curLevel + 1, search);\n }\n\n if (\n search !== undefined &&\n (newLevelData.children === undefined || newLevelData.children.length === 0) &&\n curLeve.name.indexOf(search) === -1\n ) {\n return;\n }\n\n newLevelData.key = curLeve.adOrgId;\n newLevelData.title = curLeve.name;\n result.push(newLevelData);\n });\n return result;\n };\n\n const getAllList = () => {\n loading.value = true;\n pOrgReload();\n httpRequest\n .post('/orgController/getOrgData', {})\n .then((response: any) => {\n if (response.data.result) {\n allOrg.value = response.data.orgList;\n data.value = parseTreeData(allOrg.value, 0);\n }\n })\n .catch((error) => {\n console.error('获取机构列表失败:', error);\n ElMessage.error('获取机构列表失败');\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n const search = () => {\n loading.value = true;\n data.value = parseTreeData(allOrg.value, 0, searchKey.value);\n loading.value = false;\n };\n\n const selectTree = (treeNode: TreeNode | null, node: any) => {\n if (treeNode) {\n const formData = treeNode.data;\n form.value = {...formData};\n editTitle.value = formData.name;\n selectedNodes.value = node;\n treeSelectedKeys.value = treeNode.data.adOrgId;\n } else {\n cancelEdit();\n }\n };\n\n const addNew = () => {\n cancelEdit();\n treeSelectedKeys.value = null;\n nextTick(() => {\n orgCodeRef.value?.focus();\n });\n };\n\n const cancelEdit = () => {\n handleReset();\n };\n\n const handleReset = () => {\n treeSelectedKeys.value = null;\n form.value.adOrgId = '';\n form.value.active = 'Y';\n editTitle.value = '';\n formRef.value?.resetFields();\n };\n\n const submitEdit = () => {\n formRef.value?.validate((valid) => {\n if (valid) {\n submitLoading.value = true;\n const curForm = {\n value: form.value.value,\n name: form.value.name,\n adOrgtypeId: form.value.adOrgtypeId,\n parentId: form.value.parentId,\n description: form.value.description,\n active: form.value.active,\n adOrgId: form.value.adOrgId,\n mainPage: form.value.mainPage,\n };\n httpRequest\n .post('/orgController/submitOrg', curForm)\n .then((response: any) => {\n if (response.data.result) {\n ElMessage.success((form.value.adOrgId !== '' ? '修改' : '新增') + '成功');\n getAllList();\n handleReset();\n } else {\n ElMessage.error(response.data.msg);\n }\n })\n .catch((error) => {\n console.error('提交机构失败:', error);\n ElMessage.error('提交失败,请稍后重试');\n })\n .finally(() => {\n submitLoading.value = false;\n });\n }\n });\n };\n\n const expandTree = (expand: boolean) => {\n const nodes = treeRef.value?.root.store.nodesMap;\n if (nodes) {\n for (const nodesKey in nodes) {\n nodes[nodesKey].expanded = expand;\n }\n }\n };\n\n // ==================== 生命周期 ====================\n\n onMounted(() => {\n const height = document.documentElement.clientHeight;\n maxHeight.value = `${height - 106}px`;\n init();\n });\n</script>\n\n<style lang=\"scss\">\n .yh-org-manage {\n height: 100%;\n overflow: hidden;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n .operation {\n margin-bottom: 2vh;\n }\n .contenx {\n flex: 1;\n overflow: hidden;\n .yh-org-manage-right {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n .yh-orm-manage-tree {\n flex: 1;\n overflow: auto;\n }\n }\n }\n\n .select-title {\n font-weight: 600;\n color: #40a9ff;\n }\n\n .select-clear {\n margin-left: 10px;\n }\n :deep(.el-form-item__content) {\n .el-select {\n flex: 1;\n }\n }\n\n .tree-bar {\n overflow: auto;\n margin-top: 5px;\n position: relative;\n min-height: 80px;\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 4px;\n box-shadow: inset 0 0 2px #d1d1d1;\n background: #e4e4e4;\n }\n }\n }\n</style>\n"],"names":["showType","ref","loading","maxHeight","pOrgRefreshFlag","searchKey","editTitle","submitLoading","treeRef","formRef","orgCodeRef","treeProp","form","formValidate","data","allOrg","treeSelectedKeys","selectedNodes","init","getAllList","pOrgReload","nextTick","parseTreeData","curLevelData","curLevel","search","result","curLeve","newLevelData","httpRequest","response","error","ElMessage","selectTree","treeNode","node","formData","cancelEdit","addNew","_a","handleReset","submitEdit","valid","curForm","expandTree","expand","nodes","nodesKey","onMounted","height","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_component_el_row","_createElementVNode","_component_el_button","YhIcon","_component_el_col","_component_el_alert","_component_el_input","$event","_cache","_withDirectives","_hoisted_2","_component_el_tree","_component_el_form","_component_el_form_item","Dict","_createBlock","_component_el_switch"],"mappings":";;;;;;;;;AAwME,UAAMA,IAAWC,EAAI,MAAM,GACrBC,IAAUD,EAAI,EAAI,GAClBE,IAAYF,EAAI,OAAO,GACvBG,IAAkBH,EAAI,EAAI,GAC1BI,IAAYJ,EAAI,EAAE,GAClBK,IAAYL,EAAI,EAAE,GAClBM,IAAgBN,EAAI,EAAK,GAEzBO,IAAUP,EAAA,GACVQ,IAAUR,EAAA,GACVS,IAAaT,EAAA,GAEbU,IAAW;AAAA,MACf,OAAO;AAAA,IAAA,GAGHC,IAAOX,EAAa;AAAA,MACxB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,MACV,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,GAEKY,IAAmC;AAAA,MACvC,OAAO,CAAC,EAAC,UAAU,IAAM,SAAS,UAAU,SAAS,UAAS;AAAA,MAC9D,MAAM,CAAC,EAAC,UAAU,IAAM,SAAS,UAAU,SAAS,SAAA,CAAS;AAAA,IAAA,GAGzDC,IAAOb,EAAgB,EAAE,GACzBc,IAASd,EAAW,EAAE,GACtBe,IAAmBf,EAAmB,IAAI,GAC1CgB,IAAgBhB,EAAS,IAAI,GAE7BiB,IAAO,MAAM;AACjB,MAAAC,EAAA;AAAA,IACF,GAEMC,IAAa,MAAM;AACvB,MAAAhB,EAAgB,QAAQ,IACxBiB,EAAS,MAAM;AACb,QAAAjB,EAAgB,QAAQ;AAAA,MAC1B,CAAC;AAAA,IACH,GAEMkB,IAAgB,CAACC,GAAqBC,GAAkBC,MAAgC;AAC5F,YAAMC,IAAqB,CAAA;AAC3B,aAAAH,EAAa,QAAQ,CAACI,MAAY;AAChC,cAAMC,IAAyB;AAAA,UAC7B,MAAMD;AAAA,UACN,KAAK;AAAA,UACL,OAAO;AAAA,UACP,OAAOH;AAAA,QAAA;AAOT,QAJIG,EAAQ,WAAcA,EAAQ,QAAW,SAAS,MACpDC,EAAa,WAAWN,EAAcK,EAAQ,SAAYH,IAAW,GAAGC,CAAM,IAI9EA,EAAAA,MAAW,WACVG,EAAa,aAAa,UAAaA,EAAa,SAAS,WAAW,MACzED,EAAQ,KAAK,QAAQF,CAAM,MAAM,QAKnCG,EAAa,MAAMD,EAAQ,SAC3BC,EAAa,QAAQD,EAAQ,MAC7BD,EAAO,KAAKE,CAAY;AAAA,MAC1B,CAAC,GACMF;AAAA,IACT,GAEMP,IAAa,MAAM;AACvB,MAAAjB,EAAQ,QAAQ,IAChBkB,EAAA,GACAS,EACG,KAAK,6BAA6B,CAAA,CAAE,EACpC,KAAK,CAACC,MAAkB;AACvB,QAAIA,EAAS,KAAK,WAChBf,EAAO,QAAQe,EAAS,KAAK,SAC7BhB,EAAK,QAAQQ,EAAcP,EAAO,OAAO,CAAC;AAAA,MAE9C,CAAC,EACA,MAAM,CAACgB,MAAU;AAChB,gBAAQ,MAAM,aAAaA,CAAK,GAChCC,EAAU,MAAM,UAAU;AAAA,MAC5B,CAAC,EACA,QAAQ,MAAM;AACb,QAAA9B,EAAQ,QAAQ;AAAA,MAClB,CAAC;AAAA,IACL,GAEMuB,IAAS,MAAM;AACnB,MAAAvB,EAAQ,QAAQ,IAChBY,EAAK,QAAQQ,EAAcP,EAAO,OAAO,GAAGV,EAAU,KAAK,GAC3DH,EAAQ,QAAQ;AAAA,IAClB,GAEM+B,IAAa,CAACC,GAA2BC,MAAc;AAC3D,UAAID,GAAU;AACZ,cAAME,IAAWF,EAAS;AAC1B,QAAAtB,EAAK,QAAQ,EAAC,GAAGwB,EAAA,GACjB9B,EAAU,QAAQ8B,EAAS,MAC3BnB,EAAc,QAAQkB,GACtBnB,EAAiB,QAAQkB,EAAS,KAAK;AAAA,MACzC;AACE,QAAAG,EAAA;AAAA,IAEJ,GAEMC,IAAS,MAAM;AACnB,MAAAD,EAAA,GACArB,EAAiB,QAAQ,MACzBK,EAAS,MAAM;;AACb,SAAAkB,IAAA7B,EAAW,UAAX,QAAA6B,EAAkB;AAAA,MACpB,CAAC;AAAA,IACH,GAEMF,IAAa,MAAM;AACvB,MAAAG,EAAA;AAAA,IACF,GAEMA,IAAc,MAAM;;AACxB,MAAAxB,EAAiB,QAAQ,MACzBJ,EAAK,MAAM,UAAU,IACrBA,EAAK,MAAM,SAAS,KACpBN,EAAU,QAAQ,KAClBiC,IAAA9B,EAAQ,UAAR,QAAA8B,EAAe;AAAA,IACjB,GAEME,IAAa,MAAM;;AACvB,OAAAF,IAAA9B,EAAQ,UAAR,QAAA8B,EAAe,SAAS,CAACG,MAAU;AACjC,YAAIA,GAAO;AACT,UAAAnC,EAAc,QAAQ;AACtB,gBAAMoC,IAAU;AAAA,YACd,OAAO/B,EAAK,MAAM;AAAA,YAClB,MAAMA,EAAK,MAAM;AAAA,YACjB,aAAaA,EAAK,MAAM;AAAA,YACxB,UAAUA,EAAK,MAAM;AAAA,YACrB,aAAaA,EAAK,MAAM;AAAA,YACxB,QAAQA,EAAK,MAAM;AAAA,YACnB,SAASA,EAAK,MAAM;AAAA,YACpB,UAAUA,EAAK,MAAM;AAAA,UAAA;AAEvBiB,UAAAA,EACG,KAAK,4BAA4Bc,CAAO,EACxC,KAAK,CAACb,MAAkB;AACvB,YAAIA,EAAS,KAAK,UAChBE,EAAU,SAASpB,EAAK,MAAM,YAAY,KAAK,OAAO,QAAQ,IAAI,GAClEO,EAAA,GACAqB,EAAA,KAEAR,EAAU,MAAMF,EAAS,KAAK,GAAG;AAAA,UAErC,CAAC,EACA,MAAM,CAACC,MAAU;AAChB,oBAAQ,MAAM,WAAWA,CAAK,GAC9BC,EAAU,MAAM,YAAY;AAAA,UAC9B,CAAC,EACA,QAAQ,MAAM;AACb,YAAAzB,EAAc,QAAQ;AAAA,UACxB,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAEMqC,IAAa,CAACC,MAAoB;;AACtC,YAAMC,KAAQP,IAAA/B,EAAQ,UAAR,gBAAA+B,EAAe,KAAK,MAAM;AACxC,UAAIO;AACF,mBAAWC,KAAYD;AACrB,UAAAA,EAAMC,CAAQ,EAAE,WAAWF;AAAA,IAGjC;AAIA,WAAAG,GAAU,MAAM;AACd,YAAMC,IAAS,SAAS,gBAAgB;AACxC,MAAA9C,EAAU,QAAQ,GAAG8C,IAAS,GAAG,MACjC/B,EAAA;AAAA,IACF,CAAC;;AAjYD,aAAAgC,EAAA,GAAAC,EAiKM,OAjKNC,IAiKM;AAAA,QAhKJC,EA+BSC,GAAA,EA/BD,OAAM,eAAW;AAAA,qBACvB,MA6BM;AAAA,YA7BNC,EA6BM,OAAA,MAAA;AAAA,cA5BJF,EAMYG,GAAA,EANA,SAAOlB,KAAM;AAAA,2BACvB,MAGuB;AAAA,kBAHvBe,EAGuBI,GAAA;AAAA,oBAFrB,YAAW;AAAA,oBACX,QAAO;AAAA,oBACP,MAAK;AAAA,kBAAA;sCAAgB,QAEzB,EAAA;AAAA,gBAAA;;;cACAJ,EAMYG,GAAA;AAAA,gBANA,gCAAOZ,EAAU,EAAA;AAAA,cAAA;2BAC3B,MAG+B;AAAA,kBAH/BS,EAG+BI,GAAA;AAAA,oBAF7B,YAAW;AAAA,oBACX,QAAO;AAAA,oBACP,MAAK;AAAA,kBAAA;sCAAwB,QAEjC,EAAA;AAAA,gBAAA;;;cACAJ,EAMYG,GAAA;AAAA,gBANA,gCAAOZ,EAAU,EAAA;AAAA,cAAA;2BAC3B,MAGuC;AAAA,kBAHvCS,EAGuCI,GAAA;AAAA,oBAFrC,YAAW;AAAA,oBACX,QAAO;AAAA,oBACP,MAAK;AAAA,kBAAA;sCAAgC,QAEzC,EAAA;AAAA,gBAAA;;;cACAJ,EAMYG,GAAA,EANA,SAAOrC,KAAU;AAAA,2BAC3B,MAG0B;AAAA,kBAH1BkC,EAG0BI,GAAA;AAAA,oBAFxB,YAAW;AAAA,oBACX,QAAO;AAAA,oBACP,MAAK;AAAA,kBAAA;sCAAmB,QAE5B,EAAA;AAAA,gBAAA;;;;;;;UAGJJ,EA+HSC,GAAA;AAAA,UA9HP,OAAM;AAAA,UACN,MAAK;AAAA,UACL,SAAQ;AAAA,UACP,QAAQ;AAAA,QAAA;qBAET,MAiCS;AAAA,YAjCTD,EAiCSK,GAAA;AAAA,cAhCP,OAAM;AAAA,cACL,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,YAAA;yBACL,MAIyC;AAAA,gBAJzCL,EAIyCM,GAAA;AAAA,kBAHvC,aAAA;AAAA,kBACC,kBAAkBrD,EAAA,KAAS;AAAA,kBAC3B,UAAU;AAAA,kBACX,OAAA,EAAA,iBAAA,OAAA;AAAA,gBAAA;gBACF+C,EAQWO,GAAA;AAAA,8BAPAvD,EAAA;AAAA,gEAAAA,EAAS,QAAAwD;AAAA,kBACjB,UAAQpC;AAAA,kBACT,aAAY;AAAA,kBACZ,WAAA;AAAA,gBAAA;kBACW,WACT,MAAoC,CAAA,GAAAqC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAApCP,EAAoC,KAAA,EAAjC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,kBAAA;;;gBAGnCQ,GAAAb,EAAA,GAAAC,EAYM,OAZNa,IAYM;AAAA,kBATJX,EAQyCY,GAAA;AAAA,6BAPnC;AAAA,oBAAJ,KAAIzD;AAAA,oBACH,MAAMM,EAAA;AAAA,oBACN,OAAOH;AAAA,oBACR,YAAS;AAAA,oBACT,sBAAA;AAAA,oBACC,wBAAsB;AAAA,oBACtB,oBAAkBK,EAAA;AAAA,oBAClB,iBAAgBiB;AAAA,kBAAA;;uBATR/B,EAAA,KAAO;AAAA,gBAAA;;;;YAYtBmD,EAsFSK,GAAA;AAAA,cArFN,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,YAAA;yBACL,MAgFU;AAAA,gBAhFVL,EAgFUa,GAAA;AAAA,2BA/EJ;AAAA,kBAAJ,KAAIzD;AAAA,kBACH,OAAOG,EAAA;AAAA,kBACP,OAAOC;AAAA,kBACR,eAAY;AAAA,gBAAA;6BACZ,MAMe;AAAA,oBANfwC,EAMec,GAAA;AAAA,sBALb,OAAM;AAAA,sBACN,MAAK;AAAA,oBAAA;iCACL,MAEqB;AAAA,wBAFrBd,EAEqBO,GAAA;AAAA,0BADV,YAAAhD,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,QAAKiD;AAAA,mCACf;AAAA,0BAAJ,KAAInD;AAAA,wBAAA;;;;oBAER2C,EAIec,GAAA;AAAA,sBAHb,OAAM;AAAA,sBACN,MAAK;AAAA,oBAAA;iCACL,MAAgC;AAAA,wBAAhCd,EAAgCO,GAAA;AAAA,0BAAb,YAAAhD,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,OAAIiD;AAAA,wBAAA;;;;oBAE9BR,EAWec,GAAA;AAAA,sBAVb,OAAM;AAAA,sBACN,MAAK;AAAA,oBAAA;iCACL,MAOc;AAAA,wBAPdd,EAOce,GAAA;AAAA,0BANZ,MAAK;AAAA,0BACL,KAAI;AAAA,0BACJ,YAAW;AAAA,0BACF,YAAAxD,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,cAAWiD;AAAA,0BACzB,aAAY;AAAA,0BACZ,YAAA;AAAA,0BACA,WAAA;AAAA,wBAAA;;;;oBAKIzD,EAAA,cAHRiE,GAWeF,GAAA;AAAA;sBAVb,OAAM;AAAA,sBACN,MAAK;AAAA,oBAAA;iCAEL,MAMc;AAAA,wBANdd,EAMce,GAAA;AAAA,0BALZ,MAAK;AAAA,0BACL,KAAI;AAAA,0BACK,YAAAxD,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,WAAQiD;AAAA,0BACtB,aAAY;AAAA,0BACZ,YAAA;AAAA,0BACA,WAAA;AAAA,wBAAA;;;;oBAEJR,EAIec,GAAA;AAAA,sBAHb,OAAM;AAAA,sBACN,MAAK;AAAA,oBAAA;iCACL,MAAoC;AAAA,wBAApCd,EAAoCO,GAAA;AAAA,0BAAjB,YAAAhD,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,WAAQiD;AAAA,wBAAA;;;;oBAElCR,EAMec,GAAA;AAAA,sBALb,OAAM;AAAA,sBACN,MAAK;AAAA,oBAAA;iCACL,MAEoB;AAAA,wBAFpBd,EAEoBO,GAAA;AAAA,0BADT,YAAAhD,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,cAAWiD;AAAA,0BACzB,MAAK;AAAA,wBAAA;;;;oBAETR,EAKec,GAAA,EALD,OAAM,UAAM;AAAA,iCACxB,MAGuB;AAAA,wBAHvBd,EAGuBiB,GAAA;AAAA,0BAFZ,YAAA1D,EAAA,MAAK;AAAA,0BAAL,uBAAAkD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAAjD,EAAA,MAAK,SAAMiD;AAAA,0BACpB,gBAAa;AAAA,0BACb,kBAAe;AAAA,wBAAA;;;;oBAEnBR,EAoBec,GAAA,MAAA;AAAA,iCAnBb,MAQY;AAAA,wBARZd,EAQYG,GAAA;AAAA,0BAPV,OAAA,EAAA,gBAAA,MAAA;AAAA,0BACC,SAAOf;AAAA,0BACP,SAASlC,EAAA;AAAA,0BACT,UAAUK,EAAA,MAAK,YAAO;AAAA,0BACvB,MAAK;AAAA,wBAAA;qCACL,MAAkC,CAAA,GAAAkD,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,4BAAlCP,EAAkC,KAAA,EAA/B,OAAM,qBAAA,GAAoB,MAAA,EAAA;AAAA,8BAAK,UAEpC,EAAA;AAAA,0BAAA;;;wBACAF,EAQYG,GAAA;AAAA,0BAPV,OAAA,EAAA,gBAAA,MAAA;AAAA,0BACC,SAAOf;AAAA,0BACP,SAASlC,EAAA;AAAA,0BACT,UAAUK,EAAA,MAAK,YAAO;AAAA,0BACvB,MAAK;AAAA,wBAAA;qCACL,MAAkC,CAAA,GAAAkD,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,4BAAlCP,EAAkC,KAAA,EAA/B,OAAM,qBAAA,GAAoB,MAAA,EAAA;AAAA,8BAAK,UAEpC,EAAA;AAAA,0BAAA;;;wBACAF,EAA8CG,GAAA,EAAlC,SAAOhB,KAAW;AAAA,qCAAE,MAAE,CAAA,GAAAsB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,8BAAF,MAAE,EAAA;AAAA,0BAAA;;;;;;;;;;;;;;;eAtHhC9D,EAAA,UAAQ,MAAA;AAAA,QAAA;;;;;"}