220 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {extend name="../../base/view/common/base" /}
 | |
| {block name="breadcrumb"}
 | |
| <span class="layui-breadcrumb">
 | |
| 	<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
 | |
| 	<a href="/home/user/setting">信息设置</a>
 | |
| 	<a><cite>数据备份</cite></a>
 | |
| </span>
 | |
| {/block}
 | |
| <!-- 主体 -->
 | |
| {block name="body"}
 | |
| <div class="main-content">
 | |
| 	{include file="../../base/view/common/submenu" /}
 | |
| 	<div class="main-page-content">
 | |
| 		<div class="layui-tab layui-tab-brief layui-tab-big">
 | |
| 			<ul class="layui-tab-title">
 | |
| 				<li class="layui-this"><a href="/admin/database/database">数据备份</a></li>
 | |
| 				<li><a href="/admin/database/backuplist">数据还原</a></li>
 | |
| 			</ul>
 | |
| 		</div>
 | |
| 		<table class="layui-hide" id="backup" lay-filter="test"></table>
 | |
| 	</div>
 | |
| </div>
 | |
| <script type="text/html" id="toolbarDemo">
 | |
| 	<div class="layui-btn-group">
 | |
| 		<span class="layui-btn layui-btn-sm layui-btn-normal" lay-event="backup">数据备份</span><span class="layui-btn layui-btn-sm" lay-event="optimize">数据表优化</span><span class="layui-btn layui-btn-danger layui-btn-sm" lay-event="repair">数据表修复</span>
 | |
|   	</div>
 | |
| 	<span id="dataTips" style="font-size:12px; margin-left:10px"></span>  
 | |
| </script>
 | |
| {/block}
 | |
| <!-- /主体 -->
 | |
| 
 | |
| <!-- 脚本 -->
 | |
| {block name="script"}
 | |
| <script>
 | |
| const moduleInit = ['tool'];
 | |
