535 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			535 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						||
  <view class="main">
 | 
						||
    <view class="contents">
 | 
						||
      <!-- <view class="top_text">
 | 
						||
        {{'注:修改地址后,若涉及运费问题,系统将自动扣除请在原订单基础上填写新的收货人信息'}}
 | 
						||
      </view> -->
 | 
						||
      <u-form :model="addressForm" labelWidth="auto" ref="uForm">
 | 
						||
        <view class="view-class">
 | 
						||
          <u-form-item
 | 
						||
            :label="'订单编号'"
 | 
						||
            label-width="150rpx"
 | 
						||
            prop="orderCode"
 | 
						||
          >
 | 
						||
            <u--input
 | 
						||
              v-model="addressForm.orderCode"
 | 
						||
              disabled
 | 
						||
              disabledColor="#ffffff"
 | 
						||
              placeholder="请选择"
 | 
						||
              border="none"
 | 
						||
            ></u--input>
 | 
						||
          </u-form-item>
 | 
						||
        </view>
 | 
						||
        <view class="view-class">
 | 
						||
          <u-form-item :label="'收货人'" label-width="150rpx" prop="newRecName">
 | 
						||
            <u-input
 | 
						||
              v-model="addressForm.newRecName"
 | 
						||
              placeholder-class="place-class"
 | 
						||
              class="border-color"
 | 
						||
              :placeholder="'请输入'"
 | 
						||
            />
 | 
						||
          </u-form-item>
 | 
						||
        </view>
 | 
						||
        <view class="view-class">
 | 
						||
          <u-form-item
 | 
						||
            :label="'联系方式'"
 | 
						||
            label-width="150rpx"
 | 
						||
            prop="newRecPhone"
 | 
						||
          >
 | 
						||
            <u-input
 | 
						||
              v-model="addressForm.newRecPhone"
 | 
						||
              placeholder-class="place-class"
 | 
						||
              :maxlength="userInfo.pkSettleCountry == 1 ? 11 : 20"
 | 
						||
              class="border-color"
 | 
						||
              :placeholder="'请输入'"
 | 
						||
            />
 | 
						||
          </u-form-item>
 | 
						||
        </view>
 | 
						||
        <view class="view-class" @click="getDiqu">
 | 
						||
          <u-form-item :label="'收货地址'" label-width="150rpx" prop="address">
 | 
						||
            <view
 | 
						||
              v-if="address"
 | 
						||
              style="font-size: 28rpx; color: #333; margin-left: 20rpx"
 | 
						||
              >{{ address }}</view
 | 
						||
            >
 | 
						||
            <view
 | 
						||
              style="
 | 
						||
                margin-left: 20rpx;
 | 
						||
                font-size: 28rpx;
 | 
						||
                color: rgb(192, 196, 204);
 | 
						||
              "
 | 
						||
              v-else
 | 
						||
              >请选择收货地址
 | 
						||
            </view>
 | 
						||
          </u-form-item>
 | 
						||
          <view class="drop">
 | 
						||
            <image src="../../../static/images/drop.png"></image>
 | 
						||
          </view>
 | 
						||
        </view>
 | 
						||
        <view class="view-class">
 | 
						||
          <u-form-item
 | 
						||
            :label="'详细地址'"
 | 
						||
            class="label-style"
 | 
						||
            label-width="150rpx"
 | 
						||
            prop="newRecAddress"
 | 
						||
          >
 | 
						||
            <u-textarea
 | 
						||
              v-model="addressForm.newRecAddress"
 | 
						||
              placeholder-class="place-class"
 | 
						||
              maxlength="200"
 | 
						||
              class="border-color"
 | 
						||
              :placeholder="'请输入详细地址'"
 | 
						||
            />
 | 
						||
          </u-form-item>
 | 
						||
          <view class="lis_address" v-if="addressList.length > 0">
 | 
						||
            <view class="lis_title">{{ '历史地址' }}</view>
 | 
						||
            <view class="">
 | 
						||
              <u-radio-group
 | 
						||
                @change="groupChange"
 | 
						||
                placement="column"
 | 
						||
                v-model="choiceValue"
 | 
						||
                iconPlacement="left"
 | 
						||
              >
 | 
						||
                <div
 | 
						||
                  v-for="(item, index) in addressList"
 | 
						||
                  :key="index"
 | 
						||
                  class="custom-radio-label"
 | 
						||
                >
 | 
						||
                  <u-radio :name="item.pkId" activeColor="#005BAC"></u-radio>
 | 
						||
                  <div class="custom-label-content">
 | 
						||
                    <view class="label_name">{{ item.recName }}</view>
 | 
						||
                    <view class="label_phone">{{ item.recPhone }}</view>
 | 
						||
                    <view class="label_address">{{ item.recArea }}</view>
 | 
						||
                  </div>
 | 
						||
                </div>
 | 
						||
              </u-radio-group>
 | 
						||
            </view>
 | 
						||
          </view>
 | 
						||
        </view>
 | 
						||
        <view class="view-class">
 | 
						||
          <u-form-item
 | 
						||
            :label="'邮费扣除'"
 | 
						||
            label-width="150rpx"
 | 
						||
            prop="newPostage"
 | 
						||
          >
 | 
						||
            <u--input
 | 
						||
              v-model="addressForm.newPostage"
 | 
						||
              disabled
 | 
						||
              disabledColor="#ffffff"
 | 
						||
              placeholder=""
 | 
						||
              border="none"
 | 
						||
            ></u--input>
 | 
						||
          </u-form-item>
 | 
						||
        </view>
 | 
						||
        <view class="view-class">
 | 
						||
          <u-form-item :label="'备注'" label-width="150rpx" prop="selfRemark">
 | 
						||
            <u-input
 | 
						||
              v-model="addressForm.selfRemark"
 | 
						||
              placeholder-class="place-class"
 | 
						||
              class="border-color"
 | 
						||
              :placeholder="'请输入'"
 | 
						||
            />
 | 
						||
          </u-form-item>
 | 
						||
        </view>
 | 
						||
      </u-form>
 | 
						||
    </view>
 | 
						||
    <v-address
 | 
						||
      ref="address"
 | 
						||
      @getAddressData="AddressData"
 | 
						||
      :defaultCode="defaultCode"
 | 
						||
      @addressData="addressData"
 | 
						||
    ></v-address>
 | 
						||
    <u-button type="success" shape="circle" class="btn" @click="submit">{{
 | 
						||
      '确定'
 | 
						||
    }}</u-button>
 | 
						||
  </view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
