AddressWindow.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <div>
  3. <div class="address-window" :class="value === true ? 'on' : ''">
  4. <div class="title">
  5. 选择地址<span class="iconfont icon-guanbi" @click="closeAddress"></span>
  6. </div>
  7. <div class="list" v-if="addressList.length">
  8. <div
  9. class="item acea-row row-between-wrapper"
  10. :class="item.id === checked ? 'font-color-red' : ''"
  11. v-for="(item, index) in addressList"
  12. @click="tapAddress(index)"
  13. :key="index"
  14. >
  15. <span
  16. class="iconfont icon-ditu"
  17. :class="item.id === checked ? 'font-color-red' : ''"
  18. ></span>
  19. <div class="addressTxt">
  20. <div
  21. class="name"
  22. :class="item.id === checked ? 'font-color-red' : ''"
  23. >
  24. {{ item.real_name }}<span class="phone">{{ item.phone }}</span>
  25. </div>
  26. <div class="line1">
  27. {{ item.province }}{{ item.city }}{{ item.district
  28. }}{{ item.detail }}
  29. </div>
  30. </div>
  31. <span
  32. class="iconfont icon-complete"
  33. :class="item.id === checked ? 'font-color-red' : ''"
  34. ></span>
  35. </div>
  36. </div>
  37. <div class="pictrue" v-if="addressList.length < 1">
  38. <img src="@assets/images/noAddress.png" class="image" />
  39. </div>
  40. <div class="addressBnt bg-color-red" @click="goAddressPages">
  41. 新加地址
  42. </div>
  43. </div>
  44. <div
  45. class="mask"
  46. @touchmove.prevent
  47. :hidden="value === false"
  48. @click="closeAddress"
  49. ></div>
  50. </div>
  51. </template>
  52. <script>
  53. import { getAddressList } from "../api/user";
  54. export default {
  55. name: "AddressWindow",
  56. props: {
  57. value: Boolean,
  58. checked: Number
  59. },
  60. data: function() {
  61. return {
  62. addressList: [],
  63. current: 0,
  64. cartId: 0,
  65. pinkId: 0,
  66. couponId: 0
  67. };
  68. },
  69. mounted: function() {},
  70. methods: {
  71. getAddressList: function() {
  72. let that = this;
  73. getAddressList().then(res => {
  74. that.addressList = res.data;
  75. });
  76. },
  77. closeAddress() {
  78. this.$emit("input", false);
  79. },
  80. goAddressPages: function() {
  81. this.$router.push({ path: "/user/add_address" });
  82. this.$emit("redirect");
  83. },
  84. tapAddress: function(index) {
  85. this.$emit("checked", this.addressList[index]);
  86. this.$emit("input", false);
  87. }
  88. }
  89. };
  90. </script>