element ui 多选框内嵌套单选框

这篇具有很好参考价值的文章主要介绍了element ui 多选框内嵌套单选框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

多选框内嵌套单选框

element-ui多选框分组单选,ui,javascript,前端文章来源地址https://www.toymoban.com/news/detail-692742.html

<template>
  <!-- 封装了dialog,el-dialog就可以 -->
  <Dialog
    width="50%"
    :title="newInquiriesData.diagnoseName"
    :visible="visible"
    @confirm="handleConfirm"
    @close="handleClose"
    @open="open"
    class="inquiries-main"
  >
    <div class="inquiries-container" v-loading="loadingStatus">
      <div class="question-tips">
        <i class="el-icon-warning"></i>
        <span
          >请勾选下方的进一步问诊资源,点击【确定】后系统可将结果自动会写至门诊病例</span
        >
      </div>
      <div class="main">
        <div class="wapper" v-for="(item, index) in templateData" :key="index">
          <div class="title">{{ item.keys }}</div>
          <div class="muti-select">
            <el-checkbox-group class="group" v-model="item.checked">
              <el-checkbox
                class="group-item"
                v-for="(data, i) in item.value"
                :key="i + 'only'"
                :label="data.key"
                @change="handleChangeBox($event, data, item)"
              >
                <div>
                  <span> {{ data.key }}</span>
                  <span v-if="data.children" class="group-item-radio">
                    <el-radio-group v-model="data.checked">
                      <el-radio
                        @change="handleChangeRadio($event, data, item)"
                        v-for="(dataItem, dataIndex) in data.children"
                        :key="dataIndex + 'only'"
                        :label="dataItem"
                        >{{ dataItem }}</el-radio
                      >
                    </el-radio-group>
                  </span>
                </div>
              </el-checkbox>
            </el-checkbox-group>
          </div>
        </div>
      </div>
    </div>
  </Dialog>
</template>

<script>
import { Dialog } from '@components/index';
import { computed, ref } from '@vue/composition-api';
import { deepClone } from '@js/utils';
import { useLoadingStatus } from '@hooks/index';
export default {
  props: {
    visible: {
      type: Boolean,
      default: false
    },
    inquiriesData: {
      type: Object,
      default: () => {}
    }
  },
  components: {
    Dialog
  },
  setup(props, { emit }) {
  	//loading状态
    const { loadingStatus, changeLoadingStatus } = useLoadingStatus();
    // 特殊疾病数据,open时处理
    const newInquiriesData = computed(() => {
      return deepClone(props.inquiriesData);
    });

    function handleClose() {
      emit('handleClose');
    }

    // 接口返回的模板数据
    const templateData = ref([]);

    // 选中有单选内容时 附带选中第一项,取消选择后清空
    function handleChangeBox(item, data, items) {
      console.log(item, data, items);
      if (item && data.children) {
        data.checked = data.children[0];
      }
      if (!item) {
        if (data.children) {
          data.checked = '';
        }
      }
    }
    // 直接选单选按钮附带吧父级多选框也给选上
    function handleChangeRadio(item, data, items) {
      console.log(items.checked.indexOf(data.key) != -1);
      if (!items.checked.indexOf(data.key) != -1) {
        items.checked.push(data.key);
        items.checked = [...new Set(items.checked)];
      }
    }

    function open() {
      changeLoadingStatus(true);
      setTimeout(() => {
        templateData.value = [
          {
            keys: '症状',
            value: [
              { key: '发热' },
              {
                key: '高热',
                children: ['高热1', '高热2', '高热3'],
                checked: ''
              },
              { key: '低热' }
            ],
            checked: []
          },
          {
            keys: '体征',
            value: [
              { key: '体征1' },
              { key: '体征2' },
              { key: '体征3' },
              { key: '体征4' }
            ],
            checked: []
          },
          {
            keys: '流行病学史',
            value: [
              { key: '新冠疫区旅行史' },
              { key: '境外居旅行史' },
              { key: '聚集性活动史' },
              { key: '新冠肺炎患者接触史' }
            ],
            checked: []
          }
        ];
        changeLoadingStatus(false);
      }, 400);
      console.log(newInquiriesData.value);
    }
    function handleConfirm() {
      console.log(templateData.value);
    }
    return {
      handleClose,
      open,
      newInquiriesData,
      loadingStatus,
      changeLoadingStatus,
      templateData,
      handleConfirm,
      handleChangeBox,
      handleChangeRadio
    };
  }
};
</script>
<style scoped lang="scss">
.inquiries-container {
  max-height: 450px;
  overflow: auto;
  .question-tips {
    height: 30px;
    background-color: #eaf5fd;
    margin-bottom: 10px;
    border-radius: 8px;
    border: 1px solid #d9e6f0;
    display: flex;
    align-items: center;
    padding: 0 10px;
    color: #50a0f4;
    i {
      font-size: 16px;
      margin-right: 16px;
    }
  }
  .main {
    overflow-x: hidden;

    .wapper {
      margin-bottom: 10px;
      .title {
        width: 100%;
        height: 40px;
        border-radius: 8px;
        background-color: #f2f2f2;
        line-height: 40px;
        padding-left: 10px;
        font-size: 16px;
        font-weight: 500;
      }
      .muti-select {
        margin-left: 10px;
        margin-top: 20px;
        .group {
          display: flex;
          flex-direction: column;
          .group-item {
            margin-bottom: 10px;
            .group-item-radio {
              margin-left: 20px;
            }
          }
        }
      }
    }
  }
}
</style>