import * as api from '@/config/login.js'
 | 
						||
import * as sel from '@/config/selfService.js'
 | 
						||
import { setToken } from '@/config/auth.js'
 | 
						||
import address from '@/components/address.vue'
 | 
						||
export default {
 | 
						||
  data() {
 | 
						||
    return {
 | 
						||
      userInfo: '',
 | 
						||
      check: false,
 | 
						||
      address: '',
 | 
						||
      defaultCode: [],
 | 
						||
      urls: '/member/api/maker-space/update-file',
 | 
						||
      addressForm: {
 | 
						||
        orderCode: '',
 | 
						||
        newRecName: '',
 | 
						||
        newRecPhone: '',
 | 
						||
        newRecProvince: '',
 | 
						||
        newRecCity: '',
 | 
						||
        newRecCounty: '',
 | 
						||
        newRecAddress: '',
 | 
						||
        newPostage: '',
 | 
						||
        selfRemark: '',
 | 
						||
      },
 | 
						||
      choiceValue: '',
 | 
						||
      successShow: false,
 | 
						||
      addressList: [],
 | 
						||
      rules: {
 | 
						||
        newRecName: [
 | 
						||
          {
 | 
						||
            // 必填项
 | 
						||
            required: true,
 | 
						||
            // 提示内容(会出现在u-form-item内的底部)
 | 
						||
            message: '请输入',
 | 
						||
          },
 | 
						||
        ],
 | 
						||
        newRecAddress: [
 | 
						||
          {
 | 
						||
            // 必填项
 | 
						||
            required: true,
 | 
						||
            // 提示内容(会出现在u-form-item内的底部)
 | 
						||
            message: '请输入',
 | 
						||
          },
 | 
						||
        ],
 | 
						||
        newRecProvince: [
 | 
						||
          {
 | 
						||
            // 必填项
 | 
						||
            required: true,
 | 
						||
            // 提示内容(会出现在u-form-item内的底部)
 | 
						||
            message: '请输入',
 | 
						||
 | 
						||
            trigger: ['change'],
 | 
						||
          },
 | 
						||
        ],
 | 
						||
        newRecPhone: [
 | 
						||
          {
 | 
						||
            required: true,
 | 
						||
            message: '请输入手机号',
 | 
						||
            trigger: ['blur'],
 | 
						||
          },
 | 
						||
          {
 | 
						||
            validator: (rule, value, callback) => {
 | 
						||
              return this.$u.test.mobile(value)
 | 
						||
            },
 | 
						||
            message: '手机号格式不正确',
 | 
						||
            trigger: ['blur'],
 | 
						||
          },
 | 
						||
        ],
 | 
						||
      },
 | 
						||
    }
 | 
						||
  },
 | 
						||
  onLoad(options) {
 | 
						||
    let query = JSON.parse(options.obj)
 | 
						||
    // console.log(12, JSON.parse(query)) // 输出携带的参数对象
 | 
						||
    this.addressForm = query
 | 
						||
 | 
						||
    if (query.recCountyVal) {
 | 
						||
      this.address =
 | 
						||
        query.recProvinceVal + query.recCityVal + query.recCountyVal
 | 
						||
    } else {
 | 
						||
      this.address = query.recProvinceVal + query.recCityVal
 | 
						||
    }
 | 
						||
    this.addressForm.newRecName = query.recName
 | 
						||
    this.$set(this.addressForm, 'newRecPhone', query.recPhone)
 | 
						||
    this.addressForm.newRecAddress = query.recAddress
 | 
						||
    this.addressForm.newRecProvince = query.recProvince
 | 
						||
    this.addressForm.newRecCity = query.recCity
 | 
						||
    this.addressForm.newRecCounty = query.recCounty
 | 
						||
    this.addressForm.newPostage = query.postage
 | 
						||
    this.addressForm.specialArea = query.specialArea
 | 
						||
    this.getAddressList()
 | 
						||
    this.userInfo = uni.getStorageSync('User')
 | 
						||
  },
 | 
						||
  onReady() {
 | 
						||
    this.$refs.uForm.setRules(this.rules)
 | 
						||
  },
 | 
						||
  components: {
 | 
						||
    'v-address': address,
 | 
						||
  },
 | 
						||
  methods: {
 | 
						||
    groupChange(value) {
 | 
						||
      this.addressList.forEach(ele => {
 | 
						||
        if (value == ele.pkId) {
 | 
						||
          this.$set(this.addressForm, 'newRecName', ele.recName)
 | 
						||
          this.$set(this.addressForm, 'newRecPhone', ele.recPhone)
 | 
						||
          this.$set(this.addressForm, 'newRecAddress', ele.recAddress)
 | 
						||
          this.$set(this.addressForm, 'newRecProvince', ele.recProvince)
 | 
						||
          this.$set(this.addressForm, 'newRecCity', ele.recCity)
 | 
						||
          this.$set(this.addressForm, 'newRecCounty', ele.recCounty)
 | 
						||
          if (ele.recCountyVal) {
 | 
						||
            this.address =
 | 
						||
              ele.recProvinceVal + ele.recCityVal + ele.recCountyVal
 | 
						||
          } else {
 | 
						||
            this.address = ele.recProvinceVal + ele.recCityVal
 | 
						||
          }
 | 
						||
          this.getPostAge()
 | 
						||
        }
 | 
						||
      })
 | 
						||
    },
 | 
						||
    //邮费
 | 
						||
    getPostAge() {
 | 
						||
      let postageData = {
 | 
						||
        recProvince: this.addressForm.newRecProvince,
 | 
						||
        recCity: this.addressForm.newRecCity,
 | 
						||
        orderCode: this.addressForm.orderCode,
 | 
						||
        specialArea: this.addressForm.specialArea,
 | 
						||
        deliveryWay: this.addressForm.deliveryWay,
 | 
						||
        tranType: this.addressForm.tranType,
 | 
						||
        orderItemsParams: this.addressForm.orderItemsParams,
 | 
						||
      }
 | 
						||
      sel.queryAdressPostage(postageData).then(res => {
 | 
						||
        this.$set(this.addressForm, 'newPostage', res.data.postage)
 | 
						||
        this.$forceUpdate()
 | 
						||
      })
 | 
						||
    },
 | 
						||
    getAddressList() {
 | 
						||
      sel.addressList({}).then(res => {
 | 
						||
        this.addressList = res.data
 | 
						||
      })
 | 
						||
    },
 | 
						||
    AddressData(name) {
 | 
						||
      this.address = name
 | 
						||
    },
 | 
						||
    submit() {
 | 
						||
      this.$refs.uForm.validate().then(res => {
 | 
						||
        sel.saveSelfAddress(this.addressForm).then(res => {
 | 
						||
          if (res.code == '200') {
 | 
						||
            uni.showToast({
 | 
						||
              title: '修改成功',
 | 
						||
              icon: 'none',
 | 
						||
              success() {
 | 
						||
                setTimeout(() => {
 | 
						||
                  uni.navigateBack()
 | 
						||
                }, 600)
 | 
						||
              },
 | 
						||
            })
 | 
						||
 | 
						||
            // this.successShow = true
 | 
						||
          }
 | 
						||
        })
 | 
						||
      })
 | 
						||
    },
 | 
						||
    sureBtn() {
 | 
						||
      uni.navigateBack()
 | 
						||
    },
 | 
						||
    getDiqu() {
 | 
						||
      this.$refs.address.setShow()
 | 
						||
    },
 | 
						||
    addressData(diqu, obj) {
 | 
						||
      this.address = diqu
 | 
						||
      this.addressForm.newRecProvince = obj.province
 | 
						||
      this.addressForm.newRecCity = obj.city
 | 
						||
      this.addressForm.newRecCounty = obj.county
 | 
						||
      this.getPostAge()
 | 
						||
      this.$forceUpdate()
 | 
						||
    },
 | 
						||
    getAddressData(e) {
 | 
						||
      console.error(e)
 | 
						||
    },
 | 
						||
    // getAddress(id) {
 | 
						||
    // 	api.getAddress(id).then(res => {
 | 
						||
    // 		if (res) {
 | 
						||
    // 			this.addressForm = {
 | 
						||
    // 				recName: res.data.recName,
 | 
						||
    // 				recPhone: res.data.recPhone,
 | 
						||
    // 				recProvince: res.data.recProvince,
 | 
						||
    // 				recCity: res.data.recCity,
 | 
						||
    // 				recCounty: res.data.recCounty || '',
 | 
						||
    // 				pkId: res.data.pkId,
 | 
						||
    // 				recAddress: res.data.recAddress,
 | 
						||
    // 			}
 | 
						||
    // 			this.defaultCode = [
 | 
						||
    // 				res.data.recProvince,
 | 
						||
    // 				res.data.recCity,
 | 
						||
    // 				res.data.recCounty || '',
 | 
						||
    // 			]
 | 
						||
    // 		}
 | 
						||
    // 	}).catch(error => {
 | 
						||
    // 		reject(error)
 | 
						||
    // 	})
 | 
						||
    // },
 | 
						||
  },
 | 
						||
}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss" scoped>
 | 
						||
