Compare commits

...

11 Commits

Author SHA1 Message Date
疯狂的狮子Li b000788785
!222 发布 5.4.1-2.4.1 小步迭代修复问题
Merge pull request !222 from 疯狂的狮子Li/dev
2025-07-01 01:13:49 +00:00
疯狂的狮子Li 62f7d393f3 🐳🐳🐳发布 5.4.1-2.4.1 小步迭代修复问题 2025-07-01 09:11:36 +08:00
疯狂的狮子Li 31037db627 update 优化 访问流程图页面缓存问题 参数增加时间戳 临时解决 2025-06-27 16:38:56 +08:00
疯狂的狮子Li 4e0d946676 update 优化 删除后端不存在的搜索条件 2025-06-27 16:25:14 +08:00
疯狂的狮子Li 71dceeacc2 update 优化 删除展开折叠按钮 菜单数据量大的清空下 展开会导致页面卡顿问题(在懒加载数据的清空下这个功能不推荐使用了) 2025-06-24 11:08:10 +08:00
疯狂的狮子Li d59259737f
!219 fix 修复菜单改为懒加载后,修改数据没有刷新的问题
Merge pull request !219 from Lau/dev
2025-06-24 02:14:01 +00:00
lau 8afe7c3931 fix: 修复菜单改为懒加载后,修改数据没有刷新的问题 2025-06-24 09:25:13 +08:00
疯狂的狮子Li d59738b473
!217 update: 优化菜单页面渲染方式避免长时间卡住
Merge pull request !217 from Lau/dev
2025-06-23 08:55:19 +00:00
lau 2f35342782 fix: 修复菜单管理改为懒加载后展开/折叠只能展开一级菜单的问题 2025-06-23 16:11:58 +08:00
lau 720c822bb3 update: 优化菜单页面渲染方式避免长时间卡住 2025-06-22 21:25:05 +08:00
疯狂的狮子Li 2dc094c1db
!212 发布 5.4.0-2.4.0 正式版
Merge pull request !212 from 疯狂的狮子Li/dev
2025-05-29 03:18:30 +00:00
5 changed files with 60 additions and 33 deletions

View File

@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package",
"name": "ruoyi-vue-plus",
"version": "5.4.0-2.4.0",
"version": "5.4.1-2.4.1",
"description": "RuoYi-Vue-Plus多租户管理系统",
"author": "LionLi",
"license": "MIT",

View File

@ -21,7 +21,7 @@ const iframeUrl = ref('');
const baseUrl = import.meta.env.VITE_APP_BASE_API;
onMounted(async () => {
const url = baseUrl + `/warm-flow-ui/index.html?id=${props.insId}&type=FlowChart`;
const url = baseUrl + `/warm-flow-ui/index.html?id=${props.insId}&type=FlowChart&t=${Date.now()}`;
iframeUrl.value = url + '&Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID;
});
</script>

View File

@ -4,15 +4,6 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="部门id" prop="deptId">
<el-input v-model="queryParams.deptId" placeholder="请输入部门id" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="用户id" prop="userId">
<el-input v-model="queryParams.userId" placeholder="请输入用户id" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="排序号" prop="orderNum">
<el-input v-model="queryParams.orderNum" placeholder="请输入排序号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="key键" prop="testKey">
<el-input v-model="queryParams.testKey" placeholder="请输入key键" clearable @keyup.enter="handleQuery" />
</el-form-item>

View File

@ -33,7 +33,7 @@
* 部署方式 Docker 容器编排 一键部署业务集群<br />
* 国际化 SpringMessage Spring标准国际化方案<br />
</p>
<p><b>当前版本:</b> <span>v5.4.0</span></p>
<p><b>当前版本:</b> <span>v5.4.1</span></p>
<p>
<el-tag type="danger">&yen;免费开源</el-tag>
</p>
@ -77,7 +77,7 @@
* 分布式监控 PrometheusGrafana 全方位性能监控<br />
* 其余与 Vue 版本一致<br />
</p>
<p><b>当前版本:</b> <span>v2.4.0</span></p>
<p><b>当前版本:</b> <span>v2.4.1</span></p>
<p>
<el-tag type="danger">&yen;免费开源</el-tag>
</p>

