cshenfu
2024-05-21 09d8c671d5e6e6045677bfb5218a5fb78c26aa0f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/**
 * 工具包
 * 请勿修改此处代码,因为插件更新后此处代码会被覆盖。
 * 作者:VK
 */
var fnUtil = {};
 
/**
 * 产生指定位数的随机数(支持任意字符,默认纯数字)
 * @params    {Number} length 数据源
 * @params    {String} str 指定的字符串中随机范围
 */
fnUtil.random = function(length, str) {
    let s = "";
    let list = "0123456789";
    //abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    if (str) list = str;
    for (let i = 0; i < length; i++) {
        let code = list[Math.floor(Math.random() * list.length)];
        s += code;
    }
    return s;
};
 
/**
 * 日期格式化
 * @params {Date || Number} date 需要格式化的时间
 */
fnUtil.timeFormat = function(time, fmt = 'yyyy-MM-dd hh:mm:ss', targetTimezone = 8) {
    try {
        if (!time) {
            return "";
        }
        // 其他更多是格式化有如下:
        // yyyy-MM-dd hh:mm:ss|yyyy年MM月dd日 hh时MM分等,可自定义组合
        let date;
        if (typeof time === "number") {
            if (time.toString().length == 10) time *= 1000;
            date = new Date(time);
        } else {
            date = time;
        }
 
        const dif = date.getTimezoneOffset();
        const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
        const east8time = date.getTime() + timeDif;
 
        date = new Date(east8time);
        let opt = {
            "M+": date.getMonth() + 1, //月份
            "d+": date.getDate(), //日
            "h+": date.getHours(), //小时
            "m+": date.getMinutes(), //分
            "s+": date.getSeconds(), //秒
            "q+": Math.floor((date.getMonth() + 3) / 3), //季度
            "S": date.getMilliseconds() //毫秒
        };
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (let k in opt) {
            if (new RegExp("(" + k + ")").test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (opt[k]) : (("00" + opt[k]).substr(("" + opt[
                        k])
                    .length)));
            }
        }
        return fmt;
    } catch (err) {
        // 若格式错误,则原值显示
        return time;
    }
};
 
 
/**
 * request 请求库
 */
fnUtil.request = async function(obj = {}) {
    if (Object.prototype.toString.call(obj.content) === "[object object]") obj.content = JSON.stringify(obj
        .content);
    if (typeof obj.dataType === "undefined") obj.dataType = "json";
    // 当返回的是二进制时,需要设置dataType = default
    if (obj.dataType == "default" || obj.dataType === "") delete obj.dataType;
    if (obj.useContent) obj.content = JSON.stringify(obj.data);
    if (!obj.method) obj.method = "POST";
    if (typeof obj.headers === "undefined" && typeof obj.header !== "undefined") {
        obj.headers = obj.header;
    }
    let originalRes = await uniCloud.httpclient.request(obj.url, obj);
    if (!obj.needOriginalRes && originalRes && originalRes.data) {
        return originalRes.data;
    } else {
        return originalRes;
    }
};
 
module.exports = fnUtil;