爱房JS脚本

可以跳转项目页,打开合同扫描件,一键下载订单明细

目前为 2023-04-25 提交的版本。查看 最新版本

// ==UserScript==
// @name                爱房JS脚本
// @namespace           http://tampermonkey.net/
// @version             2.4
// @description         可以跳转项目页,打开合同扫描件,一键下载订单明细
// @author              熊伟良
// @match               https://daiketong.58corp.com/*
// @match               https://max.58corp.com/*
// @icon                https://pages.anjukestatic.com/fe/ifang_node_admin_web/favicon.ico
// @grant               GM_xmlhttpRequest
// @license             MIT
// @require      https://cdn.bootcdn.net/ajax/libs/xlsx/0.17.1/xlsx.full.min.js
// ==/UserScript==
var currentUrl = 1;

async function getyushou(id) {
    let result = await fetch(`https://daiketong.58corp.com/japi/buildings/up-off-detail/${id}`, {
        "headers": {
            "accept": "application/json, text/plain, */*",
            "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
            "authorization": "",
            "cache-control": "no-cache",
            "login-type": "pc",
            "pragma": "no-cache",
            "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-platform": "\"Windows\"",
            "sec-fetch-dest": "empty",
            "sec-fetch-mode": "cors",
            "sec-fetch-site": "same-origin",
            "sw8": "1-MmE5ZTU5Yjc1MmMwNDRjOThlODRjYmIwNmFjZTUyOTg=-YjRjNTA5NTY5Y2E1NDBjNzg2NmIwNWQ0NmFlYWNmZjk=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL3VwLW9mZi1kZXRhaWwvMTIwMzI5-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
            "sw8-correlation": "c291cmNl:YmVpZG91",
            "timestamp": "1681199724"
        },
        "referrer": "https://daiketong.58corp.com/",
        "referrerPolicy": "strict-origin-when-cross-origin",
        "body": null,
        "method": "GET",
        "mode": "cors",
        "credentials": "include"
    });
    let resultData = await result.json()
    let data = resultData.data
    let range = data.presale_license_range

    // 查找 detail 类中的第二个 section-content 类
    const sectionContentElement = document.querySelector('.detail > :nth-child(5)');
    // 如果找到了该元素,则向其中追加新的 <div> 元素
    if (sectionContentElement) {
        // 创建新的 <div> 元素
        const newDiv = document.createElement('div');
        newDiv.setAttribute('data-v-7bf5ef12', '');
        newDiv.className = 'section-content-item';

        // 在新的 <div> 元素中添加 <span> 元素
        const labelSpan = document.createElement('span');
        labelSpan.setAttribute('data-v-7bf5ef12', '');
        labelSpan.className = 'section-content-item-label';
        labelSpan.innerText = '预售范围:';

        if (["xiongweiliang", "zhanghui54"].includes(document.querySelector(".header-menu").childNodes[2].innerText)) {
            const companyName = document.querySelector('.detail > .section-content > :nth-child(2) > :nth-child(2)').innerText;
            const encodedCompanyName = encodeURIComponent(companyName);
            const url = `https://fsfc.fszj.foshan.gov.cn/loupan/xuke/c${encodedCompanyName}_f-1/`;
            // console.log(url)
            labelSpan.addEventListener('click', function () {
                window.open(url, '_blank');
            });
        }

        const valueSpan = document.createElement('span');
        valueSpan.setAttribute('data-v-7bf5ef12', '');
        valueSpan.className = 'section-content-item-value';
        valueSpan.innerText = range;

        newDiv.appendChild(labelSpan);
        newDiv.appendChild(valueSpan);

        // 在第二个 section-content 元素的第三个子元素后面插入新的 <div> 元素
        const thirdChild = sectionContentElement.children[2];
        sectionContentElement.insertBefore(newDiv, thirdChild.nextSibling);
    }


}