View File

@ -27,9 +27,6 @@
<el-col :span="1.5">
<el-button v-hasPermi="['system:menu:add']" type="primary" plain icon="Plus" @click="handleAdd()">新增 </el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" @click="handleCascadeDelete" :loading="deleteLoading">级联删除</el-button>
</el-col>
@ -44,7 +41,9 @@
row-key="menuId"
border
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
:default-expand-all="isExpandAll"
:default-expand-all="false"
lazy
:load="getChildrenList"
>
<el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="160"></el-table-column>
<el-table-column prop="icon" label="图标" align="center" width="100">
@ -299,10 +298,11 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { sys_show_hide, sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_show_hide', 'sys_normal_disable'));
const menuList = ref<MenuVO[]>([]);
const menuChildrenListMap = ref({});
const menuExpandMap = ref({});
const loading = ref(true);
const showSearch = ref(true);
const menuOptions = ref<MenuOptionsType[]>([]);
const isExpandAll = ref(false);
const dialog = reactive<DialogOption>({
visible: false,
@ -340,14 +340,62 @@ const data = reactive<PageData<MenuForm, MenuQuery>>({
const menuTableRef = ref<ElTableInstance>();
const { queryParams, form, rules } = toRefs<PageData<MenuForm, MenuQuery>>(data);
/** 获取子菜单列表 */
const getChildrenList = async (row: any, treeNode: unknown, resolve: (data: any[]) => void) => {
menuExpandMap.value[row.menuId] = { row, treeNode, resolve };
const children = menuChildrenListMap.value[row.menuId] || [];
//
if (children.length == 0) {
// fix:
menuTableRef.value?.updateKeyChildren(row.menuId, children);
}
resolve(children);
};
/** 刷新展开的菜单数据 */
const refreshLoadTree = (parentId: string | number) => {
if (menuExpandMap.value[parentId]) {
const { row, treeNode, resolve } = menuExpandMap.value[parentId];
if (row) {
getChildrenList(row, treeNode, resolve);
if (row.parentId) {
const grandpaMenu = menuExpandMap.value[row.parentId];
getChildrenList(grandpaMenu.row, grandpaMenu.treeNode, grandpaMenu.resolve);
}
}
}
};
/** 重新加载所有已展开的菜单的数据 */
const refreshAllExpandMenuData = () => {
for (const menuId in menuExpandMap.value) {
refreshLoadTree(menuId);
}
};
/** 查询菜单列表 */
const getList = async () => {
loading.value = true;
const res = await listMenu(queryParams.value);
const data = proxy?.handleTree<MenuVO>(res.data, 'menuId');
if (data) {
menuList.value = data;
const tempMap = {};
// :
for (const menu of res.data) {
const parentId = menu.parentId;
if (!tempMap[parentId]) {
tempMap[parentId] = [];
}
tempMap[parentId].push(menu);
}
//
for (const menu of res.data) {
menu['hasChildren'] = tempMap[menu.menuId]?.length > 0;
}
menuChildrenListMap.value = tempMap;
menuList.value = tempMap[0] || [];
//
refreshAllExpandMenuData();
loading.value = false;
};
/** 查询菜单下拉树结构 */
@ -386,18 +434,6 @@ const handleAdd = (row?: MenuVO) => {
dialog.visible = true;
dialog.title = '添加菜单';
};
/** 展开/折叠操作 */
const handleToggleExpandAll = () => {
isExpandAll.value = !isExpandAll.value;
toggleExpandAll(menuList.value, isExpandAll.value);
};
/** 展开/折叠所有 */
const toggleExpandAll = (data: MenuVO[], status: boolean) => {
data.forEach((item: MenuVO) => {
menuTableRef.value?.toggleRowExpansion(item, status);
if (item.children && item.children.length > 0) toggleExpandAll(item.children, status);
});
};
/** 修改按钮操作 */
const handleUpdate = async (row: MenuVO) => {
reset();