chekbox【2】 父级多选(选择父,子不能选择),字节多选(选择子,父不能选择),可限制个数

news/2024/7/10 23:55:27 标签: vue.js, html5, typescript, css3, es6

Vuex

  state:{
     "SeriesProductsAll": [ //系列-成品
        { name: "ping", id: 1, disabled: false, checked: false, model: [{ name: "HW1623", id: "1_1", disabled: false, checked: false }, { name: "HW1633", id: "1_2", disabled: false, checked: false }, { name: "HW1643", id: "1_3", disabled: false, checked: false }, { name: "HW1653", id: "1_4", disabled: false, checked: false }, { name: "HW1663", id: "1_5", disabled: false, checked: false }, { name: "HW1673", id: "1_6", disabled: false, checked: false }] },
        { name: "Hawaii", id: 2, disabled: false, checked: false, model: [{ name: "HW2623", id: "2_1", disabled: false, checked: false }, { name: "HW16133", id: "2_2", disabled: false, checked: false }, { name: "HW1443", id: "2_3", disabled: false, checked: false }, { name: "HW1453", id: "2_4", disabled: false, checked: false }] },
        { name: "Mondo", id: 3, disabled: false, checked: false, model: [{ name: "HW2633", id: "3_1", disabled: false, checked: false }, { name: "HW1643", id: "3_2", disabled: false, checked: false }, { name: "HW1653", id: "3_3", disabled: false, checked: false }, { name: "HW1663", id: "3_4", disabled: false, checked: false }] }
    ]
}

 

<template>
<div>
       <el-tabs type="border-card"  v-if="id=='Wip_Monthly_jq'"  v-model="ActiveTabs"  @tab-click="tabPaneFn($event)">
          <el-tab-pane  v-for="(item,index) in getState" :key="index"  :name="item.name">
             <span slot="label" > 
                <input type="checkbox" title="h_t" class="mgc mgc-info h_t" :disabled="item.disabled" @click="BabTitleCheckBoxFn($event,item,index)"/>{{item.name}}
                 </span>
             <ul class="production_ul">
               <li v-for="(ite,i) in item.model" :key="i" >
                   <input type="checkbox" class="mgc mgc-info c_t" title="c_t" :disabled="ite.disabled" @click="tabCheckboxFn($event,item,ite,i)">{{ite.name}}
               </li>
             </ul>
          </el-tab-pane>
        </el-tabs>
</div>
</template>
<script>
export default {
    name:"jqonechecboxtwochecbox",
    data(){
        return{
              ActiveTabs:"3B3F",
              ActiveArray:[],
              ActiveArrayparent:[]
        }
    },
    methods:{
        tabPaneFn(ev){
            let _this=this;
        },
          BabTitleCheckBoxFn(ev, item, index) {
              let _this = this;
              const state = ev.srcElement.checked;
              const datas = _this.$store.state.floorStayAll;
              if (state) {
                _this.ActiveArrayparent.push(item.id);
              } else {
                  _this.ActiveArrayparent.splice(_this.ActiveArrayparent.findIndex((items) => items === item.id),1);
              }
              datas.forEach((data, index) => {
                const disable = _this.ActiveArrayparent.length >= 4;
                datas[index].disabled = _this.ActiveArrayparent.indexOf(data.id) > -1 ? false : disable;
                      data.model.forEach((ite, index) => {
                          ite.disabled = _this.ActiveArrayparent.length > 0 ? true : false;
                  });
              });
            },
        tabCheckboxFn(ev,item,ite,ins){
          let _this=this;
           const state=ev.srcElement.checked;
           if(state){
                _this.ActiveArray.push([item.id,ite.id]);
           }else{
               _this.ActiveArray.splice(_this.ActiveArray.findIndex(items =>  items[1] === ite.id), 1)
           }
           let activeArr=[];
           _this.ActiveArray.forEach((r,i)=>{
                 activeArr.push(r[1]);
           })
            const datas=_this.$store.state.floorStayAll;
                       datas.forEach((ite, index) => {
                                       ite.disabled=activeArr.length>0 ? true:false;
                                       ite.model.forEach((e,i)=>{
                                              const disable = activeArr.length >=4;
                                                  e.checked= (activeArr.indexOf(e.id) > -1 ) ? true : false;
                                                  e.disabled = e.checked  ? false : disable;
                                      });
                  })
        },
    },
  
      computed:{
        getState(){
          return this.$store.state.floorStayAll;
        }
  },
}
</script>

 


http://www.niftyadmin.cn/n/1030135.html

相关文章

EAUML日拱一卒-关联(关联类)

正如可以使用属性描述类的对象一样&#xff0c;也可以用属性来描述关联。UML用关联类来表示这样的信息。关联类&#xff08;association class&#xff09;是一种关联&#xff0c;也是一个类。 -----------UML面向对象建模与设计 也不知道你是懂了呢还是懂了呢&#xff1f;还先…

EAUML日拱一卒-关联(限定关联)

从一个例子开始今天的说明。 假设有一个系统&#xff0c;收到外界的事件通知以后&#xff0c;根据设备Id&#xff0c;将事件转发给适当的设备。按照之前的说明我们可以建模如下。 系统按照以下方式运行&#xff1a; EventCreater生成Event并设置DeviceId EventCreater将生成…

EAUML日拱一卒--类图::关联(关联,聚合,组合)

说完了关联&#xff0c;就必须说一下聚合&#xff08;Aggregation&#xff09;和组合&#xff08;Composition&#xff09;。这三者的区别&#xff0c;很多人并不是很清楚。在实际的设计中也经常可以看到乱用的情况。希望本文能够解决这个问题。 聚合&#xff08;Aggreation&am…

EAUML日拱一卒--类图::泛化(generalization)

类和类之间&#xff0c;除了存在关联/聚合/组合这种协作关系以外&#xff0c;还有泛化关系&#xff0c;也就是C中的继承关系。 定义 泛化是指一个较特殊的类到一个较普通的类之间的关系。较特殊的类也叫子类&#xff08;subclass&#xff09;&#xff1b;较普通的类也叫超类&a…

EAUML日拱一卒--类图::实现(realization)

上一篇文章我们讲到了抽象类和具象类。其中抽象类是不能被实例化的类。这即可能是因为类的实现还不完整&#xff08;如缺少某些操作的方法&#xff09;&#xff0c;也可能是因为功能不完整而不想被实例化。与之相对的就是具象类。 接口 但是一般来说&#xff0c;抽象类还是有一…

linux安装Nginx服务器

1.下载Nginx及相关组件 1.1进入用户目录下载程序 [rootbigdata04 ~]# cd /usr/local/src/[rootbigdata04 src]# 1.2 下载相关组件 [rootbigdata04 src]# wget http://zlib.net/zlib-1.2.11.tar.gz [rootbigdata04 src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz…

EAUML日拱一卒--类图::枚举类型(enumeration)

枚举类型本身没有什么好说的&#xff0c;本文主要说明在EA中如何定义枚举类型。 添加枚举类型 打开类图&#xff0c;拖动下面的枚举类型图标即可添加枚举类型。 接下来就是输入类型名&#xff0c;本例中我们输入PlayerState 输入枚举值 选择【Detail】页面并点击【Attributes..…

EAUML日拱一卒--类图::对象图(object diagram)

对象图的功能 类图用于说明类以及类之间的关系&#xff0c;但是它相对抽象&#xff0c;有时会比较难理解。比如下面的例子&#xff1a; 上图是一个图形编辑软件的例子&#xff0c;我们有一个超类Shape和它的五个子类。其中ShapeComposite可以管理其他的Shape。还有一个Canvas类…