vue 多个switch 开启一个关闭其他

html部分:

      <ul class="switch-box">
        // state.list定义的静态数据
        <li v-for="item in state.list" :key="item.id">
          <el-switch v-model="item.checked" style="--el-switch-on-color: #13ce66;" size="default"
            @change="handleList(item)" />
          <span>{{ item.lable }}</span>
        </li>
      </ul>

js部分:

const state = reactive({
  outShowType: '',  // 需要传给后端的字段 1,2,3,4
  list: [],
  curItem: ''    // 选择的数据
})


  state.list = [
    { id: 1, lable: '自行选择(坐席需要在“号码设置”模块,自行开启一个外显手机号)', checked: false },
    { id: 2, lable: '顺序外显(坐席进行外呼时,系统将根据“号码设置”列表的号码顺序依次使用)', checked: false },
    { id: 3, lable: '随机外显(坐席进行外呼时,系统将根据“号码设置”列表进行随机使用)', checked: false },
    { id: 4, lable: '优先匹配被叫归属地(SIP线路用户专属)', checked: false },
  ]
// switch change事件
// value是list的一条数据
function handleList(value) {
    // 选择之后checked为true
  if (value.checked) {
    // 赋值给选中的数据
    state.curItem = value
    // 其他switch关闭
    state.list.map(item => {
      if (value.id !== item.id) item.checked = false
      return item
    })
  } else {
    state.curItem = ''
  }
  // 传给后台的数据
  state.outShowType = (state.curItem as any).id
}

在进入页面通过接口获取数据,开启上次选中的switch

    // outShowType是后台给的上次选中的id

    state.list.forEach(item => {
      if (item.id === outShowType) {
        item.checked = true
      }
    })

over~

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值