IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue+ElementUI+<el-transfer>实现穿梭框动态选择功能 -> 正文阅读

[JavaScript知识库]Vue+ElementUI+<el-transfer>实现穿梭框动态选择功能

效果图:
在这里插入图片描述
数据库设计
学生表【student】
课程表【course】
学生与课程关系表【studentCourseRef】
后端返回对象是以主子表数据形式,返回学生列表信息以及学生与课程关系列表信息,如图

	private Long id;
	/** 学号 */
    private Long studentId;
    /** 学生姓名 */
    private String studentName;
    /** 学生与课程关系列表 */
    private List<StudentCourseRef> studentCourseRefList;

所以,前端调用接口查询当前学生信息的时候,后端要通过查询参数先找到学生与课程关系信息,再用学生对象.setStudentCourseRefList赋值,最后返回当前学生信息。

前端相关代码:

    <!-- 添加或修改学生信息对话框 -->
    <el-drawer :title="title" :visible.sync="open" size="50%">
      <el-form ref="form" :model="form" :rules="rules" label-width="100px" style="margin: 0 32px;">
	    <el-form-item label="学生姓名" prop="studentName">
	      <el-input v-model="form.studentName" placeholder="请输入学生姓名" />
	    </el-form-item>
		<el-form-item label="选择课程" prop="course">
		  <el-transfer
		    filterable
		    :filter-method="filterMethod"
		    filter-placeholder="请输入关键字"
		    :titles="['可选课程', '已选课程']"
		    :data="leftList"
		    v-model="rightList">
		  </el-transfer>
		</el-form-item>
	  </el-form>
    </el-drawer>
// 接口方法
import { getStudent, updateStudent } from "@/api/student";
import { listCourse } from "@/api/course";
export default {
  data() {
    return {
      // 可选课程列表(左边)
      leftList: [],
      // 已选课程列表(右边,只需要key)
      rightList: [],
      // 表单参数
      form: {},
      // 表单校验
      rules: {}
    };
  },
  created() {
    this.getCourseList();
  },
  methods: {
    // 搜索关键字
    filterMethod(query, item) {
        return item.label.indexOf(query) > -1;
    },
    getCourseList() {
      // 调用查询课程列表接口
      listCourse(this.queryParams).then(response => {
        for(let i in response.rows){
          // 将返回的课程列表赋值于穿梭框左边列表
          this.leftList.push({
            key: response.rows[i].id,
            label: response.rows[i].courseName
          })
        }
        this.loading = false;
      });
    },
    // 两个数据ID转换的方法
    changeRefListToCourseIdList(data,fun) {
      let idList = [];
      for(let i in data){
        idList.push(data[i].courseId);
      }
      fun(idList);
    },
    changeCourseIdListToRefList(data,fun) {
      let refList = [];
      for(let i in data){
        let studentCourseRef = {
          courseId: data[i]
        }
        refList.push(studentCourseRef);
      }
      fun(refList);
    },
    /** 选课操作 */
    handleUpdate(row) {
      this.reset();
      let that = this;
      const id = row.id || this.ids
      getStudent(id).then(response => {
        this.form = response.data;
		// 把返回的关系表数据转换成右边已选课程列表,用于数据回显
		this.$options.methods.changeRefListToCourseIdList(response.data.studentCourseRefList, function(data){
          that.rightList = data;
        });
        this.open = true;
        this.title = "选课操作";
      });
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          let that = this;
          // 将已选课程列表的数据添加到关系表中,提交
          this.$options.methods.changeCourseIdListToRefList(this.rightList, function(data){
            that.form.studentCourseRefList = data;
            if (that.form.id != null) {
              updateStudent(that.form).then(response => {
                that.msgSuccess("课程选择成功");
                that.open = false;
                that.getList();
              });
            }
          });
        }
      });
    },
  }
}  

相关文章 > ElementUI官网el-transfer标签的使用教程

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 23:56:02  更:2021-07-24 23:56:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 18:13:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码