HAP_省市联级查询

实现效果:


image.png

步骤一:自定义查询

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="wht.customer.mapper.BaseAddressNameMapper">
   <resultMap id="BaseResultMap" type="wht.customer.dto.BaseAddressName">
       <result column="ADDRESS_ID" property="addressId" jdbcType="DECIMAL" />
       <result column="ADDRESS_NAME" property="addressName" jdbcType="VARCHAR" />
       <result column="DESCRIPTION" property="description" jdbcType="VARCHAR" />
       <result column="TYPE" property="type" jdbcType="VARCHAR" />
       <result column="PARENT_ADDRESS_ID" property="parentAddressId" jdbcType="DECIMAL" />
       <result column="AREA_CODE" property="areaCode" jdbcType="VARCHAR" />
   </resultMap>

   <!--地址联级查询-->
   <select id="getAddressByType"
           resultMap="BaseResultMap"
           parameterType="wht.customer.dto.BaseAddressName">

       SELECT
        ADDRESS_ID
       ,ADDRESS_NAME
       ,PARENT_ADDRESS_ID
       FROM hcrm_base_address_name
       WHERE TYPE = #{type, jdbcType= VARCHAR}
       AND PARENT_ADDRESS_ID = #{parentAddressId, jdbcType= DECIMAL}
   </select>
</mapper>
package wht.customer.mapper;

import com.hand.hap.mybatis.common.Mapper;
import wht.customer.dto.BaseAddressName;

import java.util.List;

public interface BaseAddressNameMapper extends Mapper<BaseAddressName>{
    /**
     * 联级查询
     * @param dto
     * @return
     */
    List<BaseAddressName> getAddressByType(BaseAddressName dto);
}
package wht.customer.service;

import com.hand.hap.core.ProxySelf;
import com.hand.hap.system.service.IBaseService;
import wht.customer.dto.BaseAddressName;

import java.util.List;

public interface IBaseAddressNameService extends IBaseService<BaseAddressName>, ProxySelf<IBaseAddressNameService> {
    /**
     * 联级查询
     * @param dto
     * @return
     */
    List<BaseAddressName> getAddressByType(BaseAddressName dto);
}
package wht.customer.service.impl;

import com.hand.hap.system.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import wht.customer.dto.BaseAddressName;
import wht.customer.mapper.BaseAddressNameMapper;
import wht.customer.service.IBaseAddressNameService;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(rollbackFor = Exception.class)
public class BaseAddressNameServiceImpl extends BaseServiceImpl<BaseAddressName> implements IBaseAddressNameService {

    @Autowired
    private BaseAddressNameMapper mapper;

    /**
     * 省份联级查询
     *
     * @return
     */
    @Override
    public List<BaseAddressName> getAddressByType(BaseAddressName dto) {
        return mapper.getAddressByType(dto);
    }
}

注意传递的参数


    /**
     * 联级查询
     *
     * @param request
     * @param type
     * @return
     */
    @RequestMapping(value = "/hcrm/base/customer/getAddressByType")
    @ResponseBody
    public List<BaseAddressName> getAddressByType(HttpServletRequest request, @RequestParam("type") String type,@RequestParam("parentAddressId") Long parentAddressId) {
        System.out.println("===" + type);
        System.out.println("===" + parentAddressId);
        BaseAddressName baseAddressName=new BaseAddressName();
        baseAddressName.setType(type);
        baseAddressName.setParentAddressId(parentAddressId);
        IRequest iRequest = createRequestContext(request);
        ResponseData responseData = new ResponseData();
        List<BaseAddressName> list = new ArrayList<>();
        try {
            list = service.getAddressByType(baseAddressName);
        } catch (Exception e) {
            responseData.setSuccess(false);
            responseData.setMessage(e.getMessage());
        }
        for(BaseAddressName addressName:list){
            System.out.println(addressName.getType()+addressName.getAddressName()+addressName.getParentAddressId());
        }
        return list;
    }

js文件,这里从数据库中查找数据


image.png

//页面加载完成后
$(function () {
    countryDownload();
})
/**
 * 国家
 */
