当前位置: 首页 > 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-select v-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:value value: propTypes.oneOfType([propTypes.string, propTypes.number]), // 取值 options options: propTypes.array.def(() => ['Y', 'N']), // 文本 options labelOptions: propTypes.array.def(() => ['是', '否']), // 是否使用下拉 query: propTypes.bool.def(false), // 是否使用单个多选框 author:wyh checkBox: 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:wyh function 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.cnnetsun.cn/news/1284558.html

相关文章:

  • 终极Go-callvis实战指南:深度分析Syncthing、Docker等知名项目调用图
  • 终极指南:如何通过Docker容器化快速部署Trump2Cash股票交易机器人
  • 批量无人值守装机(使用cobbler批量安装windows)
  • 超详细!网络安全入门到精通,这一篇就够了(附学习路线)
  • MATLAB图像去阴影实战:如何用高斯模糊拯救你的背光照片(附完整代码)
  • 从游戏加速到跨国办公:三大运营商骨干网对个人用户的实际影响与优化技巧
  • 差分进化算法:从理论到实战的全局优化利器
  • 职场汇报优先级工具,按重要紧急,领导关注度,难度排序,输出先做哪些工作的清单。
  • 手把手教你修复Flutter中的SocketException: Connection failed错误(macOS/iOS版)
  • 科研党必备:用Zotero+坚果云打造跨设备论文库(附手机端解决方案)
  • 昇腾AI处理器与主流操作系统内核版本兼容性指南
  • 解密电商大数据标签平台的核心架构与实战应用
  • Ardupilot与Gazebo仿真中无人机解锁后无法起飞的深度排查与解决方案
  • 【网络】Ikuai虚拟机部署Openwrt旁路由全流程解析(附避坑指南)
  • Android FRP分区与OEM解锁的底层关联机制解析
  • 数字后端设计中的Congestion分析:从Overflow到Hotspot的全面评估
  • 117 Excel自定义转换器深度实战
  • Vue-Grid-Layout避坑指南:从零搭建可拖拽管理后台的常见问题解决
  • 知识表示避坑指南:为什么你的NLP项目需要本体论?从ChatGPT的局限性说起
  • Windows下用MSYS2编译flashrom 1.3全攻略(支持FTDI等主流编程器)
  • Matlab报错‘eval‘与‘workspacefunc‘的连环坑:如何一步步修复pathdef.m文件
  • Chrome调试H5移动端全攻略:从Android到iOS的完整避坑指南
  • Mac用户福音:无需Root实现Android屏幕共享与远程控制的完整指南(附常见问题解决)
  • VsCode LiveServer插件配置全攻略:从安装到手机调试一步到位
  • sd预览模式终极指南:安全修改文件的最佳实践
  • Flight组件通信的7种高效事件处理方式:终极指南
  • 如何快速实现React-Draft-Wysiwyg与TypeScript集成:打造类型安全的富文本编辑器
  • Snappy跨平台开发终极指南:解决大端序和小端序兼容难题的5个实用技巧
  • HarmonyOS Media Library Kit 媒体文件管理开发指南
  • MLonCode终极指南:10个真实项目案例深度分析