vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询

基于element Transfer

http://element-cn.eleme.io/#/zh-CN/component/transfer

直接上代码

<template>
<div class="auth-user-list">
<el-breadcrumb separator="/">
<el-breadcrumb-item>XXXXX</el-breadcrumb-item>
<el-breadcrumb-item>编辑XXX</el-breadcrumb-item>
</el-breadcrumb>
<div class="content">
<div class="content-title">编辑XXXX</div>
<p style="text-align: center; margin: 0 0 20px"></p>
<div style="text-align: center">
<el-transfer
style="text-align: left; display: inline-block;height: 500px;"
v-model="value3"
filterable
filter-placeholder="请输入用户名称"
:left-default-checked="[2, 3]"
:right-default-checked="[1]"
:render-content="renderFunc"
:titles="['用户列表', '用户列表']"
:button-texts="['到左边', '到右边']"
@change="handleChange"
:data="data">
<el-button class="transfer-footer" slot="right-footer" size="small" @click="savaUser">保存</el-button>
</el-transfer>
<p style="text-align: center; margin: 0 0 20px"></p>
</div>
</div>
</div>
</template>
<style lang="less" rel="stylesheet/less">
.auth-user-list {
.block-header {
font-size: 12px !important;
margin-top: 5px;
}
.transfer-footer {
margin-left: 20px;
padding: 6px 5px;
}
.el-transfer-panel {
width: 300px;
}
}
</style>
<style lang="less" rel="stylesheet/less" scoped>
.search {
margin-left: 10px;
}
.page-block {
text-align: right;
margin-top: 10px;
}
</style>
<script>
export default {
data() {
const generateData = _ => {
const data = [];
for (let i = 1; i <= 4; i++) {
data.push({
key: i,
label: `备选项 ${i}`,
disabled: i % 4 === 0
});
}
return data;
};
return {
realName: "",
groupId: $.trim(this.$route.params.groupId),
data: generateData(),
pinyin: [],
value3: [],
filterMethod(query, item) {
return item.pinyin.indexOf(query) > -1;
},
renderFunc(h, option) {
return (
<span>
{option.label} //页面展示的数据
</span>
);
}
};
},
watch: {},
computed: {},
methods: {
handleChange(value, direction, movedKeys) {
// console.log(value);
},
/**
* 获取列表数据
**/
getUserInfo: function() {
let me = this;
//清空数据
me.data = [];
me.value3 = [];
me.$ajax
.getUserInfoPage(
{},
{
type: "POST"
}
)
.then(users => {
if (users) {
users.res.forEach(function(c, index) {
me.pinyin.push(c.realname);
me.data.push({
key: c.rightUserId,
label: c.realname,
// disabled: i % 4 === 0
pinyin: me.pinyin[index] //添加数据时设置pinyin的索引
});
});
}
}); me.$ajax
.getUserInfoPageByGroupId(
{
realName: $.trim(this.realName),
groupId: $.trim(this.$route.params.groupId)
},
{
type: "POST"
}
)
.then(users => {
if (users) {
users.res.forEach(function(c) {
me.value3.push(c.rightUserId);
});
}
});
},
//保存用户关系
savaUser() {
this.$ajax
.savaUser(
{
userIdList: this.value3,
groupId: $.trim(this.$route.params.groupId)
},
{
type: "POST"
}
)
.then(res => {
this.getUserInfo();
this.$message({
type: "success",
message: "保存成功"
});
});
},
},
mounted() {
//加载用户信息
this.getUserInfo();
}
};
</script>

说明

1.代码中的 me.$ajax为自己封装的ajax组件 需要改成自己的ajax

2.首先调用mounted()中的 getUserInfo() 加载用户数据

3.data() 中的data为页面展示的数据

4.data() 中的value3保存的是ajax传递的数据

5.data() 中的 pinyin 为查询时的内容,需要注意当getUserInfoPage()查询后端返回的列表数据班车数据 名称应该和 me.pinyin[index]的

索引一致

6.getUserInfo 中触发了两个ajax可以进行优化

7.$message为引入的消息控件

8.未解决问题 const generateData 没有进行删除,删除后共多少人展示为0

vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询的更多相关文章

  1. 修改vue element Transfer 穿梭框里内容区的宽度

    <template> <el-transfer v-model="value1" :data="data"></el-transf ...

  2. Ant Design Pro中Transfer穿梭框的实际用法(与后端交互)

    Ant Design Pro中Transfer穿梭框的实际用法(与后端交互) 该控件的属性以及属性的作用在ADP的官方文档中都有介绍,但没有讲如何与后端交互,本文旨在讲解该控件与后端的交互. Ant ...

  3. 关于ajax请求数据,并将数据赋值给全局变量的一些解决方法

    在使用ajax请求数据是,开始的时候是打算将ajax的数据取出,并赋予给全局变量,但是在实际编码过程中发现并不能将数据赋予给最开始定义的全局变量,出现这个问题的原因是由于ajax异步加载的原因,所以只 ...

  4. Ajax请求数据的两种方式

    ajax 请求数据的两种方法,有需要的朋友可以参考下. 实现ajax 异步访问网络的方法有两个.第一个是原始的方法,第二个是利用jquery包的 原始的方法不用引入jquery包,只需在html中编写 ...

  5. h5-localStorage实现缓存ajax请求数据

    使用背景:要实现每次鼠标hover“能力雷达”,则显示能力雷达图(通过ajax请求数据实现雷达图数据显示),所以每次hover都去请求ajax会影响性能,因此这里要用到本地缓存. 实现: 此处是通过传 ...

  6. session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java推断是否是ajax请求)

    在登录过滤器中.推断请求是ajax请求还是超链接或者地址栏变化的请求 if (httpServletReq.getHeader("x-requested-with") != nul ...

  7. 使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)

    参考链接:https://www.highcharts.com.cn/docs/ajax 参考链接中的示例代码是使用php写的,这里改用python写. 需要注意的地方: 1.接口返回的数据格式,这个 ...

  8. vue Transfer 穿梭框

    Element Transfer组件默认支持单个list的穿梭 现业务需要支持两个list,效果如下 实现思路: 1.有选中才可穿梭 2.已穿梭源数据减少.目标增加(双向) 边界条件: 存储旧List ...

  9. Vue实现拖拽穿梭框功能四种方式

    一.使用原生js实现拖拽 点击打开视频讲解更加详细 <html lang="en"> <head> <meta charset="UTF-8 ...

随机推荐

  1. mysql 备份数据库 mysqldump

    @echo off for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE ...

  2. PDF文档打印太慢怎么办

    如下图,用Adobe Acrobat打开PDF文件,然后[高级]-打勾[作为图像打印]即可

  3. ODAC 下载

    官网地址: https://www.oracle.com/technetwork/topics/dotnet/downloads/odacdev-4242174.html 官方说说明: ODAC 18 ...

  4. React componentWillUpdate

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  5. HTTP消息头(HTTP headers)-常用的HTTP请求头与响应头

    HTTP消息头是指,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件.HTTP消息头用来准确描述正在获取的资源.服务器或 ...

  6. Java微信二次开发(四)

    自定义文字菜单,暂时先实现一个根据用户输入城市名称来查询邮政编码和查询区号的功能 需要导入库:mysql-connector-java-5.0.8-bin.jar 第一步:利用Navicat新建一个用 ...

  7. html 文档类型

    <!doctype>用来声明html的版本,浏览器只有知道html的版本后才能正确显示文档,<!DOCTYPE>本身不是一个标签,而是一个声明.

  8. 【转】Caffe的solver文件配置

    http://blog.csdn.net/czp0322/article/details/52161759 solver.prototxt 今天在做FCN实验的时候,发现solver.prototxt ...

  9. C++拷贝构造函数与 = 重载

    调用拷贝构造函数进行初始化的时候,是不会调用=重载的. // test.cpp : 定义控制台应用程序的入口点. // //#include "stdafx.h" #include ...

  10. wamp下var_dump()相关问题

    PHP 使用var_dump($arr)时 没有格式化输出. 原因是没有启用‘XDebug’扩展 [xdebug]zend_extension ="d:/wamp/bin/php/php7. ...