Переглянути джерело

1.NFT 改成 RWA茶
2.增加赠送功能,点击赠送按钮,输入接收人钱包地址,显示扣除手续费金额

xiaomei 10 місяців тому
батько
коміт
9bf74cb598
4 змінених файлів з 189 додано та 36 видалено
  1. 22 0
      src/api/home.js
  2. 12 1
      src/language/en.json
  3. 11 11
      src/language/zh.json
  4. 144 24
      src/views/mine/assets.vue

+ 22 - 0
src/api/home.js

@@ -721,4 +721,26 @@ export default {
       data
     })
   },
+  //赠送
+  giveaway(data) {
+    return request.request({
+      url: '/order/giveaway',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
+  //获取物流信息
+  getTracking(data) {
+    return request.request({
+      url: '/order/getTracking',
+      method: "post",
+      headers: {
+        'Accept-Language': localStorage.getItem('language') || 'zh-cn',
+      },
+      data
+    })
+  },
 }

+ 12 - 1
src/language/en.json

@@ -182,5 +182,16 @@
   "lang181": "re-apply for abnormal withdrawal",
   "lang182": "Not connected",
   "lang183": "Please use a cold wallet to scan the code and sign",
-  "lang184": "Please verify the signature"
+  "lang184": "Please verify the signature",
+  "lang185": "RWA Tea",
+  "lang186": "Giveaway",
+  "lang187": "Fill in the gift information",
+  "lang188": "Please enter the recipient's wallet address",
+  "lang189": "Gift address:",
+  "lang190": "Handling fee:",
+  "lang191": "Recipient:",
+  "lang192": "Closed",
+  "lang193": "Gifted",
+  "lang194": "Gifted by others",
+  "lang195": "No logistics information, please try again later"
 }

+ 11 - 11
src/language/zh.json

@@ -183,17 +183,17 @@
   "lang182": "未连接",
   "lang183": "请使用冷钱包进行扫码签名",
   "lang184": "请验签",
-  "lang185": "",
-  "lang186": "",
-  "lang187": "",
-  "lang188": "",
-  "lang189": "",
-  "lang190": "",
-  "lang191": "",
-  "lang192": "",
-  "lang193": "",
-  "lang194": "",
-  "lang195": "",
+  "lang185": "RWA茶",
+  "lang186": "赠送",
+  "lang187": "填写赠送信息",
+  "lang188": "请输入接收人钱包地址",
+  "lang189": "赠送地址:",
+  "lang190": "手续费:",
+  "lang191": "接收人:",
+  "lang192": "已关闭",
+  "lang193": "已赠送",
+  "lang194": "他人赠送",
+  "lang195": "暂无物流信息,请稍后再试",
   "lang196": "",
   "lang197": "",
   "lang198": "",

+ 144 - 24
src/views/mine/assets.vue

@@ -55,14 +55,17 @@
     <div class="" v-show="navIndex == 1">
       <div class="pd1 goods_box" @scroll="handleScroll" v-if="nft_list.length > 0">
         <div class="goods_list jsb" v-for="(item, index) in nft_list" :key="index">
+          <div class="tags1 tags2" v-if="item.type_id == 2 && item.status != 2 && item.status != 3">{{ $t('lang194') }}</div>
           <div class="tags" v-if="item.status == 2">{{ $t('lang141') }}</div>
           <div class="tags1" v-if="item.status == 3">{{ $t('lang142') }}</div>
-          <van-image class="goods_list_img" radius="10" :src="item.img_url.split(',')[0]" />
-          <div class="right" style="flex: 1">
-            <span>{{ item.name }}</span>
+          <van-image class="goods_list_img" style="flex: 1" radius="10" :src="item.img_url.split(',')[0]" />
+          <div class="right" style="flex: 2">
+            <span class="title">{{ item.name }}</span>
             <div class="green">{{ item.title }}</div>
             <div class="cen">
-              <span class="money">{{ item.price }}<span class="ssm">{{ $t('lang174') }}</span></span>
+              <span class="money"
+                >{{ item.price }}<span class="ssm">{{ $t('lang174') }}</span></span
+              >
             </div>
             <div class="f-sa" v-if="item.status <= 1">
               <div class="buy" @click="pickup(item)">
@@ -71,18 +74,21 @@
               <div class="buy" @click="transfer(item)">
                 <van-button class="buy_btn" type="primary">{{ $t('lang49') }}</van-button>
               </div>
+              <div class="buy" @click="give(item)">
+                <van-button class="buy_btn btn1" type="primary">{{ $t('lang186') }}</van-button>
+              </div>
             </div>
 
             <div class="f-sa buy1" v-if="item.status == 3">
               <div class="buy buy1">
-                <van-button class="buy_btn btn1" type="primary">{{ $t('lang143') }}</van-button>
+                <van-button class="buy_btn btn1 btn4" type="primary" @click="viewlogi(item)">{{ $t('lang143') }}</van-button>
               </div>
             </div>
             <div class="f-sa buy1" v-else>
               <div class="buy">
                 <van-button class="buy_btn btn3" type="primary" v-if="item.status == 2" @click="cancel(item)">{{ $t('lang144') }}</van-button>
                 <van-button class="buy_btn btn3" type="primary" v-if="item.status == 4">{{ $t('lang145') }}</van-button>
-                <van-button class="buy_btn btn3" type="primary" v-if="item.status == 5">{{ $t('lang146') }}</van-button>
+                <van-button class="buy_btn btn3" type="primary" v-if="item.status == 5">{{ $t('lang192') }}</van-button>
               </div>
             </div>
           </div>
@@ -92,6 +98,7 @@
         <span>{{ $t('lang82') }}</span>
       </div>
     </div>
+    <!-- 转让 -->
     <van-popup v-model="transferPopop" round position="bottom">
       <!-- <van-cascader v-model="cascaderValue" title="请选择所在地区" :options="options" @close="cascaderShow = false" @finish="onFinish" /> -->
       <div class="area">
@@ -111,23 +118,48 @@
             <span> {{ $t('lang90') }} </span>
             <span class="s">{{ Math.floor(price * Number(transfes_fee) * 100) / 100 }} {{ $t('lang174') }}</span>
           </div>
-          <div class="f-r">
+          <div class="f-s">
             <span> {{ $t('lang91') }} </span>
             <span class="s">{{ transfes_txt }}</span>
           </div>
         </div>
-        <div class="submit" @click="cascaderShow = true">
+        <div class="submit">
           <van-button class="submit_btn" type="primary" @click="submit">{{ $t('lang71') }}</van-button>
         </div>
       </div>
     </van-popup>
-
+    <!-- 提货 -->
     <van-popup v-model="addresPopop" round position="bottom">
       <div class="area">
         <div class="title">{{ $t('lang157') }}</div>
         <van-address-edit :area-list="areaList" show-search-result :save-button-text="$t('lang111')" :area-columns-placeholder="[]" @save="onSave" />
       </div>
     </van-popup>
+    <!-- 赠送 -->
+    <van-popup v-model="givePopop" round position="bottom">
+      <div class="area">
+        <div class="title">{{ $t('lang187') }}</div>
+        <div class="box">
+          <div class="f-s">
+            <span class="k"> {{ $t('lang191') }} </span>
+            <div class="d" style="flex: 1">
+              <van-field v-model="giveAddress" type="textarea" autosize rows="1" :placeholder="$t('lang188')" class="input1" />
+            </div>
+          </div>
+          <div class="f-r">
+            <span> {{ $t('lang190') }} </span>
+            <span class="s">{{ Math.floor(item.price * Number(giveaway) * 100) / 100 }} {{ $t('lang174') }}</span>
+          </div>
+          <div class="f-s">
+            <span> {{ $t('lang91') }} </span>
+            <span class="s">{{ giveaway_txt }}</span>
+          </div>
+        </div>
+        <div class="submit">
+          <van-button class="submit_btn" type="primary" @click="giveSubmit">{{ $t('lang71') }}</van-button>
+        </div>
+      </div>
+    </van-popup>
   </div>
 </template>
 
@@ -142,7 +174,6 @@ export default {
       loading: false,
       finished: false,
       total: 1,
-      nickname: '',
       assets: 0,
       coinList: [],
       showPopover: false,
@@ -154,13 +185,13 @@ export default {
           value: 0,
         },
         {
-          key: 'NFT',
+          key: this.$t('lang185'),
           value: 1,
         },
       ],
       nft_list: [],
       transferPopop: false,
-      cascaderShow: true,
+      givePopop: false,
       price: '', // 转让金额
       areaList: areaList,
       searchResult: [],
@@ -168,11 +199,13 @@ export default {
       page: 1,
       item: {},
       transfes_fee: 0, //转让费率
-      transfes_txt: '', //手续费说明
+      transfes_txt: '', //转让手续费说明
+      giveAddress: '', //赠送接收人钱包地址
+      giveaway: 0, //赠送手续费率
+      giveaway_txt: '', //赠送手续费说明
     };
   },
   mounted() {
-    this.nickname = JSON.parse(localStorage.getItem('userinfo')).nickname;
     this.actionGet();
     this.getNftList();
   },
