export.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <include file="Public:header" />
  2. <div id="main-content">
  3. <div id="top-alert" class="fixed alert alert-error" style="display: none;">
  4. <button class="close fixed" style="margin-top: 4px;">&times;</button>
  5. <div class="alert-content">警告内容</div>
  6. </div>
  7. <div id="main" class="main">
  8. <div class="main-title-h">
  9. <span class="h1-title">数据备份</span>
  10. </div>
  11. <div class="cf">
  12. <div class="fl">
  13. <a id="export" class="btn" href="javascript:;" autocomplete="off">立即备份</a>
  14. <a id="optimize" class="btn" href="{:U('Tools/optimize')}">优化表</a>
  15. <a id="repair" class="btn" href="{:U('Tools/repair')}">修复表</a>
  16. </div>
  17. </div>
  18. <div class="data-table table-striped">
  19. <form id="export-form" method="post" action="{:U('Tools/export')}">
  20. <table>
  21. <thead>
  22. <tr>
  23. <th width="48"><input class="check-all" type="checkbox" value="" checked="checked"></th>
  24. <th>表名</th>
  25. <th width="120">数据量</th>
  26. <th width="120">数据大小</th>
  27. <th width="160">创建时间</th>
  28. <th width="160">备份状态</th>
  29. <th width="">操作</th>
  30. </tr>
  31. </thead>
  32. <tbody>
  33. <volist name="list" id="table">
  34. <tr>
  35. <td class="num"><input class="ids" type="checkbox" name="tables[]" value="{$table.name}" checked="checked"></td>
  36. <td>{$table.name}</td>
  37. <td>{$table.rows}</td>
  38. <td>{$table.data_length|format_bytes}</td>
  39. <td>{$table.create_time}</td>
  40. <td class="info">未备份</td>
  41. <td class="action">
  42. <a class="no-refresh btn-success btn-xs" href="{:U('Tools/excel?tables='.$table['name'])}">导出表</a> |
  43. <a class="ajax-get no-refresh btn-info btn-xs" href="{:U('Tools/optimize?tables='.$table['name'])}">优化表</a> |
  44. <a class="ajax-get no-refresh btn-warning btn-xs" href="{:U('Tools/repair?tables='.$table['name'])}">修复表</a>
  45. </td>
  46. </tr>
  47. </volist>
  48. </tbody>
  49. </table>
  50. </form>
  51. </div>
  52. </div>
  53. </div>
  54. <script type="text/javascript">
  55. (function($){
  56. var $form=$("#export-form"),$export=$("#export"),tables
  57. $optimize=$("#optimize"),$repair=$("#repair");
  58. $optimize.add($repair).click(function(){
  59. $.post(this.href,$form.serialize(),function(data){
  60. if(data.status){
  61. updateAlert(data.info,'alert-success');
  62. }else{
  63. updateAlert(data.info,'alert-error');
  64. }
  65. setTimeout(function(){
  66. $('#top-alert').find('button').click();
  67. $(that).removeClass('disabled').prop('disabled',false);
  68. },1500);
  69. },"json");
  70. return false;
  71. });
  72. $export.click(function(){
  73. $export.parent().children().addClass("disabled");
  74. $export.html("正在发送备份请求...");
  75. $.post($form.attr("action"),$form.serialize(),function(data){
  76. if(data.status){
  77. tables=data.tables;
  78. $export.html(data.info+"开始备份,请不要关闭本页面!");
  79. backup(data.tab);
  80. window.onbeforeunload=function(){
  81. return "正在备份数据库,请不要关闭!"
  82. }
  83. }else{
  84. updateAlert(data.info,'alert-error');
  85. $export.parent().children().removeClass("disabled");
  86. $export.html("立即备份");
  87. setTimeout(function(){
  88. $('#top-alert').find('button').click();
  89. $(that).removeClass('disabled').prop('disabled',false);
  90. },1500);
  91. }
  92. },"json");
  93. return false;
  94. });
  95. function backup(tab,status){
  96. status&&showmsg(tab.id,"开始备份...(0%)");
  97. $.get($form.attr("action"),tab,function(data){
  98. if(data.status){
  99. //alert(tab.id + '|' +data.info);
  100. showmsg(tab.id,data.info);
  101. if(!$.isPlainObject(data.tab)){
  102. $export.parent().children().removeClass("disabled");
  103. $export.html("备份完成,点击重新备份");
  104. window.onbeforeunload=function(){
  105. return null
  106. }
  107. return;
  108. }
  109. backup(data.tab,tab.id!=data.tab.id);
  110. }else{
  111. updateAlert(data.info,'alert-error');
  112. $export.parent().children().removeClass("disabled");
  113. $export.html("立即备份");
  114. setTimeout(function(){
  115. $('#top-alert').find('button').click();
  116. $(that).removeClass('disabled').prop('disabled',false);
  117. },1500);
  118. }
  119. },"json");
  120. }
  121. function showmsg(id,msg){
  122. $form.find("input[value="+tables[id]+"]").closest("tr").find(".info").html(msg);
  123. }
  124. })(jQuery);
  125. </script>
  126. <script type="text/javascript">
  127. //主导航高亮
  128. $('.index-box').addClass('current');
  129. $('.index-export').addClass('current');
  130. </script>
  131. <include file="Public:footer" />