TaoLer/public/static/component/pear/module/page.js
2024-04-14 12:03:38 +08:00

133 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

layui.define(['jquery', 'element'], function (exports) {
"use strict";
var $ = layui.jquery;
var element = layui.element;
var page = function (opt) {
this.option = opt;
};
/**
* @since Pear Admin 4.0
*
* 创建 Page 页面
*/
page.prototype.render = function (opt) {
var option = {
elem: opt.elem,
url: opt.url,
width: opt.width || "100%",
height: opt.height || "100%",
title: opt.title
}
renderContent(option);
return new page(option);
}
/**
* @since Pear Admin 4.0
*
* 切换 Page 页面
*/
page.prototype.changePage = function (options) {
const $frame = $(`#${this.option.elem} .pear-page-content`);
if (options.type === "_iframe") {
$frame.html(`<iframe src='${options.href}' scrolling='auto' frameborder='0' allowfullscreen='true'></iframe>`);
} else {
$.ajax({
url: options.href,
type: 'get',
dataType: 'html',
success: function (data) {
$frame.html(data)
},
error: function (xhr) {
return layer.msg('Status:' + xhr.status + '' + xhr.statusText + ',请稍后再试!');
}
});
}
$frame.attr("type", options.type);
$frame.attr("href", options.href);
}
page.prototype.refresh = function (loading) {
var $frameLoad = $(`#${this.option.elem} .pear-page-loading`);
var $frame = $(`#${this.option.elem} .pear-page-content`);
if (loading) {
$frameLoad.css({
display: 'block'
});
}
if ($frame.attr("type") === "_iframe") {
$frame.html(`<iframe src='${$frame.attr("href")}' scrolling='auto' frameborder='0' allowfullscreen='true'></iframe>`);
const $contentFrame = $frame.find("iframe");
$contentFrame.on("load", () => {
$frameLoad.fadeOut(1000);
})
} else {
$.ajax({
type: 'get',
url: $frame.attr("href"),
dataType: 'html',
success: function (data) {
$frame.html(data)
$frameLoad.fadeOut(1000);
element.init();
},
error: function (xhr) {
return layer.msg('Status:' + xhr.status + '' + xhr.statusText + ',请稍后再试!');
}
});
}
}
function renderContent(option) {
$("#" + option.elem).html(`
<div class='pear-page'>
<div class='pear-page-content' type='${option.type}' href='${option.url}'></div>
<div class="pear-page-loading">
<div class="ball-loader">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>`);
var $frame = $("#" + option.elem).find(".pear-page-content");
if (option.type === "_iframe") {
$frame.html(`<iframe src='${option.url}' scrolling='auto' frameborder='0' allowfullscreen='true'></iframe>`);
} else {
$.ajax({
url: option.url,
type: 'get',
dataType: 'html',
success: function (data) {
$frame.html(data);
},
error: function (xhr) {
return layer.msg('Status:' + xhr.status + '' + xhr.statusText + ',请稍后再试!');
}
});
}
}
exports('page', new page());
});