@@ -196,7 +229,7 @@ export default {
           result = this.$t('lang145');
           break;
         case 5:
-          result = this.$t('lang146');
+          result = this.$t('lang192');
           break;
         default:
           break;
@@ -239,17 +272,18 @@ export default {
           this.assets = res.data.assets;
           this.transfes_txt = res.data.transfes_txt;
           this.transfes_fee = res.data.transfes_fee;
+          this.giveaway = res.data.giveaway;
+          this.giveaway_txt = res.data.giveaway_txt;
           this.coinList = res.data.coin_list;
         }
       });
     },
+    // 提货
     pickup(item) {
       this.item = item;
       this.addresPopop = true;
     },
     onSave(e) {
-      console.log(e);
-
       // this.$toast('save');
       homeApi.pickupOrder({ order_id: this.item.order_id, name: e.name, phone: e.tel, address: e.province + ' ' + e.city + ' ' + e.county + ' ' + e.addressDetail }).then(res => {
         if (res.code == 200) {
@@ -263,7 +297,7 @@ export default {
         }
       });
     },
-
+    // 转让
     transfer(item) {
       this.transferPopop = true;
       this.item = item;
@@ -279,11 +313,41 @@ export default {
           this.nft_list = [];
           this.getNftList();
           Notify({ type: 'success', message: this.$t('lang152') });
+        } else if (res.code == 15000) {
+          setTimeout(() => {
+            this.$router.push('recharge');
+          }, 300);
+        } else {
+          this.$toast(res.msg);
+        }
+      });
+    },
+    // 赠送
+    give(item) {
+      this.givePopop = true;
+      this.item = item;
+    },
+    giveSubmit() {
+      if (!this.giveAddress) {
+        return this.$toast(this.$t('lang188'));
+      }
+      homeApi.giveaway({ order_id: this.item.order_id, address: this.giveAddress }).then(res => {
+        if (res.code == 200) {
+          this.givePopop = false;
+          this.page = 1;
+          this.nft_list = [];
+          this.getNftList();
+          Notify({ type: 'success', message: this.$t('lang152') });
+        } else if (res.code == 15000) {
+          setTimeout(() => {
+            this.$router.push('recharge');
+          }, 300);
         } else {
           this.$toast(res.msg);
         }
       });
     },
