addrForm.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <template>
  2. <view class="pages">
  3. <view class="page-wrap">
  4. <view class="view-wrap">
  5. <u--form
  6. labelPosition="left"
  7. :model="model"
  8. :rules="rules"
  9. ref="uForm"
  10. labelWidth="80"
  11. >
  12. <u-form-item label="姓名" prop="name" borderBottom ref="name">
  13. <u--input v-model="model.name" placeholder="请输入收货人姓名" border="none"></u--input>
  14. </u-form-item>
  15. <u-form-item label="手机号码" prop="mobile" borderBottom ref="mobile">
  16. <u--input v-model="model.mobile" placeholder="请输入收货人手机号码" border="none"></u--input>
  17. </u-form-item>
  18. <u-form-item label="所在地区" prop="phone" borderBottom ref="phone">
  19. <view class="1" @tap="showRegionPicker">
  20. <u--input v-model="model.phone" placeholder="省市区县、乡镇等" border="none"></u--input>
  21. </view>
  22. </u-form-item>
  23. <u-form-item label="详细地址" prop="phone" borderBottom ref="phone">
  24. <u--textarea v-model="model.phone" placeholder="街道楼牌号等" ></u--textarea>
  25. </u-form-item>
  26. </u--form>
  27. </view>
  28. <view class="set-default view-wrap u-flex u-row-between">
  29. <view class="left">
  30. <view class="til">设置默认地址</view>
  31. <view class="tip">提醒:每次下单会默认推荐该地址</view>
  32. </view>
  33. <view class="right">
  34. <u-switch v-model="defaultValue" size="24" inactiveColor="#ddd" @change="defaultChange"></u-switch>
  35. </view>
  36. </view>
  37. <view class="full-btn" @click="submit">保存</view>
  38. </view>
  39. </view>
  40. </template>
  41. <script>
  42. export default {
  43. data() {
  44. return {
  45. defaultValue:false,
  46. model: {
  47. name:'',
  48. phone:''
  49. },
  50. rules:{
  51. 'name': {
  52. type: 'string',
  53. required: true,
  54. message: '请填写姓名',
  55. trigger: ['blur', 'change']
  56. },
  57. mobile: [
  58. {
  59. required: true,
  60. message: '请输入手机号',
  61. trigger: ['change','blur'],
  62. },
  63. {
  64. // 自定义验证函数,见上说明
  65. validator: (rule, value, callback) => {
  66. // 上面有说,返回true表示校验通过,返回false表示不通过
  67. // uni.$u.test.mobile()就是返回true或者false的
  68. return uni.$u.test.mobile(value);
  69. },
  70. message: '手机号码不正确',
  71. // 触发器可以同时用blur和change
  72. trigger: ['change','blur'],
  73. }
  74. ]
  75. }
  76. }
  77. },
  78. onShow() {
  79. },
  80. onLoad() {
  81. },
  82. onReady() {
  83. //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
  84. this.$refs.uForm.setRules(this.rules)
  85. },
  86. methods: {
  87. closePicker(){
  88. this.show = false
  89. },
  90. defaultChange(e){
  91. console.log('defaultChange',e)
  92. },
  93. showRegionPicker() {
  94. // this.show = true;
  95. uni.$u.route('/center/map');
  96. },
  97. submit() {
  98. this.$refs.uForm.validate().then(res => {
  99. uni.$u.toast('校验通过')
  100. }).catch(errors => {
  101. uni.$u.toast('校验失败')
  102. })
  103. }
  104. }
  105. }
  106. </script>
  107. <style>
  108. page{
  109. background-color: #F5F5F5;
  110. }
  111. </style>
  112. <style lang="scss" scoped>
  113. .set-default{
  114. margin-top: 20rpx;
  115. .til{
  116. font-size: 30rpx;
  117. font-weight: 600;
  118. margin-bottom: 8rpx;
  119. }
  120. .tip{
  121. font-size: 24rpx;
  122. color: #999;
  123. }
  124. }
  125. .full-btn{
  126. margin-top: 44rpx;
  127. }
  128. </style>