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