elementui 点击根据是单选框还是多选框实现的一个效果

我的代码只需要复制,拿到vue项目运行即可~~~

20210621202144901.png
  <div class="demo">
    <div>
      <ul>
        <li v-for="(item, index) in questionList" :key="index" style="margin-top: 20px; padding: 20px; border: 1px solid #666">
          <div style="display: flex; align-items: center">
            <div>题目类型:</div>
            <el-select v-model="item.questionType">
              <el-option label="无" :value="0" />
              <el-option label="输入" :value="1" />
              <el-option label="单选" :value="2" />
              <el-option label="多选" :value="3" />
            </el-select>
          </div>
          <div style="margin-top: 10px">问题:{{ item.question }}</div>
          <el-button v-if="item.questionType === 2" @click="showDialog(index)">新增选项</el-button>
          <div>
            <div v-for="(op, i) in item.options" :key="i" style="display: flex; align-items: center; margin-top: 10px; ">
              <div style="margin-right: 10px; padding: 10px; width: 300px; background: #999; cursor: pointer" >
                <div>
                  <span>{{ op.id }}</span>
                  <span style="margin-left: 10px">{{ op.text }}</span>
                </div>
                <div style="margin-left: 50px; color:#CCC">
                  <div v-for="(child, childIndex) in op.children" :key="child.id">
                    <span style="display: inline-block; width: 150px">{{ child.text }}</span>
                    <el-button type="danger" @click="delChildOptoin(index, i, childIndex)">删除</el-button>
                  </div>
                </div>
              </div>
              <el-button type="danger" @click="delOptoin(index, i)">删除</el-button>
            </div>
          </div>
        </li>
      </ul>
    </div>
    <el-dialog
      :visible.sync="showDialogVisible"
      width="30%"
    >
      <ul>
        <li>
          <span>选项:</span>
          <el-input v-model="dialogText" placeholder="请输入选项内容" />
        </li>
        <li>
          <span>类型:</span>
          <el-select v-model="dialogOptionType">
            <el-option v-for="(item, i) in optionsTypeList" :key="i" :label="item" :value="i" />
          </el-select>
        </li>
        <el-button v-if="dialogOptionType === 2" @click="addOption">新增选项</el-button>
        <template v-for="(item, i) in dialogOptionChildren">
          <el-input v-model="item.text" placeholder="请输入选项" />
        </template>

        
      </ul>
      <span slot="footer" class="dialog-footer">
        <el-button @click="showDialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="confirmOption">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
export default {
    data() {
      return {
        questionList: [
          {
            question: '这是单选问题一',
            questionType: 2, // 0 无 1输入 2单选 3多选
            options: [
              {
                id: '0',
                text: '选项一'
              },
              {
                id: '1',
                text: '选项二'
              }
            ]
          },
          {
            question: '这是单选问题二',
            questionType: 0, // 0 无 1输入 2单选 3多选
            options: []
          }
        ],
        optionsTypeList: ['无', '输入', '单选', '多选'],
        editIndex: 0,
        editOptionIndex: 0,
        showDialogVisible: false,
        dialogText: '',
        dialogOptionType: 0,
        dialogOptionChildren: []
      }
    },
    watch: {
      selectVal(newVal) {
        if (newVal === '1') {
          this.showQuestion = true
        }
      }
    },
    methods: {
      /**
       * 选择单选 弹框
       */
      showDialog(i) {
        this.editIndex = i
        this.dialogText = ''
        // this.dialogOptionChildren = this.questionList[this.editIndex].options
        this.dialogOptionChildren = []
        this.showDialogVisible = true
      },
      /**
       * 添加二级选项
       */
      addOption() {
        const options = this.dialogOptionChildren
        options.push({
          id: options.length,
          text: ''
        })
      },
      /**
       * 删除二级选项
       */
      delChildOptoin(index, i, childIndex) {
        const options = this.questionList[index].options[i].children
        options.splice(childIndex, 1)
      },
      /**
       * 增加选项
       */
      confirmOption() {
        const options = this.questionList[this.editIndex].options
        options.push(
          {
            id: options.length,
            text: this.dialogText,
            optionType: this.optionsTypeList[this.dialogOptionType],
            children: this.dialogOptionChildren
          }
        )
        this.showDialogVisible = false
        console.log(this.questionList)
      },
      /**
       * 删除选项
       */
      delOptoin(index, i) {
        const options = this.questionList[index].options
        options.splice(i, 1)
      }
    }
  }
</script>
<style lang="scss" scoped>
.demo {
  padding: 200px 100px;
  ul,li {
    list-style: none;
  }
}
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342