AGILE TEAM
Skip to content

jh-radio-group - 单选框组组件

平台统一的单选框组组件,支持静态选项、字典/接口数据源、按钮/边框风格,适用于性别、类型、状态等单选场景

📝 作者
朱祥
朱祥·025877
研究院
谢飞
谢飞·026789
信息化中心

📦 组件位置

来源:@jhlc/common-core

ts
import "@jhlc/common-core";

组件已全局注册,可直接在模板中使用 <jh-radio-group />


基本用法

1️⃣ 静态选项(最常用)

vue
<template>
  <jh-radio-group
    v-model="form.gender"
    label="性别"
    datasource-type="static"
    :items="[
      { label: '男', value: 1 },
      { label: '女', value: 2 }
    ]"
  />
</template>

<script setup lang="ts">
import { ref } from "vue";

const form = ref({ gender: 1 });
</script>

2️⃣ 按钮风格

vue
<jh-radio-group v-model="form.status" label="状态" type="button" :items="statusItems" />

type="button" 渲染为按钮组样式,type="border" 为带边框样式。


3️⃣ 接口数据源

vue
<jh-radio-group
  v-model="form.typeId"
  label="类型"
  datasource-type="interface"
  :_options-ds-id="dsId"
  :_options-value-attr="['id']"
  :_options-label-attr="['name']"
/>

接口数据源通过 _optionsDsId 等以 _options 开头的属性配置。


Props 属性

基础属性

参数说明类型默认值
label标题名称string单选框组
showColon冒号,标题与输入框之间加英文冒号booleantrue
prop字段属性,用于表单校验,确定是哪个字段,选择字段后自动会设置数据绑定Array-
modelValue / v-model数据绑定number | string | boolean-
type显示样式string-
tip描述性文案string-
defaultValue默认值string-
status状态stringdefault
size尺寸stringdefault
labelWidth标签宽度,styleY样式,比如500px,100%,默认450pxstring-
maxWidth最大宽度,styleY样式,比如500px,100%,默认450pxstring450px
viewer阅读模式,阅读模式将输入框渲染为spanbooleanfalse
labelClass标签样式Array[]
appendText后缀string-
ctrlHidden控件隐藏string-

数据配置

参数说明类型默认值
dataType数据类型stringnumber
datasourceType数据来源stringstatic
items选项Array-
_optionsDsId查询接口string-
_optionsDataAttr数据属性Array | string[""]
_optionsValueAttr值属性Array | string[""]
_optionsValueExpr值表达式Function-
_optionsLabelAttr标签属性Array | string[""]
_optionsLabelExpr标签表达式Function-
_fixQueryParam固定查询参数object{}
fetchDataCb数据获取回调Function-
_optionsQuery接口查询参数Array[]
_optionsQueryAttr查询参数字段Array-

⚠️ 禁用/只读用 status"disabled" / "readonly"),不是 disabled。 ⚠️ 选项数据源:静态用 datasource-type="static" + items;接口用 datasource-type="interface" + _options* 系列属性。


Events 事件

事件名说明回调参数
update:modelValuev-model 更新时触发(value: number | string | boolean) => void

仅声明 update:modelValue,无 change 事件。值变化请用 v-model@update:model-value


常见场景

场景 1:性别单选(静态)

vue
<jh-radio-group
  v-model="form.gender"
  label="性别"
  datasource-type="static"
  :items="[{ label: '男', value: 1 }, { label: '女', value: 2 }]"
/>

场景 2:状态按钮组

vue
<jh-radio-group v-model="form.status" label="状态" type="button" :items="statusItems" />

场景 3:只读查看

vue
<jh-radio-group v-model="form.type" label="类型" status="readonly" :items="typeItems" />

注意事项

  1. 状态用 status,无 disabled

    • status="disabled" 禁用,status="readonly" 只读,统一用 status
  2. 值变化只通过 v-model

    • 组件仅声明 update:modelValue,没有独立 change 事件
  3. 数据源两种模式

    • 静态:datasource-type="static" + items{ label, value }
    • 接口:datasource-type="interface" + _optionsDsId + _optionsValueAttr/_optionsLabelAttr
  4. label 默认带冒号

    • showColon 默认 true,不需冒号传 :show-colon="false"
  5. 绑定值类型用 dataType 控制

    • "string" / "number",影响 v-model 的值类型

推荐作为平台统一的单选组件使用!

You may not distribute, modify, or sell this software without permission.