address-list.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <v-page>
  3. <v-header :title="$t('assets.a0')">
  4. <template #right>
  5. <view @click="del = !del">
  6. <van-icon v-if="del" class="fn-20 m-t-xs" name="plus" />
  7. <van-icon v-else class="fn-20 m-t-xs" name="delete" />
  8. </view>
  9. </template>
  10. </v-header>
  11. <main class="layout-main p-t-md">
  12. <view class="p-md fn-sm">
  13. <ul>
  14. <li class="m-b-xs">·{{ $t("assets.a1") }}</li>
  15. <li>·API {{ $t("assets.a2", { name: "API" }) }}</li>
  16. </ul>
  17. </view>
  18. <template v-for="parentItem in list">
  19. <view
  20. class="bg-panel-4 m-md rounded overflow-hidden box-shadow"
  21. :key="parentItem.coin_name"
  22. >
  23. <view class="fn-22 p-x-md p-y-md border-b color-light">{{
  24. parentItem.coin_name
  25. }}</view>
  26. <ul class="list" v-if="query.from == 'draw'">
  27. <view
  28. class="item d-flex border-b p-md align-center link-active"
  29. v-for="item in parentItem.list"
  30. :key="item.id"
  31. >
  32. <view
  33. class="p-x-xs"
  34. v-if="del"
  35. @click.stop="$set(item, 'show', !item.show)"
  36. >
  37. <van-checkbox
  38. icon-size="15px"
  39. :value="item.show"
  40. checked-color="#f05319"
  41. ></van-checkbox>
  42. </view>
  43. <view class="flex-fill" @click="selectAddress(item)">
  44. <view class="title color-light eps-2 m-b-xs">{{
  45. item.address_note
  46. }}</view>
  47. <view class="fn-sm">{{ item.address }}</view>
  48. <view class="time fn-sm">{{ item.datetime | parseTime }}</view>
  49. </view>
  50. <van-icon name="arrow" />
  51. </view>
  52. </ul>
  53. <ul class="list" v-else>
  54. <v-link
  55. :to="{
  56. path: '/pages/assets/edit-address',
  57. query: {
  58. coin_name: item.coin_name,
  59. address: item.address,
  60. address_note: item.address_note,
  61. id: item.id,
  62. },
  63. }"
  64. class="item d-flex border-b p-md align-center link-active"
  65. v-for="item in parentItem.list"
  66. :key="item.id"
  67. >
  68. <view
  69. class="p-x-xs"
  70. v-if="del"
  71. @click.stop="$set(item, 'show', !item.show)"
  72. >
  73. <van-checkbox
  74. icon-size="15px"
  75. :value="item.show"
  76. checked-color="#f05319"
  77. ></van-checkbox>
  78. </view>
  79. <view class="flex-fill">
  80. <view class="title color-light eps-2 m-b-xs">{{
  81. item.address_note
  82. }}</view>
  83. <view class="fn-sm">{{ item.address }}</view>
  84. <view class="time fn-sm">{{ item.datetime | parseTime }}</view>
  85. </view>
  86. <van-icon name="arrow" />
  87. </v-link>
  88. </ul>
  89. </view>
  90. </template>
  91. </main>
  92. <view class="p-md">
  93. <v-button
  94. class="w-max rounded-lg"
  95. block
  96. v-if="del"
  97. type="red"
  98. @click="toDel"
  99. >{{ $t("assets.a3") }}</v-button
  100. >
  101. <v-button
  102. class="w-max rounded-lg"
  103. block
  104. @click="_router.push('/pages/assets/edit-address')"
  105. v-else
  106. type="blue"
  107. >{{ $t("assets.a4") }}</v-button
  108. >
  109. </view>
  110. </v-page>
  111. </template>
  112. <script>
  113. import Wallet from "@/api/wallet";
  114. import formData from "@/utils/class/date";
  115. export default {
  116. data() {
  117. return {
  118. del: false,
  119. list: [],
  120. query: {},
  121. };
  122. },
  123. computed: {},
  124. filters: {
  125. parseTime(val) {
  126. return formData.parseTime(val);
  127. },
  128. },
  129. methods: {
  130. getUserWithdrawAdress() {
  131. Wallet.getUserWithdrawAdress().then((res) => {
  132. this.list = res.data;
  133. });
  134. },
  135. toDel() {
  136. // 获取删除的地址
  137. let delList = [];
  138. this.list.forEach((parentItem) => {
  139. parentItem.list.forEach((item) => {
  140. if (item.show) {
  141. delList.push(item.id);
  142. }
  143. });
  144. });
  145. if (!delList.length) {
  146. this.$toast(this.$t("assets.a5"));
  147. }
  148. uni.showModal({
  149. title: this.$t("common.tips"),
  150. content: this.$t("assets.a6"),
  151. success: () => {
  152. let i = 0;
  153. delList.forEach((item) => {
  154. this.withdrawalAddressDeleted(item, () => {
  155. i++;
  156. if (delList.length == i) {
  157. this.getUserWithdrawAdress();
  158. }
  159. });
  160. });
  161. },
  162. });
  163. },
  164. // 删除
  165. withdrawalAddressDeleted(id, call) {
  166. Wallet.withdrawalAddressDeleted({ id })
  167. .then(() => {
  168. call();
  169. })
  170. .catch(() => {});
  171. },
  172. selectAddress(item){
  173. uni.$emit('selectAddress',item.address)
  174. this.$back()
  175. }
  176. },
  177. created() {
  178. this.getUserWithdrawAdress();
  179. },
  180. onLoad(query) {
  181. this.query = query;
  182. },
  183. };
  184. </script>
  185. <style lang="scss">
  186. </style>