vue+ivew使用Collapse 折叠面板把全部面板展开

1.需求:

在使用搜索功能时候,只显示搜索到的panel并且将搜索到的含有该专家的panel展开,如图
 

            

1.html,注意黄色部分,作为每个panel的key值,要唯一

<Collapse v-model="value1">
  <Panel v-for="(items, index) in testPerson" :key="items.nameCode" :name="items.nameCode" ref='panels' >
    <span class="marginLeftSpan">{{items.text}}</span>
    <span @click="checkePersonAll($event, index)">
      <img src="/static/images/Statistics/gou.png" v-if="items.checked" alt="" >
      <img src="/static/images/Statistics/kuang.png" v-else alt="">
      全选
    </span>
    <ul slot="content">
      <li v-for="(item, indexa) in items.person" :key="indexa" class="everyPersonLiClass" :class="{personCheckedClass: item.checked}">
        <img src="/static/images/Statistics/gou.png" v-if="item.checked" alt="" @click="checkedChangePerson(index, indexa)">
        <img src="/static/images/Statistics/kuang.png" v-else alt="" @click="checkedChangePerson(index, indexa)">
        <span>{{item.showName}}</span>
        {{item.name}}
        <span v-if="item.position != ''">——{{item.position}}</span>
      </li>
    </ul>
  </Panel>
</Collapse>

2.搜索功能的代码

// 搜索数据
searchFuc () {
  let searchValue = this.searchValue
  let totalPerson = this.totalPerson
  this.testPerson = []
  let testPerson = []
  totalPerson.map(element => {
    let inner = element.person
    let isSearch = false
    let userArr = []
    inner.map(ele => {
      if (ele.name.includes(searchValue) || ele.position.includes(searchValue)) {
        userArr.push(ele)
        isSearch = true
      }
    })
    if (isSearch) {
      let newObj = {
        checked: false,
        text: element.text,
        person: userArr,
        code: element.code,
        nameCode: element.nameCode,
      }
      testPerson.push(newObj)
      if (searchValue.length > 0) { // 包含有搜索的字段的时候,把每个值的key给value1
        this.value1.push(element.nameCode)
      } else {
        this.value1 = []
      }
    }
  })
  this.testPerson = testPerson
},

 

posted @ 2019-07-01 15:02  小伍w  阅读(6000)  评论(0编辑  收藏  举报