step-3.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .install-content-procedure .content-procedure-item:first-of-type{
  5. background: url("INSTALL_IMG/complete_two.png") no-repeat center / contain;
  6. color: #fff;
  7. }
  8. .install-content-procedure .content-procedure-item:nth-child(2){
  9. background: url("INSTALL_IMG/complete_four.png") no-repeat center / contain;
  10. color: #fff;
  11. }
  12. .install-content-procedure .content-procedure-item:nth-child(3){
  13. background: url("INSTALL_IMG/conduct.png") no-repeat center / contain;
  14. color: #fff;
  15. }
  16. </style>
  17. {/block}
  18. {block name="main"}
  19. <div id='postloader' class='waitpage'></div>
  20. <div class="pright layui-form">
  21. <div class="pr-title install-title layui-hide"></div>
  22. <div class="pr-agreement">
  23. <form class="layui-form " id="install-form">
  24. <div class="testing parameter">
  25. <div class="testing-item">
  26. <h3>数据库设置</h3>
  27. <table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
  28. <tr>
  29. <td class="onetd"><span class="required">*</span>数据库主机:</td>
  30. <td>
  31. <input name="dbhost" id="dbhost" type="text" lay-verify="empty" placeholder="请输入数据库主机" value="" class="input-txt" onChange="testDb()" />
  32. <small>一般为localhost</small>
  33. </td>
  34. </tr>
  35. <tr>
  36. <td class="onetd"><span class="required">*</span>Mysql端口:</td>
  37. <td>
  38. <input name="dbport" id="dbport" type="text" value="3306" class="input-txt" lay-verify="empty" placeholder="请输入Mysql端口"/>
  39. <small>一般为3306</small>
  40. </td>
  41. </tr>
  42. <tr>
  43. <td class="onetd"><span class="required">*</span>数据库用户:</td>
  44. <td>
  45. <input name="dbuser" id="dbuser" type="text" value="" class="input-txt" onChange="testDb()" lay-verify="empty" placeholder="请输入数据库用户"/>
  46. <small>默认root</small>
  47. </td>
  48. </tr>
  49. <tr>
  50. <td class="onetd"><span class="required">*</span>数据库密码:</td>
  51. <td>
  52. <div style='float:left;margin-right:3px;'>
  53. <input name="dbpwd" id="dbpwd" type="text" class="input-txt" onChange="testDb()" lay-verify="empty" placeholder="请输入数据库密码" />
  54. </div>
  55. <div style='float:left' class="mysql-message" id='dbpwdsta'></div>
  56. </td>
  57. </tr>
  58. <tr>
  59. <td class="onetd"><span class="required">*</span>数据库名称:</td>
  60. <td>
  61. <div style='float:left;margin-right:3px;'><input name="dbname" id="dbname" type="text" value="" class="input-txt" onChange="haveDB()" lay-verify="empty" placeholder="请输入数据库名称" /></div>
  62. <div style='float:left' class="mysql-message" id='havedbsta'></div>
  63. </td>
  64. </tr>
  65. <tr>
  66. <td class="onetd">数据表前缀:</td>
  67. <td>
  68. <div style='float:left;margin-right:3px;'><input name="dbprefix" id="dbprefix" type="text" value="" class="input-txt" placeholder="请输入数据表前缀"/></div>
  69. </td>
  70. </tr>
  71. <tr>
  72. <td class="onetd">数据库编码:</td>
  73. <td>
  74. <label class="install-code">UTF8</label>
  75. </td>
  76. </tr>
  77. </table>
  78. </div>
  79. <div class="testing-item">
  80. <h3>网站设置</h3>
  81. <table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
  82. <tr>
  83. <td class="onetd"><span class="required">*</span><span>网站标题:</span></td>
  84. <td>
  85. <input name="admin_name" id="admin_name" type="text" value="" class="input-txt" lay-verify="empty" placeholder="请输入网站标题"/>
  86. <small id="mess_admin_name">网站标题 必填</small>
  87. </td>
  88. </tr>
  89. <tr>
  90. <td class="onetd"><span class="required">*</span><span>店铺名称:</span></td>
  91. <td>
  92. <input name="site_name" id="site_name" type="text" value="" class="input-txt" lay-verify="empty" placeholder="请输入店铺名称"/>
  93. <small id="mess_site_name">店铺名称 必填</small>
  94. </td>
  95. </tr>
  96. <tr>
  97. <td class="onetd"><span class="required">*</span><span>管理员用户名:</span></td>
  98. <td>
  99. <input name="username" id="username" type="text" value="" class="input-txt" lay-verify="empty" placeholder="请输入平台用户名"/>
  100. <small id="mess_username">管理员用户名 必填</small>
  101. </td>
  102. </tr>
  103. <tr>
  104. <td class="onetd"><span class="required">*</span><span>管理员密码:</span></td>
  105. <td>
  106. <input name="password" id="password" type="password" value="" class="input-txt" lay-verify="empty" placeholder="请输入平台密码"/>
  107. <small id="mess_password">密码 必填</small>
  108. </td>
  109. </tr>
  110. <tr>
  111. <td class="onetd"><span class="required">*</span><span>确认密码:</span></td>
  112. <td>
  113. <input name="password2" id="password2" type="password" value="" class="input-txt" lay-verify="empty" placeholder="请输入平台确认密码"/>
  114. <small id="mess_password2">确认密码 必填</small>
  115. </td>
  116. </tr>
  117. </table>
  118. </div>
  119. </div>
  120. </form>
  121. <div class="layui-form layui-hide testing" id="install-log">
  122. <div class="install-log">
  123. </div>
  124. <div class="btn-box layui-hide">
  125. <input type="button" class="btn-back" value="后退" onclick="back()" />
  126. </div>
  127. </div>
  128. </div>
  129. <div class="btn-box">
  130. <input type="button" class="btn-back" value="后退" onclick="window.location.href='{$root_url}/install.php/index/index?step=2'" />
  131. <input type="button" class="btn-next" lay-submit lay-filter="install" value="开始安装" id="form_submit">
  132. </div>
  133. </div>
  134. {/block}
  135. {block name='script'}
  136. <script language="javascript" type="text/javascript">
  137. ControlContent(2);
  138. var is_existdb = 1;//数据库是否存在
  139. var message = '数据库账号或密码不能为空';
  140. var is_install = false;
  141. function inputBoxPointer(id){
  142. return document.getElementById(id);
  143. }
  144. layui.use('form', function(){
  145. var form = layui.form;
  146. form.verify({
  147. empty: function(value, item){ //value:表单的值、item:表单的DOM对象
  148. if(value == ''){
  149. var msg = $(item).attr("placeholder");
  150. return msg;
  151. }
  152. }
  153. });
  154. form.on('submit(install)', function(data){
  155. if(is_existdb == 2){
  156. layer.confirm('数据库存在,系统将覆盖数据库!', {
  157. btn: ['继续','取消'] //按钮
  158. }, function(){
  159. layer.closeAll();
  160. install(data.field);
  161. }, function(){
  162. layer.closeAll();
  163. return false;
  164. });
  165. }else{
  166. if(is_existdb <= 0){
  167. error(message);
  168. return false;
  169. }
  170. install(data.field);
  171. }
  172. return false;
  173. });
  174. });
  175. //数据库连接测试
  176. function testDb()
  177. {
  178. var dbhost = inputBoxPointer('dbhost').value;
  179. var dbuser = inputBoxPointer('dbuser').value;
  180. var dbpwd = inputBoxPointer('dbpwd').value;
  181. var dbport = inputBoxPointer('dbport').value;
  182. inputBoxPointer('dbpwdsta').innerHTML='<img src="INSTALL_IMG/ajax-loader.gif">';
  183. $.ajax({ //post也可
  184. url: '{$root_url}/install.php/index/testdb',
  185. data: { dbhost: dbhost, dbport : dbport, dbuser:dbuser, dbpwd:dbpwd},
  186. type: "post",
  187. dataType: 'json',
  188. success: function(data){
  189. inputBoxPointer('dbpwdsta').innerHTML = data.data.message;
  190. is_existdb = data.data.status;
  191. message = data.data.message;
  192. }
  193. });
  194. }
  195. /**
  196. *验证数据库是否存在
  197. */
  198. function haveDB()
  199. {
  200. var dbhost = inputBoxPointer('dbhost').value;
  201. var dbname = inputBoxPointer('dbname').value;
  202. var dbuser = inputBoxPointer('dbuser').value;
  203. var dbpwd = inputBoxPointer('dbpwd').value;
  204. var dbport = inputBoxPointer('dbport').value;
  205. inputBoxPointer('havedbsta').innerHTML='<img src="INSTALL_IMG/ajax-loader.gif">';
  206. $.ajax({ //post也可
  207. url: '{$root_url}/install.php/index/testdb',
  208. data: { dbhost: dbhost, dbport : dbport, dbuser:dbuser, dbpwd:dbpwd,dbname:dbname},
  209. type: "post",
  210. dataType: 'json',
  211. success: function(data){
  212. inputBoxPointer('havedbsta').innerHTML = data.data.message;
  213. is_existdb = data.data.status;
  214. message = data.data.message;
  215. }
  216. });
  217. }
  218. function getStatus() {
  219. $.ajax({
  220. url: "{$root_url}/install.php/index/getInstallInfo",
  221. dataType: 'json',
  222. type: 'get',
  223. success : function(data) {
  224. if(data.code == 1) {
  225. $(data.data.log).each(function (i, e){
  226. if($('.log-'+i).length == 0) {
  227. let html = `<div class="log-${i}">
  228. <span>${e[0]}${e[1] == 'success' ? "成功" : ""}</span>
  229. <span>${e[2]}</span>
  230. </div>`;
  231. $('.install-log').append(html);
  232. SetScroll();
  233. }
  234. })
  235. if(data.data.status == 0 || data.data.status == 1) {
  236. setTimeout(() => {
  237. getStatus();
  238. }, 200)
  239. }else{
  240. $('#install-log .btn-box').removeClass('layui-hide')
  241. }
  242. }
  243. }
  244. })
  245. }
  246. function install(data){
  247. if(is_install) return false;
  248. $('#install-form').addClass('layui-hide')
  249. $('#install-log').removeClass('layui-hide')
  250. // $('.install-log').html('<div class="install-head">正在安装...</div>');
  251. $('.install-title').removeClass('layui-hide')
  252. $('.install-title').html('<div class="install-head">正在安装...</div>');
  253. $('.pright>.btn-box').addClass('layui-hide')
  254. is_install = true;
  255. $.ajax({
  256. url: "{$root_url}/install.php/index/install",
  257. data: data,
  258. dataType: 'json',
  259. type: 'post',
  260. success : function(res) {
  261. layer.close(index);
  262. if(res.code == 1){
  263. $.ajax({
  264. url: "{$root_url}/install.php/index/initData",
  265. data: data,
  266. dataType: 'json',
  267. type: 'post',
  268. success : function(data) {
  269. if(data.code == 1){
  270. window.location.href = '{$root_url}/install.php/index/installSuccess';
  271. }
  272. }
  273. })
  274. }else{
  275. error(res.msg);
  276. is_install = false;
  277. }
  278. },
  279. })
  280. setTimeout(() => {
  281. getStatus();
  282. }, 500)
  283. }
  284. function back(){
  285. $('#install-form').removeClass('layui-hide')
  286. $('#install-log').addClass('layui-hide')
  287. $('.install-title').addClass('layui-hide')
  288. $('.pright>.btn-box').removeClass('layui-hide')
  289. }
  290. window.onload = SetScroll;
  291. function SetScroll(){
  292. var height=$(".install-log")[0].scrollHeight;
  293. $(".install-log").scrollTop(height);
  294. }
  295. </script>
  296. {/block}