fix(plugins): 修复 Cookie 管理子页面表格不显示与侧栏异常
根因:admin_power 菜单表中「登录用户」「登录网站」两个叶子菜单的 open_type 为 NULL,被渲染成 menu-open-type="null",点击时 Pear Admin 不会以 iframe 方式把页面加载进内容区——表格永远不显示,且页面被弹到 独立窗口,表现为"侧栏父菜单点不开子菜单"。其它页面型菜单的 open_type 均为 _iframe。 处理: - 新增迁移 b2c3d4e5f6a7,将这两行 open_type 修正为 _iframe(按 url 幂等匹配) - 清理 cookie_user/main.html 中被外部工具注入的 data-page-node-id 噪声属性 验证:本地起服务 + Playwright 登录后点击菜单项,确认内容区生成 iframe、 表格正常渲染(含工具栏、默认工具栏刷新/筛选/打印/导出、新增按钮,空表显示 "暂无登录用户"),且 cookie 页打开时侧栏父菜单仍能展开子菜单。
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
"""fix cookie menu open_type to _iframe
|
||||
|
||||
Cookie 管理下的「登录用户」/「登录网站」菜单项在 admin_power 表中
|
||||
open_type 为 NULL,导致点击时没有被以 iframe 方式加载进内容区,
|
||||
表格无法显示、页面被弹到独立窗口(表现为侧栏父菜单点不开子菜单)。
|
||||
修正为 _iframe 与框架其它页面保持一致。
|
||||
|
||||
Revision ID: b2c3d4e5f6a7
|
||||
Revises: 1230ff234df9
|
||||
"""
|
||||
from alembic import op
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b2c3d4e5f6a7'
|
||||
down_revision = '1230ff234df9'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.execute(
|
||||
"UPDATE admin_power SET open_type='_iframe' "
|
||||
"WHERE url IN ('/system/cookie-user/', '/system/cookie-site/') "
|
||||
"AND (open_type IS NULL OR open_type='')"
|
||||
)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.execute(
|
||||
"UPDATE admin_power SET open_type=NULL "
|
||||
"WHERE url IN ('/system/cookie-user/', '/system/cookie-site/')"
|
||||
)
|
||||
@@ -1,37 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html data-page-node-id="nQ3ITuR4zDwbCF6p13JV3O">
|
||||
<head data-page-node-id="362DYrCMG2OfSNeB1CrBUI">
|
||||
<html>
|
||||
<head>
|
||||
<title>登录用户</title>
|
||||
{% include 'system/common/header.html' %}
|
||||
</head>
|
||||
<body class="pear-container" data-page-node-id="vuCo8sukVr7NEXTFDw4ukr">
|
||||
<body class="pear-container">
|
||||
{# 查询表单 #}
|
||||
<div class="layui-card" data-page-node-id="FkafykRVcgd3J5QM701u9m">
|
||||
<div class="layui-card-body" data-page-node-id="NhR1BdkceCvxnNalFio2Ex">
|
||||
<form class="layui-form" action="" lay-filter="cookie-user-query-form" data-page-node-id="oOeYUkHNWDWhgZEgAB4orE">
|
||||
<div class="layui-form-item" style="margin-bottom: unset;" data-page-node-id="AFgBQnMe9yarnPTWhBcIRK">
|
||||
<label class="layui-form-label" data-page-node-id="Xb4iWfiiqhbNRHdWjbAb3E">用户名</label>
|
||||
<div class="layui-input-inline" data-page-node-id="DK3ArwBhRytS3ngGklfh7w">
|
||||
<input type="text" name="username" placeholder="" class="layui-input" data-page-node-id="ZYzp5udhYsqFTnA2wE5M6p">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="" lay-filter="cookie-user-query-form">
|
||||
<div class="layui-form-item" style="margin-bottom: unset;">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="username" placeholder="" class="layui-input">
|
||||
</div>
|
||||
<label class="layui-form-label" data-page-node-id="NUTFOHrZgMUAxAO1WOUQrG">网站名称</label>
|
||||
<div class="layui-input-inline" data-page-node-id="ZxghmnDL6c3yHIPdtHWowq">
|
||||
<input type="text" name="website_name" placeholder="" class="layui-input" data-page-node-id="dL40ElcUT6mf0xTBmYe1z1">
|
||||
<label class="layui-form-label">网站名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="website_name" placeholder="" class="layui-input">
|
||||
</div>
|
||||
<label class="layui-form-label" data-page-node-id="B2wAnrFYnJdiJEqiObxY8H">状态</label>
|
||||
<div class="layui-input-inline" data-page-node-id="5Hbez5BZiHn8ex8StE3jeo">
|
||||
<select name="enable" data-page-node-id="fXvV5XXzpzdWODebmoYuiK">
|
||||
<option value="" data-page-node-id="w2RiYtN3dpyd04Q2GdFhhY">全部</option>
|
||||
<option value="1" data-page-node-id="GZOFDvlu334UlLr94jv5fF">启用</option>
|
||||
<option value="0" data-page-node-id="HHiccr1lHku4DZEQBvSNqE">禁用</option>
|
||||
<label class="layui-form-label">状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="enable">
|
||||
<option value="">全部</option>
|
||||
<option value="1">启用</option>
|
||||
<option value="0">禁用</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-md" lay-submit lay-filter="cookie-user-query" data-page-node-id="gNH72uHn51mmqnHJ2Ja7wz">
|
||||
<i class="layui-icon layui-icon-search" data-page-node-id="eCxLvl4XjRfJxK3uUmhrm0"></i>
|
||||
<button class="layui-btn layui-btn-md" lay-submit lay-filter="cookie-user-query">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
查询
|
||||
</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary layui-btn-md" data-page-node-id="545NTjMd1cnk4zmGYh6FP1">
|
||||
<i class="layui-icon layui-icon-refresh" data-page-node-id="T1uDenvLCistNzsdmC718A"></i>
|
||||
<button type="reset" class="layui-btn layui-btn-primary layui-btn-md">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
@@ -39,9 +39,9 @@
|
||||
</div>
|
||||
</div>
|
||||
{# 用户表格 #}
|
||||
<div class="layui-card" data-page-node-id="LYGYvZo2bjHlAZyxZn4EVj">
|
||||
<div class="layui-card-body" data-page-node-id="5SmK9lErPfo0dBsQ2Xj9lC">
|
||||
<table id="cookie-user-table" lay-filter="cookie-user-table" data-page-node-id="7NfVW6oi3HIO1OO5GIbzZB"></table>
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="cookie-user-table" lay-filter="cookie-user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user