zzzz
2024-03-20 d25a45190cee44b36296693d5022a0ce9ae9b698
1
{"ast":null,"code":"import \"vant/es/cell/style\";\nimport _Cell from \"vant/es/cell\";\nimport \"vant/es/list/style\";\nimport _List from \"vant/es/list\"; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport { fixDate, setStorage } from \"@/utils/utis\";\nimport ExTabs from \"@/components/ex-tabs/index.vue\";\nimport { HOST_URL } from '@/config';\nexport default {\n  name: 'ListQuotation',\n  data() {\n    return {\n      fixDate,\n      HOST_URL,\n      active: 0,\n      type: 'left',\n      //left 从左往右 right 从有王座\n      sortVal: 0\n    };\n  },\n  props: {\n    showMore: {\n      type: Boolean,\n      default: true\n    },\n    listData: {\n      type: Array,\n      default() {\n        return [];\n      }\n    },\n    tabActive: {\n      type: Number,\n      default: 0\n    }\n  },\n  computed: {\n    ...mapGetters({\n      currency: 'home/currency'\n    })\n  },\n  components: {\n    [_List.name]: _List,\n    [_Cell.name]: _Cell,\n    ExTabs\n  },\n  methods: {\n    //排序\n    listSort(val) {\n      this.sortVal = val;\n      this.$emit('listSort', val);\n    },\n    onItemClick(item) {\n      if (this.tabActive == 2) {\n        //现货\n        this.$router.push({\n          path: `/trade/${item.symbol}`\n        });\n      } else {\n        setStorage('symbol', item.symbol);\n        this.$router.push({\n          path: `/perpetualContract/${item.symbol}`\n        });\n      }\n    },\n    onTabs(val) {\n      if (this.active < val) {\n        this.type = 'right';\n      } else {\n        this.type = 'left';\n      }\n      this.active = val;\n      if (val == 0) {\n        this.showList = [...this.listData];\n      } else if (val == 1) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'up'));\n      } else if (val == 2) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'down'));\n      } else if (val == 3) {\n        this.showList = [...this.listData].sort(this.compare(\"volume\", 'up'));\n      }\n    },\n    compare(p, type) {\n      //这是比较函数\n      return function (m, n) {\n        var a = m[p];\n        var b = n[p];\n        if (a == b) {\n          return;\n        }\n        if (type == 'up') {\n          return b - a; //升序\n        } else if (type == 'down') {\n          return a - b; //降序\n        } else {\n          return a - b;\n        }\n      };\n    }\n  },\n  watch: {\n    listData() {\n      if (this.active == 0) {\n        this.showList = [...this.listData];\n      } else if (this.active == 1) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'up'));\n      } else if (this.active == 2) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'down'));\n      } else if (this.active == 3) {\n        this.showList = [...this.listData].sort(this.compare(\"volume\", 'up'));\n      }\n      this.$forceUpdate();\n    }\n  }\n};","map":{"version":3,"names":["mapGetters","fixDate","setStorage","ExTabs","HOST_URL","name","data","active","type","sortVal","props","showMore","Boolean","default","listData","Array","tabActive","Number","computed","currency","components","_List","_Cell","methods","listSort","val","$emit","onItemClick","item","$router","push","path","symbol","onTabs","showList","sort","compare","p","m","n","a","b","watch","$forceUpdate"],"sources":["src/components/list-quotation/index.vue"],"sourcesContent":["<template>\n  <div class=\"list-quatation\">\n    <ex-tabs @tabs=\"onTabs\"></ex-tabs>\n    <van-list>\n      <van-cell>\n        <div class=\"flex items-center w-full text-grey font-26\">\n          <div class=\"left flex items-center\">\n            <span>{{ $t('交易对11') }}</span>\n            <div class=\"filter-box ml-10\" v-if=\"active == 0\">\n              <div class=\"w-14 h-12\" :class=\"[sortVal == 1 ? 'icon_top1_active' : 'icon_top1']\" @click=\"listSort(1)\">\n              </div>\n              <div class=\"w-14 h-12\" :class=\"[sortVal == 2 ? 'icon_top2_active' : 'icon_top2']\" @click=\"listSort(2)\">\n              </div>\n            </div>\n          </div>\n          <div class=\"mid text-right flex justify-end items-center\">\n            {{ $t('最新价') }}\n            <div class=\"filter-box ml-10\" v-if=\"active == 0\">\n              <div class=\"w-14 h-12\" :class=\"[sortVal == 3 ? 'icon_top1_active' : 'icon_top1']\" @click=\"listSort(3)\">\n              </div>\n              <div class=\"w-14 h-12\" :class=\"[sortVal == 4 ? 'icon_top2_active' : 'icon_top2']\" @click=\"listSort(4)\">\n              </div>\n            </div>\n          </div>\n          <div class=\"right text-right flex justify-end items-center\">\n            {{ active == 3 ? $t('成交额') : $t('24h涨跌幅') }}\n            <div class=\"filter-box ml-10\" v-if=\"active == 0\">\n              <div class=\"w-14 h-12 \" :class=\"[sortVal == 5 ? 'icon_top1_active' : 'icon_top1']\" @click=\"listSort(5)\">\n              </div>\n              <div class=\"w-14 h-12\" :class=\"[sortVal == 6 ? 'icon_top2_active' : 'icon_top2']\" @click=\"listSort(6)\">\n              </div>\n            </div>\n            <!--                  <img src=\"./icon-sort.png\" alt=\"icon\" class=\"w-13 h-22 ml-5\"/>-->\n          </div>\n        </div>\n      </van-cell>\n      <transition-group :name=\"type\" tag=\"div\">\n        <div v-if=\"active == 0\" :key=\"active\">\n          <van-cell v-for=\"item in listData\" :key=\"item.id\">\n            <ul class=\"flex justify-between w-full items-center\" @click=\"onItemClick(item)\">\n              <li class=\"flex items-center left\">\n        <img\n                  :src=\"item.symbol ? `${HOST_URL}/wap/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')\"\n                  alt=\"logo\" class=\"w-72 h-72 rounded-full mr-16\" />\n                <p class=\"flex flex-col\" style=\"margin-left: 5px\">\n                  <span class=\"flex items-end font-32 flex items-center\">\n                    <span class=\"textColor font-600 font-30\">{{ item.name && item.name.toUpperCase() || '--' }}</span>\n                <!--    <span class=\"font-24 text-grey\" style=\"position: relative; top: 1px\">\n                      {{ item.name && item.name.replace(item.symbol.toUpperCase(), '') || '--' }}</span> -->\n                  </span>\n\n                  <span class=\"font-24 text-grey mt-10\">{{ $t('成交量') + ' ' + (item.amount * 1).toFixed(2) }}</span>\n                </p>\n              </li>\n              <li class=\"flex flex-col items-end mid\">\n                <p class=\"textColor font-32 font-600\">{{ item.close || '--' }}</p>\n                <p class=\"font-24 text-grey mt-10\">{{ currency.currency_symbol }}{{ item.close && (item.close *\n                  currency.rate).toFixed(item.close.toString().split('.')[1] ? item.close.toString().split('.')[1].length\n                    : 2) || '--' }}</p>\n              </li>\n              <li class=\"right flex items-center justify-end\">\n                <p class=\"w-153 font-31 h-71 bg-green text-white border-0 text-center btn\" v-if=\"item.change_ratio > 0\">\n                  +{{ item.change_ratio }}%</p>\n                <p class=\"w-153 font-31 h-71 bg-red text-white border-0 text-center btn\" v-else>\n                  {{ item.change_ratio }}%</p>\n              </li>\n            </ul>\n          </van-cell>\n        </div>\n        <div v-else :key=\"active\">\n          <van-cell v-for=\"item in showList\" :key=\"item.id\">\n            <ul class=\"flex justify-between w-full items-center\" @click=\"onItemClick(item)\">\n              <li class=\"flex items-center left\">\n                 <img :src=\"`${HOST_URL}/wap/symbol/${item.symbol}.png`\" alt=\"logo\" class=\"w-72 h-72 rounded-full mr-16\" />\n                <p class=\"flex flex-col\" style=\"margin-left: 5px\">\n                  <span class=\"flex items-end font-32 flex items-center\">\n                    <span class=\"textColor font-600 font-30\">{{ item.symbol && item.symbol.toUpperCase() || '--' }}</span>\n                    <span class=\"font-24 text-grey\" style=\"position: relative; top: 1px\">\n                      {{ item.name && item.name.replace(item.symbol.toUpperCase(), '') || '--' }}</span>\n                  </span>\n                  <span class=\"font-24 text-grey mt-10\">{{ $t('成交量') + ' ' + (item.amount * 1).toFixed(2) }}</span>\n                </p>\n              </li>\n              <li class=\"flex flex-col items-end mid\">\n                <p class=\"textColor font-32 font-600\">{{ item.close }}</p>\n                <p class=\"font-24 text-grey mt-10\">{{ currency.currency_symbol }}{{ item.close && (item.close *\n                  currency.rate).toFixed(item.close.toString().split('.')[1] ? item.close.toString().split('.')[1].length\n                    :\n                    2) }}</p>\n              </li>\n              <li class=\"right flex items-center justify-end text-right\">\n                <div v-if=\"active == 3\" class=\"textColor w-182 font-700 font-24\">\n                  {{ (item.volume * 1).toFixed(2) }}\n                </div>\n                <template v-else>\n                  <p class=\"w-153 font-31 h-71 bg-green text-white border-0 text-center btn\" v-if=\"item.change_ratio > 0\">\n                    +{{ item.change_ratio }}%</p>\n                  <p class=\"w-153 font-31 h-71 bg-red text-white border-0 text-center btn\" v-else>\n                    {{ item.change_ratio }}%</p>\n                </template>\n              </li>\n            </ul>\n          </van-cell>\n        </div>\n      </transition-group>\n    </van-list>\n    <!-- <div class=\"flex flex-col justify-center items-center pb-58 mt-20\" @click=\"$router.push('/quotes/?active=3')\" v-if=\"showMore\">\n        <p class=\"text-grey font-28 mb-8\">{{ $t('查看') }}</p>\n        <img src=\"./icon-arrow_more.png\" alt=\"more\" class=\"w-24 h-10\"/>\n    </div> -->\n  </div>\n</template>\n\n<script>\nimport { List, Cell } from 'vant'\nimport { mapGetters } from 'vuex'\nimport { fixDate, setStorage } from \"@/utils/utis\";\nimport ExTabs from \"@/components/ex-tabs/index.vue\";\nimport { HOST_URL } from '@/config'\nexport default {\n  name: 'ListQuotation',\n  data() {\n    return {\n      fixDate,\n      HOST_URL,\n      active: 0,\n      type: 'left', //left 从左往右 right 从有王座\n      sortVal: 0\n    }\n  },\n  props: {\n    showMore: {\n      type: Boolean,\n      default: true\n    },\n    listData: {\n      type: Array,\n      default() {\n        return []\n      }\n    },\n    tabActive: {\n      type: Number,\n      default: 0\n    },\n  },\n  computed: {\n    ...mapGetters({ currency: 'home/currency' }),\n  },\n  components: {\n    [List.name]: List,\n    [Cell.name]: Cell,\n    ExTabs\n  },\n  methods: {\n    //排序\n    listSort(val) {\n      this.sortVal = val\n      this.$emit('listSort', val)\n    },\n    onItemClick(item) {\n      if (this.tabActive == 2) { //现货\n        this.$router.push({\n          path: `/trade/${item.symbol}`\n        });\n      } else {\n        setStorage('symbol', item.symbol)\n        this.$router.push({\n          path: `/perpetualContract/${item.symbol}`\n        });\n      }\n    },\n    onTabs(val) {\n      if (this.active < val) {\n        this.type = 'right'\n      } else {\n        this.type = 'left'\n      }\n      this.active = val\n      if (val == 0) {\n        this.showList = [...this.listData];\n      } else if (val == 1) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'up'))\n      } else if (val == 2) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'down'))\n      } else if (val == 3) {\n        this.showList = [...this.listData].sort(this.compare(\"volume\", 'up'))\n      }\n    },\n    compare(p, type) { //这是比较函数\n      return function (m, n) {\n        var a = m[p];\n        var b = n[p];\n        if (a == b) {\n          return\n        }\n        if (type == 'up') {\n          return b - a; //升序\n        } else if (type == 'down') {\n          return a - b; //降序\n        } else {\n          return a - b;\n        }\n      }\n    }\n  },\n  watch: {\n    listData() {\n      if (this.active == 0) {\n        this.showList = [...this.listData];\n      } else if (this.active == 1) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'up'))\n      } else if (this.active == 2) {\n        this.showList = [...this.listData].sort(this.compare(\"change_ratio\", 'down'))\n      } else if (this.active == 3) {\n        this.showList = [...this.listData].sort(this.compare(\"volume\", 'up'))\n      }\n      this.$forceUpdate()\n    }\n  }\n}\n</script>\n<style lang=\"scss\" scoped>\n.left-enter-active,\n.left-leave-active,\n.right-enter-active,\n.right-leave-active {\n  will-change: transform;\n  transition: all 250ms;\n}\n\n.left-leave-active,\n.right-leave-active {\n  display: none;\n}\n\n.left-enter {\n  opacity: 0;\n  transform: translate3d(-100%, 0, 0);\n}\n\n.left-leave {\n  opacity: 0;\n  transform: translate3d(0%, 0, 0)\n}\n\n.right-enter {\n  opacity: 0;\n  transform: translate3d(100%, 0, 0);\n}\n\n.right-leave {\n  opacity: 0;\n  transform: translate3d(0%, 0, 0)\n}\n\n.btn {\n  border-radius: 9px;\n  line-height: 71px;\n}\n\n.left {\n  width: 382px\n}\n\n.mid {\n  width: 185px;\n}\n\n.right {\n  width: 182px;\n  margin-left: 38px;\n}\n\n.filter-box {\n  .icon_top1 {\n    background: url('@/assets/image/icon_top1.png') no-repeat center;\n    background-size: 100% 100%;\n  }\n\n  .icon_top2 {\n    background: url('@/assets/image/icon_top2.png') no-repeat center;\n    background-size: 100% 100%;\n    margin-top: 5px;\n  }\n\n  .icon_top1_active {\n    background: url('@/assets/image/icon_top3.png') no-repeat center;\n    background-size: 100% 100%;\n  }\n\n  .icon_top2_active {\n    background: url('@/assets/image/icon_top4.png') no-repeat center;\n    background-size: 100% 100%;\n    margin-top: 5px;\n  }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHA,SAAAA,UAAA;AACA,SAAAC,OAAA,EAAAC,UAAA;AACA,OAAAC,MAAA;AACA,SAAAC,QAAA;AACA;EACAC,IAAA;EACAC,KAAA;IACA;MACAL,OAAA;MACAG,QAAA;MACAG,MAAA;MACAC,IAAA;MAAA;MACAC,OAAA;IACA;EACA;EACAC,KAAA;IACAC,QAAA;MACAH,IAAA,EAAAI,OAAA;MACAC,OAAA;IACA;IACAC,QAAA;MACAN,IAAA,EAAAO,KAAA;MACAF,QAAA;QACA;MACA;IACA;IACAG,SAAA;MACAR,IAAA,EAAAS,MAAA;MACAJ,OAAA;IACA;EACA;EACAK,QAAA;IACA,GAAAlB,UAAA;MAAAmB,QAAA;IAAA;EACA;EACAC,UAAA;IACA,CAAAC,KAAA,CAAAhB,IAAA,GAAAgB,KAAA;IACA,CAAAC,KAAA,CAAAjB,IAAA,GAAAiB,KAAA;IACAnB;EACA;EACAoB,OAAA;IACA;IACAC,SAAAC,GAAA;MACA,KAAAhB,OAAA,GAAAgB,GAAA;MACA,KAAAC,KAAA,aAAAD,GAAA;IACA;IACAE,YAAAC,IAAA;MACA,SAAAZ,SAAA;QAAA;QACA,KAAAa,OAAA,CAAAC,IAAA;UACAC,IAAA,YAAAH,IAAA,CAAAI,MAAA;QACA;MACA;QACA9B,UAAA,WAAA0B,IAAA,CAAAI,MAAA;QACA,KAAAH,OAAA,CAAAC,IAAA;UACAC,IAAA,wBAAAH,IAAA,CAAAI,MAAA;QACA;MACA;IACA;IACAC,OAAAR,GAAA;MACA,SAAAlB,MAAA,GAAAkB,GAAA;QACA,KAAAjB,IAAA;MACA;QACA,KAAAA,IAAA;MACA;MACA,KAAAD,MAAA,GAAAkB,GAAA;MACA,IAAAA,GAAA;QACA,KAAAS,QAAA,YAAApB,QAAA;MACA,WAAAW,GAAA;QACA,KAAAS,QAAA,YAAApB,QAAA,EAAAqB,IAAA,MAAAC,OAAA;MACA,WAAAX,GAAA;QACA,KAAAS,QAAA,YAAApB,QAAA,EAAAqB,IAAA,MAAAC,OAAA;MACA,WAAAX,GAAA;QACA,KAAAS,QAAA,YAAApB,QAAA,EAAAqB,IAAA,MAAAC,OAAA;MACA;IACA;IACAA,QAAAC,CAAA,EAAA7B,IAAA;MAAA;MACA,iBAAA8B,CAAA,EAAAC,CAAA;QACA,IAAAC,CAAA,GAAAF,CAAA,CAAAD,CAAA;QACA,IAAAI,CAAA,GAAAF,CAAA,CAAAF,CAAA;QACA,IAAAG,CAAA,IAAAC,CAAA;UACA;QACA;QACA,IAAAjC,IAAA;UACA,OAAAiC,CAAA,GAAAD,CAAA;QACA,WAAAhC,IAAA;UACA,OAAAgC,CAAA,GAAAC,CAAA;QACA;UACA,OAAAD,CAAA,GAAAC,CAAA;QACA;MACA;IACA;EACA;EACAC,KAAA;IACA5B,SAAA;MACA,SAAAP,MAAA;QACA,KAAA2B,QAAA,YAAApB,QAAA;MACA,gBAAAP,MAAA;QACA,KAAA2B,QAAA,YAAApB,QAAA,EAAAqB,IAAA,MAAAC,OAAA;MACA,gBAAA7B,MAAA;QACA,KAAA2B,QAAA,YAAApB,QAAA,EAAAqB,IAAA,MAAAC,OAAA;MACA,gBAAA7B,MAAA;QACA,KAAA2B,QAAA,YAAApB,QAAA,EAAAqB,IAAA,MAAAC,OAAA;MACA;MACA,KAAAO,YAAA;IACA;EACA;AACA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}