| 	function gouguInit() {
 | |
| 		var table = layui.table,
 | |
| 			form = layui.form;
 | |
| 
 | |
| 		var tableIns = table.render({
 | |
| 			elem: '#backup',
 | |
| 			title: '数据备份',
 | |
| 			toolbar: '#toolbarDemo',
 | |
| 			url: "/admin/database/database", //数据接口
 | |
| 			page: false,
 | |
| 			defaultToolbar: false,
 | |
| 			cols: [
 | |
| 				[ //表头
 | |
| 					{ type: 'checkbox' },
 | |
| 					{
 | |
| 						field: 'name',
 | |
| 						title: '数据表',
 | |
| 						width: 220
 | |
| 					},
 | |
| 					{
 | |
| 						field: 'status',
 | |
| 						title: '状态',
 | |
| 						width: 120,
 | |
| 						templet: function (d) {
 | |
| 							return '<span id="table_' + d.name + '">-</span>';
 | |
| 						}
 | |
| 					},
 | |
| 					{
 | |
| 						field: 'engine',
 | |
| 						title: '存储引擎',
 | |
| 						align: 'center',
 | |
| 						width: 90
 | |
| 					}, {
 | |
| 						field: 'row_format',
 | |
| 						title: '行格式',
 | |
| 						align: 'center',
 | |
| 						width: 90
 | |
| 					}, {
 | |
| 						field: 'rows',
 | |
| 						title: '行数',
 | |
| 						align: 'center',
 | |
| 						width: 100,
 | |
| 					}, {
 | |
| 						field: 'data_size',
 | |
| 						title: '字节数',
 | |
| 						align: 'center',
 | |
| 						width: 120
 | |
| 					}, {
 | |
| 						field: 'data_length',
 | |
| 						title: '数据大小',
 | |
| 						align: 'center',
 | |
| 						width: 120
 | |
| 					}, {
 | |
| 						field: 'comment',
 | |
| 						title: '数据表注释'
 | |
| 					}, {
 | |
| 						field: 'create_time',
 | |
| 						title: '创建时间',
 | |
| 						width: 160,
 | |
| 						align: 'center'
 | |
| 					}
 | |
| 				]
 | |
| 			],
 | |
| 			done: function (res, curr, count) {
 | |
| 				$('#dataTips').html(res.msg);
 | |
| 			}
 | |
| 		});
 | |
| 
 | |
| 		//递归备份表
 | |
| 		function backup(tab, status, table) {
 | |
| 			layer.closeAll();
 | |
| 			layer.msg("备份中...,请勿关闭本页面", { time: 200000 });
 | |
| 			$.get("/admin/database/backup", tab, function (data) {
 | |
| 				// console.log(data)
 | |
| 				if (data.code == 0) {
 | |
| 					showmsg(data.data.tab.table, data.msg);
 | |
| 					if (data.data.tab.start == 'ok') {
 | |
| 						layer.msg('备份完成');
 | |
| 						window.onbeforeunload = function () { return null }
 | |
| 						return;
 | |
| 					}
 | |
| 					backup(data.data.tab, tab.id != data.data.tab.id);
 | |
| 				} else {
 | |
| 					layer.msg('立即备份');
 | |
| 				}
 | |
| 			}, "json");
 | |
| 		}
 | |
| 
 | |
| 		//修改备份状态
 | |
| 		function showmsg(table, msg) {
 | |
| 			console.log(table);
 | |
| 			$("#table_" + table).addClass('span-color-2').html(msg);
 | |
| 		}
 | |
| 		//监听行工具事件
 | |
| 		table.on('toolbar(test)', function (obj) {
 | |
| 			var checkData = table.checkStatus(obj.config.id).data;
 | |
| 			var len = checkData.length;
 | |
| 			var tables = [];
 | |
| 			if (len == 0) {
 | |
| 				layer.msg('请先选择表');
 | |
| 				return false;
 | |
| 			}
 | |
| 			for (var i = 0; i < len; i++) {
 | |
| 				tables.push(checkData[i].name);
 | |
| 			}
 | |
| 			if (obj.event === 'backup') {
 | |
| 				layer.confirm('确认要备份选中的' + len + '个数据表吗?', {
 | |
| 					icon: 3,
 | |
| 					title: '提示'
 | |
| 				}, function (index) {
 | |
| 					$.ajax({
 | |
| 						url: "/admin/database/backup",
 | |
| 						type: 'post',
 | |
| 						data: { 'tables': tables },
 | |
| 						success: function (res) {
 | |
| 							if (res.code == 0) {
 | |
| 								layer.msg("开始备份,请不要关闭本页面!");
 | |
| 								window.onbeforeunload = function () { return "正在备份数据库,请不要关闭!" }
 | |
| 								backup(res.data.tab);
 | |
| 							}
 | |
| 							if (res.code == 2) {
 | |
| 								layer.confirm('检测到有一个备份任务未完成,请先清除未完成的备份', {
 | |
| 									icon: 3,
 | |
| 									title: '提示'
 | |
| 								}, function (index) {
 | |
| 									$.ajax({
 | |
| 										url: "/admin/database/del",
 | |
| 										data: { 'lock': 1 },
 | |
| 										success: function (res) {
 | |
| 											layer.msg(res.msg);
 | |
| 										}
 | |
| 									})
 | |
| 								})
 | |
| 							}
 | |
| 							else {
 | |
| 								layer.msg(res.msg);
 | |
| 							}
 | |
| 						}
 | |
| 					})
 | |
| 					layer.close(index);
 | |
| 				});
 | |
| 			} else if (obj.event === 'optimize') {
 | |
| 				layer.confirm('确认要优化选中的' + len + '个数据表吗?', {
 | |
| 					icon: 3,
 | |
| 					title: '提示'
 | |
| 				}, function (index) {
 | |
| 					$.ajax({
 | |
| 						url: "/admin/database/optimize",
 | |
| 						data: { 'tables': tables },
 | |
| 						success: function (res) {
 | |
| 							layer.msg(res.msg);
 | |
| 							if (res.code == 0) {
 | |
| 								setTimeout(function () {
 | |
| 									location.reload();
 | |
| 								}, 2000)
 | |
| 							}
 | |
| 						}
 | |
| 					})
 | |
| 					layer.close(index);
 | |
| 				});
 | |
| 			} else if (obj.event === 'repair') {
 | |
| 				layer.confirm('确认要修复选中的' + len + '个数据表吗?', {
 | |
| 					icon: 3,
 | |
| 					title: '提示'
 | |
| 				}, function (index) {
 | |
| 					$.ajax({
 | |
| 						url: "/admin/database/repair",
 | |
| 						data: { 'tables': tables },
 | |
| 						success: function (res) {
 | |
| 							layer.msg(res.msg);
 | |
| 							if (res.code == 0) {
 | |
| 								setTimeout(function () {
 | |
| 									location.reload();
 | |
| 								}, 2000)
 | |
| 							}
 | |
| 						}
 | |
| 					})
 | |
| 					layer.close(index);
 | |
| 				});
 | |
| 			}
 | |
| 		});
 | |
| 	}
 | |
| </script>
 | |
| {/block}
 | |
| <!-- /脚本 --> |