symbol-list copy.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <div>
  3. <div class="title fn-18 p-md color-light">{{title||$t('exchange.f5')}}</div>
  4. <van-tabs v-model="active">
  5. <van-tab
  6. :title="parentItem.coin_name"
  7. v-for="parentItem in showMarketList"
  8. :key="parentItem.coin_name"
  9. >
  10. <van-search v-model="filterText" :action-text="$t('common.cancelButtonText')" :placeholder="$t('exchange.f6')" />
  11. <table class="w-max">
  12. <thead>
  13. <tr class="fn-sm">
  14. <th class="p-l-md p-y-xs fn-left">{{$t('exchange.f7')}}</th>
  15. <th class="fn-left">{{$t('exchange.f8')}}</th>
  16. <th class="p-r-md p-y-xs fn-right">{{$t('exchange.f9')}}</th>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. <tr
  21. class="link-active"
  22. v-for="item in parentItem.marketInfoList"
  23. :key="item.symbol"
  24. v-show="isShow(item.pair_name)"
  25. @click="$emit('check-symbol',item)"
  26. >
  27. <td class="p-l-md p-y-xs">
  28. <template v-if="parentItem.isCollect">
  29. <span class="color-light">{{item.pair_name}}</span>
  30. </template>
  31. <template v-else>
  32. <span class="color-light">{{item.coin_name}}</span>
  33. <span class="fn-sm">/{{parentItem.coin_name}}</span>
  34. </template>
  35. </td>
  36. <td :class="item.increase<0?'color-sell':'color-buy'">{{item.price}}</td>
  37. <td
  38. :class="item.increase<0?'color-sell':'color-buy'"
  39. class="p-r-md p-y-xs fn-right"
  40. >{{item.increaseStr}}</td>
  41. </tr>
  42. </tbody>
  43. </table>
  44. </van-tab>
  45. </van-tabs>
  46. </div>
  47. </template>
  48. <script>
  49. export default {
  50. props: {
  51. marketList: {
  52. default() {
  53. return [];
  54. },
  55. type: Array,
  56. required: false,
  57. },
  58. collect: {
  59. default() {
  60. return [];
  61. },
  62. type: Array,
  63. required: false,
  64. },
  65. title:{
  66. default:''
  67. }
  68. },
  69. computed: {
  70. showMarketList() {
  71. let collect = this.collect.map((item) => item.pair_name);
  72. let collects = [];
  73. this.marketList.forEach((parentItem) => {
  74. parentItem.marketInfoList.forEach((item) => {
  75. if (collect.includes(item.pair_name)) {
  76. collects.push(item);
  77. }
  78. });
  79. });
  80. let arr = [
  81. { coin_name: this.$t('exchange.g0'), isCollect: true, marketInfoList: collects },
  82. ...this.marketList,
  83. ];
  84. return arr;
  85. },
  86. },
  87. data() {
  88. return {
  89. active: 0,
  90. filterText: "",
  91. };
  92. },
  93. methods: {
  94. isShow(str) {
  95. return (
  96. str.toLocaleLowerCase().indexOf(this.filterText.toLocaleLowerCase()) !=
  97. -1
  98. );
  99. },
  100. },
  101. created() {},
  102. };
  103. </script>
  104. <style lang="scss" scoped>
  105. </style>