list.vue 1.6 KB
<template>
  <div>

    <headerNav title="我的地址"/>
    <van-address-list
      v-model="chosenAddressId"
      :class="isSelect?'':'hideselect'"
      :list="list"
      @add="onAdd"
      @edit="onEdit"
      @select="onSelect"
    />
  </div>
</template>

<script>

  import {GetAddressList} from "../../../api/user.js";
  import { AddressList } from 'vant';
  import eventBus from '../../eventBus';
  import orderStore from '../../../store/order'

  export default {
    components: {
      [AddressList.name]: AddressList,
    },
    data() {
      return {
        chosenAddressId: -1,
        isSelect: false,
        list: [],
      }
    },

    methods: {
      onAdd() {
        this.$router.push('/user/address/edit')
      },

      onEdit(item, index) {
        this.$router.push('/user/address/edit?id=' + item.id);
      },
      onSelect(item, index) {
        if (!this.isSelect) {
          return;
        }
        this.$store.commit('changeAddressData', {
          ...item
        });
        this.$router.go(-1);
      }
    },
    created: function () {
      this.chosenAddressId = this.$route.query.id;
      this.isSelect = this.$route.query.id > 0;
      GetAddressList().then(response => {
        this.list = response.map(item => {
          if (item.hasDefault == 2) {
            this.chosenAddressId = item.id;
          }

          // convert data
          return {
            ...item,
            tel: item.mobile,
          }
        });
      })
    },
    store: orderStore,
  }
</script>

<style lang="less">
  .hideselect {
    .van-radio__input {
      display: none;
    }
  }
</style>