window.onload = function () {

    setInterval(function () {

        if (window.location.href != currentUrl) {
            // URL地址发生变化,触发事件

            if (window.location.href.indexOf("commissionall") > -1) {

                setTimeout(function () {
                    let el_col = document.querySelectorAll(".el-col-22")[5]
                    console.log(el_col)
                    let btn = document.createElement("div")
                    btn.innerHTML = `<button id="关闭暗佣" class="el-button el-button--default el-button--small" style="margin-left:20px">关闭暗佣</button>`
          el_col.appendChild(btn)
                    console.log(btn)
                    console.log(typeof (el_col), typeof (btn))
                    document.querySelector("#关闭暗佣").addEventListener("click", function () {
                        let fontColorList = document.querySelectorAll(".fontColor")
                        if (fontColorList.length > 0) {
                            fontColorList.forEach(function (item) {
                                if (item.innerText == "关闭暗佣") {
                                    console.log(item.innerHTML)
                                    item.click()
                                }
                            })
                        } else {
                            console.log("待加载")
                            // guanbianyong()
                        }
                    }, false)
                    console.log(el_col)
                }, 2000)

            }
            else if (window.location.href.indexOf("approvalStatus")>-1) {



                // 监听文档的 keyup 事件,当松开键盘上的 a 键时执行处理函数
                document.addEventListener('keyup', (event) => {
                    if (event.code === 'KeyA') {
                        document.querySelector('.viewer-rotate-left').click();
                    } else if (event.code === 'KeyD') {
                        document.querySelector('.viewer-rotate-right').click();
                    }
                });

                // 定义一个变量用于保存上一次按下 Q 键的时间戳
                let lastQPressTime = 0;

                // 监听文档的 keydown 事件,当按下键盘上的 Q 键时执行处理函数
                document.addEventListener('keydown', (event) => {
                    if (event.code === 'KeyQ') {
                        const now = new Date().getTime();
                        // 如果距离上一次按下 Q 键不到 500 毫秒,则认为是连续按下了两次 Q 键
                        if (now - lastQPressTime < 500) {
                            // 获取所有类名包含 el-button 的元素
                            const elButtonElements = document.querySelectorAll('[class*=el-button]');

                            // 遍历所有元素,找出内部包含 <span>通过</span> 的按钮
                            for (const elButtonElement of elButtonElements) {
                                // 获取元素内部所有 <span> 元素
                                const spanElements = elButtonElement.querySelectorAll('span');

                                // 遍历所有 <span> 元素,找出包含文本“通过”的元素
                                for (const spanElement of spanElements) {
                                    if (spanElement.innerText === '通过') {
                                        // 如果找到了包含文本“通过”的元素,就打印该元素
                                        elButtonElement.click();
                                        break;
                                    }
                                }
                            }
                        }

                        lastQPressTime = now;
                    }
                });


                const cookie = document.cookie;
                var bc_id = "1"
                setTimeout(function () {
                    // 获取第一个类名为 el-tabs__nav is-top 的元素
                    const elTabsNavElement = document.querySelector('.el-tabs__nav.is-top');

                    // 如果找到了该元素,则点击其最后一个子元素
                    if (elTabsNavElement) {
                        elTabsNavElement.lastElementChild.click();
                    }
                    let contentList = document.querySelectorAll(".section-content-item-value")
                    contentList.forEach(function (contract, contractindex) {
                        let reg =/^(A|B)/
                        if (reg.test(contract.innerText) == true) {
                            var buildingId = contract.innerText.match(/(?<=-)[^-]+(?=-)/g)[0]
                            var bc_code = contract.innerText;
                            contentList[0].onclick = function () {
                                let win = window.open(`https://daiketong.58corp.com/#/refactorProject/projectManager/projectManagerIndex/projectManagerDetail?building_id=${buildingId}&active=4&city_id=362`)
                                }


                            fetch("https://daiketong.58corp.com/japi/buildings/contract/list", {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
                                    "authorization": "",
                                    "content-type": "application/json;charset=UTF-8",
                                    "login-type": "pc",
                                    "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin",
                                    "sw8": "1-MWE1YmNiZTAzOTE5NDIyOTk4MDgwODNhNDAwZDg2NDA=-ODNiMmUwMWU2YTc2NDMyMTkyNmQ1NTI1ZjNjZDUyNzE=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL2NvbnRyYWN0L2xpc3Q=-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
                                    "sw8-correlation": "c291cmNl:YmVpZG91",
                                    "timestamp": "1665145024"
                                },
                                "referrer": "https://daiketong.58corp.com/",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": "{\"building_id\":\"" + buildingId + "\"}",
                                "method": "POST",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => {
                                return res.json()
                            }).then(json => {
                                // console.log(json)
                                json["data"].forEach(function (item, index) {
                                    if (item["bc_code"] == bc_code) {
                                        let bc_id = item["bc_id"]
                                        // console.log(bc_id)
                                        fetch("https://daiketong.58corp.com/japi/buildings/contract/get-packing-list", {
                                            "headers": {
                                                "accept": "application/json, text/plain, */*",
                                                "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
                                                "authorization": "",
                                                "content-type": "application/json;charset=UTF-8",
                                                "login-type": "pc",
                                                "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
                                                "sec-ch-ua-mobile": "?0",
                                                "sec-ch-ua-platform": "\"Windows\"",
                                                "sec-fetch-dest": "empty",
                                                "sec-fetch-mode": "cors",
                                                "sec-fetch-site": "same-origin",
                                                "sw8": "1-MWE1YmNiZTAzOTE5NDIyOTk4MDgwODNhNDAwZDg2NDA=-ODNiMmUwMWU2YTc2NDMyMTkyNmQ1NTI1ZjNjZDUyNzE=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL2NvbnRyYWN0L2xpc3Q=-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
                                                "sw8-correlation": "c291cmNl:YmVpZG91",
                                                "timestamp": "1665146852"
                                            },
                                            "referrer": "https://daiketong.58corp.com/",
                                            "referrerPolicy": "strict-origin-when-cross-origin",
                                            "body": "{\"contract_id\":" + bc_id.toString() + ",\"contract_type\":\"1\",\"status\":\"\"}",
                                            "method": "POST",
                                            "mode": "cors",
                                            "credentials": "include"
                                        }).then(res => {
                                            return res.json()
                                        }).then(json => {
                                            json["data"].forEach(function (item, index) {
                                                contract.addEventListener("click", function () {
                                                    // console.log("qwwqqwqw")
                                                    window.open(item["url"])
                                                }, false)
                                                // console.log(item["url"])
                                            })
                                        })
                                    }
                                })
                            });

                            let result = getyushou(buildingId)



                            }
                    })


                    if (document.querySelector(".header-menu").childNodes[2].innerText == "xiongweiliang") {

                        let re = setInterval(function () {
                            let viewerHalf = document.querySelector(".viewerHalf")
                            if (viewerHalf) {
                                viewerHalf.className = "viewer-container viewer-backdrop viewer-fixed viewer-fade viewer-transition viewer-in"
                                clearInterval(re)
                            } else {
                                // console.log(1)
                            }
                        }, 1000)

                        // let select = setInterval(function () {
                        //     var currentSelect = document.querySelectorAll('div[aria-selected="true"]')[1].innerText;
                        //     console.log(currentSelect)
                        //     if(currentSelect=="草签合同关键页"){
                        //         let viewer_move = document.querySelector(".viewer-move")
                        //         if (viewer_move) {
                        //             console.log(234,viewer_move)
                        //         }
                        //     }
                        //
                        // }, 500)
                        document.onkeyup = function (event) {
                            let viewer_move = document.querySelector(".viewer-move")
                            if (viewer_move) {
                                let a = document.documentElement.clientWidth / 2
                                let b = viewer_move.style["width"].slice(0, -2) * 1 / 2
                                viewer_move.style["margin-left"] = (a - b) + "px"
                            }
                        }
                        document.onmousewheel = function (event) {
                            let viewer_move = document.querySelector(".viewer-move")
                            if (viewer_move) {
                                let a = document.documentElement.clientWidth / 2
                                let b = viewer_move.style["width"].slice(0, -2) * 1 / 2
                                viewer_move.style["margin-left"] = (a - b) + "px"
                            }
                        }
                    }
                }, 500)


            }
            else if (window.location.href.indexOf("batch_id")>-1 && document.querySelector(".el-col.el-col-8").textContent.includes('万科') && ["xiongweiliang", "zhanghui54"].includes(document.querySelector(".header-menu").childNodes[2].innerText)) {
                alert("万科2月订单只能回款成销")
                alert("万科2月订单只能回款成销")

            }
            else if (window.location.href.indexOf("masterContractSee")>-1 && ["xiongweiliang", "zhanghui54"].includes(document.querySelector(".header-menu").childNodes[2].innerText)) {

                let viewlist=document.querySelectorAll('.file-preview--wrapper')
                viewlist.forEach(
                    function(itme,index){
                        itme.onclick=function(){
                            let re = setInterval(function () {
                                let pdfurl=document.querySelector(".preview-canvas--iframe")


                                if (pdfurl) {
                                    document.querySelector('.wb-close').click()

                                    window.open(pdfurl.src, '_blank');
                                    clearInterval(re)
                                } else {
                                    // console.log(1)
                                }
                            }, 1000)}})


            }
            else if (window.location.href.indexOf("max") > -1) {
                function getSystemTime(timeFormat) {
                    // 实例化日期类
                    var time = new Date();
                    // 获取完整的年份(4位)
                    var year = time.getFullYear();
                    // 获取月份(0-11,0代表1月)
                    var month = time.getMonth() + 1;
                    month = month < 10 ? '0' + month : month;
                    // 获取日期(1-31)
                    var day = time.getDate();
                    dd = day < 10 ? '0' + day : day;
                    yd = day - 1 < 10 ? '0' + (day - 1).toString() : day - 1;
                    // 获取小时
                    var h = time.getHours();
                    hh = h < 10 ? '0' + h : h;
                    // 获取分钟
                    var m = time.getMinutes();
                    mm = m < 10 ? '0' + m : m;
                    // 获取秒钟
                    var s = time.getSeconds();
                    ss = s < 10 ? '0' + s : s;
                    console.log(timeFormat);
                    if (timeFormat == "today") {
                        var date = `${year}-${month}-${dd}`
          } else if (timeFormat == "yesterday") {
              var date = `${year}-${month}-${yd}`
          } else if (timeFormat == "mm-dd hhmm") {
              var date = `${month}-${dd} ${hh}${mm}`
          }
                    console.log(date);
                    return (date);
                }
                getSystemTime("today")
                let nav_topNav = document.querySelector(".topNav")
                let list = ["订单明细认购不含退户", "订单明细认购含退户", "资金流水"]
                list.forEach(element => {
                    let li = document.createElement("li")
                    li.innerHTML = `<button id="${element}">${element}</button>`
          nav_topNav.appendChild(li)
                });

                async function getToken() {
                    let res = await fetch("https://max.58corp.com/chart/view/4257", {
                        "headers": {
                            "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
                            "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
                            "cache-control": "max-age=0",
                            "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
                            "sec-ch-ua-mobile": "?0",
                            "sec-ch-ua-platform": "\"Windows\"",
                            "sec-fetch-dest": "document",
                            "sec-fetch-mode": "navigate",
                            "sec-fetch-site": "same-origin",
                            "sec-fetch-user": "?1",
                            "upgrade-insecure-requests": "1"
                        },
                        "referrer": "https://max.58corp.com/chart/view/4493",
                        "referrerPolicy": "strict-origin-when-cross-origin",
                        "body": null,
                        "method": "GET",
                        "mode": "cors",
                        "credentials": "include"
                    })
                    let text = await res.text()
                    var token = text.match(/Token=(.*?),/)[1]
                    console.log(token)

                    function download(id, fileName) {
                        fetch("https://datamap.58.com/report/order/download?downloadId=" + id + "&fileName=" + fileName + "", {
                            "headers": {
                                "accept": "*/*",
                                "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
                                "content-type": "application/json",
                                "responsetype": "blob",
                                "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "cross-site",
                                "token": token
                            },
                            "referrer": "https://max.58corp.com/",
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": null,
                            "method": "GET",
                            "mode": "cors",
                            "credentials": "omit"
                        }).then(res => res.blob().then(blob => {
                            let url = window.URL.createObjectURL(blob)
                            let a = document.createElement('a')
                            a.style.display = 'none'
                            a.href = url
                            a.download = fileName + ".xlsx"
                            document.body.appendChild(a)
                            a.click()
                            document.body.removeChild(a)
                            window.URL.revokeObjectURL(url)
                        }))
                    }

                    function getExcelId(fileName) {
                        fetch("https://datamap.58.com/report/order/list?page=1&limit=1000&key=" + fileName + "&menuId=1154", {
                            "headers": {
                                "accept": "*/*",
                                "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
                                "content-type": "application/json",
                                "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "cross-site",
                                "token": token
                            },
                            "referrer": "https://max.58corp.com/",
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": null,
                            "method": "GET",
                            "mode": "cors",
                            "credentials": "omit"
                        }).then(res => {
                            return res.json()
                        }).then(json => {
                            let id = json["page"]["list"][0]["id"].toString()
                            let status = json["page"]["list"][0]["status"]
                            console.log(status)
                            console.log(json)
                            if (status != 2) {
                                getExcelId(fileName)
                            } else {
                                download(id, fileName)
                            }

                        });

                    }

                    function getExcel(fileName, body) {
                        fetch("https://datamap.58.com/report/order/export", {
                            "headers": {
                                "accept": "*/*",
                                "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
                                "content-type": "application/json",
                                "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "cross-site",
                                "token": token
                            },
                            "referrer": "https://max.58corp.com/",
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": body,
                            "method": "POST",
                            "mode": "cors",
                            "credentials": "omit"
                        }).then(res => {
                            return res.json()
                        }).then(json => {
                            console.log(json.msg)
                            if (json.msg != "success") {
                                getExcel(fileName, body.replace(today, yesterday))
                            } else {
                                getExcelId(fileName)
                            }
                        }
                               );
                    }


                    var queryColumns = `[1, 3, 5, 7, 2, 4, 323, 324, 1085, 964, 6, 325, 8, 9, 10, 11, 12, 13, 730, 1025, 14, 15, 326, 16, 17, 18, 19, 20, 21, 22, 23, 24, 528, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 731, 732, 733, 734, 735, 736, 737, 757, 39, 761, 40, 43, 121, 122, 899, 900, 902, 1242, 901, 1088, 1087, 44, 762, 45, 46, 1022, 327, 328, 47, 329, 48, 49, 50, 1080, 51, 763, 965, 966, 967, 1029, 1030, 1278, 1277, 960, 961, 962, 963, 58, 336, 59, 60, 61, 337, 62, 63, 64, 65, 66, 67, 1023, 68, 69, 1024, 70, 691, 71, 1063, 1279, 1280, 1281, 72, 73, 74, 75, 76, 320, 77, 78, 79, 321, 80, 81, 82, 83, 84, 85, 93, 94, 95, 96, 97, 322, 98, 99, 100, 101, 102, 103, 104, 105, 107, 109, 110, 111, 112, 113, 114, 115, 116, 330, 331, 332, 333, 334, 335, 898, 1216, 1217, 1218, 1219, 1220, 1221, 334, 760, 1029, 1237, 1250, 1258, 328, 329, 334, 757, 760, 1029, 1244, 1237, 1250, 1258]`
          var refundStatus = `[0,1,2,3]`
          var today = getSystemTime("today")
          var yesterday = getSystemTime("yesterday")
          let rengoubutui = document.querySelector("#订单明细认购不含退户")
          rengoubutui.onclick = function () {
              let fileName = getSystemTime("mm-dd hhmm") + " 订单明细(认购)"
              var refundStatus = `[0,1,2]`
            var body = "{\"fileName\":\"" + fileName +
                "\",\"calDt\":\"" + today + "\",\"buildingRegionId\":-1,\"buildingCityId\":-1,\"orderStatus\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],\"ssStatus\":[0,2,3,1,4,5],\"refundStatus\":" + refundStatus + ",\"receivableStatus\":[0,1,2],\"settlementType\":[1,2,0,3,-99],\"prepaidType\":[1,-99,0],\"queryColumns\":" + queryColumns + ",\"menuId\":1153,\"cusErr\":true,\"subscribeTime\": [\"2021-01-01\", \"2023-01-01\"]}"
            console.log(body)
              getExcel(fileName = fileName, body = body)
          }
                    let rengoutui = document.querySelector("#订单明细认购含退户")
                    rengoutui.onclick = function () {
                        let fileName = getSystemTime("mm-dd hhmm") + " 订单明细(认购含退户)"
                        var refundStatus = `[0,1,2,3]`
            var body = "{\"fileName\":\"" + fileName +
                "\",\"calDt\":\"" + today + "\",\"buildingRegionId\":-1,\"buildingCityId\":-1,\"orderStatus\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],\"ssStatus\":[0,2,3,1,4,5],\"refundStatus\":" + refundStatus + ",\"receivableStatus\":[0,1,2],\"settlementType\":[1,2,0,3,-99],\"prepaidType\":[1,-99,0],\"queryColumns\":" + queryColumns + ",\"menuId\":1153,\"cusErr\":true,\"subscribeTime\": [\"2021-01-01\", \"2023-01-01\"]}"
            console.log(body)
                        getExcel(fileName = fileName, body = body)
                    }


                }

                getToken()


            }
            else if (window.location.href.indexOf("masterContractSee") > -1 && document.querySelector(".header-menu").childNodes[2].innerText == "xiongweiliang") {
                async function getData() {
                    let res = await fetch("https://daiketong.58corp.com/japi/buildings/contract/detail?contract_type=1&building_id=125429&contract_id=76673&active=4&renew=0&hiddenEdit=1&bc_status=2&isDraft=false", {
                        "headers": {
                            "accept": "application/json, text/plain, */*",
                            "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,eu;q=0.6",
                            "authorization": "",
                            "cache-control": "no-cache",
                            "login-type": "pc",
                            "pragma": "no-cache",
                            "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
                            "sec-ch-ua-mobile": "?0",
                            "sec-ch-ua-platform": "\"Windows\"",
                            "sec-fetch-dest": "empty",
                            "sec-fetch-mode": "cors",
                            "sec-fetch-site": "same-origin",
                            "sw8": "1-ZjRkMWNhZDIzYzYzNDA0ODk0Yzc5YmVlMjBkMjIyNzg=-NzBiOGNmNWM0Yjg2NGUyM2EyZTE1MzhjOGZkYjNjM2Y=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL2NvbnRyYWN0L2RldGFpbA==-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
                            "sw8-correlation": "c291cmNl:YmVpZG91",
                            "timestamp": "1665834595"
                        },
                        "referrer": "https://daiketong.58corp.com/",
                        "referrerPolicy": "strict-origin-when-cross-origin",
                        "body": null,
                        "method": "GET",
                        "mode": "cors",
                        "credentials": "include"
                    });
                    let json = await res.json()
                    console.table(json.data);


                }

                getData()
            }
            else if (window.location.href.indexOf("evidenceChainList") > -1) {
                // location.reload()

                let timer1 = setInterval(function checkElement() {
                    // 获取元素
                    var element = document.querySelector(".is-plain");
                    // 如果元素存在,打印它的文本内容,并清除定时器
                    if (element) {
                        element.addEventListener('click', function () {
                            console.log('绑定成功')
                            var timer = setInterval(() => {
                                // 获取表格行集合
                                var rows = document.querySelectorAll(".el-table__row")
                                console.log(rows.length);

                                // 如果表格行存在,执行addChild函数,并清除定时器
                                if (rows.length > 0) {
                                    addChild(rows)
                                    clearInterval(timer);
                                }
                            }, 1000);
                        })

                        clearInterval(timer1);
                    }

                }, 500);


                // 添加订单审核链接到每一行
                function addChild() {
                    let nav_topNav = document.querySelectorAll(".el-table__row")
                    nav_topNav.forEach((nav) => {
                        let idNode = nav.querySelectorAll("td")[4]
                        let ID = idNode.querySelector(".cell").innerHTML
                        let handleNode = nav.querySelectorAll("td")[12]
                        let aList = nav.querySelectorAll("a")
                        console.log(ID, aList)
                        if (aList.length > 0) {
                            aList.forEach((c) => {
                                if (c) {
                                    // console.log("123", a)
                                    handleNode.removeChild(c)
                                    console.log(c, '删除成功')
                                }
                            })
                        }
                        let a = document.createElement("a")
                        a.href = `https://daiketong.58corp.com/#/orderManagementFolder/transactionInformationAudit/transactionAudit/transactionAuditBase/transactionAuditDetail?order_id=${ID}&examineNode=SIGNED&approvalStatus=PASSED`
            a.textContent = '订单审核界面'
                        a.target = "_Blank"
                        handleNode.appendChild(a)

                        // console.log(ID, handleNode)

                        async function getData() {
                            let res = await fetch(`https://daiketong.58corp.com/daiketong/v1/success-sale/audit-list?page=1&status=PASSED&order_id=${ID}`, {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
                                    "authorization": "",
                                    "cache-control": "no-cache",
                                    "login-type": "pc",
                                    "pragma": "no-cache",
                                    "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin",
                                    "sw8": "1-YjQyNzY4ZDFiMDM0NGRlZjg2NTI2NmFhYmM0Njc2YzU=-Y2I2YTg3YzM1MmZiNGVlN2JiMTM5ODgyYmFkZGQyMDc=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2RhaWtldG9uZy92MS9zdWNjZXNzLXNhbGUvYXVkaXQtbGlzdA==-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
                                    "sw8-correlation": "c291cmNl:YmVpZG91",
                                    "timestamp": "1679399184"
                                },
                                "referrer": "https://daiketong.58corp.com/",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": null,
                                "method": "GET",
                                "mode": "cors",
                                "credentials": "include"
                            });
                            let json = await res.json()
                            if (json.data.data[0]) {
                                // console.log(ID, json.data.data[0])
                                return json.data.data[0]['batch_id']
                            }

                        }

                        async function useData() {
                            let value = await getData(); // value等于data.data的值
                            if (value) {
                                let a = document.createElement("a")
                                a.href = `https://daiketong.58corp.com/#/salesManagement/examine/examineDetails?isExamine=false&batch_id=${value}`
                a.textContent = '     |    成销界面'
                                a.target = "_Blank"
                                handleNode.appendChild(a)
                            }
                        }

                        useData()

                    })
                }


            }
            else if (window.location.href.indexOf("orderFolderList") > -1) {

                async function getData(name) {
                    let res = fetch(`https://daiketong.58corp.com/daiketong/v1/order/order-customer-list?page=1&customer_name_or_telephone=${name.trim()}`, {
                        "headers": {
                            "accept": "application/json, text/plain, */*",
                            "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
                            "authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyX2lkIjo0MjcyMTksImV4cCI6MTY4MDcwMDgxNiwiaWF0IjoxNjc5NDA0ODE2LCJqdGkiOiI0MjcyMTk6YzA5MWYwOTQtOTQwMy00NjAzLTgzOWItMGU0YTQ1Njg1OGEyOjIwMjMwMzIxMTAwNjM4NTg5In0.kYgJNKMyTukRTDICB29Zf_vasX5Hbl2kmDRXwlRZFpqIoli_1vdS14wBuaK2Hdf6xiOyS3a-CAq7RR7HO96nJm9zuo2YwJMcONy5t_XZTWppB1ob6-y97ZyCFVUBqpyFtys42a_nB89jBJ-1atCbzWdiMc0W-CDBdpBflPdNh8_w5NcB7MvA4UGhRhXlc2ADuNF-D7gEMyW5FvFRvGhbYQfmGYeM4k2xMhQ2wUiYlXiTi4R6MqJXV2E0cwl342B0dFN-Narbijr3hRhlPeETmNhjtB188s7jkG-mqzcjuORSupJRayqKwr7aqg-3owNpPLzrs2qzFyrn8dPUnIp2cQ",
                            "cache-control": "no-cache",
                            "login-type": "pc",
                            "pragma": "no-cache",
                            "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
                            "sec-ch-ua-mobile": "?0",
                            "sec-ch-ua-platform": "\"Windows\"",
                            "sec-fetch-dest": "empty",
                            "sec-fetch-mode": "cors",
                            "sec-fetch-site": "same-origin",
                            "sw8": "1-YzY1NmJiMDg1NTAyNDJmY2JiNzgwZjM5ZjZkOGJmMTc=-ZDUwY2YzMzkxZDBkNDAwMmIzNjgwM2QzM2MyNzJlMWE=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2RhaWtldG9uZy92MS9vcmRlci9vcmRlci1jdXN0b21lci1saXN0-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
                            "sw8-correlation": "c291cmNl:YmVpZG91",
                            "timestamp": "1679407390"
                        },
                        "referrer": "https://daiketong.58corp.com/",
                        "referrerPolicy": "strict-origin-when-cross-origin",
                        "body": null,
                        "method": "GET",
                        "mode": "cors",
                        "credentials": "include"
                    });
                    let json = (await res).json()
                    return json.then(
                        function (a) {
                            var list = a.data.data
                            console.log(list)
                            var newlist = list.filter((b) => {
                                return b.order_invalid_time == '' && b.order_status.indexOf("INVALID") == -1 && b.order_status.indexOf("REPORTED") == -1 && b.order_status.indexOf("VISITED") == -1 && b.order_status.indexOf("INITIALIZED") == -1
                            })
                            return newlist
                        }
                    )
                }


                async function useData(name) {
                    let value = await getData(name); // value等于data.data的值
                    if (value) {
                        console.log(value)
                        let ID = value[0].order_id
                        console.log(ID)
                        var input = document.querySelector('input[placeholder="请输入订单ID"]');
                        let name = document.querySelector('#consumerName')
                        var inputEvent = new Event('input', {bubbles: true});
                        input.value = ID;
                        input.dispatchEvent(inputEvent);
                        name.value = ''
                        var element = document.querySelector(".is-plain span");
                        console.log(element);
                        element.click()
                        alert("查询成功")

                    }
                }

                let timer = setInterval(function checkElement() {
                    // 获取元素
                    var element = document.querySelector(".is-plain");
                    // 如果元素存在,打印它的文本内容,并清除定时器
                    if (element) {
                        let querycriteria = document.querySelector('.query-criteria')
                        let div = document.createElement("div")
                        div.innerHTML = `<div data-v-652f0c2c="" class="el-input el-input--small el-input--suffix"><!----><input type="text" id="consumerName"  autocomplete="off" placeholder="请输入客户姓名" maxlength="20" class="el-input__inner"><!----><!----><!----><!----></div>`
            querycriteria.appendChild(div)
                        let input = document.querySelector('input[placeholder="请输入订单ID"]');
                        let name = document.querySelector('#consumerName')
                        element.addEventListener('click', function () {
                            console.log("绑定成功");
                            if (name.value != "") {
                                // console.log(2323232323)
                                useData(name.value)
                            }
                        })


                        clearInterval(timer);
                    }

                }, 1000);

            }else if (window.location.href.indexOf("transactionAuditList") > -1){

                // 创建一个Date对象
                var today = new Date();
                // 获取年份、月份和日期
                var year = today.getFullYear();
                var month = today.getMonth() + 1; // 月份从0开始,需要加1
                var day = today.getDate();
                var hour = today.getHours();
                var minute = today.getMinutes();
                var second = today.getSeconds();
                // 格式化日期字符串
                var formattedDate = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
                var currentTime = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day} ${hour < 10 ? '0' : ''}${hour}${minute < 10 ? '0' : ''}${minute}${second < 10 ? '0' : ''}${second}`;
                var orderDetailList = [];
                async function sucscribe(page,orderid="") {
                    let result
                    if(orderid==""){
                        result = await fetch(`https://daiketong.58corp.com/daiketong/v1/transaction/list?order_workflow_status=PASSED&page=${page}&order_audited_at_start=${formattedDate}&order_audited_at_end=${formattedDate}`)}
                    else{
                        result = await fetch(`https://daiketong.58corp.com/daiketong/v1/transaction/list?page=1&order_id=${orderid}`)
                    }
                    let resultData = await result.json()

                    let idList = resultData.data.data
                    console.log(page,idList)
                    let promises = idList.map(id => orderDetail(id,orderid))
                    await Promise.all(promises)

                }
                async function successfulSale() {
                    let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/success-sale/audit-list?page=1&status=PASSED&audit_date_start=${formattedDate}&audit_date_end=${formattedDate}`)
                    let resultData = await result.json()
                    let idList = resultData.data.data
                    let promises = idList.map(async id => {
                        let result2 = await fetch(`https://daiketong.58corp.com/daiketong/v1/success-sale/audit-detail?batch_id=${id.batch_id}`)
                        let resultData2 = await result2.json()
                        let promises = resultData2.data.order_list.map(id => sucscribe(1,id.ssbo_order_id))
                        await Promise.all(promises)
                    })
                    await Promise.all(promises)
                }
                async function getdistributor_city(id) {
                    let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/order/order-ledger-list?page=1&order_id=${id}`)
                    let resultData = await result.json()
                    return resultData.data[0].distributor_city_name
                }
                async function getProfit(id) {
                    let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/pc/order/order-commission-and-fund/${id}`)
                    let resultData = await result.json()
                    return resultData.data[0].pretend_profit_amount
                }
                async function orderDetail(id,orderid) {
                    let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/transaction/detail?order_id=${id.order_id}`)
                    let resultData = await result.json()
                    let distributor_city=await getdistributor_city(id.order_id)
                    let profit=await getProfit(id.order_id)
                    let response = resultData.data
                    let consumerDict = {
                        "项目城市":id.city_name,
                        "机构城市":distributor_city,
                        "审核节点":orderid!=""?"成销": response["transaction_detail"]["or_order_status"] === "SUBSCRIBED" ? "认购" :
                        response["transaction_detail"]["or_order_status"] === "SIGNED" ? "签约" :
                        response["transaction_detail"]["or_order_status"] === "SIGN_OFFLINE" ? "草签" : "",
                        "部门":id.department_name,
                        "项目名称": response["transaction_detail"]["or_buildings_name"],
                        "订单ID": response["transaction_detail"]["order_id"],
                        "客户姓名": response["transaction_detail"]["oc_name"],
                        "房号": response["transaction_detail"]["or_no"],
                        "机构": response["broker_distributor"]["distributor_name"],
                        "认购时间": response["transaction_detail"]["order_subscribed_at"].slice(0, 10),
                        "签约日期": response["transaction_detail"]["order_signed_at"].slice(0, 10),
                        "驻场": response["audit_data"][0]["author_name"],
                        "审批人": response["audit_data"][0]["audit_name"],
                        "GTV": parseFloat((parseFloat(response["transaction_detail"]["or_price"]) / 10000).toFixed(1)),
                        "留存": parseFloat((profit / 10000).toFixed(2)),
                        "机构": response["broker_distributor"]["distributor_name"],
                        "提交时间": response["audit_data"][0]["submited_at"],
                        "审核时间": response["audit_data"][0]["audited_at"],
                        "项目ID": response["transaction_detail"]["buildings_id"],
                        "超链接":`=HYPERLINK("https://daiketong.58corp.com/#/orderManagementFolder/transactionInformationAudit/transactionAudit/transactionAuditBase/transactionAuditDetail?order_id=${response["transaction_detail"]["order_id"]}&examineNode=SUBSCRIBED&approvalStatus=PASSED","订单界面")`
    }
                    orderDetailList.push(consumerDict)
                    return resultData.data
                }

                // 辅助函数,用于将字符串转为ArrayBuffer
                function s2ab(s) {
                    var buf = new ArrayBuffer(s.length);
                    var view = new Uint8Array(buf);
                    for (var i = 0; i < s.length; i++) {
                        view[i] = s.charCodeAt(i) & 0xFF;
                    }
                    return buf;
                }

                // 辅助函数,用于下载文件
                function saveAs(blob, fileName) {
                    var url = URL.createObjectURL(blob);
                    var link = document.createElement('a');
                    link.href = url;
                    link.download = fileName;
                    link.click();
                }

                async function exportData(callback) {
                    // 定义需要导出的数据
                    var dataRows = [];
                    // await sucscribe(1);
                    for(let i=1;i<10;i++){
                        await sucscribe(i)}
                    await successfulSale()


                    // 添加表头
                    dataRows.push(Object.keys(orderDetailList[0])); // 添加表头

                    // 添加数据行
                    orderDetailList.forEach(function (orderDetail) {
                        dataRows.push(Object.values(orderDetail));
                    });


                    // 创建Excel文件
                    var workbook = XLSX.utils.book_new();
                    var worksheet = XLSX.utils.aoa_to_sheet(dataRows);
                    XLSX.utils.book_append_sheet(workbook, worksheet, '订单详情');

                    // 下载Excel文件
                    var fileName = currentTime+' 审核订单详情.xlsx';
                    var excelFile = XLSX.write(workbook, {bookType: 'xlsx', type: 'binary'});
                    var blob = new Blob([s2ab(excelFile)], {type: 'application/octet-stream'});
                    saveAs(blob, fileName);
                    // 数据下载完成后执行回调函数
                    callback();
                }

                (function () {
                    'use strict';
                    // 延时2秒后添加导出按钮
                    setTimeout(function () {
                        var readInfoText = document.querySelector('.query-criteria');
                        var exportBtn = document.createElement('button');
                        exportBtn.className = 'el-button el-button--primary el-button--small is-plain';
                        exportBtn.innerText = '导出Excel';
                        readInfoText.appendChild(exportBtn);
                        var loadingIcon = document.createElement('i');
                        loadingIcon.className = 'el-icon-loading';
                        loadingIcon.style.display = 'none';
                        exportBtn.insertBefore(loadingIcon, exportBtn.firstChild);
                        exportBtn.addEventListener('click', function () {
                            orderDetailList=[]
                            loadingIcon.style.display = 'inline-block';
                            exportData(function() {
                                loadingIcon.style.display = 'none';
                                alert('数据已经下载完成!');
                            });
                        });
                    }, 1000);
                })();
            }else if (window.location.href.indexOf("bankDetail") > -1){



                GM_xmlhttpRequest({
                    method: "GET",
                    url: "https://www.piaoju114.com/web/tool/cdbank?bank_name=&bank_no=102588002101",
                    headers: {
                        "User-Agent": "Mozilla/5.0",    // 可以设置User-Agent
                    },
                    onload: function(response) {
                        const pattern = /<div class="col-6 b-name">([^<]*)<\/div>/; // 匹配的正则表达式

                        const matches = response.responseText.match(pattern); // 使用正则表达式进行匹配
                        if (matches) {
                            const bankName = matches[1]; // 匹配到的银行名称
                            console.log(bankName);
                            // 选择所有的 .el-col 元素
                            // 获取所有的 .el-col 元素
                            const elCols = document.querySelectorAll('.read-info_text .el-col');
                            // 遍历所有 .el-col 元素
                            elCols.forEach((elCol) => {
                                // 找到子元素中包含新开户银行:的元素
                                const elChild = elCol.querySelector(':scope > :first-child');
                                if (elChild.innerText.trim() === '新开户银行:') {
                                    // 追加一个 span 元素
                                    const span = document.createElement('span');
                                    console.log(elChild.parentNode.text)
                                    // elChild.innerText =`(${bankName})`;

                                }
                            });
                        }
                    }
                });
            }


            // 更新当前URL地址
            currentUrl = window.location.href;
        }
    }, 500);

};