jeefast框架:实现【二级联动查询】及【修改默认选中】功能

jeefast框架:实现【二级联动查询】及【修改默认选中】功能

这个是我的学生表
在这里插入图片描述
下面这个是我的班级表
在这里插入图片描述
年级和班级差不多

先在html中编辑联动下拉框的样式

<div class="form-group">
				<div class="col-sm-2 control-label">年级</div>
				<div class="col-sm-10">
					<select class="form-control" v-model="student.gid"  @change="getClass()" id="selected">
						<option v-for="(v,index) in grade" :value="v.gid">{{v.gname}}</option>
					</select>
				</div>
			</div>
			//v-model="student.gid"这个是我在学生实体类中定义了虚假的gid,,将选中的年级id赋给gid,便于后面取用
			//@change是当我点击选中年级时,我会自动调用getClass()方法,根据选中年级的id查询班级表中的内容
			<div class="form-group">
				<div class="col-sm-2 control-label">班级</div>
				<div class="col-sm-10">
					<select class="form-control" v-model="student.cid" >
						<option v-for="(v,index) in classes" :value="v.cid">{{v.cname}}</option>
					</select>
				</div>
			</div>

接下来就是通过js和后台的数据交互,来从前台请求数据,然后从后端返回数据给前端,再将返回的数据给HTML显示出来。

下面是js代码

$(function () {
    $("#jqGrid").jqGrid({
        url: baseURL + 'platform/student/list',
        datatype: "json",
        colModel: [			
			{ label: 'ID', name: 'id', index: "id", width: 15, key: true },
			{ label: '学生姓名', name: 'name', width: 30 },
			{ label: '班级', name: 'pf_class.cname', width: 30 },
			// { label: '年级', name: 'pf_grade.gname', width: 40 },
			{ label: '身份证号', name: 'card', width: 60 },
            { label: '类型', name: 'type', width: 30, formatter: function(value, options, row){
				return value === 0 ? 
						'<span class="label label-danger">平台通知</span>' : 
						'<span class="label label-success">业务通知</span>';
			}},
			{ label: '头像',name: 'file',width:50,formatter:function (value, options, row) {
					var img="<img src='"+value+"'style=width:120px;height:65px;"+vm.student.file+">";
					return img;
				}},
			{ label: '地址', name: 'content', width: 100 },
			{ label: '发布时间', name: 'publishTime', width: 53 },
			{ label: '创建人', name: 'createrName', width: 30 }
        ],
		viewrecords: true,
        height:500,
        rowNum: 10,
		rowList : [10,30,50],
        rownumbers: true, 
        rownumWidth: 25, 
        autowidth: true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader : {
        	root: "page.records",
            page: "page.current",
            total: "page.pages",
            records: "page.total"
        },
        prmNames : {
            page:"page", 
            rows:"limit", 
            order: "order"
        },
        gridComplete:function(){
        	//隐藏grid底部滚动条
        	$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" }); 
        }
    });
});

