优化平台角色菜单分配控件宽度

This commit is contained in:
czl231
2026-08-17 20:40:56 +08:00
parent 19dc5713d7
commit c7449cb38d
4 changed files with 63 additions and 2 deletions

View 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 针对变更文件检查退出码为 0Vue 模板引用被报为现有未使用警告,本次未引入新的格式或语法错误。
## 风险评估
- 仅调整前端关系选择器布局,不修改接口、菜单分配数据或权限校验。
- 小屏页面继续使用原有响应式单列布局。

View File

@@ -84,3 +84,4 @@ frontend/platform_admin/
- v1.19:客服工单详情的气站、配送点和处理人员统一展示关系名称;未分派、未开始、未完成及未提交结果等空值改用明确业务状态,不再显示裸 `-`
- v1.20平台账户接口补回真实创建时间和更新时间root 未填写联系电话时显示“未填写”,不生成虚假号码。
- v1.21:编辑 root 平台账户时保留 root 角色只读展示,但更新请求不再提交受保护角色;普通账户角色编辑能力保持不变。
- v1.22:菜单分配等多选关系控件统一占满表单内容区,中文菜单名称和已选项不再被压缩为单字列。

View File

@@ -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')",

View File

@@ -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;