From 35f3f260f3d3c51ac2256899ade3b9a144b46b28 Mon Sep 17 00:00:00 2001
From: zzzz <690498789@qq.com>
Date: Fri, 19 Apr 2024 05:58:04 +0800
Subject: [PATCH] first

---
 src/page/search/index.vue |  683 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 365 insertions(+), 318 deletions(-)

diff --git a/src/page/search/index.vue b/src/page/search/index.vue
index 8fc3111..784fb92 100644
--- a/src/page/search/index.vue
+++ b/src/page/search/index.vue
@@ -1,373 +1,420 @@
 <template>
-    <!-- 账变记录 -->
-    <div class="accountChange">
-        <div class="px-32 py-30 flex items-center">
-            <!-- <img src="@/assets/image/icon-left_arrow.png" alt="logo" class="w-20 h-33 border-1 mr-32" @click="back"/> -->
-            <div class="inputBoxbg h-60 w-full rounded-full flex items-center">
-                <img src="@/assets/image/icon-search.png" alt="logo" class="w-32 h-32 mx-16" />
-                <input type="text" v-model="keywords" :placeholder="$t('搜索')"
-                    class="h-full flex-1 border-none search-input bg-none" @input="onInput" />
-            </div>
-            <div class="cancel" @click="cancel">
-                {{ $t('取消') }}
-            </div>
-        </div>
-        <van-tabs v-model="active" @change="changeValue">
-            <van-tab :title="$t('热门搜索')"></van-tab>
-            <van-tab :title="$t('热门功能')"></van-tab>
-        </van-tabs>
-        <div v-if="active == 0" class="px-32 mt-20">
-            <div class="list-item flex" v-for="(item, index) in currencyList" :key="index" @click.stop="onItemClick(item)">
-                <div class="flex-1 item-left flex">
-                    <div class="">
-                        <van-icon class="star-icon-check" v-if="index == 0 || index == 1" name="fire" />
-                        <span v-else class="font-35">
-                            {{ index + 1 }}
-                        </span>
-                    </div>
-                    <div class="pl-30 symbol-name">{{ item.symbol.toUpperCase() }}<span>/usdt</span></div>
-                </div>
-                <div class="item-right">
-                    <div class="symbol-name">{{ item.close }}</div>
-                    <div class="increase  mt-10" :class="[item.change_ratio > 0 ? 'green' : 'red']">{{ item.change_ratio
-                    }}%</div>
-                </div>
-                <van-icon :class="[item.isCollection ? 'star-icon-check' : 'star-icon']" class="font-40 ml-20" name="star"
-                    @click.stop="onCollect(item)" />
-            </div>
-        </div>
-        <div v-if="active == 1" class="px-32 mt-30">
-            <div class="function-item list-item flex" v-for="(item, index) in dataList" @click="jump(item.path)"
-                :key="index">
-                <div class="flex-1 flex item-left">
-                    <div>
-                        <span v-if="index == 0 || index == 1">{{ index + 1 }}</span>
-                        <span v-else>
-                            {{ index + 1 }}
-                        </span>
-
-                    </div>
-                    <div class="imgBox ml-30"><img :src="item.icon" alt=""></div>
-                    <div class=" ml-30 symbol-name">{{ item.name }}</div>
-                </div>
-                <div class="item-right">
-                    <van-icon name="arrow" />
-                </div>
-            </div>
-        </div>
-        <div v-if="dataList.length == 0 || currencyList.length == 0"
-            class="flex flex-col justify-center items-center pt-185">
-            <img src="@/assets/image/assets-center/no-data.png" alt="no-date" class="w-180 h-180" />
-            <p class="textColor">{{ $t('暂无数据') }}</p>
-        </div>
-        <div class="loading-box" v-if="isLoading">
-            <van-loading type="spinner" size="24px" />
-        </div>
+  <!-- 账变记录 -->
+  <div class="accountChange">
+    <div class="px-32 py-30 flex items-center">
+      <!-- <img src="@/assets/image/icon-left_arrow.png" alt="logo" class="w-20 h-33 border-1 mr-32" @click="back"/> -->
+      <div class="inputBoxbg h-60 w-full rounded-full flex items-center">
+        <img
+          src="@/assets/image/icon-search.png"
+          alt="logo"
+          class="w-32 h-32 mx-16"
+        />
+        <input
+          type="text"
+          v-model="keywords"
+          :placeholder="$t('搜索')"
+          class="h-full flex-1 border-none search-input bg-none"
+          @input="onInput"
+        />
+      </div>
+      <div class="cancel" @click="cancel">
+        {{ $t("取消") }}
+      </div>
     </div>
