vue 穿梭框,vue浮动框

  vue 穿梭框,vue浮动框

  本文主要详细介绍vue梭箱的上下移动。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  本文分享了vue梭箱上下移动的具体代码,供大家参考。具体内容如下

  使用elementUI树组件的树组件

  

功能需求:

  1.左侧的子节点被移动到右侧的表中。

  2.将右侧选中的内容移动到左侧树中,有单个移动和全部移动。

  3.单击右侧节点可以上下移动。

  我们会遇到的第一个问题可能是如何让左侧的子节点只显示复选框。我这边可以根据后端返回的一个参数来判断是不是父节点(其实后端只要给父节点加一个nocheck=true就可以了)。

  //setLeftAgency:封装的请求接口名称。

  Setleftagency (params)。然后((RES)={//当返回的代码==0时,表示成功。

  if (res.data.code==0) {

  设{ data }=res.data

  Data.forEach((Item)={//遍历返回的数据。如果在此参数为item时将nocheck=true添加到当前数据,则不会显示复选框。

  如果(项。打字!==Item){

  item.nocheck=true

  }

  //删除item.children

  });

  this.parentNodes=data//将修改后的数据放入数组中,然后渲染。

  }

  左边树形结构,中间按钮,右边表格(左边树形结构和表格打包直接导入)

  class= left tree //onCreated bound这里是左树的初始化函数,parentNodes存储左树的所有数据。

  ztree:setting= setting @ onCreated= onCreated :parent nodes= parent nodes /ztree

  /div

  div class=centerBtn

  El-button type= danger plain icon= El-icon-arrow-right @ click= move table /El-button

  El-button type= danger plain icon= El-icon-d-arrow-left @ click= move treeall /El-button

  El-button type= danger plain icon= El-icon-arrow-left @ click= move tree /El-button

  El-button type= danger plain @ click= move up(index)上移/el-button

  El-button type= danger plain @ click= move down(index)下移/el-button

  /div

  div class=rightTable

  Table :data.sync=tableData //表接口返回的数据

  ref=personListSettingPage

  :loading=vxeLoading

  V-model=selectGroups //绑定右表中选定项的数组

  id=personListSettingPage

  :showPagination=false

  :height-full-screen=false

  @sort-change=sortChange

  @ checkbox-change=选择更改/在右侧选择单选事件

  @checkbox-all=selectAll //选择右侧所选项目的所有事件

  @ data-refresh= gettable data()//获取右边表格数据的函数

  vxe-表格-列type= checkbox width= 60 align= center /vxe-表格-列

  table-column field= text show-overflow= title title=所选指示器 filterType=

  /表格-列

  /表格

  /div

  使用的参数

  移动ID: ,//向下移动时存储的数据

  MoveUpId: ,//上移时遍历右表数据中存储的数据。

  SelectGroups:[],//用于存储右边选中的数据。

  TableData:[],//请求返回后,左侧的所有数据都会存放在这个数组中。

  ParentNodes:[],//左树的所有数据

  treeObj: ,

  左边的树初始化和右边的表复选框选择事件。

  //初始化ztree

  onCreated(treeObj){

  this.treeObj=treeObj

  let nodes=this . tree obj . getcheckednodes(true);

  },

  //复选框事件

  选择更改({已检查,记录}) {

  This.selectGroups=records //将选定的数据存储到数组中

  },

  //复选框选择所有事件

  选择全部({选中,记录}) {

  this.selectGroups=记录

  },

  上移

  上移(索引){

  if(this . select groups . length 0){//确定右侧是否有选中的项目。

  让goOrnot=true

  this . selectgroups . find((seitem)={//遍历右侧选项卡中选定的项目以查找相应的id

  if(seitem . id==this . move up id . id){

  这个。$ message . warning(this . move upid . text 此行没有向上移动的空间)

  goOrnot=false

  }

  })

  if(goOrnot){

  This.tabledata.foreach ((item,index)={//遍历右表中的所有数据,

  这个. set(item, rowIndex ,index) //由于受Java脚本语言的限制,vue.js不能监听对象属性的添加和删除,所以要使用$set或者对象.分配(目标,源),这样试图才会更新

  })

  让标志=真

  this.selectGroups.forEach((val,index2)={

  this.tableData.find((itm,ind)={

  if(val.id==itm.id){

  if(itm.rowIndex==0){ //遍历右侧选中数据和所有数据相对比,如果编号相同,在判断刚刚添加的行索引属性值是多少

  这个 message.warning(itm.text 此行没有上移的空间了)

  this.moveUpId=itm //把当前这条数据存起来

  标志=假

  返回

  }否则{

  if(flag){ //此时可以对多条数据进行移动了

  让改变item=JSON。解析(JSON。stringify(这个。表数据[ITM。行索引-1])

  这个。表格数据。拼接(ITM。rowindex-1,1);

  这个。表格数据。拼接(ITM。rowindex,0,changeItem)

  }

  }

  }

  })

  })

  }

  }否则{

  这个message.warning(请选择要移动的数据)

  }

  },

  下移

  下移(索引){

  if(this.selectGroups.length0){

  让goOrnot=true

  这个。选择组。查找((seItem)={

  如果(seitem。id==这个。movedownid。id){

  这个$消息。警告(这个。movedownid。文本此行没有下移的空间了)

  goOrnot=false

  }否则{

  this.moveFlag=true

  }

  })

  if(goOrnot){

  this.tableData.forEach((item,index)={

  这个. set(item, rowIndex ,Index)

  })

  让select data=JSON。解析(JSON。stringify(这个。表数据))

  让a=[.this.selectGroups]

  答。反转()。forEach((val,index2)={

  selectData.find((itm,ind)={

  if(val.id==itm.id){

  如果(ITM。rowindex==选择数据。长度-1){

  这个 message.warning(itm.text 此行没有下移的空间了)

  this.moveDownId=itm

  this.moveFlag=false

  }否则{

  if(this.moveFlag){

  let changeItem=itm

  让de lindex=选择数据。查找索引(I=I . id==更改项目。id)

  this.tableData.splice(delIndex,1);

  这个。表格数据。拼接(delIndex 1,0,changeItem)

  这个10.10 $ refs . personlistsettingpage。桌子。setcheckboxrow(this。表数据[ITM。rowindex 1],true) //给右侧桌子加了一个ref=personListSettingPage

  }

  }

  }

  })

  })

  }

  }否则{

  这个message.warning(请选择要移动的数据)

  }

  }

  表格移动到树

  /* 移入树*/

  moveTree(){

  if(this.selectGroups.length0){

  这个。选择组。foreach(item={

  this.parentNodes.find(val={

  if(val.id==item.pid){

  /* 添加节点*/

  设node=this。树对象。getnodebyparam( id ,val.id,null);

  this.treeObj.addNodes(节点,项目)

  /* 取消新增节点的选中状态*/

  设取消节点=this。树对象。getnodebyparam( id ,item.id,null);

  这个。树对象。checknode(取消节点,假,真);

  }

  })

  这个。表格数据。拼接(这个。表格数据。查找索引(val=val。id===item。id),1)

  })

  }否则{

  这个message.warning(请选择要移动的数据)

  }

  },

  树移到表格

  /* 移入表格*/

  moveTable(){

  设arr=[]

  设nodes=this。树对象。getcheckednodes(true);

  if(nodes.length0){

  nodes.forEach(item={

  this.tableData.find(val={

  数组推送(值id)

  })

  if(arr.indexOf(item.id)-1)返回此message.error(数据重复,请勿重新添加)

  this.treeObj.removeNode(item)

  这个。表格数据。推(这个。filter obj(item,[checked , codeSetId , Id , img , infoItemFlag , isMult , itemType , locked , Mult , orgCode , pid , sort , syrs , text ])//调用下面的方法,去除多余字段

  })

  }否则{

  这个message.warning(请勾选数据)

  }

  },

  封装的过滤字段

  /* 过滤对象多余字段*/

  filterObj(obj,arr) {

  常量结果={}

  Object.keys(obj).filter((key)=arr.includes(key)).forEach((key)={

  结果[关键字]=对象[关键字]

  })

  回送结果

  }

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: