国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【vue+element UI】實(shí)現(xiàn)帶全選、反選、聯(lián)級(jí)、搜索的下拉多選框

這篇具有很好參考價(jià)值的文章主要介紹了【vue+element UI】實(shí)現(xiàn)帶全選、反選、聯(lián)級(jí)、搜索的下拉多選框。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

halo小伙伴們,在開(kāi)發(fā)的過(guò)程中是否有遇到需要為下拉多選框添加操作按鈕的,如全選、反選、聯(lián)級(jí)、搜索的下拉選框呢?如圖所示:
element下拉框級(jí)聯(lián),Element UI,vue,elementui,vue
這里我們需要借助vue-treeselect插件(官方地址)
第一步,安裝vue-treeselect插件

npm install --save @riophae/vue-treeselect

第二步,封裝下拉框組件

<template>
  <div class="store-tree-select store-tree-wrap">
  	// 以下的屬性可以自己查閱vue-treeselect官方文檔進(jìn)行查看
    <xy-tree-select
        :placeholder="placeholder"
        value-consists-of="ALL_WITH_INDETERMINATE"
        noChildrenText="暫無(wú)數(shù)據(jù)"
        searchPromptText="請(qǐng)輸入搜索關(guān)鍵字"
        noResultsText="無(wú)搜索結(jié)果"
        :normalizer="normalizer"
        :disable-branch-nodes="false"
        :auto-load-root-options="loading"
        :multiple="multiple"
        :limit="limit"
        :limitText="limitTextFun"
        :maxHeight="500"
        :disabled="disabled"
        :options="data"
        :value="currentValue"
        v-model="currentValue"
        :default-expand-level="defaultExpandLevel"
        :flat="flat"
        :auto-deselect-descendants="cascade"
        :auto-select-descendants="cascade"
        @open="treeSelectOpen"
        @close="treeSelectClose"
        @input="input">
      // 這里是頂部的控制按鈕
      <div slot="before-list" v-if="multiple == true" style="padding:0 0 4px 6px;">
        <div class="before-list-item" @click="selAll">
          <i class="el-icon-finished"></i> 全選
        </div>
        <div class="before-list-item" @click="selBack">
          <i class="el-icon-refresh-left"></i> 反選
        </div>
        <div class="before-list-item" @click="doSelLink">
          <i class="el-icon-link"></i>&nbsp;<span ref="linkText">聯(lián)級(jí)</span>
        </div>
      </div>
    </xy-tree-select>
  </div>
</template>

<script>
// 這里引入安裝好的vue-treeselect插件
import TreeSelect from '@riophae/vue-treeselect'
// 這里記得要連樣式一起引入哦
import '@riophae/vue-treeselect/dist/vue-treeselect.css'

