当前位置: 首页 > news >正文

【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式

功能说明

基于JeecgBoot开源框架,JSwitch开关组件扩展,支持单个多选样式。

效果展示:

使用示例:

  {field: 'JSwitch',component: 'JSwitch',label: 'JSwitch',},{field: 'JSwitchCheckBox',component: 'JSwitch',label: 'JSwitchCheckBox',componentProps: { checkBox: true },},{field: 'JSwitchSelect',component: 'JSwitch',label: 'JSwitchSelect',componentProps: { query: true },},

JSwitch开关组件扩展源码:

<template><div :class="prefixCls"><!-- select author:wyh  --><a-selectv-if="query"v-model:value="state":options="selectOptions":disabled="disabled"style="width: 100%"v-bind="attrs"@change="onSelectChange"/><!-- checkbox author:wyh  --><a-checkbox v-else-if="checkBox" v-model:checked="checked" :disabled="disabled" v-bind="attrs" @change="onCheckBoxChange" /><!-- switch author:wyh  --><a-switch v-else v-model:checked="checked" :disabled="disabled" v-bind="attrs" @change="onSwitchChange" /></div>
</template><script lang="ts" setup>import { computed, ref, watch } from 'vue';import { propTypes } from '/@/utils/propTypes';import { useAttrs } from '/@/hooks/core/useAttrs';import { useDesign } from '/@/hooks/web/useDesign';import { useRuleFormItem } from '/@/hooks/component/useFormItem';const { prefixCls } = useDesign('j-switch');const props = defineProps({// v-model:valuevalue: propTypes.oneOfType([propTypes.string, propTypes.number]),// 取值 optionsoptions: propTypes.array.def(() => ['Y', 'N']),// 文本 optionslabelOptions: propTypes.array.def(() => ['是', '否']),// 是否使用下拉query: propTypes.bool.def(false),// 是否使用单个多选框 author:wyhcheckBox: propTypes.bool.def(false),// 是否禁用disabled: propTypes.bool.def(false),});const attrs = useAttrs();const emit = defineEmits(['change', 'update:value']);const checked = ref<boolean>(false);const [state] = useRuleFormItem(props, 'value', 'change');watch(() => props.value,(val) => {if (!props.query) {if (!val && !props.options.includes(val)) {checked.value = false;emitValue(props.options[1]);} else {checked.value = props.options[0] == val;}}},{ immediate: true });const selectOptions = computed(() => {let options: any[] = [];options.push({ value: props.options[0], label: props.labelOptions[0] });options.push({ value: props.options[1], label: props.labelOptions[1] });return options;});// Switch事件function onSwitchChange(checked) {let flag = checked === false ? props.options[1] : props.options[0];emitValue(flag);}// CheckBox事件 author:wyhfunction onCheckBoxChange(e) {let flag = e.target.checked == false ? props.options[1] : props.options[0];emitValue(flag);}// Select选择器事件function onSelectChange(value) {emitValue(value);}function emitValue(value) {emit('change', value);emit('update:value', value);}
</script><style lang="less">//noinspection LessUnresolvedVariable@prefix-cls: ~'@{namespace}-j-switch';.@{prefix-cls} {}
</style>

相关文章:

  • 优化理赔数据同步机制:从4小时延迟降至15分钟
  • Java 程序流程控制篇
  • 构建 PostGIS 与 pgRouting容器镜像:打造强大的地理空间分析
  • Qt开发经验 --- 避坑指南(13)
  • 【多模态】IMAGEBIND论文阅读
  • MCP 传输层代码分析
  • 什么是建行财资云,招行CBS,光大跨行通
  • 什么是 ANR 如何避免它
  • 电池单元和电极性能
  • 何人传来空指针-GDB调试
  • Linux文件编程——open函数
  • MySQL 数据操纵与数据库优化
  • PostGreSQL:数据表被锁无法操作
  • Spark 中RDD、Job,stage,task的关系
  • c++STL-string的使用
  • 接口的基础定义与属性约束
  • Nginx 使用 Keepalived 搭建 nginx 高可用
  • (十二)Java枚举类深度解析:从基础到高级应用
  • 数据分析预备篇---NumPy数组
  • ARP协议的工作原理
  • 冷冰川谈黑白
  • 当我们提起拉动消费时,应该拉动什么消费?
  • 晋级中部非省会第一城,宜昌凭什么
  • 雇来的“妈妈”:为入狱雇主无偿带娃4年,没做好准备说再见
  • 最快3天开通一条定制公交线路!上海推出服务平台更快响应市民需求
  • 大四本科生已发14篇SCI论文?重庆大学:成立工作组核实