first commit
This commit is contained in:
403
public/static/js/common.js
Normal file
403
public/static/js/common.js
Normal file
@@ -0,0 +1,403 @@
|
||||
/**
|
||||
* SAPHP 前端CommonJS
|
||||
* 默认提供一些基础的页面交互操作
|
||||
* 注:插件开发请勿直接将JS代码写入此文件
|
||||
*/
|
||||
layui.use(['jquery','form','upload'], function(){
|
||||
|
||||
let $ = layui.$;
|
||||
let form = layui.form;
|
||||
let layer = layui.layer;
|
||||
let upload = layui.upload;
|
||||
|
||||
// 注册为全局对象
|
||||
window.Home = {
|
||||
screen: function(){
|
||||
let width =$(window).width()
|
||||
if(width > 1200){
|
||||
return 3; //大屏幕
|
||||
} else if(width > 992){
|
||||
return 2; //中屏幕
|
||||
} else if(width > 768){
|
||||
return 1; //小屏幕
|
||||
} else {
|
||||
return 0; //超小屏幕
|
||||
}
|
||||
},
|
||||
event: {
|
||||
closeDialog:function(that) {
|
||||
that = that || this;
|
||||
let _type = $(that).parents(".layui-layer").attr("type");
|
||||
if (typeof _type === "undefined") {
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
}else {
|
||||
let layerId = $(that).parents(".layui-layer").attr("id").substring(11);
|
||||
layer.close(layerId);
|
||||
}
|
||||
}
|
||||
},
|
||||
// cookie
|
||||
Cookie : { // 获取cookies
|
||||
'Set': function (name, value, days) {
|
||||
let exp = new Date();
|
||||
exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
|
||||
let arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
|
||||
document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toUTCString();
|
||||
},
|
||||
'Get': function (name) {
|
||||
let arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
|
||||
if (arr != null) {
|
||||
return unescape(arr[2]);
|
||||
return null;
|
||||
}
|
||||
},
|
||||
'Del': function (name) {
|
||||
let exp = new Date();
|
||||
exp.setTime(exp.getTime() - 1);
|
||||
let cval = this.Get(name);
|
||||
if (cval != null) {
|
||||
document.cookie = name + "=" + escape(cval) + ";path=/;expires=" + exp.toUTCString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 监听全局form表单
|
||||
form.on('submit(submitIframe)', function(data){
|
||||
let that = $(this), _form = that.parents('form'),
|
||||
_url = _form.attr("action") || false,
|
||||
_close = that.data("close") || undefined,
|
||||
_reload = that.data('reload');
|
||||
$.post(_url,
|
||||
data.field,function(res){
|
||||
if(res.code === 200){
|
||||
|
||||
top.layer.msg(res.msg);
|
||||
switch (_reload) {
|
||||
case 'top':
|
||||
top.location.reload();
|
||||
break;
|
||||
case 'parent':
|
||||
parent.location.reload();
|
||||
break;
|
||||
case 'self':
|
||||
location.reload();
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
if (typeof res.url !== 'undefined' && res.url) {
|
||||
location.href = res.url;
|
||||
}
|
||||
|
||||
// 默认关闭
|
||||
if (_close === undefined) {
|
||||
Home.event.closeDialog(that);
|
||||
}
|
||||
}
|
||||
else{
|
||||
top.layui.layer.msg(res.msg,'error');
|
||||
}
|
||||
|
||||
try {
|
||||
/**
|
||||
* token重载下
|
||||
* 框架也需要更新
|
||||
*/
|
||||
if (typeof res.data.__token__ !== 'undefined') {
|
||||
$('input#__token__').val(res.data.__token__);
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
}, 'json');
|
||||
|
||||
return false;
|
||||
})
|
||||
|
||||
/**
|
||||
* 监听form表单搜索
|
||||
*/
|
||||
form.on('submit(formSearch)', function (data) {
|
||||
|
||||
var field = data.field;
|
||||
for (const key in field) {
|
||||
if (!field[key]) {
|
||||
delete field[key];
|
||||
}
|
||||
}
|
||||
|
||||
layui.table.reload('lay-tableList', {
|
||||
page: {curr: 1},
|
||||
where: field
|
||||
});
|
||||
})
|
||||
|
||||
// 监听全局事件
|
||||
$(document).on("click", "*[sa-event]", function () {
|
||||
let name = $(this).attr("sa-event");
|
||||
let obj = Home.event[name];
|
||||
obj && obj.call(this, $(this));
|
||||
});
|
||||
|
||||
var uploadURL = '/user/upload';
|
||||
layui.each($('*[lay-upload]'), function (index, elem) {
|
||||
|
||||
var that = $(this),
|
||||
name = $(elem).attr('lay-upload') || undefined,
|
||||
type = $(elem).data('type') || 'normal',
|
||||
size = $(elem).data('size') || 51200, // 限制最大5M
|
||||
accept = $(elem).data('accept') || 'images',
|
||||
multiple = $(elem).data('multiple') || false,
|
||||
callback = $(elem).attr('callback') || undefined;
|
||||
|
||||
// 文件上传函数
|
||||
var uploadFiles = {
|
||||
normal: function (res, name) {
|
||||
$('input.' + name).prop('value', res.url);
|
||||
$('img.' + name).prop('src', res.url);
|
||||
},
|
||||
images: function (res, name) {
|
||||
var o = $('img.' + name);
|
||||
o.prop('src', res.url);
|
||||
o.parent('div').removeClass('layui-hide');
|
||||
$('input.' + name).val(res.url);
|
||||
$(elem).find('p,i,hr').addClass('layui-hide');
|
||||
},
|
||||
multiple: function (res, name) {
|
||||
var index = $('.layui-imagesbox .layui-input-inline');
|
||||
index = index.length ? index.length - 1 : 0;
|
||||
var html = '<div class="layui-input-inline">';
|
||||
html += '<img src="' + res.url + '" >';
|
||||
html += '<input type="text" name="' + name + '[' + index + '][src]" class="layui-hide" value="' + res.url + '">';
|
||||
html += '<input type="text" name="' + name + '[' + index + '][title]" class="layui-input" placeholder="图片简介">';
|
||||
html += '<span class="layui-badge layui-badge-red" onclick="layui.$(this).parent().remove();">删除</span></div>';
|
||||
$(elem).parent().before(html);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行上传操作
|
||||
upload.render({
|
||||
elem: elem
|
||||
, url: uploadURL
|
||||
, method: 'post'
|
||||
, size: size
|
||||
, accept: 'file'
|
||||
, before: function (res) {
|
||||
// 关闭按钮点击
|
||||
that.prop("disabled", true);
|
||||
}, done: function (res, index, file) {
|
||||
|
||||
that.prop("disabled", false);
|
||||
|
||||
if (res.code === 200 && res.url !== '') {
|
||||
|
||||
if (typeof res.chunkId != 'undefined' ) {
|
||||
layer.close(window[res.chunkId]);
|
||||
}
|
||||
|
||||
layer.msg(res.msg);
|
||||
uploadFiles[type](res, name);
|
||||
} else {
|
||||
// 错误消息
|
||||
layer.error(res.msg);
|
||||
that.prop("disabled", false);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
// 全局监听打开窗口
|
||||
$(document).on('click',"*[lay-open]",function(){
|
||||
let clickthis = $(this),
|
||||
config = {
|
||||
url: clickthis.data('url') || undefined,
|
||||
object: clickthis.data('object') || 'self',
|
||||
type: clickthis.data('type') || 2,
|
||||
area: clickthis.data('area') || "auto",
|
||||
offset: clickthis.data('offset') || "25%",
|
||||
title: clickthis.data('title') || false,
|
||||
maxmin: clickthis.data('maxmin') || false,
|
||||
auto: clickthis.data('auto') || "undefined",
|
||||
iframeAuto: false
|
||||
}
|
||||
|
||||
let firstURL = config.url.substring(0, 1);
|
||||
if (firstURL && firstURL === '#') {
|
||||
config.type = 1;
|
||||
config.url = $(config.url).html();
|
||||
}
|
||||
|
||||
if (config.area !== "auto") {
|
||||
config.area = config.area.split(',');
|
||||
if (config.area.length === 2 && config.area[1] === '100%') {
|
||||
config.offset = 0;
|
||||
if (typeof config.url == 'object') {
|
||||
config.url = config.url[0];
|
||||
}
|
||||
} else if (config.area.length === 1) {
|
||||
config.iframeAuto = true;
|
||||
}
|
||||
}
|
||||
|
||||
var layObject = self;
|
||||
if (config.object === 'top') {
|
||||
layObject = top;
|
||||
} else if (config.object === 'parent') {
|
||||
layObject = parent;
|
||||
}
|
||||
|
||||
// 打开窗口
|
||||
layObject.layer.open({
|
||||
type: config.type,
|
||||
area: config.area,
|
||||
title: config.title,
|
||||
offset: config.offset,
|
||||
maxmin: config.maxmin,
|
||||
shadeClose: true,
|
||||
scrollbar: true,
|
||||
content: config.url,
|
||||
success:function(layero,index){
|
||||
|
||||
config.iframeAuto && layer.iframeAuto(index);
|
||||
|
||||
// 页面层才渲染
|
||||
if (config.type === 1) {
|
||||
layui.form.render();
|
||||
layui.form.on("submit(submitPage)",function(post){
|
||||
let that = $(this), _pageUrl = that.parents('form').attr('action');
|
||||
// 开始POST提交数据
|
||||
$.post(_pageUrl,
|
||||
post.field, function(res){
|
||||
if (res.code === 200) {
|
||||
Home.event.closeDialog(that);
|
||||
|
||||
/**
|
||||
* 当前这个页面,也需要写成是否重载
|
||||
* 支持哪种重载方式,父页面 自身,还是其他。
|
||||
*/
|
||||
if ($(that).data('reload')) {
|
||||
location.reload();
|
||||
}
|
||||
|
||||
layer.msg(res.msg);
|
||||
} else {
|
||||
layer.msg(res.msg,'error');
|
||||
}
|
||||
|
||||
}, 'json');
|
||||
|
||||
return false;
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// 监听ajax操作
|
||||
$(document).on("click","*[lay-ajax]",function(obj) {
|
||||
|
||||
let clickthis = $(this),config = {
|
||||
url : clickthis.attr('data-url')|| "undefined",
|
||||
type : clickthis.data('type') || 'post',
|
||||
dataType : clickthis.data('dataType') || 'json',
|
||||
timeout : clickthis.data('timeout') || '6000',
|
||||
tableId : clickthis.data('table') || clickthis.data('batch'),
|
||||
reload : clickthis.data('reload'),
|
||||
jump : clickthis.data('jump') || false,
|
||||
confirm : clickthis.data('confirm'),
|
||||
}, defer = $.Deferred();
|
||||
|
||||
// 定义初始化对象
|
||||
let data = {}
|
||||
// 获取拼接参数
|
||||
, packet = clickthis.attr("data-data") || null
|
||||
, object = clickthis.attr("data-object") || undefined;
|
||||
|
||||
if (config.confirm !== undefined) {
|
||||
config.confirm = config.confirm || '确定执行此操作吗?';
|
||||
layer.confirm(config.confirm, function(index){
|
||||
runAjax(config);
|
||||
layer.close(index);
|
||||
},function(index){
|
||||
layer.close(index);
|
||||
return false;
|
||||
})
|
||||
}
|
||||
|
||||
// 传递类数据
|
||||
if (typeof object !== "undefined") {
|
||||
object = object.split(',');
|
||||
for (let i = 0; i < object.length; i++) {
|
||||
let ele = object[i].split(":");
|
||||
let val = $('.'+ele[1]).val();
|
||||
data[ele[0]] = val;
|
||||
}
|
||||
}
|
||||
|
||||
// 传递对象数据
|
||||
if (packet !== 'null') {
|
||||
packet = new Function("return "+packet)();
|
||||
data = $.extend({},data,packet);
|
||||
}
|
||||
|
||||
// 传递input表单数据
|
||||
let input = clickthis.data('input') || undefined;
|
||||
if (typeof input !== undefined) {
|
||||
let attribute = layui.$('.'+input).val();
|
||||
}
|
||||
|
||||
// 回调函数
|
||||
let runAjax = function(config) {
|
||||
// 执行AJAX操作
|
||||
$.ajax({
|
||||
url: config.url,
|
||||
type: config.type,
|
||||
dataType: config.dataType,
|
||||
timeout: config.timeout,
|
||||
data: data,
|
||||
// 需要支持跨域访问
|
||||
xhrFields: {
|
||||
withCredentials: true
|
||||
},
|
||||
crossDomain: true,
|
||||
success: function(res) {
|
||||
if (res.code === 200) {
|
||||
layer.msg(res.msg);
|
||||
|
||||
if (typeof res.data.text !== 'undefined') {
|
||||
$(clickthis).text(res.data.text);
|
||||
}
|
||||
|
||||
switch (config.reload) {
|
||||
case 'top':
|
||||
top.location.reload();
|
||||
break;
|
||||
case 'parent':
|
||||
parent.location.reload();
|
||||
break;
|
||||
case 'self':
|
||||
location.reload();
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
if (typeof (config.tableId) !== "undefined") {
|
||||
layui.table.reload(config.tableId);
|
||||
}
|
||||
|
||||
} else {
|
||||
layer.msg(res.msg,'error');
|
||||
}
|
||||
},
|
||||
error: function(res) {
|
||||
layer.msg('Access methods failure','error');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (!config.confirm) {
|
||||
runAjax(config);
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user