复选框的级联操作

本文介绍了一个在医院管理平台中实现复选框级联操作的示例,当选择一个科室时,其下属的医生信息会自动加载。前端通过jQuery AJAX获取并填充科室及医生的选项,后端使用SSM框架处理请求,返回医生列表。示例代码包括前端HTML、JS以及后端Service和Controller层的方法。
摘要由CSDN通过智能技术生成

复选框的级联操作:
选中一个节点后,该节点下的所有子节点均置为选中;选择其他节点后,该节点取消选中,重新选中需要的节点。
以下举个栗子:
以医院管理平台的所挂科室和指定医生为例,数据量较少,因此每个子节点只有一个数据,关键点可以实现。使用SSM框架进行编写,代码不完善,仅作解释。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.前端页面

1.1

首先给复选框加相应的id和name,此处的οnclick="loadDoctor()"为在选中所挂科室信息后,将加载该科室节点下的子节点的信息------指定医生的姓名,如有需要,可添加其他相关信息。

	<tr>
        <td width="10%" class="tableleft">所挂科室</td>
        <td><select id="dep" name="depId" onclick="loadDoctor()"></select></td>
    </tr>
    <tr>
        <td width="10%" class="tableleft">指定医生</td>
        <td><select id="doc" name="doctor"></select></td>
    </tr>
1.2前台主要代码

先获取选中的科室编号,再根据科室编号查询对应的医生子节点。

	function queryKeShi(){
        $.ajax({
            type:"GET",
            url:"/DD/keshi/list",
            data:"",
            success:function (vo){
                let list=vo.pageInfo.list;
                for (let i=0;i<list.length;i++){
                    let obj=list[i];
                    let depName=obj.depName;
                    let depId=obj.depId;
                    $("#dep").append(
                        '<option value="'+depId+'">'+depName+'</option>'
                    );
                }
            }
        })
    }
    function loadDoctor(){
        let myselect=document.getElementById("dep");
        let index=myselect.selectedIndex ;
        let depId=myselect.options[index].value;
        //alert("21"+depId);
        queryDoctor(depId);
    }
    function  queryDoctor(depId){
        //清空select下拉框
        $("#doc").empty();
        //alert("21"+depId);
        $.ajax({
            type:"GET",
            url:"/DD/"+depId,
            data:"",
            success:function (vo){
                let list=vo.pageInfo.list;
                for (let i=0;i<list.length;i++){
                    let obj=list[i];
                    let dName=obj.dName;
                    let dId=obj.dId;
                    $("#doc").append(
                        '<option value="'+dId+'">'+dName+'</option>'
                    );
                }
            }
        });
    }

2.后台部分

2.1Service层代码

QueryRegisterVO 类主要用于获取前端输入的值。

@Service
public class RegisterService {
    @Resource
    private DoctorMapper doctorMapper;
    @Resource
    private DepartmentMapper departmentMapper;
	@Transactional(propagation = Propagation.REQUIRED,readOnly = true)
	    public List<Department> queryKeShi(QueryRegisterVO vo){
	        DepartmentExample departmentExample = new DepartmentExample();
	        //创建存放条件的容器
	        DepartmentExample.Criteria criteria = departmentExample.createCriteria();
	        //用于获取前端输入的值,并对数据库进行查询
	        if (vo.getdKeshi() != null){
	            criteria.andDepIdEqualTo(vo.getDepId());
	        }
	        List<Department> list = departmentMapper.selectByExample(null);
	        return list;
	    }
	
	    @Transactional(propagation = Propagation.REQUIRED,readOnly = true)
	    public List<Doctor> queryDoctor(QueryRegisterVO vo) {
	        DoctorExample doctorExample = new DoctorExample();
	        DoctorExample.Criteria criteria = doctorExample.createCriteria();
	        if (vo.getDepId() != null){
	            criteria.andDepIdEqualTo(vo.getDepId());
	        }
	        List<Doctor> list = doctorMapper.selectByExample(doctorExample);
	        return list;
	    }
2.2Controller层

主要有前端获取数据的访问路径和封装的返回结果。

@Controller
@RequestMapping("DD")
@ResponseBody
public class DDController {
    @Resource
    private RegisterService registerService;

    @RequestMapping("keshi/list")
    public ResultVO<Department> queryKeShi(QueryRegisterVO vo){
        PageInfo<Department> departmentPageInfo = new PageInfo<>(registerService.queryKeShi(vo));
        System.out.println("51"+departmentPageInfo);
        return new ResultVO<>(departmentPageInfo);
    }

    @RequestMapping(value = "{depId}",method = RequestMethod.GET)
    public ResultVO<Doctor> queryDoctor(QueryRegisterVO vo){
        PageInfo<Doctor> doctorPageInfo = new PageInfo<>(registerService.queryDoctor(vo));
        return new ResultVO<>(doctorPageInfo);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值