index.html 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <!DOCTYPE html>
  2. <html lang="">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>安装EasyAdmin8后台程序</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <link rel="stylesheet" href="/static/plugs/layui-v2.x/css/layui.css" media="all">
  10. <link rel="stylesheet" href="/static/common/css/install.css?v={:time()}" media="all">
  11. </head>
  12. <body>
  13. <h1><img src="/static/common/images/logo-1.png" alt="" style="width: 100px;height: 100px;"></h1>
  14. <h2>安装 EasyAdmin8 后台系统</h2>
  15. <div class="content">
  16. <form class="layui-form layui-form-pane" action="">
  17. <div class="layui-card">
  18. <blockquote class="layui-elem-quote layui-font-green" style="text-align: left;padding: 5px 10px;">
  19. <div class="layui-row">
  20. <div class="layui-col-lg6 layui-col-xl6 layui-col-xs6 layui-col-sm6 layui-col-xs6">
  21. 官网教程:<a href="https://EasyAdmin8.top?spm=001.3e3c9d.29f459" target="_blank" class="layui-font-blue">EasyAdmin8.top</a>
  22. </div>
  23. <div class="layui-col-lg6 layui-col-xl6 layui-col-xs6 layui-col-sm6 layui-col-xs6">
  24. 常见问题:<a href="https://EasyAdmin8.top/guide/question.html?spm=001.3e3c9d.29f460" target="_blank" class="layui-font-blue">Question</a>
  25. </div>
  26. </div>
  27. </blockquote>
  28. </div>
  29. {if $errorInfo}
  30. <div class="error">
  31. {$errorInfo}
  32. </div>
  33. {/if}
  34. <div class="bg">
  35. <div class="layui-card">
  36. <div class="layui-card-body">
  37. 自动读取 .env 配置,不需要手动创建数据库
  38. </div>
  39. </div>
  40. <div class="layui-form-item">
  41. <label class="layui-form-label">数据库地址</label>
  42. <div class="layui-input-block">
  43. <input class="layui-input" name="hostname" autocomplete="off" lay-verify="required" lay-reqtext="请输入数据库地址" placeholder="请输入数据库地址" value="{$envInfo.DB_HOST}">
  44. </div>
  45. </div>
  46. <div class="layui-form-item">
  47. <label class="layui-form-label">数据库端口</label>
  48. <div class="layui-input-block">
  49. <input class="layui-input" name="hostport" autocomplete="off" lay-verify="required" lay-reqtext="请输入数据库端口" placeholder="请输入数据库端口" value="{$envInfo.DB_PORT}">
  50. </div>
  51. </div>
  52. <div class="layui-form-item">
  53. <label class="layui-form-label">数据库名称</label>
  54. <div class="layui-input-block">
  55. <input class="layui-input" name="database" autocomplete="off" lay-verify="required" lay-reqtext="请输入数据库名称" placeholder="请输入数据库名称" value="{$envInfo.DB_NAME}">
  56. </div>
  57. </div>
  58. <div class="layui-form-item">
  59. <label class="layui-form-label">数据表前缀</label>
  60. <div class="layui-input-block">
  61. <input class="layui-input" name="prefix" autocomplete="off" lay-verify="required" lay-reqtext="请输入数据表前缀" placeholder="请输入数据表前缀" value="{$envInfo.DB_PREFIX}">
  62. </div>
  63. </div>
  64. <div class="layui-form-item">
  65. <label class="layui-form-label">数据库账号</label>
  66. <div class="layui-input-block">
  67. <input class="layui-input" name="db_username" autocomplete="off" lay-verify="required" lay-reqtext="请输入数据库账号" placeholder="请输入数据库账号" value="{$envInfo.DB_USER}">
  68. </div>
  69. </div>
  70. <div class="layui-form-item">
  71. <label class="layui-form-label">数据库密码</label>
  72. <div class="layui-input-block">
  73. <input type="password" class="layui-input" name="db_password" autocomplete="off" lay-verify="required" lay-reqtext="请输入数据库密码" placeholder="请输入数据库密码" value="{$envInfo.DB_PASS}">
  74. </div>
  75. </div>
  76. <div class="layui-form-item">
  77. <label class="layui-form-label">覆盖数据库</label>
  78. <div class="layui-input-block" style="text-align: left">
  79. <input type="radio" name="cover" value="1" title="覆盖">
  80. <input type="radio" name="cover" value="0" title="不覆盖" checked>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="bg">
  85. <div class="layui-form-item">
  86. <label class="layui-form-label">后台的地址</label>
  87. <div class="layui-input-block">
  88. <input class="layui-input layui-disabled" id="admin_url" name="admin_url" autocomplete="off" lay-verify="required" lay-reqtext="请输入后台的地址" placeholder="为了后台安全,不建议将后台路径设置为admin" value="admin" readonly disabled>
  89. <span class="tips">登录地址,可在 .env 中修改 EASYADMIN.ADMIN</span>
  90. </div>
  91. </div>
  92. <div class="layui-form-item">
  93. <label class="layui-form-label">管理员账号</label>
  94. <div class="layui-input-block">
  95. <input class="layui-input" name="username" autocomplete="off" lay-verify="required" lay-reqtext="请输入管理员账号" placeholder="请输入管理员账号" value="admin">
  96. </div>
  97. </div>
  98. <div class="layui-form-item">
  99. <label class="layui-form-label">管理员密码</label>
  100. <div class="layui-input-block">
  101. <input type="password" class="layui-input" name="password" maxlength="20" autocomplete="off" lay-verify="required" lay-reqtext="请输入管理员密码" placeholder="请输入管理员密码">
  102. </div>
  103. </div>
  104. </div>
  105. <div class="layui-form-item">
  106. <button class="layui-btn layui-btn-normal {$errorInfo ? 'layui-btn-disabled' : ''}" lay-submit="" lay-filter="install">确定安装
  107. </button>
  108. </div>
  109. </form>
  110. </div>
  111. <script src="static/plugs/layui-v2.x/layui.js" charset="utf-8"></script>
  112. <script>
  113. let isInstall = '{$isInstall? 1 : 0}'
  114. layui.use(['form', 'layer'], function () {
  115. let $ = layui.jquery,
  116. form = layui.form,
  117. layer = layui.layer;
  118. if (isInstall > 0) {
  119. layer.msg("已安装系统,如需重新安装请删除文件:/config/install/lock/install.lock,或者删除 /install 路由<br>页面将跳转", {
  120. icon: 5, shade: 0.6, time: 300000,
  121. success: function () {
  122. setTimeout(function () {
  123. location.href = '/'
  124. }, 3000)
  125. }
  126. })
  127. }
  128. $("#admin_url").bind("input propertychange", function () {
  129. let val = $(this).val();
  130. $("#admin_name").text(val);
  131. });
  132. form.on('submit(install)', function (data) {
  133. if ($(this).hasClass('layui-btn-disabled')) {
  134. return false;
  135. }
  136. let _data = data.field;
  137. let loading = layer.msg('正在安装...', {
  138. icon: 16,
  139. shade: 0.2,
  140. time: false
  141. });
  142. $.ajax({
  143. url: window.location.href,
  144. type: 'post',
  145. contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  146. dataType: "json",
  147. data: _data,
  148. timeout: 60000,
  149. success: function (data) {
  150. layer.close(loading);
  151. if (data.code === 1) {
  152. layer.msg(data.msg, {icon: 1}, function () {
  153. window.location.href = '/admin';
  154. });
  155. } else {
  156. layer.msg(data.msg, {icon: 2, shade: 0.2, time: 3000, shadeClose: true});
  157. }
  158. },
  159. error: function (xhr, textstatus, thrown) {
  160. layer.close(loading);
  161. layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!', {icon: 2});
  162. return false;
  163. }
  164. });
  165. return false;
  166. });
  167. });
  168. </script>
  169. </body>
  170. </html>