export default {
  components: {
    xyTreeSelect: TreeSelect,
  },
  mounted() {
  	// 獲取下拉框數(shù)據(jù)
    this.loadData();
  },
  props: {
    placeholder: {
      default: '請(qǐng)選擇組織'
    },
    limit:{
      default:1
    },
    //是否多選
    multiple: {
      default: false
    },
    //是否禁用
    disabled: {
      default: false
    },
    //樹(shù)類型:BLOC,BRAND,AREA
    type: {
      type: String,
      default: undefined,
    },
    //是否賴加載,默認(rèn)true
    lazy: {
      type: Boolean,
      default: true,
    },
    //是否自動(dòng)加載
    autoLoadData: {
      default: true
    },
    //初始值
    value: {
      default: null
    },
    // 加載時(shí)應(yīng)自動(dòng)擴(kuò)展多少級(jí)分支節(jié)點(diǎn)。設(shè)置 Infinity 為默認(rèn)使所有分支節(jié)點(diǎn)擴(kuò)展
    defaultExpandLevel: {
      default: 2
    },
    flat:{
      default:true
    },
    //設(shè)置一開(kāi)始的列表值   用于默認(rèn)選中時(shí)候會(huì)提示‘無(wú)該門(mén)店權(quán)限’
    list:{
      default:Array,
    },
  },
  watch: {
    value(val) {
      this.currentValue = val;
    },
    list(val){
      if(val.length>=0){
        this.data = val
      }
    },
    // 監(jiān)聽(tīng)點(diǎn)擊的聯(lián)級(jí)反聯(lián)級(jí)切換文本內(nèi)容,在computed中操作也是可以的
    openStatu(val){
      if(val){
        if(this.cascade){
          this.$nextTick(()=>{
            this.$refs.linkText.innerHTML = '聯(lián)級(jí)'
          })
        }else {
          this.$nextTick(()=>{
            this.$refs.linkText.innerHTML = '反聯(lián)級(jí)'
          })
        }
      }
    }
  },
  
  data() {
    return {
      loading: true,
      normalizer(node) {
        return {
          id: node.id,
          // 由于小編這里有顯示判斷,所以根據(jù)字段進(jìn)行了部分文本渲染判斷
          label: node.title==undefined?'無(wú)該門(mén)店權(quán)限' : node.title + (node.type == 1 ? '(品牌)' : node.type == 2 ? '(區(qū)域)' : '(門(mén)店)'),
          children: node.subs != null ? node.subs : undefined,
          isDisabled: node.disabled,
        }
      },
      itemDisabled_:false,
      data: [],
      currentValue: this.value,
      cascade: true, // false表示不級(jí)聯(lián)  true表示級(jí)聯(lián)

      allDataIds:[],
      selLink:true,
      openStatu:false,
    }
  },
  
  methods: {
  	// 聯(lián)級(jí)按鈕操作
    doSelLink(){
      this.$nextTick(() => {
        this.selLink = !this.selLink
        this.cascade = this.selLink
      })
      if(!this.cascade){
        this.$nextTick(()=>{
          this.$refs.linkText.innerHTML = '聯(lián)級(jí)'
        })
      }else {
        this.$nextTick(()=>{
          this.$refs.linkText.innerHTML = '反聯(lián)級(jí)'
        })
      }
    },
    // 反選
    selBack(){
      // console.log("已經(jīng)選了的",this.currentValue)
      let hasSel = this.currentValue;     //已經(jīng)選中的列表
      if(hasSel.length<=0){
        return;
      }
      let allList = this.allDataIds;      //全部的列表
      let readyList = [];                 //準(zhǔn)備放新的
      readyList = hasSel.filter(x => allList.indexOf(x) == -1)
          .concat(allList.filter(x => hasSel.indexOf(x) == -1));
      this.currentValue = readyList
    },
    //全選
    selAll(){
      this.currentValue = this.allDataIds
    },
    
    funChildren(arr) {
      let childs = arr
      for (let i = childs.length; i--; i > 0) {
        if (childs[i].subs) {
          this.allDataIds.push(childs[i].id)
          this.funChildren(childs[i].subs)
        } else {
          this.allDataIds.push(childs[i].id)
        }
      }
      return this.allDataIds
    },
    clearInput() {
      this.currentValue = null;
    },
    input(value) {
      this.$emit('selectChange', value);
    },
    /**
     *當(dāng)所選元素超過(guò)定義的限制時(shí)處理顯示的消息的功能。
     */
    limitTextFun(count) {
      return '+' + count
    },
    loadData(){
      this.allDataIds = []
      this.data = this.$store.state.UserAreasTree.UserAreasTreeData;
      this.funChildren(this.data)
    },
    /**
     *菜單打開(kāi)時(shí),獲取樹(shù)結(jié)構(gòu)的值, 這樣可以每次都獲取一下最新的
     */
    treeSelectOpen() {//UserAreasTree.js
      /*let data = this.$store.state.UserAreasTree.UserAreasTreeData;
      this.data = this.publicFun.deleteChildren(data, 'subs');*/
      this.allDataIds = []
      this.data = this.$store.state.UserAreasTree.UserAreasTreeData;
      this.funChildren(this.data)
      this.openStatu = true
    },
    treeSelectClose(){
      this.openStatu = false
    }
  },
}
</script>


