0d1a4181
刘淇
个人中心
|
1
2
3
|
<template>
<view class="user-center-page">
<!-- 顶部用户信息栏 -->
|
12e66ec8
刘淇
新增树
|
4
5
6
7
8
9
10
11
12
13
14
15
|
<view class="header-bg">
<up-avatar
:src="'https://img.jichengshanshui.com.cn:28207/appimg/default-avatar.png'"
size="100rpx"
shape="square"
class="user-avatar"
></up-avatar>
<!-- 用户名+手机号 -->
<view class="user-info-content">
<view class="user-name">{{ userStore.isLogin ? userInfo.username : '未登录' }}</view>
<view class="user-phone">{{ userStore.isLogin ? userInfo.nickname : '--------' }}</view>
|
0d1a4181
刘淇
个人中心
|
16
|
</view>
|
12e66ec8
刘淇
新增树
|
17
|
|
0d1a4181
刘淇
个人中心
|
18
19
|
</view>
|
12e66ec8
刘淇
新增树
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<view class="mine-content">
<up-cell-group title="个人信息">
<up-cell title="姓名" :value="userInfo.nickname"></up-cell>
<up-cell title="账号" :value="userInfo.username"></up-cell>
<up-cell title="电话" :value="userInfo.username"></up-cell>
<up-cell title="角色" :value="translateRoles(userStore.userInfo.roles)"></up-cell>
</up-cell-group>
</view>
<up-button
v-if="!userStore.isLogin"
type="primary"
size="mini"
shape="circle"
@click="handleLogin"
class="login-btn"
>
立即登录
</up-button>
|
0d1a4181
刘淇
个人中心
|
42
|
<!-- 退出登录按钮 (仅登录状态显示) -->
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
43
|
<view v-if="userStore.isLogin" class="logout-btn-wrap">
|
0d1a4181
刘淇
个人中心
|
44
45
46
|
<up-button
type="primary"
size="large"
|
12e66ec8
刘淇
新增树
|
47
|
shape="circle"
|
0d1a4181
刘淇
个人中心
|
48
|
@click="confirmLogout"
|
12e66ec8
刘淇
新增树
|
49
|
class="login-btn"
|
0d1a4181
刘淇
个人中心
|
50
51
52
53
|
>
退出登录
</up-button>
</view>
|
0d1a4181
刘淇
个人中心
|
54
55
56
|
</view>
</template>
|
c293da23
刘淇
新园林init
|
57
|
<script setup lang="ts">
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
58
59
60
|
import { computed } from 'vue'
import { useUserStore } from '@/pinia/user'
import { showModal, onShow } from '@dcloudio/uni-app'
|
12e66ec8
刘淇
新增树
|
61
|
import {translateRoles} from '@/common/utils/common'
|
0d1a4181
刘淇
个人中心
|
62
63
|
// 初始化Pinia仓库
const userStore = useUserStore()
|
0d1a4181
刘淇
个人中心
|
64
|
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
65
66
|
// 计算属性获取用户信息(响应式)
const userInfo = computed(() => userStore.userInfo.user || {})
|
0d1a4181
刘淇
个人中心
|
67
|
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
68
69
70
|
/**
* 处理登录跳转
*/
|
0d1a4181
刘淇
个人中心
|
71
|
const handleLogin = () => {
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
72
73
|
uni.navigateTo({
url: '/pages/login/index'
|
0d1a4181
刘淇
个人中心
|
74
75
76
|
})
}
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
77
78
79
|
/**
* 确认退出登录(带二次确认)
*/
|
0d1a4181
刘淇
个人中心
|
80
|
const confirmLogout = async () => {
|
0d1a4181
刘淇
个人中心
|
81
|
try {
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
82
83
84
85
86
87
|
const res = await uni.showModal({
title: '提示',
content: '确定要退出登录吗?',
confirmText: '退出',
cancelText: '取消'
})
|
0d1a4181
刘淇
个人中心
|
88
|
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
89
90
|
if (res.confirm) {
await userStore.logout()
|
54955fb5
刘淇
巡查和养护 。 失效状态的判断
|
91
|
// uni.showToast({ title: '退出登录成功', type: 'success' })
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
92
|
}
|
0d1a4181
刘淇
个人中心
|
93
94
|
} catch (error) {
console.error('退出登录失败:', error)
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
95
|
uni.showToast({ title: '退出登录失败,请重试', type: 'error' })
|
0d1a4181
刘淇
个人中心
|
96
97
|
}
}
|
c293da23
刘淇
新园林init
|
98
|
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
99
100
101
102
|
// 页面显示时检查登录状态
onShow(() => {
userStore.checkLogin()
})
|
c293da23
刘淇
新园林init
|
103
104
|
</script>
|
0d1a4181
刘淇
个人中心
|
105
106
|
<script lang="ts">
export default {
|
67af4c8e
刘淇
工作台 如果没有子节点就不渲染父节点
|
107
108
109
110
|
name: 'UserCenter',
options: {
navigationBarTitleText: '个人中心'
}
|
0d1a4181
刘淇
个人中心
|
111
112
113
114
115
|
}
</script>
<style lang="scss" scoped>
.user-center-page {
|
12e66ec8
刘淇
新增树
|
116
|
|
0d1a4181
刘淇
个人中心
|
117
118
|
}
|
12e66ec8
刘淇
新增树
|
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
.header-bg {
position:relative;
top: 0;
left: 0;
width: 100%;
height: 230px;
//height: 120px;
background: url("https://img.jichengshanshui.com.cn:28207/appimg/bg.jpg") no-repeat;
background-size: 100% 100%;
z-index: -1;
display: flex;
padding: 80px 0 0 20px;
}
.mine-content{
margin-top: -150px;
border-radius: 30px 30px 0 0;
background: #fff;
}
|
0d1a4181
刘淇
个人中心
|
137
|
|
12e66ec8
刘淇
新增树
|
138
|
.user-avatar {
|
0d1a4181
刘淇
个人中心
|
139
|
|
0d1a4181
刘淇
个人中心
|
140
141
|
}
|
12e66ec8
刘淇
新增树
|
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
.user-info-content {
margin-left: 30rpx;
flex: 1;
.user-name {
font-size: 32rpx;
font-weight: 600;
color: #ffffff;
margin-bottom: 10rpx;
text-shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.1);
}
.user-phone {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.9);
}
}
|
0d1a4181
刘淇
个人中心
|
159
160
161
|
// 退出登录按钮
.logout-btn-wrap {
margin: 200rpx 20rpx 20rpx;
|
0d1a4181
刘淇
个人中心
|
162
|
}
|
12e66ec8
刘淇
新增树
|
163
164
165
166
167
168
169
170
171
172
173
174
175
|
// 登录按钮
.login-btn {
margin-top: 20px;
width: 100%;
height: 44px;
line-height: 44px;
border-radius: 4px;
font-size: 16px;
background: #0A86F4;
box-shadow: 0px 4px 6px 1px rgba(25,94,215,0.5);
border-radius: 23px;
}
|
c293da23
刘淇
新园林init
|
176
|
</style>
|