Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 04a99df434 | |||
| d3a3e9ad1e | |||
| b49bf0f0f9 | |||
| 8812ffd7b9 |
@@ -17,6 +17,7 @@
|
||||
"pages/mine/mine",
|
||||
"pages/decorate/decorate",
|
||||
"pages/settings/settings",
|
||||
"pages/agreement/agreement",
|
||||
"pages/user/user",
|
||||
"pages/relations/relations"
|
||||
],
|
||||
|
||||
@@ -8,6 +8,9 @@ Component({
|
||||
// 装扮页的实时预览:只看效果,不要底部那排按钮
|
||||
preview: { type: Boolean, value: false },
|
||||
hideWall: { type: Boolean, value: false }, // 「我的」页藏掉社交宠物墙,避免和「我的毛孩子」卡重复
|
||||
// 关注/粉丝数字是否可点开列表。别人主页设 false:从关注/粉丝列表点进对方主页后,
|
||||
// 不再允许打开对方的关注/粉丝,否则会无限套娃
|
||||
relationsClickable: { type: Boolean, value: true },
|
||||
},
|
||||
data: { initial: '', theme: 'warm' },
|
||||
observers: {
|
||||
@@ -28,6 +31,7 @@ Component({
|
||||
this.triggerEvent('decorate');
|
||||
},
|
||||
onRelations(e) {
|
||||
if (!this.data.relationsClickable) return; // 别人主页:只看数字,不给点开列表
|
||||
this.triggerEvent('relations', { kind: e.currentTarget.dataset.kind });
|
||||
},
|
||||
onPet(e) {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
// 社区 tab 暂时下线:从这里去掉入口即可(页面与 app.json 里的注册都保留,
|
||||
// 需要恢复时把社区那行加回来就行)
|
||||
const LIST = [
|
||||
{ pagePath: '/pages/home/home', text: '首页', icon: 'home' },
|
||||
{ pagePath: '/pages/report/report', text: '报告', icon: 'report' },
|
||||
{ pagePath: '/pages/community/community', text: '社区', icon: 'community' },
|
||||
// { pagePath: '/pages/community/community', text: '社区', icon: 'community' },
|
||||
{ pagePath: '/pages/mine/mine', text: '我的', icon: 'user' },
|
||||
];
|
||||
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
// 用户协议 / 隐私协议。两份都放这一个页面,靠 query.type 切换。
|
||||
// 文案是通用模板,正式上线前请让法务/运营按主体信息再核对一遍。
|
||||
const UPDATED = '2026年8月4日';
|
||||
|
||||
const DOCS = {
|
||||
user: {
|
||||
title: '用户协议',
|
||||
intro:
|
||||
'欢迎使用「肉垫计划」(以下简称"本小程序")。本协议是您与本小程序之间就使用本服务所订立的协议。请您在使用前仔细阅读,一旦您开始使用本小程序,即视为您已阅读并同意本协议的全部内容。',
|
||||
sections: [
|
||||
{
|
||||
h: '一、服务内容',
|
||||
ps: [
|
||||
'本小程序是一款面向养宠人群的养护助手,提供养护日历、健康记录、提醒、成长报告等功能,帮助你更好地照顾宠物。',
|
||||
'本小程序提供的养护建议、健康提示等内容仅供参考,不构成任何专业兽医诊断或治疗方案。当宠物出现异常时,请及时咨询专业宠物医院。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '二、账号与登录',
|
||||
ps: [
|
||||
'本小程序通过微信授权登录,你无需单独注册账号。你应对通过你的微信账号进行的操作负责。',
|
||||
'你承诺提供真实、准确的宠物及个人信息。因信息不实导致的养护建议偏差,由你自行承担。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '三、用户行为规范',
|
||||
ps: [
|
||||
'你在使用本小程序(包括社区发帖、评论等功能)时,不得发布任何违反法律法规、侵犯他人权益、含有暴力、色情、谣言、广告等违规内容。',
|
||||
'本小程序有权对涉嫌违规的内容进行审核、屏蔽或删除,并可视情况限制相关功能的使用。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '四、内容与知识产权',
|
||||
ps: [
|
||||
'你在本小程序中创建的宠物档案、记录、图片等内容归你所有;你授予本小程序在提供服务所必需的范围内使用这些内容的权利。',
|
||||
'本小程序的界面、图标、文案、代码等由开发者享有知识产权,未经许可不得复制、传播或用于商业用途。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '五、免责声明',
|
||||
ps: [
|
||||
'本小程序按"现状"提供服务。对于因不可抗力、网络故障、第三方服务中断等非本小程序原因导致的服务中断或数据丢失,本小程序在法律允许范围内不承担责任。',
|
||||
'你理解并同意,养护建议仅为辅助参考,最终的养护及医疗决策应由你结合专业意见作出。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '六、服务变更与协议修改',
|
||||
ps: [
|
||||
'本小程序可能根据运营需要调整、暂停或终止部分功能。我们会尽量提前告知。',
|
||||
'本协议可能不时更新,更新后将在本页面公示。若你在协议更新后继续使用,即视为接受修改后的协议。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '七、联系我们',
|
||||
ps: ['如对本协议有任何疑问,可通过「设置 → 意见反馈」与我们联系。'],
|
||||
},
|
||||
],
|
||||
},
|
||||
privacy: {
|
||||
title: '隐私政策',
|
||||
intro:
|
||||
'「肉垫计划」(以下简称"本小程序")非常重视你的个人信息与隐私保护。本政策说明我们如何收集、使用、存储和保护你的信息。请你仔细阅读并了解相关内容。',
|
||||
sections: [
|
||||
{
|
||||
h: '一、我们收集的信息',
|
||||
ps: [
|
||||
'账号信息:经你授权,我们可能获取你的微信昵称、头像;在你使用需要手机号的功能(如身份卡)时,经你授权获取你的手机号。',
|
||||
'宠物与养护数据:你主动填写的宠物档案(名字、品种、生日、体重等)、健康记录、提醒、账单及上传的图片。',
|
||||
'设备与日志信息:为保障服务稳定与安全,我们可能收集必要的设备型号、系统版本、操作日志等信息。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '二、我们如何使用信息',
|
||||
ps: [
|
||||
'用于向你提供养护日历、健康记录、提醒、成长报告等核心功能。',
|
||||
'用于生成宠物身份卡、成长报告卡片等由你主动发起的功能。',
|
||||
'用于内容安全审核、故障排查、服务优化与安全防护。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '三、信息的存储',
|
||||
ps: [
|
||||
'你的信息存储于我们的服务器,存储期限为提供服务所必需的期间,法律法规另有规定的除外。',
|
||||
'你上传的图片等文件存储于对象存储服务,仅用于向你及(在社区等公开功能中)你选择公开的对象展示。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '四、信息的共享与披露',
|
||||
ps: [
|
||||
'我们不会向第三方出售你的个人信息。',
|
||||
'为实现内容安全合规,你发布的文字与图片会调用微信官方内容安全接口进行检测;该过程由微信提供,遵循微信的相关规则。',
|
||||
'在法律法规要求、或为保护本小程序及用户合法权益的必要情形下,我们可能依法披露相关信息。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '五、信息安全',
|
||||
ps: [
|
||||
'我们采取合理的技术与管理措施保护你的信息安全,防止未经授权的访问、泄露或篡改。',
|
||||
'但请理解,任何措施都无法保证百分之百的安全,请你妥善保管好自己的设备与账号。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '六、你的权利',
|
||||
ps: [
|
||||
'你可以随时在小程序内查看、修改你的宠物档案与记录,也可以删除你创建的记录、帖子与评论。',
|
||||
'如需注销账号或删除全部数据,可通过「设置 → 意见反馈」与我们联系,我们将在核实后依法处理。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '七、未成年人保护',
|
||||
ps: [
|
||||
'本小程序主要面向成年人。若你是未成年人,请在监护人的陪同与同意下使用,并在监护人指导下提供个人信息。',
|
||||
],
|
||||
},
|
||||
{
|
||||
h: '八、本政策的更新',
|
||||
ps: [
|
||||
'本政策可能不时更新,更新后将在本页面公示。重大变更我们会以适当方式提醒你。',
|
||||
'如对本政策有任何疑问,可通过「设置 → 意见反馈」与我们联系。',
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
Page({
|
||||
data: { doc: null, updated: UPDATED },
|
||||
onLoad(q) {
|
||||
const doc = DOCS[q && q.type === 'privacy' ? 'privacy' : 'user'];
|
||||
this.setData({ doc });
|
||||
wx.setNavigationBarTitle && wx.setNavigationBarTitle({ title: doc.title });
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"nav-bar": "/components/nav-bar/nav-bar"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<nav-bar title="{{doc.title}}" show-back="{{true}}"></nav-bar>
|
||||
|
||||
<scroll-view class="page-scroll" scroll-y="{{true}}" enhanced="{{true}}" show-scrollbar="{{false}}">
|
||||
<view class="page-body no-fab ag-body">
|
||||
<view class="ag-title">{{doc.title}}</view>
|
||||
<view class="ag-updated">最后更新:{{updated}}</view>
|
||||
|
||||
<view class="ag-intro">{{doc.intro}}</view>
|
||||
|
||||
<view wx:for="{{doc.sections}}" wx:key="h" class="ag-sec">
|
||||
<view class="ag-h">{{item.h}}</view>
|
||||
<view wx:for="{{item.ps}}" wx:for-item="p" wx:key="*this" class="ag-p">{{p}}</view>
|
||||
</view>
|
||||
|
||||
<view class="ag-foot">感谢你对「肉垫计划」的信任 🐾</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@@ -0,0 +1,18 @@
|
||||
.ag-body{padding:var(--sp-4) var(--pad-x) 60rpx}
|
||||
.ag-title{font-size:var(--fs-2xl);font-weight:var(--fw-b);letter-spacing:-.6rpx}
|
||||
.ag-updated{margin-top:var(--sp-2);color:var(--muted2);font-size:var(--fs-cap)}
|
||||
|
||||
.ag-intro{
|
||||
margin-top:var(--sp-4);padding:var(--sp-4);border-radius:var(--r-md);
|
||||
background:var(--primary-soft);color:var(--primary-ink);
|
||||
font-size:var(--fs-sm);line-height:1.75;
|
||||
}
|
||||
|
||||
.ag-sec{margin-top:var(--sp-5)}
|
||||
.ag-h{font-size:var(--fs-lg);font-weight:var(--fw-b);color:var(--text);margin-bottom:var(--sp-2)}
|
||||
.ag-p{
|
||||
color:var(--text-2);font-size:var(--fs-md);line-height:1.8;
|
||||
margin-top:var(--sp-2);text-align:justify;
|
||||
}
|
||||
|
||||
.ag-foot{margin-top:var(--sp-6);text-align:center;color:var(--muted2);font-size:var(--fs-sm)}
|
||||
@@ -45,6 +45,9 @@ function mapPost(p) {
|
||||
Page({
|
||||
data: {
|
||||
pet: {},
|
||||
// 评论功能暂时下线:入口隐藏,comments 页面与 openComments 等代码全部保留,
|
||||
// 需要恢复时把这里改回 true 即可
|
||||
commentsEnabled: false,
|
||||
feedTabs: ['推荐', '关注', '新手求助', '晒宠', '经验'],
|
||||
feedIdx: 0,
|
||||
posts: [],
|
||||
|
||||
@@ -35,7 +35,9 @@ module.exports.isUrl = function (s) { return s && s.indexOf('http') === 0; }
|
||||
<pt-icon name="{{item.liked ? 'like-on' : 'like'}}" size="{{32}}"></pt-icon>
|
||||
<text class="pa-n">{{item.like_count || '点赞'}}</text>
|
||||
</view>
|
||||
<view class="pa-btn" data-id="{{item.id}}" bindtap="openComments">
|
||||
<!-- 评论功能暂时关闭(commentsEnabled=false),入口隐藏;页面和代码都保留,
|
||||
后面把 commentsEnabled 改回 true 即可恢复 -->
|
||||
<view wx:if="{{commentsEnabled}}" class="pa-btn" data-id="{{item.id}}" bindtap="openComments">
|
||||
<pt-icon name="comment" size="{{32}}"></pt-icon>
|
||||
<text class="pa-n">{{item.comment_count || '评论'}}</text>
|
||||
</view>
|
||||
|
||||
@@ -35,13 +35,15 @@
|
||||
<view wx:if="{{!pets.length}}" class="empty">还没有毛孩子,先建一份档案</view>
|
||||
</view>
|
||||
|
||||
<!-- 档案/计划/多宠都从首页和宠物卡进,这里留「我的帖子」+ 设置 -->
|
||||
<!-- 档案/计划/多宠都从首页和宠物卡进,这里留「设置」-->
|
||||
<view class="profile-list">
|
||||
<!-- 社区下线期间隐藏「我的帖子」入口(goMyPosts 代码保留,恢复社区时把这块解开即可)
|
||||
<view class="profile-row" bindtap="goMyPosts">
|
||||
<view class="pr-ic"><pt-icon name="community" size="{{34}}"></pt-icon></view>
|
||||
<text class="pr-label">我的帖子</text><text class="pr-val">看审核状态</text>
|
||||
<view class="pr-arrow"><pt-icon name="next" size="{{28}}"></pt-icon></view>
|
||||
</view>
|
||||
-->
|
||||
<view class="profile-row" bindtap="goSettings">
|
||||
<view class="pr-ic"><pt-icon name="settings" size="{{34}}"></pt-icon></view>
|
||||
<text class="pr-label">设置</text><view class="pr-arrow"><pt-icon name="next" size="{{28}}"></pt-icon></view>
|
||||
|
||||
@@ -40,6 +40,21 @@ Page({
|
||||
openSheet(e) {
|
||||
this.setData({ sheetType: e.currentTarget.dataset.type, sheetShow: true });
|
||||
},
|
||||
// 用户协议:走我们自己的页面
|
||||
goAgreement(e) {
|
||||
wx.navigateTo({ url: '/pages/agreement/agreement?type=' + e.currentTarget.dataset.type });
|
||||
},
|
||||
// 隐私政策:直接打开微信公众平台后台配置的《用户隐私保护指引》。
|
||||
// 旧基础库没有该接口时,兜底用内置页面
|
||||
openPrivacy() {
|
||||
if (wx.openPrivacyContract) {
|
||||
wx.openPrivacyContract({
|
||||
fail: () => wx.navigateTo({ url: '/pages/agreement/agreement?type=privacy' }),
|
||||
});
|
||||
} else {
|
||||
wx.navigateTo({ url: '/pages/agreement/agreement?type=privacy' });
|
||||
}
|
||||
},
|
||||
// 自己的关注/粉丝。之前只有帖子上的「+关注」按钮,关注完没有任何地方能看
|
||||
goRelations(e) {
|
||||
const uid = (this.data.user && this.data.user.id) || '';
|
||||
|
||||
@@ -13,6 +13,11 @@
|
||||
<view class="profile-row" data-type="about" bindtap="openSheet"><view class="pr-ic"><pt-icon name="book" size="{{34}}"></pt-icon></view><text class="pr-label">关于我们</text><text class="pr-val">v0.2</text><view class="pr-arrow"><pt-icon name="next" size="{{28}}"></pt-icon></view></view>
|
||||
</view>
|
||||
|
||||
<view class="profile-list">
|
||||
<view class="profile-row" data-type="user" bindtap="goAgreement"><view class="pr-ic"><pt-icon name="doc" size="{{34}}"></pt-icon></view><text class="pr-label">用户协议</text><view class="pr-arrow"><pt-icon name="next" size="{{28}}"></pt-icon></view></view>
|
||||
<view class="profile-row" bindtap="openPrivacy"><view class="pr-ic"><pt-icon name="note" size="{{34}}"></pt-icon></view><text class="pr-label">隐私政策</text><view class="pr-arrow"><pt-icon name="next" size="{{28}}"></pt-icon></view></view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ module.exports.isUrl = function (s) { return s && s.indexOf('http') === 0; }
|
||||
<view wx:if="{{loading}}" class="empty lg">加载中…</view>
|
||||
|
||||
<block wx:elif="{{card}}">
|
||||
<profile-head card="{{card}}" bind:follow="toggleFollow"
|
||||
<!-- 别人主页:关注/粉丝数字只展示、不可点开,避免从列表进主页后又开对方列表无限套娃 -->
|
||||
<profile-head card="{{card}}" relations-clickable="{{false}}" bind:follow="toggleFollow"
|
||||
bind:relations="goRelations" bind:decorate="goDecorate"
|
||||
bind:pet="goPet"></profile-head>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user