list.vue 1.6 KB
Newer Older
sin's avatar
sin committed
1
<template>
sin's avatar
sin committed
2
  <div>
sin's avatar
sin committed
3 4 5

    <headerNav title="我的地址"/>
    <van-address-list
sin's avatar
sin committed
6 7 8 9 10 11 12 13
      v-model="chosenAddressId"
      :class="isSelect?'':'hideselect'"
      :list="list"
      @add="onAdd"
      @edit="onEdit"
      @select="onSelect"
    />
  </div>
sin's avatar
sin committed
14 15 16 17
</template>

<script>

sin's avatar
sin committed
18
  import {GetAddressList} from "../../../api/user.js";
19 20
  import { AddressList } from 'vant';
  import eventBus from '../../eventBus';
21
  import orderStore from '../../../store/order'
sin's avatar
sin committed
22 23 24 25

  export default {
    components: {
      [AddressList.name]: AddressList,
sin's avatar
sin committed
26 27
    },
    data() {
sin's avatar
sin committed
28
      return {
sin's avatar
sin committed
29
        chosenAddressId: -1,
sin's avatar
sin committed
30
        isSelect: false,
sin's avatar
sin committed
31
        list: [],
sin's avatar
sin committed
32
      }
sin's avatar
sin committed
33 34 35
    },

    methods: {
sin's avatar
sin committed
36 37 38
      onAdd() {
        this.$router.push('/user/address/edit')
      },
sin's avatar
sin committed
39

sin's avatar
sin committed
40 41 42 43 44 45
      onEdit(item, index) {
        this.$router.push('/user/address/edit?id=' + item.id);
      },
      onSelect(item, index) {
        if (!this.isSelect) {
          return;
sin's avatar
sin committed
46
        }
47 48 49
        this.$store.commit('changeAddressData', {
          ...item
        });
sin's avatar
sin committed
50 51
        this.$router.go(-1);
      }
sin's avatar
sin committed
52
    },
sin's avatar
sin committed
53 54 55 56 57
    created: function () {
      this.chosenAddressId = this.$route.query.id;
      this.isSelect = this.$route.query.id > 0;
      GetAddressList().then(response => {
        this.list = response.map(item => {
sin's avatar
sin committed
58 59 60
          if (item.hasDefault == 2) {
            this.chosenAddressId = item.id;
          }
sin's avatar
sin committed
61 62 63 64 65 66 67 68

          // convert data
          return {
            ...item,
            tel: item.mobile,
          }
        });
      })
69 70
    },
    store: orderStore,
sin's avatar
sin committed
71
  }
sin's avatar
sin committed
72 73 74
</script>

<style lang="less">
sin's avatar
sin committed
75 76 77
  .hideselect {
    .van-radio__input {
      display: none;
sin's avatar
sin committed
78
    }
sin's avatar
sin committed
79
  }
sin's avatar
sin committed
80
</style>