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

【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>

http://www.xdnf.cn/news/5438.html

相关文章:

  • 【AI智能推荐系统】第八篇:可解释AI在推荐系统中的实践与价值
  • 深度优先与广度优先:如何用算法思维优化学习策略?
  • 250510-Linux离线配置N8N环境+屏蔽外网请求
  • python使用AES进行加密和解密
  • JavaSE基础
  • python: 为项目创建单独的虚拟环境步骤
  • QSS样式表的选择器
  • 蓝牙RFCOMM协议概述
  • 第二十一节:图像金字塔-高斯金字塔
  • TTS-Web-Vue系列:移动端侧边栏与响应式布局深度优化
  • OSCP备战-kioptrixvm3详细解法
  • [Java实战]Spring Boot 中Starter机制与自定义Starter实战(九)
  • Linux为啥会重新设置中断请求号与中断向量号之间的关系?
  • vector--OJ1
  • 【外网下载Jar包】
  • AI技术驱动SEO关键词智能布局
  • go程序编译成动态库,使用c进行调用
  • linux--------------Ext系列⽂件系统(下)
  • QOwnNotes:功能强大的跨平台笔记应用程序
  • FreeRTOS静态任务的创建、删除和软件定时器的开启(尚硅谷学习笔记)
  • 监控易一体化运维:任务计划管理的关键作用
  • 王道计算机网络知识点总结
  • 动态路由实现原理及前端控制与后端控制的核心差异
  • Linux:43线程封装与互斥lesson31
  • 前端Web开发HTML5+CSS3+移动web(基础-flex)
  • 基于Python的网络电子书阅读系统
  • 在Python中计算函数耗时并超时自动退出
  • 英语听力口语词汇--2.宣传类
  • 【时时三省】(C语言基础)字符数组
  • 关于TIAV20 PLCSIM仿真错误的原因