Vue element——穿梭框,

在这里插入图片描述
在这里插入图片描述

功能:右侧已下发的拓扑可以取消下发到左侧,相反左侧为下发的拓扑可以通过接口(保存时)添加到右侧。


<!-- 穿梭框-->
            <div class="transfer-box">
              <div style="text-align: center">
                <el-transfer
                  :titles="['拓扑列表', '选中拓扑']"
                  style="text-align: left; display: inline-block"
                  v-model="selectList"
                  :props="{
                    key: 'topologyId',
                    label: 'topologyName'
                  }"
                  :data="preData"
                >
                </el-transfer>
              </div>
            </div>
data(){
    return:{
   	  selectList: [],
      cloneSelectList: [],
      issuedId: ''
    
    }
},
methods:{
   //左侧接口:
    getTopology() {
      getTopology({ topologyName: this.airData }).then(res => {
        if (res.data) {
          this.preData = res.data;//左侧数据渲染
        }
        this.getIssued();
      });
    },
    //右侧接口
    getIssued() {
      getIssued({ energyManagementId: this.issuedId, topologyName: this.airData }).then(res => {
        if (res.data) {
          this.cloneSelectList = cloneDeep(res.data);//使用项目中lodash的深拷贝
          this.preData = this.preData.concat(res.data);//右侧数据渲染
          this.selectList = res.data.map(v => v.topologyId);//element穿梭框v-model只能绑定一个值id,所以map处对象里面的id
        }
      });
    },
}

//保存接口
 confirm() {
      const needIssuedData = this.selectList.filter(v => !this.cloneSelectList.find(vl => v == vl.topologyId));
      let arrNeedIssuedData = [];
      this.preData.forEach(v => {
        if (needIssuedData.includes(v.topologyId)) {
          arrNeedIssuedData.push({
            ...v,
            energyManagementId: this.issuedId
          });
        }
      });
      const notNeedIssued = this.cloneSelectList.filter(v => !this.selectList.find(vl => vl == v.topologyId)).map(v => v.topologyId);
      let params = {
        oacecEnergyIssued: arrNeedIssuedData,//左侧下发右侧的数据格式
        topologyId: notNeedIssued//右侧下发左侧的数据的格式
      };
      energyIssued(params).then(res => {
        if (res.success) {
          this.$message.success(res.message);
          this.close();
        } else {
          this.$message.warning(res.message);
          this.close();
        }
      });
    },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值