You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1097 lines
45 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*!
* Document : form.js
* Author : caiweiming <314013107@qq.com>
* Description: 表单构建器
*/
jQuery(document).ready(function() {
// 文件上传集合
var webuploader = [];
// 当前上传对象
var curr_uploader = {};
// editordm编辑器集合
var editormds = {};
// ueditor编辑器集合
var ueditors = {};
// wangeditor编辑器集合
var wangeditors = {};
// 当前图标选择器
var curr_icon_picker;
var layer_icon;
// 打开图标选择器
$('.js-icon-picker').click(function(){
curr_icon_picker = $(this);
var icon_input = curr_icon_picker.find('.icon_input');
if (icon_input.is(':disabled')) {
return;
}
layer_icon = layer.open({
type: 1,
title: '图标选择器',
area: ['90%', '90%'],
scrollbar: false,
content: $('#icon_tab')
});
});
// 开启图标搜索
Dolphin.iconSearch();
// 选择图标
$('.js-icon-content li').click(function () {
var icon = $(this).find('i').attr('class');
curr_icon_picker.find('.input-group-addon.icon').html('<i class="'+icon+'"></i>');
curr_icon_picker.find('.icon_input').val(icon);
layer.close(layer_icon);
});
// 清空图标
$('.delete-icon').click(function(event){
event.stopPropagation();
if ($(this).prev().is(':disabled')) {
return;
}
$(this).prev().val('');
$(this).prev().prev().html('<i class="fa fa-fw fa-plus-circle"></i>');
});
// 百度地图
$('.js-bmap').each(function () {
var $self = $(this);
var map_canvas = $self.find('.bmap').attr('id');
var address = $self.find('.bmap-address');
var address_id = address.attr('id');
var map_point = $self.find('.bmap-point');
var search_result = $self.find('.searchResultPanel');
var point_lng = 116.331398;
var point_lat = 39.897445;
var map_level = $self.data('level');
// 百度地图API功能
var map = new BMap.Map(map_canvas);
//开启鼠标滚轮缩放
map.enableScrollWheelZoom(true);
// 左上角,添加比例尺
var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});
// 左上角,添加默认缩放平移控件
var top_left_navigation = new BMap.NavigationControl();
map.addControl(top_left_control);
map.addControl(top_left_navigation);
// 智能搜索
var local = new BMap.LocalSearch(map, {
onSearchComplete: function () {
var point = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
map.centerAndZoom(point, map_level);
// 创建标注
create_mark(point);
}
});
// 创建标注
var create_mark = function (point) {
// 清空所有标注
map.clearOverlays();
var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); //添加标注
marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
// 写入坐标
map_point.val(point.lng + "," + point.lat);
};
// 建立一个自动完成的对象
var ac = new BMap.Autocomplete({
"input" : address_id,
"location" : map
});
// 鼠标放在下拉列表上的事件
ac.addEventListener("onhighlight", function(e) {
var str = "";
var _value = e.fromitem.value;
var value = "";
if (e.fromitem.index > -1) {
value = _value.province + _value.city + _value.district + _value.street + _value.business;
}
str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
value = "";
if (e.toitem.index > -1) {
_value = e.toitem.value;
value = _value.province + _value.city + _value.district + _value.street + _value.business;
}
str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
search_result.html(str);
});
// 鼠标点击下拉列表后的事件
var myValue;
ac.addEventListener("onconfirm", function(e) {
var _value = e.item.value;
myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
search_result.html("onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue);
local.search(myValue);
});
// 监听点击地图时间
map.addEventListener("click", function (e) {
// 创建标注
create_mark(e.point);
});
if (map_point.val() != '') {
var curr_point = map_point.val().split(',');
point_lng = curr_point[0];
point_lat = curr_point[1];
} else if(address.val() != '') {
local.search(address.val());
} else {
// 根据ip获取当前城市并定位到当前城市
var myCity = new BMap.LocalCity();
myCity.get(function (result) {
var cityName = result.name;
map.setCenter(cityName);
});
}
// 初始化地图,设置中心点坐标和地图级别
var point = new BMap.Point(point_lng, point_lat);
map.centerAndZoom(point, map_level);
if (map_point.val() != '') {
// 创建标注
create_mark(point);
}
if(address.val()!=''){
ac.setInputValue(address.val())
}
});
// 图片裁剪
$('.js-jcrop-interface').each(function () {
var jcrop_api = '';
var $self = $(this);
var $jcrop = $self.find('.js-jcrop');
var $options = $jcrop.data('options') || {};
var $thumb = $jcrop.data('thumb');
var $watermark = $jcrop.data('watermark');
var $jcrop_cut_btn = $self.find('.js-jcrop-cut-btn');
var $jcrop_upload_btn = $self.find('.js-jcrop-upload-btn');
var $jcrop_file = $self.find('.js-jcrop-file');
var $jcrop_cut_info = $self.find('.js-jcrop-cut-info');
var $jcrop_preview = $self.find('.jcrop-preview');
var $jcrop_input = $self.find('.js-jcrop-input');
var $remove_picture = $self.find('.remove-picture');
var $thumbnail = $self.find('.thumbnail');
var $modal = $self.find('.modal-popin');
var $pic_height = '';
// 设置预览图监听
$options.onChange = showPreview;
$options.onSelect = showPreview;
$options.boxWidth = 750;
$options.boxHeight = 750;
$options.saveWidth = $options.saveWidth || null;
$options.saveHeight = $options.saveHeight || null;
$options.aspectRatio = $options.aspectRatio || ($options.saveWidth / $options.saveHeight);
// 点击上传按钮,选择图片
$jcrop_upload_btn.click(function () {
$jcrop_file.trigger('click');
});
// 加载图片(用于判断图片是否加载完毕)
function loadImage(url, callback) {
var img = new Image(); //创建一个Image对象实现图片的预下载
img.src = url;
if(img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
callback.call(img);
return; // 直接返回不用再处理onload事件
}
img.onload = function () { //图片下载完毕时异步调用callback函数。
callback.call(img);//将回调函数的this替换为Image对象
};
}
// 实时显示预览图
function showPreview(coords)
{
var ratio = coords.w / coords.h; // 选区比例
var rx,ry;
var preview_width = '';
var preview_height = '';
if ((100 / ratio) > $pic_height) {
preview_width = $pic_height * ratio;
preview_height = $pic_height;
} else {
preview_width = 100;
preview_height = 100 / ratio;
}
rx = preview_width / coords.w;
ry = (preview_width / ratio) / coords.h;
if (jcrop_api) {
$jcrop_preview.css({
width: Math.round(rx * jcrop_api.ui.stage.width) + 'px',
height: Math.round(ry * jcrop_api.ui.stage.height) + 'px',
marginLeft: '-' + Math.round(rx * coords.x) + 'px',
marginTop: '-' + Math.round(ry * coords.y) + 'px'
}).parent().css({
width: preview_width + 'px',
height: preview_height + 'px'
});
}
var jcrop_info = [coords.w, coords.h, coords.x, coords.y, $options.saveWidth, $options.saveHeight];
$jcrop_cut_info.val(jcrop_info.join(','));
}
// 选择图片后
$jcrop_file.change(function () {
var files = this.files;
var file;
if (files && files.length) {
file = files[0];
if (/^image\/\w+$/.test(file.type)) {
// 创建FormData对象
var data = new FormData();
// 为FormData对象添加数据
data.append('file', file);
Dolphin.loading();
// 上传图片
$.ajax({
url: dolphin.jcrop_upload_url,
type: 'POST',
cache: false,
contentType: false, //不可缺
processData: false, //不可缺
data: data,
success: function (res) {
if (res.code == 1) {
$jcrop.attr('src', res.src).data('id', res.id).show();
$jcrop_preview.attr('src', res.src).parent().show();
loadImage(res.src, function () {
Dolphin.loading('hide');
if (jcrop_api != '') {
jcrop_api.destroy();
$.Jcrop.component.DragState.prototype.touch = null;
}
$jcrop.Jcrop($options, function () {
jcrop_api = this;
$pic_height = Math.round(jcrop_api.getContainerSize()[1]);
$modal.modal('show');
});
});
} else {
Dolphin.loading('hide');
Dolphin.notify(res.msg||'上传失败,请重新上传', 'warning');
}
}
}).fail(function(res) {
Dolphin.loading('hide');
Dolphin.notify($(res.responseText).find('h1').text() || '服务器内部错误~', 'danger');
});
$jcrop_file.val('');
} else {
Dolphin.notify('请选择一张图片', 'warning');
}
}
});
// 关闭裁剪框
$modal.on('hidden.bs.modal', function (e) {
$jcrop_cut_info.val('');
});
// 删除图片
$remove_picture.click(function () {
$(this).parent().hide();
$jcrop_input.val('');
});
// 裁剪图片
$jcrop_cut_btn.click(function () {
var $cut_value = $jcrop_cut_info.val();
if ($jcrop.attr('src') == '') {
Dolphin.notify('请上传图片', 'danger');
return false;
}
if ($cut_value != '') {
var $data = {
path: $jcrop_preview.attr('src'),
cut: $cut_value,
thumb: $thumb,
watermark: $watermark
};
Dolphin.loading();
$.ajax({
url: dolphin.jcrop_upload_url,
type: 'POST',
dataType: 'json',
data: $data
})
.done(function(res) {
Dolphin.loading('hide');
if (res.code == '1') {
$thumbnail.show().find('img').attr('src', res.thumb || res.src).attr('data-original', res.src);
$jcrop_input.val(res.id);
$jcrop_cut_info.val('');
$modal.modal('hide');
} else {
Dolphin.notify(res.msg, 'danger');
}
})
.fail(function(res) {
Dolphin.loading('hide');
Dolphin.notify($(res.responseText).find('h1').text() || '请求失败~', 'danger');
});
} else {
Dolphin.notify('请选择要裁剪的大小', 'warning');
}
});
// 查看大图
Dolphin.viewer();
});
// editormd编辑器
$('.js-editormd').each(function () {
var editormd_name = $(this).attr('name');
var image_formats = $(this).data('image-formats') || [];
var watch = $(this).data('watch');
editormds[editormd_name] = editormd(editormd_name, {
height: 500, // 高度
placeholder: '海豚PHP为提升开发效率而生',
watch : watch,
searchReplace : true,
toolbarAutoFixed: false, // 取消工具栏固定
path : dolphin.editormd_mudule_path, // 用于自动加载其他模块
codeFold: true, // 开启代码折叠
dialogLockScreen : false, // 设置弹出层对话框不锁屏
imageUpload : true, // 开启图片上传
imageFormats : image_formats, // 允许上传的图片后缀
imageUploadURL : dolphin.editormd_upload_url,
toolbarIcons : function() {
return [
"undo", "redo", "|",
"bold", "del", "italic", "quote", "|",
"h1", "h2", "h3", "h4", "h5", "h6", "|",
"list-ul", "list-ol", "hr", "|",
"link", "reference-link", "image", "code", "preformatted-text", "code-block", "datetime", "html-entities", "pagebreak", "|",
"goto-line", "watch", "preview", "fullscreen", "clear", "search", "|",
"help", "info"
]
}
});
});
// ueditor编辑器
$('.js-ueditor').each(function () {
var ueditor_name = $(this).attr('name');
ueditors[ueditor_name] = UE.getEditor(ueditor_name, {
initialFrameHeight:400, //初始化编辑器高度,默认320
autoHeightEnabled:false, //是否自动长高
maximumWords: 50000, //允许的最大字符数
serverUrl: dolphin.ueditor_upload_url
});
});
// wangeditor编辑器
$('.js-wangeditor').each(function () {
var wangeditor_name = $(this).attr('name');
var imgExt = $(this).data('img-ext') || '';
// 关闭调试信息
wangEditor.config.printLog = false;
// 实例化编辑器
wangeditors[wangeditor_name] = new wangEditor(wangeditor_name);
// 上传图片地址
wangeditors[wangeditor_name].config.uploadImgUrl = dolphin.wangeditor_upload_url;
// 允许上传图片后缀
wangeditors[wangeditor_name].config.imgExt = imgExt;
// 配置文件名
wangeditors[wangeditor_name].config.uploadImgFileName = 'file';
// 去掉地图
wangeditors[wangeditor_name].config.menus = $.map(wangEditor.config.menus, function(item, key) {
if (item === 'location') {
return null;
}
return item;
});
// 添加表情
wangeditors[wangeditor_name].config.emotions = {
'default': {
title: '默认',
data: dolphin.wangeditor_emotions
}
};
wangeditors[wangeditor_name].create();
});
// 注册WebUploader事件实现秒传
if (window.WebUploader) {
WebUploader.Uploader.register({
"before-send-file": "beforeSendFile" // 整个文件上传前
}, {
beforeSendFile:function(file){
var $li = $( '#'+file.id );
var deferred = WebUploader.Deferred();
var owner = this.owner;
owner.md5File(file).then(function(val){
$.ajax({
type: "POST",
url: dolphin.upload_check_url,
data: {
md5: val
},
cache: false,
timeout: 10000, // 超时的话,只能认为该文件不曾上传过
dataType: "json"
}).then(function(res, textStatus, jqXHR){
if(res.code){
// 已上传,触发上传完成事件,实现秒传
deferred.reject();
curr_uploader.trigger('uploadSuccess', file, res);
curr_uploader.trigger('uploadComplete', file);
}else{
// 文件不存在,触发上传
deferred.resolve();
$li.find('.file-state').html('<span class="text-info">正在上传...</span>');
$li.find('.img-state').html('<div class="bg-info">正在上传...</div>');
$li.find('.progress').show();
}
}, function(jqXHR, textStatus, errorThrown){
// 任何形式的验证失败,都触发重新上传
deferred.resolve();
$li.find('.file-state').html('<span class="text-info">正在上传...</span>');
$li.find('.img-state').html('<div class="bg-info">正在上传...</div>');
$li.find('.progress').show();
});
});
return deferred.promise();
}
});
}
// 文件上传
$('.js-upload-file,.js-upload-files').each(function () {
var $input_file = $(this).find('input');
var $input_file_name = $input_file.attr('name');
// 是否多文件上传
var $multiple = $input_file.data('multiple');
// 允许上传的后缀
var $ext = $input_file.data('ext');
// 文件限制大小
var $size = $input_file.data('size');
// 文件列表
var $file_list = $('#file_list_' + $input_file_name);
// 实例化上传
var uploader = WebUploader.create({
// 选完文件后,是否自动上传。
auto: true,
// 去重
duplicate: true,
// swf文件路径
swf: dolphin.WebUploader_swf,
// 文件接收服务端。
server: dolphin.file_upload_url,
// 选择文件的按钮。可选。
// 内部根据当前运行是创建可能是input元素也可能是flash.
pick: {
id: '#picker_' + $input_file_name,
multiple: $multiple
},
// 文件限制大小
fileSingleSizeLimit: $size,
// 只允许选择文件文件。
accept: {
title: 'Files',
extensions: $ext
}
});
// 当有文件添加进来的时候
uploader.on( 'fileQueued', function( file ) {
var $li = '<li id="' + file.id + '" class="list-group-item file-item">' +
'<span class="pull-right file-state"><span class="text-info"><i class="fa fa-sun-o fa-spin"></i> 正在读取文件信息...</span></span>' +
'<i class="fa fa-file"></i> ' +
file.name +
' [<a href="javascript:void(0);" class="download-file">下载</a>] [<a href="javascript:void(0);" class="remove-file">删除</a>]' +
'<div class="progress progress-mini remove-margin active" style="display: none"><div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div></div>'+
'</li>';
if ($multiple) {
$file_list.append($li);
} else {
$file_list.html($li);
// 清空原来的数据
$input_file.val('');
}
// 设置当前上传对象
curr_uploader = uploader;
});
// 文件上传过程中创建进度条实时显示。
uploader.on( 'uploadProgress', function( file, percentage ) {
var $percent = $( '#'+file.id ).find('.progress-bar');
$percent.css( 'width', percentage * 100 + '%' );
});
// 文件上传成功
uploader.on( 'uploadSuccess', function( file, response ) {
var $li = $( '#'+file.id );
if (response.code) {
if ($multiple) {
if ($input_file.val()) {
$input_file.val($input_file.val() + ',' + response.id);
} else {
$input_file.val(response.id);
}
$li.find('.remove-file').attr('data-id', response.id);
} else {
$input_file.val(response.id);
}
}
// 加入提示信息
$li.find('.file-state').html('<span class="text-'+ response.class +'">'+ response.info +'</span>');
// 添加下载链接
$li.find('.download-file').attr('href', response.path);
// 文件上传成功后的自定义回调函数
if (window['dp_file_upload_success'] !== undefined) window['dp_file_upload_success']();
// 文件上传成功后的自定义回调函数
if (window['dp_file_upload_success_'+$input_file_name] !== undefined) window['dp_file_upload_success_'+$input_file_name]();
});
// 文件上传失败,显示上传出错。
uploader.on( 'uploadError', function( file ) {
var $li = $( '#'+file.id );
$li.find('.file-state').html('<span class="text-danger">服务器发生错误~</span>');
// 文件上传出错后的自定义回调函数
if (window['dp_file_upload_error'] !== undefined) window['dp_file_upload_error']();
// 文件上传出错后的自定义回调函数
if (window['dp_file_upload_error_'+$input_file_name] !== undefined) window['dp_file_upload_error_'+$input_file_name]();
});
// 文件验证不通过
uploader.on('error', function (type) {
switch (type) {
case 'Q_TYPE_DENIED':
Dolphin.notify('文件类型不正确,只允许上传后缀名为:'+$ext+',请重新上传!', 'danger');
break;
case 'F_EXCEED_SIZE':
Dolphin.notify('文件不得超过'+ ($size/1024) +'kb请重新上传', 'danger');
break;
}
});
// 完成上传完了,成功或者失败,先删除进度条。
uploader.on( 'uploadComplete', function( file ) {
setTimeout(function(){
$('#'+file.id).find('.progress').remove();
}, 500);
// 文件上传完成后的自定义回调函数
if (window['dp_file_upload_complete'] !== undefined) window['dp_file_upload_complete']();
// 文件上传完成后的自定义回调函数
if (window['dp_file_upload_complete_'+$input_file_name] !== undefined) window['dp_file_upload_complete_'+$input_file_name]();
});
// 删除文件
$file_list.delegate('.remove-file', 'click', function(){
if ($multiple) {
var id = $(this).data('id'),
ids = $input_file.val().split(',');
if (id) {
for (var i = 0; i < ids.length; i++) {
if (ids[i] == id) {
ids.splice(i, 1);
break;
}
}
$input_file.val(ids.join(','));
}
} else {
$input_file.val('');
}
$(this).closest('.file-item').remove();
});
// 将上传实例存起来
webuploader.push(uploader);
});
// 图片上传
$('.js-upload-image,.js-upload-images').each(function () {
var $input_file = $(this).find('input');
var $input_file_name = $input_file.attr('name');
// 是否多图片上传
var $multiple = $input_file.data('multiple');
// 允许上传的后缀
var $ext = $input_file.data('ext');
// 图片限制大小
var $size = $input_file.data('size');
// 缩略图参数
var $thumb = $input_file.data('thumb');
// 水印参数
var $watermark = $input_file.data('watermark');
// 图片列表
var $file_list = $('#file_list_' + $input_file_name);
// 优化retina, 在retina下这个值是2
var ratio = window.devicePixelRatio || 1;
// 缩略图大小
var thumbnailWidth = 100 * ratio;
var thumbnailHeight = 100 * ratio;
// 实例化上传
var uploader = WebUploader.create({
// 选完图片后,是否自动上传。
auto: true,
// 去重
duplicate: true,
// 不压缩图片
resize: false,
compress: false,
// swf图片路径
swf: dolphin.WebUploader_swf,
// 图片接收服务端。
server: dolphin.image_upload_url,
// 选择图片的按钮。可选。
// 内部根据当前运行是创建可能是input元素也可能是flash.
pick: {
id: '#picker_' + $input_file_name,
multiple: $multiple
},
// 图片限制大小
fileSingleSizeLimit: $size,
// 只允许选择图片文件。
accept: {
title: 'Images',
extensions: $ext,
mimeTypes: 'image/jpg,image/jpeg,image/bmp,image/png,image/gif'
},
// 自定义参数
formData: {
thumb: $thumb,
watermark: $watermark
}
});
// 当有文件添加进来的时候
uploader.on( 'fileQueued', function( file ) {
var $li = $(
'<div id="' + file.id + '" class="file-item js-gallery thumbnail">' +
'<img>' +
'<div class="info">' + file.name + '</div>' +
'<i class="fa fa-times-circle remove-picture"></i>' +
($multiple ? '<i class="fa fa-fw fa-arrows move-picture"></i>' : '') +
'<div class="progress progress-mini remove-margin active" style="display: none">' +
'<div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div>' +
'</div>' +
'<div class="file-state img-state"><div class="bg-info">正在读取...</div>' +
'</div>'
),
$img = $li.find('img');
if ($multiple) {
$file_list.append( $li );
} else {
$file_list.html( $li );
$input_file.val('');
}
// 创建缩略图
// 如果为非图片文件,可以不用调用此方法。
// thumbnailWidth x thumbnailHeight 为 100 x 100
uploader.makeThumb( file, function( error, src ) {
if ( error ) {
$img.replaceWith('<span>不能预览</span>');
return;
}
$img.attr( 'src', src );
}, thumbnailWidth, thumbnailHeight );
// 设置当前上传对象
curr_uploader = uploader;
});
// 文件上传过程中创建进度条实时显示。
uploader.on( 'uploadProgress', function( file, percentage ) {
var $percent = $( '#'+file.id ).find('.progress-bar');
$percent.css( 'width', percentage * 100 + '%' );
});
// 文件上传成功
uploader.on( 'uploadSuccess', function( file, response ) {
var $li = $( '#'+file.id );
if (response.code) {
if ($multiple) {
if ($input_file.val()) {
$input_file.val($input_file.val() + ',' + response.id);
} else {
$input_file.val(response.id);
}
$li.find('.remove-picture').attr('data-id', response.id);
} else {
$input_file.val(response.id);
}
}
$li.find('.file-state').html('<div class="bg-'+response.class+'">'+response.info+'</div>');
$li.find('img').attr('data-original', response.path);
// 上传成功后,再次初始化图片查看功能
Dolphin.viewer();
// 文件上传成功后的自定义回调函数
if (window['dp_image_upload_success'] !== undefined) window['dp_image_upload_success']();
// 文件上传成功后的自定义回调函数
if (window['dp_image_upload_success_'+$input_file_name] !== undefined) window['dp_image_upload_success_'+$input_file_name]();
});
// 文件上传失败,显示上传出错。
uploader.on( 'uploadError', function( file ) {
var $li = $( '#'+file.id );
$li.find('.file-state').html('<div class="bg-danger">服务器错误</div>');
// 文件上传出错后的自定义回调函数
if (window['dp_image_upload_error'] !== undefined) window['dp_image_upload_error']();
// 文件上传出错后的自定义回调函数
if (window['dp_image_upload_error_'+$input_file_name] !== undefined) window['dp_image_upload_error_'+$input_file_name]();
});
// 文件验证不通过
uploader.on('error', function (type) {
switch (type) {
case 'Q_TYPE_DENIED':
Dolphin.notify('图片类型不正确,只允许上传后缀名为:'+$ext+',请重新上传!', 'danger');
break;
case 'F_EXCEED_SIZE':
Dolphin.notify('图片不得超过'+ ($size/1024) +'kb请重新上传', 'danger');
break;
}
});
// 完成上传完了,成功或者失败,先删除进度条。
uploader.on( 'uploadComplete', function( file ) {
setTimeout(function(){
$( '#'+file.id ).find('.progress').remove();
}, 500);
// 文件上传完成后的自定义回调函数
if (window['dp_image_upload_complete'] !== undefined) window['dp_image_upload_complete']();
// 文件上传完成后的自定义回调函数
if (window['dp_image_upload_complete_'+$input_file_name] !== undefined) window['dp_image_upload_complete_'+$input_file_name]();
});
// 删除图片
$file_list.delegate('.remove-picture', 'click', function(){
$(this).closest('.file-item').remove();
if ($multiple) {
var ids = [];
$file_list.find('.remove-picture').each(function () {
ids.push($(this).data('id'));
});
$input_file.val(ids.join(','));
} else {
$input_file.val('');
}
// 删除后,再次初始化图片查看功能
Dolphin.viewer();
});
// 将上传实例存起来
webuploader.push(uploader);
// 如果是多图上传,则实例化拖拽
if ($multiple) {
$file_list.sortable({
connectWith: ".uploader-list",
handle: '.move-picture',
stop: function () {
var ids = [];
$file_list.find('.remove-picture').each(function () {
ids.push($(this).data('id'));
});
$input_file.val(ids.join(','));
// 拖拽排序后,重新初始化图片查看功能
Dolphin.viewer();
}
}).disableSelection();
}
});
// 图片相册
Dolphin.viewer();
// 排序
$('.nestable').each(function () {
$(this).nestable({maxDepth:1}).on('change', function(){
var $items = $(this).nestable('serialize');
var name = $(this).data('name');
var value = [];
for (var item in $items) {
value.push($items[item].id);
}
if (value.length) {
$('input[name='+name+']').val(value.join(','));
}
});
});
// 格式文本
$('.js-masked').each(function () {
var $format = $(this).data('format') || '';
$(this).mask(String($format));
});
// 联动下拉框
$('.select-linkage').change(function(){
var self = $(this), // 下拉框
value = self.val(), // 下拉框选中值
ajax_url = self.data('url'), // 异步请求地址
param = self.data('param'), // 参数名称
next_items = self.data('next-items').split(','), // 下级下拉框的表单名数组
next_item = next_items[0], // 下一级下拉框表单名
extra_param = self.data('extra-param'), // 额外参数
data = param + "=" + value; // 发送的数据
// 下级联动菜单恢复默认
if (next_items.length > 0) {
for (var i = 0; i < next_items.length; i++) {
$('#'+ next_items[i]).html('<option value="">请选择:</option>');
}
}
// 获取额外参数值
if (extra_param !== '') {
extra_param = extra_param.split(',');
$.each(extra_param, function (index, item) {
var item_value = $('#'+item).val() || '';
data += '&' + item + '=' + item_value;
});
}
if (value !== '') {
Dolphin.loading();
// 获取数据
$.ajax({
url: ajax_url,
type: 'POST',
dataType: 'json',
data: data
})
.done(function(res) {
Dolphin.loading('hide');
if (res.code) {
var list = res.list;
if (list) {
$.each(list, function (index, item) {
var option = $('<option></option>');
option.val(item['key']).html(item['value']);
$('#'+ next_item).append(option);
});
}
} else {
Dolphin.notify(res.msg, 'danger');
}
})
.fail(function(res) {
Dolphin.loading('hide');
Dolphin.notify($(res.responseText).find('h1').text() || '数据请求失败~', 'danger');
});
}
});
// 多级联动下拉框
$('.select-linkages').change(function () {
var self = $(this), // 下拉框
value = self.val(), // 下拉框选中值
token = self.data('token'), // token
pidkey = self.data('pidkey') || 'pid',
next_level = self.data('next-level'), // 下一级别
next_level_id = self.data('next-level-id') || ''; // 下一级别的下拉框id
// 下级联动菜单恢复默认
if (next_level_id != '') {
$('#' + next_level_id).html('<option value="">请选择:</option>');
var has_next_level = $('#' + next_level_id).data('next-level-id');
if (has_next_level) {
$('#' + has_next_level).html('<option value="">请选择:</option>');
has_next_level = $('#' + has_next_level).data('next-level-id');
if (has_next_level) {
$('#' + has_next_level).html('<option value="">请选择:</option>');
}
}
}
if (value != '') {
Dolphin.loading();
// 获取数据
$.ajax({
url: dolphin.get_level_data,
type: 'POST',
dataType: 'json',
data: {
token: token,
level: next_level,
pid: value,
pidkey: pidkey
}
})
.done(function(res) {
Dolphin.loading('hide');
if (res.code == '1') {
var list = res.list;
if (list) {
for (var item in list) {
var option = $('<option></option>');
option.val(list[item].key).text(list[item].value);
$('#' + next_level_id).append(option);
}
}
} else {
Dolphin.loading('hide');
Dolphin.notify(res.msg, 'danger');
}
})
.fail(function(res) {
Dolphin.loading('hide');
Dolphin.notify($(res.responseText).find('h1').text() || '数据请求失败~', 'danger');
});
}
});
// 表单项依赖触发
if (dolphin.triggers != '') {
/* 依赖显示 */
// 先隐藏依赖项
var $field_hide = dolphin.field_hide.split(',') || [];
var $field_values = dolphin.field_values.split(',') || [];
for (var index in $field_hide) {
$('#form_group_'+$field_hide[index]).addClass('form_group_hide');
}
var $form_builder = $('.form-builder');
$.each(dolphin.triggers, function (trigger, content) {
$form_builder.delegate('[name='+ trigger +']', 'change', function (event, init) {
var $trigger = $(this);
var $value = $trigger.val();
$(content).each(function () {
var $self = $(this);
var $values = $self[0].split(',') || [];
var $targets = $self[1].split(',') || [];
// 如果触发的元素是单选,且没有选中则设置值为空
if ($trigger.attr('type') == 'radio' && $trigger.is(':checked') == false) {
$value = '';
}
if ($.inArray($value, $values) >= 0) {
// 符合指定的值,显示对应的表单项
for (var index in $targets) {
// 如果不是该对象自身直接创建的属性(也就是该属//性是原型中的属性),则跳过显示
if (!$targets.hasOwnProperty(index)) {
continue;
}
$('#form_group_'+$targets[index]).removeClass('form_group_hide');
}
} else {
for (var item in $targets) {
if (!$targets.hasOwnProperty(item)) {
continue;
}
// 隐藏表单项
var $form_item = $('#form_group_'+$targets[item]).addClass('form_group_hide');
if (dolphin._field_clear[trigger] !== undefined && dolphin._field_clear[trigger] === 1) {
if ($.type(ueditors) == 'object' && ueditors[$targets[item]] != undefined) {
// 清除百度编辑器内容
ueditors[$targets[item]].ready(function(){
ueditors[$targets[item]].execCommand("cleardoc");
});
} else if ($.type(wangeditors) == 'object' && wangeditors[$targets[item]] != undefined) {
// 清除wang编辑器内容
wangeditors[$targets[item]].clear();
} else if ($.type(editormds) == 'object' && editormds[$targets[item]] != undefined) {
// 清除markdown编辑器内容
if (init) {
continue;
} else {
editormds[$targets[item]].clear();
}
}
// 清除表单内容
if ($form_item.find("[name='"+$targets[item]+"']").attr('type') == 'radio') {
$form_item.find("[name='"+$targets[item]+"']:checked").prop('checked', false).trigger("change");
} else if ($form_item.find("[name='"+$targets[item]+"[]']").attr('type') == 'checkbox') {
$form_item.find("[name='"+$targets[item]+"[]']:checked").prop('checked', false).trigger("change");
} else if ($form_item.find("[name='"+$targets[item]+"']").attr('data-ext') != undefined) {
$form_item.find("[name='"+$targets[item]+"']").val(null);
} else {
$form_item.find("[name^='"+$targets[item]+"']").val(null).trigger("change");
}
// 清除上传文件
$form_item.find('#file_list_'+$targets[item]).empty();
// 清空标签
if ($form_item.find('.js-tags-input').length) {
$form_item.find('.js-tags-input').importTags('');
}
}
}
}
});
});
// 有默认值时触发
var trigger_value = '';
if ($form_builder.find('[name='+ trigger +']').attr('type') == 'radio') {
trigger_value = $form_builder.find('[name='+ trigger +']:checked').val() || '';
if (trigger_value != '' && $.inArray(trigger_value, $field_values) >= 0) {
var $radio_id = $('.form-builder [name='+ trigger +']:checked').attr('id');
$('.form-builder #'+$radio_id).trigger("change", ['1']);
}
} else {
trigger_value = $form_builder.find('[name='+ trigger +']').val() || '';
if (trigger_value != '' && $.inArray(trigger_value, $field_values) >= 0) {
$('.form-builder [name='+ trigger +']').trigger("change");
}
}
});
}
// 切换分组时,重新初始化上传组件
$('.nav-tabs a').click(function () {
$.each(webuploader, function(index, el){
el.refresh();
});
});
// 关闭弹窗按钮
$('#close-pop').click(function () {
try {
if(typeof window.layer_cancel === "function") {
window.layer_cancel();
}
} catch(e) {
}
// 获取窗口索引
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
});