// 后端数据结构
var areaData = {
"data": {
"isTrial": true,
"area": {
// "北京": [],
// "河南": [
// "洛阳市",
// "驻马店市",
// "周口市",
// // "郑州市"
// ],
// "澳门": [],
// "甘肃": []
},
"buyset": {
"areacount": -1,
"buyerclasscount": 11,
"citys": {
// "河南": 4
}
},
"industry": [
"党委办",
"公共资源交易",
"公安",
"出版广电",
"国资委",
"地震",
"安监",
"工商",
"法院",
"电信行业",
"财政"
]
},
"errMsg": "",
"success": true
}
//加载数据
function getData() {
$DoPost("/subscribepay/editSub/getSubBuyMsg", {}, function (r) {
if (r.success) {
areaData = r;
}
}, false);
}
// 渲染城市方法
function createMoreCity(arr) {
var tempHtml = arr.map(function (v) {
return ''
}).join('')
return tempHtml
}
var animatedRuning = false;
function checkAnimatedRuning() {
if (animatedRuning) {
return true
}
animatedRuning = true;
setTimeout(function () {
animatedRuning = false;
}, 500);
return false
}
// 省下拉市事件
function slideFun(obj) {
if (checkAnimatedRuning()) {
return
}
if (obj.next('.tab_content:not(:animated)').css("display") == "block") {
obj.children().children('i').removeClass("up");
} else {
obj.children().children('i').addClass("up");
}
obj.toggleClass('selected').next('.tab_content:not(:animated)').slideToggle(500)
obj.parent().siblings().children('.tab').removeClass('selected');
}
var obj
// 改变选择结果方法
function getResult() {
obj = {};
//$('.result_name').empty();
$('.province').each(function () {
var provinceText = $(this).text().trim();//省份名称
var isChecked = $(this).children('.checkbox').is(':checked');
var isHalf = $(this).children('.checkbox').hasClass('half');
var arr = [];
if (isChecked) {
obj[provinceText] = [];
} else if (isHalf && !isChecked) {
var $that = $(this);
obj[$that.text().trim()] = [];
$that.parent().siblings().find('.city').each(function () {
var parent = $(this).parent().siblings().find('.province').text().trim();
if ($(this).is('.active') && parent == $that.text().trim()) {
arr.push($(this).text().trim())
}
})
obj[$that.text().trim()] = arr
}
})
$('count').html($('.checkbox:not(.other):checked').length);
//$('.result_name').append(getAreaClassArr_index(obj).join("、"));
//校验是否修改
if (theSameAs(obj) || $.isEmptyObject(obj)) {
$('#enter').attr("disabled", "disabled");
} else {
$('#enter').removeAttr("disabled");
}
}
// 初始化页面方法
function init() {
var p = areaData.data.area;
var count = areaData.data.buyset.citys;
// 1.渲染城市列表
$(".select-area-box ul li:not('.index')").each(function () {
var text = $(this).find(".province").text().trim()
var data = null
chinaMapJSON.some(function (v) {
data = v
return v.name.indexOf(text) !== -1
})
var box = $(this).find('div.tab_content')
var html = createMoreCity(data.city)
box.html(html)
})
// 2.当areacount == -1时,全国为选中状态,为正数时为选中的省份数目,全国选项不显示
var pLength = Object.keys(areaData.data.area).length;
var cLength = Object.keys(areaData.data.buyset.citys).length
console.log(pLength, cLength)
if (areaData.data.buyset.areacount == -1 && pLength == 0 && cLength == 0) {
// 当购买的全国切选中的是全国时
// $('.optional_count').html("可选择全部区域")
//$('.all_area').show()
$('.optional_count').hide()
$('.total').html('34')
$('.count').html('34')
$('.tab.whole').parent('li').show();
$('.checkbox.other').prop('checked', true);
} else if (areaData.data.buyset.areacount == -1 && pLength != 0) {
// 当购买的全国而没有选择全国,选择部分省市时
//$('.all_area').show();
$('.province').removeAttr('data-count');
$('.optional_count').hide();
$('.total').html('34');
initResult()
} else {
//$('.all_area').hide()
$('.optional_count').show()
if (areaData.data.buyset.areacount != 0) {
$('.total').html(areaData.data.buyset.areacount)
} else {
$(".optional_count").css("display", "none");
}
$('.tab.whole').parent('li').hide();
// $('.checkbox.other').attr('disabled',true);
initResult()
}
}
function initResult() {
var isAll = areaData.data.buyset.areacount;
var p = areaData.data.area;
var count = areaData.data.buyset.citys;
// 添加可选择城市文字 和自定义属性值
if (areaData.data.buyset.areacount != -1) {
for (const c in count) {
$('.province').each(function () {
var t = $(this).text().trim();
if (c == t) {
$(this).attr("data-count", count[c]);
$(this).after('可选择 ' + count[c] + '个市')
var that = $(this).parent('.tab:not(.municipality)');
that.bind('click', function () {
slideFun($(this));
})
}
})
}
}
/*else{ //购买全国是否可以编辑市
$('.province').each(function () {
var that = $(this).parent('.tab:not(.municipality)');
that.bind('click', function () {
slideFun($(this));
})
})
}*/
// 渲染已选择结果
for (const k in p) {
console.log(p[k], k)
if (p[k].length == 0) {
$('.province').each(function () {
var t = $(this).text().trim();
if (k == t && p[k].length == 0) {
// 如果购买的是全省,则不可点击下拉事件(不可修改城市)
if (isAll != -1) {
$(this).parent().siblings().children('.city').addClass('active').attr('disabled', true);
$(this).parent('.tab').unbind('click').parent('li').siblings().find('.checkbox:not(.half)').parents('.tab').unbind('click')
} else {
$(this).parent().siblings().children('.city').addClass('active').removeAttr('disabled')
}
$(this).children('.checkbox').prop('checked', true)
}
})
} else {
console.log(k, p[k].length, $('.city.active').length)
$('.city').each(function () {
var thisOne=$(this)
let activeLength = thisOne.parents('li').find('.active').length;
let t = thisOne.text().trim();
p[k].forEach(v => {
if (v == t) {
let that = thisOne.parents('li').find('.tab:not(.municipality)');
console.log("v==t")
// 如果是可修改城市的省份,则可以进行下拉展示
that.bind('click', function () {
slideFun($(this));
})
thisOne.addClass('active').removeAttr('disabled').parent().siblings('.tab').find('input').addClass('half');
// 判断购买的地市数与选择的地市是否相等,相等则把其他地市禁用
$('.province').each(function (item, index) {
let dataCount = $(this).attr('data-count');
let activeLength = $(this).parent().siblings().find('.active').length;
// console.log(dataCount)
if (dataCount) {
// console.log(dataCount,activeLength,"object")
if (activeLength >= dataCount) {
$(this).parent().siblings().find('.city').not('.active').attr('disabled', true)
}
}
})
}
})
})
}
}
$('ul.area-list .province[data-count]').parent().on('click', function () {
slideFun($(this));
})
//$('.result_name').append(getAreaClassArr_index(areaData.data.area).join("、"));
$('.count').html($('.checkbox:not(.other):checked').length)
// 如果选中的省份数量等于购买的省份数量,则将其他未选中的省份禁用
if ($('.checkbox:not(.other):checked').length == $('.total').html()) {
$('.checkbox:not(:checked)').attr('disabled', true);
}
$('#enter').attr("disabled", "disabled");
}
$(function () {
// 省下拉事件
/*$('.tab:not(.municipality)').on('click', function () {
if (checkAnimatedRuning()) {
return
}
if ($(this).next('.tab_content:not(:animated)').css("display") == "block") {
$(this).children().children('i').removeClass("up");
} else {
$(this).children().children('i').addClass("up");
}
$(this).toggleClass('selected').next('.tab_content:not(:animated)').slideToggle(500);
$(this).parent().siblings().children('.tab').removeClass('selected');
});*/
getData();
// 初始化
init();
/**** 点击checkbox实现onchange事件 *****/
// 1.点击全国按钮onchange事件;
$('.checkbox.other').on('change', function () {
var isChecked = $(this).is(':checked');
if (isChecked) {
$('.count').html('34')
$('.checkbox:not(.other)').prop('checked', false).removeClass('half')
$('.city').removeClass('active');
$('.tab_content').slideUp()
getResult()
} else {
$('.checkbox:not(.other)').removeAttr('disabled')
$('.city').removeAttr('disabled')
getResult()
}
})
// 2.点击非全国按钮onchange事件;
$('.checkbox:not(.other)').on('change', function () {
$('.checkbox.other').prop('checked', false);
var checkedLength = $('.checkbox:checked').length;
var totalLength = $('.total').text();
$('.count').html(checkedLength)
if (checkedLength < totalLength) {
$('.checkbox:not(.other)').removeAttr('disabled')
getResult()
} else {
$('.checkbox:not(:checked)').attr('disabled', true)
if (areaData.data.isTrial) {
showTip('您只选择试用了' + totalLength + '个省份,
如需更多,请前往超级订阅进行购买');
} else {
showTip('您只购买了' + totalLength + '个省份,如需更多请升级