main.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. Vue.component('formulario-paso-1', {
  2. props: ['paises', 'distribuidor'],
  3. data: () => ({
  4. msgError: '',
  5. nombre: '',
  6. apellidos: '',
  7. correo: '',
  8. pais: 'MEX',
  9. telefono: '',
  10. completo: false
  11. }),
  12. methods: {
  13. validarFormulario() {
  14. var nombre = this.nombre;
  15. if ((nombre == '') || (nombre.length < 2)) {
  16. this.msgError = 'El campo "Nombre" debe de contener información válida.';
  17. this.limpiarMensaje();
  18. return false;
  19. }
  20. var apellidos = this.apellidos;
  21. if ((apellidos == '') || (apellidos.length < 2)) {
  22. this.msgError = 'El campo "Apellidos" debe de contener información válida.';
  23. this.limpiarMensaje();
  24. return false;
  25. }
  26. var correo = this.correo;
  27. if (correo == '') {
  28. this.msgError = 'El campo "Correo" no debe de estar vacío.';
  29. this.limpiarMensaje();
  30. return false;
  31. } else if (!this.validarCorreo(correo)) {
  32. this.msgError = 'El correo registrado debe de ser un correo electrónico válido.';
  33. this.limpiarMensaje();
  34. return false;
  35. }
  36. var pais = this.pais;
  37. if (pais == '') {
  38. this.msgError = 'El campo "País" no debe de estar vacío.';
  39. this.limpiarMensaje();
  40. return false;
  41. }
  42. var telefono = this.telefono;
  43. if (telefono == '') {
  44. this.msgError = 'El campo "Teléfono" no debe de estar vacío.';
  45. this.limpiarMensaje();
  46. return false;
  47. } else {
  48. if (pais == 'MEX') {
  49. if (!this.validarTelefono(telefono)) {
  50. this.msgError = 'El teléfono registrado debe de ser un número telefonico valido a 10 digitos.';
  51. this.limpiarMensaje();
  52. return false;
  53. }
  54. }
  55. }
  56. this.enviarDatos();
  57. },
  58. limpiarMensaje() {
  59. var obj = this;
  60. setTimeout(function() { obj.msgError = ''; }, 4000);
  61. },
  62. validarCorreo(correo) {
  63. var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  64. return re.test(correo);
  65. },
  66. validarTelefono: function(telefono) {
  67. var regla = /[0-9]{10}/;
  68. return regla.test(telefono);
  69. },
  70. enviarDatos() {
  71. var obj = this;
  72. this.completo = true;
  73. axios.post('php/mysql/registro-principal.php', {
  74. params: {
  75. idDistribuidor: obj.distribuidor,
  76. nombre: obj.nombre,
  77. apellidos: obj.apellidos,
  78. correo: obj.correo,
  79. pais: obj.pais,
  80. telefono: obj.telefono
  81. }
  82. }).then(response => {
  83. var objRespuesta = response.data;
  84. if (!objRespuesta['boolError']) {
  85. window.location = 'registro-parte2.html?&' + obj.pais + '&' + objRespuesta['registro'] + '&' + obj.distribuidor;
  86. }
  87. obj.completo = false;
  88. }).catch(e => {
  89. console.log(e);
  90. });
  91. }
  92. },
  93. template: /* template */ `
  94. <div class="shadow bg-white position-relative">
  95. <div class="container">
  96. <form class="formulario-registro">
  97. <h1 class="titulo-formulario"> Regístrate Gratis </h1>
  98. <div class="form-row">
  99. <div class="form-group">
  100. <input type="text" class="form-control" id="nombre" name="nombre" v-model="nombre" placeholder="Nombre (s)">
  101. </div>
  102. <div class="form-group">
  103. <input type="text" class="form-control" id="apellidos" name="apellidos" v-model="apellidos" placeholder="Apellidos">
  104. </div>
  105. <div class="form-group">
  106. <input type="text" class="form-control" id="correo" name="correo" v-model="correo" placeholder="Correo Electrónico">
  107. </div>
  108. <div class="form-group">
  109. <select class="form-control" id="pais" name="pais" v-model="pais">
  110. <option v-for="pais in paises" :value="pais.clave"> {{ pais.nombre }} </option>
  111. </select>
  112. </div>
  113. <div class="form-group">
  114. <input type="text" class="form-control inputs" id="telefono" name="telefono" v-model="telefono" placeholder="Teléfono">
  115. </div>
  116. <div class="form-group text-center text-danger bold">
  117. <b> {{ msgError }} </b>
  118. </div>
  119. <div class="form-group col-md-12 text-center w-10" v-if="completo === true">
  120. <div class="spinner-grow text-primary" role="status">
  121. <span class="sr-only">Registrando...</span>
  122. </div>
  123. <div class="spinner-grow text-secondary" role="status">
  124. <span class="sr-only">Registrando...</span>
  125. </div>
  126. <div class="spinner-grow text-success" role="status">
  127. <span class="sr-only">Registrando...</span>
  128. </div>
  129. <div class="spinner-grow text-danger" role="status">
  130. <span class="sr-only">Registrando...</span>
  131. </div>
  132. <div class="spinner-grow text-warning" role="status">
  133. <span class="sr-only">Registrando...</span>
  134. </div>
  135. <div class="spinner-grow text-info" role="status">
  136. <span class="sr-only">Registrando...</span>
  137. </div>
  138. </div>
  139. <div class="form-group">
  140. <button type="button" class="btn btn-block btn-primary boton-formulario" @click="validarFormulario()"> Registrarse </button>
  141. </div>
  142. </div>
  143. </form>
  144. </div>
  145. </div>
  146. `
  147. });
  148. var app = new Vue({
  149. el: '#app',
  150. data: {
  151. paises: [],
  152. idDistribuidor: ''
  153. },
  154. mounted: function() {
  155. var obj = this;
  156. axios.post('php/mysql/data.php', {
  157. params: {
  158. tipo: 'Paises'
  159. }
  160. }).then(response => {
  161. var objRespuesta = response.data;
  162. if (!objRespuesta['boolError']) {
  163. var strPaises = atob(objRespuesta['strPaises']);
  164. strPaises = decodeURIComponent(strPaises);
  165. var objPaises = JSON.parse(strPaises);
  166. obj.paises = objPaises;
  167. }
  168. }).catch(e => {
  169. console.log(e);
  170. });
  171. var URLactual = window.location.href;
  172. axios.post('php/mysql/valida-distribuidor.php', {
  173. params: {
  174. tipo: 'Distribuidor',
  175. URL: URLactual
  176. }
  177. }).then(response => {
  178. var Respuesta = response.data;
  179. if (!Respuesta['boolError']) {
  180. obj.idDistribuidor = Respuesta['idDistribuidor'];
  181. } else {
  182. window.location = 'apoyo-covid-19.html';
  183. }
  184. }).catch(e => {
  185. console.log(e);
  186. });
  187. }
  188. });