select2的使用

以前主要写后端,前端接触的比较少,记录一下,方便下次使用。

这里写图片描述

输入‘北京’ 会自动调用后端接口查询 相关内容

这里写图片描述

前端代码:

<div class="row">
                <div class="form-group">
                    <div class="col-md-8">
                        <label class="col-sm-4 control-label"><span class="text-danger">*</span>中心机构</label>
                        <div class="col-sm-2">
                            <select id="organTypeId" name="organType" onchange="changeOrgan(this)" class="form-control">
                                <option value="0">选择机构</option>
                                <option value="1">医院</option>
                                <option value="2">专家组</option>
                            </select>
                        </div>

                        <div class="col-sm-6">
                            <select class="form-control g-select2" id="OrganSearchId" message="至少输入1个关键字"
                                  name="searchOrganName" data-rule-required="true">

                            </select>
                        </div>
                    </div>
                </div>
            </div>
//选中下拉框的值,把对应的值text 赋值给当前隐藏域
<div id="organHideId" class="row" style="display: none">
                <div class="form-group">
                    <div class="col-md-8">
                        <label class="col-sm-4 control-label" id="changeNameId"><span  class="text-danger">*</span></label>
                        <div class="col-sm-8">
                            <input id="organNameId" class="form-control" type="text" name="organName" disabled>
                        </div>
                    </div>
                </div>
            </div>

            //选中下拉框的值,把对应的值id 赋值给当前隐藏域
            <input type="hidden" name="hrsOrganId" id="hrsOrganId" />

对应的js代码:

 $("#OrganSearchId").select2({
            language: "zh-CN",
            multiple: true,
            minimumInputLength: 1,
            ajax: {
                url: "/medicalunion/organSearch",
                dataType: "json",
                delay: 250,
                data: function (params) {
                    return {
                        q: params.term,
                        organType:$("#organTypeId").val()
                    };
                },
                processResults: function (res, params) {
                    var list = [];
                    res.forEach(function (item) {
                        list.push({
                            id: item.hrsOrganId,
                            text: item.organName +"("+ item.hospName+"\t"+item.deptName+")"
                        });
                    });
                    return {
                        results: list
                    };
                },
                cache: true
            },
            escapeMarkup: function (markup) {
                return markup;
            },
            templateResult: function (repo) {
                if (repo.loading) return repo.text;
                return $('<option>', repo);
            },
            templateSelection: function (repo) {
                console.log(repo.text)

                $("#hrsOrganId").val(repo.id);
                chooseOrgan(repo.text);

                $("#OrganSearchId").html('');
                return repo.text;
            }
        });
    })

重点解析:
查询参数的设置 + 接口返回的json字符串(List) 的处理

这里写图片描述

模板数据 + 选中查询数据关联的级联操作js
这里写图片描述

后端springmvc 查询服务代码:

@RequestMapping(value = "organSearch",method = RequestMethod.GET)
    @ResponseBody
    public String organSearch(String organType, String q) {

        List<OrganNameVO> resultList = new ArrayList<>();
            if (organType.equals(ORGANIZATION_TYPE_HOSP.toString())) {
                HospitalSearchParam param = new HospitalSearchParam();
                param.setQ(q);
                <HospitalSearchResultDTO> list = searchManager.hospitalSearch(param);
                HospitalSearchResultDTO listData = list.getData();
                if (listData == null || CollectionUtils.isEmpty(listData.getHospital())) {
                    return JsonUtils.writeValueAsString(resultList);
                }
                List<HospitalSearchResultDocsDTO> resultDocsDTOList = listData.getHospital();

                List<OrganNameVO> voList = transformHospital(resultDocsDTOList);

                return JsonUtils.writeValueAsString(voList);
            } else if (organType.equals(ORGANIZATION_TYPE_EPGROUP.toString())) {
                ExpertGroupSearchParam param = new ExpertGroupSearchParam();
                param.setQ(q);
                Response<ExpertGroupSearchResultDTO> list = searchManager.expertGroupSearch(param);

                List<OrganNameVO> voList = transform(list.getData().getDocs());

                return JsonUtils.writeValueAsString(voList);

            } else {

                return JsonUtils.writeValueAsString(resultList);
            }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值