address-modal.js 18.8 KB
define("mk7/address-modal",["mk7/controller","mk7/utils","mk7/jweixin","css!cmpts/address-modal/address-modal.css"],function(e,i,d){var s=Dom7,a=Template7,t=function(e){return!e||"undefined"==typeof e||0==e},l=function(e){b.app.popup(e)},o=function(e){s(".page-content").scrollTop(0),b.app.closeModal(e)},r=function(){b.app.showIndicator()},n=function(){b.app.hideIndicator()},c=function(e){b.app.alert(e,"提示信息")},v=function(e){var i=s("[name='csrf-param']").attr("content"),d=s("[name='csrf-token']").attr("content");return e[i]=d,e},p="",u={open:function(e){var i=this;l(_),s.ajax({url:b.loadAddressListUrl,data:{},method:"get",dataType:"json",beforeSend:function(){r()},success:function(d){if(1==d.success){i.renderList(d.addresses);var a=s("#view-address-list #list-content");a.find(".address-row").each(function(){var e=s(this);i.bindSetDefaultEvent(e),i.bindRemoveEvent(e),i.bindEditEvent(e)}),i.bindConfirmEvent(e),i.bindAddEvent(),f.init(),i.scrollShowPosition()}else o(".popup-edit-show")},error:function(){},complete:function(){n()}})},scrollShowPosition:function(){var e=s("#view-address-list #list-content"),i=e.data("last-id"),d=e.find('div[data-id="'+i+'"]').offset();t(d)||s(".page-content").scrollTop(d.top)},bindSetDefaultEvent:function(e){var i=this;e.find(".address-info").on("click",function(){i.setDefault(e)}),e.find(".label-checkbox").on("click",function(){i.removeSelect(),i.setDefault(e)})},setDefault:function(e){var i=this,d=s("#view-address-list #list-content"),a=e.data("id"),t=e.data("name"),l=e.data("mobile"),o=e.data("address");s.ajax({url:b.setDefaultAddressUrl,data:v({id:a}),method:"POST",dataType:"json",beforeSend:function(){r()},success:function(s){1==s.success?(i.removeSelect(),d.data("last-id",a),d.data("default-name",t),d.data("default-mobile",l),d.data("default-address",o),e.find('input[type="checkbox"]').prop("checked",!0)):u.open(p)},error:function(){},complete:function(){n()}})},removeSelect:function(){var e=s("#view-address-list #list-content");e.find('input[type="checkbox"]').prop("checked",!1)},setAddressData:function(e){var i=s("#view-address-list #list-content"),d="",a="",l="",o="",r="",n="",c="";t(e)||(d=e.id,l=e.consignee,o=e.mobile,a=e.province_label+e.city_label+e.district_label+e.address,r=e.province_id,n=e.city_id,c=e.district_id),i.data("last-id",d),i.data("default-name",l),i.data("default-mobile",o),i.data("default-address",a),i.data("province-id",r),i.data("city-id",n),i.data("district-id",c)},bindRemoveEvent:function(e){var d=this;e.find(".row-delete").on("click",function(){var a=parseInt(e.data("id")),t=s("#view-address-list #list-content"),l=parseInt(t.data("last-id")),o=t.find(".address-row");return 1>=o.length?void i.toast({content:"只有一个地址,不能进行删除操作"}):void b.app.confirm("确定删除选中的地址?","提示信息",function(){s.ajax({url:b.removeAddressUrl,data:v({id:a}),method:"POST",dataType:"json",beforeSend:function(){r()},success:function(s){if(1==s.success){if(a==l){d.setAddressData(s.addressDefault);var o=t.find('div[data-id="'+s.addressDefault.id+'"]');o.find('input[type="checkbox"]').prop("checked",!0)}e.remove()}else i.toast({content:s.code})},error:function(){},complete:function(){n()}})})})},bindEditEvent:function(e){e.find(".row-change").each(function(){var i=s(this);i.on("click",function(){var i=e.attr("data-id");s.ajax({url:b.loadAddressUrl,data:{id:i},method:"get",dataType:"json",beforeSend:function(){r()},success:function(e){1==e.success&&m.open(e.data)},error:function(){},complete:function(){n()}})})})},bindAddEvent:function(){s("#view-address-list .address-edit").on("click",function(){var e=s("#view-address-list #list-content"),d=e.find(".address-row");return d.length>20?void i.toast({content:"添加地址已达到上限,不能进行添加操作"}):void m.open()})},bindConfirmEvent:function(){s("#view-address-list #address_close_popup").on("click",function(){var e=s("#view-address-list #list-content"),i=e.data("default-name"),d=e.data("default-mobile"),a=e.data("default-address"),t=e.data("province-id"),l=e.data("city-id"),r=e.data("district-id");b.trigger("confirm",{provinceId:t,cityId:l,districtId:r,consignee:i,mobile:d,fullAddress:a}),o(".popup-address-list")})},renderList:function(e){var i=this,d=s("#view-address-list #list-content"),t="";if(0==e.length);else for(var l=a.compile(w),o=0;o<e.length;o++){var r=e[o],n=r.province_label+r.city_label+r.district_label+r.address;t+=l({address_id:r.id,username:r.consignee,mobile:r.mobile,address:n,is_default:r.is_default}),1==r.is_default&&i.setAddressData(r)}d.html(t)}},f={init:function(){var e=this;s(".wei-xin-add").on("click",function(){s.ajax({url:b.loadWeiXinAddressParamsUrl,method:"GET",data:{url:location.href.split("#")[0]},dataType:"json",beforeSend:function(){r()},success:function(i){1==i.success&&e.getAddress(i.content)},error:function(){},complete:function(){n()}})})},getAddress:function(e){d.config({debug:!1,appId:e.appid,timestamp:e.timestamp,nonceStr:e.noncestr,signature:e.signature,jsApiList:["openAddress"]}),d.ready(function(){d.openAddress({success:function(e){if("openAddress:ok"==e.errMsg){var d={mobile:e.telNumber,consignee:e.userName,province_label:e.provinceName,city_label:e.cityName,district_label:e.countryName,address:e.detailInfo,zip_code:e.postalCode,national_code:e.nationalCode};s.ajax({url:b.loadCheckExistUrl,data:v(d),method:"POST",dataType:"json",beforeSend:function(){r()},success:function(e){n(),1==e.success?m.ajaxSave(d):i.toast({content:"该地址已存在"})},error:function(){},complete:function(){}})}},cancel:function(){}})})}},m={open:function(e){var i=this;l(g);var d=s("#view-profile-address-add #area_province"),a=s("#view-profile-address-add #area_city"),r=s("#view-profile-address-add #area_district"),n=s("#view-profile-address-add #address_id"),v=s("#view-profile-address-add #edit_consignee"),p=s("#view-profile-address-add #edit_mobile"),u=s("#view-profile-address-add #edit_address"),f=s("#view-profile-address-add #edit_zip_code"),m=s("#view-profile-address-add .edit_show_title");if(t(e))m.html("新增地址");else{if(m.html("编辑地址"),t(e.id))return c("操作有误,请重新操作!"),void o(".popup-edit-show");if(n.val(e.id),t(e.consignee)||v.val(e.consignee),t(e.mobile)||p.val(e.mobile),!t(e.province_id)){d.attr("data-id",e.province_id);var h=s("#view-profile-address-add #li_city");h.hasClass("area-hide")&&h.removeClass("area-hide").addClass("area-list"),a.html(k),a.attr("data-id",""),t(e.province_label)||d.html(e.province_label)}if(!t(e.city_id)){a.attr("data-id",e.city_id);var b=s("#view-profile-address-add #li-district");b.hasClass("area-list")||b.removeClass("area-hide").addClass("area-list"),r.html(R),r.attr("data-id",""),t(e.city_label)||a.html(e.city_label)}t(e.district_id)||(r.attr("data-id",e.district_id),t(e.district_label)||r.html(e.district_label)),t(e.address)||u.val(e.address),t(e.zip_code)||f.val(e.zip_code)}i.close(),d.on("click",function(){i.regionAjax(1,"area_province")}),a.on("click",function(){var e=d.attr("data-id");i.regionAjax(e,"area_city")}),r.on("click",function(){var e=a.attr("data-id");i.regionAjax(e,"area_district")}),i.save()},save:function(){var e=this;s("#view-profile-address-add .col-button").on("click",function(){var d=s("#view-profile-address-add #area_province"),a=s("#view-profile-address-add #area_city"),l=s("#view-profile-address-add #area_district"),o=s("#view-profile-address-add #address_id"),r=s("#view-profile-address-add #edit_consignee"),n=s("#view-profile-address-add #edit_mobile"),v=s("#view-profile-address-add #edit_address"),p=s("#view-profile-address-add #edit_zip_code"),u=o.val(),f=r.val(),m=n.val(),h=d.attr("data-id"),b=a.attr("data-id"),_=l.attr("data-id"),w=v.val(),g=p.val();return t(f)?(r.focus(),void c("收货人不能为空!")):t(m)?(n.focus(),void c("手机号码不能为空!")):t(h)?void c("请选择省份!"):t(b)?void c("请选择市级!"):t(_)?void c("请选择区级!"):t(w)?(v.focus(),void c("请选择详细地址!")):t(g)||i.isZipcode(g)?void e.ajaxSave({id:u,mobile:m,consignee:f,province_id:h,city_id:b,district_id:_,address:w,zip_code:g}):(p.focus(),void c("请输入正确的邮编格式!"))})},ajaxSave:function(e){s.ajax({url:b.saveAddressUrl,data:v(e),method:"POST",dataType:"json",beforeSend:function(){r()},success:function(e){1==e.success?(n(),o(".popup-edit-show"),o(".popup-address-list"),u.open(p)):(n(),i.toast({content:e.code}),u.open(p))},error:function(){},complete:function(){}})},regionAjax:function(e,i){var d=this,a=(s("#view-profile-address-add #area_province"),s("#view-profile-address-add #area_city"),s("#view-profile-address-add #area_district"),s("#view-profile-address-add #"+i)),t=parseInt(a.data("id")),l=[];"area_province"==i?l.title="选择所在省份":"area_city"==i?l.title="选择所在市级":"area_district"==i&&(l.title="选择所在区级"),l.selectedDefaultId=t,h.init(l),s.ajax({url:b.loadRegionListUrl,data:{id:e},method:"get",dataType:"json",beforeSend:function(){r()},success:function(e){1==e.success?(h.render(e.items),h.on("select",function(e){a.attr("data-id",e.selectedId),a.attr("data-zip",e.selectedZipcode),s("#edit_zip_code").val(e.selectedZipcode),a.html(e.selectedLabel),d.controlAreaOption(i)})):o(".popup-area")},error:function(){},complete:function(){n()}})},controlAreaOption:function(e){var i=s("#view-profile-address-add #li_city"),d=s("#view-profile-address-add #area_city"),a=s("#view-profile-address-add #li-district"),t=s("#view-profile-address-add #area_district");"area_province"==e?(i.hasClass("area-hide")&&i.removeClass("area-hide").addClass("area-show"),d.html(k),d.attr("data-id",""),a.removeClass("area-show").addClass("area-hide"),t.html(R),t.attr("data-id","")):"area_city"==e&&(a.hasClass("area-show")||a.removeClass("area-hide").addClass("area-show"),t.html(R),t.attr("data-id",""))},close:function(){s("#view-profile-address-add .profile-back").on("click",function(){o(".popup-edit-show")})}},h={title:"",selectedDefaultId:"",events:new Object,on:function(e,i){this.events[e]=i},trigger:function(e,i){var d=this,s=d.events[e];s(i)},init:function(e){this.title=e.title,this.selectedDefaultId=e.selectedDefaultId,this.open(),this.close()},open:function(){var e=this;l(A),s("#view-area-list #area_title").html(e.title)},render:function(e){var i=this,d=a.compile(x),t=0,l=s("#view-area-list #area-list ul");l.html("");for(var o=0;o<e.length;o++){var r="",n="";i.selectedDefaultId==e[o].id&&(t=e[o].id,r="selected",n=y);var c=d({id:e[o].id,label:e[o].label,type:e[o].type,zip_code:e[o].zip_code,selectedClass:r,selectedIcon:n});l.append(c)}this.bindEvents(),i.scrollShowPosition(t)},scrollShowPosition:function(e){var i=s("#view-area-list #area-list"),d=i.find('div[data-id="'+e+'"]').offset();t(d)||s(".page-content").scrollTop(d.top)},bindEvents:function(){var e=this;s("#view-area-list #area-list").find(".item-inner").each(function(){var i=s(this);i.on("click",function(){e.select(i)})})},select:function(e){var i=this,d=s("#view-profile-address-add #area_province"),a=s("#view-profile-address-add #area_city"),t=(s("#view-profile-address-add #area_district"),e.find(".item-title")),l=t.data("id"),r=t.data("title"),n=t.data("type");i.removeSelected()&&e.addClass("selected").find(".item-after").html(y),i.trigger("select",{selectedId:l,selectedLabel:r,selectedZipcode:t.data("zip")}),setTimeout(function(){if(o(".popup-area"),1==n){var e=d.attr("data-id");m.regionAjax(e,"area_city")}else if(2==n){var i=a.attr("data-id");m.regionAjax(i,"area_district")}},300)},removeSelected:function(){var e=s("#view-area-list #area-list .item-inner");return e.removeClass("selected").find(".item-after").html(""),!0},close:function(){s("#view-area-list .close_area").on("click",function(){o(".popup-area")})}},b={app:null,baseUrl:"",handler:".show-address-modal",loadAddressListRoute:"address/ajax-list",loadAddressListUrl:"",removeAddressRoute:"address/ajax-remove",removeAddressUrl:"",setDefaultAddressRoute:"address/ajax-set-default",setDefaultAddressUrl:"",loadAddressRoute:"address/ajax-mgets",loadAddressUrl:"",saveAddressRoute:"address/ajax-save",saveAddressUrl:"",loadRegionListRoute:"address/ajax-region",loadRegionListUrl:"",loadWeiXinAddressParamsRoute:"address/ajax-wei-xin-address-params",loadWeiXinAddressParamsUrl:"",loadCheckExistRoute:"address/ajax-check-exist",loadCheckExistUrl:"",events:new Object,on:function(e,i){this.events[e]=i},trigger:function(e,i){var d=this.events[e];d(i)},init:function(e){this.app=e.app,t(e.baseUrl)||(this.baseUrl=e.baseUrl+"/"),t(e.loadAddressListRoute)||(this.loadAddressListRoute=e.loadAddressListRoute),this.loadAddressListUrl=this.baseUrl+this.loadAddressListRoute,t(e.removeAddressRoute)||(this.removeAddressRoute=e.removeAddressRoute),this.removeAddressUrl=this.baseUrl+this.removeAddressRoute,t(e.setDefaultAddressRoute)||(this.setDefaultAddressRoute=e.setDefaultAddressRoute),this.setDefaultAddressUrl=this.baseUrl+this.setDefaultAddressRoute,t(e.loadAddressRoute)||(this.loadAddressRoute=e.loadAddressRoute),this.loadAddressUrl=this.baseUrl+this.loadAddressRoute,t(e.saveAddressRoute)||(this.saveAddressRoute=e.saveAddressRoute),this.saveAddressUrl=this.baseUrl+this.saveAddressRoute,t(e.loadRegionListRoute)||(this.loadRegionListRoute=e.loadRegionListRoute),this.loadRegionListUrl=this.baseUrl+this.loadRegionListRoute,t(e.loadWeiXinAddressParamsRoute)||(this.loadWeiXinAddressParamsRoute=e.loadWeiXinAddressParamsRoute),this.loadWeiXinAddressParamsUrl=this.baseUrl+this.loadWeiXinAddressParamsRoute,t(e.loadCheckExistRoute)||(this.loadCheckExistRoute=e.loadCheckExistRoute),this.loadCheckExistUrl=this.baseUrl+this.loadCheckExistRoute,s(this.handler).on("click",function(){p=s(this),u.open(p)})}},_='<div class="popup popup-address-list"><div class="views"><div class="view view-main"> <div class="pages" id="view-address-list"><div class="navbar"><div class="navbar-inner"><div class="left" id="address_close_popup"></div><div class="center">地址管理</div><div class="right"></div></div></div><div class="page"><div class="page-content"><div id="list-content" data-last-id="" data-province-id="" data-city-id="" data-district-id="" data-default-name="" data-default-mobile="" data-default-address=""></div><div class="add-buttons row no-gutter"><div class="col-50" style="padding-right: 2.5px;"><a href="javascript:void(0);" class="button button-fill button-red address-edit"><i class="iconfont icon-tianjia" style=" font-size:18px;"></i> 手动添加</a></div><div class="col-50" style="padding-left: 2.5px;"><a href="javascript:void(0);" class="button button-fill button-green wei-xin-add" style="background-color: #08c303;" ><i class="iconfont icon-weixin" style=" font-size:18px;"></i> 微信添加</a></div></div></div><div  id="address_close_popup" class="footer-buttons">确认</div></div></div></div></div></div>',w='<div class="list-block media-list address-row" data-id="{{address_id}}" data-name="{{username}}" data-mobile="{{mobile}}" data-address="{{address}}"><ul ><li class="address-info"><div class="item-link item-content"><div class="item-inner"><div class="item-address-row"><div class="item-title">{{username}}</div><div class="item-after">{{mobile}}</div></div><div class="item-text">{{address}}</div></div></div></li><li class="address-buttons"><div class="item-link item-content"><label class="label-checkbox" style="font-size: 12px;"><input type="checkbox" class="item-checkbox" {{#js_compare "this.is_default === true"}}checked="checked"{{/js_compare}}><div class="item-media" style="font-size:12px;"><i class="icon icon-form-checkbox" style="font-size: 10px; width: 18px; height: 18px;"></i></div></label><div class="item-inner"><div class="item-address-row"><div class="item-title">&nbsp;设为默认地址</div><div class="item-after"><div class="row-change"><i class="iconfont icon-edit" style="font-size: 14px;" ></i> 更改</div>&nbsp;&nbsp;&nbsp;<div  class="row-delete"><i class="iconfont icon-delete " style="font-size: 14px;"></i> 删除</div></div></div></div></div></li></ul></div>',g='<div class="popup popup-edit-show"><div class="views"><div class="view view-main"><div class="pages" id="view-profile-address-add"><div data-page="index-1" class="page"><div class="navbar"><div class="navbar-inner"><div class="left"><span class="profile-back">返回</span></div><div class="center edit_show_title">新增地址</div><div class="right"></div></div></div><div class="page-content"><div class="list-block"><ul><li><div class="item-content"><div class="item-inner"><div class="item-title label">收货人:</div><div class="item-input"><input type="text" id="edit_consignee" value="" placeholder="请输入收货人"></div></div></div></li><li><div class="item-content"><div class="item-inner"><div class="item-title label">手机号码:</div><div class="item-input"><input type="text" id="edit_mobile" value="" placeholder="请输入手机号码"></div></div></div></li><li><div class="item-content"><div class="item-inner"><div class="item-title label">所在省:</div><div id="area_province" data-id="" class="item-input area_province"><span class="placeholder">请选择所在省</span></div></div></div></li><li class="area-hide" id="li_city"><div class="item-content"><div class="item-inner"><div class="item-title label">所在市:</div><div id="area_city" data-id="" class="item-input area_city"><span class="placeholder">请选择所在市</span></div></div></div></li><li class="area-hide" id="li-district"><div class="item-content"><div class="item-inner"><div class="item-title label">所在区:</div><div id="area_district" data-id="" class="item-input area_district"><span class="placeholder">请选择所在区</span></div></div></div></li><li><div class="item-content"><div class="item-inner"><div class="item-title label">详细地址:</div><div class="item-input"><input type="text" id="edit_address" value="" placeholder="请输入详细地址"></div></div></div></li><li><div class="item-content"><div class="item-inner"><div class="item-title label">邮编:</div><div class="item-input"><input type="email" id="edit_zip_code" maxlength="6" value="" placeholder="请输入邮编"></div></div></div></li></ul></div><div class="content-block"><div class="row"><div class="col-100 col-button"><span class="button button-fill color-blue">保存</span><input type="hidden" id="address_id" value=""></div></div></div></div></div></div></div></div></div>',A='<div class="popup popup-area"><div id="view-area-list" class="pages"><div  class="navbar"><div class="navbar-inner"><div class="left"><span class="close_area">返回</span></div><div class="center" id="area_title"></div><div class="right"></div></div></div><div class="page"><div class="page-content"><div class="list-block area-list" id="area-list"><ul></ul></div></div></div></div></div>',x='<li><div class="item-content"><div class="item-inner {{selectedClass}}"><div class="item-title" data-title="{{label}}" data-id="{{id}}" data-type="{{type}}" data-zip="{{zip_code}}">{{label}}</div><div class="item-after">{{selectedIcon}}</div></div></div><li>',y='<i class="iconfont icon-check"></i>',k='<span class="placeholder">请选择所在市</span>',R='<span class="placeholder">请选择所在区</span>';return b});