step2.js 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. var form = {
  2. databaseUrl: '127.0.0.1',
  3. databasePort: '3306',
  4. databaseTable: '5kcrm_',
  5. databasePwd: '',
  6. databaseUser: 'root'
  7. };
  8. var rules = {
  9. databaseUrl: {
  10. required: true,
  11. regexp: /[^\u4e00-\u9fa5]+$/,
  12. label: '数据库主机地址'
  13. },
  14. databaseName: {
  15. required: true,
  16. regexp: /[^\u4e00-\u9fa5]+$/,
  17. label: '数据库名'
  18. },
  19. databasePort: {
  20. required: true,
  21. regexp: /^[0-9]*$/,
  22. label: '数据库端口号'
  23. },
  24. databaseUser: {
  25. required: true,
  26. regexp: /[^\u4e00-\u9fa5]+$/,
  27. label: '数据库用户名'
  28. },
  29. databasePwd: {
  30. required: false,
  31. regexp: null,
  32. label: '数据库密码'
  33. },
  34. databaseTable: {
  35. required: true,
  36. regexp: /[^\u4e00-\u9fa5]+$/,
  37. label: '数据库表前缀'
  38. },
  39. root: {
  40. required: true,
  41. regexp: /^[1][3-9][0-9]{9}$/,
  42. label: '管理员账号'
  43. },
  44. pwd: {
  45. required: true,
  46. regexp: /^(?=.*[a-zA-Z])(?=.*\d).{6,20}$/,
  47. label: '管理员密码(6~20位字母加数字组合)'
  48. }
  49. };
  50. var timer = null;
  51. var flag = true;
  52. _initFormValue();
  53. // 上一步
  54. $('.prev').click(function () {
  55. window.location = 'step1.html'
  56. });
  57. // 下一步
  58. $('.next').click(function () {
  59. // 获取form数据
  60. // 校验form数据 true 校验通过 false 校验失败
  61. var forms = getFormData();
  62. var result = checkForm();
  63. console.log('result---', result, forms);
  64. if (result) {
  65. $.ajax({
  66. cache: true,
  67. type: "POST",
  68. dataType: 'json',
  69. url: "./step4",
  70. data: {
  71. form: forms
  72. },
  73. async: false,
  74. success: function (result) {
  75. if (result.code == '200') {
  76. alert(result.data);
  77. window.location = '../../../index.html';
  78. } else if (result.code == '400') {
  79. alert(result.error); //失败
  80. return false;
  81. // window.location = 'step3.html'
  82. } else {
  83. window.location = 'step3.html'
  84. alert('安装失败');
  85. }
  86. }
  87. // getRes();
  88. });
  89. }
  90. });
  91. function getRes() {
  92. if (timer) {
  93. clearTimeout(timer);
  94. timer = null;
  95. }
  96. // $.post("/admin/install/progress",function(result){
  97. // $(".install_progress_a").show();
  98. // $(".install_progress_a").empty();
  99. // $(".form").hide();
  100. // $(".control").hide();
  101. // if(result.data.now < result.data.length ){
  102. // $(".install_progress_a").append("<progress class='install_progress' max='"+ result.data.length+"' value='"+ result.data.now +"''></progress>");
  103. // html ="<div class='install_pro'> 正在安装中,请稍后...</div>";
  104. // $(".install_progress_a").append(html);
  105. // timer = setTimeout(getRes, 1000)
  106. // } else {
  107. // $(".install_progress_a").append("<progress class='install_progress' max='100' value='100'></progress>");
  108. // html ="<div class='install_pro'> 安装成功 </div>";
  109. // $(".install_progress_a").append(html);
  110. // clearTimeout(timer);
  111. // timer = null;
  112. // }
  113. // });
  114. $.ajax({
  115. cache: true,
  116. type: "POST",
  117. dataType: 'json',
  118. url: './progress',
  119. data: '',
  120. async: false,
  121. success: function (result) {
  122. $(".install_progress_a").show();
  123. $(".install_progress_a").empty();
  124. $(".form").hide();
  125. $(".control").hide();
  126. if (result.data.now < result.data.length) {
  127. $(".install_progress_a").append("<progress class='install_progress' max='" + result.data.length + "' value='" + result.data.now + "''></progress>");
  128. html = "<div class='install_pro'> 正在安装中,请稍后...</div>";
  129. $(".install_progress_a").append(html);
  130. timer = setTimeout(getRes, 1000)
  131. } else {
  132. $(".install_progress_a").append("<progress class='install_progress' max='100' value='100'></progress>");
  133. html = "<div class='install_pro'> 安装成功 </div>";
  134. $(".install_progress_a").append(html);
  135. clearTimeout(timer);
  136. timer = null;
  137. }
  138. }
  139. });
  140. }
  141. /**
  142. * 给 form 输入框赋初值
  143. * @private
  144. */
  145. function _initFormValue() {
  146. $('input').each(function (index, item) {
  147. item.value = form[item.name] || null
  148. $(item).change(function () {
  149. $(this).removeClass('input-error');
  150. var borther = $(this).siblings('.error');
  151. borther.remove();
  152. if (borther.filter('.remind')[0]) {
  153. borther.filter('.remind').show()
  154. }
  155. })
  156. });
  157. }
  158. /**
  159. * 获取 form 输入的值
  160. * @return {form}
  161. */
  162. function getFormData() {
  163. $('input').each(function (index, item) {
  164. form[item.name] = item.value;
  165. // 重置表单状态
  166. $(item).removeClass('input-error');
  167. var borther = $(item).siblings();
  168. borther.remove('.error');
  169. if (borther.filter('.remind')[0]) {
  170. borther.filter('.remind').show()
  171. }
  172. });
  173. return form
  174. }
  175. /**
  176. * 校验表单
  177. * @return {boolean}
  178. */
  179. function checkForm() {
  180. var result = {};
  181. for (var key in rules) {
  182. var rule = rules[key];
  183. if (rule.required) {
  184. if (!form[key] || form[key] == '') {
  185. result[key] = rule.label + '不能为空!';
  186. }
  187. }
  188. if (rule.regexp && !result[key]) {
  189. var flag = rule.regexp.test(form[key]);
  190. if (!flag) {
  191. let msg = rule.label === '管理员账号' ? '手机号码' : rule.label
  192. result[key] = '请输入正确的' + msg + '!';
  193. }
  194. }
  195. }
  196. var flag = true;
  197. if (JSON.stringify(result) !== '{}' && typeof result === 'object') {
  198. for (var key in result) {
  199. renderErrorMsg(key, result[key])
  200. flag = false;
  201. }
  202. }
  203. return flag
  204. }
  205. /**
  206. * 渲染错误信息
  207. * @param key
  208. * @param msg
  209. */
  210. function renderErrorMsg(key, msg) {
  211. $('input').each(function (index, item) {
  212. if (item.name === key) {
  213. var remindDom = $(item).next()[0] || null;
  214. if (remindDom) {
  215. $(remindDom).hide()
  216. }
  217. $(item).parent().append('<div class="error">' + msg + '</div>');
  218. $(item).addClass('input-error')
  219. }
  220. })
  221. }
  222. /**
  223. * 提交表单
  224. */
  225. function submitForm() {}