百富门答题小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

205 lines
4.5 KiB

7 months ago
  1. <template>
  2. <view class="redact-address">
  3. <view class="redact-address-title">{{title}}</view>
  4. <uv-form label-width="210rpx"
  5. :model="addressDetail"
  6. ref="form" :rules="rules">
  7. <!-- <uv-field v-model="addressDetail.name" name="联系人" label="联系人" placeholder="请输入联系人姓名"
  8. :rules="[{ required: true, message: '请填写联系人' }]" />
  9. <uv-field v-model="addressDetail.phone" name="手机号" label="手机号" placeholder="请输入手机号"
  10. :rules="[{ required: true, message: '请填写手机号' }]" />
  11. <uv-field @click="$emit('clickAddressIcon')" v-model="addressDetail.address" name="所在地区" label="所在地区" placeholder="选择省市区街道"
  12. :rules="[{ required: true, message: '请选择省市区街道' }]">
  13. <template #right-icon>
  14. <image @click.stop="$emit('clickAddressIcon')" src="../static/address/selectIcon.png" mode="aspectFit"></image>定位
  15. </template>
  16. </uv-field>
  17. <uv-field v-model="addressDetail.addressDetail" name="详细地址" label="详细地址" placeholder="小区楼栋、门牌号、村等"
  18. :rules="[{ required: true, message: '请填写详细地址' }]" /> -->
  19. <uv-form-item label="联系人"
  20. prop="name"
  21. >
  22. <uv-input v-model="addressDetail.name"
  23. placeholder="请输入联系人姓名"
  24. border="none">
  25. </uv-input>
  26. </uv-form-item>
  27. <uv-form-item label="手机号"
  28. prop="phone"
  29. >
  30. <uv-input v-model="addressDetail.phone"
  31. placeholder="请输入手机号"
  32. border="none">
  33. </uv-input>
  34. </uv-form-item>
  35. <uv-form-item label="所在地区"
  36. prop="address"
  37. >
  38. <uv-input
  39. v-model="addressDetail.address"
  40. placeholder="请选择所在地区"
  41. border="none">
  42. </uv-input>
  43. <template #right>
  44. <view style="padding-right: 40rpx;color: #FBAB32;"
  45. @click.stop="$emit('clickAddressIcon')">
  46. <image
  47. src="../../static/address/selectIcon.png"
  48. mode="aspectFit"></image>定位
  49. </view>
  50. </template>
  51. </uv-form-item>
  52. <uv-form-item label="详细地址"
  53. prop="addressDetail"
  54. >
  55. <uv-input v-model="addressDetail.addressDetail"
  56. placeholder="请输入详细地址"
  57. border="none">
  58. </uv-input>
  59. </uv-form-item>
  60. </uv-form>
  61. <view @click="onSubmit" class="save">{{ addressDetail.id ? '修改地址' : '新增地址'}}</view>
  62. </view>
  63. </template>
  64. <script>
  65. export default {
  66. data() {
  67. return {
  68. rules: {
  69. 'name': {
  70. type: 'string',
  71. required: true,
  72. message: '请填写姓名',
  73. trigger: ['blur', 'change']
  74. },
  75. 'addressDetail': {
  76. type: 'string',
  77. max: 50,
  78. required: true,
  79. message: '请输入详细地址',
  80. trigger: ['blur', 'change']
  81. },
  82. },
  83. }
  84. },
  85. props : {
  86. addressDetail : {
  87. type : Object,
  88. default : function(){ return {} }
  89. },
  90. title : {
  91. type : String,
  92. default : '新增地址'
  93. }
  94. },
  95. methods: {
  96. //新增和修改地址
  97. onSubmit() {
  98. this.$refs.form.validate().then(res => {
  99. console.log(res);
  100. uni.showToast({
  101. icon: 'success',
  102. title: '校验通过'
  103. })
  104. }).catch(errors => {
  105. uni.showToast({
  106. icon: 'error',
  107. title: '校验失败'
  108. })
  109. })
  110. // this.$emit('saveOrUpdate', this.addressDetail)
  111. }
  112. }
  113. }
  114. </script>
  115. <style lang="scss" scoped>
  116. .redact-address {
  117. box-sizing: border-box;
  118. .redact-address-title {
  119. height: 80rpx;
  120. line-height: 80rpx;
  121. font-size: 30rpx;
  122. color: #333333;
  123. font-weight: 600;
  124. }
  125. .save {
  126. display: flex;
  127. align-items: center;
  128. justify-content: center;
  129. width: 90%;
  130. height: 80rpx;
  131. border-radius: 40rpx;
  132. color: white;
  133. font-size: 28rpx;
  134. margin: 0rpx auto;
  135. background: $uni-color;
  136. margin-top: 150rpx;
  137. }
  138. image {
  139. width: 25rpx;
  140. height: 25rpx;
  141. }
  142. //修改组件默认样式
  143. .uv-form {
  144. padding: 30rpx 0rpx;
  145. }
  146. &::v-deep .uv-cell {
  147. padding: 0rpx 0rpx;
  148. font-size: 26rpx;
  149. &::after {
  150. border: none !important;
  151. }
  152. .uv-field__label {
  153. display: flex;
  154. align-items: center;
  155. height: 80rpx;
  156. }
  157. .uv-field__control,
  158. .uv-field__right-icon {
  159. height: 80rpx;
  160. font-size: 26rpx;
  161. border-bottom: 2rpx solid #cbc8c8;
  162. }
  163. .uv-field__right-icon {
  164. display: flex;
  165. align-items: center;
  166. height: 78rpx;
  167. color: #5FCC9F;
  168. }
  169. .uv-cell__value {
  170. height: 120rpx;
  171. }
  172. }
  173. &::v-deep .uv-field__error-message {
  174. color: #5AC796;
  175. font-size: 20rpx;
  176. margin-top: 10rpx;
  177. }
  178. }
  179. </style>