var vm = new Vue({
	el:'#jeefastapp',
	data:{
		q:{
			name: '',
			gid:0,
			cid:0,
		},
		showList: true,
		title: null,
		student: {},
		classes:{},
		grade:{},
	},
	mounted() {
		this.getGrade();
	},
	methods: {
		query: function () {
			vm.reload();
		},
		add: function(){
			vm.showList = false;
			vm.title = "新增";
			vm.classes=[];
			vm.student = {};
			this.getGrade();

		},
		update: function () {
			var studentId = getSelectedRow();
			if(studentId == null){
				return ;
			}
			vm.showList = false;
            vm.title = "修改";
			vm.getstudent(studentId);
			this.getGrade();
			var classesId = vm.student.gid;//这一步就是我们将年级的主键gid的值 赋给变量classesId;
			this.getClass(classesId);//将这个变量赋值给this.getClass(classesId);来查询班级表的内容
		},
		del: function () {
			var studentIds = getSelectedRows();
			if(studentIds == null){
				return ;
			}

			confirm('确定要删除选中的记录?', function(){
				$.ajax({
					type: "POST",
				    url: baseURL + "platform/student/delete",
                    contentType: "application/json",
				    data: JSON.stringify(studentIds),
				    success: function(r){
						if(r.code == 0){
							alert('操作成功', function(){
                                vm.reload();
							});
						}else{
							alert(r.msg);
						}
					}
				});
			});
		},
		saveOrUpdate: function () {
			var url = vm.student.id == null ? "platform/student/save" : "platform/student/update";
			$.ajax({
				type: "POST",
			    url: baseURL + url,
                contentType: "application/json",
			    data: JSON.stringify(vm.student),
			    success: function(r){
				// alert(JSON.stringify(r));
			    	if(r.code == 0){
						alert('操作成功', function(){
							vm.reload();
						});
					}else{
						alert(r.msg);
					}
				}
			})
		},
		getstudent: function(studentId) {
			$.ajax({
				type: 'post',
				url: baseURL + "platform/student/info/" + studentId,
				contentType: "application/json",
				async:false,			//async:false 是同步请求数据
				success: function (result) {
					if (result.code == 0) {
						vm.student = result.student;
					}
					/*请求后台服务器,获取student表中的外键cid,将cid赋值给变量classesId,作为条件;
					查询数据库class表中的数据,获取class表中的gid,将gid赋值给data方法中的student中*/
					//这一步的作用是获取cid,和gid值,赋值给data中的student,方便之后取用
					var classesId = vm.student.cid;
					$.ajax({
						type: 'post',
						url: baseURL + "platform/class/info/" + classesId,
						contentType: "application/json",
						async: false,
						success: function (result) {
							// alert(JSON.stringify(result));
							if (result.code == 0) {
								vm.student.gid = result.classes.gid;
							}
						}
					});// alert(vm.student.cid);//通过她在查询下 请求控制器1901
				}
			});
			// alert(vm.student.gid);
		},
		/*
		* 班级表
		* */
		getClass:function(){
			// var classesId=$("#selected").val();
			var classesId=vm.student.gid;
			// alert(classesId);
			$.ajax({
				type: 'post',
				url:baseURL + "platform/class/findByIdAll/"+classesId,
				contentType: "application/json",
				async:false,
				success:function (result) {
					if(result.code==0){
						vm.classes=result.classes;
					}
				}
			});
		},
		/*
		* 年级表
		* */
		getGrade:function(){
			$.ajax({
				type: 'post',
				url:baseURL + "platform/grade/findAll/",
				contentType: "application/json",
				success:function (result) {
					if(result.code==0){
						vm.grade=result.grade;
					}
				},
			});
		},
		reload: function () {
			vm.showList = true;
			var page = $("#jqGrid").jqGrid('getGridParam','page');
			$("#jqGrid").jqGrid('setGridParam',{
                postData:{
							'name': vm.q.name,
							'cid': vm.q.cid,
						 },
                page:page
            }).trigger("reloadGrid");
		},
	},
});

后端主要代码,如下

baseURL + “platform/grade/findAll/” :前端请求后端数据的路由,查询年级表中的内容

@RequestMapping("/findAll")
	@RequiresPermissions("platform:grade:findAll")
	public R list(){
		Map<String, Object> map=new HashMap<>();
		List<Grade> list = GradeService.selectByMap(map);
		return R.ok().put("grade", list);
	}

baseURL + “platform/class/findByIdAll/”+classesId, :前端请求后端数据的路由,查询班级表中的内容

@RequestMapping("/findByIdAll/{classesId}")
	@RequiresPermissions("platform:class:findByIdAll")
	public R list(@PathVariable("classesId") int classesId){
		Map<String, Object> map=new HashMap<>();
		map.put("gid",classesId);
		List<Class> list = ClassService.findAll(map);
		return R.ok().put("classes", list);
	}

通过班级表中的年级外键,就可以定位到这个班级是在哪一个年级下的了。同理,就可以实现修改默认了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平平常常一般牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值