+    <van-tabs v-model="active" @change="changeValue">
+      <van-tab :title="$t('热门搜索')"></van-tab>
+      <van-tab :title="$t('热门功能')"></van-tab>
+    </van-tabs>
+    <div v-if="active == 0" class="px-32 mt-20">
+      <div
+        class="list-item flex"
+        v-for="(item, index) in currencyList"
+        :key="index"
+        @click.stop="onItemClick(item)"
+      >
+        <div class="flex-1 item-left flex">
+          <div class="">
+            <van-icon
+              class="star-icon-check"
+              v-if="index == 0 || index == 1"
+              name="fire"
+            />
+            <span v-else class="font-35">
+              {{ index + 1 }}
+            </span>
+          </div>
+          <div class="pl-30 symbol-name">
+            {{ item.symbol.toUpperCase() }}<span>/usdt</span>
+          </div>
+        </div>
+        <div class="item-right">
+          <div class="symbol-name">{{ item.close }}</div>
+          <div
+            class="increase mt-10"
+            :class="[item.change_ratio > 0 ? 'green' : 'red']"
+          >
+            {{ item.change_ratio }}%
+          </div>
+        </div>
+        <van-icon
+          :class="[item.isCollection ? 'star-icon-check' : 'star-icon']"
+          class="font-40 ml-20"
+          name="star"
+          @click.stop="onCollect(item)"
+        />
+      </div>
+    </div>
+    <div v-if="active == 1" class="px-32 mt-30">
+      <div
+        class="function-item list-item flex"
+        v-for="(item, index) in dataList"
+        @click="jump(item.path)"
+        :key="index"
+      >
+        <div class="flex-1 flex item-left">
+          <div>
+            <span v-if="index == 0 || index == 1">{{ index + 1 }}</span>
+            <span v-else>
+              {{ index + 1 }}
+            </span>
+          </div>
+          <div class="imgBox ml-30"><img :src="item.icon" alt="" /></div>
+          <div class="ml-30 symbol-name">{{ item.name }}</div>
+        </div>
+        <div class="item-right">
+          <van-icon name="arrow" />
+        </div>
+      </div>
+    </div>
+    <div
+      v-if="dataList.length == 0 || currencyList.length == 0"
+      class="flex flex-col justify-center items-center pt-185"
+    >
+      <img
+        src="@/assets/image/assets-center/no-data.png"
+        alt="no-date"
+        class="w-180 h-180"
+      />
+      <p class="textColor">{{ $t("暂无数据") }}</p>
+    </div>
+    <div class="loading-box" v-if="isLoading">
+      <van-loading type="spinner" size="24px" />
+    </div>
+  </div>
 </template>
 
 <script>