<style>
.before-list-item{
  float:left;
  width: 33.33%;
  text-align: center;
  cursor: pointer
}

.before-list-item:hover{
  color: #2d8cf0;
}
.vue-treeselect__control .vue-treeselect__limit-tip {
  padding-top: 2px;
}

.vue-treeselect__control {
  height: 32px;
}

.vue-treeselect--has-value .vue-treeselect__multi-value {
  margin-bottom: 0;
}

.vue-treeselect__multi-value-item-container {
  padding-top: 2px;
}
.store-tree-wrap{
  line-height: 20px;
}


</style>

第三步,在需要該組件的頁(yè)面引入該組件

// 使用組件
<xy-form-tree-select :value="filterForm.areaIds" :multiple="true" @selectChange="selectArea"/>
        
// 引入組件
import xyFormTreeSelect from "../../common/XyTreeSelectControl";

// 回調(diào)方法
selectArea(val) {
   this.filterForm.areaIds = val;
},

好啦,快去試試看可不可行吧,如果有更好的方法的小伙伴們記得跟小編分享一下你們的開(kāi)發(fā)經(jīng)驗(yàn)哦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-607819.html

到了這里,關(guān)于【vue+element UI】實(shí)現(xiàn)帶全選、反選、聯(lián)級(jí)、搜索的下拉多選框的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用element-ui el-select 做下拉 全選+搜索 功能

    使用element-ui el-select 做下拉 全選+搜索 功能

    使用element-ui el-select 做下拉 全選+搜索 功能 有時(shí)候,需要用到下拉列表 全選和搜索,并且鼠標(biāo)放入的時(shí)候有下拉列表展示。以前的做法是 check + el-input搜索結(jié)合做個(gè)組件,現(xiàn)在這個(gè)方法直接使用el-select 就能做到這個(gè)需求功能:有搜索+有全選+有取消+有確認(rèn)請(qǐng)求+有鼠標(biāo)移入自

    2024年02月11日
    瀏覽(25)
  • 隨手記:vue2 使用element UI table表格的單選多選反選思路

    selection-change 參數(shù)只有一個(gè)selection :?可以獲取到當(dāng)前勾選的row的數(shù)據(jù),勾選自動(dòng)行程數(shù)組 @selection-change=\\\"handleSelectionChange\\\" ? ?// 多選框選中數(shù)據(jù) ? ? handleSelectionChange(selection) { ? ? ? ? //selection 是勾選中的數(shù)組 ? ? }, ?select 參數(shù)?selection 選中的數(shù)組??row 當(dāng)前選中的單條數(shù)

    2024年04月26日
    瀏覽(23)
  • (vue)el-select選擇框加全選/清空/反選

    (vue)el-select選擇框加全選/清空/反選

    js 解決參考 1.全選/清空/反選 2.全選/反選

    2024年04月25日
    瀏覽(24)
  • 【Vue Element-ui el-table組件 實(shí)現(xiàn)跨分頁(yè)全選 可全選中當(dāng)前頁(yè) 也可選中全量數(shù)據(jù)】

    前端模擬數(shù)據(jù)示例,無(wú)需后臺(tái)接口,復(fù)制粘貼即可看到效果。 element-ui table里的全選功能只會(huì)全選當(dāng)前頁(yè)的所有數(shù)據(jù) 當(dāng)table有分頁(yè)功能的時(shí)候?qū)崿F(xiàn)跨頁(yè)全選 ①為table添加select方法(當(dāng)用戶手動(dòng)勾選數(shù)據(jù)行的 Checkbox 時(shí)觸發(fā)的事件) 兩個(gè)參數(shù) selection,row 選中的數(shù)據(jù) 最后一個(gè)選中

    2024年02月02日
    瀏覽(46)
  • 原生js實(shí)現(xiàn)復(fù)選框(全選/全不選/反選)效果【含完整代碼】

    原生js實(shí)現(xiàn)復(fù)選框(全選/全不選/反選)效果【含完整代碼】

    1、勾選后,可以獲取到所勾選的值組成的數(shù)組,并展示到頁(yè)面; 2、全部勾選,以及取消勾選時(shí),要相應(yīng)地更新全選框的狀態(tài)及文字顯示; 3、點(diǎn)擊反選,將所有選項(xiàng)的選擇狀態(tài)置換,并相應(yīng)改變?nèi)x框的狀態(tài); 定義一個(gè)數(shù)組 checkValues ,存放用戶所勾選的內(nèi)容。 再定義一個(gè)

    2023年04月13日
    瀏覽(33)
  • 基于Vue和Element-UI自定義分組以及分組全選Select 選擇器

    基于Vue和Element-UI自定義分組以及分組全選Select 選擇器

    上一篇博文我們已經(jīng)實(shí)現(xiàn)了基于Vue和Element-UI中Select 選擇器的分組全選以及樣式修改問(wèn)題, 但是在分組方面我們是用了element-ui 自帶的 使用el-option-group對(duì)備選項(xiàng)進(jìn)行分組,它的label屬性為分組名 的功能,但是出來(lái)的效果樣式很難自定義,就算是魔改element的樣式也有一些改不了

    2023年04月08日
    瀏覽(28)
  • 【uniapp 開(kāi)發(fā)小程序】購(gòu)物車功能,實(shí)現(xiàn)全選、反選、單選、計(jì)算總價(jià)

    【uniapp 開(kāi)發(fā)小程序】購(gòu)物車功能,實(shí)現(xiàn)全選、反選、單選、計(jì)算總價(jià)

    uniapp 開(kāi)發(fā)小程序,實(shí)現(xiàn)購(gòu)物車功能,實(shí)現(xiàn)全選、反選、單選、計(jì)算總價(jià) 關(guān)鍵代碼: return totalPrice.toFixed(2); // 保留兩位小數(shù) 否則會(huì)出現(xiàn)多位小數(shù)現(xiàn)象:

    2024年02月11日
    瀏覽(23)
  • element-ui框架復(fù)選框全選功能簡(jiǎn)單實(shí)現(xiàn)

    element-ui框架復(fù)選框全選功能簡(jiǎn)單實(shí)現(xiàn)

    效果圖: ? html: data綁定的數(shù)據(jù) ? checkAll:?false, ? isALL:?false,?//?全選框是否在勾選狀態(tài) ??tableData:?[],?//全部數(shù)據(jù) ??bushForm:?[],?//選中的數(shù)據(jù) methods方法里寫(xiě): //全選的思路--判斷選中的數(shù)組的長(zhǎng)度和原數(shù)組對(duì)比,一樣的話就判斷全部選中 全部代碼:

    2024年02月11日
    瀏覽(23)
  • vue使用Element UI時(shí),el-table表格整行操作單選禁選并隱藏全選框

    vue使用Element UI時(shí),el-table表格整行操作單選禁選并隱藏全選框

    需求:表格復(fù)選修改為單選,只可選擇一個(gè);不滿足條件的不可勾選;可進(jìn)行整行操作 注意使用的方法. 需求由復(fù)選改為單選后, 左上角全選框要進(jìn)行隱藏 ,復(fù)選框也變成單選框,這里是通過(guò)css樣式進(jìn)行調(diào)整的 勾選復(fù)選框的select和整行操作的row-click可以共用同一個(gè)方法,

    2024年02月13日
    瀏覽(23)
  • Vue2 + element ui el-select 遠(yuǎn)程搜索分頁(yè)懶加載功能實(shí)現(xiàn)

    新建指令 : ? ? ? ? 1、 在 src 目錄下 新建文件夾?directive / loadmore ????????2、在 loadmore 文價(jià)夾下新建?elSelectLoadmore.js 和 index.js?文件:???????? ???elSelectLoadmore.js index.js 3、在main 文件中注冊(cè)該指令 4、 基于 el-select 封裝 懶加載 遠(yuǎn)程搜索框 remoteSelect.vue 組件提示

    2024年01月21日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包