xiaomei 8 miesięcy temu
rodzic
commit
214bf9bfaa

+ 35 - 2
src/api/home.js

@@ -743,7 +743,7 @@ export default {
       data
     })
   },
-  //赠送茶宝说明
+  //转账茶宝说明
   chabaoInfo(data) {
     return request.request({
       url: 'ledger/chabao',
@@ -754,7 +754,7 @@ export default {
       data
     })
   },
-  //赠送茶宝
+  //转账茶宝
   chabaoGift(data) {
     return request.request({
       url: '/ledger/chabaoGift',
@@ -798,4 +798,37 @@ export default {
       data
     })
   },
+  // 获取福利信息
+  getNewbieWeal(data) {
+    return request.request({
+      url: '/Airdrop/getNewbieWeal',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
+  // 领取新人茶权
+  setNewbieWeal(data) {
+    return request.request({
+      url: '/Airdrop/setNewbieWeal',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
+  // 领取超级福利
+  setSuperWeal(data) {
+    return request.request({
+      url: '/Airdrop/setSuperWeal',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
 }

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


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


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


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


BIN
src/assets/images/index/fl.jpg


+ 25 - 1
src/language/en.json

@@ -261,5 +261,29 @@
   "lang260": "Lottery Center",
   "lang261": "Online Customer Service",
   "lang262": "Share Link",
-  "lang263": "Preferred Tea Rights"
+  "lang263": "Preferred Tea Rights",
+  "lang264": "Newcomer Benefits",
+  "lang265": "Newcomer Tea Rights",
+  "lang266": "Receive",
+  "lang267": "Super Benefits",
+  "lang268": "Three Steps for Newcomers:",
+  "lang269": "1. Register for a digital identity 2. Receive newcomer benefits 3. Join the DAO community",
+  "lang270": "Set",
+  "lang271": "RWA Tea “Cha Shi Tong Bao·ETH” * 10 sets",
+  "lang272": "Has been airdropped to your Tea Rights account, please check.",
+  "lang273": "“Super Benefits”",
+  "lang274": "Please receive within 24 hours",
+  "lang275": "RWA Tea",
+  "lang276": "“Tea World Tongbao·ETH”",
+  "lang277": "10 Sets",
+  "lang278": "Transfer",
+  "lang279": "Confirm transfer",
+  "lang280": "Are you sure to transfer to Chabao?",
+  "lang281": "Transfer amount",
+  "lang282": "Please enter the transfer amount",
+  "lang283": "Received",
+  "lang284": "Will mark XX tea treasure to activate super benefits",
+  "lang285": "Expired",
+  "lang286": "Not started",
+  "lang287": "Received successfully"
 }

+ 24 - 24
src/language/zh.json

@@ -262,30 +262,30 @@
   "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": "",
+  "lang264": "新人福利",
+  "lang265": "新人茶权",
+  "lang266": "点击领取",
+  "lang267": "超级福利",
+  "lang268": "新人三步曲:",
+  "lang269": "1.注册数字身份 2.领取新人福利 3.加入DAO社区",
+  "lang270": "",
+  "lang271": "RWA茶“茶世通宝·ETH”*10套",
+  "lang272": "已空投至您的茶权账户,请查收。",
+  "lang273": "“超级福利”",
+  "lang274": "请在24小时内领取",
+  "lang275": "RWA茶",
+  "lang276": "“茶世通宝·ETH”",
+  "lang277": "10套",
+  "lang278": "转账",
+  "lang279": "确认转账",
+  "lang280": "是否确定转账茶宝",
+  "lang281": "转账数量",
+  "lang282": "请输入转账的数量",
+  "lang283": "已领取",
+  "lang284": "将标记XX茶宝激活超级福利",
+  "lang285": "已过期",
+  "lang286": "未开始",
+  "lang287": "领取成功",
   "lang288": "",
   "lang289": "",
   "lang290": "",

+ 10 - 1
src/router/index.js

@@ -32,9 +32,10 @@ import setting from '../views/mine/setting.vue';  //设置
 import TransferDetail from '../views/mine/TransferDetail.vue'; //详情
 import recharge from '../views/mine/recharge.vue'; //充值
 import rechargeRecord from '../views/mine/rechargeRecord.vue'; //充值记录
-import sendChaBao from '../views/mine/sendChaBao.vue'; //赠送茶宝
+import sendChaBao from '../views/mine/sendChaBao.vue'; //转账茶宝
 import teaRights from '../views/mine/teaRights.vue'; //我的茶权
 import operationLog from '../views/mine/operationLog.vue'; //操作记录
+import welfare from '../views/index/welfare.vue'; //新人福利
 Vue.use(VueRouter);
 const routes = [
 
@@ -233,6 +234,14 @@ const routes = [
           requiresAuth: true
         }
       },
+      {
+        path: 'welfare',
+        name: 'welfare',
+        component: welfare,
+        meta: {
+          requiresAuth: true
+        }
+      },
     ],
   },
 ];

+ 2 - 2
src/views/index/index.vue

@@ -195,9 +195,9 @@ export default {
           url: '',
         },
         {
-          text: this.$t('lang260'),
+          text: this.$t('lang264'),
           icon: require('@/assets/images/index/cj.png'),
-          url: '',
+          url: 'welfare',
         },
         {
           text: this.$t('lang261'),

+ 291 - 0
src/views/index/welfare.vue

@@ -0,0 +1,291 @@
+<template>
+  <div class="mine">
+    <div class="head">
+      <img @click="back" src="@/assets/images/back.png" class="arrow_img" />
+      <span>{{ $t('lang264') }}</span>
+    </div>
+
+    <div class="content flex-col flex-ac">
+      <div :class="[$i18n.locale == 'en' ? 'title' : 'title sp']">{{ $t('lang265') }}</div>
+      <div class="btn">
+        <img src="@/assets/images/index/btn1.png" alt="" />
+        <span class="btn_text" v-if="superFl.end_time == 0" @click="setNewbieWeal">{{ $t('lang266') }}</span>
+        <span class="btn_text" v-else-if="superFl.end_time > 0">{{ $t('lang283') }}</span>
+      </div>
+      <div :class="[$i18n.locale == 'en' ? 'title t1' : 'title t1 sp']">{{ $t('lang267') }}</div>
+      <div class="btn">
+        <img src="@/assets/images/index/btn2.png" alt="" />
+        <span class="btn_text" v-if="superFl.is_super == 0 && new Date().getTime() > 0 && new Date().getTime() < Number(superFl.end_time) * 1000" @click="setSuperWeal">{{ $t('lang266') }}</span>
+        <span class="btn_text" v-else-if="superFl.is_super == 0 && new Date().getTime() > Number(superFl.end_time) * 1000 && Number(superFl.end_time) != 0">{{ $t('lang285') }}</span>
+        <span class="btn_text" v-else-if="superFl.is_super == 0 && Number(superFl.end_time) == 0">{{ $t('lang286') }}</span>
+        <span class="btn_text" v-else-if="superFl.is_super == 1">{{ $t('lang283') }}</span>
+      </div>
+      <div class="count flex-row" v-if="superFl.is_super == 0 && new Date().getTime() > 0 && new Date().getTime() < Number(superFl.end_time) * 1000">
+        <span>距离过期剩余:</span>
+        <van-count-down class="down" :time="Number(superFl.end_time) * 1000 - new Date().getTime()" />
+      </div>
+      <div class="tip">
+        <span class="tt">{{ $t('lang268') }}</span>
+        {{ $t('lang269') }}
+      </div>
+    </div>
+    <van-popup v-model="areaShow" round :close-on-click-overlay="false" position="center" @close="areaShow = false">
+      <img src="@/assets/images/index/close.png" class="close" alt="" @click="areaShow = false" />
+      <div class="card flex-col flex-ac">
+        <div class="card_text1">
+          <span>{{ $t('lang275') }}</span>
+          <span>“{{ $i18n.locale == 'en' ? product?.name?.substring(0, 8) + '...' + product?.name?.substring(product.name.length - 5, product.name.length) : product.name }}”</span>
+          <span>*{{ product.num + $t('lang270') }}</span>
+        </div>
+        <div :class="[$i18n.locale == 'en' ? 'card_text2_en' : 'card_text2']">{{ $t('lang272') }}</div>
+        <div class="card_text3">{{ $t('lang273') }}</div>
+        <div :class="[$i18n.locale == 'en' ? 'card_text4_en' : 'card_text4']">{{ $t('lang274') }}</div>
+      </div>
+    </van-popup>
+  </div>
+</template>
+
+<script>
+import { Dialog, Notify, Toast } from 'vant';
+import { usApi, newsLetterApi, walletApi, homeApi } from '@/api/index';
+import { mapState } from 'vuex';
+export default {
+  data() {
+    return {
+      userinfo: {},
+      areaShow: false,
+      product: {},
+      superFl: {},
+    };
+  },
+  created() {},
+  mounted() {
+    this.getNewbieWeal();
+  },
+  methods: {
+    //返回上一页
+    back() {
+      this.$router.back();
+    },
+
+    getNewbieWeal() {
+      homeApi.getNewbieWeal({}).then(res => {
+        if (res.code == 200) {
+          console.log(res.data);
+          this.superFl = res.data;
+          // this.areaShow = true;
+        }
+      });
+    },
+    setNewbieWeal(type_id) {
+      let _this = this;
+      homeApi.setNewbieWeal({ type_id }).then(res => {
+        if (res.code == 200) {
+          console.log(res.data);
+          _this.product = res.data;
+          _this.areaShow = true;
+          _this.getNewbieWeal();
+        }
+      });
+    },
+    setSuperWeal() {
+      let _this = this;
+      Dialog.confirm({
+        title: _this.$t('lang136'),
+        message: _this.$t('lang284').replace('XX', _this.superFl.chabao),
+        confirmButtonText: _this.$t('lang111'),
+        cancelButtonText: _this.$t('lang135'),
+      })
+        .then(() => {
+          homeApi.setSuperWeal({}).then(res => {
+            if (res.code == 200) {
+              _this.getNewbieWeal();
+              _this.$toast(_this.$t('lang287'));
+            }
+          });
+        })
+        .catch(() => {
+          // on cancel
+        });
+    },
+  },
+  computed: {
+    ...mapState(['account']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.mine {
+  height: calc(100vh - 50px);
+  margin: 50px 0 0;
+  background: url('~@/assets/images/index/fl.jpg') no-repeat;
+  background-size: 100% 100%;
+  .head {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    color: rgba(#000, 0.8);
+    letter-spacing: 1.5px;
+    font-weight: 550;
+    background: #fff;
+    padding: 14px 0;
+    .arrow_img {
+      position: absolute;
+      left: 20px;
+      width: 10px;
+      height: 16px;
+      // transform: translate(0, -50%);
+    }
+  }
+
+  .content {
+    width: 100vw;
+    font-size: 13px;
+    .title {
+      font-size: 22px;
+      font-weight: 600;
+      text-shadow: 1.5px 1.5px 0px #5b58e7;
+      padding: 40% 0 22%;
+    }
+    .sp {
+      letter-spacing: 4px;
+    }
+    .t1 {
+      padding: 31% 60px 23% 0;
+    }
+    .tip {
+      font-size: 10px;
+      letter-spacing: 1.1px;
+      text-align: center;
+      padding-top: 36px;
+      .tt {
+        font-size: 12px;
+        font-weight: bold;
+        display: inline-block; /* 或者使用其他合适的布局方式 */
+        color: transparent; /* 使文字本身不可见 */
+        background-image: linear-gradient(to right, #f8eaf7, #aaa9f5); /* 定义渐变颜色 */
+        -webkit-background-clip: text; /* 针对WebKit浏览器 */
+        background-clip: text; /* 使渐变仅应用于文字 */
+      }
+    }
+    .count {
+      font-size: 13px;
+      margin-top: -10px;
+      .down {
+        color: #fff;
+        font-size: 13px;
+      }
+    }
+    .btn {
+      width: 130px;
+      position: relative;
+      // height: 209px;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+
+      &_text {
+        position: absolute;
+        top: 24px;
+        left: 51px;
+        font-size: 11px;
+        letter-spacing: 1.5px;
+        font-weight: 600;
+        text-shadow: 1px 1px 0px #000000;
+      }
+    }
+  }
+  .card {
+    width: 300px;
+    height: 405px;
+    text-align: center;
+    background: url('~@/assets/images/index/card.png') no-repeat;
+    background-size: 100% 100%;
+
+    &_text1 {
+      font-size: 14px;
+      font-weight: 600;
+      margin-top: 266px;
+    }
+
+    &_text2 {
+      letter-spacing: 1.2px;
+      font-size: 11px;
+      margin-top: 5px;
+    }
+    &_text2_en {
+      letter-spacing: 1.2px;
+      font-size: 11px;
+      margin-top: 5px;
+      line-height: 95%;
+    }
+    &_text3 {
+      font-size: 20px;
+      font-weight: 600;
+      letter-spacing: 2px;
+      margin-top: 17px;
+      display: inline-block; /* 或者使用其他合适的布局方式 */
+      color: transparent; /* 使文字本身不可见 */
+      background-image: linear-gradient(to bottom, #f8eaf7, #ada4d8); /* 定义渐变颜色 */
+      -webkit-background-clip: text; /* 针对WebKit浏览器 */
+      background-clip: text; /* 使渐变仅应用于文字 */
+    }
+
+    &_text4 {
+      font-size: 14px;
+      font-weight: 600;
+      letter-spacing: 2px;
+      margin-top: 6px;
+      display: inline-block; /* 或者使用其他合适的布局方式 */
+      color: transparent; /* 使文字本身不可见 */
+      background-image: linear-gradient(to bottom, #dacbe7, #7674ee); /* 定义渐变颜色 */
+      -webkit-background-clip: text; /* 针对WebKit浏览器 */
+      background-clip: text; /* 使渐变仅应用于文字 */
+    }
+
+    &_text4_en {
+      font-size: 14px;
+      font-weight: 600;
+      letter-spacing: 1px;
+      margin-top: 6px;
+      display: inline-block; /* 或者使用其他合适的布局方式 */
+      color: transparent; /* 使文字本身不可见 */
+      background-image: linear-gradient(to bottom, #dacbe7, #7674ee); /* 定义渐变颜色 */
+      -webkit-background-clip: text; /* 针对WebKit浏览器 */
+      background-clip: text; /* 使渐变仅应用于文字 */
+    }
+  }
+  .close {
+    width: 34px;
+    height: 34px;
+    float: right;
+    margin-bottom: -10px;
+    margin-right: -20px;
+  }
+  /deep/.van-popup {
+    padding: 50px;
+    background-color: rgba(#000, 0);
+  }
+  /deep/ .van-overlay {
+    background-color: rgba(0, 0, 0, 0.5);
+  }
+  .flex-col {
+    display: flex;
+    flex-direction: column;
+  }
+  .flex-ac {
+    align-items: center;
+  }
+  .flex-row {
+    display: flex;
+    align-items: center;
+  }
+}
+</style>

+ 1 - 1
src/views/mine/assets.vue

@@ -21,7 +21,7 @@
               <van-button class="buy_btn" type="primary">{{ $t('lang138') }}</van-button>
             </div>
             <div class="buy" @click="navigation('sendChaBao')">
-              <van-button class="buy_btn" type="primary">{{ $t('lang186') }}</van-button>
+              <van-button class="buy_btn" type="primary">{{ $t('lang278') }}</van-button>
             </div>
             <div class="buy" @click="navigation('withdraw')">
               <van-button class="buy_btn" type="primary">{{ $t('lang113') }}</van-button>

+ 40 - 1
src/views/mine/index.vue

@@ -14,7 +14,18 @@
             <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>
+            <span
+              :class="[
+                userinfo.is_super == 1
+                  ? 'text_3 level1'
+                  : userinfo.direct_super.direct_super >= userinfo.direct_super.one && userinfo.direct_super.direct_super < userinfo.direct_super.two
+                  ? 'text_3 level2'
+                  : userinfo.direct_super.direct_super >= userinfo.direct_super.two
+                  ? 'text_3 level3'
+                  : 'text_3',
+              ]"
+              >{{ $t('lang35') }}{{ userinfo.addressEncrypt }}</span
+            >
             <img src="@/assets/images/trade/copy.png" alt="" class="copys" @click="copy" :data-clipboard-text="this.userinfo.address" />
           </div>
           <div class="lang flex-col">
@@ -147,6 +158,11 @@ export default {
         team_level_id: undefined,
         seso_url: undefined,
         submit_limit: 0,
+        direct_super: {
+          one: 0,
+          two: 0,
+          direct_super: 0,
+        },
       },
       order_count: {
         pay: 0,
@@ -478,6 +494,29 @@ export default {
       font-size: 13px;
       padding-top: 3px;
     }
+    .text_3 {
+      color: rgba(#000, 0.6);
+      font-size: 13px;
+      margin-top: 3px;
+    }
+    .level1 {
+      color: #8b4513 !important;
+      border-radius: 6px;
+      padding: 2px 6px;
+      background-color: #000;
+    }
+    .level2 {
+      color: silver !important;
+      border-radius: 10px;
+      padding: 2px 6px;
+      background-color: #000;
+    }
+    .level3 {
+      color: gold !important;
+      border-radius: 10px;
+      padding: 2px 6px;
+      background-color: #000;
+    }
     .text-wrapper_1 {
       font-size: 11px;
       line-height: 100%;

+ 5 - 5
src/views/mine/sendChaBao.vue

@@ -2,7 +2,7 @@
   <div class="assets">
     <div class="head">
       <img @click="back" src="@/assets/images/back.png" class="arrow_img" />
-      <span>{{ $t('lang186') }}</span>
+      <span>{{ $t('lang278') }}</span>
     </div>
     <div class="pd">
       <div class="">
@@ -28,7 +28,7 @@
               <van-field v-model="send_address" type="textarea" style="height: 46px" :placeholder="$t('lang208')" class="input" input-align="right" />
             </div>
             <div class="box_item">
-              <span class="left">{{ $t('lang209') }}</span>
+              <span class="left">{{ $t('lang281') }}</span>
               <van-field v-model="amount" :placeholder="$t('lang119')" type="number" class="input" input-align="right" />
             </div>
             <div class="box_item">
@@ -42,7 +42,7 @@
           </div>
         </div>
         <div class="buy" @click="submit">
-          <van-button class="buy_btn" type="primary">{{ $t('lang214') }}</van-button>
+          <van-button class="buy_btn" type="primary">{{ $t('lang279') }}</van-button>
         </div>
         <div class="tips">
           <div>{{ $t('lang116') }}</div>
@@ -127,12 +127,12 @@ export default {
         return this.$toast(this.$t('lang211'));
       }
       if (!this.amount) {
-        return this.$toast(this.$t('lang212'));
+        return this.$toast(this.$t('lang282'));
       }
       let _this = this;
       Dialog.confirm({
         title: _this.$t('lang136'),
-        message: _this.$t('lang213'),
+        message: _this.$t('lang280'),
         confirmButtonText: _this.$t('lang111'),
         cancelButtonText: _this.$t('lang135'),
       })

+ 7 - 7
src/views/mine/teaRights.vue

@@ -48,16 +48,16 @@
           <div class="btn_box">
             <!-- 按钮 -->
             <div class="f-sa" v-if="item.status <= 1">
-              <div class="buy" @click="pickup(item)">
+              <div class="buy" @click="pickup(item)" v-if="item.is_freight == 1">
                 <van-button class="buy_btn btn1" type="primary">{{ $t('lang86') }}</van-button>
               </div>
-              <div class="buy" @click="transfer(item)">
+              <div class="buy" @click="transfer(item)" v-if="item.is_transfer == 1">
                 <van-button class="buy_btn" type="primary">{{ $t('lang49') }}</van-button>
               </div>
-              <div class="buy" @click="give(item)">
+              <div class="buy" @click="give(item)" v-if="item.is_gift == 1">
                 <van-button class="buy_btn btn1" type="primary">{{ $t('lang186') }}</van-button>
               </div>
-              <div class="buy" @click="noopen()">
+              <div class="buy" @click="noopen()" v-if="item.is_storage == 1">
                 <van-button class="buy_btn" type="primary">{{ $t('lang220') }}</van-button>
               </div>
             </div>
@@ -121,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', item.freight) }}</span>
       </div>
     </van-popup>
     <!-- 赠送 -->
@@ -137,7 +137,7 @@
           </div>
           <div class="f-r">
             <span> {{ $t('lang190') }} </span>
-            <span class="s">{{ Math.floor(item.price * Number(giveaway) * 100) / 100 }} {{ $t('lang174') }}</span>
+            <span class="s">{{ Math.floor(item.price * Number(item.gift_fee /  100) * 100) / 100 }} {{ $t('lang174') }}</span>
           </div>
           <div class="f-s">
             <span> {{ $t('lang91') }} </span>
@@ -325,7 +325,7 @@ export default {
       let _this = this;
       Dialog.confirm({
         title: _this.$t('lang136'),
-        message: _this.$t('lang241').replace('XX', _this.logistics_freight),
+        message: _this.$t('lang241').replace('XX', _this.item.freight),
         confirmButtonText: _this.$t('lang111'),
         cancelButtonText: _this.$t('lang135'),
       })