123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <template>
- <view class="container">
- <view class="address-box">
- <u--form labelPosition="left" :model="formData" :rules="rules" ref="form">
- <u-form-item label="收件人名称" prop="name" labelWidth="90" borderBottom ref="item-name">
- <u-input type="text" maxlength="11" v-model="formData.name" clearable placeholder="请填写收件人名称" border="none"></u-input>
- </u-form-item>
- <u-form-item label="手机号" prop="mobile" labelWidth="90" borderBottom ref="item-mobile">
- <u-input type="number" maxlength="11" v-model="formData.mobile" clearable placeholder="请填写手机号" border="none"></u-input>
- </u-form-item>
- <u-form-item label="省市地区" prop="areaText" labelWidth="90" borderBottom @click=" regionVisible = true; hideKeyboard()" ref="item-areaText">
- <u--input v-model="formData.areaText" disabled disabledColor="#ffffff" placeholder="请选择省市地区" border="none"></u--input>
- <u-icon slot="right" name="arrow-right"></u-icon>
- <w-picker :visible.sync="regionVisible" mode="region" :value="defaultRegion" default-type="value" :hide-area="false" @confirm="onConfirm($event, 'region')" @cancel="onCancel" ref="region"></w-picker>
- </u-form-item>
- <u-form-item label="详细地址" prop="detail" labelWidth="90" borderBottom ref="item-detail">
- <u--textarea placeholder="请输入街道门牌号不低于6个字" v-model="formData.detail" count></u--textarea>
- </u-form-item>
- <u-form-item label="默认地址" prop="type" labelWidth="90" borderBottom ref="item-type">
- <u-radio-group v-model="formData.type">
- <u-radio :customStyle="{ marginRight: '16px' }" v-for="(item, index) in typeList" :key="index" :label="item.name" :name="item.value"></u-radio>
- </u-radio-group>
- </u-form-item>
- <view class="btn-group">
- <u-button type="primary" text="保存地址" customStyle="margin-top: 50px" @click="handleSubmit"></u-button>
- </view>
- </u--form>
- </view>
- </view>
- </template>
- <script>
- import { createAddress } from '../../api/address'
- export default {
- data() {
- return {
- regionVisible: false,
- defaultRegion: ['110000', '110100', '110101'],
- typeList: [
- {
- name: '是',
- value: 1
- },
- {
- name: '否',
- value: 2
- }
- ],
- formData: {
- name: '',
- mobile: '',
- areaText: '',
- areaCode: '',
- detail: '',
- detailAddress: '',
- type: 1
- },
- rules: {
- name: [
- {
- type: 'string',
- min: 2,
- max: 12,
- required: true,
- message: '请填写收件人名称',
- trigger: ['blur', 'change']
- },
- {
- message: '收件人名称不能为空',
- // 触发器可以同时用blur和change
- trigger: ['change', 'blur']
- }
- ],
- mobile: [
- {
- type: 'integer',
- required: true,
- message: '请填写手机号',
- trigger: ['blur', 'change']
- },
- {
- // 自定义验证函数,见上说明
- validator: (rule, value, callback) => {
- // 上面有说,返回true表示校验通过,返回false表示不通过
- // uni.$u.test.mobile()就是返回true或者false的
- return uni.$u.test.mobile(value)
- },
- message: '手机号码不正确',
- // 触发器可以同时用blur和change
- trigger: ['change', 'blur']
- }
- ],
- areaText: {
- type: 'string',
- required: true,
- message: '请选择省市地区',
- trigger: ['blur', 'change']
- },
- detailAddress: {
- type: 'string',
- min: 6,
- max: 30,
- required: true,
- message: '请填写详细地址',
- trigger: ['blur', 'change']
- }
- }
- }
- },
- onLoad() {},
- methods: {
- onConfirm(res) {
- this.formData.areaText = res.result
- this.formData.areaCode = res.value[2]
- },
- onCancel() {},
- hideKeyboard() {
- uni.hideKeyboard()
- },
- handleSubmit() {
- this.$refs.form.validate().then(res => {
- this.formData.detailAddress = this.formData.areaText + this.formData.detail
- console.log(this.formData)
- createAddress(this.formData).then(res => {
- uni.$u.toast('地址已保存')
- setTimeout(() => {
- uni.navigateBack()
- }, 300)
- })
- })
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .address-box {
- width: 690rpx;
- margin: 0 auto;
- padding-top: 30rpx;
- }
- </style>
|