-import { _fundRecord } from '@/API/fund.api'
-import { List } from 'vant'
-import { Tab, Tabs, Loading } from 'vant';
-import { _getHomeList, _myCoins, _collect, _deleteCollect } from '@/API/home.api'
-import { mapGetters } from "vuex";
+import { _fundRecord } from "@/API/fund.api";
+import { List } from "vant";
+import { Tab, Tabs, Loading } from "vant";
+import {
+  _getHomeList,
+  _myCoins,
+  _collect,
+  _deleteCollect,
+} from "@/API/home.api";
+import { mapActions, mapGetters } from "vuex";
 import { TIME_OUT } from "@/config";
 import { setStorage } from "@/utils/utis";
 export default {
-    name: "search",
-    data() {
-        return {
-            keywords: '',
-            active: 0,
-            allFunList: [],
-            dataList: [],
-            allCurrencyList: [],
-            currencyList: [],
-            timeout: null,
-            collectionList: [],
-            isLoading: true
-        }
-    },
-    mounted() {
-        this.allFunList = [
-            {
-                name: this.$t('理财'),
-                icon: require(`../../assets/theme/${this.theme}/image/nav/finance.png`),
-                path: '/fm-home'
-            },
-            {
-                name: this.$t('充值'),
-                icon: require(`../../assets/theme/${this.theme}/image/nav/account.png`),
-                // path: '/recharge/rechargePage'
-                path: '/recharge/rechargeList'
-            },
-            {
-                name: this.$t('合约交易'),
-                icon: require(`../../assets/theme/${this.theme}/image/nav/trading.png`),
-                path: '/trendDetails/btc'
-            },
-            {
-                name: this.$t('闪兑'),
-                icon: require(`../../assets/theme/${this.theme}/image/nav/exchange.png`),
-                path: '/exchange/exchangePage'
-            }
-        ]
-        this.dataList = this.allFunList
-        if (this.$store.state.user.userInfo.token) {
-            this.myCoinsList()
-        }
-        setTimeout(() => {
-            this.fetchQList();
-        }, 1000)
-    },
-    components: {
-        [List.name]: List,
-        [Tabs.name]: Tabs,
-        [Tab.name]: Tab,
-        [Loading.name]: Loading
-    },
-    watch: {
-        collectionList(val) {
-            if (val) {
-                this.allCurrencyList.map((item) => {
-                    val.map((item2) => {
-                        if (item.symbol == item2.symbol) {
-                            item.isCollection = true
-                        }
-                    })
-                })
-                this.currencyList.map((item) => {
-                    val.map((item2) => {
-                        if (item.symbol == item2.symbol) {
-                            item.isCollection = true
-                        }
-                    })
-                })
-            }
-        }
-    },
-    computed: {
-        ...mapGetters({
-            coinArr: 'home/coinArr',
-            theme: 'home/theme'
-        }),
-    },
-    filters: {
-
-    },
-    beforeDestroy() {
-        clearInterval(this.timeout)
-    },
-    methods: {
-        onInput() {
-            if (this.active == 1) {
-                if (this.keywords) {
-                    this.dataList = this.dataList.filter((item) => {
-                        return item.name.indexOf(this.keywords) != -1
-                    })
-                } else {
-                    this.dataList = this.allFunList
-                }
-            }
-        },
-        cancel() {
-            this.$router.go(-1)
-        },
-        jump(path) {
-            this.$router.push(path)
-        },
-        myCoinsList() {
-            _myCoins().then((res) => {
-                this.collectionList = res
-
-            })
-        },
-        onCollect(item) { // 收藏,取消收藏
-            let _api = _collect
-            if (item.isCollection) {
-                _api = _deleteCollect
-            }
-            _api(item.symbol).then(() => {
-                this.myCoinsList()
-                item.collected = !item.collected
-                if (!item.isCollection) {
-                    this.$toast.success(this.$t('收藏成功'))
-                } else {
-                    this.$toast.success(this.$t('取消收藏'))
-                }
-            })
-        },
-        fetchQList() { // 获取行情
-            _getHomeList(this.coinArr.join(',')).then((res) => {
-                this.isLoading = false
-                res.map((item) => {
-                    this.$set(item, 'isCollection', false)
-                })
-                this.allCurrencyList = res
-                this.currencyList = res
-                this.allCurrencyList.map((item) => {
-                    this.collectionList.map((item2) => {
-                        if (item.symbol == item2.symbol) {
-                            item.isCollection = true
-                        }
-                    })
-                })
-                this.currencyList.map((item) => {
-                    this.collectionList.map((item2) => {
-                        if (item.symbol == item2.symbol) {
-                            item.isCollection = true
-                        }
-                    })
-                })
-                if (this.active == 0) {
-                    if (this.keywords) {
-                        this.currencyList = this.currencyList.filter((item) => {
-                            return item.name.toUpperCase().indexOf(this.keywords.toUpperCase()) != -1
-                        })
-                    } else {
-                        this.currencyList = this.allCurrencyList
-                    }
-                }
-                this.timeout = setTimeout(() => {
-                    this.fetchQList()
-                }, 1000)
-            })
-
-            if (this.timeout) {
-                clearInterval(this.timeout)
-            }
-        },
-        changeValue() {
-            console.log(this.dataList)
-            this.keywords = ''
-        },
-        onItemClick(item) {
-
-            setStorage('symbol', item.symbol)
-            this.$router.push({
-                path: `/perpetualContract/${item.symbol}`
-            });
-
-        }
+  name: "search",
+  data() {
+    return {
+      keywords: "",
+      active: 0,
+      allFunList: [],
+      dataList: [],
+      allCurrencyList: [],
+      currencyList: [],
+      timeout: null,
+      collectionList: [],
+      isLoading: true,
+    };
+  },
+  mounted() {
+    this.NEW_CION_LIST();
+    this.allFunList = [
+      {
+        name: this.$t("理财"),
+        icon: require(`../../assets/theme/${this.theme}/image/nav/finance.png`),
+        path: "/fm-home",
+      },
+      {
+        name: this.$t("充值"),
+        icon: require(`../../assets/theme/${this.theme}/image/nav/account.png`),
+        // path: '/recharge/rechargePage'
+        path: "/recharge/rechargeList",
+      },
+      {
+        name: this.$t("合约交易"),
+        icon: require(`../../assets/theme/${this.theme}/image/nav/trading.png`),
+        path: "/trendDetails/btc",
+      },
+      {
+        name: this.$t("闪兑"),
+        icon: require(`../../assets/theme/${this.theme}/image/nav/exchange.png`),
+        path: "/exchange/exchangePage",
+      },
+    ];
+    this.dataList = this.allFunList;
+    if (this.$store.state.user.userInfo.token) {
+      this.myCoinsList();
     }
-}
+    setTimeout(() => {
+      this.fetchQList();
+    }, 1000);
+  },
+  components: {
+    [List.name]: List,
+    [Tabs.name]: Tabs,
+    [Tab.name]: Tab,
+    [Loading.name]: Loading,
+  },
+  watch: {
+    collectionList(val) {
+      if (val) {
+        this.allCurrencyList.map((item) => {
+          val.map((item2) => {
+            if (item.symbol == item2.symbol) {
+              item.isCollection = true;
+            }
+          });
+        });
+        this.currencyList.map((item) => {
+          val.map((item2) => {
+            if (item.symbol == item2.symbol) {
+              item.isCollection = true;
+            }
+          });
+        });
+      }
+    },
+  },
+  computed: {
+    ...mapGetters({
+      coinArr: "home/coinArr",
+      theme: "home/theme",
+      newcoinArr: "home/newcoinArr",
+    }),
+  },
+  filters: {},
+  beforeDestroy() {
+    clearInterval(this.timeout);
+  },
+  methods: {
+    ...mapActions("home", ["NEW_CION_LIST"]),
+
+    onInput() {
+      if (this.active == 1) {
+        if (this.keywords) {
+          this.dataList = this.dataList.filter((item) => {
+            return item.name.indexOf(this.keywords) != -1;
+          });
+        } else {
+          this.dataList = this.allFunList;
+        }
+      }
+    },
+    cancel() {
+      this.$router.go(-1);
+    },
+    jump(path) {
+      this.$router.push(path);
+    },
+    myCoinsList() {
+      _myCoins().then((res) => {
+        this.collectionList = res;
+      });
+    },
+    onCollect(item) {
+      // 收藏,取消收藏
+      let _api = _collect;
+      if (item.isCollection) {
+        _api = _deleteCollect;
+      }
+      _api(item.symbol).then(() => {
+        this.myCoinsList();
+        item.collected = !item.collected;
+        if (!item.isCollection) {
+          this.$toast.success(this.$t("收藏成功"));
+        } else {
+          this.$toast.success(this.$t("取消收藏"));
+        }
+      });
+    },
+    fetchQList() {
+      // 获取行情
+      const mainArray = this.coinArr.filter(
+        (item) => !this.newcoinArr.includes(item)
+      );
+      _getHomeList(mainArray.join(",")).then((res) => {
+        this.isLoading = false;
+        res.map((item) => {
+          this.$set(item, "isCollection", false);
+        });
+        this.allCurrencyList = res;
+        this.currencyList = res;
+        this.allCurrencyList.map((item) => {
+          this.collectionList.map((item2) => {
+            if (item.symbol == item2.symbol) {
+              item.isCollection = true;
+            }
+          });
+        });
+        this.currencyList.map((item) => {
+          this.collectionList.map((item2) => {
+            if (item.symbol == item2.symbol) {
+              item.isCollection = true;
+            }
+          });
+        });
+        if (this.active == 0) {
+          if (this.keywords) {
+            this.currencyList = this.currencyList.filter((item) => {
+              return (
+                item.name.toUpperCase().indexOf(this.keywords.toUpperCase()) !=
+                -1
+              );
+            });
+          } else {
+            this.currencyList = this.allCurrencyList;
+          }
+        }
+        this.timeout = setTimeout(() => {
+          this.fetchQList();
+        }, 1000);
+      });
+
+      if (this.timeout) {
+        clearInterval(this.timeout);
+      }
+    },
+    changeValue() {
+      console.log(this.dataList);
+      this.keywords = "";
+    },
+    onItemClick(item) {
+      setStorage("symbol", item.symbol);
+      this.$router.push({
+        path: `/perpetualContract/${item.symbol}`,
+      });
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 .cancel {
-    width: 150px;
-    text-align: center;
-    color: #868D9A;
-    font-size: 28px;
+  width: 150px;
+  text-align: center;
+  color: #868d9a;
+  font-size: 28px;
 }
 
 .inputBoxbg {
-    @include themify() {
-        background: themed("tab_background");
-    }
-
+  @include themify() {
+    background: themed("tab_background");
+  }
 }
 
 .search-input {
-    @include themify() {
-        color: themed("text_color");
-    }
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 .list-item {
-    align-items: center;
-    margin-bottom: 40px;
+  align-items: center;
+  margin-bottom: 40px;
 
-    .item-left {
-        font-size: 36px;
-        font-weight: bold;
+  .item-left {
+    font-size: 36px;
+    font-weight: bold;
 
-        span {
-            color: #868D9A;
-            font-weight: initial;
-            font-size: 28px;
-        }
+    span {
+      color: #868d9a;
+      font-weight: initial;
+      font-size: 28px;
     }
+  }
 
-    .item-right {
-        text-align: right;
-        font-size: 30px;
-        font-weight: bold;
+  .item-right {
+    text-align: right;
+    font-size: 30px;
+    font-weight: bold;
 
-        .increase {
-            font-size: 26px;
-            font-weight: initial;
-        }
+    .increase {
+      font-size: 26px;
+      font-weight: initial;
     }
+  }
 
-    .green {
-        color: #5EBA89;
-    }
+  .green {
+    color: #5eba89;
+  }
 
-    .red {
-        color: #F6465D;
-    }
-
+  .red {
+    color: #f6465d;
+  }
 }
 
 .function-item {
-    align-items: center;
-    margin-bottom: 60px;
+  align-items: center;
+  margin-bottom: 60px;
 
-    .item-left {
-        font-size: 30px;
-        font-weight: bold;
-    }
+  .item-left {
+    font-size: 30px;
+    font-weight: bold;
+  }
 
-    .item-right {
-        color: #B8BDC5;
-        font-size: 30px;
-    }
+  .item-right {
+    color: #b8bdc5;
+    font-size: 30px;
+  }
 
-    .imgBox {
-        img {
-            width: 42px;
-            height: 42px;
-        }
+  .imgBox {
+    img {
+      width: 42px;
+      height: 42px;
     }
+  }
 }
 
 .star-icon {
-    color: #c8cad2;
+  color: #c8cad2;
 }
 
 .star-icon-check {
-    color: #FCD436;
+  color: #fcd436;
 }
 
 .symbol-name {
-    @include themify() {
-        color: themed("text_color");
-    }
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 .accountChange {
-    ::v-deep .van-tabs__nav {
-        background: transparent;
-    }
+  ::v-deep .van-tabs__nav {
+    background: transparent;
+  }
 
-    ::v-deep .van-tab {
-        @include themify() {
-            color: themed("text_color");
-        }
+  ::v-deep .van-tab {
+    @include themify() {
+      color: themed("text_color");
     }
+  }
 }
 
 .loading-box {
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 10;
-    width: 100%;
-    height: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    background: rgba(0, 0, 0, 0.4);
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 10;
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: rgba(0, 0, 0, 0.4);
 }
 </style>

--
Gitblit v1.9.3