function countryDownload() {
    $("#addressProvince").empty();
    $("#addressCity").empty();
    $("#addressZone").empty();
    $.ajax({
        url: '/hcrm/base/customer/getAddressByType?type=COUNTRY&parentAddressId=0',
        type: 'POST',
        dataType: "json",
        contentType: "application/json",
        success: function (result) {
            /*获取控件元素,并向元素加值*/
            var sel = document.getElementById("addressCountry");
            for (var i in result) {
                var id = result[i].addressId;
                var name = result[i].addressName;
                console.log("result" + result[i].addressName);
                var option = new Option(name, id);
                sel.options.add(option);
            }
        }
    });
}

/**
 * 省份
 */
function provinceDownload() {

    var addressCountry = $("#addressCountry").val();
    $("#addressProvince").empty();
    $("#addressCity").empty();
    $("#addressZone").empty();
    console.log("addressCountry:" + addressCountry);
    $.ajax({
        url: '/hcrm/base/customer/getAddressByType?type=PROVINCE&parentAddressId=' + addressCountry,
        type: 'POST',
        dataType: "json",
        contentType: "application/json",
        success: function (result) {
            var sel = document.getElementById("addressProvince");
            for (var i in result) {
                var id = result[i].addressId;
                var name = result[i].addressName;
                console.log("result" + result[i].addressName);
                var option = new Option(name, id);
                sel.options.add(option);
            }

        }
    });
}

/**
 * 城市
 */
function cityDownload() {
    var addressProvince = $("#addressProvince").val();
    $("#addressCity").empty();
    $("#addressZone").empty();
    console.log("addressProvince:" + addressProvince);
    $.ajax({
        url: '/hcrm/base/customer/getAddressByType?type=CITY&parentAddressId=' + addressProvince,
        type: 'POST',
        dataType: "json",
        contentType: "application/json",
        success: function (result) {
            var sel = document.getElementById("addressCity");
            for (var i in result) {
                var id = result[i].addressId;
                var name = result[i].addressName;
                console.log("result" + result[i].addressName);
                var option = new Option(name, id);
                sel.options.add(option);
            }
        }
    });
}

/**
 * 县区
 */
function zoneDownload() {

    var addressCity = $("#addressCity").val();
    $("#addressZone").empty();
    console.log("addressCity:" + addressCity);
    $.ajax({
        url: '/hcrm/base/customer/getAddressByType?type=AREA&parentAddressId=' + addressCity,
        type: 'POST',
        dataType: "json",
        contentType: "application/json",
        success: function (result) {
            var sel = document.getElementById("addressZone");
            for (var i in result) {
                var id = result[i].addressId;
                var name = result[i].addressName;
                console.log("result" + result[i].addressName);
                var option = new Option(name, id);
                sel.options.add(option);
            }
        }
    });
}

页面代码 记得在script调用这个 countryDownload();

<script src="/resources/js/address.js"></script>


