爱房JS脚本

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

目前為 2023-04-25 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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);

};