';
// 数据添加
$parameters_table.append(html);
// 单选和多选初始化
var $ucheck = $parameters_table.find('tr:last input[data-am-ucheck]');
if ($ucheck !== undefined) {
$ucheck.uCheck();
}
// 状态初始化
SwitchInit();
}
/**
* 商品参数数据使用
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-09-02
* @desc description
* @param {[boject]} data [数据]
* @param {[int]} index [索引]
*/
var $parameters_table_use = $('.parameters-table-use');
function GoodsParametersItemHtmlUse (data, index) {
// 拼接html
var html = '
';
html += `
`+data.scope_name+`
`;
html += `
`+data.name+`
`+(data.required == 1 ? '*' : '')+`
`;
html += `
`;
html += ``;
var not_choice_error = $parameters_table_use.data('not-choice-error-tips') || '请选择';
var not_fill_in_error = $parameters_table_use.data('not-fill-in-error-tips') || '请输入';
var goods_params_name = $parameters_table_use.data('goods-params-name') || '商品参数';
var goods_params_operate_is_edit = $parameters_table_use.data('goods-params-operate-is-edit');
if(goods_params_operate_is_edit === undefined)
{
goods_params_operate_is_edit = 1;
} else {
goods_params_operate_is_edit = parseInt(goods_params_operate_is_edit);
}
switch(parseInt(data.data_type)) {
case 1 :
html += `
`;
for(var i in data.value) {
html += ``;
}
html += `
`;
break;
case 2 :
html += `
`;
for(var i in data.value) {
html += ``;
}
html += `
`;
break;
default :
html += ``;
}
html += `
`;
html += '
';
// 数据添加
$parameters_table_use.append(html);
// 单选和多选初始化
var $ucheck = $parameters_table_use.find('tr:last input[data-am-ucheck]');
if ($ucheck !== undefined) {
$ucheck.uCheck();
}
}
/**
* 商品规格基础模板获取生成
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2025-07-02
* @desc description
* @param {[int]} value [分类id]
* @param {[int]} is_goods_single_category_mode [单分类模式]
*/
var $spec_quick = $('#specifications-quick-container');
var $params_quick = $('#parameters-quick-container');
function GoodsSpecBaseTemplateCreated(value, is_goods_single_category_mode = 0)
{
$.ajax({
url: RequestUrlHandle($('.goods-category-choice-base-template-event').data('base-template-url') || $('.confirm-next-submit').data('base-template-url')),
type: 'POST',
dataType: 'json',
timeout: 305000,
data: {category_ids: value},
success: function(result)
{
// 循环处理得到的最新模板
var html = '';
// 规格模板
if($spec_quick.length > 0) {
// 移除现有模板
$spec_quick.find('select option').each(function(k, v)
{
if(k > 0)
{
$(this).remove();
}
});
// 赋值新的规格模板
if((result.data || null) != null && (result.data.spec || null) != null && result.data.spec.length > 0)
{
for(var i in result.data.spec)
{
html += '';
}
}
$spec_quick.find('select').append(html);
// 更新select组件
$spec_quick.find('select').trigger('chosen:updated');
}
// 参数模板
if($parameters_table_use.length > 0) {
if($params_quick.length > 0) {
// 移除现有模板
$params_quick.find('select option').each(function(k, v)
{
if(k > 0)
{
$(this).remove();
}
});
// 赋值新的参数模板
html = '';
if((result.data || null) != null && (result.data.params || null) != null && result.data.params.length > 0)
{
for(var i in result.data.params)
{
html += '';
}
}
$params_quick.find('select').append(html);
// 更新select组件
$params_quick.find('select').trigger('chosen:updated');
}
// 清除参数数据
$parameters_table_use.find('tbody').html('');
// 独立参数数据生成
if(is_goods_single_category_mode == 1)
{
if((result.data || null) != null && (result.data.params || null) != null && (result.data.params[0] || null) != null && (result.data.params[0]['config_data'] || null) != null && result.data.params[0]['config_data'].length > 0)
{
for(var i in result.data.params) {
if((result.data.params[i]['config_data'] || null) != null) {
for(var x in result.data.params[i]['config_data']) {
GoodsParametersItemHtmlUse(result.data.params[i]['config_data'][x], result.data.params[i]['id']+result.data.params[i]['config_data'][x]['id']);
}
}
}
}
}
}
// 必填处理
if((result.data.required_fields || null) != null)
{
for(var i in result.data.required_fields)
{
var $temp_item = $('form.form-validation [name="'+i+'"]');
if($temp_item.length > 0)
{
$temp_item.attr('required', result.data.required_fields[i] == 1);
var $temp_label = $temp_item.parents('.am-form-group').find('>label');
if(result.data.required_fields[i] == 1)
{
if($temp_label.find('.am-form-group-label-tips-must').length == 0)
{
$temp_label.append('*');
}
} else {
$temp_label.find('.am-form-group-label-tips-must').remove();
$temp_item.blur();
}
}
}
}
},
error: function(xhr, type)
{
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'));
}
});
}
/**
* 笛卡尔积生成规格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-09-22T00:33:48+0800
* @desc description
* @param {[array]} arr1 [要进行笛卡尔积的二维数组]
* @param {[array]} arr2 [最终实现的笛卡尔积组合,可不写]
*/
function GoodsSpecCartesian(arr1, arr2)
{
// 去除第一个元素
var result = [];
var temp_arr = arr1;
var first = temp_arr.splice(0, 1);
if((arr2 || null) == null)
{
arr2 = [];
}
// 判断是否是第一次进行拼接
if(arr2.length > 0)
{
for(var i in arr2)
{
for(var k in first[0].value)
{
result.push(arr2[i]+','+first[0].value[k]);
}
}
} else {
for(var i in first[0].value)
{
result.push(first[0].value[i]);
}
}
// 递归进行拼接
if(arr1.length > 0)
{
result = GoodsSpecCartesian(arr1, result);
}
// 返回最终笛卡尔积
return result;
}
/**
* 公共数据状态操作处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2025-09-17
* @desc description
* @param {object} e [操作对象]
* @param {String} reason [原因]
*/
var $form_table_state_operate_reason_item_obj = null;
var $form_table_state_operate_reason_modal = $('#form-table-state-operate-reason-modal');
function CommonStateOperateHandle(e, reason = '')
{
// 获取参数
var id = e.attr('data-id');
var state = (e.attr('data-state') == 1) ? 0 : 1;
var url = e.attr('data-url');
var field = e.attr('data-field') || '';
var is_update_status = e.attr('data-is-update-status') || 0;
var is_progress = (e.attr('data-is-progress') == undefined || parseInt(e.attr('data-is-progress') || 0) == 1) ? 1 : 0;
var is_loading = parseInt(e.attr('data-is-loading') || 0);
var loading_msg = e.attr('data-loading-msg') || window['lang_request_handle_loading_tips'] || '正在处理中、请稍候...';
if (id == undefined || url == undefined) {
Prompt(window['lang_params_error_tips'] || '参数配置有误');
return false;
}
// 弹层加载
if (is_loading == 1) {
AMUI.dialog.loading({ title: loading_msg });
}
// 请求更新数据
if (is_progress == 1) {
$.AMUI.progress.start();
}
$.ajax({
url: RequestUrlHandle(url),
type: 'POST',
dataType: 'json',
timeout: e.attr('data-timeout') || 60000,
data: { id: id, state: state, field: field, reason: reason },
success: function (result) {
if (is_loading == 1) {
AMUI.dialog.loading('close');
}
if (is_progress == 1) {
$.AMUI.progress.done();
}
if (result.code == 0) {
Prompt(result.msg, 'success');
// 成功则更新数据样式
if (e.hasClass('am-success')) {
e.removeClass('am-success');
e.addClass('am-default');
if (is_update_status == 1) {
if ($('#data-list-' + id).length > 0) {
$('#data-list-' + id).addClass('am-active');
}
}
} else {
e.removeClass('am-default');
e.addClass('am-success');
if (is_update_status == 1) {
if ($('#data-list-' + id).length > 0) {
$('#data-list-' + id).removeClass('am-active');
}
}
}
e.attr('data-state', state);
} else {
Prompt(result.msg);
}
},
error: function (xhr, type) {
if (is_loading == 1) {
AMUI.dialog.loading('close');
}
if (is_progress == 1) {
$.AMUI.progress.done();
}
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
}
});
}
// 公共数据操作
$(function () {
// 默认初始化,默认标签[form.form-validation]
FromInit();
// 公共列表 form 搜索条件
FromInit('form.form-validation-search');
// 公共单个文件上传表单初始化
FromInit('form.form-validation-common-upload-editor-single');
// 表格初始化
FormTableContainerInit();
// 颜色选择器初始化
ColorPickerInit();
// 二维码初始化
ViewQrCodeInit();
// 文本复制初始化
TextCopyinit();
// 标签title属性初始化
ViewDocumentTitleInit();
// highlight代码高亮初始化
HighlightInit();
// 隐藏播放器下载按钮和右击事件
$('video').attr('controlslist', 'nodownload');
$('video').bind('contextmenu', function () { return false; });
// 表格字段数据排序
$('.form-sort-container .sort-icon').on('click', function () {
var key = $(this).data('key') || null;
var val = $(this).data('val') || null;
if (key == null || val == null) {
Prompt(window['lang_operate_params_error'] || '排序数据值有误');
return false;
}
// 选中
$(this).addClass('sort-active').siblings('a').removeClass('sort-active');
// 赋值并搜索
var $parent = $(this).parents('form.form-validation-search');
$parent.find('input[name="fp_order_by_key"]').val(key);
$parent.find('input[name="fp_order_by_val"]').val(val);
$parent.find('button[type="submit"]').trigger('click');
});
// 表格字显示段拖拽排序
if ($('ul.form-table-fields-content-container').length > 0) {
$('ul.form-table-fields-content-container').dragsort({ dragSelector: 'li', placeHolderTemplate: '' });
}
// 表格字段选择确认
$('.form-table-field-confirm-submit').on('click', function () {
// 获取复选框选中的值
var fields = [];
$('.form-table-fields-list-container').find('input[name="form_field_checkbox_value"]').each(function (key, tmp) {
fields.push({
label: $(this).data('original-name'),
key: $(this).val(),
checked: $(this).is(':checked') ? 1 : 0
});
});
// 是否有选择的数据
if (fields.length <= 0) {
Prompt(window['lang_before_choice_data_tips'] || '请先选择数据');
return false;
}
// 表单唯一md5key
var md5_key = $('.am-table-scrollable-horizontal').data('md5-key') || '';
// ajax请求操作
var $button = $(this);
$button.button('loading');
$.AMUI.progress.start();
$.ajax({
url: RequestUrlHandle($button.data('url')),
type: 'POST',
dataType: 'json',
data: { "fields": fields, "md5_key": md5_key },
success: function (result) {
$.AMUI.progress.done();
if (result.code == 0) {
Prompt(result.msg, 'success');
setTimeout(function () {
window.location.reload();
}, 1000);
} else {
$button.button('reset');
Prompt(result.msg);
}
},
error: function (xhr, type) {
$.AMUI.progress.done();
$button.button('reset');
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
}
});
});
// 表格字段复选框操作 全选/反选
$('.form-table-field-checkbox-submit').on('click', function () {
var value = parseInt($(this).attr('data-value')) || 0;
if (value == 1) {
var not_checked_text = $(this).data('not-checked-text') || window['lang_select_all_name'] || '全选';
$(this).parent().find('.checkbox-name').text(not_checked_text);
$('.form-table-fields-list-container ul li').find('input[type="checkbox"]').uCheck('uncheck');
} else {
var checked_text = $(this).data('checked-text') || window['lang_select_reverse_name'] || '反选';
$(this).parent().find('.checkbox-name').text(checked_text);
$('.form-table-fields-list-container ul li').find('input[type="checkbox"]').uCheck('check');
}
$(this).attr('data-value', value == 1 ? 0 : 1);
});
// 表格复选框操作 全选/反选
$('.form-table-operate-checkbox-submit').on('click', function () {
var value = parseInt($(this).attr('data-value')) || 0;
if (value == 1) {
var not_checked_text = $(this).data('not-checked-text') || window['lang_select_all_name'] || '全选';
$(this).text(not_checked_text);
$('.form-table-operate-checkbox').find('input[type="checkbox"]').uCheck('uncheck');
} else {
var checked_text = $(this).data('checked-text') || window['lang_select_reverse_name'] || '反选';
$(this).text(checked_text);
$('.form-table-operate-checkbox').find('input[type="checkbox"]').uCheck('check');
}
$(this).attr('data-value', value == 1 ? 0 : 1);
});
// 表格公共搜索操作
$(document).on('click', '.form-table-operate-top-search-submit', function () {
// 表单数据
var element = 'form.form-validation-search';
var $form = $(element);
var action = $form.attr('action');
var data = GetFormVal($form, true);
// 改变浏览器url地址
var browser_url = action;
var pv = '';
for (var i in data) {
if (data[i] != undefined && data[i] != '') {
pv += i + '=' + encodeURIComponent(data[i]) + '&';
}
}
if (pv != '') {
var join = (browser_url.indexOf('?') >= 0) ? '&' : '?';
browser_url += join + pv.substr(0, pv.length - 1);
}
history.pushState({}, '', browser_url);
// 是否同步搜索、则直接刷新页面
if (parseInt($(this).attr('data-is-sync-search')) == 1) {
window.location.reload();
} else {
// ajax请求操作
$.AMUI.progress.start();
$.ajax({
url: RequestUrlHandle(action),
type: 'POST',
dataType: "json",
timeout: $form.data('timeout') || 60000,
data: data,
success: function (result) {
$.AMUI.progress.done();
if (typeof (result) == 'object' && result.code != 0) {
Prompt(result.msg);
} else {
FormTableContentModuleResponseHandle(result);
}
},
error: function (xhr, type) {
$.AMUI.progress.done();
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
}
});
}
return false;
});
// 表格公共删除操作
$(document).on('click', '.form-table-operate-top-delete-submit', function () {
// 请求 url
var url = $(this).data('url') || null;
if (url == null) {
Prompt(window['lang_operate_params_error'] || 'url参数有误');
return false;
}
// form name 名称
var form = $(this).data('form') || null;
if (form == null) {
Prompt(window['lang_operate_params_error'] || 'form参数有误');
return false;
}
// 是否有选择的数据
var values = FromTableCheckedValues(form, '.am-table-scrollable-horizontal');
if (values.length <= 0) {
Prompt(window['lang_before_choice_data_tips'] || '请先选中数据');
return false;
}
// 提交字段名称|超时时间|标题|描述
var key = $(this).data('key') || form;
var timeout = $(this).data('timeout') || 60000;
var title = $(this).data('confirm-title') || window['lang_reminder_title'] || '温馨提示';
var msg = $(this).data('confirm-msg') || window['lang_delete_confirm_tips'] || '删除后不可恢复、确认操作吗?';
// 再次确认
AMUI.dialog.confirm({
title: title,
content: msg,
onConfirm: function (result) {
// 数组转对象
var data = {};
data[key] = {};
for (var i in values) {
data[key][i] = values[i];
}
// ajax请求操作
$.AMUI.progress.start();
$.ajax({
url: RequestUrlHandle(url),
type: 'POST',
dataType: "json",
timeout: timeout,
data: data,
success: function (result) {
$.AMUI.progress.done();
if (result.code == 0) {
// 成功则删除数据列表
Prompt(result.msg, 'success');
for (var i in values) {
$('#data-list-' + values[i]).remove();
}
} else {
Prompt(result.msg);
}
},
error: function (xhr, type) {
$.AMUI.progress.done();
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
}
});
},
onCancel: function () { }
});
});
// 表格公共excel导出操作
$(document).on('click', '.form-table-operate-top-export-excel-submit', function () {
// 表单基础
var form_name = 'form.form-validation-search';
var $form = $(form_name);
var request_value = $form.attr('request-value') || window.location.href;
request_value = UrlFieldReplace('form_table_is_export_excel', null, request_value);
// 拼接条件
var pv = 'form_table_is_export_excel=1&';
// 是否存在数据选择(复选框列+id数据列)
var id_form_name = null;
if ($form.find('.form-table-search-item-head-value-form_checkbox_value').length > 0 && $form.find('.form-table-search-item-head-value-id').length > 0) {
// 是否有选择的数据
var values = FromTableCheckedValues('form_checkbox_value', '.am-table-scrollable-horizontal');
if (values.length > 0) {
id_form_name = $form.find('.form-table-search-item-head-value-id input').attr('name') || null;
if (id_form_name != null) {
pv += id_form_name + '=' + encodeURIComponent(values.join(',')) + '&';
}
}
}
// 拼接参数
var params = GetFormVal($form, true);
for (var i in params) {
if (params[i] != undefined && params[i] != '' && i != id_form_name) {
pv += i + '=' + encodeURIComponent(params[i]) + '&';
}
}
var join = (request_value.indexOf('?') >= 0) ? '&' : '?';
request_value += join + pv.substr(0, pv.length - 1);
window.open(request_value);
});
// 表格公共pdf导出和打印操作
$(document).on('click', '.form-table-operate-top-data-print-submit,.common-print-submit', function () {
DataPrintHandle($(this), $(this).data('is-pdf'));
});
// 表格内部表格伸缩事件
$(document).on('click', '.form-inside-stretch-submit > a', function () {
var $container = $(this).parents('.form-inside-table-container');
var $layer = $container.find('.form-inside-table-layer');
var open_text = $(this).data('open-text') || null;
var close_text = $(this).data('close-text') || null;
if ($layer.hasClass('form-inside-table-layer-auto')) {
$layer.removeClass('form-inside-table-layer-auto');
$(this).removeClass('am-icon-angle-double-up').addClass('am-icon-angle-double-down');
if (open_text != null) {
$(this).text(' ' + open_text);
}
} else {
$layer.addClass('form-inside-table-layer-auto');
$(this).addClass('am-icon-angle-double-up').removeClass('am-icon-angle-double-down');
if (close_text != null) {
$(this).text(' ' + close_text);
}
}
});
// 页面加载loading
if ($('.am-page-loading').length > 0) {
$('.am-page-loading').fadeOut(400);
}
// 全屏操作
$(document).on('click', '.fullscreen-event', function () {
var status = $(this).attr('data-status') || 0;
if (status == 0) {
if (FullscreenOpen()) {
$(this).find('.fullscreen-text').text($(this).attr('data-fulltext-exit') || window['lang_fullscreen_exit_name'] || '退出全屏');
}
} else {
if (FullscreenExit()) {
$(this).find('.fullscreen-text').text($(this).attr('data-fulltext-open') || window['lang_fullscreen_open_name'] || '开启全屏');
}
}
$(this).attr('data-status', status == 0 ? 1 : 0);
$(this).attr('data-status-y', status);
});
// esc退出全屏事件
document.addEventListener("fullscreenchange", function (e) {
FullscreenEscEvent();
});
document.addEventListener("mozfullscreenchange", function (e) {
FullscreenEscEvent();
});
document.addEventListener("webkitfullscreenchange", function (e) {
FullscreenEscEvent();
});
document.addEventListener("msfullscreenchange", function (e) {
FullscreenEscEvent();
});
// 下拉选择组件初始化
SelectChosenInit();
// 多选插件 空内容失去焦点验证bug兼容处理
$(document).on('blur', 'ul.chosen-choices .search-field, div.chosen-select .chosen-search', function () {
if ($(this).parent().find('li').length <= 1 || $(this).parent().parent().find('.chosen-default').length >= 1) {
$(this).parent().parent().prev().trigger('blur');
}
});
// 多选插件分组支持组单选
$(document).on('click', '.chosen-container-multi .chosen-results li', function () {
var $chosen = $(this).parents('.chosen-container');
var is_group_single = parseInt($chosen.prev().data('group-single') || 0);
if (is_group_single == 1 && !$(this).hasClass('group-result')) {
var index = $(this).index();
var $parent = $(this).parent();
var count = $parent.find('li').length;
var arr = [];
// 获取前面选中的数据
var temp_index = index - 1;
while (temp_index != 0) {
var $li = $parent.find('li').eq(temp_index);
if ($li.hasClass('group-result')) {
break;
}
if ($li.hasClass('result-selected')) {
var value = $li.attr('data-option-array-index') || null;
if (value != null) {
arr.push(value);
}
}
temp_index--;
}
// 获取后面选中的数据
temp_index = index + 1;
while (temp_index < count) {
var $li = $parent.find('li').eq(temp_index);
if ($li.hasClass('group-result')) {
break;
}
if ($li.hasClass('result-selected')) {
var value = $li.attr('data-option-array-index') || null;
if (value != null) {
arr.push(value);
}
}
temp_index++;
}
if (arr.length > 0) {
$chosen.find('.chosen-choices li').each(function (k, v) {
var $a = $(this).find('a.search-choice-close');
var value = $a.attr('data-option-array-index');
if (arr.indexOf(value) != -1) {
$a.trigger('click');
}
});
}
}
});
/**
* 删除数据列表
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-10T14:22:39+0800
* @param {[int] [data-id] [数据id]}
* @param {[string] [data-url] [请求地址]}
*/
$(document).on('click', '.submit-delete', function () {
ConfirmDataDelete($(this));
});
/**
* 公共数据状态操作
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-10T14:22:39+0800
* @param {[int] [data-id] [数据id]}
* @param {[int] [data-state][状态值]}
* @param {[string] [data-url] [请求地址]}
*/
$(document).on('click', '.submit-state', function () {
// 动画
if ($(this).attr('data-animate') !== '0') {
$(this).find('i').animate({ "font-size": "28px" }, 200);
setTimeout(() => {
$(this).find('i').animate({ "font-size": "24px" }, 200);
}, 200);
}
// 是否原因
if(parseInt($(this).attr('data-is-operate-reason') || 0) == 1) {
// 操作条件
var operate_where = $(this).attr('data-operate-reason-where');
// 未定义条件 或 存在条件的值
if(operate_where === undefined || operate_where === '' || operate_where.split(',').map(function(v){return parseInt(v);}).indexOf(parseInt($(this).attr('data-state')) == 1 ? 0 : 1) != -1) {
$form_table_state_operate_reason_modal.modal({
width: 300
});
$form_table_state_operate_reason_item_obj = $(this);
return false;
}
}
// 状态处理
CommonStateOperateHandle($(this));
});
/**
* 公共数据状态操作-弹窗确认
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2025-09-17
*/
$(document).on('click', '#form-table-state-operate-reason-modal .state-operate-confirm-submit', function () {
$form_table_state_operate_reason_modal.modal('close');
CommonStateOperateHandle($form_table_state_operate_reason_item_obj, $form_table_state_operate_reason_modal.find('input').val());
});
/**
* 公共编辑
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-14T13:53:13+0800
*/
$(document).on('click', '.submit-edit', function () {
// 窗口标签
var tag = $(this).attr('data-tag') || null;
if (tag == null) {
var modal = $(this).attr('data-am-modal') || null;
if (modal != null) {
modal = JsonStringToJsonObject(modal);
if ((modal.target || null) != null) {
tag = modal.target;
}
}
}
if (tag == null) {
tag = '#data-save-win';
} else {
if (tag.indexOf('#') == -1) {
tag = '#' + tag;
}
}
// 更改窗口名称
if ($(tag).length > 0) {
// 是否modal窗口
var $title = $(tag).find('>.am-modal-dialog>.am-modal-hd>span');
if ($title.length == 0) {
$title = $(tag).find('.am-popup-title');
}
$title.text($title.attr('data-edit-title'));
}
// 数据
var data = JSON.parse(decodeURIComponent($(this).attr('data-json')));
// 初始数据
FormDataFill(data, tag);
// 额外数据处理
FunSaveWinAdditional(data, 'edit', tag);
});
/**
* 公共无限节点 - 双击编辑
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-10-16
* @desc description
*/
$(document).on('dblclick', '#tree table.am-table tr', function () {
if ($(this).find('td.type-operate .submit-edit').length > 0) {
$(this).find('td.type-operate .submit-edit').trigger('click');
}
});
/**
* 公共无限节点 - 新子节点
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:12:10+0800
*/
$(document).on('click', '#tree .tree-submit-add-node', function () {
// 清空表单数据
TreeFormInit();
// 父节点赋值
var id = parseInt($(this).attr('data-id')) || 0;
$($(this).parents('#tree').data('popup-tag')).find('input[name="pid"], select[name="pid"]').val(id);
// 多选插件事件更新
if ($('select.chosen-select').length > 0) {
SelectChosenInit();
}
});
/**
* 公共无限节点
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:12:10+0800
*/
$(document).on('click', '#tree .tree-submit', function () {
var id = parseInt($(this).attr('data-id')) || 0;
// 状态
if ($('.tree-pid-' + id).length > 0) {
if ($(this).hasClass('icon-arrow-right')) {
$(this).removeClass('icon-arrow-right');
$(this).addClass('icon-arrow-down');
$('.tree-pid-' + id).removeClass('am-hide');
$('.tree-pid-' + id).each(function (k, v) {
if ($('.tree-pid-' + $(this).attr('data-value')).length > 0) {
$(this).find('td .tree-submit').removeClass('icon-arrow-right');
$(this).find('td .tree-submit').addClass('icon-arrow-down');
}
});
} else {
$(this).removeClass('icon-arrow-down');
$(this).addClass('icon-arrow-right');
$('.tree-pid-' + id).addClass('am-hide');
$('.tree-pid-' + id).each(function (k, v) {
if ($('.tree-pid-' + $(this).attr('data-value')).length > 0) {
$(this).find('td .tree-submit').removeClass('icon-arrow-down');
$(this).find('td .tree-submit').addClass('icon-arrow-right');
}
});
}
} else {
var url = $(this).parents('#tree').data('node-url') || '';
var level = parseInt($(this).parents('tr').attr('data-level') || 0) + 1;
var is_delete_all = parseInt($(this).attr('data-is-delete-all')) || 0;
if (id > 0 && url != '') {
Tree(id, url, level, is_delete_all);
} else {
Prompt(window['lang_operate_params_error'] || '参数有误');
}
}
});
/**
* 公共无限节点新增按钮处理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:11:34+0800
*/
$('.tree-submit-add').on('click', function () {
TreeFormInit();
});
/**
* 公共无限节点开关状态
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:11:34+0800
*/
$(document).on('click', '#tree table tr td .am-switch', function () {
var $this = $(this);
var $tr = $(this).parents('tr');
var $td = $(this).parent('td');
// 原始json数据
var json_old = JSON.parse(decodeURIComponent($tr.find('.submit-edit').attr('data-json')));
var head_col = TreeHeadConfig();
var url = $('#tree').attr('data-status-url');
var is_loading = parseInt($('#tree').attr('data-status-is-loading') || 0);
var loading_msg = $('#tree').attr('data-status-loading-msg') || window['lang_request_handle_loading_tips'] || '正在处理中、请稍候...';
// 弹层加载
if (is_loading == 1) {
AMUI.dialog.loading({ title: loading_msg });
}
// 请求数据
var status_field = $td.data('key');
var status_value = json_old[status_field] == 1 ? 0 : 1;
var data = {
id: $tr.data('value'),
field: status_field,
state: status_value,
};
$.ajax({
url: RequestUrlHandle(url),
type: 'POST',
dataType: 'json',
data: data,
success: function (result) {
setTimeout(() => {
$this.find('input').switch().toggleSwitchOpen();
}, 1000);
if (is_loading == 1) {
setTimeout(function () {
AMUI.dialog.loading('close');
}, 1000);
}
$.AMUI.progress.done();
if (result.code == 0) {
Prompt(result.msg, 'success');
// 当前表单是否成功后刷新页面
if ($('form.form-validation').attr('request-type') == 'ajax-reload') {
setTimeout(function () {
window.location.reload();
}, 1000);
} else {
if (head_col.length > 0) {
for (var i = 0; i < head_col.length; i++) {
if (head_col[i].value_style && head_col[i].value_style.value_style_key && head_col[i].value_style.value_style_key == status_field && head_col[i].value_style.value_style_key_status) {
var style = '';
json_old[head_col[i].value_style.value_style_key] = json_old[head_col[i].value_style.value_style_key] == '1' ? '0' : '1';
if (json_old[head_col[i].value_style.value_style_key] == head_col[i].value_style.value_style_key_status) {
style = head_col[i].value_style.style;
}
switch (head_col[i].type) {
// 图标
case 'img':
break;
// icon
case 'icon':
if ((json_old[head_col[i].field] || null) != null) {
$tr.find('td[data-key="' + head_col[i].field + '"]').empty();
$tr.find('td[data-key="' + head_col[i].field + '"]').append('');
}
break;
// 状态
case 'status':
break;
default:
$tr.find('td[data-key="' + head_col[i].field + '"] span>span').remove();
$tr.find('td[data-key="' + head_col[i].field + '"] span').append('' + json_old[head_col[i].field] + '');
}
}
}
}
// tr状态class
var status_field_arr = ['is_enable', 'is_show'];
if (status_field_arr.indexOf(status_field) != -1) {
if (status_value == 1) {
$tr.removeClass('am-active');
} else {
$tr.addClass('am-active');
}
}
// 属性json数据更新
$tr.find('.submit-edit').attr('data-json', encodeURIComponent(JSON.stringify(json_old)));
}
} else {
if (head_col.length > 0) {
for (var i = 0; i < head_col.length; i++) {
var style = '';
switch (head_col[i].type) {
// 状态
case 'status':
$this.find('input').switch().toggleSwitch(json_old[head_col[i].field] == 1 ? true : false);
break;
}
}
}
Prompt(result.msg);
}
},
error: function (xhr, type) {
if (is_loading == 1) {
setTimeout(function () {
AMUI.dialog.loading('close');
}, 1000);
}
$.AMUI.progress.done();
setTimeout(() => {
$this.find('input').switch().toggleSwitchOpen();
}, 1000);
if (head_col.length > 0) {
for (var i = 0; i < head_col.length; i++) {
var style = '';
switch (head_col[i].type) {
// 状态
case 'status':
$this.find('input').switch().toggleSwitch(json_old[head_col[i].field] == 1 ? true : false);
break;
}
}
}
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
}
});
});
/**
* 卡片组件公共无限节点新增按钮处理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:11:34+0800
*/
$(document).on('click', '.card-submit-add', function () {
CardFormInit();
});
/**
* 公共数据ajax操作
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-10T14:22:39+0800
* @param {[int] [data-id] [数据id]}
* @param {[int] [data-view] [完成操作(delete删除数据, reload刷新页面, fun方法回调(data-value)]}
* @param {[string] [data-url] [请求地址]}
*/
$(document).on('click', '.submit-ajax', function () {
var is_confirm = $(this).attr('data-is-confirm');
if (is_confirm == undefined || is_confirm == 1) {
ConfirmNetworkAjax($(this));
} else {
AjaxRequest($(this));
}
});
/**
* url事件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2024-10-09
* @desc description
* @param {[string] [data-url] [请求地址]}
* @param {[string] [data-title][提示标题]}
* @param {[string] [data-msg] [提示信息,不配置则不提示]}
*/
$(document).on('click', '.submit-url', function () {
var url = $(this).attr('data-url') || $(this).attr('href') || $(this).attr('src') || null;
if (url != null) {
var msg = $(this).attr('data-msg') || null;
if (msg == null) {
window.location.href = url;
} else {
AMUI.dialog.confirm({
title: $(this).attr('data-title') || window['lang_reminder_title'] || '温馨提示',
content: msg,
onConfirm: function (result) {
window.location.href = url;
}
});
}
}
});
// 地址初始化
RegionLinkageInit();
// 地址编号搜索
$(document).on('click', '.region-linkage-code button', function () {
var code = $(this).parents('.region-linkage-code').find('input').val() || null;
if (code == null) {
Prompt(window['lang_input_empty_tips'] || '请输入数据');
return false;
}
var $this = $(this);
var $parent = $this.parents('.region-linkage');
$this.attr('disabled', true);
$.ajax({
url: RequestUrlHandle($parent.data('code-url')),
type: 'POST',
dataType: 'json',
timeout: 30000,
data: { code: code },
success: function (result) {
$this.attr('disabled', false);
if (result.code == 0) {
// 更新选中值
$parent.find('input[name="province"]').val(result.data.province.id);
$parent.find('input[name="city"]').val(result.data.city.id);
$parent.find('input[name="county"]').val(result.data.county.id);
var address = result.data.province.name + ((result.data.city.name || null) == null ? '' : '-' + result.data.city.name) + ((result.data.county.name || null) == null ? '' : '-' + result.data.county.name);
$parent.find('input[name="province_city_county"]').val(address);
// 地址初始化
RegionLinkageInit();
$parent.find('.am-cascader-dropdown').removeClass('am-active');
$parent.find('.am-cascader .am-input-suffix i').removeClass('is-reverse');
if (result.data.city.name.length > 0) {
$parent.find('.am-cascader-menu:eq(1)').addClass('am-active');
} else {
$parent.find('.am-cascader-menu:eq(1)').removeClass('am-active');
}
if (result.data.county.name.length > 0) {
$parent.find('.am-cascader-menu:eq(2)').addClass('am-active');
} else {
$parent.find('.am-cascader-menu:eq(2)').removeClass('am-active');
}
Prompt(result.msg, 'success');
} else {
Prompt(result.msg);
}
},
error: function (xhr, type) {
$this.attr('disabled', false);
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'));
}
});
});
$(document).on('keydown', '.region-linkage-code input', function () {
if (event.keyCode == 13) {
$(this).parents('.region-linkage-code').find('button').trigger('click');
return false;
}
});
// 根据字符串地址获取坐标位置
$(document).on('click', '#map-location-submit', function () {
// 地址信息
var region = $('.region-linkage input[name="province_city_county"]').val();
var detail = $('#form-address').val();
if (region.length <= 0 || detail.length <= 0) {
Prompt(window['lang_address_data_empty_tips'] || '地址为空');
return false;
}
var arr = region.split('-');
var province = arr[0];
var address = arr.join('') + detail;
// 地图类型
switch (__load_map_type__) {
// 百度地图
case 'baidu':
// 创建地址解析器实例
var geo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
geo.getPoint(address, function (point) {
if (point) {
MapInit(point.lng, point.lat);
} else {
Prompt(window['lang_map_address_analysis_tips'] || '您选择地址没有解析到结果!');
}
}, province);
break;
// 高德地图
case 'amap':
AMap.plugin('AMap.Geocoder', function () {
var geo = new AMap.Geocoder()
geo.getLocation(address, function (status, result) {
if (status === 'complete' && result.geocodes.length) {
var lnglat = result.geocodes[0].location;
MapInit(lnglat.lng, lnglat.lat);
} else {
Prompt(window['lang_map_address_analysis_tips'] || '您选择地址没有解析到结果!');
}
});
});
break;
// 腾讯地图
case 'tencent':
var geo = new TMap.service.Geocoder();
geo.getLocation({ address: address }).then((result) => {
var lnglat = result.result.location;
MapInit(lnglat.lng, lnglat.lat);
});
break;
// 天地图
case 'tianditu':
var geo = new T.Geocoder();
geo.getPoint(address, function (result) {
if (result.getStatus() == 0) {
var point = result.getLocationPoint();
MapInit(point.lng, point.lat);
} else {
Prompt(point.getMsg());
}
});
break;
// 默认
default:
Prompt((window['lang_map_type_not_exist_tips'] || '该地图功能未定义') + '(' + __load_map_type__ + ')');
}
});
// 图片上传
$(document).on('change', '.images-file-event, .file-event', function () {
// 显示选择的图片名称
var fileNames = '';
$.each(this.files, function () {
fileNames += '' + this.name + '(' + AnnexSizeToUnit(this.size) + ')';
});
$($(this).attr('data-tips-tag')).html(fileNames);
// 触发配合显示input地址事件
var input_tag = $(this).attr('data-choice-one-to') || null;
if (input_tag != null) {
$(input_tag).trigger('blur');
}
});
// 图片预览
if ($('.images-file-event').length > 0) {
ImageFileUploadShow('.images-file-event');
}
// 视频上传
$(document).on('change', '.video-file-event', function () {
// 显示选择的图片名称
var fileNames = '';
$.each(this.files, function () {
fileNames += '' + this.name + ' ';
});
$($(this).attr('data-tips-tag')).html(fileNames);
// 触发配合显示input地址事件
var input_tag = $(this).attr('data-choice-one-to') || null;
if (input_tag != null) {
$(input_tag).trigger('blur');
}
});
// 视频预览
if ($('.video-file-event').length > 0) {
VideoFileUploadShow('.video-file-event');
}
// 监听多图上传和上传附件组件的插入动作
if (typeof (upload_editor) == 'object') {
upload_editor.ready(function () {
// 图片上传动作
upload_editor.addListener("beforeInsertImage", function (t, result) {
CommonFormUploadEditorDataViewHandle(result, 'images');
});
// 视频上传
upload_editor.addListener("beforeInsertVideo", function (t, result) {
CommonFormUploadEditorDataViewHandle(result, 'video');
});
// 文件上传
upload_editor.addListener("beforeInsertFile", function (t, result) {
CommonFormUploadEditorDataViewHandle(result, 'file');
});
});
}
// 打开编辑器插件
$(document).on('click', '.plug-file-upload-submit, .plug-file-upload-pure-submit', function () {
// 是否查看文件操作、则阻止往下执行
if ($(this).find('>i.icon-eye').length > 0) {
return false;
}
// 组件是否初始化
if (typeof (upload_editor) != 'object') {
Prompt(window['lang_assembly_not_init_tips'] || '组件未初始化');
return false;
}
// 容器配置
var $view_tag = (($(this).attr('data-view-tag') || null) == null) ? null : $($(this).attr('data-view-tag'));
if($view_tag != null) {
// 是否限制数量
var max_number = $view_tag.attr('data-max-number') || 0;
if (max_number > 0 && $view_tag.find('li').length > 0) {
var count = 0;
var remove_default_images = $view_tag.data('remove-default-images') || null;
$view_tag.find('li').each(function (k, v) {
// 默认图片项不参与数量计算、li是按钮则不参与计算
if ($(this).find('img').attr('src') != remove_default_images && !$(this).hasClass('plug-file-upload-submit')) {
count++;
}
});
if (count > max_number) {
var temp_msg = window['lang_upload_annex_max_tips'] || '最多上传{value}个附件';
Prompt(temp_msg.replace('{value}', max_number));
return false;
}
}
// 是否指定form名称
if (($view_tag.attr('data-form-name') || null) == null) {
Prompt(window['lang_not_specified_form_name_tips'] || '未指定表单name名称');
return false;
}
// 加载类型
var dialog_type = $view_tag.attr('data-dialog-type');
} else {
var dialog_type = $(this).attr('data-dialog-type');
}
// 加载组件类型
var form_action = 'uploadimage';
switch (dialog_type) {
// 视频
case 'video':
dialog_type = 'insertvideo';
form_action = 'uploadvideo';
break;
// 图片
case 'images':
dialog_type = 'insertimage';
form_action = 'uploadimage';
break;
// 文件
case 'file':
dialog_type = 'attachment';
form_action = 'uploadfile';
break;
default :
Prompt(window['lang_not_specified_assembly_tips'] || '未指定加载组件');
return false;
}
$('body').attr('dialog-type', dialog_type);
// 容器配置、赋值参数
$('body').attr('view-tag', $view_tag == null ? '' : $(this).attr('data-view-tag'));
// 回调方法、赋值参数
$('body').attr('back-fun', $(this).attr('data-back-fun') || '');
$('body').attr('back-mark', $(this).attr('data-back-mark') || '');
// 直接调用上传
var is_direct = parseInt($(this).attr('data-is-direct') || 0);
// 是否单个上传
if (($view_tag != null && parseInt($view_tag.data('is-single') || 0) == 1) || is_direct == 1) {
var $form = $('form.form-validation-common-upload-editor-single');
$form.find('input[name="action"]').val(form_action);
$form.find('input[name="upfile"]').attr('accept', form_action == 'uploadimage' ? 'image/*' : (form_action == 'uploadvideo' ? 'video/*' : '')).trigger('click');
return false;
}
// 打开组件
var dialog = upload_editor.getDialog(dialog_type);
dialog.render();
dialog.open();
});
// 公共单个文件上传表单
$('form.form-validation-common-upload-editor-single input[name="upfile"]').on('change', function () {
$(this).parents('form').find('button[type="submit"]').trigger('click');
});
// 删除容器中的内容(排除上传和查看icon)
$(document).on('click', '.plug-file-upload-view li i:not(.icon-add, .icon-eye)', function () {
// 容器
var $tag = $(this).parents('ul.plug-file-upload-view');
// 是否上传和显示组合
var $compose = $tag.find('li.plug-file-upload-submit');
if ($compose.length > 0) {
$compose.html('');
} else {
var $parent = $(this).parent();
// 删除默认图片
var remove_default_images = $tag.attr('data-remove-default-images');
if (remove_default_images === undefined) {
// 删除数据、延迟10毫秒删除、避免业务层页面有其他操作
setTimeout(function () {
$parent.remove();
}, 10);
// 数据处理
var max_number = parseInt($tag.attr('data-max-number') || 0);
if (max_number > 0) {
if ($tag.find('li').length < max_number) {
$('.plug-file-upload-submit').show();
}
}
} else {
$parent.find('input').val('');
$parent.find('img').attr('src', remove_default_images || '');
$parent.find('i').remove();
}
}
return false;
});
// 上传文件组件预览
$(document).on('click', '.plug-file-upload-view li i.icon-eye', function () {
var $parent = $(this).parent();
var $tag = $(this).parents('ul.plug-file-upload-view');
var type = $tag.attr('data-dialog-type') || null;
var value = $parent.find('>img').attr('src') || null;
if (value != null) {
type = 'images';
} else {
value = $parent.find('>video').attr('src') || null;
if (value != null) {
type = 'video';
}
}
AnnexView(type, value, $(this));
});
// 公共文件预览
$(document).on('click', '.common-annex-view-event', function () {
var type = $(this).attr('data-type') || 'images';
var value = $(this).attr('data-value') || $(this).attr('src') || null;
AnnexView(type, value, $(this));
});
// 富文本图片预览
$(document).on('click', '.richtext img', function () {
// 存在跳转则不执行预览
if ($(this).parent().prop('tagName') != 'A') {
AnnexView('images', $(this).attr('src'), $(this));
}
});
// 文件下载
$(document).on('click', '.common-annex-download-event', function () {
// 文件信息
var value = $(this).attr('data-value') || $(this).attr('src') || null;
if (value == null) {
Prompt(window['lang_data_error'] || '数据有误');
return false;
}
// 名称及后缀、没有指定则获取最后一次出现的斜杠后面的的内容作为文件名称
var name = $(this).attr('data-name') || null;
if (name == null) {
var last = value.lastIndexOf('/');
name = (last == -1) ? value : value.substr(last + 1);
}
var $this = $(this);
$this.button('loading');
// 异步
var xhr = new XMLHttpRequest();
xhr.open('GET', value, true);
// blob 类型
xhr.responseType = 'blob';
xhr.onload = function () {
if (xhr.status != 200) {
Prompt(window['lang_operate_download_fail_tips'] || '下载失败!');
$this.button('reset');
return false;
}
if (window.navigator.msSaveOrOpenBlob) {
// IE
navigator.msSaveBlob(xhr.response, filename);
} else {
var url = window.URL.createObjectURL(xhr.response);
var a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('target', '_blank');
a.setAttribute('download', name);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
$this.button('reset');
};
xhr.send();
});
/* 搜索切换 */
var $more_where = $('.more-where');
$more_submit = $('.more-submit');
$more_submit.find('input[name="is_more"]').change(function () {
if ($more_submit.find('i').hasClass('am-icon-angle-down')) {
$more_submit.find('i').removeClass('am-icon-angle-down');
$more_submit.find('i').addClass('am-icon-angle-up');
} else {
$more_submit.find('i').addClass('am-icon-angle-down');
$more_submit.find('i').removeClass('am-icon-angle-up');
}
if ($more_submit.find('input[name="is_more"]:checked').val() == undefined) {
$more_where.addClass('none');
} else {
$more_where.removeClass('none');
}
});
// 打开文档弹窗
$(document).on('click', '.submit-doc-popup, .am-form-group-label-doc-popup', function () {
var url = $(this).attr('data-url') || null;
if (url == null) {
var dcid = $(this).attr('data-dcid') || null;
if(dcid == null) {
Prompt(window['lang_operate_params_error'] || 'url未配置');
return false;
} else {
url = 'https://store.shopxo.net/doc-index-content-'+dcid+'.html';
}
}
// 调用弹窗方法
ModalLoad(url, '帮助教程', '', 0, 0, '', '', '', 'right');
});
// 加载 loading popup 弹层
$(document).on('click', '.submit-popup', function () {
var url = $(this).attr('data-url') || null;
if (url == null) {
Prompt(window['lang_operate_params_error'] || 'url未配置');
return false;
}
// 基础参数
var title = $(this).attr('data-title') || '';
var full = parseInt($(this).attr('data-full')) || 0;
var full_max = parseInt($(this).attr('data-full-max')) || 0;
var full_max_size = $(this).attr('data-full-max-size') || '';
var class_tag = $(this).attr('data-class') || '';
var on_open = $(this).attr('data-on-open') || '';
var on_close = $(this).attr('data-on-close') || '';
var offcanvas = $(this).attr('data-offcanvas') || '';
// 调用弹窗方法
ModalLoad(url, title, class_tag, full, full_max, full_max_size, on_open, on_close, offcanvas);
});
// 加载 loading modal 弹层
$(document).on('click', '.submit-modal', function () {
var url = $(this).data('url') || null;
if (url == null) {
Prompt(window['lang_operate_params_error'] || 'url未配置');
return false;
}
var title = $(this).attr('data-title') || '';
// 宽高
var config = {};
var width = parseInt($(this).attr('data-width') || 0);
if (width > 0) {
config['width'] = width;
}
var height = parseInt($(this).attr('data-height') || 0);
if (height > 0) {
config['height'] = height;
}
// 是否点击遮罩层时关闭
var is_close_via_dimmer = $(this).attr('data-close-via-dimmer');
config['closeViaDimmer'] = (is_close_via_dimmer == undefined || is_close_via_dimmer == 1);
// 监听方法
var on_open = $(this).attr('data-on-open') || '';
var on_close = $(this).attr('data-on-close') || '';
// 调用弹窗
AlertLoad({url: url, title: title}, config, on_open, on_close);
});
// 地图弹窗
$(document).on('click', '.submit-map-popup', function () {
// 参数
var lng = $(this).data('lng') || null;
var lat = $(this).data('lat') || null;
if (lng == null || lat == null) {
Prompt(window['lang_map_coordinate_tips'] || '坐标有误');
return false;
}
// 基础参数
var title = $(this).data('title') || '';
var class_tag = $(this).data('class') || '';
var full = parseInt($(this).data('full')) || 0;
var full_max = parseInt($(this).data('full-max')) || 0;
var full_max_size = $(this).data('full-max-size') || '';
// 调用弹窗方法
var url = UrlFieldReplace('lat', lat, UrlFieldReplace('lng', lng, __map_view_url__));
ModalLoad(url, title, class_tag, full, full_max, full_max_size);
});
// 弹窗拖拽
$(document).on('mousedown', '.am-popup .am-popup-hd, .am-modal-dialog .am-modal-hd', function (event) {
var is_move = true;
var $popup = $(this).parents('.am-popup, .am-modal-dialog');
if (!$popup.hasClass('am-popup-offcanvas-right') && !$popup.hasClass('am-popup-offcanvas-left')) {
var width = $popup.width();
var win_width = $(window).width();
var win_height = $(window).height();
var abs_x = event.pageX - $popup.offset().left;
var abs_y = event.pageY - $popup.offset().top;
$(document).mousemove(function (event) {
if (is_move) {
var scroll_top = $(document).scrollTop();
var left = event.pageX - abs_x;
var left_max = (0 - width);
if (left < left_max) {
left = left_max + 20;
}
if (left > win_width) {
left = win_width - 20;
}
var top = event.pageY - abs_y;
if (top > win_height + scroll_top) {
top = (win_height + scroll_top) - 20;
}
top -= scroll_top;
if (top < 0) {
top = 0;
}
$popup.css({ 'position': 'fixed', 'left': left, 'top': top, 'margin': 0 });
};
}).mouseup(function (event) {
is_move = false;
}).mouseleave(function () {
is_move = false;
});
return false;
}
});
// 关闭窗口
$(document).on('click', '.window-close-event', function () {
// 根据环境判断处理
var env = MobileBrowserEnvironment();
// 是否微信环境存在微信sdk
if (env == 'weixin' && typeof (wx) == 'object') {
wx.closeWindow();
// 是否支付宝环境存在支付宝sdk
} else if (env == 'alipay' && typeof (AlipayJSBridge) == 'object') {
AlipayJSBridge.call('exitApp');
} else {
// web端
if (confirm($(this).data('msg') || window['lang_window_close_confirm_tips'] || '您确定要关闭本页吗?')) {
var user_agent = navigator.userAgent;
if (user_agent.indexOf('Firefox') != -1 || user_agent.indexOf('Chrome') != -1) {
location.href = 'about:blank';
} else {
window.opener = null;
window.open('', '_self');
}
window.close();
}
}
});
// dropdown组件hover显示
var dropdown_timer = null;
$(document).on('mouseenter', '.am-dropdown .am-dropdown-toggle', function () {
clearTimeout(dropdown_timer);
if ($(window).width() >= 641) {
$('body .am-dropdown').each(function (k, v) {
var config = JsonStringToJsonObject($(this).attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
$(this).dropdown('close');
}
});
var $parent = $(this).parent();
var config = JsonStringToJsonObject($parent.attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
if ($parent.find('.am-dropdown-content').css('display') != 'block') {
$parent.find('.am-dropdown-content').attr('data-is-stay', 1);
$parent.dropdown('open');
}
}
}
});
$(document).on('mousemove', '.am-dropdown .am-dropdown-toggle', function () {
clearTimeout(dropdown_timer);
if ($(window).width() >= 641) {
var $parent = $(this).parent();
var config = JsonStringToJsonObject($parent.attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
if ($parent.find('.am-dropdown-content').css('display') != 'block') {
$parent.find('.am-dropdown-content').attr('data-is-stay', 1);
$parent.dropdown('open');
}
}
}
});
$(document).on('click', '.am-dropdown .am-dropdown-toggle', function () {
clearTimeout(dropdown_timer);
if ($(window).width() >= 641) {
var $parent = $(this).parent();
var config = JsonStringToJsonObject($parent.attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
if ($parent.find('.am-dropdown-content').css('display') != 'block') {
$parent.find('.am-dropdown-content').attr('data-is-stay', 1);
$parent.dropdown('open');
}
}
}
});
$(document).on('mouseleave', '.am-dropdown .am-dropdown-toggle', function () {
clearTimeout(dropdown_timer);
if ($(window).width() >= 641) {
var $parent = $(this).parent();
var config = JsonStringToJsonObject($parent.attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
$parent.find('.am-dropdown-content').attr('data-is-stay', 0);
dropdown_timer = setTimeout(function () {
if ((parseInt($parent.find('.am-dropdown-content').attr('data-is-stay') || 0)) == 0) {
$parent.dropdown('close');
}
}, 500);
}
}
});
$(document).on('mouseenter', '.am-dropdown .am-dropdown-content', function () {
clearTimeout(dropdown_timer);
if ($(window).width() >= 641) {
var $parent = $(this).parent();
var config = JsonStringToJsonObject($parent.attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
$(this).attr('data-is-stay', 1);
}
}
});
$(document).on('mouseleave', '.am-dropdown .am-dropdown-content', function () {
clearTimeout(dropdown_timer);
if ($(window).width() >= 641) {
var $parent = $(this).parent();
var config = JsonStringToJsonObject($parent.attr('data-am-dropdown')) || null;
if (config != null && (config.trigger || null) == 'hover') {
$(this).attr('data-is-stay', 0);
$parent.dropdown('close');
}
}
});
// 返回上一页、默认-1
$(document).on('click', '.back-submit-event', function () {
var number = $(this).data('number') || '-1';
window.history.go(number);
});
// 页面切换
var temp_scroll_original_index = 0;
$(document).on('click', '.tabs-switch-horizontal-container ul li', function () {
var $scroll_obj = $(this).parents('.tabs-switch-horizontal-container');
var parent_width = $scroll_obj.width();
var current_width = $(this).outerWidth(true);
var current_index = $(this).index();
if (current_index != temp_scroll_original_index) {
// 计算当前元素前面的元素宽度(含padding、margin、border)
var scroll = 0;
for (var i = 0; i <= current_index; i++) {
scroll += $scroll_obj.find('ul li:eq(' + i + ')').outerWidth(true);
}
// 减去父元素宽度一半
scroll -= parent_width / 2;
// 减去当前元素宽度一半
scroll -= current_width / 2;
$scroll_obj.animate({ 'scrollLeft': scroll });
}
temp_scroll_original_index = current_index;
});
// 混合业务列表选择
$(document).on('click', '.business-list ul li', function () {
var $business = ($(this).parents('form').length == 1) ? $(this).parents('form') : $(this).parents('.business-list');
var $parent = $(this).parent();
var type = $parent.data('type');
var $input = $business.find('input[name=' + type + ']').length == 0 ? $business.find('input[name=' + type + '_id]') : $business.find('input[name=' + type + ']');
var value = $input.val();
if ($(this).hasClass('selected')) {
if (parseInt($parent.data('is-required') || 0) == 0) {
$input.val('');
if (value != '') {
$input.trigger('change');
}
$(this).removeClass('selected');
}
} else {
$input.val($(this).data('value'));
if (value != $(this).data('value')) {
$input.trigger('change');
}
$(this).addClass('selected').siblings('li').removeClass('selected');
}
});
// 输入数据框添加清除按钮 - 鼠标进入事件
$(document).on('mouseenter', 'select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"]', function () {
InputClearOutHandle($(this));
});
// 输入数据框添加清除按钮 - 输入事件
$(document).on('keyup', 'select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"]', function () {
InputClearOutHandle($(this));
});
// 输入数据框添加清除按钮 - 获取焦点事件
$(document).on('focus', 'select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"]', function () {
InputClearOutHandle($(this));
});
// 下拉选择组件
$(document).on('mouseenter', '.chosen-container .chosen-single, .am-selected .am-selected-btn', function () {
InputClearOutHandle($(this));
});
$(document).on('mouseleave', '.chosen-container .chosen-single, .am-selected .am-selected-btn', function () {
$(this).removeClass('input-clearout-element');
});
// 鼠标进入清除按钮 - 增加元素class
$(document).on('mouseenter', 'a.input-clearout-submit', function () {
$(this).prev().addClass('input-clearout-element');
});
// 鼠标移开清除按钮 - 移除元素class
$(document).on('mouseleave', 'a.input-clearout-submit', function () {
$(this).prev().removeClass('input-clearout-element');
});
// 输入数据框清除
$(document).on('click', 'a.input-clearout-submit', function () {
// 文本框则清空数据
if ($(this).prev().is('input') || $(this).prev().is('textarea')) {
$(this).prev().val('').trigger('change');
}
// 插件下拉选择组件
if ($(this).parents('.chosen-container').length > 0) {
var $select = $(this).parents('.chosen-container').prev();
$select.val('');
$select.trigger('chosen:updated');
$select.trigger('change');
}
// 框架下拉选择组件
if ($(this).parents('.am-selected').length > 0) {
var $select = $(this).parents('.am-selected');
$select.prev().val('');
$select.find('.am-selected-btn .am-selected-status').text($select.prev().attr('placeholder') || $select.data('placeholder'));
$select.find('.am-selected-list li.am-checked').removeClass('am-checked');
}
setTimeout(function () {
// 移除class
$(this).prev().removeClass('input-clearout-element');
// 删除清除按钮
$(this).remove();
}, 0);
});
// 页面滚动则移除input删除按钮
$(window).on('scroll', function () {
$('*').removeClass('input-clearout-element');
$('.input-clearout-submit').remove();
});
$('*').on('scroll', function () {
$('*').removeClass('input-clearout-element');
$('.input-clearout-submit').remove();
});
// 下拉组件输入框快捷添加则不触发失去焦点事件
$(document).on('blur', '.chosen-container > .chosen-drop > .chosen-search > input', function () {
if (parseInt($(this).parents('.chosen-container').prev().data('no-results-operate-button') || 0) == 1) {
return false;
}
});
// 下拉组件快捷添加
$(document).on('click', '.chosen-container > .chosen-drop > .chosen-results > .no-results > .chosen-select-quick-add-submit', function () {
var $this = $(this);
var $parent = $this.parents('.chosen-container');
var $select = $parent.prev();
var value = $parent.find('.chosen-search input').val();
var is_customer = $select.data('is-customer') || 0;
var is_supplier = $select.data('is-supplier') || 0;
var json = JsonStringToJsonObject($select.data('no-results-operate-button-params')) || {};
var data_field = $select.data('no-results-operate-button-data-field');
json[data_field] = value;
$this.button('loading');
$.ajax({
url: RequestUrlHandle($select.data('quick-add-url')),
type: 'POST',
dataType: 'json',
timeout: 30000,
data: json,
success: function (result) {
$this.button('reset');
if (result.code == 0) {
// 添加数据到列表
$select.append('');
// 选中并更新列表数据
$select.val(result.data);
$select.trigger('chosen:updated').trigger('change');
// 关闭下拉选择
$parent.removeClass('chosen-with-drop').removeClass('chosen-container-active');
} else {
Prompt(result.msg);
}
},
error: function (xhr, type) {
$this.button('reset');
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'));
}
});
});
// 调起视频扫码、持续扫码
var $video_scan_popup = $('#common-video-scan-popup');
var $continue_submit = $video_scan_popup.find('.video-scan-continue-submit');
var $switch_submit = $video_scan_popup.find('.video-scan-switch-camera-submit');
var $video_scan = $video_scan_popup.find('.scanner video');
var video_scan_code_reader = null;
var video_scan_selected_deviceid = null;
var video_scan_source_select = [];
var video_scan_back_function = null;
var video_scan_is_close_popup = 1;
$(document).on('click', '.common-scan-submit,.video-scan-continue-submit', function () {
// 关闭摄像头
if (video_scan_code_reader != null) {
video_scan_code_reader.reset();
}
// 关闭继续按钮
$continue_submit.addClass('am-hide');
// 主开启事件配置信息
if (!$(this).hasClass('video-scan-continue-submit')) {
// 回调方法
video_scan_back_function = $(this).data('back-fun');
// 是否关闭弹窗
video_scan_is_close_popup = ($(this).data('auto-close-popup') == undefined) ? 1 : parseInt($(this).data('auto-close-popup') || 0);
}
// 开启弹窗
$video_scan_popup.modal('open');
// 初始化组件
video_scan_code_reader = new ZXing.BrowserMultiFormatReader()
// 摄像头列表
video_scan_code_reader.listVideoInputDevices().then((videoInputDevices) => {
// 初始最后一个摄像头
if (video_scan_selected_deviceid == null) {
// 默认取最后一个摄像头
video_scan_selected_deviceid = videoInputDevices[videoInputDevices.length - 1].deviceId;
// PC模式下默认画像翻转
if (parseInt(__is_mobile__) != 1) {
$video_scan.addClass('picture-reverse');
}
}
// 大于一个则增加列表切换
if (videoInputDevices.length > 1) {
// 摄像头加到容器
videoInputDevices.forEach((element) => {
if (video_scan_source_select.indexOf(element.deviceId) == -1) {
video_scan_source_select.push(element.deviceId);
}
});
// 展示切换摄像头按钮
$switch_submit.removeClass('am-hide');
} else {
$switch_submit.addClass('am-hide');
}
// 调起摄像头
video_scan_code_reader.decodeFromVideoDevice(video_scan_selected_deviceid, 'video', (res, err) => {
// 识别成功
if (res) {
// 语音提示
$('.video-scan-audio-container').html('');
// 调用回调方法
if (IsExitsFunction(video_scan_back_function)) {
window[video_scan_back_function](res.text);
} else {
Prompt((window['lang_config_fun_not_exist_tips'] || '配置方法未定义') + '[' + video_scan_back_function + ']');
}
// 关闭摄像头
video_scan_code_reader.reset();
// 打开继续按钮
$continue_submit.removeClass('am-hide');
// 是否需要关闭弹窗
if (video_scan_is_close_popup == 1) {
$video_scan_popup.modal('close');
}
}
// 调起失败
if (err && !(err instanceof ZXing.NotFoundException)) {
Prompt(err);
// 打开继续按钮
$continue_submit.removeClass('am-hide');
}
});
}).catch((err) => {
Prompt(err);
});
});
// 切换摄像头
$switch_submit.on('click', function () {
var index = $(this).attr('data-index');
if (index == undefined) {
video_scan_source_select.length - 1;
}
index = parseInt(index) + 1;
if (video_scan_source_select[index] == undefined) {
index = 0;
}
video_scan_selected_deviceid = video_scan_source_select[index];
$switch_submit.attr('data-index', index);
$continue_submit.trigger('click');
// 画像翻转
if (index == 0 || video_scan_source_select.length == 1) {
$video_scan.addClass('picture-reverse');
} else {
$video_scan.removeClass('picture-reverse');
}
});
// 弹窗关闭则关闭摄像头
$video_scan_popup.on('close.modal.amui', function () {
// 关闭摄像头组件
video_scan_code_reader.reset();
// 打开继续按钮
$continue_submit.removeClass('am-hide');
});
// 地址下拉框关闭按钮
var $dropdown = $('#doc-dropdown-js'), data = $dropdown.data('amui.dropdown');
$('#doc-dropdown-close').on('click', function (e) {
data.active ? $dropdown.dropdown('close') : alert('没有开哪有关,没有失哪有得!');
return false;
});
$dropdown.on('open.dropdown.amui', function (e) {
console.log('open event triggered');
});
// 分页点击事件
$(document).on('click', '.am-pagination-container a', function () {
var url = $(this).data('url') || null;
if (url != null) {
// 是否在动态数据列表表单中
var $form_table = $(this).parents('.form-table-content');
if ($form_table.length > 0) {
$form_table.find('input[name="page"]').val($(this).data('value'));
$form_table.find('.form-table-operate-top-search-submit').trigger('click');
} else {
window.location.href = url;
}
}
});
// 分页输入事件
$(document).on('change', '.am-pagination-container input', function () {
// 基础数据
var type = $(this).data('type');
var value = parseInt($(this).val() || $(this).data('default-value') || 0);
if (isNaN(value)) {
value = 1;
}
// 分页则处理最大分页数
if (type == 'page') {
var value_max = parseInt($(this).data('value-max'));
if (value > value_max) {
value = value_max;
}
}
// 是否在动态数据列表表单中
var $form_table = $(this).parents('.form-table-content');
if ($form_table.length > 0) {
$form_table.find('input[name="page' + ((type == 'size') ? '_size' : '') + '"]').val(value);
$form_table.find('.form-table-operate-top-search-submit').trigger('click');
} else {
var url = $(this).data('url') || null;
if (url != null) {
window.location.href = $(this).data('url') + value;
}
}
});
// 表单底部浮动导航取消按钮事件
$(document).on('click', '.am-form-popup-submit button', function () {
// 1. 已指定 data-am-modal-close 弹窗关闭属性
// 2. 为父级iframe载入的弹窗(则调用父级定义的关闭方法、当前窗口则不用)
if ($(this).is('[data-am-modal-close]') && $(this).parents('.am-popup').length == 0 && $(this).parents('.am-modal').length == 0) {
parent.CommonPopupClose();
}
});
// 评论舰艇
// 监听textarea是否有值-----改变btn评论按钮的颜色状态
$(document).bind('input', '.add-event-listener-textarea', function (obj) {
if ($(obj.target).val().length > 0) {
$(obj.target).parent().find('.textarea-btn').addClass('am-background-main')
} else {
$(obj.target).parent().find('.textarea-btn').removeClass('am-background-main')
}
})
// 颜色选择器模拟点击
$(document).on('click', '.imitate-colorpicker-submit', function () {
$(this).parent().find('.colorpicker-submit').children().trigger('click');
})
$(window).resize(function () {
// 动态监听 初始化生成滚动箭头
InitScroll();
});
// 生成滚动箭头
InitScroll();
// 级联选择器
$(document).on('click', '.am-cascader .am-cascader-suffix', function () {
if ($(this).parent().find('.am-input-suffix i').hasClass('is-reverse')) {
$(this).parent().find('.am-input-suffix i').removeClass('is-reverse');
$(this).parent().find('.am-cascader-dropdown').removeClass('am-active');
} else {
$(this).parent().find('i').addClass('is-reverse');
$(this).parent().find('.am-cascader-dropdown').addClass('am-active');
$('.region-linkage .am-cascader-menu ul').each(function () {
if ($(this).find('li').length < 1) {
$(this).parents('.am-cascader-menu').removeClass('am-active')
} else {
var self_top = $(this).find('li:eq(0)').offset().top;
var parent_top = $(this).offset().top;
$(this).parent().scrollTop(self_top - parent_top);
}
})
$('.region-linkage .am-cascader-menu ul li.am-active').each(function () {
$(this).parents('.am-cascader-menu').addClass('am-active');
var self_top = $(this).offset().top;
var parent_top = $(this).parent().offset().top;
$(this).parent().parent().scrollTop(self_top - parent_top);
})
}
})
$(document).on('click', '.am-cascader .am-cascader-dropdown .am-cascader-node', function () {
var level_1 = '';
var level_2 = '';
var level_3 = '';
var level_1_name = '';
var level_2_name = '';
var level_3_name = '';
var parents_menu = $(this).parents('.am-cascader-menu');
$(this).addClass('am-active').siblings().removeClass('am-active');
if (parents_menu.data('key') == 'province') {
level_1 = $(this).data('value');
level_1_name = $(this).data('name');
parents_menu.parent().find('.am-cascader-menu:last-of-type').removeClass('am-active');
if ($(this).find('i').length > 0) {
parents_menu.next().addClass('am-active');
RegionNodeData($(this).data('value'), 'province', 'city');
} else {
parents_menu.next().removeClass('am-active');
parents_menu.parents('.am-cascader').find('input[name="province_city_county"]').val(level_1_name);
$('input[name="province"]').val(level_1);
$('input[name="city"]').val('');
$('input[name="county"]').val('');
parents_menu.parents('.am-cascader-dropdown').removeClass('am-active');
parents_menu.parents('.am-cascader').find('.am-input-suffix i').removeClass('is-reverse');
}
} else if (parents_menu.data('key') == 'city') {
level_1 = $(this).parents('.am-cascader-panel').find('.province li.am-active').data('value');
level_1_name = $(this).parents('.am-cascader-panel').find('.province li.am-active').data('name');
level_2 = $(this).data('value');
level_2_name = $(this).data('name');
if ($(this).find('i').length > 0) {
parents_menu.next().addClass('am-active');
RegionNodeData($(this).data('value'), 'city', 'county');
} else {
parents_menu.next().removeClass('am-active');
parents_menu.parents('.am-cascader').find('input[name="province_city_county"]').val(level_1_name + '-' + level_2_name);
$('input[name="province"]').val(level_1);
$('input[name="city"]').val(level_2);
$('input[name="county"]').val('');
parents_menu.parents('.am-cascader-dropdown').removeClass('am-active');
parents_menu.parents('.am-cascader').find('.am-input-suffix i').removeClass('is-reverse');
}
} else {
level_1 = $(this).parents('.am-cascader-panel').find('.province li.am-active').data('value');
level_2 = $(this).parents('.am-cascader-panel').find('.city li.am-active').data('value');
level_3 = $(this).data('value');
level_1_name = $(this).parents('.am-cascader-panel').find('.province li.am-active').data('name');
level_2_name = $(this).parents('.am-cascader-panel').find('.city li.am-active').data('name');
level_3_name = $(this).data('name');
parents_menu.parents('.am-cascader').find('input[name="province_city_county"]').val(level_1_name + '-' + level_2_name + '-' + level_3_name);
$('input[name="province"]').val(level_1);
$('input[name="city"]').val(level_2);
$('input[name="county"]').val(level_3);
parents_menu.parents('.am-cascader-dropdown').removeClass('am-active');
parents_menu.parents('.am-cascader').find('.am-input-suffix i').removeClass('is-reverse');
}
})
// 监听div外部的点击事件,但不包括其子元素
$(document).click(function (event) {
var target = $(event.target);
if (!target.parents(".am-cascader").length && !target.is(".am-cascader")) {
// 关闭div
$('.am-cascader .am-cascader-dropdown').removeClass('am-active');
$('.am-cascader .am-input-suffix i').removeClass('is-reverse');
}
});
// 卡片点击效果
$(document).on('click', '#card li', function () {
$(this).addClass('am-active').siblings().removeClass('am-active');
})
// 下拉框展开折叠
$(document).on('click', '.user-info-dropdown-data-container > a', function () {
if ($(this).hasClass('am-active')) {
$(this).siblings().animate({
opacity: 0,
}, 100); // 500毫秒内将元素透明度设置为1,并显示高度,实现显示效果
$(this).siblings().animate({
height: 'hide'
}, 300); // 500毫秒内将元素透明度设置为1,并显示高度,实现显示效果
$(this).removeClass('am-active').siblings().removeClass('am-active');
} else {
$(this).siblings().animate({
opacity: 1,
height: 'show'
}, 100); // 500毫秒内将元素透明度设置为1,并显示高度,实现显示效果
$(this).addClass('am-active').siblings().addClass('am-active');
}
})
// 当点击user-info-dropdown-data-container以外的地方下拉框隐藏
$(document).click(function (event) {
var dropdown = $('.user-info-dropdown-data-container');
if (!dropdown.is(event.target) && dropdown.has(event.target).length === 0) {
dropdown.find('.user-info-content').animate({
opacity: 0,
}, 100); // 500毫秒内将元素透明度设置为1,并显示高度,实现显示效果
dropdown.find('.user-info-content').animate({
height: 'hide'
}, 300); // 500毫秒内将元素透明度设置为1,并显示高度,实现显示效果
dropdown.find('.user-info-content').removeClass('am-active').siblings().removeClass('am-active');
}
});
// 详情导航tabs切换事件
$(document).on('click', '.detail-content-nav-switch-tabs .item', function () {
$(this).addClass('am-active').siblings().removeClass('am-active');
var key = $(this).data('key');
$("[data-key='" + key + "']").addClass('am-active').siblings('.item').removeClass('am-active');
});
// 顶级提示信息
$(document).on('click', '.am-operate-stretch-tips .title', function () {
var $parent = $(this).parent();
if ($parent.hasClass('am-close-tips')) {
$parent.removeClass('am-close-tips');
const tips = $(this).parent()[0];
tips.style.height = 'auto';
tips.style.width = '100%';
const { height } = tips.getBoundingClientRect();
tips.style.height = '35px';
tips.style.width = '90px';
$parent.animate({ height: height + 'px', width: '100%' }, 300);
} else {
$parent.addClass('am-close-tips');
$parent.animate({ height: '35px', width: '90px' }, 300);
}
});
// 后台页面二级导航
$(document).on('click', '.nav-switch-btn .item', function () {
$(this).addClass('am-active').siblings().removeClass('am-active');
var key = $(this).data('key');
$("[data-key='" + key + "']").addClass('am-active').siblings('.item').removeClass('am-active');
});
// 表单标题向上推显示效果
$(document).on('blur', '.am-form-input-material input', function () {
var value = $(this).val();
if (value === '') {
$(this).addClass('am-value-valid-false');
$(this).removeClass('am-value-valid-true');
} else {
$(this).removeClass('am-value-valid-false');
$(this).addClass('am-value-valid-true');
}
});
$(document).on('focus', '.am-form-input-material input', function () {
$(this).removeClass('am-value-valid-false');
$(this).removeClass('am-value-valid-true');
});
// 多级选择 一级操作
$(document).on('click', '.tree-list > li > .item-content input[type="checkbox"]', function() {
// 当前状态
var state = $(this).is(':checked');
// 下级选择
var is_one_check_find = $(this).parents('.tree-list').attr('data-is-one-check-find');
if(is_one_check_find == 1 || is_one_check_find == undefined) {
$(this).closest('li').find('input[type="checkbox"]').each(function() {
$(this).uCheck(state ? 'check' : 'uncheck');
});
} else {
// 当前一级未选中则取消下级选中
if(!state) {
var is_one_ucheck_find = $(this).parents('.tree-list').attr('data-is-one-ucheck-find');
if(is_one_ucheck_find == 1 || is_one_ucheck_find == undefined) {
$(this).closest('li').find('input[type="checkbox"]').each(function() {
$(this).uCheck('uncheck');
});
}
}
}
});
// 多级选择 二级操作
$(document).on('click', '.tree-list .list-find > li .item-content input[type="checkbox"]', function() {
// 下级选择
var is_two_check_find = $(this).parents('.tree-list').attr('data-is-two-check-find');
if(is_two_check_find == 1 || is_two_check_find == undefined) {
var c_state = $(this).is(':checked');
$(this).closest('.item-content').next().find('input[type="checkbox"]').each(function() {
$(this).uCheck(c_state ? 'check' : 'uncheck');
});
}
// 上级选择
var is_two_check_parent = $(this).parents('.tree-list').attr('data-is-two-check-parent');
if(is_two_check_parent == 1 || is_two_check_parent == undefined) {
var state = ($(this).closest('.list-find').find('input[type="checkbox"]:checked').length > 0);
$(this).closest('ul').prev().find('label input').uCheck(state ? 'check' : 'uncheck');
}
});
// 多级选择 三级操作
$(document).on('click', '.tree-list .list-find-three input[type="checkbox"]', function() {
// 上级选择
var is_three_check_parent = $(this).parents('.tree-list').attr('data-is-three-check-parent');
if(is_three_check_parent == 1 || is_three_check_parent == undefined) {
var state = ($(this).closest('.list-find-three').find('input[type="checkbox"]:checked').length > 0);
$(this).closest('.list-find-three').prev().find('label input').uCheck(state ? 'check' : 'uncheck');
}
// 上上级选择
var is_three_check_parents = $(this).parents('.tree-list').attr('data-is-three-check-parents');
if(is_three_check_parents == 1 || is_three_check_parents == undefined) {
var state = ($(this).closest('.list-find').find('input[type="checkbox"]:checked').length > 0);
$(this).closest('.list-find').prev().find('label input').uCheck(state ? 'check' : 'uncheck');
}
});
// 多级选择 伸缩按钮
$(document).on('click', '.tree-list .tree-telescoping-submit', function () {
var $ul = $(this).closest('li').find('>ul');
if($(this).hasClass('icon-arrow-down')) {
$ul.slideUp(200);
$(this).addClass('icon-arrow-right').removeClass('icon-arrow-down');
} else {
$ul.slideDown(200);
$(this).addClass('icon-arrow-down').removeClass('icon-arrow-right');
}
});
// 商品规格和参数拖拽排序
if($('table.specifications-table').length > 0)
{
$('table.specifications-table tbody').dragsort({ dragSelector: 'tr'});
}
if($('table.parameters-table').length > 0)
{
var len = $('table.parameters-table tbody tr').length;
if(len == 0)
{
$('table.parameters-table tbody').html('
');
}
$('table.parameters-table tbody').dragsort({ dragSelector: 'tr'});
if(len == 0)
{
$('table.parameters-table tbody').html('');
}
}
// 规格选中状态
$(document).on('click', '.specifications-table tbody > tr', function()
{
$('.specifications-table tr').removeClass('am-primary');
$(this).addClass('am-primary');
});
// 商品规格和参数上下移动
$(document).on('click', '.specifications-table .line-move, .parameters-table .line-move, .parameters-table-custom .line-move', function () {
// 父级table
var $table = $(this).parents('table');
// 类型
var type = $(this).data('type') || null;
if (type == null) {
Prompt($table.data('move-type-tips') || window['lang_operate_params_error'] || '操作类型配置有误');
return false;
}
// 索引
var count = $(this).parents('table').find('tbody tr').length;
var index = $(this).parents('tr').index() || 0;
var $parent = $(this).parents('tr');
switch (type) {
// 上移
case 'top':
if (index == 0) {
Prompt($table.data('move-top-tips') || '已到最顶部');
return false;
}
$parent.prev().insertAfter($parent);
break;
// 下移
case 'bottom':
if (index >= count - 1) {
Prompt($table.data('move-bottom-tips') || '已到最底部');
return false;
}
$parent.next().insertBefore($parent);
break;
// 默认
default:
Prompt($table.data('move-type-tips') || '操作类型配置有误');
}
});
// 商品规格模板和参数模板数据获取、选择商品分类后异步读取
$(document).on('change', '.goods-category-choice-base-template-event', function()
{
GoodsSpecBaseTemplateCreated($(this).val() || '');
});
// 规格扩展数据编辑
var $extends_popup = $('#specifications-extends-popup');
$(document).on('click', '.specifications-table .line-extend-btn', function () {
$extends_popup.attr('data-line-extend', $(this).parents('tr').attr('data-line-tag'));
$extends_popup.find('input,select,textarea').val('');
var json = $(this).prev().val() || null;
if (json != null) {
FormDataFill(JSON.parse(json), '#specifications-extends-popup');
}
$extends_popup.modal();
});
// 规格容器
var $spec_table = $('table.specifications-table');
// 规格快捷操作 - 规格列添加
$(document).on('click', '.quick-spec-title-add', function () {
var spec_max = $spec_table.data('spec-add-max-number') || 3;
if ($('.spec-quick table tbody tr').length >= spec_max) {
Prompt($spec_table.data('spec-max-error'));
return false;
}
var index = parseInt(Math.random() * 1000001);
var html = '
';
html += '
';
html += '
';
html += '';
html += '';
html += '
';
html += '
';
html += '
';
html += '
'
html += '
';
html += ' ' + ($spec_table.data('spec-add-value-message') || '添加规格值') + '';
html += '
';
html += '
';
html += '
';
html += '
';
$('.spec-quick table tbody').append(html);
$('.spec-quick .goods-specifications').show();
});
// 添加规格值
$(document).on('click', '.spec-quick table .quick-spec-value-add', function () {
var index = $(this).data('index');
var html = '
';
html += '
'
html += '';
html += '';
html += '
';
html += '
';
$(this).parent().before(html);
});
// 规格快捷操作 - 规格名称移除
$(document).on('click', '.spec-quick table .quick-title-remove', function () {
$(this).parents('tr').remove();
if ($('.spec-quick table tbody tr').length <= 0) {
$('.spec-quick .goods-specifications').hide();
}
});
// 规格快捷操作 - 规格值移除
$(document).on('click', '.spec-quick table .value-item .quick-value-remove', function () {
$(this).parents('.value-item').remove();
});
// 规格快捷操作 - 生成规格
$(document).on('click', '.quick-spec-created', function () {
var spec = [];
$('.spec-quick table tbody tr').each(function (k, v) {
var title = $(this).find('td.am-text-middle input').val() || null;
if (title != null) {
var temp_data = [];
$(this).find('td.spec-quick-td-value .value-item').each(function (ks, vs) {
var value = $(this).find('input').val() || null;
if (value != null) {
temp_data.push(value);
}
});
if (temp_data.length > 0) {
spec.push({
"title": title,
"value": temp_data
});
}
}
});
// 是否存在规格
if (spec.length <= 0) {
Prompt($spec_table.data('spec-quick-error') || '快捷操作规格为空');
return false;
}
// 操作确认
AMUI.dialog.confirm({
title: $spec_table.data('spec-quick-tips-title') || '温馨提示',
content: $spec_table.data('spec-quick-tips-msg') || '生成规格将清空现有规格数据、是否继续?',
onConfirm: function (options) {
// 移除所有规格列
$('.specifications-table .title-nav-remove').trigger('click');
// 添加规格列
for (var i in spec) {
var index = parseInt(Math.random() * 1000001);
// title
html = '
';
html += '
';
html += '';
html += '';
html += '
';
html += '
';
$('.title-start').before(html);
// value
html = '
';
html += '';
html += '
';
$('.value-start').before(html);
}
// 自动生成规格
var data = GoodsSpecCartesian(spec);
for (var i = 1; i < data.length; i++) {
// 添加规格值
var index = parseInt(Math.random() * 1000001);
var html = $spec_table.find('tbody tr:last').prop('outerHTML');
$spec_table.append(html);
$spec_table.find('tbody tr:last').attr('class', 'line-' + index + ' line-not-first');
$spec_table.find('tbody tr:last').attr('data-line-tag', '.line-' + index);
// 规格值
var temp_spec = data[i].split(',');
for (var k in temp_spec) {
// 规格值赋值
$spec_table.find('tbody tr:last').find('td:eq(' + k + ') input').val(temp_spec[k]);
}
}
// 清空扩展数据
$('.specifications-table .line-extend-input').val('');
Prompt($spec_table.data('spec-quick-success') || '生成成功', 'success');
},
onCancel: function () { }
});
});
// 规格模板选择
$(document).on('click', '#specifications-quick-container select option, #specifications-quick-container .chosen-container .chosen-results li.active-result', function()
{
if($(this).index() > 0)
{
var value = $spec_quick.find('select').val() || null;
if(value == null)
{
Prompt($spec_quick.data('spec-template-tips') || '规格模板数据有误');
return false;
}
value = value.split(',');
var name = $spec_quick.find('select').find('option:selected').data('origin-name');
// 名称是否已存在
var status = true;
$('.spec-quick .goods-specifications table tbody tr').each(function()
{
var temp_name = $(this).find('td:first').find('input').val();
if(temp_name == name)
{
status = false;
}
});
if(!status)
{
Prompt(($spec_quick.data('spec-template-name-tips') || '相同规格名称已经存在')+'('+name+')');
return false;
}
// 模拟点击添加一个规格类型
$('.quick-spec-title-add').trigger('click');
// 填入规格名称
$('.spec-quick .goods-specifications table tbody tr:last td:first input').val(name);
// 加入规格值
for(var i in value)
{
$('.spec-quick .goods-specifications table tbody tr:last td:last .quick-spec-value-add').trigger('click');
$('.spec-quick .goods-specifications table tbody tr:last td:last .value-item:eq(-2) input').val(value[i]);
}
}
});
// 规格列添加
$(document).on('click', '.specifications-nav-title-add', function()
{
var spec_max = $spec_table.data('spec-add-max-number') || 3;
if($('.specifications-table th.table-title').length >= spec_max)
{
Prompt($spec_table.data('spec-max-error'));
return false;
}
// title
var index = parseInt(Math.random()*1000001);
html = '
';
html += '
';
html += '';
html += '';
html += '
';
html += '
';
$('.title-start').before(html);
// value
html = '