.custom-radio-label {
 | 
						||
  display: flex;
 | 
						||
  margin-top: 30rpx;
 | 
						||
}
 | 
						||
 | 
						||
.custom-label-content {
 | 
						||
  margin-left: 20rpx;
 | 
						||
 | 
						||
  .label_name {
 | 
						||
    font-size: 28rpx;
 | 
						||
    font-family: Source Han Sans CN;
 | 
						||
    font-weight: bold;
 | 
						||
    color: #333333;
 | 
						||
  }
 | 
						||
 | 
						||
  .label_phone {
 | 
						||
    font-size: 28rpx;
 | 
						||
    font-family: Source Han Sans CN;
 | 
						||
    font-weight: 500;
 | 
						||
    color: #333333;
 | 
						||
  }
 | 
						||
 | 
						||
  .label_address {
 | 
						||
    font-size: 24rpx;
 | 
						||
    font-family: Source Han Sans CN;
 | 
						||
    font-weight: 400;
 | 
						||
    color: #999999;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
:v-deep .u-form-item__body__right__message {
 | 
						||
  margin-left: 215rpx !important;
 | 
						||
  padding-bottom: 20rpx;
 | 
						||
}
 | 
						||
 | 
						||
.drop {
 | 
						||
  image {
 | 
						||
    width: 40rpx;
 | 
						||
    height: 40rpx;
 | 
						||
    position: absolute;
 | 
						||
    right: 0;
 | 
						||
    top: 30rpx;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.check {
 | 
						||
  position: relative;
 | 
						||
 | 
						||
  view {
 | 
						||
    width: 36rpx;
 | 
						||
    height: 36rpx;
 | 
						||
    border: 1rpx solid #dddddd;
 | 
						||
    border-radius: 50%;
 | 
						||
    margin-top: 25rpx;
 | 
						||
  }
 | 
						||
 | 
						||
  image {
 | 
						||
    width: 40rpx;
 | 
						||
    height: 40rpx;
 | 
						||
    position: absolute;
 | 
						||
    right: 0rpx;
 | 
						||
    top: 25rpx;
 | 
						||
    // margin-top: 20rpx;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.lis_address {
 | 
						||
  background: rgba(231, 20, 26, 0.08);
 | 
						||
  border-radius: 15rpx;
 | 
						||
  padding: 20rpx 26rpx;
 | 
						||
 | 
						||
  .lis_title {
 | 
						||
    font-size: 28rpx;
 | 
						||
    font-family: Source Han Sans CN;
 | 
						||
    font-weight: 400;
 | 
						||
    color: #005bac;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.label-style {
 | 
						||
  display: block !important;
 | 
						||
}
 | 
						||
 | 
						||
:v-deep .label-style .u-form-item__body__left {
 | 
						||
  display: block !important;
 | 
						||
  margin-top: 20rpx;
 | 
						||
}
 | 
						||
 | 
						||
.uni-textarea {
 | 
						||
  height: 100rpx;
 | 
						||
}
 | 
						||
 | 
						||
.view-class {
 | 
						||
  border-bottom: 1rpx solid #eee;
 | 
						||
  margin: 0 30rpx;
 | 
						||
  position: relative;
 | 
						||
}
 | 
						||
 | 
						||
.border-color {
 | 
						||
  border: none;
 | 
						||
}
 | 
						||
 | 
						||
page {
 | 
						||
  background-color: #f2f2f2;
 | 
						||
}
 | 
						||
 | 
						||
.contents {
 | 
						||
  background-color: #fff;
 | 
						||
 | 
						||
  .top_text {
 | 
						||
    padding: 30rpx 40rpx;
 | 
						||
    font-size: 26rpx;
 | 
						||
    font-family: Source Han Sans CN;
 | 
						||
    font-weight: 400;
 | 
						||
    color: #666666;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.btn {
 | 
						||
  background-color: #005bac;
 | 
						||
  border: none;
 | 
						||
  height: 92rpx;
 | 
						||
  line-height: 92rpx;
 | 
						||
  font-size: 30rpx;
 | 
						||
  margin: 40rpx auto;
 | 
						||
  width: 690rpx;
 | 
						||
}
 | 
						||
 | 
						||
.successPopup {
 | 
						||
  width: 560rpx;
 | 
						||
  background: #ffffff;
 | 
						||
  border-radius: 20rpx;
 | 
						||
  padding: 26rpx 60rpx;
 | 
						||
 | 
						||
  .poupTop {
 | 
						||
    display: flex;
 | 
						||
    align-items: center;
 | 
						||
 | 
						||
    .theiconbox {
 | 
						||
      background-color: #029b00;
 | 
						||
      border-radius: 50%;
 | 
						||
      display: flex;
 | 
						||
      align-content: center;
 | 
						||
      justify-content: center;
 | 
						||
    }
 | 
						||
 | 
						||
    .theicontitle {
 | 
						||
      font-size: 30rpx;
 | 
						||
      font-family: Source Han Sans CN;
 | 
						||
      font-weight: bold;
 | 
						||
      margin-left: 13rpx;
 | 
						||
      color: #333333;
 | 
						||
    }
 | 
						||
  }
 | 
						||
 | 
						||
  .poupContent {
 | 
						||
    margin-top: 50rpx;
 | 
						||
    font-size: 24rpx;
 | 
						||
    font-family: Source Han Sans CN;
 | 
						||
    font-weight: 400;
 | 
						||
    line-height: 42rpx;
 | 
						||
    color: #666666;
 | 
						||
  }
 | 
						||
 | 
						||
  .poupBtn {
 | 
						||
    background: #005bac;
 | 
						||
    border-radius: 39rpx;
 | 
						||
    padding: 26rpx 0;
 | 
						||
    display: flex;
 | 
						||
    align-items: center;
 | 
						||
    justify-content: center;
 | 
						||
    color: #ffffff;
 | 
						||
    margin-top: 70rpx;
 | 
						||
    margin-bottom: 40rpx;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
::v-deep .thePopup .u-popup__content {
 | 
						||
  background-color: rgba(0, 0, 0, 0);
 | 
						||
}
 | 
						||
</style>
 |