zhengyiming
2025-02-13 6f7c6779645f8b1d5ae158b786489305ea1f1e01
apps/bMiniApp/src/pages/mine/index.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout class="mine-page-wrapper" :need-auth="false">
  <PageLayoutWithBg class="mine-page-wrapper" :need-auth="false">
    <template #navigationBar>
      <TransparentNavigationBar
        title="个人中心"
@@ -11,55 +11,104 @@
      <img :src="OssAssets.mine.Bg" class="mine-page-bg" :style="{ height: `${bgHeight}px` }" />
    </template>
    <ContentView>
      <UserHomeTopView :showUserHomePageBtn="isLogin" :showOperation="isLogin">
      <UserHomeTopView>
        <template #avatar>
          <div class="mine-avatar-wrapper" @click="goLogin">
            <UserAvatar :size="60" class="mine-avatar" />
            <div class="user-info" v-if="isLogin">
              <div class="user-info-item">{{ userDetail?.userName ?? '' }}</div>
              <div class="user-info-item2" v-if="isCertified">
                {{ userDetail?.customerName ?? '' }}
              <div class="user-info-item">
                <div class="user-info-item-name">{{ userDetail?.userName ?? '123' }}</div>
                <div class="user-info-item-gender">
                  <img v-if="1" :src="IconMale" class="user-info-item-gender-icon" />
                  <img v-else :src="IconFemale" class="user-info-item-gender-icon" />
                </div>
                <div class="user-info-item-position">管理员</div>
              </div>
              <div class="user-info-unCertified" v-else @click.stop="goAuthentication">
                <img :src="IconUnCertified" class="user-info-unCertified-icon" />
                <div class="user-info-unCertified-text">未认证</div>
              <div class="user-info-item">
                <template v-if="isCertified">
                  <div class="user-info-unCertified-text">未认证</div>
                  <div class="user-info-unCertified-btn" @click.stop="goAuthentication">
                    立即认证
                  </div>
                </template>
                <template v-else>
                  <div class="user-info-certified-text">
                    {{ userDetail?.customerName ?? '123' }}
                  </div>
                  <div class="user-info-certified-btn">已认证</div>
                </template>
              </div>
            </div>
            <div class="mine-go-login" v-else>去登录</div>
          </div>
        </template>
        <!-- <div class="mine-business-card">
          <div class="mine-business-card-item">
            <img class="mine-business-card-item-icon" :src="IconBusinessCard" alt="" />
            <div class="mine-business-card-item-text">我的电子名片</div>
          </div>
          <div class="mine-business-card-btn">
            <nut-button type="info">递名片</nut-button>
          </div>
        </div> -->
      </UserHomeTopView>
    </ContentView>
    <ContentScrollView v-if="isLogin" class="mine-content-scroll-view">
      <div class="mine-id-menu-wrapper">
        <img :src="IconLamp" class="mine-id-menu-icon" />
      <div class="mine-content-record">
        <div class="mine-content-record-item" @click="goMineFavorites">
          <img class="mine-content-record-item-icon" :src="IconCollect" alt="" />
          <nut-badge top="0" right="0" :value="8" color="#FF7D00">
            <div class="mine-content-record-item-text">我的收藏</div>
          </nut-badge>
        </div>
        <div class="mine-content-record-item" @click="goMineContactRecord">
          <img class="mine-content-record-item-icon" :src="IconRecord" alt="" />
          <nut-badge top="0" right="0" :value="8" color="#FF7D00">
            <div class="mine-content-record-item-text">联系记录</div>
          </nut-badge>
        </div>
      </div>
      <List class="mine-setting-list">
        <ListItem :icon="IconSetting" title="设置" @click="goSetting"></ListItem>
      </List>
    </ContentScrollView>
  </PageLayout>
      <Cell :title="'更多服务'" class="mine-content-service">
        <div class="mine-content-service-list">
          <div class="mine-content-service--list-item">
            <img class="mine-content-service--list-item-icon" :src="IconFinance" alt="" />
            <div class="mine-content-service--list-item-text">财务管理</div>
          </div>
          <div class="mine-content-service--list-item">
            <img class="mine-content-service--list-item-icon" :src="IconRealName" alt="" />
            <div class="mine-content-service--list-item-text">企业实名</div>
          </div>
          <div class="mine-content-service--list-item" @click="goSetting">
            <img class="mine-content-service--list-item-icon" :src="IconSetting" alt="" />
            <div class="mine-content-service--list-item-text">设置</div>
          </div>
        </div>
      </Cell>
      <nut-button type="info" class="mine-content-logout" @click="handleLoginout"
        >退出登录</nut-button
      >
    </ContentView>
  </PageLayoutWithBg>
</template>
<script setup lang="ts">
import {
  PageLayout,
  TransparentNavigationBar,
  ContentScrollView,
  UserHomeTopView,
} from '@/components';
import IconUnCertified from '@/assets/mine/icon-unCertified.png';
import IconLamp from '@/assets/mine/icon-lamp.png';
import IconMenuBusiness from '@/assets/mine/icon-menu-business.png';
import IconMenuContact from '@/assets/mine/icon-menu-contact.png';
import { PageLayoutWithBg, TransparentNavigationBar, UserHomeTopView } from '@/components';
import IconBusinessCard from '@/assets/mine/icon-business-card.png';
import IconCollect from '@/assets/mine/icon-collect.png';
import IconRecord from '@/assets/mine/icon-record.png';
import IconMale from '@/assets/mine/icon-male.png';
import IconFemale from '@/assets/mine/icon-female.png';
import IconFinance from '@/assets/mine/icon-finance.png';
import IconRealName from '@/assets/mine/icon-realname.png';
import IconSetting from '@/assets/mine/icon-setting.png';
import IconMessage from '@/assets/mine/icon-message.png';
import { useUser, useIsLogin, useGoLogin } from '@/hooks';
import Taro from '@tarojs/taro';
import { RouterPath, OssAssets } from '@/constants';
import { List, ListItem } from '@12333/components';
import { useSystemStore } from '@/stores/modules/system';
import { Message } from '@12333/utils';
import { useUserStore } from '@/stores/modules/user';
import { useQueryClient } from '@tanstack/vue-query';
const userStore = useUserStore();
const queryClient = useQueryClient();
const { userDetail, isCertified } = useUser();
const isLogin = useIsLogin();
const systemStore = useSystemStore();
@@ -80,7 +129,7 @@
}
function goSetting() {
  // goPage(RouterPath.setting);
  goPage(RouterPath.setting);
}
Taro.showShareMenu({
@@ -98,6 +147,22 @@
function goAuthentication() {
  goPage(RouterPath.authenticationHome);
}
function goMineFavorites() {
  goPage(RouterPath.mineFavorites);
}
function goMineContactRecord() {
  goPage(RouterPath.mineContactRecord);
}
async function handleLoginout() {
  try {
    await Message.confirm({
      message: '确定要退出登录吗?',
    });
    userStore.logoutAndToHome();
    queryClient.removeQueries();
  } catch (error) {}
}
</script>
<style lang="scss">