列表联调

This commit is contained in:
李瑞
2025-09-07 18:54:36 +08:00
parent 2d0d728969
commit 6feb7057af
28 changed files with 1225 additions and 740 deletions

133
src/utils/dateRange.ts Normal file
View File

@@ -0,0 +1,133 @@
/**
* 日期范围计算工具函数
* 提供从当前日期开始计算本周末、一周内和一个月内的开始和结束日期
*/
interface DateRange {
start: Date;
end: Date;
}
interface FormattedDateRange {
start: string;
end: string;
}
interface AllFormattedRanges {
thisWeekend: FormattedDateRange;
nextWeek: FormattedDateRange;
nextMonth: FormattedDateRange;
}
/**
* 获取当前日期
* @returns {Date} 当前日期对象
*/
const getCurrentDate = (): Date => {
return new Date();
};
/**
* 计算本周末(当前周的周六和周日)
* @param {Date} [baseDate] 基准日期,默认为当前日期
* @returns {DateRange} 包含start和end的日期对象
*/
const getThisWeekend = (baseDate?: Date): DateRange => {
const current = baseDate ? new Date(baseDate) : getCurrentDate();
// 计算到周六的天数getDay()返回0-60是周日6是周六
const daysToSaturday = 6 - current.getDay();
// 计算周六日期
const saturday = new Date(current);
saturday.setDate(current.getDate() + daysToSaturday);
// 计算周日日期
const sunday = new Date(saturday);
sunday.setDate(saturday.getDate() + 1);
return {
start: saturday,
end: sunday
};
};
/**
* 计算一周内从基准日期开始的7天
* @param {Date} [baseDate] 基准日期,默认为当前日期
* @returns {DateRange} 包含start和end的日期对象
*/
const getNextWeekRange = (baseDate?: Date): DateRange => {
const start = baseDate ? new Date(baseDate) : getCurrentDate();
const end = new Date(start);
end.setDate(start.getDate() + 6); // 今天 + 6天 = 7天后
return {
start,
end
};
};
/**
* 计算一个月内从基准日期开始的30天
* @param {Date} [baseDate] 基准日期,默认为当前日期
* @returns {DateRange} 包含start和end的日期对象
*/
const getNextMonthRange = (baseDate?: Date): DateRange => {
const start = baseDate ? new Date(baseDate) : getCurrentDate();
const end = new Date(start);
end.setDate(start.getDate() + 29); // 今天 + 29天 = 30天后
return {
start,
end
};
};
/**
* 格式化日期为 YYYY-MM-DD 格式
* @param {Date} date 日期对象
* @returns {string} 格式化后的日期字符串
* @throws {Error} 如果传入的不是有效的日期对象则抛出错误
*/
const formatDate = (date: Date): string => {
if (!(date instanceof Date) || isNaN(date.getTime())) {
throw new Error('Invalid date object: 请传入有效的Date实例');
}
return date.toISOString().split('T')[0];
};
/**
* 获取所有日期范围的格式化结果
* @param {Date} [baseDate] 基准日期,默认为当前日期
* @returns {AllFormattedRanges} 包含所有格式化后的日期范围
*/
const getAllFormattedRanges = (baseDate?: Date): AllFormattedRanges => {
const weekend = getThisWeekend(baseDate);
const week = getNextWeekRange(baseDate);
const month = getNextMonthRange(baseDate);
return {
thisWeekend: {
start: formatDate(weekend.start),
end: formatDate(weekend.end)
},
nextWeek: {
start: formatDate(week.start),
end: formatDate(week.end)
},
nextMonth: {
start: formatDate(month.start),
end: formatDate(month.end)
}
};
};
export const dateRangeUtils = {
getCurrentDate,
getThisWeekend,
getNextWeekRange,
getNextMonthRange,
formatDate,
getAllFormattedRanges
};
export default dateRangeUtils;

View File

@@ -20,6 +20,7 @@ export const getCurrentLocation = (): Promise<LocationInfo> => {
Taro.getLocation({
type: 'wgs84',
success: (res) => {
console.log('===获取地理位置', res)
// 使用逆地理编码获取地址信息
reverseGeocode(res.latitude, res.longitude)
.then(address => {