+    // 取消转让
     cancel(item) {
       let _this = this;
       Dialog.confirm({
@@ -334,6 +398,16 @@ export default {
         }
       }
     },
+    viewlogi(item) {
+      homeApi.getTracking({ order_id: item.order_id }).then(res => {
+        if (res.code == 200) {
+          console.log();
+          window.open('https://www.kuaidi100.com/chaxun?nu=' + res.data, '_blank');
+        } else {
+          this.$toast(res.msg);
+        }
+      });
+    },
   },
 };
 </script>
@@ -384,6 +458,10 @@ export default {
   display: flex;
   align-items: center;
 }
+.f-s {
+  display: flex;
+  align-items: flex-start;
+}
 .assets {
   min-height: 100vh;
   padding: 50px 0 0;
@@ -607,9 +685,12 @@ export default {
       background-color: #f4ab1e;
       border-radius: 6px 0 6px 0;
     }
+    .tags2 {
+      background-color: #1e8df4;
+    }
     &_img {
       width: 110px;
-      height: 120px;
+      height: 110px;
       border-radius: 10px;
       margin-right: 10px;
     }
@@ -622,6 +703,12 @@ export default {
       font-size: 13px;
       box-sizing: border-box;
       padding: 6px 0;
+      .title {
+        width: 100%;
+        overflow: hidden; /* 确保超出容器的文本被裁剪 */
+        white-space: nowrap; /* 确保文本在一行内显示 */
+        text-overflow: ellipsis; /* 使用省略号表示文本超出 */
+      }
 
       .time_text {
         color: #7f7f7f;
@@ -673,14 +760,22 @@ export default {
     .buy {
       display: flex;
       align-items: flex-end;
+      justify-content: flex-end;
       &_btn {
         height: 32px;
+        width: 66px;
+        text-align: center;
         line-height: 32px;
         font-size: 12px;
         border: none;
-        padding: 0 26px;
+        // padding: 0 20px;
         white-space: nowrap;
         border-radius: 30px;
+        box-sizing: border-box;
+        // padding: 0 10px;
+        // overflow: hidden; /* 确保超出容器的文本被裁剪 */
+        // white-space: nowrap; /* 确保文本在一行内显示 */
+        // text-overflow: ellipsis; /* 使用省略号表示文本超出 */
         border: 1px solid #29b286;
         background-color: #29b286;
       }
@@ -689,11 +784,15 @@ export default {
         background-color: #fff;
       }
       .btn3 {
+        width: 86px;
         color: #b9b9b9;
         padding: 0 20px;
         border: 1px solid #b9b9b9;
         background-color: #fff;
       }
+      .btn4 {
+        width: 96px;
+      }
     }
     .buy1 {
       justify-content: flex-end;
@@ -706,6 +805,7 @@ export default {
     width: 100%;
     box-sizing: border-box;
     position: relative;
+
     .title {
       color: #000;
       font-size: 15px;
@@ -727,10 +827,12 @@ export default {
     }
     .box {
       margin: 20px 0;
-      .f-r {
+      .f-r,
+      .f-s {
         padding: 6px 0;
       }
-      .f-r span:first-child {
+      .f-r span:first-child,
+      .f-s span:first-child {
         padding-right: 8px;
       }
       .d {
@@ -741,15 +843,28 @@ export default {
         // width: 100%;
         // border: 1px solid #29b286;
         // border-radius: 20px;
-        width: 100px;
+        width: 150px;
         border-bottom: 0.5px solid rgba(27, 27, 27, 0.15);
       }
+      .k {
+        padding-top: 6px;
+      }
+      .input1 {
+        width: 100%;
+        border-bottom: 0.5px solid rgba(27, 27, 27, 0.15);
+        // ::v-deep .van-field__body,
+        // ::v-deep .van-field__control {
+        //   height: 32px !important;
+        // }
+      }
+
       .van-cell {
         padding: 0 !important;
       }
       .s {
         font-size: 11px;
         color: #999999;
+        width: 70%;
       }
     }
     .submit {
@@ -770,7 +885,8 @@ export default {
     }
 
     ::v-deep .van-field__control {
-      padding: 6px 12px 0;
+      padding: 0 12px 0;
+      font-size: 12px;
     }
 
     ::v-deep .van-hairline--top-bottom::after,
@@ -795,4 +911,8 @@ export default {
 ::v-deep .van-overlay {
   background-color: rgba(#000, 0.3);
 }
+::v-deep van-hairline-unset--top-bottom,
+::v-deep .van-picker__frame {
+  border: 1px solid #fff !important;
+}
 </style>