Authored by yyq

Merge branch 'feature/4LevelAddr' into release/5.4.1

... ... @@ -125,6 +125,9 @@
<select id="area">
<option value="0">请选择区县</option>
</select>
<select id="street">
<option value="0">请选择乡镇/街道</option>
</select>
<input type="text" value="{{address}}" name="address">
</dd>
<dd>
... ... @@ -276,4 +279,4 @@
</div>
{{/ returns}}
</div>
{{> layout/footer}}
\ No newline at end of file
{{> layout/footer}}
... ...
... ... @@ -15,6 +15,8 @@
</select>
<select name="county">
</select>
<select name="street">
</select>
<span class="error"><i class="order-icon icon-error"></i><b>请填写完整的省市区信息</b></span>
</li>
<li>
... ... @@ -34,4 +36,4 @@
<span class="error"><i class="order-icon icon-error"></i><b>只能包含数字、- 组合</b></span>
</li>
</ul>
</script>
\ No newline at end of file
</script>
... ...
... ... @@ -4,7 +4,7 @@
* @date: 2016/02/24
*/
var $ = require('yoho.jquery'),
var $ = require('yoho-jquery'),
dialog = require('../common/dialog'),
Alert = dialog.Alert;
... ... @@ -19,6 +19,9 @@ var address = {
// 地区的控件ID
areaDomId: 'areaCode',
// 乡镇、街道的控件ID
streetsDomId: 'streetsCode',
initDomIds: function(domOptions) {
var the = this;
... ... @@ -31,6 +34,9 @@ var address = {
if (domOptions.areaDomId !== undefined) {
the.areaDomId = domOptions.areaDomId;
}
if (domOptions.streetsDomId !== undefined) {
the.streetsDomId = domOptions.streetsDomId;
}
},
// 初始化地址数据
... ... @@ -43,7 +49,12 @@ var address = {
var active,
val,
nId,
selecter;
selecter,
selectAll;
if (!$toDom.length) {
return;
}
$toDom.empty();
... ... @@ -67,10 +78,14 @@ var address = {
}
$toDom.append('<option value="0">' + defaultValue + '</option>');
if (toDomId === the.streetsDomId) {
allCode === pCode ? selectAll = 'selected' : selectAll = '';
$toDom.append('<option value="' + pCode + '" ' + selectAll + '>*全部</option>');
}
for (i in jsonData.options) {
if (jsonData.options[i]) {
val = jsonData.options[i];
point = (toDomId === the.areaDomId && val.is_support === 'Y') ? '*' : '';
point = (toDomId === the.streetsDomId && val.is_support === 'Y') ? '*' : '';
nId = val.value;
selecter = '';
... ... @@ -99,8 +114,9 @@ var address = {
return;
}
the.loadAreaData(pCode, the.cityDomId, '请选择城市', pCode);
the.loadAreaData(pCode, the.cityDomId, '请选择城市');
$('#' + the.areaDomId).hide();
$('#' + the.streetsDomId).hide().empty();
the.showAreaSel(domOptions.dispDomId);
});
... ... @@ -111,12 +127,21 @@ var address = {
return;
}
the.loadAreaData(pCode, the.areaDomId, '请选择区县', pCode);
the.loadAreaData(pCode, the.areaDomId, '请选择区县');
$('#' + the.areaDomId).show();
$('#' + the.streetsDomId).hide().empty();
the.showAreaSel(domOptions.dispDomId);
});
$('#' + the.areaDomId).change(function() {
var pCode = $('#' + the.areaDomId).val();
if (pCode === '0') {
return;
}
the.loadAreaData(pCode, the.streetsDomId, '请选择乡镇/街道');
$('#' + the.streetsDomId).show();
the.showAreaSel(domOptions.dispDomId);
});
... ... @@ -149,12 +174,11 @@ var address = {
}
},
loadAllData: function(areaCode, domOptions) {
loadAllData: function(areaCode, domOptions, isInit) {
var the = this;
the.initDomIds(domOptions);
areaCode += '';
if (areaCode < 91) {
the.loadAreaData(0, the.provinceDomId, '请选择省份', '');
$('#' + the.areaDomId).hide();
... ... @@ -168,9 +192,21 @@ var address = {
the.loadAreaData(0, the.provinceDomId, '请选择省份', areaCode);
the.loadAreaData(areaCode.substr(0, 2), the.cityDomId, '请选择城市', areaCode);
the.loadAreaData(areaCode.substr(0, 4), the.areaDomId, '请选择区县', areaCode);
the.loadAreaData(areaCode.substr(0, 6), the.streetsDomId, '请选择乡镇/街道', areaCode);
$('#' + this.areaDomId).show();
$('#' + this.streetsDomId).show();
} else if (areaCode.length === 9) {
the.loadAreaData(0, the.provinceDomId, '请选择省份', areaCode);
the.loadAreaData(areaCode.substr(0, 2), the.cityDomId, '请选择城市', areaCode);
the.loadAreaData(areaCode.substr(0, 4), the.areaDomId, '请选择区县', areaCode);
the.loadAreaData(areaCode.substr(0, 6), the.streetsDomId, '请选择乡镇/街道', areaCode);
$('#' + this.areaDomId).show();
$('#' + this.streetsDomId).show();
}
if (isInit) {
the.bindAreaChange(domOptions);
}
the.bindAreaChange(domOptions);
}
};
... ...
... ... @@ -28,7 +28,7 @@ var html = $tpl.html();
var active;
var dialogMessage = '<p class="message-title"><i class="order-icon {{messageIcon}}"></i>{{messageTitle}}</p><p class="message-summary">{{messageSummary}}</p>';
var $dialogEdit = $('#edit-dialog-tpl');
var $addressManage, $province, $city, $county, $selectList, $name, $phone, $address, $telCode, $tel, isProvinceChecked = false;
var $addressManage, $province, $city, $county, $street, $selectList, $name, $phone, $address, $telCode, $tel, isProvinceChecked = false;
function cancelFactory(id) {
var options = {
... ... @@ -260,6 +260,7 @@ function newAddress(id) {
$province = $addressManage.find('select[name="province"]');
$city = $addressManage.find('select[name="city"]');
$county = $addressManage.find('select[name="county"]');
$street = $addressManage.find('select[name="street"]');
$selectList = $addressManage.find('select[name="province"],select[name="city"]');
$name = $addressManage.find('.inp[name="name"]');
$phone = $addressManage.find('.inp[name="phone"]');
... ... @@ -298,26 +299,35 @@ function newAddress(id) {
getAddress({
id: cityId,
type: 'getCounty',
selectId: code
selectId: '' + codeId[0] + codeId[1] + codeId[2]
}, function() {
var countyId = $county.val();
//如果获取的县有默认选中项则获取乡镇/街道
if (countyId !== '0') {
getAddress({
id: countyId,
type: 'getStreet',
selectId: code
});
}
});
}
});
} else {
$addressManage.find('select[name="city"]').html('<option value="0">请选择城市</option>');
$addressManage.find('select[name="county"]').html('<option value="0">请选择区县</option>');
$street.html('<option value="0">请选择乡镇/街道</option>');
}
});
// 发生change事件时获取下一级地址
$selectList.change(function() {
var $this = $(this);
if ($this.attr('name') === 'province') {
if ($this.val() === '0') {
$addressManage.find('select[name="city"]').html('<option value="0">请选择城市</option>');
$addressManage.find('select[name="county"]').html('<option value="0">请选择区县</option>');
} else {
getAddress({
id: $this.val(),
... ... @@ -325,12 +335,12 @@ function newAddress(id) {
}, function() {
isProvinceChecked = true;
});
$addressManage.find('select[name="county"]').html('<option value="0">请选择区县</option>');
}
$addressManage.find('select[name="county"]').html('<option value="0">请选择区县</option>');
$street.html('<option value="0">请选择乡镇/街道</option>');
}
if ($this.attr('name') === 'city' && isProvinceChecked) {
if ($this.val() === '0') {
$addressManage.find('select[name="county"]').html('<option value="0">请选择区县</option>');
} else {
... ... @@ -339,8 +349,21 @@ function newAddress(id) {
type: 'getCounty'
});
}
$street.html('<option value="0">请选择乡镇/街道</option>');
}
if ($this.attr('name') === 'county' && isProvinceChecked) {
if ($this.val() === '0') {
$street.html('<option value="0">请选择乡镇/街道</option>');
} else {
getAddress({
id: $this.val(),
type: 'getStreet'
});
}
}
});
$name.on('blur', function() {
validate.name($.trim($name.val()));
});
... ... @@ -352,9 +375,9 @@ function newAddress(id) {
});
$tel.on('blur', function() {
validate.tel($.trim($telCode.val()), $.trim($tel.val()));
})
$county.on('change', function() {
validate.city($province.val(), $city.val(),$county.val());
});
$street.on('change', function() {
validate.city($province.val(), $city.val(), $county.val(), $(this).val());
})
}
/**
... ... @@ -380,6 +403,8 @@ function getAddress(d, callback) {
//url = 'getCounty';
$obj = $county;
} else if (d.type === 'getStreet') {
$obj = $street;
}
$.ajax({
... ... @@ -402,11 +427,11 @@ function getAddress(d, callback) {
// 构建select下拉选项
function structureOption($obj, data, selectId) {
var i,
optionHtml = '',
defaultOption,
isStar = '';
var countyId;
for (i = 0; i < data.length; i++) {
... ... @@ -431,6 +456,15 @@ function structureOption($obj, data, selectId) {
} else if ($obj.attr('name') === 'county') {
defaultOption = '<option value="0">请选择区县</option>';
} else if ($obj.attr('name') === 'street') {
selectId += '';
countyId = selectId.substr(0, 6);
defaultOption = '<option value="0">请选择乡镇/街道</option>';
if (countyId) {
defaultOption += '<option value="' + countyId + '">全部</option>';
}
}
$obj.html(defaultOption + optionHtml);
... ... @@ -442,6 +476,7 @@ function saveAddress(id) {
province = $province.val(),
city = $city.val(),
county = $county.val(),
street = $street.val(),
address = $address.val(),
phone = $phone.val(),
telCode = $telCode.val(),
... ... @@ -456,14 +491,14 @@ function saveAddress(id) {
var postData = {
orderCode: id,
userName: name,
areaCode: county,
areaCode: street,
address: address,
mobile: phone,
phoneCode: telCode,
phoneNum: tel
};
var validate = validateForm();
if (!validate.name(name) || !validate.city(province, city, county) || !validate.address(address) || !validate.mobile(phone) || !validate.tel(telCode, tel)) {
if (!validate.name(name) || !validate.city(province, city, county, street) || !validate.address(address) || !validate.mobile(phone) || !validate.tel(telCode, tel)) {
return;
}
... ... @@ -510,8 +545,8 @@ function validateForm() {
return true;
}
},
city: function(province, city, county) {
if (province === '0' || city === '0' || county === '0') {
city: function(province, city, county, street) {
if (province === '0' || city === '0' || county === '0' || street === '0') {
$err_province.html(_error_html);
$err_province.find('b').html('请填写完整的省市区信息');
$err_province.show();
... ...
... ... @@ -13,7 +13,8 @@ var $goodsTable = $('#goods-table'),
$refundType = $('input[name="refund-type"]'),
$province = $('#province'),
$city = $('#city'),
$areaCode = $('#area'),
$area = $('#area'),
$street = $('#street'),
$bankNameSpan = $('#bank-name-span'),
$bankId = $('#bank-id');
... ... @@ -116,7 +117,8 @@ if ($refundInfo.length) {
defaultArea = defaultArea ? defaultArea : '';
Addr.loadAllData(defaultArea, {
areaDomId: 'area'
areaDomId: 'area',
streetsDomId: 'street'
});
// 页面获取size列表数据
... ... @@ -379,7 +381,7 @@ function packExchangeInfo() {
verifyTip = '请填写收货人姓名';
}
res.areaCode = $areaCode.val();
res.areaCode = $street.val();
if (!verifyTip && !res.areaCode * 1) {
verifyTip = '请选择地区';
}
... ... @@ -459,4 +461,4 @@ $('.save-btn').click(function() {
loadWaiting(false);
}
});
});
\ No newline at end of file
});
... ...