210 lines
11 KiB
Vue
210 lines
11 KiB
Vue
<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 本协议是您(以下简称“用户”)与简记memo小程序(以下简称“本小程序”)个人运营者(以下简称“运营者”)之间关于使用本小程序所订立的契约,运营者为个人独立开发者,无所属企业/公司主体。</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 运营者有权根据技术发展、用户需求、法律法规调整等因素,不定期优化、调整或暂停部分/全部服务,重大调整将通过小程序内公告提前7日告知用户。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">2.3 本小程序为免费服务,运营者不承诺提供商业级别的服务稳定性,仅保障基础功能的正常可用。</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 权利:您有权按照本协议约定使用本小程序核心功能;有权查看、编辑、删除自身存储在服务器的所有数据;有权向运营者反馈功能问题或优化建议;在遵守本协议的前提下,运营者保障您正常使用本小程序的基础权益。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">3.2 义务:您保证使用本小程序的行为符合《中华人民共和国网络安全法》《互联网信息服务管理办法》等法律法规及公序良俗;不得利用本小程序存储、传播违法、违规、侵权、色情、暴力等内容;应对自身录入的内容及使用行为承担全部法律责任;不得对本小程序进行反向工程、篡改、破解、爬虫抓取等损害小程序正常运行的操作。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">3.3 您理解并同意,微信OpenID仅用于身份识别,运营者不会通过该信息获取您的其他微信账号信息。</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 运营者有权在以下情形暂停/终止服务:(1)您违反本协议约定且未在通知期限内纠正;(2)法律法规、微信平台规则要求暂停/终止;(3)不可抗力(如服务器故障、网络中断);(4)运营者自主停止运营(提前30日在小程序内公告)。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">4.2 服务暂停期间,运营者将尽力恢复服务,但不承诺恢复时限;服务终止后,您存储在服务器的所有数据将保留7日,逾期将永久删除,运营者不承担数据找回、备份或赔偿责任。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">4.3 您可主动申请终止服务(联系运营者删除账号及所有数据),申请生效后,运营者将在15个工作日内完成数据清理。</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 本小程序仅提供基础数据存储与管理功能,运营者不对您存储内容的完整性、准确性、安全性做绝对担保;因网络故障、服务器维护、微信平台规则调整、您的设备问题等非运营方可控因素导致的数据丢失、功能异常,运营者不承担赔偿责任。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">5.2 本小程序为个人开发的免费服务,运营者无义务提供7×24小时技术支持,仅根据实际情况在合理期限内解答用户咨询(通过预留邮箱/公众号)。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">5.3 因您违反法律法规或本协议约定,导致第三方索赔、行政机关处罚的,由您自行承担全部责任,运营者不承担连带责任。</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 运营者可根据法律法规调整、业务优化需要修改本协议,修改后的协议将在小程序内公示,公示满7日后自动生效。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">6.2 若您不同意修改后的协议,应立即停止使用本小程序并可申请删除账号数据;继续使用本小程序的,视为您同意修改后的协议。</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 若您对本协议有任何疑问,可通过以下方式联系运营者:联系邮箱:memo@miaoall.cn;微信公众号:孙三苗(sunsanmiao)。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">8.2 本协议的条款如被有权机关认定为无效或不可执行,不影响其余条款的效力。</view>
|
||
<view class="section-text" :style="{ color: themeConfig.textSecondary }">8.3 本协议与《隐私政策》共同构成您与运营者之间的完整约定,两者冲突时,以《隐私政策》中关于个人信息保护的内容为准。</view>
|
||
</view>
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { getThemeConfigFromStorage, THEME_PRESETS } from '@/utils/theme'
|
||
import { refreshNavBarTheme } from '@/utils/themeGlobal'
|
||
|
||
export default {
|
||
name: "userAgreement",
|
||
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> |