亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

el-select 點擊按鈕滾動到選擇框頂部的實現(xiàn)代碼

 更新時間:2024年05月10日 09:43:20   作者:顧辰呀  
本文通過實例代碼給大家分享el-select 點擊按鈕滾動到選擇框頂部效果,主要代碼是在visibleChange在這個popper里面找到.el-select-dropdown__list,感興趣的朋友跟隨小編一起看看吧

主要代碼是在visibleChange    在這個 popper 里面找到  .el-select-dropdown__list

   let popper = ref.$refs.popper
   const ref = this.$refs.select 
   let dom = popper.querySelector('.el-select-dropdown__list')
            setTimeout(() => {
              dom.scrollIntoView()
            }, 800)
<template>
  <div class="SetTags">
    <strong>標簽:</strong>
    <el-select
      v-model="name"
      size="medium"
      ref="select"
      clearable
      filterable
      multiple
      placeholder="請選擇"
      style="width: 370px"
      @visible-change="visibleChange"
      @change="selectChange"
    >
      <el-option :label="item.name" :value="item.id" v-for="(item, index) in selectList" :key="index">
        <!-- :disabled="!item.id" -->
        <div style="float: left">
          <span v-if="!item.isHandle">{{ item.name }}</span>
          <span v-else @click.stop.prevent="() => {}">
            <el-input style="width: 120px" size="mini" maxlength="15" clearable v-model.lazy="item.name2"></el-input>
          </span>
        </div>
        <div style="float: right; margin-right: 20px">
          <span
            style="margin: 0 5px; font-size: 14px; color: #409eff"
            v-if="!item.isHandle"
            @click.stop="isEditBtn(item, true)"
            >編輯</span
          >
          <span
            style="margin: 0 5px; font-size: 14px; color: #409eff"
            v-if="item.isHandle"
            @click.stop="isEditBtn(item, false)"
            >保存</span
          >
          <span
            style="margin: 0 5px; font-size: 14px; color: #409eff"
            v-if="item.isHandle"
            @click.stop="cancelBtn(item)"
            >取消</span
          >
        </div>
      </el-option>
    </el-select>
  </div>
</template>
<script>
import request from '@/utils/request'
export default {
  components: {},
  data () {
    return {
      name: [],
      selectList: []
    }
  },
  computed: {},
  watch: {},
  created () {},
  mounted () {},
  methods: {
    async getSelectList () {
      const res = await request({
        url: '/op/tmsOrder/label/dropdown',
        method: 'get'
      })
      res.data.forEach((item) => {
        item.name2 = JSON.parse(JSON.stringify(item.name))
        item.isHandle = false
      })
      this.selectList = res.data
    },
    handleSubmit () {
      return new Promise((resolve, reject) => {
        // if (this.name.length === 0) {
        //   this.$message.error('請選擇標簽名稱')
        //   reject(new Error('數(shù)據(jù)校驗失敗,請檢查'))
        // }
        resolve(this.name)
      })
    },
    handleReset () {
      this.name = []
    },
    // true 編輯  false 保存
    async isEditBtn (item, bol) {
      let apiUrl = '/op/tmsOrder/save/label'
      if (bol) {
        item.isHandle = true
      } else {
        // 新增
        if (!item.id) {
          await request({
            url: apiUrl,
            method: 'post',
            data: {
              name: item.name2
            }
          })
          this.$message.success('新增成功')
          this.getSelectList()
        } else {
          // 修改
          await request({
            url: apiUrl,
            method: 'post',
            data: {
              name: item.name2,
              id: item.id
            }
          })
        }
        this.$message.success('保存成功')
        this.getSelectList()
      }
    },
    cancelBtn (item) {
      if (!item.name2 && !item.id) return this.selectList.splice(0, 1)
      item.name2 = item.name
      item.isHandle = false
    },
    visibleChange (visible) {
      // 下拉框顯示隱藏
      if (visible) {
        const ref = this.$refs.select
        console.log('ref:', ref)
        let popper = ref.$refs.popper
        console.log('popper:', popper)
        if (popper.$el) popper = popper.$el
        // 判斷是否有添加按鈕
        if (!Array.from(popper.children).some((v) => v.className === 'btn-box')) {
          const el = document.createElement('div')
          el.className = 'btn-box'
          el.innerHTML = `<a class="btn" style="font-size:14px;display:block;line-height:38px;text-align:center;">
                            <i class="el-icon-plus"></i>添加其他標簽
                          </a>`
          popper.appendChild(el)
          el.onclick = () => {
            let dom = popper.querySelector('.el-select-dropdown__list')
            setTimeout(() => {
              dom.scrollIntoView()
            }, 800)
            // 初始情況 沒有數(shù)據(jù)
            if (this.selectList.length === 0) {
              return this.selectList.unshift({ name: '', name2: '', id: '', isHandle: true })
            }
            if (this.selectList[0].name === '') {
              this.$message.error('請回到選擇列表頂部,填寫第一項內(nèi)容')
              return
            }
            this.selectList.unshift({ name: '', name2: '', id: '', isHandle: true })
          }
        }
      } else {
        if (this.selectList.length > 0 && !this.selectList[0].id) {
          this.selectList.shift()
        }
      }
      this.selectList.forEach((item) => {
        item.isHandle = false
      })
    },
    selectChange (e) {
      let bol = e.some((item) => item == '' || item == null || item == undefined)
      this.name = this.name.filter((item) => item !== '')
      if (bol) return this.$message.error('此項不能進行選中操作,請?zhí)顚憙?nèi)容后保存此項后重試!')
    }
  }
}
</script>
<style lang="scss" scoped>
.SetTags {
  display: flex;
  justify-content: center;
  align-items: center;
  padding-top: 40px;
}
</style>

