Files
front-pc/pages/personal-Center/index/info.vue

193 lines
6.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="box-border w-[913px] border border-[#EEEEEE] rounded-[6px] border-solid bg-[#FFFFFF] px-[30px] py-[18px]">
<div class="flex items-center">
<img :src="userStore.userInfoRes.avatar" alt="" srcset="" class="h-[105px] w-[105px] rounded-full" />
<div class="ml-[29px]">
<div class="flex items-center">
<span class="text-[20px] text-[#333333] font-normal">Hi{{ userStore.userInfoRes.nickname }}</span>
<img v-if="userStore.userInfoRes.vipLevel === 1" src="~/assets/svg/vip.svg" alt="" class="relative top-[2px] ml-[5px]" />
<img v-if="userStore.userInfoRes.vipLevel === 2" src="~/assets/svg/svip.svg" alt="" class="relative top-[2px] ml-[5px]" />
<div
class="ml-[18px] h-[30px] w-[80px] cursor-pointer border border-[#1A65FF] rounded-[15px] border-solid text-center text-[14px] text-[#1A65FF] font-normal line-height-[30px]"
@click="handleClick"
>编辑资料</div
>
</div>
<div class="mt-[20px] flex items-center text-[14px] text-[#333333] font-normal">
<div class="flex items-center">
<img src="~/assets/images/cad_0 (1).png" alt="" srcset="" />
<span class="ml-[4px]">我的积分: {{ userStaticInfo?.pointCount || 0 }}</span>
</div>
<div class="ml-[37px] flex items-center">
<img src="~/assets/images/cad_0 (2).png" alt="" srcset="" />
<span class="ml-[4px]">我的收藏: {{ userStaticInfo?.followCount || 0 }}</span>
</div>
<div class="ml-[37px] flex items-center">
<img src="~/assets/images/cad_0 (3).png" alt="" srcset="" />
<span class="ml-[4px]">我的发布: {{ userStaticInfo?.projectCount || 0 }}</span>
</div>
<div class="ml-[37px] flex items-center">
<img src="~/assets/images/cad_0 (4).png" alt="" srcset="" />
<span class="ml-[4px]">我的下载: {{ userStaticInfo?.downloadCount || 0 }}</span>
</div>
</div>
</div>
</div>
<div class="mt-[30px] flex items-center justify-around">
<div class="flex items-center">
<div class="relative">
<img src="~/assets/images/info_1 (3).png" alt="" srcset="" />
<img src="~/assets/images/info_1 (4).png" alt="" srcset="" class="absolute left-[18px] top-[18px]" />
</div>
<div class="ml-[18px]">
<div class="flex items-center">
<span class="info_num text-[#17A86D]">{{ userStaticInfo?.currencyCount || 0 }}</span>
<div class="info_pay cursor-pointer" @click="handlePay">充值</div>
</div>
<div class="font">金币余额</div>
</div>
</div>
<div class="flex items-center">
<div class="relative">
<img src="~/assets/images/info_1 (5).png" alt="" srcset="" />
<img src="~/assets/images/info_1 (6).png" alt="" srcset="" class="absolute left-[18px] top-[22px]" />
</div>
<div class="ml-[18px]">
<div>
<span class="info_num text-[#328CD7]">{{ userStaticInfo?.previewCount || 0 }}</span>
</div>
<div class="font">今日浏览量</div>
</div>
</div>
<div class="flex items-center">
<div class="relative">
<img src="~/assets/images/info_1 (1).png" alt="" srcset="" />
<img src="~/assets/images/info_1 (2).png" alt="" srcset="" class="absolute left-[20px] top-[18px]" />
</div>
<div class="ml-[18px]">
<div>
<span class="info_num text-[#FFC415]">{{ userStaticInfo?.revenueCount || 0 }}</span>
</div>
<div class="font">今日收益</div>
</div>
</div>
</div>
</div>
<!-- -->
<div class="mt-[23px] box-border h-[183px] w-[913px] border border-[#EEEEEE] rounded-[6px] border-solid bg-[#FFFFFF] px-[30px] py-[21px]">
<div class="title">快捷入口</div>
<div class="mt-[20px] flex items-center">
<div class="info_item cursor-pointer" @click="handleClickPush('/upnew')">
<img src="~/assets/images/fabu_2 (3).png" alt="" srcset="" />
<div class="mt-[10px]">发布资源</div>
</div>
<div class="info_item ml-[31px] cursor-pointer" @click="handleClickPush('/channel')">
<img src="~/assets/images/fabu_2 (1).png" alt="" srcset="" />
<div class="mt-[10px]">交流频道</div>
</div>
<div class="info_item ml-[31px] cursor-pointer" @click="handleService">
<img src="~/assets/images/fabu_2 (2).png" alt="" srcset="" />
<div class="mt-[10px]">消息</div>
</div>
</div>
</div>
<!-- echarts -->
<InfoEcharts></InfoEcharts>
<!-- 打开消息弹窗 弄成组件 -->
<Message v-if="dialogVisible" v-model:dialog-visible="dialogVisible"></Message>
<!-- 充值弹窗 -->
<Pay v-if="payVisible" v-model="payVisible" @refresh="fetchUserStatistics"></Pay>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { getUserStatistics } from '~/api/personal-center/index'
import type { UserStatisticsCountRespVO } from '~/api/personal-center/types'
import Message from './components/message.vue'
import InfoEcharts from './info-echarts.vue'
import Pay from './components/pay.vue'
import useUserStore from '~/stores/user'
const userStore = useUserStore()
// 路由跳转
import { useRouter } from 'vue-router'
const router = useRouter()
// 获取用户统计信息
const userStaticInfo = ref<UserStatisticsCountRespVO>()
const fetchUserStatistics = async () => {
const res = await getUserStatistics()
userStaticInfo.value = res.data
}
fetchUserStatistics()
const handleClick = () => {
router.push({ path: '/personal-Center/personal-profile' })
}
const payVisible = ref(false)
const handlePay = () => {
payVisible.value = true
// router.push({ path: '/personal/trading/center' })
}
const handleClickPush = (path: string) => {
if (!path) {
return
}
navigateTo(path)
}
const dialogVisible = ref(false)
const handleService = () => {
dialogVisible.value = true
}
</script>
<style scoped lang="scss">
.info_num {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 24px;
}
.font {
font-weight: 400;
font-size: 14px;
color: #999999;
margin-top: 6px;
}
.info_pay {
width: 60px;
height: 24px;
border-radius: 12px;
border: 1px solid #1a65ff;
font-weight: 400;
font-size: 14px;
color: #1a65ff;
text-align: center;
line-height: 24px;
margin-left: 7px;
}
.title {
padding-bottom: 16px;
border-bottom: 1px solid #eeeeee;
font-weight: 400;
font-size: 16px;
color: #333333;
}
.info_item {
width: 121px;
height: 81px;
border-radius: 4px;
border: 1px solid #1a65ff;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-weight: 400;
font-size: 16px;
color: #333333;
}
</style>