From 110a9517ff7efed06b7fef6c941e613d9d6a9895 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A6=86=E9=92=B1=E8=90=BD=E5=B0=BD=E6=A7=BF=E8=8A=B1?=
=?UTF-8?q?=E7=A8=80?= <2675540038@qq.com>
Date: Fri, 22 Nov 2024 16:37:49 +0800
Subject: [PATCH] 123
---
pages.json | 74 ++-
pages/index/directory.vue | 14 +-
pages/index/home.vue | 6 +-
pages/index/index.vue | 52 +-
pages/index/user.vue | 9 +-
pages/packageA/user/my_sign.vue | 4 +-
pages/packageA/user/sign_details.vue | 108 ++++
pages/packageA/user/sign_in.vue | 183 ++++++
pages/packageB/paper/add.vue | 22 +
.../{packageA => packageC}/info/discovery.vue | 2 +-
pages/{packageA => packageC}/info/policy.vue | 2 +-
.../info/policy_info.vue | 0
.../info/policy_list.vue | 2 +-
static/birthday.png | Bin 0 -> 79354 bytes
static/map.png | Bin 7819 -> 5100 bytes
uni_modules/uni-calendar/changelog.md | 30 +
.../components/uni-calendar/calendar.js | 544 +++++++++++++++++
.../components/uni-calendar/i18n/en.json | 12 +
.../components/uni-calendar/i18n/index.js | 8 +
.../components/uni-calendar/i18n/zh-Hans.json | 12 +
.../components/uni-calendar/i18n/zh-Hant.json | 12 +
.../uni-calendar/uni-calendar-item.vue | 204 +++++++
.../components/uni-calendar/uni-calendar.vue | 567 ++++++++++++++++++
.../components/uni-calendar/util.js | 360 +++++++++++
uni_modules/uni-calendar/package.json | 86 +++
uni_modules/uni-calendar/readme.md | 103 ++++
util/api.js | 12 +-
27 files changed, 2381 insertions(+), 47 deletions(-)
create mode 100644 pages/packageA/user/sign_details.vue
create mode 100644 pages/packageA/user/sign_in.vue
rename pages/{packageA => packageC}/info/discovery.vue (99%)
rename pages/{packageA => packageC}/info/policy.vue (96%)
rename pages/{packageA => packageC}/info/policy_info.vue (100%)
rename pages/{packageA => packageC}/info/policy_list.vue (96%)
create mode 100644 static/birthday.png
create mode 100644 uni_modules/uni-calendar/changelog.md
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/calendar.js
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/en.json
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/index.js
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/util.js
create mode 100644 uni_modules/uni-calendar/package.json
create mode 100644 uni_modules/uni-calendar/readme.md
diff --git a/pages.json b/pages.json
index 06809b7..2efb90c 100644
--- a/pages.json
+++ b/pages.json
@@ -63,39 +63,15 @@
}
},
{
- "path" : "pages/index/user_map",
- "style" :
- {
- "navigationBarTitleText" : "会员地图"
+ "path": "pages/index/user_map",
+ "style": {
+ "navigationBarTitleText": "会员地图"
}
}
],
"subPackages": [{
"root": "pages/packageA",
- "pages": [{
- "path": "info/discovery",
- "style": {
- "navigationBarTitleText": "河南省青年企业家协会"
- }
- },
- {
- "path": "info/policy",
- "style": {
- "navigationBarTitleText": "河南省青年企业家协会"
- }
- },
- {
- "path": "info/policy_info",
- "style": {
- "navigationBarTitleText": "河南省青年企业家协会"
- }
- },
- {
- "path": "info/policy_list",
- "style": {
- "navigationBarTitleText": "河南省青年企业家协会"
- }
- },
+ "pages": [
{
"path": "user/apply_in",
"style": {
@@ -221,6 +197,18 @@
"style": {
"navigationBarTitleText": "河南省青年企业家协会"
}
+ },
+ {
+ "path": "user/sign_in",
+ "style": {
+ "navigationBarTitleText": "河南省青年企业家协会"
+ }
+ },
+ {
+ "path": "user/sign_details",
+ "style": {
+ "navigationBarTitleText": "河南省青年企业家协会"
+ }
}
]
}, {
@@ -254,6 +242,34 @@
}
}
]
+ }, {
+ "root": "pages/packageC",
+ "pages": [
+ {
+ "path": "info/discovery",
+ "style": {
+ "navigationBarTitleText": "河南省青年企业家协会"
+ }
+ },
+ {
+ "path": "info/policy",
+ "style": {
+ "navigationBarTitleText": "河南省青年企业家协会"
+ }
+ },
+ {
+ "path": "info/policy_info",
+ "style": {
+ "navigationBarTitleText": "河南省青年企业家协会"
+ }
+ },
+ {
+ "path": "info/policy_list",
+ "style": {
+ "navigationBarTitleText": "河南省青年企业家协会"
+ }
+ }
+ ]
}],
"globalStyle": {
"navigationStyle": "custom",
@@ -263,4 +279,4 @@
"backgroundColor": "#F1F2F8"
},
"uniIdRouter": {}
-}
\ No newline at end of file
+}
diff --git a/pages/index/directory.vue b/pages/index/directory.vue
index 4cfa76e..3c8cdc8 100644
--- a/pages/index/directory.vue
+++ b/pages/index/directory.vue
@@ -56,26 +56,27 @@
-
-
+
+
- 企业数量:125家
+ 企业数量:{{covers.length}}家
-
-
@@ -386,6 +387,7 @@
company_image: item.company_image,
nikename: item.nikename,
title: item.enterprise_name,
+ photo_image: item.photo_image,
callout: {
content: item.enterprise_name,
textAlign: 'center',
diff --git a/pages/index/home.vue b/pages/index/home.vue
index 8c40468..e0675dd 100644
--- a/pages/index/home.vue
+++ b/pages/index/home.vue
@@ -424,12 +424,12 @@
},
openInfo(d) {
uni.navigateTo({
- url: '/pages/packageA/info/policy_info?id=' + d.id,
+ url: '/pages/packageC/info/policy_info?id=' + d.id,
})
},
openRight() {
uni.navigateTo({
- url: '/pages/packageA/info/policy',
+ url: '/pages/packageC/info/policy',
})
},
async getMsg() {
@@ -680,4 +680,4 @@
align-items: center;
justify-content: space-between;
}
-
\ No newline at end of file
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
index d6bc73d..e44072b 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,5 +1,6 @@
+
@@ -38,7 +39,20 @@
-
+
+
+
+ 生日快乐!
+
+ 亲爱的{{userInfo.nikename}},今天是您的生日。
+
愿您拥有美好的一天!
+
+
+ 谢⠀⠀谢
+
+
@@ -108,6 +122,8 @@
icon: '',
name: '',
tabShow: true,
+ birthShow: false,
+ userInfo: {}
}
},
onLoad(options) {
@@ -134,6 +150,18 @@
})
uni.setStorageSync('Gid', searchParams.gid);
}
+ var userInfo = uni.getStorageSync('userInfo');
+ this.userInfo = userInfo;
+ if (uni.getStorageSync('birthDay')) {
+ this.birthShow = false;
+ if (!this.isSameMonthDay(userInfo.birth_time)) {
+ uni.removeStorageSync('birthDay');
+ }
+ } else {
+ if (this.isSameMonthDay(userInfo.birth_time)) {
+ this.birthShow = true;
+ }
+ }
},
mounted() {
@@ -174,6 +202,28 @@
}
},
methods: {
+ closeBirth() {
+ var userInfo = uni.getStorageSync('userInfo');
+ uni.setStorageSync('birthDay', userInfo.birth_time);
+ this.birthShow = false;
+ },
+ isSameMonthDay(dateString) {
+ // 解析日期字符串
+ const dateParts = dateString.split('-');
+ if (dateParts.length !== 3) {
+ throw new Error('Invalid date format. Expected format: YYYY-MM-DD');
+ }
+ const birthMonth = parseInt(dateParts[1], 10);
+ const birthDay = parseInt(dateParts[2], 10);
+
+ // 获取当前日期的月份和日期
+ const currentDate = new Date();
+ const currentMonth = currentDate.getMonth() + 1; // getMonth() 返回的是0-11,所以加1
+ const currentDay = currentDate.getDate();
+
+ // 比较月份和日期
+ return currentMonth === birthMonth && currentDay === birthDay;
+ },
parseQuery(queryStr) {
let params = {};
queryStr.split('&').forEach(param => {
diff --git a/pages/index/user.vue b/pages/index/user.vue
index 44c4f60..dcf479d 100644
--- a/pages/index/user.vue
+++ b/pages/index/user.vue
@@ -84,14 +84,18 @@
+ 每日签到
+ 积分明细
站内信
发票开取
- 数据资料导出
+
退出账号
@@ -229,6 +233,7 @@
this.HfModal.show = true;
}
this.login = true;
+ uni.setStorageSync('userInfo', res.data);
}
})
.catch(error => {
diff --git a/pages/packageA/user/my_sign.vue b/pages/packageA/user/my_sign.vue
index ddd7b60..6a93bd6 100644
--- a/pages/packageA/user/my_sign.vue
+++ b/pages/packageA/user/my_sign.vue
@@ -65,7 +65,7 @@
getEventInfo() {
console.log('---3---');
eventInfo({
- association_id: this.association_id,
+ association_id: 1,
id: this.activity_id
})
.then(res => {
@@ -86,7 +86,7 @@
activitySign({
activity_id: this.activity_id,
member_id: this.member_id,
- association_id: this.association_id,
+ association_id: 1,
})
.then(res => {
console.log(res);
diff --git a/pages/packageA/user/sign_details.vue b/pages/packageA/user/sign_details.vue
new file mode 100644
index 0000000..d867ee8
--- /dev/null
+++ b/pages/packageA/user/sign_details.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{number}}
+ 积分
+
+
+
+
+
+
+
+ {{item.content}}
+
+
+ {{item.createtime}}
+
+
+
+ +{{item.number}}
+ -{{item.number}}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/packageA/user/sign_in.vue b/pages/packageA/user/sign_in.vue
new file mode 100644
index 0000000..7e53bc0
--- /dev/null
+++ b/pages/packageA/user/sign_in.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 签到
+
+
+
+
+
+
+ 日常签到
+
+
+ {{item.sign_date}}
+
+
+
+ +{{item.number}}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/packageB/paper/add.vue b/pages/packageB/paper/add.vue
index 44e822d..4ef65f0 100644
--- a/pages/packageB/paper/add.vue
+++ b/pages/packageB/paper/add.vue
@@ -48,6 +48,8 @@
+
+ 发布动态扣除:{{info.consumption_poin}}积分
@@ -72,6 +74,7 @@
+
+
\ No newline at end of file
diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
new file mode 100644
index 0000000..0beebfb
--- /dev/null
+++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+ {{nowDate.month}}
+
+
+
+ {{SUNText}}
+
+
+ {{monText}}
+
+
+ {{TUEText}}
+
+
+ {{WEDText}}
+
+
+ {{THUText}}
+
+
+ {{FRIText}}
+
+
+ {{SATText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-calendar/components/uni-calendar/util.js b/uni_modules/uni-calendar/components/uni-calendar/util.js
new file mode 100644
index 0000000..e0c5103
--- /dev/null
+++ b/uni_modules/uni-calendar/components/uni-calendar/util.js
@@ -0,0 +1,360 @@
+import CALENDAR from './calendar.js'
+
+class Calendar {
+ constructor({
+ date,
+ selected,
+ startDate,
+ endDate,
+ range
+ } = {}) {
+ // 当前日期
+ this.date = this.getDate(new Date()) // 当前初入日期
+ // 打点信息
+ this.selected = selected || [];
+ // 范围开始
+ this.startDate = startDate
+ // 范围结束
+ this.endDate = endDate
+ this.range = range
+ // 多选状态
+ this.cleanMultipleStatus()
+ // 每周日期
+ this.weeks = {}
+ // this._getWeek(this.date.fullDate)
+ }
+ /**
+ * 设置日期
+ * @param {Object} date
+ */
+ setDate(date) {
+ this.selectDate = this.getDate(date)
+ this._getWeek(this.selectDate.fullDate)
+ }
+
+ /**
+ * 清理多选状态
+ */
+ cleanMultipleStatus() {
+ this.multipleStatus = {
+ before: '',
+ after: '',
+ data: []
+ }
+ }
+
+ /**
+ * 重置开始日期
+ */
+ resetSatrtDate(startDate) {
+ // 范围开始
+ this.startDate = startDate
+
+ }
+
+ /**
+ * 重置结束日期
+ */
+ resetEndDate(endDate) {
+ // 范围结束
+ this.endDate = endDate
+ }
+
+ /**
+ * 获取任意时间
+ */
+ getDate(date, AddDayCount = 0, str = 'day') {
+ if (!date) {
+ date = new Date()
+ }
+ if (typeof date !== 'object') {
+ date = date.replace(/-/g, '/')
+ }
+ const dd = new Date(date)
+ switch (str) {
+ case 'day':
+ dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ case 'month':
+ if (dd.getDate() === 31 && AddDayCount>0) {
+ dd.setDate(dd.getDate() + AddDayCount)
+ } else {
+ const preMonth = dd.getMonth()
+ dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期
+ const nextMonth = dd.getMonth()
+ // 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
+ if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){
+ dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount))
+ }
+ // 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
+ if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){
+ dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount))
+ }
+ }
+ break
+ case 'year':
+ dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ }
+ const y = dd.getFullYear()
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
+ return {
+ fullDate: y + '-' + m + '-' + d,
+ year: y,
+ month: m,
+ date: d,
+ day: dd.getDay()
+ }
+ }
+
+
+ /**
+ * 获取上月剩余天数
+ */
+ _getLastMonthDays(firstDay, full) {
+ let dateArr = []
+ for (let i = firstDay; i > 0; i--) {
+ const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+ dateArr.push({
+ date: beforeDate,
+ month: full.month - 1,
+ lunar: this.getlunar(full.year, full.month - 1, beforeDate),
+ disable: true
+ })
+ }
+ return dateArr
+ }
+ /**
+ * 获取本月天数
+ */
+ _currentMonthDys(dateData, full) {
+ let dateArr = []
+ let fullDate = this.date.fullDate
+ for (let i = 1; i <= dateData; i++) {
+ let nowDate = full.year + '-' + (full.month < 10 ?
+ full.month : full.month) + '-' + (i < 10 ?
+ '0' + i : i)
+ // 是否今天
+ let isDay = fullDate === nowDate
+ // 获取打点信息
+ let info = this.selected && this.selected.find((item) => {
+ if (this.dateEqual(nowDate, item.date)) {
+ return item
+ }
+ })
+
+ // 日期禁用
+ let disableBefore = true
+ let disableAfter = true
+ if (this.startDate) {
+ // let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+ // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+ disableBefore = this.dateCompare(this.startDate, nowDate)
+ }
+
+ if (this.endDate) {
+ // let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+ // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+ disableAfter = this.dateCompare(nowDate, this.endDate)
+ }
+ let multiples = this.multipleStatus.data
+ let checked = false
+ let multiplesStatus = -1
+ if (this.range) {
+ if (multiples) {
+ multiplesStatus = multiples.findIndex((item) => {
+ return this.dateEqual(item, nowDate)
+ })
+ }
+ if (multiplesStatus !== -1) {
+ checked = true
+ }
+ }
+ let data = {
+ fullDate: nowDate,
+ year: full.year,
+ date: i,
+ multiple: this.range ? checked : false,
+ beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate),
+ afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate),
+ month: full.month,
+ lunar: this.getlunar(full.year, full.month, i),
+ disable: !(disableBefore && disableAfter),
+ isDay
+ }
+ if (info) {
+ data.extraInfo = info
+ }
+
+ dateArr.push(data)
+ }
+ return dateArr
+ }
+ /**
+ * 获取下月天数
+ */
+ _getNextMonthDays(surplus, full) {
+ let dateArr = []
+ for (let i = 1; i < surplus + 1; i++) {
+ dateArr.push({
+ date: i,
+ month: Number(full.month) + 1,
+ lunar: this.getlunar(full.year, Number(full.month) + 1, i),
+ disable: true
+ })
+ }
+ return dateArr
+ }
+
+ /**
+ * 获取当前日期详情
+ * @param {Object} date
+ */
+ getInfo(date) {
+ if (!date) {
+ date = new Date()
+ }
+ const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+ return dateInfo
+ }
+
+ /**
+ * 比较时间大小
+ */
+ dateCompare(startDate, endDate) {
+ // 计算截止时间
+ startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+ if (startDate <= endDate) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+ /**
+ * 比较时间是否相等
+ */
+ dateEqual(before, after) {
+ // 计算截止时间
+ before = new Date(before.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ after = new Date(after.replace('-', '/').replace('-', '/'))
+ if (before.getTime() - after.getTime() === 0) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+
+ /**
+ * 获取日期范围内所有日期
+ * @param {Object} begin
+ * @param {Object} end
+ */
+ geDateAll(begin, end) {
+ var arr = []
+ var ab = begin.split('-')
+ var ae = end.split('-')
+ var db = new Date()
+ db.setFullYear(ab[0], ab[1] - 1, ab[2])
+ var de = new Date()
+ de.setFullYear(ae[0], ae[1] - 1, ae[2])
+ var unixDb = db.getTime() - 24 * 60 * 60 * 1000
+ var unixDe = de.getTime() - 24 * 60 * 60 * 1000
+ for (var k = unixDb; k <= unixDe;) {
+ k = k + 24 * 60 * 60 * 1000
+ arr.push(this.getDate(new Date(parseInt(k))).fullDate)
+ }
+ return arr
+ }
+ /**
+ * 计算阴历日期显示
+ */
+ getlunar(year, month, date) {
+ return CALENDAR.solar2lunar(year, month, date)
+ }
+ /**
+ * 设置打点
+ */
+ setSelectInfo(data, value) {
+ this.selected = value
+ this._getWeek(data)
+ }
+
+ /**
+ * 获取多选状态
+ */
+ setMultiple(fullDate) {
+ let {
+ before,
+ after
+ } = this.multipleStatus
+
+ if (!this.range) return
+ if (before && after) {
+ this.multipleStatus.before = fullDate
+ this.multipleStatus.after = ''
+ this.multipleStatus.data = []
+ } else {
+ if (!before) {
+ this.multipleStatus.before = fullDate
+ } else {
+ this.multipleStatus.after = fullDate
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
+ } else {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
+ }
+ }
+ }
+ this._getWeek(fullDate)
+ }
+
+ /**
+ * 获取每周数据
+ * @param {Object} dateData
+ */
+ _getWeek(dateData) {
+ const {
+ year,
+ month
+ } = this.getDate(dateData)
+ let firstDay = new Date(year, month - 1, 1).getDay()
+ let currentDay = new Date(year, month, 0).getDate()
+ let dates = {
+ lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+ currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+ nextMonthDays: [], // 下个月开始几天
+ weeks: []
+ }
+ let canlender = []
+ const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+ dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+ canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+ let weeks = {}
+ // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
+ for (let i = 0; i < canlender.length; i++) {
+ if (i % 7 === 0) {
+ weeks[parseInt(i / 7)] = new Array(7)
+ }
+ weeks[parseInt(i / 7)][i % 7] = canlender[i]
+ }
+ this.canlender = canlender
+ this.weeks = weeks
+ }
+
+ //静态方法
+ // static init(date) {
+ // if (!this.instance) {
+ // this.instance = new Calendar(date);
+ // }
+ // return this.instance;
+ // }
+}
+
+
+export default Calendar
diff --git a/uni_modules/uni-calendar/package.json b/uni_modules/uni-calendar/package.json
new file mode 100644
index 0000000..ec924e9
--- /dev/null
+++ b/uni_modules/uni-calendar/package.json
@@ -0,0 +1,86 @@
+{
+ "id": "uni-calendar",
+ "displayName": "uni-calendar 日历",
+ "version": "1.4.12",
+ "description": "日历组件",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "日历",
+ "",
+ "打卡",
+ "日历选择"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+"dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+ "type": "component-vue"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y",
+ "alipay": "n"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/uni_modules/uni-calendar/readme.md b/uni_modules/uni-calendar/readme.md
new file mode 100644
index 0000000..4e1748c
--- /dev/null
+++ b/uni_modules/uni-calendar/readme.md
@@ -0,0 +1,103 @@
+
+
+## Calendar 日历
+> **组件名:uni-calendar**
+> 代码块: `uCalendar`
+
+
+日历组件
+
+> **注意事项**
+> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。
+> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js)
+> - 仅支持自定义组件模式
+> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date()
+> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意
+> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动
+
+
+### 安装方式
+
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
+
+如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
+
+### 基本用法
+
+在 ``template`` 中使用组件
+
+```html
+
+
+
+```
+
+### 通过方法打开日历
+
+需要设置 `insert` 为 `false`
+
+```html
+
+
+
+
+```
+
+```javascript
+
+export default {
+ data() {
+ return {};
+ },
+ methods: {
+ open(){
+ this.$refs.calendar.open();
+ },
+ confirm(e) {
+ console.log(e);
+ }
+ }
+};
+
+```
+
+
+## API
+
+### Calendar Props
+
+| 属性名 | 类型 | 默认值| 说明 |
+| - | - | - | - |
+| date | String |- | 自定义当前时间,默认为今天 |
+| lunar | Boolean | false | 显示农历 |
+| startDate | String |- | 日期选择范围-开始日期 |
+| endDate | String |- | 日期选择范围-结束日期 |
+| range | Boolean | false | 范围选择 |
+| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 |
+|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 |
+| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] |
+|showMonth | Boolean | true | 是否显示月份为背景 |
+
+### Calendar Events
+
+| 事件名 | 说明 |返回值|
+| - | - | - |
+| open | 弹出日历组件,`insert :false` 时生效|- |
+
+
+
+
+
+## 组件示例
+
+点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar)
diff --git a/util/api.js b/util/api.js
index 1d1c3d4..c0e6608 100644
--- a/util/api.js
+++ b/util/api.js
@@ -134,4 +134,14 @@ export const mailMyMemberPost = data => request.post('/move/Maillog/mailMyMember
export const getApplyToken = data => request.post('/move/temporary_token/token', data, false);
-export const latitudeAndLongitude = data => request.post('/move/member/latitudeAndLongitude', data, false);
\ No newline at end of file
+export const latitudeAndLongitude = data => request.post('/move/member/latitudeAndLongitude', data, false);
+
+export const pointsRuleFind = data => request.post('/points_rule/find', data, false);
+
+export const pointsSignIn = data => request.post('/move/signin/signIn', data, false);
+
+export const pointsSignMonth = data => request.post('/move/signin/signInMonth', data, false);
+
+export const signInRecords = data => request.post('/move/signin/signInRecords', data, false);
+
+export const integralIndex = data => request.post('/move/member/integralIndex', data, false);
\ No newline at end of file