Ver código fonte

添加获取代币接口

wkw 3 semanas atrás
pai
commit
5e5c32a413

+ 1 - 0
src/api/axios.js

@@ -26,6 +26,7 @@ const pathArr = ["/api/admin/system/login", "/api/logout"];
 
 axiosInstance.interceptors.request.use(
   (config) => {
+    console.log(config)
     const systemStore = useSystemStore();
     systemStore.localLoading(true);
 

+ 9 - 0
src/api/path/login.api.js

@@ -1,5 +1,9 @@
 import service from '../axios'
 
+// 登录
+export function walletLoginNew(param) {
+  return service.post('login/walletLoginNew',param);
+}
 
 // * 获取网络信息
 export function getNetwork(param) {
@@ -9,4 +13,9 @@ export function getNetwork(param) {
 // 获取钱包地址
 export function createAccent(param) {
   return service.post('createAccont', param );
+}
+
+// 获取代币地址
+export function hotTokens(param) {
+  return service.get('hot-tokens', {params: param});
 }

+ 1 - 1
src/stores/modules/walletStore.js

@@ -57,7 +57,7 @@ export const useWalletStore = defineStore("useWalletStore", {
         return "0";
       }
     },
-    async loginWithPrivateKey(password = "") {
+    async loginWithPrivateKey() {
       this.loading = true;
       this.error = null;
       try {

+ 46 - 22
src/views/wallet/index.vue

@@ -1,6 +1,5 @@
 <template>
     <div class="container">
-      <!-- <div class="bg-img"></div> -->
       <svg-icon name="wallet-bg" class="bg-img" />
       <div class="user-info-body">
         <div class="user-info-lf">
@@ -12,18 +11,18 @@
           />
           <div class="user-info">
             <div class="user-info-name" @click="showWallet = true">
-              <div>Wallet</div>
+              <div>{{walletStore.username}}</div>
               <svg-icon style="width: 16px; height: 16px;margin-left: 3px;" name="down" />
             </div>
             <div class="user-info-key-body">
-              <span class="user-info-key-body-text">0xF3fefE…EcaB</span>
+              <span class="user-info-key-body-text">{{ formatAddress(walletStore.account) }}</span>
               <svg-icon style="width: 16px; height: 16px;" name="copy" />
             </div>
           </div>
         </div>
         <div class="network">
-          <svg-icon style="width: 20px; height: 20px;" name="acc" />
-          <div class="network-name">ACC</div>
+          <van-image width="20px" height="20px" round :src="walletStore.accountIcon"/>
+          <div class="network-name">{{walletStore.accountName}}</div>
         </div>
       </div>
       <div class="amount">
@@ -32,7 +31,7 @@
           <div class="amount-item">
             <div class="item-text">
               <svg-icon class="my" style="width: 28px; height: 28px;" name="my" />
-              <div>{{isShow?'2,536.00':'****'}}</div>
+              <div>{{isShow?totalMoney:'****'}}</div>
             </div>
             <svg-icon  style="width: 16px; height: 16px;" :name="isShow?'eyes':'seyes'" @click="isShow = !isShow"/>
           </div>
@@ -67,14 +66,14 @@
           <svg-icon style="width: 24px; height: 24px;" name="add" @click="changePop(1)"/>
         </div>
         <div class="list-ul">
-          <div class="list-li" v-for="item in 10" @click="changePop(2)">
+          <div class="list-li" v-for="item in hotTokensList" @click="changePop(2)">
             <div class="list-li-lf">
-              <svg-icon style="width: 30px; height: 30px;margin-right: 8px;" name="acc" />
-              <div>ACC</div>
+              <van-image width="30px" height="30px" round :src="item.logo"/>
+              <div style="margin-left: 8px;">{{item.name}}</div>
             </div>
             <div class="list-li-ri">
-              <div>6.6476474848</div>
-              <div class="list-li-ri-num">$6.6476474848</div>
+              <div>{{item.balance}}</div>
+              <div class="list-li-ri-num">${{item.money}}</div>
             </div>
           </div>
         </div>
@@ -87,12 +86,12 @@
           </div>
           <div class="tree">
             <div class="tree-lf">
-              <div class="tree-lf-icon" v-for="(item,i) in networkList" :class="i == 0?'active-bg':''">
+              <div class="tree-lf-icon" v-for="(item,i) in networkList" :class="netWorkIndex == i?'active-bg':''" @click="changeNetwork(i)">
                 <van-image lazy-load class="network-item-icon" :src="item.icon" />
               </div>
             </div>
             <div class="tree-ri">
-              <div class="tree-ri-title">ACC</div>
+              <div class="tree-ri-title">{{networkList[netWorkIndex].name}}</div>
               <div class="tree-ul">
                 <div class="tree-li" v-for="(item,i) in 10" :class="i == 0?'tree-active':''">
                   <van-image
@@ -127,15 +126,20 @@
           </div>
           <!-- 1 -->
           <div class="pop-ul" v-if="type == 1">
-            <div class="pop-li" v-for="(item,i) in 3">
+            <div class="pop-li" v-for="(item,i) in hotTokensList">
               <div class="pop-li-lf">
-                <svg-icon style="width: 32px; height: 32px;margin-right: 6px;" name="acc" />
-                <div>
-                  <div>STT</div>
-                  <div class="pop-address">0x712f...7b27</div>
+                <van-image
+                  width="32px"
+                  height="32px"
+                  round
+                  :src="item.logo"
+                />
+                <div style="margin-left: 6px;">
+                  <div>{{item.name}}</div>
+                  <div class="pop-address">{{ formatAddress(item.address) }}</div>
                 </div>
               </div>
-              <svg-icon style="width: 20px; height: 20px;" :name="i == 0?'add-icon':'del-icon'" />
+              <svg-icon style="width: 20px; height: 20px;" :name="item.hide?'add-icon':'del-icon'" />
             </div>
           </div>
           <!-- 2 -->
@@ -177,7 +181,7 @@
   
   <script setup>
   import { useRouter } from 'vue-router'
-  import { getNetwork } from '@/api/path/login.api'
+  import { getNetwork,hotTokens } from '@/api/path/login.api'
   import { useWalletStore } from "@/stores/modules/walletStore";
   const router = useRouter();
   const walletStore = useWalletStore();
@@ -187,6 +191,9 @@
   const showWallet = ref(false);
   const showHistory = ref(false);
   const networkList = ref([]);
+  const hotTokensList = ref([]);
+  const netWorkIndex = ref(0);
+  const totalMoney = ref(0);//总数
   const type = ref('');
   const goToPage = (url) => {
     router.push(url)
@@ -197,6 +204,9 @@
   }
   // 添加钱包
   const addWallet = () => {
+    walletStore.accountName = networkList.value[netWorkIndex.value].name
+    walletStore.accountIcon = networkList.value[netWorkIndex.value].icon
+    walletStore.rpcUrl = networkList.value[netWorkIndex.value].url
     router.push({
       path: '/login',
       query:{
@@ -204,14 +214,28 @@
       }
     })
   }
+  // 网络数据
   const initNetwork =  async () => {
     const { data } = await getNetwork({})
     networkList.value = data
   }
+  // 切换网络
+  const changeNetwork = (i) => {
+    netWorkIndex.value = i;
+  }
+  // 代币数据
+  const gethotTokens = async () => {
+    const {data} = await hotTokens({chain: walletStore.accountName,address:walletStore.account});
+    hotTokensList.value = data;
+    totalMoney.value = data.reduce((sum, item) => sum + Number(item.money || 0), 0).toFixed(8);
+  }
+  const formatAddress = (address) => {
+    if (!address) return '';
+    return address.slice(0, 8) + '...' + address.slice(-6);
+  };
   onMounted(async ()=>{
     initNetwork();
-    const aa = await walletStore.getBalance();
-    console.log("---",aa)
+    gethotTokens();
   })
   </script>
   

+ 31 - 10
src/views/wallet/transferDetail/index.vue

@@ -4,8 +4,8 @@
             <div class="card-box">
                 <div class="card-title">选择币种</div>
                 <div class="card-input" @click="selectPop(1)">
-                    <svg-icon style="width: 30px; height: 30px;" name="acc" />
-                    <div class="card-text">STT</div>
+                    <van-image width="30px" height="30px" round :src="selecctList.logo"/>
+                    <div class="card-text">{{selecctList.name}}</div>
                     <svg-icon style="width: 16px; height: 16px;" name="down" />
                 </div>
             </div>
@@ -30,14 +30,14 @@
             <div class="card-box">
                 <div class="card-title">
                     <div>转账数量</div>
-                    <div>可用:18.34543534534</div>
+                    <div>可用:{{selecctList.balance}} {{ selecctList.name }}</div>
                 </div>
                 <div class="card-input">
                     <van-field v-model="unitNum" placeholder="0.00" />
                     <div class="card-input-right">
-                        <div>STT</div>
+                        <div>{{ selecctList.name }}</div>
                         <div class="line"></div>
-                        <div class="all">全部</div>
+                        <div class="all" @click="unitNum = selecctList.balance">全部</div>
                     </div>
                 </div>
             </div>
@@ -57,14 +57,14 @@
                     <div class="title">{{selectType == 1?'选择币种':'交易详情'}}</div>
                 </div>
                 <div class="list-ul" v-if="selectType == 1">
-                    <div class="list-li" v-for="item in 10" @click="showHistory = true">
+                    <div class="list-li" v-for="item in hotTokensList" @click="changeList(item)" :key="item.name">
                         <div class="list-li-lf">
-                            <svg-icon style="width: 42px; height: 42px;margin-right: 12px;" name="acc" />
-                            <div>ACC</div>
+                            <van-image width="42px" height="42px" round :src="item.logo"/>
+                            <div style="margin-left: 12px;">{{item.name}}</div>
                         </div>
                         <div class="list-li-ri">
-                            <div>6.6476474848</div>
-                            <div class="list-li-ri-num">$6.6476474848</div>
+                            <div>{{item.balance}}</div>
+                            <div class="list-li-ri-num">${{item.money}}</div>
                         </div>
                     </div>
                 </div>
@@ -93,11 +93,24 @@
 
 <script setup>
 import { useRouter } from 'vue-router'
+import { useWalletStore } from "@/stores/modules/walletStore";
+import { hotTokens } from '@/api/path/login.api'
 const router = useRouter();
+const walletStore = useWalletStore();
+
+
 const walletAddress = ref('')
 const unitNum = ref('')
 const showWallet = ref(false)
 const selectType = ref('');
+const hotTokensList = ref([]);
+const selecctList = ref({})
+
+const gethotTokens = async () => {
+    const {data} = await hotTokens({chain: walletStore.accountName,address:walletStore.account});
+    hotTokensList.value = data;
+    selecctList.value = data[0];
+}
 const goToAddress = () => {
     router.push('addressManagement')
 }
@@ -105,6 +118,14 @@ const selectPop = (type) => {
     showWallet.value = true;
     selectType.value = type;
 }
+const changeList = (item) => {
+    selecctList.value = item;
+    showWallet.value = false;
+    unitNum.value = ''
+}
+onMounted(async ()=>{
+    gethotTokens();
+  })
 </script>
 
 <style lang="less" scoped>