到此這篇關于el-select 點擊按鈕滾動到選擇框頂部的文章就介紹到這了,更多相關el-select內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue-router清除url地址欄路由參數(shù)的操作代碼

    vue-router清除url地址欄路由參數(shù)的操作代碼

    這篇文章主要介紹了vue-router清除url地址欄路由參數(shù),本文給大家介紹的非常詳細,需要的朋友可以參考下
    2015-11-11
  • vue:axios請求本地json路徑錯誤問題及解決

    vue:axios請求本地json路徑錯誤問題及解決

    這篇文章主要介紹了vue:axios請求本地json路徑錯誤問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 使用vite搭建ssr活動頁架構的實現(xiàn)

    使用vite搭建ssr活動頁架構的實現(xiàn)

    本文主要介紹了使用vite搭建ssr活動頁架構,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 解決vue+router路由跳轉(zhuǎn)不起作用的一項原因

    解決vue+router路由跳轉(zhuǎn)不起作用的一項原因

    這篇文章主要介紹了解決vue+router路由跳轉(zhuǎn)不起作用的一項原因,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue 實現(xiàn)移動端鍵盤搜索事件監(jiān)聽

    vue 實現(xiàn)移動端鍵盤搜索事件監(jiān)聽

    今天小編就為大家分享一篇vue 實現(xiàn)移動端鍵盤搜索事件監(jiān)聽,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue封裝圖片滑塊驗證組件的方法

    vue封裝圖片滑塊驗證組件的方法

    這篇文章主要為大家詳細介紹了vue封裝圖片滑塊驗證組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue如何使用swiper插件修改左右箭頭的默認樣式

    vue如何使用swiper插件修改左右箭頭的默認樣式

    這篇文章主要介紹了vue如何使用swiper插件修改左右箭頭的默認樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解vue的數(shù)據(jù)binding綁定原理

    詳解vue的數(shù)據(jù)binding綁定原理

    這篇文章主要介紹了詳解vue的數(shù)據(jù)binding原理介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 解決vue項目報錯webpackJsonp is not defined問題

    解決vue項目報錯webpackJsonp is not defined問題

    下面小編就為大家分享一篇解決vue項目報錯webpackJsonp is not defined問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue項目打包部署流程分析

    vue項目打包部署流程分析

    這篇文章主要介紹了vue項目打包部署流程,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論