main2.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. Vue.component('formulario-paso-2', {
  2. data: () => ({
  3. paisPaso1: '',
  4. idDistribuidor: '',
  5. registro: '',
  6. estados: [],
  7. municipios: [],
  8. msgError: '',
  9. completo: false,
  10. nombreEscuela: '',
  11. telefonoEscuela: '',
  12. calle: '',
  13. numero: '',
  14. colonia: '',
  15. estado: '',
  16. municipio: 'Municipio - Ciudad',
  17. claveIncorporacion: '',
  18. sitioWeb: '',
  19. tipoEscuela: 'Tipo de escuela',
  20. numeroAlumnos: 'Número de alumnos',
  21. maternal: false,
  22. preescolar: false,
  23. primaria: false,
  24. secundaria: false,
  25. preparatoria: false,
  26. licenciatura: false,
  27. posgrado: false,
  28. }),
  29. mounted: function() {
  30. var URLactual = window.location.href;
  31. var arrDatos = URLactual.split('&');
  32. if (arrDatos.length > 1) {
  33. var registro = arrDatos[2];
  34. this.registro = atob(registro);
  35. axios.post('php/mysql/data.php', {
  36. params: {
  37. tipo: 'Registro',
  38. registro: registro
  39. }
  40. }).then(response => {
  41. var objRespuesta = response.data;
  42. if (!objRespuesta['boolError']) {
  43. if (!objRespuesta['boolRegistro']) {
  44. window.location = 'apoyo-covid-19.html';
  45. }
  46. }
  47. }).catch(e => {
  48. console.log(e);
  49. });
  50. this.paisPaso1 = arrDatos[1];
  51. if (this.paisPaso1 == 'MEX') {
  52. var obj = this;
  53. axios.post('php/mysql/data.php', {
  54. params: {
  55. tipo: 'Estados'
  56. }
  57. }).then(response => {
  58. var objRespuesta = response.data;
  59. // console.log(objRespuesta);
  60. if (!objRespuesta['boolError']) {
  61. var strEstados = atob(objRespuesta['strEstados']);
  62. strEstados = decodeURIComponent(strEstados);
  63. var objEstados = JSON.parse(strEstados);
  64. obj.estados = objEstados;
  65. obj.estado = 'Estado';
  66. }
  67. }).catch(e => {
  68. console.log(e);
  69. });
  70. }
  71. this.idDistribuidor = arrDatos[3];
  72. } else {
  73. window.location = 'apoyo-covid-19.html';
  74. }
  75. },
  76. methods: {
  77. cargarMunicipios() {
  78. var estado = this.estado;
  79. var obj = this;
  80. axios.post('php/mysql/data.php', {
  81. params: {
  82. tipo: 'Municipios',
  83. estado: estado
  84. }
  85. }).then(response => {
  86. var objRespuesta = response.data;
  87. // console.log(objRespuesta);
  88. if (!objRespuesta['boolError']) {
  89. var strMunicipios = atob(objRespuesta['strMunicipios']);
  90. strMunicipios = decodeURIComponent(strMunicipios);
  91. var objMunicipios = JSON.parse(strMunicipios);
  92. obj.municipios = objMunicipios;
  93. obj.municipio = 'Municipio - Ciudad';
  94. }
  95. }).catch(e => {
  96. console.log(e);
  97. });
  98. },
  99. validarFormulario() {
  100. var nombreEscuela = this.nombreEscuela;
  101. if ((nombreEscuela == '') || (nombreEscuela.length < 4)) {
  102. this.msgError = 'El campo "Nombre de la escuela" debe de contener información válida.';
  103. this.limpiarMensaje();
  104. return false;
  105. }
  106. var telefonoEscuela = this.telefonoEscuela;
  107. var pais = this.paisPaso1;
  108. if (telefonoEscuela == '') {
  109. this.msgError = 'El campo "Teléfono de la escuela" no debe de estar vacío.';
  110. this.limpiarMensaje();
  111. return false;
  112. }
  113. if (pais == 'MEX') {
  114. if (!this.validarTelefono(telefonoEscuela)) {
  115. this.msgError = 'El Teléfono de la escuela registrado, debe ser un número teléfonico valido de 10 digitos.';
  116. this.limpiarMensaje();
  117. return false;
  118. }
  119. }
  120. var calle = this.calle;
  121. if ((calle == '') || (calle.length < 5)) {
  122. this.msgError = 'El campo "Calle" debe de contener información válida.';
  123. this.limpiarMensaje();
  124. return false;
  125. }
  126. var numero = this.numero;
  127. if ((numero == '') || (numero.length < 1)) {
  128. this.msgError = 'El campo "Número" debe de contener información válida.';
  129. this.limpiarMensaje();
  130. return false;
  131. }
  132. var colonia = this.colonia;
  133. if ((colonia == '') || (colonia.length < 3)) {
  134. this.msgError = 'El campo "Colonia" debe de contener información válida.';
  135. this.limpiarMensaje();
  136. return false;
  137. }
  138. var estado = this.estado;
  139. if (estado == 'Estado') {
  140. this.msgError = 'El campo "Estado" no debe de estar vacío.';
  141. this.limpiarMensaje();
  142. return false;
  143. }
  144. if (pais == 'MEX') {
  145. var municipio = this.municipio;
  146. if (municipio == 'Municipio - Ciudad') {
  147. this.msgError = 'El campo "Municipio - Ciudad" no debe de estar vacío.';
  148. this.limpiarMensaje();
  149. return false;
  150. }
  151. var claveIncorporacion = this.claveIncorporacion;
  152. if ((claveIncorporacion == '') || (claveIncorporacion.length < 10) || (claveIncorporacion.length > 12)) {
  153. this.msgError = 'El campo "Clave de incorporación" no debe de estar vacío o debe de ser un número entero de 10 o 12 digitos.';
  154. this.limpiarMensaje();
  155. return false;
  156. }
  157. }
  158. var sitioWeb = this.sitioWeb;
  159. if (sitioWeb != '') {
  160. if (!this.validarURL(sitioWeb)) {
  161. this.msgError = 'El URL del Sitio Web registrado no es un URL valido.';
  162. this.limpiarMensaje();
  163. return false;
  164. }
  165. }
  166. var tipoEscuela = this.tipoEscuela;
  167. if (tipoEscuela == 'Tipo de escuela') {
  168. this.msgError = 'El campo "Tipo de escuela" no debe de estar vacío.';
  169. this.limpiarMensaje();
  170. return false;
  171. }
  172. var numeroAlumnos = this.numeroAlumnos;
  173. if (numeroAlumnos == 'Número de alumnos') {
  174. this.msgError = 'El campo "Número de alumnos" no debe de estar vacío.';
  175. this.limpiarMensaje();
  176. return false;
  177. }
  178. if ((!this.maternal) && (!this.preescolar) && (!this.primaria) && (!this.secundaria) && (!this.preparatoria) && (!this.licenciatura) && (!this.posgrado)) {
  179. this.msgError = 'Debe de seleccionar al menos un nivel educativo de las opciones.';
  180. this.limpiarMensaje();
  181. return false;
  182. }
  183. this.EnviarDatos();
  184. },
  185. limpiarMensaje() {
  186. var obj = this;
  187. setTimeout(function() { obj.msgError = ''; }, 4000);
  188. },
  189. validarTelefono(telefono) {
  190. var regla = /[0-9]{10}/;
  191. return regla.test(telefono);
  192. },
  193. validarURL(URL) {
  194. var regla = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
  195. return regla.test(URL);
  196. },
  197. EnviarDatos() {
  198. var obj = this;
  199. this.completo = true;
  200. axios.post('php/mysql/registro-escuelas.php', {
  201. params: {
  202. idDistribuidor: this.idDistribuidor,
  203. idRegistro: this.registro,
  204. nombre: this.nombreEscuela,
  205. telefono: this.telefonoEscuela,
  206. calle: this.calle,
  207. numero: this.numero,
  208. colonia: this.colonia,
  209. estado: this.estado,
  210. municipio: this.municipio,
  211. claveInc: this.claveIncorporacion,
  212. sitioWeb: this.sitioWeb,
  213. tipoEscuela: this.tipoEscuela,
  214. numeroAlumnos: this.numeroAlumnos,
  215. maternal: this.maternal,
  216. preescolar: this.preescolar,
  217. primaria: this.primaria,
  218. secundaria: this.secundaria,
  219. preparatoria: this.preparatoria,
  220. licenciatura: this.licenciatura,
  221. posgrado: this.posgrado
  222. }
  223. }).then(response => {
  224. var objRespuesta = response.data;
  225. // console.log(objRespuesta);
  226. if (!objRespuesta['boolError']) {
  227. if (!objRespuesta['boolError']) {
  228. this.completo = false;
  229. $('#myModal').modal('show');
  230. setTimeout(function() { window.location = 'apoyo-covid-19.html';; }, 2000);
  231. }
  232. }
  233. }).catch(e => {
  234. this.completo = false;
  235. console.log(e);
  236. });
  237. }
  238. },
  239. template: /* template */ `
  240. <div class="shadow bg-white rounded container-white position-relative mb-5">
  241. <div class="container">
  242. <h1 class="titulo-formulario"> Regístrate Gratis </h1>
  243. <form class="formulario-registro">
  244. <div class="form-row">
  245. <div class="form-group col-md-12">
  246. <input type="text" class="form-control" id="nombreEscuela"
  247. name="nombreEscuela" v-model="nombreEscuela"
  248. placeholder="Nombre de la escuela">
  249. </div>
  250. <div class="form-group col-md-12">
  251. <input type="text" class="form-control" id="telefonoEscuela"
  252. name="telefonoEscuela" v-model="telefonoEscuela"
  253. placeholder="Teléfono de la escuela">
  254. </div>
  255. <div class="form-group col-md-7">
  256. <input type="text" class="form-control" id="calle" name="calle"
  257. v-model="calle" placeholder="Calle">
  258. </div>
  259. <div class="form-group col-md-5">
  260. <input type="text" class="form-control" id="numero" name="numero"
  261. v-model="numero" placeholder="Número">
  262. </div>
  263. <div class="form-group col-md-12">
  264. <input type="text" class="form-control" id="colonia" name="colonia"
  265. v-model="colonia" placeholder="Colonia">
  266. </div>
  267. <div class="form-group col-md-12" v-if="paisPaso1 == 'MEX'">
  268. <select class="form-control" id="estado" name="estado" v-model="estado"
  269. @change="cargarMunicipios()">
  270. <option disabled> Estado </option>
  271. <option v-for="estado in estados" :value="estado.clave">
  272. {{ estado.nombre }} </option>
  273. </select>
  274. </div>
  275. <div class="form-group col-md-12" v-if="paisPaso1 == 'MEX'">
  276. <select class="form-control" id="municipio" name="municipio"
  277. v-model="municipio">
  278. <option disabled> Municipio - Ciudad </option>
  279. <option v-for="municipio in municipios" :value="municipio.clave">
  280. {{ municipio.nombre }} </option>
  281. </select>
  282. </div>
  283. <div class="form-group col-md-12" v-else>
  284. <input type="text" class="form-control" id="estado" name="estado"
  285. v-model="estado" placeholder="Estado">
  286. </div>
  287. <div class="form-group col-md-12" v-if="paisPaso1 == 'MEX'">
  288. <input type="text" class="form-control" id="claveIncorporacion"
  289. name="claveIncorporacion" v-model="claveIncorporacion"
  290. placeholder="Clave de incorporación">
  291. </div>
  292. <div class="form-group col-md-12" v-if="paisPaso1 == 'MEX'">
  293. <input type="text" class="form-control" id="sitioWeb" name="sitioWeb"
  294. v-model="sitioWeb" placeholder="Sitio Web">
  295. </div>
  296. <div class="form-group col-md-12">
  297. <select class="form-control" id="tipoEscuela" name="tipoEscuela"
  298. v-model="tipoEscuela">
  299. <option disabled> Tipo de escuela </option>
  300. <option value="Pública"> Pública </option>
  301. <option value="Privada"> Privada </option>
  302. </select>
  303. </div>
  304. <div class="form-group col-md-12">
  305. <select class="form-control" id="numeroAlumnos" name="numeroAlumnos"
  306. v-model="numeroAlumnos">
  307. <option disabled> Número de alumnos </option>
  308. <option value="0-49"> Menos de 50 </option>
  309. <option value="50-100"> De 50 a 100 alumnos </option>
  310. <option value="101-200"> De 101 a 200 alumnos </option>
  311. <option value="201-500"> 201 a 500 alumnos </option>
  312. <option value="501-1000"> Más de 500 alumnos </option>
  313. </select>
  314. </div>
  315. <div class="form-group col-md-12">
  316. <h1 class="titulo-formulario" style="font-size: 20px;"> Niveles Educativos
  317. </h1>
  318. </div>
  319. <div class="form-group col-md-7">
  320. <input type="checkbox" id="maternal" name="maternal" v-model="maternal">
  321. Maternal
  322. </div>
  323. <div class="form-group col-md-5">
  324. <input type="checkbox" id="preescolar" name="preescolar"
  325. v-model="preescolar"> Preescolar
  326. </div>
  327. <div class="form-group col-md-7">
  328. <input type="checkbox" id="primaria" name="primaria" v-model="primaria">
  329. Primaria
  330. </div>
  331. <div class="form-group col-md-5">
  332. <input type="checkbox" id="secundaria" name="secundaria"
  333. v-model="secundaria"> Secundaria
  334. </div>
  335. <div class="form-group col-md-7">
  336. <input type="checkbox" id="preparatoria" name="preparatoria"
  337. v-model="preparatoria"> Preparatoria / Bachillerato
  338. </div>
  339. <div class="form-group col-md-5">
  340. <input type="checkbox" id="licenciatura" name="licenciatura"
  341. v-model="licenciatura"> Licenciatura
  342. </div>
  343. <div class="form-group col-md-12">
  344. <input type="checkbox" id="posgrado" name="posgrado" v-model="posgrado">
  345. Posgrado
  346. </div>
  347. <div class="pb-3 col-md-12 text-center">
  348. <span class="text-danger font-wight">
  349. <b> {{ msgError }} </b>
  350. </span>
  351. </div>
  352. <div class="form-group col-md-12 text-center w-10" v-if="completo === true">
  353. <div class="spinner-grow text-primary" role="status">
  354. <span class="sr-only">Registrando...</span>
  355. </div>
  356. <div class="spinner-grow text-secondary" role="status">
  357. <span class="sr-only">Registrando...</span>
  358. </div>
  359. <div class="spinner-grow text-success" role="status">
  360. <span class="sr-only">Registrando...</span>
  361. </div>
  362. <div class="spinner-grow text-danger" role="status">
  363. <span class="sr-only">Registrando...</span>
  364. </div>
  365. <div class="spinner-grow text-warning" role="status">
  366. <span class="sr-only">Registrando...</span>
  367. </div>
  368. <div class="spinner-grow text-info" role="status">
  369. <span class="sr-only">Registrando...</span>
  370. </div>
  371. </div>
  372. <div class="form-group col-md-12">
  373. <button type="button" @click="validarFormulario()"
  374. class="btn boton-formulario"> REGISTRARSE </button>
  375. </div>
  376. </div>
  377. </form>
  378. </div>
  379. </div>
  380. `
  381. });
  382. Vue.component('modal', {
  383. template: '#modal-template'
  384. })
  385. var app = new Vue({
  386. el: '#app',
  387. data: {
  388. estados: [],
  389. municipiaos: []
  390. },
  391. mounted: function() {
  392. var obj = this;
  393. axios.post('php/mysql/data.php', {
  394. params: {
  395. tipo: 'Estados'
  396. }
  397. }).then(response => {
  398. }).catch(e => {
  399. console.log(e);
  400. });
  401. this.show();
  402. },
  403. methods: {
  404. show() {
  405. // $('#myModal').modal('show');
  406. }
  407. }
  408. });