Files

235 lines
13 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="agreement-page" :style="{ background: themeConfig.bgColor }">
<!-- 协议内容滚动区 -->
<scroll-view class="content-scroll" scroll-y>
<view class="agreement-content" :style="{ background: themeConfig.cardBgColor }">
<view class="title" :style="{ color: themeConfig.textPrimary }">简记memo隐私政策</view>
<view class="effective-date" :style="{ color: themeConfig.textSecondary }">生效日期2025年04月24日</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">1. 总则</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">1.1 为保护用户隐私规范本小程序的个人信息处理行为本小程序运营者个人开发者以下简称运营者”)依据中华人民共和国个人信息保护法》《中华人民共和国网络安全法》《微信小程序平台运营规范等法律法规及规范制定本隐私政策</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">1.2 本隐私政策适用于您使用本小程序过程中涉及的个人信息处理活动您使用本小程序即视为同意本政策若您不同意本政策请勿使用本小程序</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">1.3 本小程序由个人独立开发及运营无所属企业/公司主体所有信息处理行为均由运营者个人负责</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">2. 个人信息的收集</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">2.1 登录相关信息您使用微信授权登录本小程序时运营者仅获取微信开放平台提供的唯一标识OpenID),该信息仅用于识别您的用户身份不会收集您的微信昵称头像手机号等其他微信账号信息</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">2.2 业务数据您在本小程序内录入的备忘录待办事项账单内容编辑记录时间戳等数据将存储于运营者的服务器中而非本地设备),仅用于为您提供数据同步查看编辑等核心功能</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">2.3 设备与日志信息为保障小程序正常运行可能被动获取微信平台提供的基础设备信息如设备型号系统版本)、操作日志如页面访问记录功能使用记录),该类信息仅用于故障排查功能优化且仅与OpenID关联不关联其他个人身份信息)。</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">2.4 运营者不会主动收集您的姓名身份证号手机号地理位置等其他个人敏感信息</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">3. 个人信息的使用</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">3.1 OpenID仅用于识别您的用户身份保障您能正常访问管理自己存储在服务器的业务数据</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">3.2 您的业务数据仅用于为您本人提供查看编辑删除同步等核心功能运营者不会利用该数据进行商业推广数据分析第三方共享等其他用途</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">3.3 设备与日志信息仅用于定位和解决小程序运行故障优化产品体验不会用于识别个人身份或向第三方披露</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">4. 个人信息的存储与保护</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">4.1 存储方式OpenID及您的业务数据存储于运营者的服务器中设备与日志信息仅在故障排查期间临时存储排查完成后即时删除</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">4.2 存储期限OpenID与业务数据将持续存储直至您主动申请删除账号可通过联系运营者完成);设备与日志信息存储期限不超过7日</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">4.3 安全措施运营者通过服务器访问权限控制数据加密传输等技术手段保障数据安全但因网络攻击服务器故障微信平台漏洞等非运营方可控因素导致的数据泄露运营者不承担责任</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">4.4 您可通过小程序内的删除功能清理自身业务数据如需彻底删除账号及所有数据可联系运营者协助处理</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">5. 个人信息的共享转让与公开披露</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">5.1 运营者不会将您的OpenID业务数据设备信息等任何信息共享转让给第三方除非获得您的明确授权或法律法规司法机关/行政机关的强制性要求</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">5.2 未经您同意运营者不会公开披露您的任何信息因法律法规要求披露时将在允许范围内尽可能提前通知您</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">6. 您的权利</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">6.1 您有权随时查看编辑删除自己存储在本小程序内的业务数据</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">6.2 您有权联系运营者申请删除账号及所有关联数据包括OpenID业务数据);</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">6.3 您有权向运营者查询自身个人信息的处理情况运营者将在合理期限内予以答复</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">6.4 若您发现本小程序存在违规处理您信息的行为有权向运营者反馈或向微信平台投诉</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">7. 未成年人保护</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">7.1 本小程序面向所有年龄段用户若未成年人使用本小程序应在监护人指导下进行监护人应承担相应监护责任</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">7.2 运营者不会主动收集未成年人的任何额外个人信息若监护人发现未成年人的信息被不当处理可联系运营者协助处理</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">8. 隐私政策的变更</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">8.1 运营者可根据法律法规调整或业务优化修改本隐私政策修改后的政策将在小程序内公示公示满7日后生效</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">8.2 若您不同意修改后的政策应停止使用本小程序并可申请删除账号数据继续使用的视为同意修改后的政策</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">9. 联系我们</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">9.1 若您对本隐私政策有任何疑问意见或投诉可通过以下方式联系运营者</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">联系邮箱memo@miaoall.cn</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">微信公众号孙三苗sunsanmiao</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">9.2 运营者将在15个工作日内回复您的咨询或处理请求</view>
</view>
<view class="section">
<view class="section-title" :style="{
color: themeConfig.primaryColor,
background: themeConfig.primaryColor + '10',
borderLeftColor: themeConfig.primaryColor
}">10. 其他</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">10.1 本隐私政策的解释权归运营者个人所有</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">10.2 若本政策与法律法规冲突以法律法规为准</view>
<view class="section-text" :style="{ color: themeConfig.textSecondary }">10.3 您使用本小程序的行为同时受微信平台的隐私政策及运营规范约束</view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
import { getThemeConfigFromStorage, THEME_PRESETS } from '@/utils/theme'
import { refreshNavBarTheme } from '@/utils/themeGlobal'
export default {
name: "privacyPolicy",
data() {
return {
themeConfig: getThemeConfigFromStorage() || THEME_PRESETS['default']
};
},
onLoad() {
refreshNavBarTheme()
this.themeChangeHandler = (themeData) => {
let newTheme = null
if (themeData?.key && THEME_PRESETS[themeData.key]) {
newTheme = THEME_PRESETS[themeData.key]
} else if (themeData?.config) {
newTheme = themeData.config
}
if (newTheme) {
this.themeConfig = newTheme
refreshNavBarTheme()
}
}
uni.$on('themeChanged', this.themeChangeHandler)
},
onShow() {
const latestTheme = getThemeConfigFromStorage() || THEME_PRESETS['default']
if (JSON.stringify(latestTheme) !== JSON.stringify(this.themeConfig)) {
this.themeConfig = latestTheme
}
refreshNavBarTheme()
},
onUnload() {
uni.$off('themeChanged', this.themeChangeHandler)
}
};
</script>
<style scoped>
.agreement-page {
width: 100%;
min-height: 100vh;
padding: 20rpx 24rpx;
padding-bottom: 40px;
box-sizing: border-box;
}
.content-scroll {
height: calc(100vh - 40rpx);
box-sizing: border-box;
}
.agreement-content {
padding: 40rpx;
border-radius: 12rpx;
min-height: calc(100% - 48rpx);
}
.title {
font-size: 36rpx;
font-weight: 700;
text-align: center;
margin-bottom: 16rpx;
letter-spacing: 1rpx;
}
.effective-date {
text-align: center;
font-size: 24rpx;
margin-bottom: 40rpx;
padding-bottom: 24rpx;
border-bottom: 1px dashed rgba(132, 179, 217, 0.2);
}
.section {
margin-bottom: 36rpx;
}
.section-title {
font-size: 30rpx;
font-weight: 600;
margin-bottom: 18rpx;
padding: 12rpx 16rpx;
border-radius: 12rpx;
border-left: 4rpx solid;
}
.section-text {
font-size: 28rpx;
line-height: 2;
margin-bottom: 14rpx;
text-indent: 56rpx;
}
.footer-info {
margin-top: 48rpx;
padding-top: 24rpx;
border-top: 1px dashed rgba(132, 179, 217, 0.2);
text-align: center;
}
.footer-text {
font-size: 24rpx;
line-height: 1.6;
}
.contact-link {
text-decoration: none;
}
</style>