到了这里,关于element ui 多选框内嵌套单选框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Element-Ui组件 单选框(Radio,Checked) 修改点击激活时的文本颜色,填充色和边框色

    /* 选中后的字体颜色 */ /deep/ .el-radio__input.is-checked + .el-radio__label { color: #409eff !important; } /* 选中后圆圈的背景颜色 */ /deep/ .el-radio__input.is-checked .el-radio__inner { background: #409eff !important; border-color: #409eff !important; } // 选中后小圆点的颜色 /deep/ .el-radio__input.is-checked .el-radio__inner::a

    2024年02月16日
    浏览(14)
  • element ui多选框(Checkbox 多选框、Select多选框)编辑时无法选中的解决办法

    element ui多选框(Checkbox 多选框、Select多选框)编辑时无法选中的解决办法

     在上面添加变更事件,然后变更事件中添加this.$forceUpdate();  强制渲染多选框的样式即可 注意: 多选框需要传数组,字符串无法正常渲染,因此表单初始化绑定的v-model需要初始化为空数组[],而编辑页面传值时如果是字符串,需要转数组:         重点就是: this.$forceUpda

    2024年02月05日
    浏览(10)
  • Element UI 表格单选、多选情景

    Element UI 表格单选、多选情景

    最近在使用Element UI编写简单前端页面时会遇到需要对表格进行选择操作的场景。在网络上面查询资料时发现实现方式多的看花眼,索性自己总结一个。 话不多说,搬代码来看看~ 单选: 从单选这一块需求来看,至少满足下面两点才能算是完成: 全选框的点击只能取消其他

    2024年02月11日
    浏览(9)
  • Element UI自定义被禁用(disabled)的单选框的样式

    在Element UI中,如果你想自定义被禁用(disabled)的单选框的样式,可以使用以下步骤: 1.使用 ::v-deep 或 /deep/ 选择器:  这样可以更改被禁用单选框的样式。 2.定义样式: 通过定义选择器来修改禁用状态下单选框的外观。以下是一些可能的CSS属性可以自定义: 确保在你的项目中

    2024年02月04日
    浏览(14)
  • element ui中select多选框change选择获取选项的所有字段信息

            在 Element UI 的 Select 组件中, 多选框 的选择变化( change )事件可以通过监听 change 事件来获取选项的所有字段信息。         当多选框选项发生改变时,会触发 change 事件,此时可以通过该事件的回调函数来获取选中的选项的所有字段信息。 示例: html代码: dat

    2024年02月06日
    浏览(13)
  • 软件测试|使用selenium处理单选框和多选框

    软件测试|使用selenium处理单选框和多选框

    简介 我们在web自动化测试工作中,经常会遇到对单选框(Radio Buttons)或者多选框(Checkboxes)进行操作的场景,单选框和多选框主要是用于我们做出选择或提交数据。本文将主要介绍selenium对于单选框和多选框的操作。 处理单选框 单选框允许用户从多个选项中选择一个选项。

    2024年01月17日
    浏览(10)
  • Selenium教程06:单选框+多选框+下拉框组件的示例练习

    Selenium教程06:单选框+多选框+下拉框组件的示例练习

    1.Radio单选框的示例用法,通过网页元素class和type属性多条件共同定位元素,模拟依次选中Android,Apple,Windows。 网页元素结构 实现代码:单选比较好操作,先定位需要单选的某个元素,然后点击一下即可。 写法2:也可以根据网页元素中的span标签定位,Android 2.Checkbox多选框的

    2024年02月02日
    浏览(12)
  • el-table 多选框改成单选框(el-table单选功能)

    今天,写项目时,有一个table作为筛选的载体,需要选中table里面的一条数据,我想了一下,用table里面的selection功能,实现单选功能。

    2024年02月16日
    浏览(15)
  • element-ui 使用自定义复选框

    为什么不使用自带复选框? 自带复选框无法确定数据来源于回填还是用户手动选择,因为回填表格复选框时只能使用toggleRowSelection方法来遍历回填,而且会触发selection-change事件,而手动添加也会触发selection-change事件,无法判断某个选中数据来源于回填还是用户手动选择。

    2024年02月16日
    浏览(11)
  • 随手记:vue2 使用element UI table表格的单选多选反选思路

    selection-change 参数只有一个selection : 可以获取到当前勾选的row的数据,勾选自动行程数组 @selection-change=\\\"handleSelectionChange\\\"    // 多选框选中数据     handleSelectionChange(selection) {         //selection 是勾选中的数组     },  select 参数 selection 选中的数组  row 当前选中的单条数

    2024年04月26日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包