适用 web-admin/,与根规则同时生效。运行方式见 README。
@element-plus/icons-vue 图标显式导入。#10b981、深色 #059669、浅底 #ecfdf5。不得使用 #0a9f6d 作为 Web 主色。| 用途 | 源码 |
|---|---|
| 标准列表 | src/views/system/unit/index.vue |
| 复杂列表 | src/views/system/order/index.vue |
| 商品列表与详情 | src/views/system/product/index.vue、src/components/business/product-view-dialog/index.vue |
| 树形主数据 | src/views/system/category/index.vue |
| 用户 CRUD | src/views/system/user/index.vue |
| 工作台 | src/views/dashboard/console/index.vue |
panel-top 主标题使用 h2.title-bar-heading 与主色 ::before 竖条;需要竖条的标题完整登记到 src/App.vue 的 panelTitleBarTextRules,避免短正则误匹配。type="primary",禁止用 space-between 把按钮组推到行末。el-table-column 使用 min-width,不使用固定 width;操作列 fixed="right",min-width 不小于 260px。list-table、stripe,不要随意加 border;分页与表格同放在 list-body list-wrap,外层 pagination list-pager-bar,避免重复边框和标题。/。复用 src/utils/tree-path.ts。el-tag,表格 size="small",SystemViewDialog 使用 ViewField.tagType;禁止纯文本或自造 span 标签替代。SidebarSubmenu.vue 的 level === 0);WorkTab 只显示文字,meta.icon 仅用于侧栏。sort_order/orderNum,按业务明确需要添加。label-position="top";遮罩 backdrop-filter: none。dialog-form-layout,max-height: calc(100vh - 100px),只有 body 滚动;遵循全局定位和 align-center/ElConfigProvider,不在页面自行覆盖。form-grid-2,最多 5 列,窄屏减少列数;通栏 form-col-span-2 或 grid-column: 1 / -1。src/assets/styles/core/app.scss 中全局网格、sort-field、form-tip,禁止在 scoped 样式重复定义。网格内纵向间隔优先由 gap 控制。ProtocolFormDialog.vue 的 append-to-body、modal-class="protocol-dialog-mask";遵守全局遮罩定位。.form-label-tip(12px,--mint-text-muted),不放在输入控件旁。el-button 必须有前置 el-icon;取消/确定使用 Close/Check,图文间距 6px。scroll-to-error、scroll-into-view-options 与错误提示。#a7f3d0 虚线边框卡片,作为同一 flex 行的首项,与附件卡片并排;选择即通过 fetchUploadAttachment 上传;卡片支持预览/下载/删除,提示放行下。src/views/cell-storage/protocol/ProtocolFormDialog.vue“协议附件”和 UI OpenSpec 为准,保留其交互规则。package.json 中构建和检查命令;只对改动范围格式化,不运行全仓库自动修复来掩盖差异。public/tinymce/、SOP 静态资源和参考页不能仅因源于第三方或 Demo 就删除;clean:dev 当前仅输出维护提示。