最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中el-table實現(xiàn)穿梭框(數(shù)據(jù)可以上移下移)

 更新時間:2023年06月29日 10:55:43   作者:程序媛ly  
本文主要介紹了vue中el-table實現(xiàn)穿梭框(數(shù)據(jù)可以上移下移),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.要求實現(xiàn)的頁面樣式

2.技術(shù)分析

  • 左右穿梭框用el-table展示數(shù)據(jù)
  • 實現(xiàn)左右按鈕的點夾效果,向相應(yīng)的列表中添加選中的元素
  • 在右側(cè)的table表格中,需要實現(xiàn)數(shù)據(jù)上移、下移的效果

3.代碼展示

左側(cè)el-table展示:

<el-col :span="11">
<el-alert title="工序列表" type="info" :closable="false"></el-alert>
<el-table :data="dataLeft" border size="small" ref="selectionLeft" @selection-change="checkLeftAll" style="width: 100%">
	<el-table-column type="selection" width="30"></el-table-column>
	<el-table-column type="index" label="序號" width="70" align="center"		</el-table-column>
	<el-table-column prop="processId" label="工序代碼" align="center"></el-table-column>
	<el-table-column prop="processName" label="工序名稱" align="center"></el-table-column>
</el-table>
</el-col>

中間按鈕的事件:

<el-col :span="2" style="text-align:center;">
<div>
   <el-button @click="handelSelect" icon="el-icon-arrow-right" circle style="margin-left: 0px;margin-top: 30px;" :disabled="nowSelectLeftData.length?false:true"  type="primary" ></el-button>
 </div>
<div>
    <el-button @click="handleRemoveSelect" icon="el-icon-arrow-left" circle style="margin-left: 0px;margin-top: 20px;" :disabled="nowSelectRightData.length?false:true" type="primary"></el-button>
 </div>
</el-col>

右側(cè)table:

<el-col :span="11">
      <el-alert title="已選工序列表" type="info" :closable="false"></el-alert>
      <el-table :data="dataRight" border ref="selectionRight" @selection-change="checkRightAll" size="small" style="width: 100%">
          <el-table-column type="selection" width="30"></el-table-column>
          <el-table-column type="index" label="序號" width="70" align="center"></el-table-column>
         <el-table-column prop="processId" label="工序代碼" align="center"></el-table-column>
              <el-table-column prop="processName" label="工序名稱" align="center"></el-table-column>
              <el-table-column label="操作" align="center">
                <template slot-scope="scope">
                  <el-button
                    size="mini"
                    type="primary"
                    plain
                    :disabled="scope.$index===0"
                    @click="moveUp(scope.$index,scope.row)"><i class="el-icon-top"></i></el-button>
                  <el-button
                    size="mini"
                    type="primary"
                    plain
                    :disabled="scope.$index===(dataRight.length-1)"
                    @click="moveDown(scope.$index,scope.row)"><i class="el-icon-bottom"></i></el-button>
                </template>
       </el-table-column>
  </el-table>
</el-col>

4.數(shù)據(jù)填充

后臺請求數(shù)據(jù)填充左側(cè)列表:

// 左側(cè)數(shù)據(jù)填充
getProcessListFun(){
   getProcessList().then((res) =>{
      this.dataLeft = res.data.data;
   })
 },
// 左邊選中得數(shù)據(jù) nowSelectLeftData:[]
checkLeftAll(val){
   this.nowSelectLeftData = val;
}, 

中間的按鈕,根據(jù)選中的數(shù)據(jù),動態(tài)添加是否禁用的效果:

:disabled="nowSelectLeftData.length?false:true"
:disabled="nowSelectRightData.length?false:true"

按鈕的點擊事件:

handelSelect(){
        // 合并右側(cè)數(shù)組 + 現(xiàn)在已經(jīng)選中的左側(cè)的數(shù)據(jù)
        this.dataRight = this.handleConcatArr(this.dataRight,this.nowSelectLeftData);
        // 從左側(cè)數(shù)據(jù)dataLeft中移除掉被選中的元素
        this.handleRemoveTabList(this.nowSelectLeftData,this.dataLeft);
        // 將左側(cè)選中的數(shù)據(jù)制空
        this.nowSelectLeftData = [];
      },
// 從右向左
      handleRemoveSelect(){
        this.dataLeft = this.handleConcatArr(this.dataLeft, this.nowSelectRightData);
        this.handleRemoveTabList(this.nowSelectRightData, this.dataRight);
        this.nowSelectRightData = [];
      },

js中拼接兩個數(shù)組元素的值:

// 拼接值  concat方法用于連接兩個或多個數(shù)組。
// concat需要一個新的數(shù)組去接收
      handleConcatArr(dataRight, nowSelectLeftData) {
        let arr = [];
        arr = arr.concat(dataRight, nowSelectLeftData);
        return arr;
      },

將要勾選的元素進(jìn)行移除:splice

handleRemoveTabList(isNeedArr,  originalArr) {
        if(isNeedArr.length && originalArr.length) {
          for(let i=0; i<isNeedArr.length; i++) {
            for(let k=0; k<originalArr.length; k++) {
              if(isNeedArr[i]["processId"] === originalArr[k]["processId"]) {
                originalArr.splice(k, 1);    //splice(start,count) start標(biāo)識當(dāng)前的位置,count標(biāo)識移除的個數(shù)
              }
            }
          }
        }
      },

5.表格中數(shù)據(jù)上移

實現(xiàn)上移、下移需要在操作欄中,添加按鈕事件

