// 不输入参数调用的就是当前时间
// 参数--需转换时间的时间戳
import {dictypeData} from "@/api/user";

const formatDate = (time = new Date(), format = 'yyyy-MM-dd hh:mm:ss') => {
    let date = new Date(time)

    let YY = date.getFullYear()
    let MM = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
    let DD = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
    let hh = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
    let mm = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
    let ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
    if(format === 'yyyy-MM-dd'){
        return YY + '-' + MM + '-' + DD
    }
    // 这里修改返回时间的格式
    return YY + '-' + MM + '-' + DD + ' ' + hh + ':' + mm + ':' + ss
}


const parseDate  = (dateString) =>{
    // 使用正则表达式验证日期字符串的格式
    const regex = /^\d{4}-\d{2}-\d{2}$/;
    if (!dateString.match(regex)) {
        throw new Error('Invalid date format. Expected yyyy-mm-dd.');
    }

    // 解析日期字符串的各个部分
    const [year, month, day] = dateString.split('-').map(Number);

    // 创建一个新的Date对象（注意：月份在Date对象中是0基索引，所以需要减1）
    const date = new Date(year, month - 1, day);

    // 检查Date对象是否正确表示了输入的日期（例如，避免由于月份或日期超出范围而导致的无效日期）
    if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
        throw new Error('Invalid date value.');
    }

    return date;
}

const getDictData = (key) => {
    return new Promise((resolve, reject) => {
        let dictData = JSON.parse(localStorage.getItem('dictypeData'))
        if (dictData) {
            resolve(dictData.filter((item) => item.code === key)[0].children || [])
        } else {
            dictypeData().then(res => {
                resolve(res.data.filter((item) => item.code === key)[0].children || [])
            })
        }
    })
}

export default {
    formatDate,
    getDictData,
    parseDate
}
