step2.js 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  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. wkcode: {
  50. required: false,
  51. regexp: null,
  52. label: ''
  53. },
  54. };
  55. var timer = null;
  56. var flag = true;
  57. _initFormValue();
  58. // 上一步
  59. $('.prev').click(function () {
  60. window.location = 'step1.html'
  61. });
  62. // 下一步
  63. $('.next').click(function () {
  64. // 获取form数据
  65. // 校验form数据 true 校验通过 false 校验失败
  66. var forms = getFormData();
  67. var result = checkForm();
  68. // console.log('result---', result, forms);
  69. if (result) {
  70. $('#cover').css('display', 'block');//显示遮罩层
  71. setTimeout(()=>{
  72. $.ajax({
  73. cache: true,
  74. type: "POST",
  75. dataType: 'json',
  76. url: "./step4",
  77. data: {
  78. form: forms
  79. },
  80. async: true,
  81. timeout: 120000,
  82. success: function (result) {
  83. const step7 = $.ajax({
  84. url:'./step7',
  85. dataType:'json',
  86. type: "POST",
  87. data: {
  88. form: forms
  89. },
  90. })
  91. const step8 = $.ajax({
  92. url:'./step8',
  93. dataType:'json',
  94. type: "POST",
  95. data: {
  96. form: forms
  97. },
  98. })
  99. const step10 = $.ajax({
  100. url:'./step10',
  101. dataType:'json',
  102. type: "POST",
  103. data: {
  104. form: forms
  105. },
  106. })
  107. const step11 = $.ajax({
  108. url:'./step11',
  109. dataType:'json',
  110. type: "POST",
  111. data: {
  112. form: forms
  113. },
  114. })
  115. if (result.code == '200') {
  116. Promise.all([step7,step8,step10,step11]).then(res=>{
  117. const [step7Res,step8Res,step10Res,step11Res] =res
  118. })
  119. localStorage.clear();
  120. window.location = 'step5.html';
  121. } else if (result.code == '400') {
  122. alert(result.error);
  123. window.location.href = 'step6.html';
  124. } else {
  125. alert(result.error);
  126. window.location.href = 'step6.html';
  127. }
  128. },
  129. error: function (xhr) {
  130. window.location.href = 'step6.html';
  131. }
  132. });
  133. })
  134. }
  135. });
  136. function getRes() {
  137. if (timer) {
  138. clearTimeout(timer);
  139. timer = null;
  140. }
  141. // $.post("/admin/install/progress",function(result){
  142. // $(".install_progress_a").show();
  143. // $(".install_progress_a").empty();
  144. // $(".form").hide();
  145. // $(".control").hide();
  146. // if(result.data.now < result.data.length ){
  147. // $(".install_progress_a").append("<progress class='install_progress' max='"+ result.data.length+"' value='"+ result.data.now +"''></progress>");
  148. // html ="<div class='install_pro'> 正在安装中,请稍后...</div>";
  149. // $(".install_progress_a").append(html);
  150. // timer = setTimeout(getRes, 1000)
  151. // } else {
  152. // $(".install_progress_a").append("<progress class='install_progress' max='100' value='100'></progress>");
  153. // html ="<div class='install_pro'> 安装成功 </div>";
  154. // $(".install_progress_a").append(html);
  155. // clearTimeout(timer);
  156. // timer = null;
  157. // }
  158. // });
  159. $.ajax({
  160. cache: true,
  161. type: "POST",
  162. dataType: 'json',
  163. url: './progress',
  164. data: '',
  165. async: false,
  166. success: function (result) {
  167. $(".install_progress_a").show();
  168. $(".install_progress_a").empty();
  169. $(".form").hide();
  170. $(".control").hide();
  171. if (result.data.now < result.data.length) {
  172. $(".install_progress_a").append("<progress class='install_progress' max='" + result.data.length + "' value='" + result.data.now + "''></progress>");
  173. html = "<div class='install_pro'> 正在安装中,请稍后...</div>";
  174. $(".install_progress_a").append(html);
  175. timer = setTimeout(getRes, 1000)
  176. } else {
  177. $(".install_progress_a").append("<progress class='install_progress' max='100' value='100'></progress>");
  178. html = "<div class='install_pro'> 安装成功 </div>";
  179. $(".install_progress_a").append(html);
  180. clearTimeout(timer);
  181. timer = null;
  182. }
  183. }
  184. });
  185. }
  186. /**
  187. * 给 form 输入框赋初值
  188. * @private
  189. */
  190. function _initFormValue() {
  191. $('input').each(function (index, item) {
  192. item.value = form[item.name] || null
  193. $(item).change(function () {
  194. $(this).removeClass('input-error');
  195. var borther = $(this).siblings('.error');
  196. borther.remove();
  197. if (borther.filter('.remind')[0]) {
  198. borther.filter('.remind').show()
  199. }
  200. })
  201. });
  202. }
  203. /**
  204. * 获取 form 输入的值
  205. * @return {form}
  206. */
  207. function getFormData() {
  208. $('.wkform').each(function (index, item) {
  209. form[item.name] = item.value;
  210. // 重置表单状态
  211. $(item).removeClass('input-error');
  212. var borther = $(item).siblings();
  213. borther.remove('.error');
  214. if (borther.filter('.remind')[0]) {
  215. borther.filter('.remind').show()
  216. }
  217. });
  218. return form
  219. }
  220. /**
  221. * 校验表单
  222. * @return {boolean}
  223. */
  224. function checkForm() {
  225. var result = {};
  226. for (var key in rules) {
  227. var rule = rules[key];
  228. if (rule.required) {
  229. if (!form[key] || form[key] == '') {
  230. result[key] = rule.label + '不能为空!';
  231. }
  232. }
  233. if (rule.regexp && !result[key]) {
  234. var flag = rule.regexp.test(form[key]);
  235. if (!flag) {
  236. let msg = rule.label === '管理员账号' ? '手机号码' : rule.label
  237. result[key] = '请输入正确的' + msg + '!';
  238. }
  239. }
  240. }
  241. var flag = true;
  242. if (JSON.stringify(result) !== '{}' && typeof result === 'object') {
  243. for (var key in result) {
  244. renderErrorMsg(key, result[key])
  245. flag = false;
  246. }
  247. }
  248. return flag
  249. }
  250. /**
  251. * 渲染错误信息
  252. * @param key
  253. * @param msg
  254. */
  255. function renderErrorMsg(key, msg) {
  256. $('input').each(function (index, item) {
  257. if (item.name === key) {
  258. var remindDom = $(item).next()[0] || null;
  259. if (remindDom) {
  260. $(remindDom).hide()
  261. }
  262. $(item).parent().append('<div class="error">' + msg + '</div>');
  263. $(item).addClass('input-error')
  264. }
  265. })
  266. }