// 通過按鈕的下標(biāo),通帶控制按鈕是否禁用
 <el-table-column label="操作" align="center">
   <template slot-scope="scope">
        <el-button size="mini"
                    type="primary"
                    plain
                    :disabled="scope.$index===0"
                    @click="moveUp(scope.$index,scope.row)"><i class="el-icon-top"></i></el-button>
     <el-button size="mini"
                    type="primary"
                    plain
                    :disabled="scope.$index===(dataRight.length-1)"
                    @click="moveDown(scope.$index,scope.row)"><i class="el-icon-bottom"></i></el-button>
   </template>
</el-table-column>
// 按鈕上移動作
moveUp(index){
        let that = this;
        if (index > 0) {
          let upDate = that.dataRight[index - 1];
          that.dataRight.splice(index - 1, 1);
          that.dataRight.splice(index, 0, upDate);
        } else {
          alert('已經(jīng)是第一條,不可上移');
        }
 },
// 按鈕下移
moveDown(index){
        let that = this;
        if ((index + 1) === that.dataRight.length){
          alert('已經(jīng)是最后一條,不可下移');
        } else {
          let downDate = that.dataRight[index + 1];
          that.dataRight.splice(index + 1, 1);
          that.dataRight.splice(index,0, downDate);
        }
 },

6.后臺提交數(shù)據(jù)記錄

addProductSave(formName){
        this.$refs[formName].validate((valid) =>{
          if(valid){
            let formValue =  this.$refs.addFormRef.form;
            let processListTable =  this.$refs.selectionRight.tableData;
            let processObject = [];
            if (processListTable.length > 0) {
              for (let i = 0; i <processListTable.length ; i++) {
                  let process = new Object();
                  process.processId = processListTable[i].id;
                  // 記錄各道工序的順序,將數(shù)據(jù)提交到后臺
                  process.processOrder = i+1;
                  processObject.push(process);
               }
            }
            let form = {"product":formValue};
            let processArr = {"processListOrder": processObject};
            const productAndProcessList = Object.assign(form,processArr);
            saveProduct(productAndProcessList).then(() =>{
              this.onLoad(this.page);
              this.$message({
                type: "success",
                message: "操作成功!"
              });
              this.addBox = false;
            })
          }
        })
      },

 到此這篇關(guān)于vue中el-table實現(xiàn)穿梭框(數(shù)據(jù)可以上移下移)的文章就介紹到這了,更多相關(guān)el-table 穿梭框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 第一個Vue插件從封裝到發(fā)布

    第一個Vue插件從封裝到發(fā)布

    這篇文章主要為大家詳細(xì)介紹了第一個Vue插件從封裝到發(fā)布的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue實現(xiàn)頁面的局部刷新(router-view頁面刷新)

    Vue實現(xiàn)頁面的局部刷新(router-view頁面刷新)

    本文主要介紹了Vue實現(xiàn)頁面的局部刷新(router-view頁面刷新),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Vue中如何合并el-table第一列相同數(shù)據(jù)

    Vue中如何合并el-table第一列相同數(shù)據(jù)

    這篇文章主要介紹了Vue中如何合并el-table第一列相同數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue Element前端應(yīng)用開發(fā)之整合ABP框架的前端登錄

    Vue Element前端應(yīng)用開發(fā)之整合ABP框架的前端登錄

    VUE+Element 前端是一個純粹的前端處理,前面介紹了很多都是Vue+Element開發(fā)的基礎(chǔ),從本章隨筆開始,就需要進(jìn)入深水區(qū)了,需要結(jié)合ABP框架使用
    2021-05-05
  • Vue Router的懶加載路徑的解決方法

    Vue Router的懶加載路徑的解決方法

    這篇文章主要介紹了Vue Router的懶加載路徑的解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • vue中jsonp插件的使用方法示例

    vue中jsonp插件的使用方法示例

    這篇文章主要給大家介紹了關(guān)于vue中jsonp插件的使用方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • uniapp-vue3項目中引入高德地圖的具體操作

    uniapp-vue3項目中引入高德地圖的具體操作

    這篇文章主要介紹了uniapp-vue3項目中引入高德地圖的具體操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-05-05
  • Vue中的methods、computed計算屬性和watch監(jiān)聽屬性的使用和區(qū)別解析

    Vue中的methods、computed計算屬性和watch監(jiān)聽屬性的使用和區(qū)別解析

    這篇文章主要介紹了Vue中的methods、computed計算屬性和watch監(jiān)聽屬性的使用和區(qū)別,本文通過示例代碼給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • 詳解vue-cli多頁面工程實踐

    詳解vue-cli多頁面工程實踐

    本篇文章主要介紹了詳解vue-cli多頁面工程實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue中的?watch監(jiān)聽屬性詳情

    Vue中的?watch監(jiān)聽屬性詳情

    這篇文章主要介紹了Vue中的?watch監(jiān)聽屬性詳情,mputed計算屬性用來監(jiān)聽多個數(shù)據(jù);watch?監(jiān)聽單個數(shù)據(jù);本文將具體介紹的是?watch監(jiān)聽屬性,感興趣的小伙伴可以參考一下文章的具體內(nèi)容,希望對你有所幫助
    2021-12-12

最新評論

东海县| 洛川县| 锡林浩特市| 宣汉县| 秀山| 贵南县| 邳州市| 石狮市| 镶黄旗| 石门县| 台安县| 宜章县| 潮州市| 富平县| 无为县| 肃宁县| 孝感市| 崇信县| 平乐县| 屏边| 徐闻县| 彝良县| 礼泉县| 吴旗县| 大余县| 建宁县| 正定县| 开封县| 长阳| 青神县| 松溪县| 云林县| 乐亭县| 杂多县| 丰县| 东港市| 方城县| 张北县| 宁乡县| 吴桥县| 东山县|