panhui há 3 anos atrás
pai
commit
f8c99a09cc

BIN
src/assets/icon-chaolian.png


BIN
src/assets/png-da-zi.png


+ 73 - 1
src/components/ChatInfo.vue

@@ -27,6 +27,78 @@
             <van-image width="36" height="36" round :src="info.fromAvatar" />
         </div>
     </div>
+    <!-- <div class="chat-info" :class="{ isLeft: flow == 'in' }" :id="`chat_${info.id || info.time}`">
+        <div class="chat-time" v-if="timeStr">{{ timeStr }}</div>
+        <div class="chat-time" v-if="type == 'notification'">{{ noticeStr }}</div>
+        <div class="chat-content" v-else>
+            <div class="chat-box">
+                <div class="chat-name" v-if="flow == 'in'">{{ info.fromNick || info.fromNickName }}</div>
+                <van-image
+                    :src="body.msg"
+                    @click="preview(info)"
+                    fit="scale-down"
+                    v-if="isImage"
+                    :width="imgWidth"
+                    :height="imgHeight"
+                ></van-image>
+                <div class="chat-message" v-else-if="type === 'text'">
+                    <div
+                        style="
+                            line-height: 40px;
+                            background: #06c04f;
+                            border-radius: 4px;
+                            padding: 0 20px;
+                            margin-bottom: 12px;
+                        "
+                    >
+                        RAEX绿洲:RID元域名称交易监控
+                    </div>
+                    <div style="display: flex">
+                        <img
+                            style="width: 18px; height: 18px; margin: 5px 10px 0 0"
+                            src="https://cdn.raex.vip/image/2023-04-06-14-32-07vINcTaZP.png"
+                            alt=""
+                        />
+                        <span>RID: 058.nft【已出售】</span>
+                    </div>
+                    <div style="display: flex">
+                        <img
+                            style="width: 18px; height: 18px; margin: 5px 10px 0 0"
+                            src="https://cdn.raex.vip/image/2023-04-06-14-28-32HcaKTDYb.png"
+                            alt=""
+                        />
+                        <span>分类: 【RID元域名】</span>
+                    </div>
+                    <div style="display: flex">
+                        <img
+                            style="width: 18px; height: 18px; margin: 5px 10px 0 0"
+                            src="https://cdn.raex.vip/image/2023-04-06-14-31-49lldhGaqC.png"
+                            alt=""
+                        />
+                        <span>销售价格: 【3899.99 】</span>
+                    </div>
+                    <div style="display: flex">
+                        <img
+                            style="width: 18px; height: 18px; margin: 5px 10px 0 0"
+                            src="https://cdn.raex.vip/image/2023-04-06-14-32-21ciilInpO.png"
+                            alt=""
+                        />
+                        <span>交易时间:<br />【2023-03-08 11:23:37】</span>
+                    </div>
+                </div>
+                <van-image
+                    :src="attach.url"
+                    @click="preview(attach.url)"
+                    :width="width"
+                    :height="height"
+                    fit="scale-down"
+                    v-else
+                ></van-image>
+            </div>
+
+            <van-image width="36" height="36" round :src="info.fromAvatar" />
+        </div>
+    </div> -->
 </template>
 <script setup>
 import { defineProps, defineEmits, computed, onMounted, nextTick, ref } from 'vue';
