chore: establish V1.1 recovery baseline

This commit is contained in:
2026-09-09 22:05:00 +08:00
commit b46b48eb33
947 changed files with 155471 additions and 0 deletions
@@ -0,0 +1,66 @@
// pages/local-eligibility/local-eligibility.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "本地资格说明",
"usingComponents": {}
}
@@ -0,0 +1,42 @@
// 本地资格说明页 U62
// 解释为什么需要本地资格,引导用户声明
Page({
data: {
eligibilityTypes: [
{ value: 'household_registration', label: '丹阳户籍', icon: '🏠' },
{ value: 'employment', label: '在丹阳工作', icon: '💼' },
{ value: 'residence', label: '在丹阳长期居住', icon: '🏡' },
{ value: 'other', label: '其他符合服务条件', icon: '⭐' }
]
},
onLoad() {
// 检查当前用户的本地资格状态
this.checkStatus()
},
onShow() {
this.checkStatus()
},
checkStatus() {
const app = getApp<{ getStorageSync: (key: string) => any }>()
// TODO: P04-V11 接入真实API
// 如果已声明并verified,跳转到已完成提示
},
// 选择资格类型
onTypeSelect(e: WechatMiniprogram.TouchEvent) {
const type = e.currentTarget.dataset.type as string
// 跳转到补充核验页(如果需要)或直接提交
wx.navigateTo({
url: `/pages/local-eligibility-supplement/local-eligibility-supplement?type=${type}`
})
},
// 跳转到已有资格页面
go到我的资格() {
wx.showToast({ title: '功能开发中', icon: 'none' })
}
})
@@ -0,0 +1,42 @@
<!-- U62 本地资格说明页 -->
<view class="page">
<!-- 头部说明 -->
<view class="header">
<text class="title">为什么需要确认本地资格?</text>
<text class="desc">
善缘丹阳主要服务在丹阳工作、居住或拥有丹阳户籍的适龄单身人士。
本地资格确认帮助我们更好地匹配适合您身边的伴侣。
</text>
</view>
<!-- 资格类型选择 -->
<view class="section">
<text class="section-title">请选择您的本地资格</text>
<view class="type-list">
<view
wx:for="{{eligibilityTypes}}"
wx:key="value"
class="type-card"
bindtap="onTypeSelect"
data-type="{{item.value}}"
>
<text class="type-icon">{{item.icon}}</text>
<text class="type-label">{{item.label}}</text>
</view>
</view>
</view>
<!-- 提示信息 -->
<view class="notice">
<text class="notice-text">
💡 只需声明一种资格即可。如需补充佐证材料,系统会在审核后告知您。
</text>
</view>
<!-- 我的资格入口 -->
<view class="action-bar">
<button class="btn-secondary" bindtap="go到我的资格">
查看我已有的资格
</button>
</view>
</view>
@@ -0,0 +1,105 @@
/* U62 本地资格说明页 */
.page {
padding: 24rpx;
background: #FAFAF8;
min-height: 100vh;
}
.header {
background: #fff;
border-radius: 16rpx;
padding: 32rpx 24rpx;
margin-bottom: 24rpx;
}
.title {
display: block;
font-size: 32rpx;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 16rpx;
}
.desc {
display: block;
font-size: 26rpx;
color: #666;
line-height: 1.6;
}
.section {
background: #fff;
border-radius: 16rpx;
padding: 24rpx;
margin-bottom: 24rpx;
}
.section-title {
font-size: 28rpx;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 20rpx;
display: block;
}
.type-list {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
.type-card {
width: calc(50% - 8rpx);
background: #F7F8FA;
border-radius: 12rpx;
padding: 28rpx 16rpx;
text-align: center;
border: 2rpx solid transparent;
}
.type-card:active {
border-color: #E96B6B;
background: #FFF5F5;
}
.type-icon {
font-size: 40rpx;
display: block;
margin-bottom: 8rpx;
}
.type-label {
font-size: 26rpx;
color: #333;
font-weight: 500;
}
.notice {
background: #FFF9E6;
border-radius: 12rpx;
padding: 20rpx 24rpx;
margin-bottom: 24rpx;
}
.notice-text {
font-size: 24rpx;
color: #8B6914;
line-height: 1.5;
}
.action-bar {
margin-top: 32rpx;
padding-bottom: 48rpx;
}
.btn-secondary {
width: 100%;
height: 88rpx;
line-height: 88rpx;
background: #fff;
color: #E96B6B;
border: 2rpx solid #E96B6B;
border-radius: 12rpx;
font-size: 28rpx;
font-weight: 500;
}