119 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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());
 | 
						||
}); |