hookehuyr

docs: 添加函数注释及改进日期时间格式化功能

为 bookingList 页面的 loadData 函数添加注释说明
完善 useGo 和 useReplace 钩子函数的文档注释
重构 formatDatetime 函数,添加详细注释并改进时间处理逻辑
/*
* @Date: 2026-01-06 20:47:00
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2026-01-13 11:42:00
* @FilePath: /xyxBooking-weapp/src/hooks/useGo.js
* @Description: 封装路由跳转方便行内调用
*/
import Taro from '@tarojs/taro';
/**
......@@ -5,6 +12,11 @@ import Taro from '@tarojs/taro';
* @returns
*/
export function useGo () {
/**
* 路由跳转
* @param {string} path - 目标页面路径,支持 / 开头
* @param {Object} query - 查询参数,键值对形式
*/
function go (path, query = {}) {
// 补全路径,如果是 / 开头,去掉 /
let url = path.startsWith('/') ? path.substring(1) : path;
......@@ -36,7 +48,16 @@ export function useGo () {
return go
}
/**
* 封装路由替换方便行内调用
* @returns
*/
export function useReplace () {
/**
* 路由替换
* @param {string} path - 目标页面路径,支持 / 开头
* @param {Object} query - 查询参数,键值对形式
*/
function replace (path, query = {}) {
let url = path.startsWith('/') ? path.substring(1) : path;
if (!url.startsWith('pages/')) {
......
<!--
* @Date: 2024-01-16 11:37:10
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2024-01-30 15:20:12
* @LastEditTime: 2026-01-13 11:43:13
* @FilePath: /xyxBooking-weapp/src/pages/bookingList/index.vue
* @Description: 预约记录列表页
-->
......@@ -34,6 +34,10 @@ const bookingList = ref([]);
const loading = ref(false);
const finished = ref(false);
/**
* 加载预约记录列表
* @param isRefresh 是否刷新,默认 false
*/
const loadData = async (isRefresh = false) => {
if (loading.value || (finished.value && !isRefresh)) return;
......
/*
* @Date: 2022-04-18 15:59:42
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2024-01-30 15:43:33
* @LastEditTime: 2026-01-13 11:39:03
* @FilePath: /xyxBooking-weapp/src/utils/tools.js
* @Description: 文件描述
*/
......@@ -59,12 +59,48 @@ const strExist = (array, str) => {
return exist.length > 0
}
const formatDatetime = (data) => { // 格式化日期
/**
* 格式化日期时间字符串,提取开始/结束时间并拼接为「日期 开始时间-结束时间」格式
* @description 处理包含 begin_time/end_time 的数据对象,截取时间戳最后6位(毫秒/时区等冗余部分),
* 最终拼接为 "YYYY-MM-DD HH:mm:ss-HH:mm:ss" 格式的字符串
* @param {Object} data - 包含开始/结束时间的数据源对象
* @param {string} [data.begin_time] - 开始时间字符串(格式示例:2026-01-13T12:30:45.123456+08:00)
* @param {string} [data.end_time] - 结束时间字符串(格式同 begin_time)
* @returns {string} 格式化后的日期时间字符串,格式为「日期 开始时间-结束时间」;若入参无效返回空字符串
* @example
* 输入示例
* const timeData = {
* begin_time: '2026-01-13T10:00:00.987654+08:00',
* end_time: '2026-01-13T18:30:00.123456+08:00'
* };
* 调用函数
* formatDatetime(timeData); // 返回 "2026-01-13 10:00:00-18:30:00"
*
* @example
* 入参为空的情况
* formatDatetime(null); // 返回 ""
* formatDatetime({}); // 返回 ""
*
* @note 1. 入参时间字符串需保证前19位为有效格式(YYYY-MM-DDTHH:mm:ss),否则截取后可能出现异常;
* 2. 若 begin_time/end_time 缺失,拼接后可能出现 "undefined-undefined" 等异常,需保证入参完整性;
* 3. 该函数默认截取时间字符串前19位(slice(0, -6)),需根据实际时间格式调整截取长度
*/
const formatDatetime = (data) => {
// 格式化日期
if (!data) return '';
let begin_time = data?.begin_time.slice(0, -6);
let end_time = data?.end_time.slice(0, -6);
let str = begin_time + ' ' + end_time;
return `${str.split(' ')[0]} ${str.split(' ')[1]}-${str.split(' ')[3]}`;
}
// 截取时间字符串最后6位(去除毫秒/时区等冗余部分)
const begin_time = data?.begin_time?.slice(0, -6) || '';
const end_time = data?.end_time?.slice(0, -6) || '';
// 拆分时间片段并拼接目标格式:日期 开始时间-结束时间
const [date, beginTime] = begin_time.split('T');
const [, endTime] = end_time.split('T');
// 兼容时间拆分失败的情况,避免返回 NaN/-undefined 等异常
if (!date || !beginTime || !endTime) return '';
return `${date} ${beginTime}-${endTime}`;
};
export { formatDate, wxInfo, parseQueryString, strExist, formatDatetime };
......