Browse Source

页面修改优化

xiaomei 9 months ago
parent
commit
01e0e5c7c6

+ 22 - 0
src/api/home.js

@@ -776,4 +776,26 @@ export default {
       data
     })
   },
+  // 我的状态
+  getMyNftList(data) {
+    return request.request({
+      url: '/user/getMyNftList',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
+  // 上传头像
+  upload(data) {
+    return request.request({
+      url: '/common/upload',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
 }

BIN
src/assets/images/index/cj.png


BIN
src/assets/images/index/dd.png


BIN
src/assets/images/index/fx.png


BIN
src/assets/images/index/hc.png


BIN
src/assets/images/index/j0.png


BIN
src/assets/images/index/j1.png


BIN
src/assets/images/index/j2.png


BIN
src/assets/images/index/kf.png


BIN
src/assets/images/index/qb.png


BIN
src/assets/images/index/rb.png


BIN
src/assets/images/index/split.png


BIN
src/assets/images/index/sq.png


BIN
src/assets/images/index/sz.png


BIN
src/assets/images/lang1.png


BIN
src/assets/images/tabbar/shichang-active.png


BIN
src/assets/images/tabbar/shichang.png


+ 1 - 1
src/components/BottomNavigation.vue

@@ -23,7 +23,7 @@ export default {
       navigationList: [
         { img: require('@/assets/images/tabbar/home.png'), bright: require('@/assets/images/tabbar/home-active.png'), text: this.$t('lang47'), name: 'Index' },
         // { img: require('@/assets/images/tabbar/buy.png'), bright: require('@/assets/images/tabbar/buy-active.png'), text: this.$t('lang48'), name: 'trade' },
-        // { img: require('@/assets/images/tabbar/transfer.png'), bright: require('@/assets/images/tabbar/transfer-active.png'), text: this.$t('lang49'), name: 'transfer' },
+        { img: require('@/assets/images/tabbar/shichang.png'), bright: require('@/assets/images/tabbar/shichang-active.png'), text: this.$t('lang243'), name: 'transfer' },
         // { img: require('@/assets/images/tabbar/cha.png'), bright: require('@/assets/images/tabbar/cha-active.png'), text: this.$t('lang50'), name: '' },
         { img: require('@/assets/images/tabbar/community.png'), bright: require('@/assets/images/tabbar/community-active.png'), text: this.$t('lang215'), name: '' },
         { img: require('@/assets/images/tabbar/mine.png'), bright: require('@/assets/images/tabbar/mine-active.png'), text: this.$t('lang51'), name: 'mine' },

+ 22 - 1
src/language/en.json

@@ -240,5 +240,26 @@
   "lang239": "XX Chabao logistics fee needs to be deducted when picking up goods",
   "lang240": "Note: You need to pay the packaging and logistics fees of XX Chabao when picking up the goods",
   "lang241": "You need to pay the packaging and logistics fees of XX Chabao when picking up the goods",
-  "lang242": "Select quantity"
+  "lang242": "Select quantity",
+  "lang243": "Market",
+  "lang244": "Tea Rights Name",
+  "lang245": "Activity Market",
+  "lang246": "My Attention",
+  "lang247": "Price Sorting",
+  "lang248": "Hold Tea Rights",
+  "lang249": "Hold",
+  "lang250": "My Wallet",
+  "lang251": "My Order",
+  "lang252": "My Community",
+  "lang253": "Setting Center",
+  "lang254": "Digital Tea Rights",
+  "lang255": "Metaverse",
+  "lang256": "Synthesizable",
+  "lang257": "Hold",
+  "lang258": "Hot List of the Week",
+  "lang259": "Synthesis Center",
+  "lang260": "Lottery Center",
+  "lang261": "Online Customer Service",
+  "lang262": "Share Link",
+  "lang263": "Preferred Tea Rights"
 }

+ 50 - 1
src/language/zh.json

@@ -240,5 +240,54 @@
   "lang239": "提货需要扣除 XX 茶宝物流费用",
   "lang240": "备注:提货需支付包装及物流费共计 XX 茶宝",
   "lang241": "提货需支付 XX 茶宝包装及物流费用",
-  "lang242": "选择数量"
+  "lang242": "选择数量",
+  "lang243": "市场",
+  "lang244": "茶权名称",
+  "lang245": "活动市场",
+  "lang246": "我的关注",
+  "lang247": "价格排序",
+  "lang248": "持有茶权",
+  "lang249": "持有",
+  "lang250": "我的钱包",
+  "lang251": "我的订单",
+  "lang252": "我的社区",
+  "lang253": "设置中心",
+  "lang254": "数字茶权",
+  "lang255": "元宇宙",
+  "lang256": "可合成",
+  "lang257": "持有",
+  "lang258": "本周热榜",
+  "lang259": "合成中心",
+  "lang260": "抽奖中心",
+  "lang261": "在线客服",
+  "lang262": "分享链接",
+  "lang263": "优选茶权",
+  "lang264": "",
+  "lang265": "",
+  "lang266": "",
+  "lang267": "",
+  "lang268": "",
+  "lang269": "",
+  "lang270": "",
+  "lang271": "",
+  "lang272": "",
+  "lang273": "",
+  "lang274": "",
+  "lang275": "",
+  "lang276": "",
+  "lang277": "",
+  "lang278": "",
+  "lang279": "",
+  "lang280": "",
+  "lang281": "",
+  "lang282": "",
+  "lang283": "",
+  "lang284": "",
+  "lang285": "",
+  "lang286": "",
+  "lang287": "",
+  "lang288": "",
+  "lang289": "",
+  "lang290": "",
+  "lang291": ""
 }

+ 118 - 28
src/views/index/index.vue

@@ -1,28 +1,44 @@
 <template>
   <div>
     <div class="home_page">
-      <div class="pd">
-        <Header></Header>
+      <div>
+        <div class="pd">
+          <Header></Header>
+        </div>
 
         <!-- <div class="top">
           <img src="@/assets/images/index/cha.png" alt="" class="cha" />
           <van-field v-model="key" :placeholder="$t('lang4')" class="input" right-icon="search" @click="navigatorTo('transfer')" />
         </div> -->
-        <van-notice-bar class="notice" color="#000" background="#ffffff" :text="indexinfo.notice_list[0]?.title" @click="navigatorToPage('bulletinDetail', indexinfo.notice_list[0].id)">
-          <div slot="left-icon" class="notice-ico">{{ $t('lang3') }}</div>
-          <div slot="right-icon" @click="navigatorTo('bulletin')"><van-icon name="wap-nav" size="20" /></div>
-        </van-notice-bar>
-        <div class="banner">
-          <van-swipe :autoplay="3000" class="my-swipe" ref="swipeRef">
-            <van-swipe-item class="swipe-item" v-for="(item, index) in indexinfo.banner_list" :key="index">
-              <van-image style="width: 100%; height: 100%" radius="12" :src="item.img_url" />
-            </van-swipe-item>
-          </van-swipe>
+
+        <div class="con">
+          <div class="banner">
+            <van-swipe :autoplay="3000" class="my-swipe" ref="swipeRef">
+              <van-swipe-item class="swipe-item" v-for="(item, index) in indexinfo.banner_list" :key="index">
+                <van-image style="width: 100%; height: 100%" radius="12" :src="item.img_url" />
+              </van-swipe-item>
+            </van-swipe>
+          </div>
+          <van-notice-bar class="notice" color="#000" background="#ffffff" :text="indexinfo.notice_list[0]?.title" @click="navigatorToPage('bulletinDetail', indexinfo.notice_list[0].id)">
+            <div slot="left-icon" class="notice-ico">{{ $t('lang3') }}</div>
+            <div slot="right-icon" @click="navigatorTo('bulletin')"><van-icon name="wap-nav" size="20" color="#29b286" /></div>
+          </van-notice-bar>
+        </div>
+      </div>
+      <div class="pd navbox flex jsb">
+        <div class="navbox_item flex" v-for="(item, index) in navlist" :key="index" @click="navigatorTo(item.url)">
+          <img :src="item.icon" alt="" />
+          <span>{{ item.text }}</span>
         </div>
       </div>
+      <div class="split flex">
+        <img src="@/assets/images/index/split.png" alt="" />
+        <span>{{ $t('lang263') }}</span>
+        <img src="@/assets/images/index/split.png" alt="" />
+      </div>
       <!-- 热门抢购 -->
-      <div class="pd goods_box">
-        <div class="title">
+      <div class=" goods_box">
+        <!-- <div class="title">
           <div class="flex">
             <img src="@/assets/images/index/hot.png" class="good_icon" />
             <span>{{ $t('lang1') }}</span>
@@ -31,7 +47,7 @@
             <span class="all">{{ $t('lang5') }}</span>
             <van-icon name="arrow" color="#7f7f7f" size="14px" />
           </div>
-        </div>
+        </div> -->
         <div class="goods_list" v-for="(item, index) in product_list" :key="index" @click="navigatorToPage('GoodsDetail', item.id, item.product_id)">
           <van-image class="goods_list_img" radius="10" :src="item.products_list.thum" />
           <div class="right">
@@ -48,20 +64,20 @@
                   :format="`${$t('lang8')} DD ${$t('lang9')} HH ${$t('lang10')} mm ${$t('lang11')} ss ${$t('lang12')}`"
                 />
               </div>
-              <div class="yel" style="background-color: #f1f1f1;" v-else-if="item.status == 0">
-                <span class="count" style="color: #aaa;">{{ $t('lang72') }}</span>
+              <div class="yel" style="background-color: #f1f1f1" v-else-if="item.status == 0">
+                <span class="count" style="color: #aaa">{{ $t('lang72') }}</span>
               </div>
             </div>
             <span class="time_text">{{ $t('lang6') }} {{ item.cost_price }}{{ $t('lang174') }}</span>
             <div class="progress">
-              <van-progress :percentage="((item.num+item.init_num) / item.stock) * 100 || 0" class="pro" color="#29b286" :show-pivot="false" />
-              <span>{{ (item.num+item.init_num) }}/{{ item.stock }}{{ $t('lang7') }}</span>
+              <van-progress :percentage="((item.num + item.init_num) / item.stock) * 100 || 0" class="pro" color="#29b286" :show-pivot="false" />
+              <span>{{ item.num + item.init_num }}/{{ item.stock }}{{ $t('lang7') }}</span>
             </div>
           </div>
         </div>
       </div>
-      <!-- 寄售 -->
-      <div class="pd goods_box">
+
+      <!-- <div class="pd goods_box">
         <div class="title">
           <div class="flex">
             <img src="@/assets/images/index/change.png" class="good_icon" />
@@ -92,7 +108,7 @@
           </div>
         </div>
       </div>
-      <!-- 茶矿 -->
+      
       <div class="pd goods_box">
         <div class="title">
           <div class="flex">
@@ -116,7 +132,7 @@
             </div>
           </div>
         </div>
-      </div>
+      </div> -->
     </div>
     <!-- 绑定弹窗 -->
     <van-popup v-model="show" round style="width: 80%" :close-on-click-overlay="false">
@@ -171,6 +187,33 @@ export default {
       transfer_list: [],
       product_list: [],
       mortgage_list: [],
+      navlist: [
+        {
+          text: this.$t('lang258'),
+          icon: require('@/assets/images/index/rb.png'),
+          url: '',
+        },
+        {
+          text: this.$t('lang259'),
+          icon: require('@/assets/images/index/hc.png'),
+          url: '',
+        },
+        {
+          text: this.$t('lang260'),
+          icon: require('@/assets/images/index/cj.png'),
+          url: '',
+        },
+        {
+          text: this.$t('lang261'),
+          icon: require('@/assets/images/index/kf.png'),
+          url: '',
+        },
+        {
+          text: this.$t('lang262'),
+          icon: require('@/assets/images/index/fx.png'),
+          url: 'invite',
+        },
+      ],
     };
   },
   created() {
@@ -276,8 +319,13 @@ export default {
         }
       });
     },
-    navigatorTo(name) {
-      this.$router.push({ name });
+    navigatorTo(router) {
+      if (this.$route.name == router) return;
+      if (router != '') {
+        this.$router.push({ name: router });
+      } else {
+        this.$toast(this.$t('lang2'));
+      }
     },
     navigatorToPage(name, id, product_id) {
       this.$router.push({ name, query: { id: id, product_id: product_id } });
@@ -367,20 +415,28 @@ export default {
       margin-right: 10px;
     }
   }
+  .con {
+    margin: 14px;
+    border-radius: 12px;
+    background-color: #fff;
+  }
   .notice {
     font-size: 13px;
-    margin: 8px 0;
+    margin: 0px 4px 12px;
     .notice-ico {
+      color: #fff;
+      letter-spacing: 2px;
       padding: 0 8px;
       border-radius: 20px;
       margin-right: 10px;
-      background-color: #e8e8e8;
+      background-color: #29b286;
     }
   }
   ::v-deep .van-notice-bar {
     padding: 0 !important;
   }
   .banner {
+    margin: 8px 0 0;
     height: 160px;
     color: #fff;
     font-size: 22px;
@@ -421,13 +477,47 @@ export default {
       color: rgba(#999, 1);
     }
   }
+  .navbox {
+    margin: 14px;
+    border-radius: 12px;
+
+    &_item {
+      color: #000;
+      font-size: 10px;
+      font-weight: 550;
+      text-align: center;
+      flex-direction: column;
+      img {
+        width: 36px;
+        height: 36px;
+        margin-bottom: 4px;
+      }
+    }
+  }
+
+  .split {
+    color: #000;
+    justify-content: center;
+    span {
+      font-size: 17px;
+      font-weight: 550;
+      letter-spacing: 2px;
+      padding: 0 10px;
+    }
+    img {
+      width: 40px;
+    }
+    img:last-child {
+      transform: rotate(180deg);
+    }
+  }
 
   .goods_list {
     display: flex;
     // align-items: center;
     // justify-content: space-between;
     color: #000;
-    padding: 0;
+    padding: 12px;
     border-radius: 10px;
     // box-shadow: 0 4px 16px 0 rgba(53, 73, 93, 0.15);
     margin-bottom: 20px;

+ 340 - 30
src/views/mine/index.vue

@@ -1,31 +1,42 @@
 <template>
-  <div class="mine">
+  <div class="mine" @scroll="handleScroll">
     <div class="banner">
-      <div class="flex-col flex-ac">
+      <div class="flex-row">
         <div class="block_1">
-          <img src="@/assets/logo.png" class="avatar" />
+          <img :src="userinfo.avatar" class="avatar" />
+          <input type="file" @change="onFileChange" class="upload" accept="image/*" />
+          <!-- <van-uploader v-model="fileList" multiple :max-count="1" :after-read="afterRead" class="avatar"> </van-uploader> -->
         </div>
-        <div class="flex-col flex-ac">
-          <span class="text_1">{{ userinfo.nickname }}</span>
+        <div class="flex-col">
+          <span class="text_1">{{ userinfo.heading }}</span>
+          <div class="flex-row">
+            <span class="text_2">Uid:{{ userinfo.nickname }}</span>
+            <img src="@/assets/images/trade/copy.png" alt="" class="copys" @click="copy" :data-clipboard-text="this.userinfo.nickname" />
+          </div>
           <div class="flex-row">
             <span class="text_2">{{ $t('lang35') }}{{ userinfo.addressEncrypt }}</span>
-            <!-- <div class="text-wrapper_2"> -->
-            <!-- <span>复制</span> -->
             <img src="@/assets/images/trade/copy.png" alt="" class="copys" @click="copy" :data-clipboard-text="this.userinfo.address" />
-            <!-- </div> -->
           </div>
-          <img src="@/assets/images/lang.png" alt="" class="lang" @click="reckoningClick('language')" />
+          <div class="lang flex-col">
+            <img src="@/assets/images/lang1.png" alt="" class="lang_img" @click="reckoningClick('language')" />
+            <span>{{ $t('lang79') }}</span>
+          </div>
         </div>
       </div>
     </div>
     <div class="content">
-      <div class="balance_box">
+      <div class="navbox flex-row jsb">
+        <div class="navbox_item flex-row" v-for="(item, index) in navlist" :key="index" @click="navigatorTo(item.url)">
+          <img :src="item.icon" alt="" />
+          <span>{{ item.text }}</span>
+        </div>
+      </div>
+      <!-- <div class="balance_box">
         <div class="balance_li" @click="reckoningClick('assets')">
           <div class="left">
             <span class="amount">{{ $t('lang36') }}</span>
           </div>
           <div class="right">
-            <!-- <img src="@/assets/images/usdt.png" class="icon1" /> -->
             <span>{{ $t('lang37') }}</span>
           </div>
         </div>
@@ -34,12 +45,11 @@
             <span class="amount">{{ $t('lang218') }}</span>
           </div>
           <div class="right">
-            <!-- <img src="@/assets/images/mine.png" class="icon2" /> -->
             <span>{{ $t('lang39') }}</span>
           </div>
         </div>
-      </div>
-      <div class="list">
+      </div> -->
+      <!-- <div class="list">
         <div @click="switchovers('myTeaFriends')" class="li">
           <div class="li_left">
             <div class="imgbox">
@@ -58,15 +68,6 @@
           </div>
           <van-icon name="arrow" color="#aaaaaa" size="16" />
         </div>
-        <!-- <div @click="switchovers('share')" class="li">
-          <div class="li_left">
-            <div class="imgbox">
-              <img src="@/assets/images/trade/detail.png" class="li_img" />
-            </div>
-            <span>{{ $t('lang205') }}</span>
-          </div>
-          <van-icon name="arrow" color="#aaaaaa" size="16" />
-        </div> -->
         <div @click="switchovers('1')" class="li">
           <div class="li_left">
             <div class="imgbox">
@@ -85,6 +86,34 @@
           </div>
           <van-icon name="arrow" color="#aaaaaa" size="16" />
         </div>
+      </div> -->
+    </div>
+    <div>
+      <van-tabs @click="onClick" color="#29B286" title-active-color="#29B286">
+        <van-tab v-for="(item, index) in statusList" :key="index" :title="item.key"> </van-tab>
+      </van-tabs>
+    </div>
+    <div class="list_box">
+      <div class="flex-row jsb">
+        <div class="small_nav flex-row">
+          <span :class="[index == smallNavIndex ? 'small_nav_item nav_active' : 'small_nav_item']" v-for="(item, index) in smallNav" :key="index">{{ item.key }}</span>
+        </div>
+        <div class="flex-row">
+          <van-radio-group v-model="radio">
+            <van-radio name="1" checked-color="#29b286" icon-size="16px">{{ $t('lang256') }}</van-radio>
+          </van-radio-group>
+          <van-icon name="search" size="22" color="#000000" />
+        </div>
+      </div>
+      <div class="record flex-row jsb" v-if="nft_list.length > 0">
+        <div class="record_item flex-col" v-for="(item, index) in nft_list" :key="index" @click="toTeaRight('teaRights', item)">
+          <img :src="item.img_url" alt="" />
+          <span class="record_item_name">{{ item.name }}</span>
+          <span class="record_item_count">{{ $t('lang257') }} {{ item.hold_num }}</span>
+        </div>
+      </div>
+      <div class="record bare" v-else>
+        <span>{{ $t('lang82') }}</span>
       </div>
     </div>
     <!-- 上级弹窗 -->
@@ -133,6 +162,77 @@ export default {
       },
       receiptAmount: 0, // 实际到账金额
       superiorShow: false, //上级弹窗
+      navlist: [
+        {
+          text: this.$t('lang250'),
+          icon: require('@/assets/images/index/qb.png'),
+          url: 'assets',
+        },
+        {
+          text: this.$t('lang251'),
+          icon: require('@/assets/images/index/dd.png'),
+          url: '',
+        },
+        {
+          text: this.$t('lang252'),
+          icon: require('@/assets/images/index/sq.png'),
+          url: '',
+        },
+        {
+          text: this.$t('lang253'),
+          icon: require('@/assets/images/index/sz.png'),
+          url: 'setting',
+        },
+      ],
+      fileList: [
+        {
+          url: '',
+        },
+      ],
+      nft_list: [],
+      statusList: [
+        //0总览 1寄售中 2已寄售 3存储中 4已赠送 5已提货
+        {
+          key: this.$t('lang248'),
+          value: 0,
+        },
+        {
+          key: this.$t('lang141'),
+          value: 1,
+        },
+        {
+          key: this.$t('lang221'),
+          value: 2,
+        },
+        {
+          key: this.$t('lang222'),
+          value: 3,
+        },
+        {
+          key: this.$t('lang193'),
+          value: 4,
+        },
+        {
+          key: this.$t('lang223'),
+          value: 5,
+        },
+      ],
+      chooseStatus: 0,
+      page: 1,
+      smallNav: [
+        {
+          key: this.$t('lang254'),
+          value: 0,
+        },
+        {
+          key: this.$t('lang255'),
+          value: 1,
+        },
+      ],
+      smallNavIndex: 0,
+      radio: '',
+      selectedFile: null, // 存储选中的文件
+      imageUrl: null, // 存储图片预览的URL
     };
   },
   created() {
@@ -147,9 +247,44 @@ export default {
         this.userinfo = JSON.parse(localStorage.getItem('userinfo'));
         this.userinfo.addressEncrypt = this.userinfo.address.substring(0, 5) + '****' + this.userinfo.address.substring(this.userinfo.address.length - 5, this.userinfo.address.length);
         this.getUserInfo();
+        this.getNftList();
       }
     },
+    afterRead(file) {
+      // 此时可以自行将文件上传至服务器
+      file.status = 'uploading';
+      file.message = '上传中...';
 
+      setTimeout(() => {
+        file.status = 'failed';
+        file.message = '上传失败';
+      }, 1000);
+    },
+    submit() {},
+    onClick(status) {
+      // console.log(status);
+      this.chooseStatus = status;
+      this.page = 1;
+      this.nft_list = [];
+      this.getNftList();
+    },
+    getNftList() {
+      homeApi.getMyNftList({ page: this.page, type_id: this.chooseStatus }).then(res => {
+        if (res.code == 200) {
+          this.total = res.data.total;
+          if (this.nft_list.length >= res.data.total) {
+            this.page = -1; // 重置为 -1,表示没有更多数据
+          } else {
+            this.nft_list = [...this.nft_list, ...res.data.data];
+            // console.log(this.nft_list.length);
+            if (this.nft_list.length >= res.data.total) {
+              this.page = -1; // 重置为 -1,表示没有更多数据
+            }
+          }
+        } else {
+        }
+      });
+    },
     switchovers(router) {
       console.log(router);
       if (router == '') {
@@ -164,6 +299,34 @@ export default {
     reckoningClick(name) {
       this.$router.push({ name: name });
     },
+    toTeaRight(name, item) {
+      this.$router.push({ name: name, query: { product_id: item.product_id, type_id: this.chooseStatus } });
+    },
+    onFileChange(event) {
+      console.log(event.target.files[0]);
+
+      this.selectedFile = event.target.files[0]; // 获取选中的文件
+      const formData = new FormData();
+      formData.append('file', this.selectedFile);
+      homeApi.upload(formData).then(res => {
+        if (res.code == 200) {
+          this.getUserInfo();
+          homeApi.setUserInfo({ avatar: res.data.fullurl }).then(res1 => {
+            if (res1.code == 200) {
+              this.getUserInfo();
+            }
+          });
+        } else {
+        }
+      });
+    },
+    previewImage() {
+      const reader = new FileReader();
+      reader.onload = e => {
+        this.imageUrl = e.target.result; // 设置图片预览的URL
+      };
+      reader.readAsDataURL(this.selectedFile); // 读取文件内容,并显示为DataURL格式的base64编码字符串
+    },
     getUserInfo() {
       homeApi.getUserInfo({}).then(res => {
         if (res.code == 200) {
@@ -173,6 +336,22 @@ export default {
         }
       });
     },
+    handleScroll(event) {
+      const container = event.target;
+      const scrollTop = container.scrollTop; // 滚动距离
+      const scrollHeight = container.scrollHeight; // 内容总高度
+      const clientHeight = container.clientHeight; // 可视区域高度
+      // 判断是否滑动到底部
+      if (scrollTop + clientHeight >= scrollHeight - 10) {
+        // console.log(this.page);
+        // console.log('到底部');
+
+        if (this.page != -1) {
+          this.page++; // 页数加 1
+          this.getNftList(); // 触发加载更多
+        }
+      }
+    },
     copy() {
       if (this.userinfo.address) {
         var clipboard = new Clipboard('.copys');
@@ -186,6 +365,14 @@ export default {
         });
       }
     },
+    navigatorTo(router) {
+      if (this.$route.name == router) return;
+      if (router != '') {
+        this.$router.push({ name: router });
+      } else {
+        this.$toast(this.$t('lang2'));
+      }
+    },
   },
   computed: {
     ...mapState(['account']),
@@ -208,13 +395,15 @@ export default {
 
 <style lang="less" scoped>
 .mine {
-  min-height: 100vh;
+  height: 100vh;
+  overflow: scroll;
   .banner {
     // display: flex;
     // justify-content: space-between;
     background: linear-gradient(to bottom right, #29b286, #dae9fd);
-    padding: 30px 16px 60px;
+    padding: 30px 16px 30px;
     .block_1 {
+      position: relative;
       box-shadow: 0px 0px 29px 0px rgba(97, 142, 184, 0.19);
       // background-color: rgba(169, 191, 245, 1);
       border-radius: 50%;
@@ -227,6 +416,27 @@ export default {
         width: 100%;
         height: 100%;
         background-color: #fff;
+        // /deep/ .van-uploader__preview,
+        // /deep/.van-image,
+        // /deep/.van-uploader__wrapper,
+        // /deep/.van-uploader__upload {
+        //   width: 68px !important;
+        //   height: 68px !important;
+        //   margin: 0;
+        // }
+        // /deep/ .van-uploader__upload,
+        // /deep/ .van-image__error,
+        // /deep/ .van-image__loading {
+        //   background-color: rgba(#000, 0) !important;
+        // }
+      }
+      .upload {
+        width: 68px;
+        height: 68px;
+        left: 0;
+        pointer-events: auto;
+        position: absolute;
+        opacity: 0;
       }
     }
     .copys {
@@ -235,10 +445,16 @@ export default {
       margin-left: 4px;
     }
     .lang {
-      width: 26px;
       position: absolute;
       right: 14px;
       top: 14px;
+      color: #373737;
+      font-size: 10px;
+      align-items: center;
+      &_img {
+        width: 20px;
+        margin-bottom: 2px;
+      }
     }
     .grade {
       display: flex;
@@ -252,14 +468,15 @@ export default {
       }
     }
     .text_1 {
-      color: rgba(6, 12, 80, 1);
+      color: rgb(0, 0, 0);
       font-size: 16px;
       font-weight: normal;
-      padding: 8px 0 6px;
+      padding: 8px 0 0;
     }
     .text_2 {
       color: rgba(#000, 0.6);
       font-size: 13px;
+      padding-top: 3px;
     }
     .text-wrapper_1 {
       font-size: 11px;
@@ -290,10 +507,32 @@ export default {
     display: flex;
     align-items: center;
   }
+  .jsb {
+    justify-content: space-between;
+  }
   .content {
-    padding: 0 16px 100px;
-    margin-top: -40px;
+    padding: 16px;
     color: #000;
+    margin: 8px 0;
+    background-color: #fff;
+
+    .navbox {
+      // border-radius: 12px;
+      align-items: flex-start;
+      &_item {
+        width: 25%;
+        color: #000;
+        font-size: 13px;
+        font-weight: 550;
+        text-align: center;
+        flex-direction: column;
+        img {
+          width: 30px;
+          height: 30px;
+          margin-bottom: 6px;
+        }
+      }
+    }
     .balance_box {
       display: flex;
       align-items: center;
@@ -423,6 +662,72 @@ export default {
     }
   }
 
+  .list_box {
+    padding: 14px;
+    background-color: #fff;
+
+    .small_nav {
+      font-size: 13px;
+      padding: 2px;
+      border-radius: 20px;
+
+      background-color: #f5f5f5;
+      &_item {
+        color: #8b8b8b;
+        display: block;
+        text-align: center;
+        min-width: 70px;
+        padding: 2px 6px;
+        margin: 1px;
+        border-radius: 20px;
+        overflow: hidden; //超出的文本隐藏
+        text-overflow: ellipsis; //溢出用省略号显示
+        white-space: nowrap; //溢出不换行
+      }
+    }
+    .nav_active {
+      color: #29b286;
+      background-color: #fff !important;
+    }
+
+    .record {
+      color: #000;
+      padding: 0 16px 100px;
+      flex-wrap: wrap;
+
+      &_item {
+        width: 46%;
+        padding: 16px 0 0;
+
+        img {
+          width: 140px;
+          height: 140px;
+          border-radius: 10px;
+        }
+        &_name {
+          font-size: 15px;
+          font-weight: 600;
+          padding: 8px 0 4px;
+          height: 32px;
+          overflow: hidden; //超出的文本隐藏
+          text-overflow: ellipsis; //溢出用省略号显示
+          white-space: nowrap; //溢出不换行
+        }
+        &_count {
+          color: #999999;
+          font-size: 12px;
+        }
+      }
+    }
+    .bare {
+      text-align: center;
+      font-size: 14px;
+      padding: 60px 14px 60px;
+      color: #aaa;
+      background-color: #fff;
+    }
+  }
+
   .withdrawPopup {
     padding: 20px 30px;
     color: #666666;
@@ -470,4 +775,9 @@ export default {
 /deep/ .van-field__body {
   padding: 10px 10px;
 }
+
+/deep/ .van-radio__label {
+  font-size: 13px;
+  padding-right: 10px;
+}
 </style>

+ 4 - 4
src/views/mine/setting.vue

@@ -7,12 +7,12 @@
 
     <div class="content">
       <div class="list">
-        <div class="li">
+        <div @click="showPopup(0)" class="li">
           <div class="li_left">
             <span>{{ $t('lang97') }}</span>
           </div>
-          <span style="color: #aaaaaa" v-if="userinfo.nickname">{{ userinfo.nickname }}</span>
-          <span style="color: #aaaaaa" v-else></span>
+          <span style="color: #aaaaaa" v-if="userinfo.heading">{{ userinfo.heading }}</span>
+          <span style="color: #aaaaaa" v-else>{{ $t('lang98') }}</span>
         </div>
         <div @click="showPopup(1)" class="li">
           <div class="li_left">
@@ -190,7 +190,7 @@ export default {
       }
       let params = {};
       if (this.editType == 0) {
-        params.nickname = this.inputValue;
+        params.heading = this.inputValue;
       } else if (this.editType == 1) {
         params.name = this.inputValue;
       } else if (this.editType == 2) {

+ 6 - 9
src/views/mine/teaRights.vue

@@ -8,18 +8,15 @@
       <span v-for="(item, index) in navList" :key="index" @click="changeNav(item, index)" :style="{ color: navIndex == index ? '#000' : '' }">{{ item.key }}</span>
     </div> -->
     <div class="total_box">
-      <!-- <div>
-        <span class="text">{{ $t('lang80') }}({{ $t('lang174') }})</span>
-      </div> -->
       <div class="total">
         {{ $t('lang224') }}<span>{{ rwa_num || 0 }}</span> {{ $t('lang225') }}
       </div>
       <div @click="navigation('operationLog')" class="mx">{{ $t('lang227') }}</div>
     </div>
 
-    <van-tabs @click="onClick" color="#29B286" title-active-color="#29B286">
+    <!-- <van-tabs @click="onClick" color="#29B286" title-active-color="#29B286">
       <van-tab v-for="(item, index) in navList" :key="index" :title="item.key"> </van-tab>
-    </van-tabs>
+    </van-tabs> -->
     <!-- 资产 -->
     <div class="">
       <div class="pd1 goods_box" v-if="nft_list.length > 0">
@@ -28,7 +25,7 @@
           <div class="tags" v-if="item.status == 2">{{ $t('lang141') }}</div>
           <div class="tags1" v-if="item.status == 3">{{ $t('lang142') }}</div>
           <div class="f">
-            <van-image class="goods_list_img" radius="10" :src="item.img_url.split(',')[0]" />
+            <van-image class="goods_list_img" radius="10" :src="item.img_url" />
             <div class="right" style="flex: 2">
               <span class="title">{{ item.name }}</span>
               <div class="green">{{ item.title }}</div>
@@ -124,7 +121,7 @@
         <div class="title">{{ $t('lang157') }}</div>
         <van-address-edit :area-list="areaList" :address-info="AddressInfo" show-search-result :save-button-text="$t('lang111')" :area-columns-placeholder="[]" @save="onSave" />
         <!-- <span>{{ $t('lang233') + ' ' + logistics_freight + ' ' + $t('lang174') + $t('lang234') }}</span> -->
-         <span>{{ $t('lang240').replace('XX', logistics_freight) }}</span>
+        <span>{{ $t('lang240').replace('XX', logistics_freight) }}</span>
       </div>
     </van-popup>
     <!-- 赠送 -->
@@ -282,7 +279,7 @@ export default {
       this.getNftList();
     },
     getNftList() {
-      homeApi.getNftList({ page: this.page, type_id: this.chooseStatus }).then(res => {
+      homeApi.getNftList({ page: this.page, product_id: this.$route.query.product_id, type_id: this.$route.query.type_id }).then(res => {
         if (res.code == 200) {
           this.total = res.data.total;
           if (this.nft_list.length >= res.data.total) {
@@ -325,7 +322,7 @@ export default {
     },
     onSave(e) {
       // this.$toast('save');
-      let _this = this
+      let _this = this;
       Dialog.confirm({
         title: _this.$t('lang136'),
         message: _this.$t('lang241').replace('XX', _this.logistics_freight),

+ 47 - 10
src/views/mine/transfer.vue

@@ -1,24 +1,41 @@
 <template>
   <div>
     <!-- <Header :logoImg="indexinfo.system_logo" style="margin-top: 20px"></Header> -->
-    <div class="head">
+    <!-- <div class="head">
       <img @click="back" src="@/assets/images/back.png" class="arrow_img" />
       <span>{{ $t('lang216') }}</span>
-    </div>
+    </div> -->
+    <van-tabs v-model="navActive" color="#29B286" title-active-color="#29B286" @disabled="onClickDisabled">
+      <van-tab :title="$t('lang216')"></van-tab>
+      <van-tab :title="$t('lang245')" disabled></van-tab>
+      <van-tab :title="$t('lang246')" disabled></van-tab>
+    </van-tabs>
     <div class="home_page" @scroll="handleScroll">
       <div class="pd1">
         <van-field v-model="key" :placeholder="$t('lang4')" class="input" right-icon="search" @click-right-icon="search" />
-        <div class="banner">
+        <!-- <div class="banner">
           <van-swipe :autoplay="3000" class="my-swipe" ref="swipeRef">
             <van-swipe-item class="swipe-item" v-for="(item, index) in indexinfo.banner_list" :key="index">
               <van-image style="width: 100%; height: 100%" radius="12" :src="item.img_url" />
             </van-swipe-item>
           </van-swipe>
+        </div> -->
+        <div class="sort flex jsb">
+          <span>{{ $t('lang244') }}</span>
+
+          <div class="flex">
+            <div class="flex" @click="handlePriceSort">
+              <span>{{ $t('lang247') }}</span>
+              <img src="@/assets/images/index/j0.png" alt="" style="width: 16px" v-if="sort == 0" />
+              <img src="@/assets/images/index/j2.png" alt="" style="width: 16px" v-else-if="sort == 1" />
+              <img src="@/assets/images/index/j1.png" alt="" style="width: 16px" v-else-if="sort == 2" />
+            </div>
+            <van-dropdown-menu active-color="#3d3d3d">
+              <!-- <van-dropdown-item v-model="sort" :options="option1" @change="search" /> -->
+              <van-dropdown-item v-model="type_id" :options="indexinfo.type_list" @change="search" />
+            </van-dropdown-menu>
+          </div>
         </div>
-        <van-dropdown-menu active-color="#3d3d3d">
-          <van-dropdown-item v-model="sort" :options="option1" @change="search" />
-          <van-dropdown-item v-model="type_id" :options="indexinfo.type_list" @change="search" />
-        </van-dropdown-menu>
       </div>
       <div class="pd goods_box">
         <div class="goods_list jsb" v-for="(item, index) in list" :key="index">
@@ -43,6 +60,7 @@
         </div>
       </div>
     </div>
+    <BottomNavigation></BottomNavigation>
   </div>
 </template>
 
@@ -91,6 +109,7 @@ export default {
       ],
       list: [],
       page: 1,
+      navActive: 0,
     };
   },
   created() {
@@ -172,6 +191,21 @@ export default {
     handleExpand() {
       this.isExpand = !this.isExpand;
     },
+    handlePriceSort() {
+      console.log(this.sort);
+
+      if (this.sort == 0) {
+        this.sort = 1;
+      } else if (this.sort == 1) {
+        this.sort = 2;
+      } else if (this.sort == 2) {
+        this.sort = 1;
+      }
+      this.search();
+    },
+    onClickDisabled(name, title) {
+      this.$toast(this.$t("lang2"))
+    },
   },
   computed: {
     ...mapState(['account']),
@@ -213,7 +247,7 @@ export default {
   }
 }
 .home_page {
-  padding: 50px 0 100px;
+  padding: 2px 0 100px;
   height: 100vh;
   overflow: auto;
 
@@ -230,7 +264,7 @@ export default {
       // line-height: 35px;
       border: 1px solid #29b286;
       border-radius: 20px;
-      margin: 10px 0 20px;
+      margin: 10px 0 0px;
       ::v-deep .van-field__control {
         padding: 6px 12px;
       }
@@ -320,7 +354,10 @@ export default {
       margin-right: 5px;
     }
   }
-
+  .sort {
+    color: #3d3d3d;
+    font-size: 14px;
+  }
   .goods_list {
     display: flex;
     // align-items: center;