@@ -228,7 +300,7 @@ onMounted(() => {
         .chat-content {
             flex-direction: row-reverse;
             .chat-message {
-                background: #2a2a2a;
+                background: #242632;
                 border-radius: 2px 12px 12px 12px;
                 color: #ffffff;
             }

+ 1 - 1
src/components/rice/Share.vue

@@ -23,7 +23,7 @@
 
     <van-overlay :show="showHelp" @click="showHelp = false" z-index="100">
         <div class="share" @click.stop>
-            <div class="share-text1" v-if="shareSucc === 1">谢谢你帮我助力得量</div>
+            <div class="share-text1" v-if="shareSucc === 1">谢谢你帮我助力得量</div>
             <div class="share-text2" v-else>{{ shareTips }}</div>
 
             <div class="share-user">

+ 6 - 6
src/components/rice/Task.vue

@@ -12,7 +12,7 @@
                         <img src="@assets/icon_qiandao.png" alt="" />
                         <div class="box-info">
                             <div class="text1">签到奖励({{ taskInfo.isSignedIn ? 1 : 0 }}/1)</div>
-                            <div class="text2">每天签到可免费领取1点量</div>
+                            <div class="text2">每天签到可免费领取1点量</div>
                         </div>
                         <van-button type="primary" :class="{ not: taskInfo.isSignedIn }" round @click="sign">{{
                             taskInfo.isSignedIn ? '已完成' : '签到'
@@ -23,7 +23,7 @@
                         <div class="box-info">
                             <div class="text1">好友助力({{ taskInfo.isInvited ? 1 : 0 }}/1)</div>
 
-                            <div class="text2">邀请好友助力可获得1点电量,每天可邀请助力上限1点电量</div>
+                            <div class="text2">邀请好友助力可获得1点能量,每天可邀请助力上限1点能量</div>
                         </div>
                         <van-button class="not" v-if="taskInfo.isInvited" type="primary" round>已完成</van-button>
                         <van-button v-else type="primary" round @click="share">邀请</van-button>
@@ -33,7 +33,7 @@
                         <div class="box-info">
                             <div class="text1">助力邀请({{ helpCount > 2 ? 2 : helpCount }}/2)</div>
 
-                            <div class="text2">助力2名好友可获得1点电量,每天上限可获得1点电量</div>
+                            <div class="text2">助力2名好友可获得1点能量,每天上限可获得1点能量</div>
                         </div>
                         <van-button class="not" v-if="helpCount >= 2" type="primary" round>已完成</van-button>
                         <van-button v-else type="primary" round @click="show = false">去助力</van-button>
@@ -44,7 +44,7 @@
                             <div class="text1">积分兑换({{ taskInfo.exchangeCount }}/10)</div>
 
                             <div class="text2">
-                                每天寄售商品购买成功次数 ≤4 次获得1积分,4次以上获得2积分(2积分可兑换1点量)
+                                每天寄售商品购买成功次数 ≤4 次获得1积分,4次以上获得2积分(2积分可兑换1点量)
                             </div>
                         </div>
 
@@ -61,7 +61,7 @@
                         <div class="box-info">
                             <div class="text1">活动积分兑换</div>
 
-                            <div class="text2">参与活动可兑换1点量,无上限</div>
+                            <div class="text2">参与活动可兑换1点量,无上限</div>
                         </div>
                         <van-button
                             type="primary"
@@ -77,7 +77,7 @@
                         <div class="box-info">
                             <div class="text1">数字产品质押</div>
 
-                            <div class="text2">特定产品质押兑换成量,兑换当天不可寄售</div>
+                            <div class="text2">特定产品质押兑换成量,兑换当天不可寄售</div>
                         </div>
                         <van-button type="primary" round>去看看</van-button>
                     </div> -->

+ 77 - 0
src/mixins/superLink.js

@@ -0,0 +1,77 @@
+import { ImagePreview } from 'vant';
+export default {
+    data() {
+        return {
+            typeOptions: [
+                {
+                    label: 'RID云域名',
+                    name: '绑定RID元域名作为用户名',
+                    sub: '将元域名作为您的昵称',
+                    value: 'RID_CLOUD_DOMAIN_NAME'
+                },
+                {
+                    label: '个人主页',
+                    name: '绑定个人主页',
+                    sub: '增加主页曝光度,获得更多粉丝',
+                    value: 'HOMEPAGE'
+                },
+                {
+                    label: '藏品',
+                    name: '绑定指定藏品',
+                    sub: '一键触达指定数字藏品',
+                    value: 'COLLECTION'
+                },
+                {
+                    label: 'web2.0外部链接',
+                    name: '绑定指定web2.0浏览页面',
+                    sub: '您可以绑定您的电商网页或知乎链接等',
+                    value: 'EXTERNALLINK'
+                },
+                {
+                    label: '个人名片',
+                    name: '绑定个人名片',
+                    sub: '您可以绑定微信/微博二维码',
+                    value: 'PERSONAL_BUSINESS_CARD'
+                },
+                {
+                    label: '抖音视频',
+                    name: '绑定抖音视频',
+                    sub: '绑定抖音视频,让更多人看到你的精彩!',
+                    value: 'VIBRATO_VIDEO'
+                },
+                {
+                    label: '绿洲元宇宙',
+                    name: '关联OASISMETA绿洲元宇宙',
+                    sub: '关联个人土地空间',
+                    value: 'OASISMETA'
+                }
+            ]
+        };
+    },
+    methods: {
+        goReview(info) {
+            console.log(info);
+            switch (info.hyperLinkType) {
+                case 'HOMEPAGE':
+                case 'COLLECTION':
+                    console.log(info.address);
+                    this.$router.push(info.address);
+                    break;
+                case 'PERSONAL_BUSINESS_CARD':
+                    ImagePreview({ images: [info.address], startPosition: 0 });
+                    break;
+                case 'EXTERNALLINK':
+                case 'VIBRATO_VIDEO':
+                case 'OASISMETA':
+                    window.open(info.address);
+                    break;
+            }
+        },
+        getTypeLabel(info) {
+            let type = [...this.typeOptions].find(item => {
+                return item.value === info.hyperLinkType;
+            });
+            return type ? type.label : '';
+        }
+    }
+};

+ 9 - 0
src/router/index.js

@@ -846,6 +846,15 @@ const routes = [
             menuPage: true
         }
     },
+    {
+        path: '/mineSuperLink',
+        name: 'mineSuperLink',
+        component: () => import('../views/user/SuperLink.vue'),
+        meta: {
+            title: '我的超链',
+            tabColor: '#0F0F0F'
+        }
+    },
     {
         path: '/domainProductChoose',
         name: 'domainProductChoose',

+ 10 - 0
src/views/Mine.vue

@@ -192,6 +192,16 @@
                 <div class="menus_list_division">
                     <div class="menus_list_division_con"></div>
                 </div> -->
+                <div class="menus_list_con" @click="$router.push('/mineSuperLink')">
+                    <div class="menus_list_con_left">
+                        <img src="@assets/icon-chaolian.png" alt="" class="menus_list_con_left_img" />
+                        <span>我的超链</span>
+                    </div>
+                    <img src="@assets/icon_inter@3x.png" alt="" class="menus_list_con_right_img" />
+                </div>
+                <div class="menus_list_division">
+                    <div class="menus_list_division_con"></div>
+                </div>
                 <div class="menus_list_con" @click="share" v-if="!$store.state.review">
                     <div class="menus_list_con_left">
                         <img src="@assets/icon-yaoqing@3x.png" alt="" class="menus_list_con_left_img" />

+ 13 - 8
src/views/chat/Detail.vue

@@ -341,7 +341,6 @@ onMounted(() => {
     }
 
     console.log(dayjs(1672800458125).format('YYYY-MM-DD'));
-
     // getData(true).then(() => {
     //     goBottom();
     // });
@@ -436,11 +435,11 @@ const fixedHeight = computed(() => {
     overflow: auto;
 }
 .page {
-    background: #1c1c1c;
+    background: #0f1014;
 }
 
 .message-bottom {
-    background-color: #222426;
+    background-color: #0f1014;
     position: fixed;
     .bottom(0px);
     bottom: 0;
@@ -455,6 +454,7 @@ const fixedHeight = computed(() => {
         .file-btn {
             width: 28px;
             height: 28px;
+            margin-left: 16px;
         }
         .van-form {
             flex-grow: 1;
@@ -465,6 +465,8 @@ const fixedHeight = computed(() => {
             --van-cell-horizontal-padding: 12px;
             --van-field-placeholder-text-color: rgba(255, 255, 255, 0.4);
             --van-field-input-text-color: #fff;
+            --van-cell-background-color: #1c1f24;
+            border-radius: 100px;
         }
 
         .btn-content {
@@ -494,7 +496,7 @@ const fixedHeight = computed(() => {
 }
 
 .emoji-list {
-    background-color: #d8d8d810;
+    background-color: #242632;
     .flex();
     flex-wrap: wrap;
     padding: 10px 16px;
@@ -522,7 +524,7 @@ const fixedHeight = computed(() => {
         }
 
         &.prim {
-            background-color: #d8d8d810;
+            background-color: #242632;
         }
     }
     .emoji-btn + .emoji-btn {
@@ -530,7 +532,7 @@ const fixedHeight = computed(() => {
     }
 }
 .sticker-list {
-    background-color: #d8d8d810;
+    background-color: #242632;
     .flex();
     flex-wrap: wrap;
     padding: 10px 16px;
@@ -553,6 +555,9 @@ const fixedHeight = computed(() => {
 
 .file-upload {
     position: relative;
+    .file-btn {
+        margin-left: 0 !important;
+    }
     .van-uploader {
         position: absolute;
         top: 0;
@@ -569,7 +574,7 @@ const fixedHeight = computed(() => {
 }
 
 .van-nav-bar {
-    --van-nav-bar-background-color: #222426;
+    --van-nav-bar-background-color: #0f1014;
     --van-nav-bar-icon-color: #fff;
     --van-nav-bar-title-text-color: #fff;
     --van-nav-bar-text-color: #fff;
@@ -586,7 +591,7 @@ const fixedHeight = computed(() => {
 }
 
 .fixed-info {
-    --van-notice-bar-background-color: #222426;
+    --van-notice-bar-background-color: #0f1014;
     --van-notice-bar-text-color: @prim;
 }
 </style>

+ 63 - 4
src/views/domain/BindingImage.vue

@@ -6,11 +6,17 @@
                 <div class="text2">您可以绑定微信/微博二维码</div>
             </div>
         </div>
-        <van-uploader v-model="fileList" :after-read="afterRead" upload-icon="plus" upload-text="点击上传" />
+        <van-uploader
+            :multiple="false"
+            v-model="fileList"
+            :after-read="afterRead"
+            upload-icon="plus"
+            upload-text="点击上传"
+        />
 
         <div class="btns">
             <van-button type="default" @click="$router.back()" round>返回</van-button>
-            <van-button type="primary" round>确认</van-button>
+            <van-button type="primary" round @click="sure">确认</van-button>
         </div>
     </div>
 </template>
@@ -19,12 +25,59 @@
 export default {
     data() {
         return {
-            fileList: []
+            fileList: [],
+            img: ''
         };
     },
+    mounted() {
+        if (this.$route.query.assetId) {
+            this.assetId = this.$route.query.assetId;
+        }
+    },
     methods: {
         afterRead(e) {
-            console.log(e);
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            this.updateFile(e, 'avatar', 2000)
+                .then(img => {
+                    this.$toast.clear();
+                    this.img = img;
+                })
+                .catch(e => {
+                    this.$toast.clear();
+                    if (e && e.error) {
+                        this.$toast(e.error);
+                    }
+                });
+        },
+        sure() {
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            this.addHyperLink(this.img)
+                .then(res => {
+                    this.$toast.success('设置成功');
+                    setTimeout(() => {
+                        this.$router.go(-2);
+                    }, 1500);
+                })
+                .catch(e => {
+                    this.$toast.clear();
+                    if (e && e.error) {
+                        this.$toast(e.error);
+                    }
+                });
+        },
+        addHyperLink(address) {
+            return this.$http.post('/domainOrder/addHyperLink', {
+                assetId: this.assetId,
+                openHyperLink: true,
+                hyperLinkType: 'PERSONAL_BUSINESS_CARD',
+                address: address
+            });
         }
     }
 };
@@ -95,6 +148,12 @@ export default {
     .van-uploader__upload {
         height: 180px;
         margin: 0;
+        &:nth-child(2) {
+            display: none;
+        }
+    }
+    .van-uploader__preview {
+        margin: 0;
     }
 }
 </style>

+ 54 - 4
src/views/domain/BindingWeb.vue

@@ -2,8 +2,8 @@
     <div class="page" :style="{ backgroundImage: `url(${require('@assets/png-dabg.jpg')})` }">
         <div class="page-top">
             <div class="title">
-                <div class="text1">绑定指定web2.0浏览页面</div>
-                <div class="text2">您可以绑定您的电商网页或知乎链接等</div>
+                <div class="text1">{{ typeInfo.name }}</div>
+                <div class="text2">{{ typeInfo.sub }}</div>
             </div>
         </div>
         <div class="input">
@@ -13,6 +13,7 @@
                 right-icon="guide-o"
                 v-model="address"
                 placeholder="请输入指定的链接进行绑定"
+                @click-right-icon="goUrl"
             />
         </div>
 
@@ -23,14 +24,63 @@
     </div>
 </template>
 <script>
+import superLink from '@/mixins/superLink';
 export default {
     data() {
         return {
-            address: ''
+            address: '',
+            assetId: 0,
+            type: 'EXTERNALLINK'
         };
     },
+    computed: {
+        typeInfo() {
+            let info = [...this.typeOptions].find(item => {
+                return item.value === this.type;
+            });
+            return info || {};
+        }
+    },
+    mixins: [superLink],
+    mounted() {
+        if (this.$route.query.assetId) {
+            this.assetId = this.$route.query.assetId;
+        }
+        if (this.$route.query.type) {
+            this.type = this.$route.query.type;
+        }
+    },
     methods: {
-        sure(){}
+        sure() {
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            this.addHyperLink(this.address)
+                .then(res => {
+                    this.$toast.success('设置成功');
+                    setTimeout(() => {
+                        this.$router.go(-2);
+                    }, 1500);
+                })
+                .catch(e => {
+                    this.$toast.clear();
+                    if (e && e.error) {
+                        this.$toast(e.error);
+                    }
+                });
+        },
+        addHyperLink(address) {
+            return this.$http.post('/domainOrder/addHyperLink', {
+                assetId: this.assetId,
+                openHyperLink: true,
+                hyperLinkType: this.type,
+                address: address
+            });
+        },
+        goUrl() {
+            window.open(this.address);
+        }
     }
 };
 </script>

+ 35 - 2
src/views/domain/ProductChoose.vue

@@ -37,7 +37,7 @@
 
         <div class="btns">
             <van-button type="info" @click="$router.back()" round>返回</van-button>
-            <van-button type="primary" v-if="chooseId" round>确认</van-button>
+            <van-button type="primary" v-if="chooseId" @click="sure" round>确认</van-button>
         </div>
     </div>
 </template>
@@ -52,10 +52,16 @@ export default {
             url: '/collection/all',
             list: [],
             chooseId: '',
-            maxCollection: 20
+            maxCollection: 20,
+            assetId: 0
         };
     },
     mixins: [list, product],
+    mounted() {
+        if (this.$route.query.assetId) {
+            this.assetId = this.$route.query.assetId;
+        }
+    },
     methods: {
         beforeData() {
             return {
@@ -67,6 +73,33 @@ export default {
         },
         choose(info) {
             this.chooseId = info.id;
+        },
+        sure() {
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            this.addHyperLink('/productDetail/' + this.chooseId)
+                .then(res => {
+                    this.$toast.success('设置成功');
+                    setTimeout(() => {
+                        this.$router.go(-2);
+                    }, 1500);
+                })
+                .catch(e => {
+                    this.$toast.clear();
+                    if (e && e.error) {
+                        this.$toast(e.error);
+                    }
+                });
+        },
+        addHyperLink(address) {
+            return this.$http.post('/domainOrder/addHyperLink', {
+                assetId: this.assetId,
+                openHyperLink: true,
+                hyperLinkType: 'COLLECTION',
+                address: address
+            });
         }
     }
 };

+ 10 - 12
src/views/domain/SuperLinkType.vue

@@ -119,11 +119,13 @@ function chooseType(info) {
                         message: '加载中...',
                         forbidClick: true
                     });
-                    return addHyperLink(info.type, `creatorDetail?id=${store.state.userInfo.id}&type=DEFAULT`);
+                    return addHyperLink(info.type, `/creatorDetail?id=${store.state.userInfo.id}&type=DEFAULT`);
                 })
                 .then(() => {
                     Toast.success('设置成功');
-                    router.back();
+                    setTimeout(() => {
+                        router.back();
+                    }, 1500);
                 })
                 .catch(e => {
                     Toast.clear();
@@ -141,10 +143,13 @@ function chooseType(info) {
             });
             break;
         case 'EXTERNALLINK':
+        case 'VIBRATO_VIDEO':
+        case 'OASISMETA':
             router.push({
                 name: 'bindingWeb',
                 query: {
-                    assetId: assetId.value
+                    assetId: assetId.value,
+                    type: info.type
                 }
             });
             break;
@@ -156,19 +161,12 @@ function chooseType(info) {
                 }
             });
             break;
-        case 'VIBRATO_VIDEO':
-            router.push({
-                name: 'bindingWeb',
-                query: {
-                    assetId: assetId.value
-                }
-            });
-            break;
     }
 }
 
 function addHyperLink(hyperLinkType, address) {
-    return http.post('/domainOrder/addHyperLink', {
+    console.log(hyperLinkType);
+    return http.http.post('/domainOrder/addHyperLink', {
         assetId: assetInfo.value.id,
         openHyperLink: true,
         hyperLinkType: hyperLinkType,

+ 4 - 4
src/views/search/SearchDetail.vue

@@ -467,11 +467,11 @@ export default {
         }
     }
 }
-.van-tabs {
-    background-color: @bg;
-}
+// .van-tabs {
+//     background-color: @bg;
+// }
 /deep/.van-tabs__nav--line.van-tabs__nav--complete {
-    border-color: @tabBorder;
+    border-width: 0;
 }
 
 /deep/.van-sticky--fixed {

+ 96 - 0
src/views/user/SuperLink.vue

@@ -0,0 +1,96 @@
+<template>
+    <div class="page">
+        <div class="list">
+            <div class="link" v-for="(item, index) in list" :key="index">
+                <van-image width="40" height="" :src="getImg(changeImgs(item.pic, 600))" type="contain" />
+                <img src="@assets/png-da-zi.png" alt="" class="hr" />
+                <div class="link-info">
+                    <div class="text1">{{ item.domainName }}</div>
+                    <div class="text2">已绑定{{ getTypeLabel(item) }}</div>
+                </div>
+                <div class="link-btns">
+                    <div class="link-btn" @click="goReview(item)">预览</div>
+                    <div class="link-btn" @click="goChange(item)">更改</div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import product from '@/mixins/product';
+import superLink from '@/mixins/superLink';
+export default {
+    data() {
+        return {
+            list: []
+        };
+    },
+    mixins: [product, superLink],
+    mounted() {
+        this.$http.get('/domainOrder/showMyHyperLink').then(res => {
+            this.list = res;
+        });
+    },
+    methods: {
+        goChange(info) {
+            this.$router.push('/superLinkType?id=' + info.createAssetId);
+        }
+    }
+};
+</script>
+
+<style lang="less" scoped>
+.page {
+    background-color: #0f0f0f;
+    padding: 10px 16px;
+}
+
+.link {
+    .flex();
+    background: #1e1e1e;
+    border-radius: 8px;
+    padding: 12px;
+
+    .hr {
+        width: 10px;
+        margin: 0 8px;
+    }
+
+    .link-info {
+        flex-grow: 1;
+        .text1 {
+            font-size: 14px;
+            font-weight: bold;
+            color: #ffffff;
+            line-height: 24px;
+        }
+
+        .text2 {
+            font-size: 10px;
+            color: #939599;
+            line-height: 17px;
+            margin-top: 2px;
+        }
+    }
+    .link-btns {
+        .flex();
+        .link-btn {
+            background: rgba(255, 225, 150, 0.1);
+            border-radius: 8px;
+            border: 1px solid #ffe196;
+            font-size: 13px;
+            color: #ffe196;
+            line-height: 24px;
+            padding: 0 10px;
+
+            &:nth-child(2) {
+                border: 1px solid #00fe1e;
+                color: #00fe1e;
+            }
+        }
+    }
+    .link-btn + .link-btn {
+        margin-left: 13px;
+    }
+}
+</style>