|
|
@@ -0,0 +1,296 @@
|
|
|
+<template>
|
|
|
+ <div class="personal">
|
|
|
+ <Breadcrumb />
|
|
|
+ <div class="personal-head">
|
|
|
+ <div class="personal-head-left">
|
|
|
+ <el-avatar :size="100" :src="appStore.avatarDefault" />
|
|
|
+ <div class="personal-user-info">
|
|
|
+ <div class="personal-username">
|
|
|
+ <div class="">用户名</div>
|
|
|
+ <img src="/src/assets/imgs/my/vip@2x.png" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="personal-user-phone mt4">手机号:13212345678</div>
|
|
|
+ <div class="gap10 mt4">
|
|
|
+ <el-button type="primary" size="large" plain>技能标签</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="personal-user-list">
|
|
|
+ <div class="personal-user-li">
|
|
|
+ <span>0</span>
|
|
|
+ <span>米币</span>
|
|
|
+ </div>
|
|
|
+ <div class="personal-user-line"></div>
|
|
|
+ <div class="personal-user-li">
|
|
|
+ <span>0</span>
|
|
|
+ <span>暴米粒</span>
|
|
|
+ </div>
|
|
|
+ <div class="personal-user-line"></div>
|
|
|
+ <div class="personal-user-li">
|
|
|
+ <span>0</span>
|
|
|
+ <span>关注</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="personal-head-right">
|
|
|
+ <div class="personal-head-right-li">
|
|
|
+ <img src="/src/assets/imgs/my/bianji@2x.png" alt="">
|
|
|
+ <div class="">编辑资料</div>
|
|
|
+ </div>
|
|
|
+ <div class="personal-head-right-li">
|
|
|
+ <img src="/src/assets/imgs/my/huiyuan@2x.png" alt="">
|
|
|
+ <div class="">开通会员</div>
|
|
|
+ </div>
|
|
|
+ <div class="personal-head-right-li gradient">
|
|
|
+ <img src="/src/assets/imgs/my/qiandao@2x.png" alt="">
|
|
|
+ <div class="">签到</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="personal-main">
|
|
|
+ <div class="personal-left">
|
|
|
+ <div class="personal-left-list">
|
|
|
+ <div @click="toPath(item, index)" :class="{ active: index == navIndex }" class="personal-left-li"
|
|
|
+ v-for="(item, index) in navList" :key="index">
|
|
|
+ <img v-if="index == navIndex" :src="item.iconActive" alt="">
|
|
|
+ <img v-else :src="item.icon" alt="">
|
|
|
+ <div class="">{{ item.name }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="personal-right">
|
|
|
+ <div class="personal-right-main">
|
|
|
+ <router-view />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import { useAppStore } from '@/pinia/appStore'
|
|
|
+
|
|
|
+import { ref } from 'vue';
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
+const appStore = useAppStore();
|
|
|
+const route = useRoute()
|
|
|
+const router = useRouter()
|
|
|
+const navList = ref([
|
|
|
+ {
|
|
|
+ name: '我的钱包',
|
|
|
+ path: '/personal-center/wallet',
|
|
|
+ icon: '/src/assets/imgs/my/icon1@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon1a@2x.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '会员信息',
|
|
|
+ path: '/personal-center/member-details',
|
|
|
+ icon: '/src/assets/imgs/my/icon2@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon2a@2x.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '我的收藏',
|
|
|
+ path: '/personal-center/collection',
|
|
|
+ icon: '/src/assets/imgs/my/icon3@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon3a@2x.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '我的需求',
|
|
|
+ path: '/personal-center/demand',
|
|
|
+ icon: '/src/assets/imgs/my/icon4@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon4a@2x.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '我的订单',
|
|
|
+ path: '/personal-center/orders',
|
|
|
+ icon: '/src/assets/imgs/my/icon5@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon5a@2x.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '我的发票',
|
|
|
+ path: '/personal-center/invoice',
|
|
|
+ icon: '/src/assets/imgs/my/icon6@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon6a@2x.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '我的工作流',
|
|
|
+ path: '/personal-center/workflow',
|
|
|
+ icon: '/src/assets/imgs/my/icon7@2x.png',
|
|
|
+ iconActive: '/src/assets/imgs/my/icon7a@2x.png'
|
|
|
+ }
|
|
|
+])
|
|
|
+const navIndex = ref(0);
|
|
|
+const toPath = (item: any, index: number) => {
|
|
|
+ navIndex.value = index;
|
|
|
+ if (item.path) {
|
|
|
+ router.push(item.path);
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.personal-head {
|
|
|
+ border-radius: 16px;
|
|
|
+ padding: 24px 16px;
|
|
|
+ background: #FFFFFF;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .personal-head-left {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ .personal-user-info {
|
|
|
+ margin-left: 16px;
|
|
|
+
|
|
|
+ .personal-username {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #333333;
|
|
|
+
|
|
|
+ img {
|
|
|
+ width: 51px;
|
|
|
+ height: 21px;
|
|
|
+ margin-left: 8px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .personal-user-list {
|
|
|
+ display: flex;
|
|
|
+ margin-top: 16px;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .personal-user-li {
|
|
|
+ span {
|
|
|
+ color: #333333;
|
|
|
+ font-size: 14px;
|
|
|
+
|
|
|
+ &:first-child {
|
|
|
+ font-size: 28px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .personal-user-line {
|
|
|
+ margin: 0 16px;
|
|
|
+ height: 20px;
|
|
|
+ width: 2px;
|
|
|
+ background: #EBEEF5;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .personal-head-right {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .personal-head-right-li {
|
|
|
+ display: flex;
|
|
|
+ padding: 9px 16px;
|
|
|
+ align-items: center;
|
|
|
+ margin-left: 8px;
|
|
|
+ // height: 32px;
|
|
|
+ background: #EAF0FF;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+
|
|
|
+ &:first-child {
|
|
|
+ margin-left: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:last-child {
|
|
|
+ background: linear-gradient(270deg, #0055FE 0%, #C832FA 100%);
|
|
|
+
|
|
|
+ div {
|
|
|
+ color: #FFFFFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ img {
|
|
|
+ width: 14px;
|
|
|
+ height: 14px;
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+
|
|
|
+ div {
|
|
|
+ color: #2D71FF;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.personal-main {
|
|
|
+ margin-top: 16px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .personal-left {
|
|
|
+ width: 300px;
|
|
|
+
|
|
|
+ .personal-left-list {
|
|
|
+ background: #FFFFFF;
|
|
|
+ border-radius: 16px;
|
|
|
+ padding: 8px;
|
|
|
+
|
|
|
+ .personal-left-li {
|
|
|
+ height: 56px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 8px;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #333333;
|
|
|
+ cursor: pointer;
|
|
|
+ border-radius: 8px;
|
|
|
+
|
|
|
+ img {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ background: #F5F7FF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .active {
|
|
|
+ position: relative;
|
|
|
+ background: #EAF0FF;
|
|
|
+
|
|
|
+ &::after {
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ right: 8px;
|
|
|
+ width: 4px;
|
|
|
+ height: 24px;
|
|
|
+ background: #2D71FF;
|
|
|
+ border-radius: 2px;
|
|
|
+ }
|
|
|
+
|
|
|
+ div {
|
|
|
+ color: #2D71FF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .personal-right {
|
|
|
+ flex: 1;
|
|
|
+
|
|
|
+ margin-left: 16px;
|
|
|
+
|
|
|
+ .personal-right-main {
|
|
|
+ padding: 0 16px;
|
|
|
+ border-radius: 16px;
|
|
|
+ background: #FFFFFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|