File size: 3,971 Bytes
7e54de1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a6758dd
 
 
 
 
 
 
 
 
6c0c3bb
 
a6758dd
7e54de1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// 传入input标签的选择器与要写入的内容,写入内容通过input的change事件写入
function writeInput(selector, content) {
    const inputElement = document.querySelector(selector);
    const textToInput = content;

    // 删除输入框原本的值
    inputElement.value = '';

    // 模拟逐个字符输入
    for (let i = 0; i < textToInput.length; i++) {
        const char = textToInput[i];
        const keyCode = char.charCodeAt(0);

        // 触发 keydown 事件
        const keydownEvent = new KeyboardEvent('keydown', {
            bubbles: true,
            cancelable: true,
            key: char,
            code: `Key${char.toUpperCase()}`,
            keyCode: keyCode,
            which: keyCode
        });
        inputElement.dispatchEvent(keydownEvent);

        // 触发 keypress 事件
        const keypressEvent = new KeyboardEvent('keypress', {
            bubbles: true,
            cancelable: true,
            key: char,
            code: `Key${char.toUpperCase()}`,
            keyCode: keyCode,
            which: keyCode
        });
        inputElement.dispatchEvent(keypressEvent);

        // 更新输入框的值
        inputElement.value += char;

        // 触发 input 事件
        const inputEvent = new Event('input', { bubbles: true });
        inputElement.dispatchEvent(inputEvent);

        // 触发 keyup 事件
        const keyupEvent = new KeyboardEvent('keyup', {
            bubbles: true,
            cancelable: true,
            key: char,
            code: `Key${char.toUpperCase()}`,
            keyCode: keyCode,
            which: keyCode
        });
        inputElement.dispatchEvent(keyupEvent);
    }
}


// 反复查找元素,直到找到为止,触发回调函数
function findElement(selector, callback) {
    const intervalid = setInterval(() => {
        const element = document.querySelector(selector);
        if (element) {
            clearInterval(intervalid);
            console.log("find element");
            callback(element);

            // 在接下来的1秒内,每隔100毫触发一次回调函数
            const intervalid2 = setInterval(() => {
                callback(element);
            }, 100);

            // 1秒后停止触发回调函数
            setTimeout(() => {
                clearInterval(intervalid2);
                console.log("click");
                document.querySelector("#query_button").click();
            }, 2000);
        }
    }, 100);
}


// 获取当前页面的URL的参数date,如果没有则查看父页面的URL的参数date
function getDate() {
    let date = new URLSearchParams(window.location.search).get('date');
    if (!date) {
        date = new URLSearchParams(window.parent.location.search).get('date');
    }
    console.log(date);

    if (date) {

        // 解析日期并转为YYYY-MM-DD格式
        // 将日期按照非数字字符分割,然后取出前三个数字,转为字符串,不足两位的前面补0
        const dataArr = date.match(/\d+/g);
        if (dataArr.length >= 6) {
            let start_date = dataArr.slice(0, 3).map(num => num.padStart(2, '0'));
            let end_date = dataArr.slice(3, 6).map(num => num.padStart(2, '0'));
            start_date[0] = start_date[0].padStart(4, '2025');
            end_date[0] = end_date[0].padStart(4, '2025');
            findElement("#start_date textarea", () => {
                writeInput("#start_date textarea", start_date.join('-'));
                writeInput("#end_date textarea", end_date.join('-'));
            });
        } else {

            date = dataArr.map(num => num.padStart(2, '0'));
            date[0] = date[0].padStart(4, '2025');
            date = date.join('-');

            findElement("#start_date textarea", () => {
                writeInput("#start_date textarea", date);
                writeInput("#end_date textarea", date);
            });
        }
    }
}


getDate();