feat: 更新 AI 页面与个人资料菜单

- 修改 AI 页面标题为 "AI 建议" 和 "AI 总结"
- 在个人资料页面添加 AI 建议和总结的导航项
- 优化 AI 页面结构,移除不必要的加载状态和元素
- 更新样式以提升用户体验
This commit is contained in:
你çšnepiedg
2026-03-14 01:18:57 +08:00
parent 67587848ed
commit ff2db1cc07
5 changed files with 758 additions and 1216 deletions
+46 -44
View File
@@ -7,6 +7,24 @@
<view class="section">
<view class="menu-list">
<view class="menu-item" @tap="goAISuggest">
<view class="menu-icon menu-icon-green">🤖</view>
<view class="menu-content">
<text class="menu-label">AI 建议</text>
<text class="menu-desc">查看今日 AI 控烟节奏与建议节点</text>
</view>
<text class="menu-arrow"></text>
</view>
<view class="menu-item" @tap="goAISummary">
<view class="menu-icon menu-icon-green">📝</view>
<view class="menu-content">
<text class="menu-label">AI 总结</text>
<text class="menu-desc">按日期生成抽烟总结和明日建议</text>
</view>
<text class="menu-arrow"></text>
</view>
<view class="menu-item">
<view class="menu-icon menu-icon-green">🔗</view>
<view class="menu-content">
@@ -24,7 +42,7 @@
</view>
<view class="menu-item" @tap="goOnboarding">
<view class="menu-icon menu-icon-green">📝</view>
<view class="menu-icon menu-icon-green">📋</view>
<view class="menu-content">
<text class="menu-label">重新填写问卷</text>
<text class="menu-desc">修改吸烟基线与个人信息</text>
@@ -53,18 +71,14 @@
</view>
</view>
<view class="logout-btn" @tap="logout">
<text class="logout-text">退出登录</text>
</view>
<text class="version">版本 1.0.0</text>
</view>
</template>
<script setup>
import { computed, onMounted, ref } from 'vue'
import { onShareAppMessage } from '@dcloudio/uni-app'
import { createShare } from '@/api'
import { computed, ref } from 'vue'
import { onShareAppMessage, onShow } from '@dcloudio/uni-app'
import * as api from '@/api'
import { useUserStore } from '@/stores/user'
import { useLogin } from '@/hooks/useLogin'
@@ -108,7 +122,7 @@ async function prepareShareToken(showToast = false) {
if (shareLoading.value) return
shareLoading.value = true
try {
const res = await createShare({ days: 7 })
const res = await api.createShare({ days: 7 })
shareToken.value = res.data?.share_token || ''
shareExpireAt.value = res.data?.expire_at || ''
if (showToast) {
@@ -138,6 +152,14 @@ function previewSharePage() {
})
}
function goAISuggest() {
uni.navigateTo({ url: '/pages/ai/index' })
}
function goAISummary() {
uni.navigateTo({ url: '/pages/ai-summary/index' })
}
function goOnboarding() {
uni.navigateTo({ url: '/pages/onboarding/index' })
}
@@ -168,19 +190,6 @@ function copyInfo() {
})
}
function logout() {
uni.showModal({
title: '确认退出',
content: '确定要退出登录吗?',
success: (res) => {
if (res.confirm) {
userStore.logout()
uni.reLaunch({ url: '/pages/index/index' })
}
}
})
}
onShareAppMessage(() => {
return {
title: `${userName.value}的戒烟记录(仅查看)`,
@@ -188,7 +197,7 @@ onShareAppMessage(() => {
}
})
onMounted(async () => {
onShow(async () => {
await waitForLogin()
await prepareShareToken(false)
})
@@ -225,7 +234,9 @@ onMounted(async () => {
color: #111827;
}
.section { margin-bottom: 24rpx; }
.section {
margin-bottom: 24rpx;
}
.menu-list {
display: flex;
@@ -254,8 +265,13 @@ onMounted(async () => {
font-size: 32rpx;
}
.menu-icon-green { background-color: #DCFCE7; }
.menu-icon-gray { background-color: #F3F4F6; }
.menu-icon-green {
background-color: #DCFCE7;
}
.menu-icon-gray {
background-color: #F3F4F6;
}
.menu-content {
flex: 1;
@@ -304,33 +320,19 @@ onMounted(async () => {
font-size: 24rpx;
border: none;
border-radius: 999rpx;
color: #ffffff;
background: #10b981;
color: #FFFFFF;
background: #10B981;
}
.share-btn[disabled] {
background: #9ca3af;
color: #ffffff;
background: #9CA3AF;
color: #FFFFFF;
}
.share-btn::after {
border: none;
}
.logout-btn {
text-align: center;
padding: 28rpx;
margin-top: 40rpx;
background-color: #FFFFFF;
border-radius: 24rpx;
border: 2rpx solid #FEE2E2;
}
.logout-text {
color: #EF4444;
font-size: 30rpx;
}
.version {
display: block;
text-align: center;