index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <view class="binding">
  3. <!-- header -->
  4. <cu-custom bgColor="bg-gradual-blue" isBack><view slot="content">设备绑定</view></cu-custom>
  5. <!-- section -->
  6. <van-cell-group>
  7. <van-field label="姓名" :error-message="err.name" @change="onChange($event, 'name')" :value="value.name" required placeholder="请输入用户名" />
  8. <van-field label="电话" :error-message="err.tel" @change="onChange($event, 'tel')" :value="value.tel" required placeholder="请输入电话" />
  9. <van-field
  10. v-if="yan"
  11. :value="value.yan"
  12. :error-message="err.yan"
  13. @change="onChange($event, 'yan')"
  14. center
  15. clearable
  16. required
  17. label="短信验证码"
  18. placeholder="请输入短信验证码"
  19. use-button-slot
  20. >
  21. <van-button @click="sendfunc" :disabled="time" slot="button" size="small" type="primary">{{time ? time+"s" : "发送验证码"}}</van-button>
  22. </van-field>
  23. <van-field :error-message="err.car" @change="onChange($event, 'car')" label="车型" :value="value.car" required placeholder="请输入车型" />
  24. <van-field label="车牌号码" @change="onChange($event, 'code')" :value="value.code" :error-message="err.code" required placeholder="请输入车牌号码" />
  25. </van-cell-group>
  26. <button @click="onClick" style="height: 80rpx;" class="cu-btn margin bg-green block ">申请绑定</button>
  27. <!-- footer -->
  28. <!-- 功能工具 -->
  29. <van-dialog id="van-dialog" />
  30. </view>
  31. </template>
  32. <script>
  33. import Dialog from '@/wxcomponents/vant/dist/dialog/dialog';
  34. export default {
  35. data() {
  36. return {
  37. value: {
  38. name: '',
  39. tel: '',
  40. yan: '',
  41. car: '',
  42. code: ''
  43. },
  44. err: {
  45. name: '',
  46. tel: '',
  47. yan: '',
  48. car: '',
  49. code: ''
  50. },
  51. yan: true,
  52. timer:null,
  53. time:0
  54. }
  55. },
  56. onLoad() {},
  57. beforeDestroy() {
  58. clearInterval(this.timer);
  59. },
  60. methods: {
  61. // 请求验证码
  62. sendfunc(){
  63. this.time=60;
  64. clearInterval(this.timer)
  65. this.timer=setInterval(()=>{
  66. this.time= this.time-1;
  67. if(this.time<=0) clearInterval(this.timer);
  68. },1000)
  69. },
  70. // 双向绑定
  71. onChange(e,name){
  72. var value = JSON.parse(JSON.stringify(this.value));
  73. value[name]=e.detail;
  74. this.value=value;
  75. },
  76. // 验证
  77. yanfunc() {
  78. var value = JSON.parse(JSON.stringify(this.value));
  79. var err = JSON.parse(JSON.stringify(this.err));
  80. console.log(value);
  81. // 去空格 并且 清空错误集
  82. Object.keys(value).forEach(item => {
  83. value[item] = value[item].trim();
  84. err[item] = '';
  85. });
  86. // 判断
  87. if (!value.name) err.name = '姓名不能为空';
  88. var telreg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  89. if (!value.tel) {
  90. err.tel = '电话不能为空';
  91. } else {
  92. if (!telreg.test(value.tel)) err.tel = '电话格式不正确';
  93. }
  94. if (!value.yan && this.yan) err.yan = '验证码不能为空';
  95. if (!value.car) err.car = '车型不能为空';
  96. if (!value.code) err.code = '车牌号码不能为空';
  97. this.value = value;
  98. this.err = err;
  99. return Object.keys(err).some(item => err[item]);
  100. },
  101. // 提交
  102. onClick() {
  103. if (this.yanfunc()) {
  104. Dialog.alert({ message: '请检查所填数据!' }).then(() => {});
  105. return false;
  106. }
  107. }
  108. }
  109. };
  110. </script>
  111. <style lang="scss" scoped></style>