首页 > 其他分享 >vue3+Element Plus 自定义表格单选 多选

vue3+Element Plus 自定义表格单选 多选

时间:2024-07-15 14:29:05浏览次数:18  
标签:false 自定义 image value Element content 单选 isRight tableData

项目背景:用vue3+element plus 做一套考试系统

功能场景:添加试题中分为客观题、主观题两种类型,在客观题会出现单选题、多选题两种类型就会导致单选题只能勾选一个答案、多选题能勾选多个答案。

效果图


<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="YEvEO04H-1721011925648" src="https://live.csdn.net/v/embed/409503"></iframe>

废话不说直接上代码

<el-button class="btn" icon="Plus" plain style="width: 100px;height: 29px;margin-bottom: 10px"
                       type="primary" @click="handleAdd">
              添加选项
            </el-button>
            <el-table ref="tableHeader" :data="tableData" border row-key="id">
              <el-table-column :index="indexMethod" align="center" label="序号" type="index" width="100"/>
              <el-table-column align="center" label="是否答案" prop="isRight" width="100">
                <template #default="scope">
                  <el-checkbox v-if="form.type==1||form.type==3" v-model="scope.row.isRight" label="答案" size="large"
                               @change="change(scope.row.isRight,scope.$index)"/>
                  <el-checkbox v-else v-model="scope.row.isRight" label="答案" size="large"/>
                </template>
              </el-table-column>
              <el-table-column align="center" label="选项图片" width="160">
                <template #default="scope">
                  <el-upload
                      :before-upload="beforeAvatarUpload"
                      :on-success="handleAvatarSuccess"
                      :show-file-list="false"
                      action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
                      class="avatar-uploader"
                  >
                    <img v-if="imageUrl" :src="imageUrl" class="avatar"/>
                    <el-icon v-else class="avatar-uploader-icon">
                      <Plus/>
                    </el-icon>
                  </el-upload>
                </template>
              </el-table-column>
              <el-table-column align="center" label="选项内容" prop="concat" width="1150">
                <template #default="scope">
                  <el-input
                      v-model="scope.row.concat"
                      :rows="2"
                      placeholder="输入选项内容"
                      type="textarea"
                  />
                </template>
              </el-table-column>
              <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
                <template #default="scope">
                  <el-button circle icon="Delete" type="danger" @click="handleDel(scope.$index)"></el-button>
                </template>
              </el-table-column>
            </el-table>
const handleChange = (el) => {
  tableData.value.length = 0
  if (el == 1) {
    tableData.value.push({content: '', image: '', isRight: false}, {
      content: '',
      image: '',
      isRight: false
    }, {content: '', image: '', isRight: false})
  } else if (el == 2) {
    tableData.value.push({content: '', image: '', isRight: false}, {
      content: '',
      image: '',
      isRight: false
    }, {content: '', image: '', isRight: false}, {content: '', image: '', isRight: false})
  } else if (el == 3) {
    tableData.value.push({content: '', image: '', isRight: false}, {content: '', image: '', isRight: false})
  }
}

const change = (el, index) => {
  tableData.value.forEach((item, key) => {
    if (key != index) {
      item.isRight = false
    }
  })
}
const handleAdd = () => {
  tableData.value.push({content: '', image: '', isRight: false})
}
const handleDel = (id) => {
  tableData.value.splice(id, 1)
}

创造不易  辛苦三联~

标签:false,自定义,image,value,Element,content,单选,isRight,tableData
From: https://blog.csdn.net/Zxk912/article/details/140431256

相关文章

  • ElementUI 本身没有提供年份范围选择组件,但可以通过封装两个年份选择器来实现类似的功
    ElementUI本身没有提供年份范围选择组件,但可以通过封装两个年份选择器来实现类似的功能。以下是一个使用Vue2和ElementUI实现年份范围选择器的示例代码: <script>exportdefault{name:'YearRangePicker',//接收父组件传入的年份范围数据props:{value:{......
  • 静态html vue3 element-plus 示例页面
    代码:<!doctypehtml><html><head><metacharset="utf-8"><title>example</title><!--复制于文件:https://unpkg.com/[email protected]/dist/vue.global.js--><scriptsrc="/......
  • BottomNavigationView + ViewPager2 实现底部导航栏切换 + 自定义渐变
    com.google.android.material.bottomnavigation.BottomNavigationView缺点:自定义难度大:BottomNavigationView的默认样式和行为是为标准使用场景设计的,如果需要进行深度定制,比如复杂的动画效果或不常见的布局,可能需要大量的代码来实现。图标和文字的限制:默认情况下......
  • element el-table 设置行高 和表头高度
    https://blog.csdn.net/m0_71645665/article/details/139296035<divstyle="height:90%;overflow-y:scroll"><el-table:data="tableData"style="width:100%;"row-key="id"border:default-expan......
  • vue学习day09-自定义指令、插槽
    29、自定义指令(1)概念:自己定义的指令,可以封装一些dom操作,扩展额外的功能。(2)分类:1)全局注册2)局部注册3)示例:让表单元素一进入页面就获取焦点①全局注册效果:②局部注册(效果和全局注册一样,但作用范围不同)(3)指令的值自定义指令可以通过等号赋值的形式传参,这个值......
  • 华为云obs如何配置自定义域名
    上传pdf文件到华为云obs上后,得到的链接,如果直接访问都是下载文件,那么要如何实现访问链接直接预览文件呢。通过查看华为云的官方文档得知从2022年开始,华为云就不在支持直接访问实现预览了如何在浏览器中在线预览OBS中的对象?_对象存储服务OBS基于安全合规要求,华为云对象存储......
  • element-plus 如何点击其它位置触发文件上传
    原文链接: https://www.xiandanplay.com/article/view?id=16925669181947904&articleCategoryId=16078840161206272https://www.xiandanplay.com/是我的一个自建的网站,,欢迎大家来踩,多多给些建议,开源不易 ElementPlus虽然为我们提供了文件上传的组件,但是每次使用它都要用<el-up......
  • Python函数(1)--自定义函数与作用域
    函数的定义Python中的函数是一段组织好的、可重复使用的、用来实现单一或相关联功能的代码块。函数能提高应用的模块性,和代码的重复可用性。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被称为用户自定义函数。自定义函数假设,我们现在求一......
  • css 自定义属性
    CSS自定义属性(CustomProperties),也称为CSS变量,是CSS中一种能够保存和复用值的机制。它们与常规的CSS属性不同,因为它们可以在整个文档中定义一次,然后在需要的任何地方使用。定义和语法定义一个自定义属性使用两个连字符(--)开头,后面跟着属性名,类似于下面的示例::root{--......
  • 帝国CMS网站通过自定义扩展变量功能,用户可以自定义公共的程序使用变量,为用户扩展系统
    通过自定义扩展变量功能,用户可以自定义公共的程序使用变量,为用户扩展系统带来便利。比如可以增加像系统$public_r[newsurl]这样的变量,还比如扩展了某个系统模型,需要增加设置项都可以用扩展变量来实现...等等。 一、登录后台,单击“系统”菜单,选择“扩展变量”......