wangxiaoming hace 6 años
padre
commit
9a2eab5dbb

+ 8 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/add_order.ftl

@@ -281,6 +281,14 @@
     /*初始化省市区*/
     var address = $(".address_info").initAddress();
 
+   /* $(function (){
+        var ulc = initAddress($(".address_info"));
+        ulc.setUlcById($("#addressProvince"),13000000);
+//
+//        var s = $("#addressProvince").attr("ulclevel");
+//        alert(s);
+    })*/
+
     /*初始化销售公司店铺*/
     var sc = $(".sales_channel").initSalesChannel();
 

+ 163 - 33
watero-rst-web/src/main/webapp/common/js/common/address.js

@@ -296,13 +296,13 @@ function listDistrict(cityId,districtName){
                     {
                         ulcNode: ele.find(".ulcNode"),	//节点
                         ulcURL: "",	//url
-                        ulcId : ele.find(".ulcId"),	//节点id
+                        ulcId : ele.find(".ulcId"),	//节点option的value
                         ulcName: ele.find(".ulcNode").attr("ulcName"),
                         isFristSelect : false,	//是否有“请选择项”,
                         repData: function(res){ //res 即为原始返回的数据
                             return {
                                 "code": res.returnCode, //解析接口状态
-                                "msg": res.message, //解析提示文本
+                                "msg": res.resultMsg, //解析提示文本
                                 "count": res.total, //解析数据长度
                                 "data": res.returnMsg //解析数据列表
                             };
@@ -355,69 +355,199 @@ function listDistrict(cityId,districtName){
                 // countryName :  ele.find(".init_country").attr("countryName"),
                 initLock : false
             },
-
-
  */
 
 
-/*
+
 ;(function($,window,document,undefined){
     //定义UnlimitedLevelContact的构造函数
     var UnlimitedLevelContact = function(ele,opt) {
         this.$element = ele,
             this.ulcInfo = {
                 urlPrefix : "",
-                ulcLevel :  []
+                ulcLevel :  [],
+                execution:{
+                    // executionType : {
+                    //     A:initUlcLevel
+                    // } ,
+                    executionFun : []
+                }
             },
             this.options = $.extend({}, this.ulcInfo, opt)  //opt并入ulcInfo集合组成新的集合,然后赋值给 options ,所以一切调用options
     }
     //定义Address的方法
     UnlimitedLevelContact.prototype = {
         init: function() {
+            this.initUlcLevel();
             if(this.options.ulcLevel.length > 0){
-                this.initUlc(0,null);
+                this.initUlc(0,"",null);
             }
             return this;
         },
-        initUlc : function(level,id){
-            var ulc = this;
-            var ulcLevel = this.options.ulcLevel[level];
+        initUlcLevel : function(){
+            $(this.options.ulcLevel).each(function (index){
+                //是否选中数据  1:选中  2:未选中
+                this.isSelected = 1;
 
-            $.get(ulc.options.urlPrefix + ulcLevel.ulcURL, function(result){
-                var node = ulcLevel;
+                /*初始化层次结构*/
+                $(this.ulcNode).attr("ulclevel",index);
+            })
+        },
+        initUlc : function(level,id,thisId){
+            //初始化联动
+            var ulc = this;
+            var node = ulc.options.ulcLevel[level];
+            $.get(ulc.options.urlPrefix + node.ulcURL + id, function(result){
+                $(node.ulcNode).empty();    //清空下拉框
+                if(node.isFristSelect){
+                    $(node.ulcNode).append("<option value=''>"+ node.fristSelectMsg +"</option>");
+                    node.isSelected = 2;
+                }
                 var res = node.repData(result);
-                if (res.code == 200) {
-                    node.ulcNode.empty();    //清空下拉框
+                if (res.code == res.isFlag) {
+                    //数据返回
+                    if(res.data.length < 1 && !node.isFristSelect){
+                        $(node.ulcNode).append("<option value=''></option>");
+                        node.isSelected = 2;
+                    }
                     $(res.data).each(function (){
                         var data =  node.parseData(this);
-                        $provinceNode.append("<option value='"+ data.id +"'>"+ this.val +"</option>");
+                        $(node.ulcNode).append("<option value='"+ data.id +"'>"+ data.val +"</option>");
                     })
-                    if(isEmpty(address.options.provinceId)){
-                        address.options.provinceId = result.returnMsg.provinceList[0].provinceId;
-                    }else if(isEmpty(address.options.provinceName)){
-                        address.options.provinceId = address.getAttrIdByName($provinceNode,address.options.provinceName);
-                    }else{
-                        address.options.provinceId = result.returnMsg.provinceList[0].provinceId;
+                    if(thisId != null){
+                        //赋值本下拉框的id
+                        $(node.ulcNode).val(thisId);
+                    }
+                    if(res.data.length > 0){
+                        node.ulcId = node.parseData(res.data[0]).id;
+                        if(ulc.options.ulcLevel.length-1 > level &&  node.isSelected == 1){
+                            $(node.ulcNode).change(function (){
+                                ulc.initUlc(level+1,$(node.ulcNode).val());
+                            })
+                            ulc.initUlc(level+1,node.ulcId);
+                        }
                     }
-                    address.setProvince();
                 }else{
-                    console.log("省份查询失败");
+                    console.log(res.msg);
                 }
             });
         },
-
-        cufte:function(val) {
-            if (undefined == val || null == val||typeof val == undefined || typeof val == 'undefined'|| 'undefined' == val) {
-                val = "";
+        setUlcById: function(){
+            /**
+             *  形参 1:level(级别)或者节点
+             *  形参 2:id 传入id的值
+             */
+            var ulc = this,level=-1;
+            if (arguments.length == 0) return this;
+            if(arguments[0].constructor == Number){
+                level = arguments[0];
+            }else{
+                //节点,传入节点,将进行取值ulclevel
+                level = $("#addressProvince").prop("ulclevel");
+                //https://www.cnblogs.com/zhuchenglin/p/7651990.html   异步取不到值
+                //https://blog.csdn.net/u013063153/article/details/52457307   异步取不到值
             }
-            return val;
+            if(level = -1){
+                console.log("setUlcId error!!!");
+                return ulc;
+            }
+            var upperLevelId='';
+            if(level != 0){
+                upperLevelId = ulc.options.ulcLevel[level-1].ulcId;
+            }
+            ulc.initUlc(level,upperLevelId,arguments[1]);
+            return this;
+        },
+        execute:function(){
+
         }
     }
     // initAddress 调用
-    $.fn.initAddress = function(options) {
-        var address = new Address(this, options);
-        address.init();
-        return address;
+    $.fn.initUlc = function(options) {
+        var ulc = new UnlimitedLevelContact(this, options);
+        ulc.init();
+        return ulc;
     }
 })(jQuery,window,document);
-*/
+
+
+function initAddress(addressNode){
+    var $provice = $(".address_info").find(".init_province");
+    var $city = $(".address_info").find(".init_city");
+    var $country = $(".address_info").find(".init_country");
+    var ulc = $(".address_info").initUlc({
+        urlPrefix: root_path,
+        ulcLevel :  [
+            {
+                ulcNode: $provice,	//节点
+                ulcURL: "/address/list_province",	//url
+                ulcId : $provice.attr("ulcId"),	//节点option的value
+                ulcName: $provice.attr("ulcName"),
+                isFristSelect : false,	//是否有“请选择项”  false:无
+                fristSelectMsg : "请选择",
+                repData: function(res){ //res 即为原始返回的数据
+                    return {
+                        "isFlag": 200, //code判断
+                        "code": res.returnCode, //解析接口状态
+                        "msg": res.resultMsg, //解析提示文本
+                        "data": res.returnMsg.provinceList //解析数据列表
+                    };
+                },
+                parseData:function(data){ //res 即为原始返回的数据
+                    return {
+                        "id": data.provinceId, //解析接口状态
+                        "val": data.province, //解析提示文本
+                        "msg": data.msg, //解析数据长度
+                    };
+                }
+            },
+            {
+                ulcNode: $city,	//节点
+                ulcURL: "/address/list_city?provinceId=",	//url
+                ulcId : $city.attr("ulcId"),	//节点option的value
+                ulcName: $city.attr("ulcName"),
+                isFristSelect : false,	//是否有“请选择项”,
+                fristSelectMsg : "请选择",
+                repData: function(res){ //res 即为原始返回的数据
+                    return {
+                        "isFlag": 200, //code判断
+                        "code": res.returnCode, //解析接口状态
+                        "msg": res.resultMsg, //解析提示文本
+                        "data": res.returnMsg.cityList //解析数据列表
+                    };
+                },
+                parseData:function(data){ //res 即为原始返回的数据
+                    return {
+                        "id": data.cityId, //解析接口状态
+                        "val": data.city, //解析提示文本
+                        "msg": data.msg, //解析数据长度
+                    };
+                }
+            },
+            {
+                ulcNode: $country,	//节点
+                ulcURL: "/address/list_district?cityId=",	//url
+                ulcId : $country.attr("ulcId"),	//节点option的value
+                ulcName: $country.attr("ulcName"),
+                isFristSelect : false,	//是否有“请选择项”,
+                fristSelectMsg : "请选择",
+                repData: function(res){ //res 即为原始返回的数据
+                    return {
+                        "isFlag": 200, //code判断
+                        "code": res.returnCode, //解析接口状态
+                        "msg": res.resultMsg, //解析提示文本
+                        "data": res.returnMsg.districtList //解析数据列表
+                    };
+                },
+                parseData:function(data){ //res 即为原始返回的数据
+                    return {
+                        "id": data.districtId, //解析接口状态
+                        "val": data.district, //解析提示文本
+                        "msg": data.msg, //解析数据长度
+                    };
+                }
+            }
+        ]
+    });
+    return ulc;
+}