newlifex/newlife.cube/cube-lov
Claude Code and agent skill by newlifex/newlife.cube
- community
Checking that the SKILL.md file is still in the repository.
LOV(List of Values)值集系统使用指南。涵盖后端配置、前端组件、API 封装、枚举自动注册全链路。当用户说"配置值集"、"使用LovSelect"、"添加LOV"、"值集选择"、"枚举下拉"、"使用LOV"时使用。
Install
npx vskill@latest install newlifex/newlife.cube/cube-lovSKILL.md
cube-lov
Cube LOV(List of Values)值集系统使用指南。值集用于统一管理枚举型和列表型下拉选项,贯穿后端定义 → 前端渲染 → 列翻译全链路。
⚠️ 架构变更(2026-09-05):值集已全面代码优先,下述旧机制已移除,请以本文为准并忽略残留旧描述(LovDefinition 表、LovAutoRegisterService、AddCubeLov/UseCubeLov、BatchLabel 均已删除):- 代码枚举(Enum.{FullName})与[LovList](List.*)列表型值集由后端Meta/ListData运行时反射直读(LovRegistry进程内索引),不落库、无需启动注册/AddCubeLov- 仅后台手工创建的"名值定义"存Parameter(LovStore,Category=Lov.Def等,Name=LovCode),值集管理页平时为空-ILovListDataProxy默认由魔方AddCube注册;前端只依赖Meta/ListData契约,不受影响
核心原则
- 值集码只出现在后端:前端通过 meta 元数据「发现」lovCode,不硬编码
- 枚举自动注册:启动时扫描配置的命名空间,自动注册所有 C# 枚举为值集
- 两种类型:ENUM(枚举型,options 内联)和 LIST(列表型,代理查询)
- 完全限定名:LovCode 格式
Enum.{FullNamespace}.{EnumName},如Enum.SmartMES.Data.ProcessCard.ProcessCardStatus - 代理 vs 直连:LIST 型值集可取数自两种方式。
proxyRequest=true时由后端/Admin/Lov/ListData经ILovListDataProxy代理转发外部数据源(隐藏真实地址、规避跨域);proxyRequest=false(默认)时前端直接请求requestUrl。当requestUrl以/开头(同源同应用接口,如角色列表)时,前端强制直连、禁止代理。
架构概览
配置步骤
第一步:启用枚举自动注册
在 Program.cs 配置枚举扫描命名空间:
启动时自动扫描指定命名空间下的所有 public enum,生成 LovCode = Enum.{FullNamespace}.{EnumName},并同步枚举值到 LovEnumItem 表。
日志输出示例:
第二步:在 Controller 中为字段配置 LovCode
在静态构造器中,为需要值集渲染的字段设置 LovCode:
typeof(TEnum).FullName会自动生成完全限定名如SmartMES.Data.ProcessCard.ProcessCardStatus,最终 LovCode =Enum.SmartMES.Data.ProcessCard.ProcessCardStatus。
第三步:前端使用 LovSelect 组件
方式 A:直接使用(已知 lovCode 的页面)
方式 B:通过 meta 元数据驱动(推荐的「不硬编码」方式)
第四步:列表型值集用 [LovList] 特性自动注册
除手动在后台配置 LIST 型值集外,可直接在控制器 Action 上标注 [LovList] 特性,让 LovAutoRegisterService 在启动初始化枚举时一并自动注册列表型值集(Type=LIST, Source=AUTO,含数据源配置、表格列、搜索字段)。
约定:
LovCode必须以List.开头;Source=AUTO的值集启动时自动同步,手工管理(MANUAL)的不覆盖。Columns格式"Field:Title:Width:Align"(Width/Align 可省略);SearchFields格式"Field:Title:ComponentType:ParamType:Required"(Required 可省略)。RequestUrl指向同应用接口(以/开头)时,ProxyRequest应为false,前端直连、不暴露也无需后端代理。- 字段侧与普通 LIST 值集完全一致:设置
LovCode = "List.CubeDemo.Role"即可。
后端 LovController API
所有 API 由 Cube 框架的 LovController 提供,路由前缀 /Admin/Lov/。
| 接口 | 方法 | 地址 | 用途 | |
|---|---|---|---|---|
| Meta | GET | /Admin/Lov/Meta?lovCode=xxx | 获取值集元数据 | |
| ListData | POST | /Admin/Lov/ListData | 列表型值集代理查询 | |
| BatchLabel | POST | /Admin/Lov/BatchLabel | 批量值翻译 |
Meta 响应结构
ListData 请求/响应
ListData 仅用于代理请求(proxyRequest=true)。前端直连(proxyRequest=false 或 requestUrl 以 / 开头)时不会调用此接口,而是由 fetchLovListDataDirect() 直接请求 requestUrl。
代理转发逻辑封装在ILovListDataProxy接口,默认实现DefaultLovListDataProxy以IHttpClientFactory发起 GET/POST 请求,支持分页参数、固定参数(FixedParams)与DataPath/TotalPath路径解析。使用者可通过services.AddCubeLov(...)注册自定义ILovListDataProxy实现来替换默认转发行为。
BatchLabel 请求/响应
前端类型定义
完整类型定义位于 @newlifex/cube-vue/core/types/lov.ts:
前端 API 封装
位于 @newlifex/cube-vue/core/utils/lov-api.ts:
组件 Props
LovSelect
| Prop | 类型 | 默认值 | 说明 | |||
|---|---|---|---|---|---|---|
code | string | — | 值集编码(必填) | |||
modelValue | `string \ | number` | — | v-model 值 | ||
placeholder | string | '请选择' | 占位文本 | |||
clearable | boolean | true | 是否可清除 | |||
disabled | boolean | false | 是否禁用 | |||
size | `'large'\ | 'default'\ | 'small'` | — | 尺寸 |
LovSelectTable(弹窗)
| Prop | 类型 | 说明 | ||
|---|---|---|---|---|
dialogVisible | boolean | 弹窗显示状态(v-model) | ||
lovCode | string | 值集编码 | ||
lovMeta | `LovListMeta \ | null` | 列表型元数据 | |
inlineEnums | Record<string, LovEnumOption[]> | 内联枚举 | ||
translateCache | Map<string, string> | 翻译缓存 |
数据模型
| 表 | 说明 | 关键字段 | |
|---|---|---|---|
LovDefinition | 值集定义 | LovCode(200), Name, Type(ENUM/LIST), ValueField, LabelField, Source(AUTO/MANUAL), Enabled | |
LovEnumItem | 枚举值 | LovDefId, Value, Label, Sort, Enabled, Extra | |
LovListConfig | 列表数据源配置 | LovDefId, RequestUrl, Method, Pageable, DataPath, TotalPath, ProxyRequest, FixedParams | |
LovSearchField | 列表搜索字段 | LovDefId, Field, Title, ComponentType, RefLovCode(200) | |
LovTableColumn | 列表表格列 | LovDefId, Field, Title, Width, Align, Sortable, RefLovCode(200), FormatType |
常见场景
场景 1:枚举型值集(搜索栏状态下拉)
场景 2:枚举型值集(列表列翻译)
场景 3:列表型值集(选择用户/部门)
场景 4:通过 meta 元数据自动适配
场景 5:列表型值集 + [LovList] 特性 + 代理/直连
同应用接口(直连,推荐)
外部接口(代理)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingNewLife.Cube.Vue/skills/cube-lov/SKILL.md
Popularity
- Repository stars
- 629
- Repository forks
- 167
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/newlifex/newlife.cube/cube-lov)