define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'selectpage'], function ($, undefined, Backend, Table, Form, selectPage) { var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'famysql/table/index', add_url: Config.group ? 'famysql/table/table_add?group=' + Config.group : 'famysql/table/table_add', }, showExport: false,//导出按钮导出整个表的所有行 showToggle: false,//切换卡片视图和表格视图 showColumns: false,//切换显示隐藏列 search: false,//关闭快速搜索 commonSearch: false,//关闭通用搜索 }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', columns: [ [ { field: 'id', title: __('Id') }, { field: 'name', title: __('Name') }, { field: 'engine', title: __('Engine'), width: '80px' }, { field: 'charset', title: __('Charset'), width: '80px' }, { field: 'collation', title: __('Collation'), width: '150px' }, { field: 'comment', title: __('Comment') }, { field: 'rows', title: __('Rows') }, { field: 'createtime', title: __('Create time') }, { field: 'updatetime', title: __('Update time') }, { field: 'operate', title: __('Table Operate'), width: '400px', table: table, operate: false, events: { 'click .btn-copy-1': function (e, value, row) { Layer.prompt({ title: "请输入你需要新复制的数据表名", success: function (layero) { var name = row.name; var name_arr = name.split("_"); if (row.is_has) { name_arr.shift() } const str = name_arr.join('_'); $("input", layero).prop("placeholder", "例如:test,请不要加前缀").val(str); } }, function (value) { Fast.api.ajax({ url: "famysql/table/copy?name=" + row.name + "&type=1", data: { table: value }, }, function (data, ret) { Layer.closeAll(); parent.location.reload(); return false; }); }); }, 'click .btn-copy-2': function (e, value, row) { Layer.prompt({ title: "请输入你需要新复制的数据表名", success: function (layero) { var name = row.name; var name_arr = name.split("_"); if (row.is_has) { name_arr.shift() } const str = name_arr.join('_'); $("input", layero).prop("placeholder", "例如:test,请不要加前缀").val(str); } }, function (value) { Fast.api.ajax({ url: "famysql/table/copy?name=" + row.name + "&type=2", data: { table: value }, }, function (data, ret) { Layer.closeAll(); parent.location.reload(); return false; }); }); } }, buttons: [ { name: 'copy', text: __('Copy 1'), title: __('Copy 1'), dropdown: __('Copy'), classname: 'btn btn-xs btn-warning btn-copy-1', icon: 'fa fa-copy', }, { name: 'copy-2', text: __('Copy 2'), title: function (row) { return __('Copy 2') + "(" + row.rows + ")"; }, dropdown: __('Copy'), classname: 'btn btn-xs btn-warning btn-copy-2', icon: 'fa fa-copy', }, { name: 'truncate', text: function (row) { return __('Truncate') + "(" + row.rows + ")"; }, title: function (row) { return __('Truncate') + "(" + row.rows + ")"; }, dropdown: __('More Table Operate'), classname: 'btn btn-xs btn-danger btn-truncate', icon: 'fa fa-minus-circle', url: function (row) { return Fast.api.fixurl("famysql/table/truncate?name=" + row.name); }, classname: 'btn btn-xs btn-danger btn-ajax', confirm: function (row) { return '是否确定清空该“' + row.name + '”数据表?'; }, success: function (data, ret) { $(".btn-refresh").trigger("click"); //刷新数据 }, visible: function (row) { return row.is_admin !== 0; }, error: function (data, ret) { Layer.alert(ret.msg); return false; } }, { name: 'optimize', text: __('Optimize'), title: __('Optimize'), dropdown: __('More Table Operate'), classname: 'btn btn-xs btn-danger btn-optimize', icon: 'fa fa-exclamation-triangle', url: function (row) { return Fast.api.fixurl("famysql/table/optimize?name=" + row.name); }, classname: 'btn btn-xs btn-danger btn-ajax', confirm: function (row) { return '是否确定优化该“' + row.name + '”数据表?'; }, success: function (data, ret) { $(".btn-refresh").trigger("click"); //刷新数据 }, visible: function (row) { return row.is_admin !== 0; }, error: function (data, ret) { Layer.alert(ret.msg); return false; } }, { name: 'repair', text: __('Repair'), title: __('Repair'), dropdown: __('More Table Operate'), classname: 'btn btn-xs btn-danger btn-repair', icon: 'fa fa-check-circle-o', url: function (row) { return Fast.api.fixurl("famysql/table/repair?name=" + row.name); }, classname: 'btn btn-xs btn-danger btn-ajax', confirm: function (row) { return '是否确定修复该“' + row.name + '”数据表?'; }, success: function (data, ret) { $(".btn-refresh").trigger("click"); //刷新数据 }, visible: function (row) { return row.is_admin !== 0; }, error: function (data, ret) { Layer.alert(ret.msg); return false; } }, { name: 'editone', icon: 'fa fa-pencil', text: __('Edit'), title: __('Edit'), dropdown: __('More Table Operate'), extend: 'data-toggle="tooltip"', url: function (row) { return Fast.api.fixurl("famysql/table/table_edit?name=" + row.name); }, visible: function (row) { return row.is_admin !== 0; }, classname: 'btn btn-xs btn-success btn-dialog' }, { name: 'delone', icon: 'fa fa-trash', text: __('Del'), title: __('Del'), dropdown: __('More Table Operate'), extend: 'data-toggle="tooltip"', url: function (row) { return Fast.api.fixurl("famysql/table/table_del?name=" + row.name); }, classname: 'btn btn-xs btn-danger btn-ajax', confirm: function (row) { return '是否确定删除该“' + row.name + '”数据表,不可恢复?'; }, success: function (data, ret) { if (ret.data == 0) { parent.location.reload(); } else { $(".btn-refresh").trigger("click"); //刷新数据 } }, visible: function (row) { return row.is_admin !== 0; }, error: function (data, ret) { Layer.alert(ret.msg); return false; } }, { name: 'crud', text: 'CRUD', title: function (row) { return "(表" + row.name + ")" + __('CRUD'); }, extend: 'data-area=\'["90%", "90%"]\'', dropdown: __('More Table Operate'), classname: 'btn btn-warning btn-xs btn-primary btn-dialog ', visible: function (row) { return row.group !== 'system'; }, url: function (row) { return Fast.api.fixurl('famysql/table/check?addon_name=' + row.group + '&table_name=' + row.name); }, icon: 'fa fa-terminal', }, { name: 'indexs', title: __('Index manager'), text: __('Index manager'), extend: 'data-area=\'["90%", "90%"]\'', url: function (row) { return Fast.api.fixurl("famysql/index/indexs?name=" + row.name + "&is_admin=" + row.is_admin); }, icon: 'fa fa-list-ol', classname: 'btn btn-xs btn-danger btn-dialog' }, { name: 'fields', title: function (row) { return "(" + row.name + ")" + __('Field manager'); }, text: function (row) { return __('Field manager') + "(" + row.field_nums + ")"; }, extend: 'data-area=\'["90%", "90%"]\'', url: function (row) { return Fast.api.fixurl("famysql/field/fields?name=" + row.name + "&is_admin=" + row.is_admin); }, icon: 'fa fa-table', classname: 'btn btn-success btn-xs btn-execute btn-dialog' }, ], formatter: Table.api.formatter.operate }, ] ], //启用固定列 fixedColumns: true, //固定右侧列数 fixedRightNumber: 1, queryParams: function (params) { if (Config.group) { params.group = Config.group; } return params; }, }); // 绑定TAB事件 $('.panel-heading a[data-toggle="tab"]').on('shown.bs.tab', function (e) { var value = $(this).data("value"); var options = table.bootstrapTable('getOptions'); options.queryParams = function (params) { params.group = value; return params; }; return false; }); // 为表格绑定事件 Table.api.bindevent(table); }, backuplist: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'famysql/table/backuplist' } }); var table = $("#table"); table.on('load-success.bs.table', function (e, json) { if (json && typeof json.rows != 'undefined' && $(".nav-addon li").size() == 1) { var addons = []; $.each(json.rows, function (i, j) { if (addons.indexOf(j.addon) == -1 && j.addon != 'all') { $(".nav-addon").append("
  • " + j.addon_name + "
  • "); addons.push(j.addon); } }); } }); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, columns: [ [ { field: 'id', title: __('ID'), operate: false, formatter: function (value, row, index) { return index + 1; } }, { field: 'addon', title: __('Addon'), visible: false }, { field: 'type', title: __('File'), visible: false }, { field: 'file', title: __('File'), operate: false, formatter: function (value, row, index) { var url = Fast.api.fixurl("famysql/table/download?file=" + row.file); return '' + row.file + ''; } }, { field: 'size', title: __('Size'), operate: false }, { field: 'date', title: __('Date'), operate: false }, { field: 'operate', title: __('Operate'), table: table, operate: false, buttons: [ { name: 'restore', text: __('恢复'), icon: 'fa fa-reply', classname: 'btn btn-primary btn-restore btn-xs btn-ajax ', url: function (row) { return Fast.api.fixurl("famysql/table/restore?action=restore&file=" + row.file); } }, { name: 'delone', text: __('Del'), icon: 'fa fa-times', classname: 'btn btn-danger btn-delete btn-xs btn-ajax', extend: 'data-toggle="tooltip"', url: function (row) { return Fast.api.fixurl("famysql/table/restore?action=delete&file=" + row.file); }, confirm: function (row) { return '是否确定删除该“' + row.file + '”备份文件,不可恢复?'; }, refresh: true }, ], formatter: Table.api.formatter.buttons } ] ], commonSearch: true, search: false, templateView: false, clickToSelect: false, showColumns: false, showToggle: false, showExport: false, showSearch: false, searchFormVisible: false, queryParams: function (params) { if (Config.group) { //这里可以追加搜索条件 var filter = JSON.parse(params.filter); var op = JSON.parse(params.op); filter.addon = Config.group; op.addon = "="; params.filter = JSON.stringify(filter); params.op = JSON.stringify(op); } return params; }, }); // 为表格绑定事件 Table.api.bindevent(table); // 切换 $(document).on("click", ".btn-switch", function () { $(".btn-switch").removeClass("active"); $(this).addClass("active"); $("form.form-commonsearch input[name='type']").val($(this).data("type")); table.bootstrapTable('refresh', { url: $.fn.bootstrapTable.defaults.extend.index_url, pageNumber: 1 }); return false; }); $(document).on("click", ".nav-addon li a", function () { $(".nav-addon li").removeClass("active"); $(this).parent().addClass("active"); $("form.form-commonsearch input[name='addon']").val($(this).data("value")); table.bootstrapTable('refresh', { url: $.fn.bootstrapTable.defaults.extend.index_url, pageNumber: 1 }); return false; }); //上传完成后刷新 $(".faupload").data("upload-complete", function (files) { if (files[0].ret.code) { Toastr.success(files[0].ret.msg); } else { Toastr.error(files[0].ret.msg); } $(".btn-refresh").trigger("click"); //刷新数据 }); Controller.api.bindevent(); }, backup: function () { $(document).on("change", "#c-addon", function () { $("#c-ignore_tables").selectPageRefresh(); }); $("#c-ignore_tables").data("params", function (obj) { //obj为SelectPage对象 return { custom: { addon: $("#c-addon").val() } }; }); Controller.api.bindevent(); }, table_add: function () { $(document).on("change", "#c-charset", function () { $("#c-collation").selectPageRefresh(); }); Controller.api.bindevent(); }, table_batch_add: function () { $("#c-name").data("params", function (obj) { //obj为SelectPage对象 return { custom: { addon: $("#c-addon").val() } }; }); Controller.api.bindevent(); }, table_edit: function () { $(document).on("change", "#c-charset", function () { $("#c-collation").selectPageRefresh(); }); Controller.api.bindevent(); }, api: { bindevent: function () { $("#c-collation").data("params", function (obj) { //obj为SelectPage对象 return { custom: { charset: $("#c-charset").val() } }; }); $("#c-type").data("params", function (obj) { //obj为SelectPage对象 if ($("#field-suffix").val() !== "无") { return { custom: { suffix: $("#field-suffix").val() } }; } }); Form.api.bindevent($("form[role=form]")); } } }; return Controller; });