11<!-- 用户协议 -->
22<template >
33 <div class =" user-agreement" >
4- <n-h1 class =" title" >用户协议 </n-h1 >
4+ <n-h1 class =" title" >软件许可使用协议 </n-h1 >
55 <n-scrollbar class =" scrollbar" >
66 <n-flex class =" date" justify =" center" >
77 <n-tag round >生效日期:2024 年 7 月 16 日</n-tag >
8- <n-tag type =" warning" round >更新日期:2024 年 9 月 28 日</n-tag >
8+ <n-tag type =" warning" round >更新日期:2025 年 12 月 10 日</n-tag >
9+ <n-tag type =" info" round >协议版本:v2.0</n-tag >
910 </n-flex >
11+ <n-alert type =" warning" title =" 重要声明" >
12+ SPlayer 是一款完全免费且开源的音乐播放软件,遵循 AGPL-3.0 开源协议发布。
13+ 本软件永远不会向用户收取任何费用。如果您是从第三方渠道付费购买本软件,
14+ 您可能遇到了诈骗,请立即停止使用并举报。
15+ </n-alert >
1016 <n-p >
11- 欢迎使用 SPlayer(以下简称“ 本软件” )。本软件是一个本地音乐播放软件,可能会调用第三方 API
12- 来增强其功能。请在使用本软件前仔细阅读本用户协议。本协议是您(以下简称“用户” )与 SPlayer
13- 开发团队(以下简称“ 开发者” )之间的法律协议。一旦您下载、安装或使用本软件,即表示您同意接受本协议的所有条款和条件。
17+ 欢迎使用 SPlayer(以下简称" 本软件" )。本软件是一个本地音乐播放软件,可能会调用第三方 API
18+ 来增强其功能。请在使用本软件前仔细阅读本用户协议。本协议是您(以下简称"用户" )与 SPlayer
19+ 开发团队(以下简称" 开发者" )之间的法律协议。一旦您下载、安装或使用本软件,即表示您同意接受本协议的所有条款和条件。
1420 </n-p >
1521 <n-h3 prefix =" bar" > 软件使用 </n-h3 >
1622 <n-ol >
99105 <n-li >
100106 如果本协议的任何条款被视为无效或不可执行,该条款将被修改以反映双方的意图,其余条款仍然完全有效。
101107 </n-li >
108+ <n-li >
109+ 本协议的所有标题仅仅是为了醒目及阅读方便,本身并没有实际涵义,不能作为解释本协议涵义的依据。
110+ </n-li >
102111 <n-li >
103112 本协议构成您与开发者之间关于使用本软件的完整协议,并取代之前的所有口头或书面协议和陈述。
104113 </n-li >
109118 </n-scrollbar >
110119 <n-flex justify =" center" >
111120 <n-button v-if =" isElectron" type =" error" @click =" closeApp" >不同意</n-button >
112- <n-button type =" success" @click =" emit('close') " :disabled =" !isReadOver" >
121+ <n-button type =" success" @click =" agreeToAgreement " :disabled =" !isReadOver" >
113122 {{ isReadOver ? "同意并使用" : "请先完整阅读" }}
114123 </n-button >
115124 </n-flex >
118127
119128<script setup lang="ts">
120129import { isElectron } from " @/utils/env" ;
130+ import { useSettingStore } from " @/stores" ;
131+ import { CURRENT_AGREEMENT_VERSION } from " @/constants/agreement" ;
121132
122133const emit = defineEmits <{
123134 close: [];
124135}>();
125136
137+ const settingStore = useSettingStore ();
126138const readOverRef = ref <HTMLElement | null >(null );
127139
128140// 是否阅读完毕
129141const isReadOver = useElementVisibility (readOverRef );
130142
143+ // 同意协议
144+ const agreeToAgreement = () => {
145+ if (! isReadOver .value ) return ;
146+ // 更新协议版本
147+ settingStore .userAgreementVersion = CURRENT_AGREEMENT_VERSION ;
148+ // 关闭弹窗
149+ emit (" close" );
150+ };
151+
131152// 关闭软件
132153const closeApp = () => {
133154 window .electron .ipcRenderer .send (" quit-app" );
@@ -144,6 +165,9 @@ const closeApp = () => {
144165 padding-right : 12px ;
145166 }
146167 }
168+ .n-alert {
169+ margin : 20px 0 ;
170+ }
147171 .title {
148172 text-align : center ;
149173 }
0 commit comments