HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot//crm.jmfdbn.com/addons/database/view/database/index.html
{extend name="admin@index_layout"/}
{block name="main"}
<div class="layui-card">
    <div class="layui-card-header">数据库列表</div>
    <div class="layui-card-body">
        <table class="layui-hide" id="table" lay-filter="table"></table>
        <script type="text/html" id="toolbarDemo">
            <div class="layui-btn-container">
                <a class="layui-btn layui-btn-sm layui-btn-danger" href="{:url('addons/database/restore',['isadmin'=>1])}">数据库还原</a>
                <a class="layui-btn layui-btn-sm" id="export">立即备份</a>
                <a class="layui-btn layui-btn-sm" id="optimize" href="{:url('addons/database/optimize',['isadmin'=>1])}">优化表</a>
                <a class="layui-btn layui-btn-sm" id="repair" href="{:url('addons/database/repair',['isadmin'=>1])}">修复表</a>
              </div>
        </script>
    </div>
</div>
{/block}
{block name="layui"}{/block}
{block name="script"}
<script>
layui.use(['table', 'form'], function() {
    var table = layui.table,
        $ = layui.$,
        form = layui.form,
        layer = layui.layer;
    table.render({
        id: 'database',
        elem: '#table',
        toolbar: '#toolbarDemo',
        url: '{:url("addons/database/index",["isadmin"=>1])}',
        cols: [
            [
                { type: 'checkbox', fixed: 'left' },
                { field: 'name', width: 200, title: '表名' },
                { field: 'rows', width: 120, title: '数据量' },
                { field: 'data_length', width: 120, title: '数据大小', templet: '#size' },
                { field: 'create_time', width: 200, title: '创建时间' },
                { field: 'comment', title: '说明' },
                { field: 'info', width: 200, title: '备份状态', templet: '<div>未备份</div>' },
            ]
        ],
    });
    var $export = $("#export"),
        $optimize = $("#optimize"),
        $repair = $("#repair");
    //优化or修复
    $optimize.add($repair).click(function() {
        var self = this,
            checkStatus = table.checkStatus('database');
        if (checkStatus.data.length <= 0) {
            layer.msg("请选择需要操作的数据");
            return false;
        }
        var a = [];
        $(checkStatus.data).each(function(i, o) {
            a.push(o.name);
        });
        $.post(self.href, { tables: a }, function(data) {
            if (data.code) {
                layer.msg(data.msg, { icon: 1 });
            } else {
                layer.msg(data.msg, { icon: 5 });
            }
        }, "json");
        return false;
    });
    //提交备份
    $export.click(function() {
        var checkStatus = table.checkStatus('database');
        if (checkStatus.data.length <= 0) {
            layer.msg("请选择需要备份的数据");
            return false;
        }
        var a = [];
        $(checkStatus.data).each(function(i, o) {
            a.push(o.name);
        });
        $export.parent().children().addClass("layui-btn-disabled");
        $export.html("<i class='icon iconfont icon-fasong'></i>正在发送备份请求...");
        $.post("{:url('addons/database/export',['isadmin'=>1])}", { tables: a },
            function(data) {
                if (data.code) {
                    tables = data.data.tables;
                    $export.html(data.msg + "开始备份,请不要关闭本页面!");
                    backup(data.data.tab);
                    window.onbeforeunload = function() { return "正在备份数据库,请不要关闭!" }
                } else {
                    layer.msg(data.msg, { icon: 5 });
                    $export.parent().children().removeClass("disabled");
                    $export.html("立即备份");
                }
            },
            "json"
        );
        return false;
    });

    function backup(tab, code) {
        code && showmsg(tab.id, "开始备份...(0%)");
        $.get("{:url('addons/database/export',['isadmin'=>1])}", tab, function(data) {
            if (data.code) {
                showmsg(tab.id, data.msg);
                if (!$.isPlainObject(data.data.tab)) {
                    $export.parent().children().removeClass("layui-btn-disabled");
                    $export.html("备份完成,点击重新备份");
                    window.onbeforeunload = function() { return null }
                    return;
                }
                backup(data.data.tab, tab.id != data.data.tab.id);
            } else {
                layer.msg(data.msg, { icon: 5 });
                $export.parent().children().removeClass("disabled");
                $export.html("立即备份");
            }
        });
    }

    function showmsg(id, msg) {
        $('.layui-table').find('tr:eq('+id+') td:eq(6)').find('div').html(msg);
    }

});
</script>
{/block}