<div class="row">
            <!-- 国家 -->
            <div class="col-sm-3">
                <div class="form-group">
                    <label class="col-sm-4 control-label"><@spring.message
                        "customer.addresscountry"/></label>
                    <div class="col-sm-8">
               <!--         <input data-role="combobox" data-value-primitive="true" placeholder="国家"
                                type="text" id="addressCountry" style="width: 100%"
                                data-bind="value:model.addressCountry" class="k-textbox"/>-->
                        <select id="addressCountry" name="addressCountry" onclick="provinceDownload()"
                                data-role="combobox" data-value-primitive="true" placeholder="国家"
                                style="width: 170px; height: 30px" data-text-field="meaning" data-value-field="value"
                                data-bind="value:model.addressCountry" aria-disabled="false">
                        </select>
                        <!--<script>kendo.bind($('#addressCountry'), viewModel);</script>-->
                        <!--<select id="addressCountry" name="addressCountry" onchange="provinceDownload()" style="width: 100%;background-color:#f0f0f0" class="k-textbox">
                        </select>-->
                    </div>
                </div>
            </div>
            <!-- 省份 -->
            <div class="col-sm-3">
                <div class="form-group">
                    <label class="col-sm-4 control-label"><@spring.message
                        "customer.addressprovince"/></label>
                    <div class="col-sm-8">
                 <!--       <input type="text" id="addressProvince" style="width: 100%"
                               data-bind="value:model.addressProvince" class="k-textbox">-->
                        <select id="addressProvince" name="addressProvince" onclick="cityDownload()"
                                data-role="combobox" data-value-primitive="true" placeholder="省份"
                                style="width: 170px; height: 30px" data-text-field="meaning" data-value-field="value"
                                data-bind="value:model.addressProvince" aria-disabled="false">
                        </select>
                        <!--<script>kendo.bind($('#addressProvince'), viewModel);</script>-->
                    </div>
                </div>
            </div>
            <!-- 城市 -->
            <div class="col-sm-3">
                <div class="form-group">
                    <label class="col-sm-4 control-label"><@spring.message
                        "customer.addresscity"/></label>
                    <div class="col-sm-8">
                        <!--<input type="text" id="addressCity" style="width: 100%"
                               data-bind="value:model.addressCity" class="k-textbox">-->
                        <select id="addressCity" name="addressCity" onclick="zoneDownload()"
                                data-role="combobox" data-value-primitive="true" placeholder="城市"
                                style="width: 170px; height: 30px" data-text-field="meaning" data-value-field="value"
                                data-bind="value:model.addressCity" aria-disabled="false">
                        </select>
                        <!--<script>kendo.bind($('#addressCity'), viewModel);</script>-->
                    </div>
                </div>
            </div>
            <!--  县区-->
            <div class="col-sm-3">
                <div class="form-group">
                    <label class="col-sm-4 control-label"><@spring.message
                        "customer.addresszone"/></label>
                    <div class="col-sm-8">
                        <!--<input type="text" id="addressZone" style="width: 100%"
                               data-bind="value:model.addressZone" class="k-textbox">-->
                        <select id="addressZone" name="addressZone"
                                data-role="combobox" data-value-primitive="true" placeholder="县区"
                                style="width: 170px; height: 30px" data-text-field="meaning" data-value-field="value"
                                data-bind="value:model.addressZone" aria-disabled="false">
                        </select>
                       <!-- <script>kendo.bind($('#addressZone'), viewModel);</script>-->
                    </div>
                </div>
            </div>
        </div>

注意:在插入数据库的时候这样绑定值,不能用之前的<script>kendo.bind($('#addressZone'), viewModel);</script>

  $("#saveGrid").click(function () {
        //绑定数据:viewModel.model.set("",$("#addressProvince").val())
   /*  方法二:*/
        if (document.getElementById("addressCountry").selectedIndex>-1) {
            alert("addressCountry"+document.getElementById("addressCountry").selectedIndex)
            viewModel.model.set("addressCountry", document.getElementById("addressCountry").options[document.getElementById("addressCountry").selectedIndex].text);
        }
         if (document.getElementById("addressProvince").selectedIndex>-1) {
             alert("addressProvince"+document.getElementById("addressProvince").selectedIndex)
            viewModel.model.set("addressProvince", document.getElementById("addressProvince").options[document.getElementById("addressProvince").selectedIndex].text);
        }
        if (document.getElementById("addressCity").selectedIndex>-1) {
            alert("addressCity"+document.getElementById("addressCity").selectedIndex)
            viewModel.model.set("addressCity", document.getElementById("addressCity").options[document.getElementById("addressCity").selectedIndex].text);
        }
        if (document.getElementById("addressZone").selectedIndex>-1) {
            alert("addressZone"+document.getElementById("addressZone").selectedIndex)
            viewModel.model.set("addressZone", document.getElementById("addressZone").options[document.getElementById("addressZone").selectedIndex].text);
        }


        viewModel.model.__status = 'add';
        Hap.submitForm({
            url: '${base.contextPath}/hcrm/customer/submit',
            formModel: viewModel.model,
            grid: {"productList": $("#productGrid"), "contactList": $("#contactGrid")},
            success: function (data) {
                alert("成功");
            }
        });
    });

鸣谢:森林兄

https://zhidao.baidu.com/question/365648658275520852.html?qbl=relate_question_0&word=html%20%BB%F1%C8%A1select%B5%C4%D1%A1%CF%EE%C3%FB%B3%C6name

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,383评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,100评论 1 32
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,930评论 2 89
  • 老婆,我不是不爱你,我只是不知道怎么去面对你,我觉得自己好没用,赚不来钱,只能希望每天能做点什么让你开心
    chen3247阅读 158评论 0 0
  • 有时坐在桌前,望着外面绿色的草坪,会感慨一番:做草真好,春来则生,夏来则茂,秋来则伏,冬来则休;好似没有变过...
    虚实先森阅读 509评论 2 20