mobile.html 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. {extend name="public/base"/}
  2. {block name="css"}
  3. {/block}
  4. {block name="body"}
  5. <van-nav-bar
  6. class="nav-theme"
  7. :fixed="true"
  8. :placeholder="true"
  9. left-text="返回"
  10. left-arrow
  11. @click-left="onBack"
  12. >
  13. <template #title>
  14. <span class="text-white">首页</span>
  15. </template>
  16. </van-nav-bar>
  17. <van-form @submit="onSubmit()">
  18. <van-cell-group>
  19. <van-field
  20. v-model="mobile"
  21. required
  22. label="电话"
  23. placeholder="请输入电话"
  24. :rules="[{ required: true, message: '请填写电话' }]"
  25. ></van-field>
  26. <van-field
  27. v-model="verify"
  28. required
  29. center
  30. clearable
  31. label="短信验证码"
  32. placeholder="请输入短信验证码"
  33. :rules="[{ required: true, message: '请填写短信验证码' }]"
  34. >
  35. <template #button>
  36. <van-button size="small" :disabled="second != 60" type="primary" @click="sendSms">{{second_text}}</van-button>
  37. </template>
  38. </van-field>
  39. </van-cell-group>
  40. <div style="margin: 16px;">
  41. <van-button block type="primary" native-type="submit">确定</van-button>
  42. </div>
  43. </van-form>
  44. {/block}
  45. {block name="script"}
  46. <script>
  47. function v_setup() {
  48. let base = {};
  49. base.onBack = () => {
  50. location.href = "{:url('my/index')}";
  51. };
  52. base.mobile = Vue.ref('');
  53. base.verify = Vue.ref('');
  54. //短信验证码
  55. base.is_send = false;
  56. base.second = Vue.ref(60);
  57. base.set = null;
  58. base.sendSms = () => {
  59. if (base.is_send) {
  60. return false;
  61. }
  62. if (base.mobile.value === '') {
  63. vant.showToast('请输入电话');
  64. return false;
  65. }
  66. base.is_send = true;
  67. postJson("{:url('login/sendSms')}", {mobile:base.mobile.value},({msg})=>{
  68. vant.showToast(msg);
  69. base.is_send = false;
  70. }).then(() => {
  71. base.set = setInterval(function(){
  72. base.second.value--;
  73. console.log(base.second.value);
  74. if (base.second.value === 0) {
  75. base.second.value = 60;
  76. base.is_send = false;
  77. clearInterval(base.set);
  78. }
  79. },1000);
  80. });
  81. };
  82. base.second_text = Vue.computed(()=>{
  83. if (base.second.value === 60) {
  84. return '发送验证码';
  85. } else {
  86. return `${base.second.value}秒`;
  87. }
  88. });
  89. base.onSubmit = () => {
  90. postJson('/my/mobilePost',{mobile:base.mobile.value,verify:base.verify.value}).then(() => {
  91. location.href = "{:url('my/index')}";
  92. });
  93. };
  94. return base;
  95. }
  96. </script>
  97. {/block}