feat: 祈福小助手万年历小程序第一期
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
const { SOLAR_TERMS, SOLAR_TERM_DATES } = require('../../utils/core/index.js');
|
||||
|
||||
Page({
|
||||
data: {
|
||||
year: new Date().getFullYear(),
|
||||
terms: []
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.loadTerms();
|
||||
},
|
||||
|
||||
loadTerms() {
|
||||
const { year } = this.data;
|
||||
const today = new Date();
|
||||
const terms = [];
|
||||
|
||||
for (let m = 0; m < 12; m++) {
|
||||
for (let t = 0; t < 2; t++) {
|
||||
const termIndex = m * 2 + t;
|
||||
const day = SOLAR_TERM_DATES[m][t];
|
||||
const dateStr = `${year}-${String(m + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
|
||||
const termDate = new Date(year, m, day);
|
||||
terms.push({
|
||||
name: SOLAR_TERMS[termIndex],
|
||||
date: dateStr,
|
||||
isPast: termDate < today
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 按日期排序
|
||||
terms.sort((a, b) => new Date(a.date) - new Date(b.date));
|
||||
this.setData({ terms });
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "二十四节气",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<view class="container">
|
||||
<view class="card">
|
||||
<view class="section-title">{{year}}年二十四节气</view>
|
||||
<view class="term-list">
|
||||
<view class="term-item" wx:for="{{terms}}" wx:key="name">
|
||||
<view class="flex justify-between items-center">
|
||||
<view>
|
||||
<text class="text-base font-medium">{{item.name}}</text>
|
||||
<text class="text-xs text-muted block">{{item.date}}</text>
|
||||
</view>
|
||||
<text class="badge {{item.isPast ? 'badge-outline' : 'badge-lucky'}}">{{item.isPast ? '已过' : '未来'}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,24 @@
|
||||
.container {
|
||||
padding: 20rpx;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
margin-bottom: 16rpx;
|
||||
color: #C41E3A;
|
||||
}
|
||||
|
||||
.term-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.term-item {
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1rpx solid #E8D5C4;
|
||||
}
|
||||
|
||||
.term-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
Reference in New Issue
Block a user