vr-shopxo-plugin/shopxo/public/static/admin/default/js/site.js

520 lines
22 KiB
JavaScript
Raw Normal View History

// 地址表单初始化
FromInit('form.form-validation-address');
// 备案表单初始化
FromInit('form.form-validation-filing');
/**
* 地址返回处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
* @param {[object]} data [地址信息]
*/
function AddressModalHandle (data) {
// 参数处理
var logo = data.logo || null;
var alias = data.alias || null;
var name = data.name || null;
var tel = data.tel || null;
var province = data.province || null;
var city = data.city || null;
var county = data.county || null;
var address = data.address || null;
var province_city_county = data.province_city_county || null;
var lng = data.lng || null;
var lat = data.lat || null;
// 获取省市区的数组
var province_city_county_list = province_city_county.split(' ');
var province_city_county_obj = {
province_name: province_city_county_list.length > 0 ? province_city_county_list[0] : '',
city_name: province_city_county_list.length > 1 ? province_city_county_list[1] : '',
county_name: province_city_county_list.length > 2 ? province_city_county_list[2] : '',
}
data = Object.assign({}, data, province_city_county_obj);
if (name == null || tel == null || province == null || city == null || address == null) {
Prompt(window['lang_operate_params_error'] || '数据填写有误');
return false;
}
// 数据拼接
var html = '<li class="am-flex am-flex-justify-between am-flex-items-center am-gap-12">';
html += '<div class="am-flex am-flex-items-center am-flex-1 am-flex-width">';
if (logo != null) {
html += '<img src="' + logo + '" alt="' + name + '" class="am-img-thumbnail am-radius address-logo" /> ';
}
html += '<span class="address-content">';
html += '<span class="address-text">' + province_city_county + ' ' + address + '' + name + '-' + tel + '</span>';
if (alias != null) {
html += '<span class="am-badge am-radius-sm am-badge-success am-margin-left-xs">' + alias + '</span>';
}
html += '</span>';
html += '</div>';
html += '<div>';
html += '<span class="edit-submit"><i class="iconfont icon-edit am-text-xs"></i>编辑</span> ';
html += '<span class="delete-submit"><i class="iconfont icon-btn-del am-text-xs"></i>移除</span>';
html += '</div>';
html += '</li>';
// 数据处理
var value = SelfExtractionAddressValue();
// 弹层
var $popup_address = $('#popup-address-win');
// 操作类型add, edit
var form_type = $popup_address.attr('data-type') || 'add';
if (form_type == 'add') {
$('ul.address-list').append(html);
data['id'] = value.length;
value.push(data);
} else {
var form_index = $popup_address.attr('data-index') || 0;
data['id'] = form_index;
value.splice(form_index, 1, data);
$('ul.address-list').find('li').eq(form_index).replaceWith(html);
}
$popup_address.modal('close');
$('.self-extraction-address-value').val(encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(value)))));
}
/**
* 获取自提地址
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
*/
function SelfExtractionAddressValue () {
var value = $('.self-extraction-address-value').val() || null;
return (value == null) ? [] : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(value)).toString(CryptoJS.enc.Utf8));
}
/**
* 备案信息返回处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
* @param {[object]} data [地址信息]
*/
function FilingModalHandle (data) {
// 参数处理
var icon = data.icon || null;
var name = data.name || null;
var show_name = data.show_name || null;
var url = data.url || null;
if (name == null || show_name == null) {
Prompt(window['lang_operate_params_error'] || '数据填写有误');
return false;
}
// 数据拼接
var html = '<li class="am-flex am-flex-justify-between am-flex-items-center am-gap-12">';
html += '<div class="am-flex am-flex-items-center am-flex-1 am-flex-width">';
if (icon != null) {
html += '<img src="' + icon + '" alt="' + name + '" class="am-img-thumbnail am-radius filing-icon" /> ';
}
html += '<span class="filing-content">';
html += '<span class="filing-text">' + name + '' + show_name + '</span>';
if (url != null) {
html += ' <span class="am-badge am-radius am-margin-left-xs">' + url + '</span>';
}
html += '</span>';
html += '</div>';
html += '<div>';
html += '<span class="edit-submit"><i class="iconfont icon-edit am-text-xs"></i>编辑</span> ';
html += '<span class="delete-submit"><i class="iconfont icon-btn-del am-text-xs"></i>移除</span>';
html += '</div>';
html += '</li>';
// 数据处理
var value = FilingValue();
// 弹层
var $popup_filing = $('#popup-filing-win');
// 操作类型add, edit
var form_type = $popup_filing.attr('data-type') || 'add';
if (form_type == 'add') {
$('ul.filing-list').append(html);
data['id'] = value.length;
value.push(data);
} else {
var form_index = $popup_filing.attr('data-index') || 0;
data['id'] = form_index;
value.splice(form_index, 1, data);
$('ul.filing-list').find('li').eq(form_index).replaceWith(html);
}
$popup_filing.modal('close');
$('.filing-value').val(encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(value)))));
}
/**
* 获取备案信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
*/
function FilingValue () {
var value = $('.filing-value').val() || null;
return (value == null) ? [] : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(value)).toString(CryptoJS.enc.Utf8));
}
$(function () {
// 地址弹层
var $popup_address = $('#popup-address-win');
// 地址添加开启
$(document).on('click', '.address-submit-add', function () {
$popup_address.modal();
$popup_address.attr('data-type', 'add');
// 清空数据
FormDataFill({ "alias": "", "name": "", "tel": "", "address": "", "province": 0, "city": 0, "county": 0, "province_city_county": '', "lng": "", "lat": "" }, 'form.form-validation-address');
// 地图初始化
MapInit();
// 地区初始化
RegionLinkageInit();
// logo
var html = '<li class="plug-file-upload-submit" data-view-tag="ul.sitetype-logo">';
html += '<i class="iconfont icon-add"></i>';
html += '</li>';
$popup_address.find('.sitetype-logo').html(html);
});
// 地址移除
$(document).on('click', '.address-list .delete-submit', function () {
var index = $(this).parents('li').index();
var value = SelfExtractionAddressValue();
if (value.length > 0) {
AMUI.dialog.confirm({
title: window['lang_reminder_title'] || '温馨提示',
content: window['lang_remove_confirm_tips'] || '移除后保存生效、确认继续吗?',
onConfirm: function (options) {
value.splice(index, 1);
$('.self-extraction-address-value').val(encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(value)))));
$('ul.address-list').find('li').eq(index).remove();
},
onCancel: function () { }
});
} else {
$('ul.address-list').find('li').eq(index).remove();
}
});
// 地址编辑
$(document).on('click', '.address-list .edit-submit', function () {
var index = $(this).parents('li').index();
var value = SelfExtractionAddressValue();
if (value.length <= 0) {
Prompt(window['lang_address_no_data'] || '地址数据为空');
return false;
}
var item = value[index] || null;
if (item == null) {
Prompt(window['lang_address_not_exist'] || '地址不存在');
return false;
}
// logo
var html = '<li class="plug-file-upload-submit" data-view-tag="ul.sitetype-logo">';
if ((item.logo || null) != null) {
html += '';
html += '<input type="text" name="logo" value="' + item.logo + '" data-validation-message="' + (window['lang_address_logo_message'] || '请上传logo图片') + '" required />';
html += '<img src="' + item.logo + '" alt="' + item.name + '" />';
html += '<i class="iconfont icon-close"></i>';
} else {
html += '<i class="iconfont icon-add"></i>';
}
html += '</li>';
$popup_address.find('.sitetype-logo').html(html);
// 地区初始化
RegionNodeData(0, 'province', 'province', item['province'], false);
RegionNodeData(item['province'], 'city', 'city', item['city'], false);
RegionNodeData(item['city'], 'county', 'county', item['county'], false);
var province = $popup_address.find('.region-linkage .province li.am-active').data('name');
var city = $popup_address.find('.region-linkage .city li.am-active').data('name');
var county = $popup_address.find('.region-linkage .county li.am-active').data('name');
var province_city_county = {
province_city_county: (province ? province : '') + (city ? ' ' + city : '') + (county ? ' ' + county : '')
}
item = Object.assign({}, item, province_city_county)
// 数据填充
FormDataFill(item, 'form.form-validation-address');
// 基础数据
$popup_address.modal();
$popup_address.attr('data-type', 'edit');
$popup_address.attr('data-index', index);
// 地图初始化
MapInit(item.lng, item.lat);
});
// 备案弹层
var $popup_filing = $('#popup-filing-win');
// 备案添加开启
$(document).on('click', '.filing-submit-add', function () {
$popup_filing.modal();
$popup_filing.attr('data-type', 'add');
// 清空数据
FormDataFill({ "name": "", "show_name": "", "url": "" }, 'form.form-validation-filing');
// icon
var html = '<li class="plug-file-upload-submit" data-view-tag="ul.filing-icon">';
html += '<i class="iconfont icon-add"></i>';
html += '</li>';
$popup_filing.find('.filing-icon').html(html);
});
// 备案移除
$(document).on('click', '.filing-list .delete-submit', function () {
var index = $(this).parents('li').index();
var value = FilingValue();
if (value.length > 0) {
AMUI.dialog.confirm({
title: window['lang_reminder_title'] || '温馨提示',
content: window['lang_remove_confirm_tips'] || '移除后保存生效、确认继续吗?',
onConfirm: function (options) {
value.splice(index, 1);
$('.filing-value').val(encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(value)))));
$('ul.filing-list').find('li').eq(index).remove();
},
onCancel: function () { }
});
} else {
$('ul.filing-list').find('li').eq(index).remove();
}
});
// 备案编辑
$(document).on('click', '.filing-list .edit-submit', function () {
var index = $(this).parents('li').index();
var value = FilingValue();
if (value.length <= 0) {
Prompt(window['lang_filing_no_data'] || '备案数据为空');
return false;
}
var item = value[index] || null;
if (item == null) {
Prompt(window['lang_filing_not_exist'] || '备案不存在');
return false;
}
// icon
var html = '<li class="plug-file-upload-submit" data-view-tag="ul.filing-icon">';
if ((item.icon || null) != null) {
html += '';
html += '<input type="text" name="icon" value="' + item.icon + '" data-validation-message="' + (window['lang_filing_icon_message'] || '请上传图标') + '" required />';
html += '<img src="' + item.icon + '" alt="' + item.name + '" />';
html += '<i class="iconfont icon-close"></i>';
} else {
html += '<i class="iconfont icon-add"></i>';
}
html += '</li>';
$popup_filing.find('.filing-icon').html(html);
// 数据填充
FormDataFill(item, 'form.form-validation-filing');
// 基础数据
$popup_filing.modal();
$popup_filing.attr('data-type', 'edit');
$popup_filing.attr('data-index', index);
});
// 商品列表拖拽
$('ul.manual-mode-goods-container').dragsort({ dragSelector: 'li', placeHolderTemplate: '<li class="drag-sort-dotted"></li>' });
// 商品搜索popup容器
var $popup_siteset_goods = $('#siteset-goods-popup');
// 分页
$('.goods-page-container').html(PageLibrary());
// 开启商品弹窗
$(document).on('click', '.goods-popup-add', function () {
// 操作标记
$popup_siteset_goods.attr('data-tag', $(this).data('tag') || '');
$popup_siteset_goods.attr('data-form-name', $(this).data('form-name') || '');
// 初始化搜索数据
$popup_siteset_goods.modal();
$popup_siteset_goods.find('.search-submit').trigger('click');
});
// 搜索商品
$(document).on('click', '.forth-selection-container .search-submit, .pagelibrary li a', function () {
// 分页处理
var is_active = $(this).data('is-active') || 0;
if (is_active == 1) {
return false;
}
var page = $(this).data('page') || 1;
// 请求参数
var url = $('.forth-selection-container').data('search-url');
var category_id = $('.forth-selection-form-category').val();
var keywords = $('.forth-selection-form-keywords').val();
var goods_ids = [];
$($popup_siteset_goods.attr('data-tag')).find('input[type="hidden"]').each(function (k, v) {
goods_ids.push($(this).val());
});
var $btn = $('.forth-selection-container .search-submit');
$btn.button('loading');
$.AMUI.progress.start();
$('.goods-list-container ul.am-gallery').html('<div class="table-no"><i class="am-icon-spinner am-icon-pulse"></i> ' + ($('.goods-list-container').data('loading-msg')) + '</div>');
$.ajax({
url: RequestUrlHandle(url),
type: 'post',
data: { page: page, category_id: category_id, keywords: keywords, goods_ids: goods_ids },
dataType: 'json',
success: function (res) {
$.AMUI.progress.done();
$btn.button('reset');
if (res.code == 0) {
$('.goods-list-container').attr('data-is-init', 0);
$('.goods-list-container ul.am-gallery').html(res.data.data);
$('.goods-page-container').html(PageLibrary(res.data.total, res.data.page_size, res.data.page, 4));
} else {
Prompt(res.msg);
$('.goods-list-container ul.am-gallery').html('<div class="table-no"><i class="am-icon-warning"></i> ' + res.msg + '</div>');
}
},
error: function (xhr, type) {
$.AMUI.progress.done();
$btn.button('reset');
var msg = HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误');
Prompt(msg, null, 30);
$('.goods-list-container ul.am-gallery').html('<div class="table-no"><i class="am-icon-warning"></i> ' + msg + '</div>');
}
});
});
// 删除列表
$(document).on('click', '.manual-mode-goods-container li button.am-close', function () {
$(this).parent('li').remove();
});
// 商品添加/删除
$(document).on('click', '.goods-list-container .goods-add-submit, .goods-list-container .goods-del-submit', function () {
// 基础参数
var $this = $(this);
var type = $this.data('type');
var icon_html = $this.parents('li').data((type == 'add' ? 'del' : 'add') + '-html');
var goods_id = $this.parents('li').data('gid');
var goods_title = $this.parents('li').data('title');
var goods_url = $this.parents('li').data('url');
var goods_img = $this.parents('li').data('img');
var tag = $popup_siteset_goods.attr('data-tag') || '';
var form_name = $popup_siteset_goods.attr('data-form-name') || '';
// 商品是否已经添加
if ($(tag).find('.manual-mode-goods-item-' + goods_id).length > 0) {
$(tag).find('.manual-mode-goods-item-' + goods_id).remove();
} else {
$(tag).append('<li class="manual-mode-goods-item-' + goods_id + '"><input type="hidden" name="' + form_name + '" value="' + goods_id + '" /><a href="' + goods_url + '" target="_blank" class="am-text-truncate am-flex am-flex-items-center am-gap-1"><img src="' + goods_img + '" alt="' + goods_title + '" class="am-border-c am-radius" width="26" height="26" /><span class="am-flex-1 am-flex-width">' + goods_title + '</span></a><button type="button" class="am-close am-fr">&times;</button></li>');
}
$this.parent().html(icon_html);
});
// 添加域名
$(document).on('click', '.domain-submit-add', function () {
var please_select_tip = $(this).data('please-select-tips') || '请选择...';
var select_html = '<option value="0">' + please_select_tip + '</option>';
var json = $(this).data('json') || null;
if (json != null) {
json = JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8));
for (var i in json) {
select_html += '<option value="' + i + '">' + json[i] + '</option>';
}
}
var form_name = $(this).data('form-name');
var index = parseInt(Math.random() * 1000001);
var html = `<li class="am-flex am-flex-row am-flex-items-center am-gap-1">
<input type="text" name="`+ form_name + `[` + index + `][domain]" placeholder="` + ($(this).data('domain-placeholder') || '域名') + `" data-validation-message="` + ($(this).data('domain-message') || '请填写域名') + `" class="am-radius am-inline-block item-domain-input" value="" />
<div class="am-inline-block item-multilingual-choice">
<select name="`+ form_name + `[` + index + `][lang]" class="am-radius chosen-select" data-placeholder="` + please_select_tip + `" data-validation-message="` + ($(this).data('select-message') || '请选择域名对应语言') + `">
`+ select_html + `
</select>
</div>
<div class="am-fr am-margin-top-xs">
<a href="javascript:;" class="am-btn am-btn-primary-plain am-radius delete-submit delete-btn"><i class="iconfont icon-btn-del am-text-xs"></i> `+ ($(this).data('remove-title') || '') + `</a>
</div>
</li>`;
$('.domain-multilingual-list > ul').append(html);
// 下拉选择组件初始化
SelectChosenInit();
});
// cookie域名移除
$(document).on('click', '.domain-multilingual-list .delete-submit', function () {
var $parent = $(this).parents('li');
AMUI.dialog.confirm({
title: window['lang_reminder_title'] || '温馨提示',
content: window['lang_remove_confirm_tips'] || '移除后保存生效、确认继续吗?',
onConfirm: function (options) {
$parent.remove();
},
onCancel: function () { }
});
});
// 首页楼层数据模式类型切换
$(document).on('click', '.check-radio-change', function () {
var key = parseInt($(this).val() || 0);
$("[data-key='" + key + "']").addClass('am-active').siblings('.item').removeClass('am-active');
if (key == 0 || key == 1) {
$(".reverse-drop-show").removeClass('am-hide');
} else {
$(".reverse-drop-show").addClass('am-hide');
}
})
// 商品分类层级
$(document).on('click', '.level-type input', function () {
var key = $(this).val();
$(".level-type-content .item[data-key='" + key + "']").addClass('am-active').siblings('.item').removeClass('am-active');
});
// 订单溯源-添加
$(document).on('click', '.trace-source-submit-add', function()
{
var index = parseInt(Math.random() * 1000001);
var select_html = $('.trace-source-goods-category-select-html').prop('outerHTML').replace('{index}', index);
var required_html = $('.trace-source-required-html').prop('outerHTML').replace(/{index}/g, index);
var html = `<tr>
<td>`+select_html+`</td>
<td>`+required_html+`</td>
<td>
<div class="am-margin-top-xs">
<a href="javascript:;" class="delete-submit">
<i class="iconfont icon-btn-del am-text-xs"></i>
<span>`+(window['lang_operate_remove_name'] || '移除')+`</span>
</a>
</div>
</td>
</tr>`;
$('.trace-source-list tbody').append(html);
// 移除多余的class
$('.trace-source-list select').removeClass('am-hide').removeClass('trace-source-goods-category-select-html').removeClass('chosen-init-success');
$('.trace-source-list .am-checkbox-group').removeClass('am-hide').removeClass('trace-source-required-html');
// 多选插件事件更新
SelectChosenInit();
});
// 订单溯源-移除
$(document).on('click', '.trace-source-list .delete-submit', function()
{
$(this).parents('tr').remove();
});
});