380 lines
7.6 KiB
Vue
380 lines
7.6 KiB
Vue
<template>
|
|
<scroll-view class="about-page" scroll-y :scroll-with-animation="true">
|
|
<!-- 品牌区 -->
|
|
<view class="brand-section">
|
|
<view class="brand-logo-card">
|
|
<image class="brand-logo-img" src="/static/logo.jpg" mode="aspectFit" />
|
|
</view>
|
|
<text class="brand-name">毛球手账</text>
|
|
<text class="brand-slogan">让宠物健康管理像记账一样简单</text>
|
|
</view>
|
|
|
|
<!-- 版本信息 -->
|
|
<view class="info-card">
|
|
<view class="info-row">
|
|
<text class="info-label">当前版本</text>
|
|
<text class="info-value">v1.0.0</text>
|
|
</view>
|
|
<view class="info-row">
|
|
<text class="info-label">Build</text>
|
|
<text class="info-value">100</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 核心功能 -->
|
|
<view class="feature-section">
|
|
<view class="section-title">核心功能</view>
|
|
<view class="feature-grid">
|
|
<view v-for="f in features" :key="f.label" class="feature-item">
|
|
<view class="feature-icon-wrap" :style="{ background: f.bg }">
|
|
<TnIcon :name="f.icon" :size="40" :color="f.color" />
|
|
</view>
|
|
<text class="feature-name">{{ f.label }}</text>
|
|
<text class="feature-desc">{{ f.desc }}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 技术信息 -->
|
|
<view class="tech-card">
|
|
<view class="section-title">关于我们</view>
|
|
<view class="tech-list">
|
|
<view class="tech-item">
|
|
<TnIcon name="copyright" :size="36" color="#F97316" />
|
|
<text class="tech-text">毛球手账 版权所有</text>
|
|
</view>
|
|
<view class="tech-item">
|
|
<TnIcon name="safe" :size="36" color="#14B8A6" />
|
|
<text class="tech-text">数据采用云端加密存储</text>
|
|
</view>
|
|
<view class="tech-item">
|
|
<TnIcon name="floral" :size="36" color="#8B5CF6" />
|
|
<text class="tech-text">用心关爱每一只毛孩子</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 联系与反馈 -->
|
|
<view class="contact-card">
|
|
<view class="contact-item" @click="handleFeedback">
|
|
<view class="contact-icon-wrap">
|
|
<TnIcon name="service" :size="40" color="#F97316" />
|
|
</view>
|
|
<text class="contact-text">帮助与反馈</text>
|
|
<TnIcon name="right" :size="28" color="#D1D5DB" />
|
|
</view>
|
|
<view class="contact-item" @click="handleAgreement">
|
|
<view class="contact-icon-wrap">
|
|
<TnIcon name="order" :size="40" color="#3B82F6" />
|
|
</view>
|
|
<text class="contact-text">用户协议与隐私政策</text>
|
|
<TnIcon name="right" :size="28" color="#D1D5DB" />
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 底部 -->
|
|
<view class="footer-section">
|
|
<text class="footer-text">Copyright 2024 FurBall Team</text>
|
|
<text class="footer-text">All Rights Reserved</text>
|
|
</view>
|
|
|
|
<view class="bottom-placeholder" />
|
|
</scroll-view>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { reactive } from 'vue'
|
|
import TnIcon from '@/uni_modules/tuniaoui-vue3/components/icon/src/icon.vue'
|
|
|
|
const features = reactive([
|
|
{
|
|
icon: 'floral-fill',
|
|
label: '宠物档案',
|
|
desc: '记录宠物品种、年龄、体重等信息',
|
|
color: '#F97316',
|
|
bg: '#FFF7ED',
|
|
},
|
|
{
|
|
icon: 'write-fill',
|
|
label: '健康记录',
|
|
desc: '追踪疫苗接种、体检、用药历史',
|
|
color: '#14B8A6',
|
|
bg: '#F0FDFA',
|
|
},
|
|
{
|
|
icon: 'calendar-fill',
|
|
label: '日程提醒',
|
|
desc: '驱虫、洗澡、体检智能提醒',
|
|
color: '#8B5CF6',
|
|
bg: '#F5F3FF',
|
|
},
|
|
{
|
|
icon: 'cloud-fill',
|
|
label: '云端同步',
|
|
desc: '数据安全备份,多端共享',
|
|
color: '#3B82F6',
|
|
bg: '#EFF6FF',
|
|
},
|
|
{
|
|
icon: 'inventory-fill',
|
|
label: '养宠百科',
|
|
desc: '品种知识、常见病护理指南',
|
|
color: '#EC4899',
|
|
bg: '#FDF2F8',
|
|
},
|
|
{
|
|
icon: 'vip-fill',
|
|
label: '会员专享',
|
|
desc: '数据导出、高级分析等特权',
|
|
color: '#F59E0B',
|
|
bg: '#FFFBEB',
|
|
},
|
|
])
|
|
|
|
function handleFeedback() {
|
|
uni.navigateTo({ url: '/pages/mine/feedback' })
|
|
}
|
|
|
|
function handleAgreement() {
|
|
uni.showModal({
|
|
title: '用户协议与隐私政策',
|
|
content:
|
|
'我们仅收集用于提供宠物健康管理服务所必需的信息,包括你的微信昵称、头像以及宠物档案数据。我们承诺不向第三方出售你的数据。',
|
|
showCancel: false,
|
|
})
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
$primary: #F97316;
|
|
$primary-bg: #FFF7ED;
|
|
$text-dark: #431407;
|
|
$text-body: #7C2D12;
|
|
$text-muted: #9CA3AF;
|
|
$card-bg: #FFFFFF;
|
|
$border-color: #FED7AA;
|
|
$radius-xl: 36rpx;
|
|
$radius-lg: 28rpx;
|
|
$shadow: 0 8rpx 24rpx rgba(249, 115, 22, 0.08);
|
|
|
|
.about-page {
|
|
height: 100vh;
|
|
background-color: $primary-bg;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
// === 品牌区 ===
|
|
.brand-section {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 80rpx 0 48rpx;
|
|
}
|
|
|
|
.brand-logo-card {
|
|
width: 160rpx;
|
|
height: 160rpx;
|
|
border-radius: 40rpx;
|
|
background: $card-bg;
|
|
border: 4rpx solid $border-color;
|
|
box-shadow: 0 16rpx 40rpx rgba(249, 115, 22, 0.15);
|
|
padding: 16rpx;
|
|
box-sizing: border-box;
|
|
margin-bottom: 28rpx;
|
|
}
|
|
|
|
.brand-logo-img {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 28rpx;
|
|
}
|
|
|
|
.brand-name {
|
|
font-size: 48rpx;
|
|
font-weight: 800;
|
|
color: $text-dark;
|
|
letter-spacing: 4rpx;
|
|
margin-bottom: 12rpx;
|
|
}
|
|
|
|
.brand-slogan {
|
|
font-size: 26rpx;
|
|
color: $text-body;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
// === 版本信息 ===
|
|
.info-card {
|
|
margin: 0 24rpx 32rpx;
|
|
background: $card-bg;
|
|
border-radius: $radius-lg;
|
|
border: 2rpx solid $border-color;
|
|
box-shadow: $shadow;
|
|
padding: 28rpx 28rpx;
|
|
}
|
|
|
|
.info-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 14rpx 0;
|
|
|
|
&:last-child {
|
|
padding-bottom: 0;
|
|
}
|
|
}
|
|
|
|
.info-label {
|
|
font-size: 28rpx;
|
|
color: $text-muted;
|
|
}
|
|
|
|
.info-value {
|
|
font-size: 28rpx;
|
|
font-weight: 600;
|
|
color: $text-dark;
|
|
}
|
|
|
|
// === 核心功能 ===
|
|
.feature-section {
|
|
margin: 0 24rpx 32rpx;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 30rpx;
|
|
font-weight: 700;
|
|
color: $text-dark;
|
|
margin-bottom: 20rpx;
|
|
padding-left: 8rpx;
|
|
}
|
|
|
|
.feature-grid {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 16rpx;
|
|
}
|
|
|
|
.feature-item {
|
|
width: calc(50% - 8rpx);
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 10rpx;
|
|
padding: 28rpx 16rpx;
|
|
background: $card-bg;
|
|
border-radius: $radius-lg;
|
|
border: 2rpx solid $border-color;
|
|
box-shadow: $shadow;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.feature-icon-wrap {
|
|
width: 72rpx;
|
|
height: 72rpx;
|
|
border-radius: 20rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.feature-name {
|
|
font-size: 26rpx;
|
|
font-weight: 700;
|
|
color: $text-dark;
|
|
}
|
|
|
|
.feature-desc {
|
|
font-size: 20rpx;
|
|
color: $text-muted;
|
|
text-align: center;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
// === 技术信息 ===
|
|
.tech-card {
|
|
margin: 0 24rpx 32rpx;
|
|
background: $card-bg;
|
|
border-radius: $radius-lg;
|
|
border: 2rpx solid $border-color;
|
|
box-shadow: $shadow;
|
|
padding: 28rpx 28rpx 20rpx;
|
|
}
|
|
|
|
.tech-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 24rpx;
|
|
padding-top: 8rpx;
|
|
}
|
|
|
|
.tech-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 20rpx;
|
|
}
|
|
|
|
.tech-text {
|
|
font-size: 28rpx;
|
|
font-weight: 500;
|
|
color: $text-body;
|
|
}
|
|
|
|
// === 联系与反馈 ===
|
|
.contact-card {
|
|
margin: 0 24rpx 32rpx;
|
|
background: $card-bg;
|
|
border-radius: $radius-lg;
|
|
border: 2rpx solid $border-color;
|
|
box-shadow: $shadow;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.contact-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 20rpx;
|
|
padding: 28rpx;
|
|
border-bottom: 2rpx solid #FEF3C7;
|
|
|
|
&:last-child {
|
|
border-bottom: none;
|
|
}
|
|
}
|
|
|
|
.contact-icon-wrap {
|
|
width: 68rpx;
|
|
height: 68rpx;
|
|
border-radius: 18rpx;
|
|
background: $primary-bg;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.contact-text {
|
|
flex: 1;
|
|
font-size: 28rpx;
|
|
font-weight: 600;
|
|
color: $text-dark;
|
|
}
|
|
|
|
// === 底部 ===
|
|
.footer-section {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 8rpx;
|
|
padding: 40rpx 0 12rpx;
|
|
}
|
|
|
|
.footer-text {
|
|
font-size: 22rpx;
|
|
color: $text-muted;
|
|
}
|
|
|
|
.bottom-placeholder {
|
|
height: 60rpx;
|
|
}
|
|
</style>
|