优化平台角色菜单分配控件宽度
This commit is contained in:
41
docs/操作日志_平台角色菜单分配宽度优化_20260817.md
Normal file
41
docs/操作日志_平台角色菜单分配宽度优化_20260817.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 平台角色菜单分配宽度优化操作日志
|
||||
|
||||
操作时间:2026-08-17
|
||||
操作类型:修改
|
||||
影响模块:平台总后台 / 平台管理 / 平台角色 / 分配菜单
|
||||
|
||||
## 操作前状态
|
||||
|
||||
- 业务动作弹窗中的关系多选容器没有明确宽度。
|
||||
- 菜单权限选择器按内容宽度收缩,下拉项中的中文菜单名称只能显示单个字。
|
||||
|
||||
## 具体操作
|
||||
|
||||
1. 关系控件容器增加 `width: 100%` 和 `min-width: 0`。
|
||||
2. 关系选择器统一占满容器,下拉面板跟随正常触发器宽度。
|
||||
3. 增加静态契约检查,防止全宽样式被误删。
|
||||
|
||||
## 操作后状态
|
||||
|
||||
- “分配菜单”的多选控件占满弹窗表单区域。
|
||||
- 菜单名称可按正常横向空间展示,搜索、多选和清空行为保持不变。
|
||||
- 其他单选、多选关系字段同步获得稳定的容器宽度。
|
||||
|
||||
## 代码变更
|
||||
|
||||
- `frontend/platform_admin/src/views/resource/ResourceFieldForm.vue`:修正关系选择控件宽度。
|
||||
- `frontend/platform_admin/scripts/check-resource-display-contracts.mjs`:增加多选关系全宽契约。
|
||||
- `docs/项目文档_平台资源中文展示统一_v1.0.md`:记录 v1.22 变更。
|
||||
|
||||
## 验证结果
|
||||
|
||||
- `pnpm resource-display-contracts:check`:通过。
|
||||
- `pnpm contract:check`:通过,48 个资源契约正常。
|
||||
- `pnpm type:check`:通过。
|
||||
- `pnpm build`:通过。
|
||||
- Biome 针对变更文件检查退出码为 0;Vue 模板引用被报为现有未使用警告,本次未引入新的格式或语法错误。
|
||||
|
||||
## 风险评估
|
||||
|
||||
- 仅调整前端关系选择器布局,不修改接口、菜单分配数据或权限校验。
|
||||
- 小屏页面继续使用原有响应式单列布局。
|
||||
@@ -84,3 +84,4 @@ frontend/platform_admin/
|
||||
- v1.19:客服工单详情的气站、配送点和处理人员统一展示关系名称;未分派、未开始、未完成及未提交结果等空值改用明确业务状态,不再显示裸 `-`。
|
||||
- v1.20:平台账户接口补回真实创建时间和更新时间;root 未填写联系电话时显示“未填写”,不生成虚假号码。
|
||||
- v1.21:编辑 root 平台账户时保留 root 角色只读展示,但更新请求不再提交受保护角色;普通账户角色编辑能力保持不变。
|
||||
- v1.22:菜单分配等多选关系控件统一占满表单内容区,中文菜单名称和已选项不再被压缩为单字列。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 功能描述:校验平台48类资源均具备中文展示字段,并防止列表、详情退回数据库ID或动态英文列。
|
||||
* 版本:v1.3.0
|
||||
* 版本:v1.3.1
|
||||
*/
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
@@ -27,6 +27,7 @@ const listPage = read('src/views/shared/CrudListPage.vue');
|
||||
const listFieldDisplay = read('src/views/shared/resource-list-field-display.ts');
|
||||
const treePage = read('src/views/shared/TreePage.vue');
|
||||
const identityText = read('src/components/IdentityText.vue');
|
||||
const resourceFieldForm = read('src/views/resource/ResourceFieldForm.vue');
|
||||
|
||||
const resourceNames = [...resources.matchAll(/\bdefine\('([^']+)'/g)].map(
|
||||
(match) => match[1],
|
||||
@@ -389,6 +390,17 @@ assertIncludes(
|
||||
"f('phone', { emptyText: '未填写' })",
|
||||
'平台账户联系电话为空时必须显示业务文案',
|
||||
);
|
||||
for (const menuRelationLayoutContract of [
|
||||
'.relation-control {',
|
||||
'width: 100%;',
|
||||
'.relation-control :deep(.arco-select)',
|
||||
]) {
|
||||
assertIncludes(
|
||||
resourceFieldForm,
|
||||
menuRelationLayoutContract,
|
||||
`菜单权限等多选关系控件缺少全宽布局契约:${menuRelationLayoutContract}`,
|
||||
);
|
||||
}
|
||||
for (const rootAccountContract of [
|
||||
"String(row.platform_role_code ?? '') === 'root'",
|
||||
"visibleKeys.add('platform_role_code')",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--
|
||||
功能:渲染标准资源的新建、编辑和业务动作字段控件。
|
||||
版本:v1.4.0
|
||||
版本:v1.4.1
|
||||
-->
|
||||
<template>
|
||||
<div class="field-grid">
|
||||
@@ -325,8 +325,15 @@ function selectOptions(field: ResourceField) {
|
||||
}
|
||||
.relation-control {
|
||||
display: grid;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
gap: 6px;
|
||||
}
|
||||
/* 关系选择器必须占满表单内容区,避免菜单等长名称被压成单字列。 */
|
||||
.relation-control :deep(.arco-select) {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
.relation-empty {
|
||||
display: grid;
|
||||
justify-items: center;
|
||||
|
||||
Reference in New Issue
Block a user