爱房JS脚本

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

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

  1. // ==UserScript==
  2. // @name 爱房JS脚本
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.6
  5. // @description 可以跳转项目页,打开合同扫描件,一键下载订单明细
  6. // @author 熊伟良
  7. // @match https://daiketong.58corp.com/*
  8. // @match https://max.58corp.com/*
  9. // @match https://oa.58corp.com/*
  10. // @icon https://pages.anjukestatic.com/fe/ifang_node_admin_web/favicon.ico
  11. // @grant GM_xmlhttpRequest
  12. // @license MIT
  13. // @require https://cdn.bootcdn.net/ajax/libs/xlsx/0.17.1/xlsx.full.min.js
  14. // ==/UserScript==
  15. var currentUrl = 1;
  16. var oatoken = ''
  17. let planList = []
  18.  
  19. function getOaIdList(building) {
  20. return new Promise(resolve => {
  21. GM_xmlhttpRequest({
  22. method: "POST",
  23. url: "https://oa.58corp.com/workbench/flow/listNew",
  24. headers: {
  25. "Content-Type": "application/json;charset=UTF-8",
  26. "Referer": "https://oa.58corp.com/",
  27. "X-Requested-With": "XMLHttpRequest"
  28. },
  29. data: JSON.stringify({
  30. "searchVal": building + " 佣金",
  31. "state": "20 30 40 50",
  32. "processName": "",
  33. "itemID": "",
  34. "type": 1,
  35. "startDate": "",
  36. "endDate": "",
  37. "arriveStartDate": "",
  38. "arriveEndDate": "",
  39. "approveStartDate": "",
  40. "approveEndDate": "",
  41. "pageNo": 1,
  42. "pageSize": 100,
  43. "processStatus": "",
  44. "number": "",
  45. "createDateOrder": "",
  46. "arriveDateOrder": 0,
  47. "approveDateOrder": "",
  48. "approveUserName": "",
  49. "createUserName": "",
  50. "summary": "",
  51. "tabType": 1
  52. }),
  53. onload: function (response) {
  54. let snlist = JSON.parse(response.response).result.data
  55. snlist.forEach(async item => {
  56. let res = await getOaDetail(item.sn)
  57. res = res.data.formDataMap
  58. console.log(res.pTitle, res)
  59. planList.push({
  60. "标题": res.pTitle,
  61. "提交时间": res.applicantDate,
  62. "收回方案": res.pCommissionPointNew ? res.pCommissionPointNew : res.pCommissionPoint,
  63. '出街方案': res.pChannelCommissionPointNew ? res.pChannelCommissionPointNew : res.pChannelCommissionPoint
  64. })
  65. })
  66. resolve();
  67. }
  68. });
  69. });
  70. }
  71.  
  72.  
  73. async function getyushou(id) {
  74. let result = await fetch(`https://daiketong.58corp.com/japi/buildings/up-off-detail/${id}`);
  75. let resultData = await result.json()
  76. let data = resultData.data
  77. let range = data.presale_license_range
  78. // 查找 detail 类中的第二个 section-content 类
  79. const sectionContentElement = document.querySelector('.detail > :nth-child(5)');
  80. // 如果找到了该元素,则向其中追加新的 <div> 元素
  81. if (sectionContentElement) {
  82. // 创建新的 <div> 元素
  83. const newDiv = document.createElement('div');
  84. newDiv.setAttribute('data-v-7bf5ef12', '');
  85. newDiv.className = 'section-content-item';
  86.  
  87. // 在新的 <div> 元素中添加 <span> 元素
  88. const labelSpan = document.createElement('span');
  89. labelSpan.setAttribute('data-v-7bf5ef12', '');
  90. labelSpan.className = 'section-content-item-label';
  91. labelSpan.innerText = '预售范围:';
  92.  
  93. if (["xiongweiliang", "zhanghui54"].includes(document.querySelector(".header-menu").childNodes[2].innerText)) {
  94. const companyName = document.querySelector('.detail > .section-content > :nth-child(2) > :nth-child(2)').innerText;
  95. const encodedCompanyName = encodeURIComponent(companyName);
  96. const url = `https://fsfc.fszj.foshan.gov.cn/loupan/xuke/c${encodedCompanyName}_f-1/`;
  97. // console.log(url)
  98. labelSpan.addEventListener('click', function () {
  99. window.open(url, '_blank');
  100. });
  101. }
  102.  
  103. const valueSpan = document.createElement('span');
  104. valueSpan.setAttribute('data-v-7bf5ef12', '');
  105. valueSpan.className = 'section-content-item-value';
  106. valueSpan.innerText = range;
  107.  
  108. newDiv.appendChild(labelSpan);
  109. newDiv.appendChild(valueSpan);
  110.  
  111. // 在第二个 section-content 元素的第三个子元素后面插入新的 <div> 元素
  112. const thirdChild = sectionContentElement.children[2];
  113. sectionContentElement.insertBefore(newDiv, thirdChild.nextSibling);
  114. }
  115.  
  116.  
  117. }
  118.  
  119. async function getOaDetail(id) {
  120. console.log(id)
  121. const res = await GM.xmlHttpRequest({
  122. url: `https://bpmops.58corp.com/token/processHandler/getProcessDataForView/${id}/2?fSn=&controlName=`,
  123. headers: {
  124. "accept": "application/json, text/plain, */*",
  125. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
  126. "cache-control": "no-cache",
  127. "pragma": "no-cache",
  128. "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
  129. "sec-ch-ua-mobile": "?0",
  130. "sec-ch-ua-platform": "\"Windows\"",
  131. "sec-fetch-dest": "empty",
  132. "sec-fetch-mode": "cors",
  133. "sec-fetch-site": "same-site",
  134. "token": oatoken,
  135. "x-requested-with": "XMLHttpRequest"
  136. },
  137. referrer: "https://oa.58corp.com/",
  138. referrerPolicy: "strict-origin-when-cross-origin",
  139. method: "GET",
  140. responseType: "json"
  141. });
  142.  
  143. return res.response;
  144. }
  145.  
  146.  
  147. window.onload = function () {
  148.  
  149. setInterval(function () {
  150.  
  151. if (window.location.href != currentUrl) {
  152. // URL地址发生变化,触发事件
  153.  
  154. if (window.location.href.indexOf("commissionall") > -1) {
  155.  
  156. setTimeout(function () {
  157. let el_col = document.querySelectorAll(".el-col-22")[5]
  158. console.log(el_col)
  159. let btn = document.createElement("div")
  160. btn.innerHTML = `<button id="关闭暗佣" class="el-button el-button--default el-button--small" style="margin-left:20px">关闭暗佣</button>`
  161. el_col.appendChild(btn)
  162. console.log(btn)
  163. console.log(typeof (el_col), typeof (btn))
  164. document.querySelector("#关闭暗佣").addEventListener("click", function () {
  165. let fontColorList = document.querySelectorAll(".fontColor")
  166. if (fontColorList.length > 0) {
  167. fontColorList.forEach(function (item) {
  168. if (item.innerText == "关闭暗佣") {
  169. console.log(item.innerHTML)
  170. item.click()
  171. }
  172. })
  173. } else {
  174. console.log("待加载")
  175. // guanbianyong()
  176. }
  177. }, false)
  178. console.log(el_col)
  179. }, 2000)
  180.  
  181. } else if (window.location.href.indexOf("approvalStatus") > -1) {
  182.  
  183.  
  184. // 监听文档的 keyup 事件,当松开键盘上的 a 键时执行处理函数
  185. document.addEventListener('keyup', (event) => {
  186. if (event.code === 'KeyA') {
  187. document.querySelector('.viewer-rotate-left').click();
  188. } else if (event.code === 'KeyD') {
  189. document.querySelector('.viewer-rotate-right').click();
  190. }
  191. });
  192.  
  193. // 定义一个变量用于保存上一次按下 Q 键的时间戳
  194. let lastQPressTime = 0;
  195.  
  196. // 监听文档的 keydown 事件,当按下键盘上的 Q 键时执行处理函数
  197. document.addEventListener('keydown', (event) => {
  198. if (event.code === 'KeyQ') {
  199. const now = new Date().getTime();
  200. // 如果距离上一次按下 Q 键不到 500 毫秒,则认为是连续按下了两次 Q 键
  201. if (now - lastQPressTime < 500) {
  202. // 获取所有类名包含 el-button 的元素
  203. const elButtonElements = document.querySelectorAll('[class*=el-button]');
  204.  
  205. // 遍历所有元素,找出内部包含 <span>通过</span> 的按钮
  206. for (const elButtonElement of elButtonElements) {
  207. // 获取元素内部所有 <span> 元素
  208. const spanElements = elButtonElement.querySelectorAll('span');
  209.  
  210. // 遍历所有 <span> 元素,找出包含文本“通过”的元素
  211. for (const spanElement of spanElements) {
  212. if (spanElement.innerText === '通过') {
  213. // 如果找到了包含文本“通过”的元素,就打印该元素
  214. elButtonElement.click();
  215. break;
  216. }
  217. }
  218. }
  219. }
  220.  
  221. lastQPressTime = now;
  222. }
  223. });
  224.  
  225.  
  226. const cookie = document.cookie;
  227. var bc_id = "1"
  228. setTimeout(function () {
  229. // 获取第一个类名为 el-tabs__nav is-top 的元素
  230. const elTabsNavElement = document.querySelector('.el-tabs__nav.is-top');
  231.  
  232. // 如果找到了该元素,则点击其最后一个子元素
  233. if (elTabsNavElement) {
  234. elTabsNavElement.lastElementChild.click();
  235. }
  236. let contentList = document.querySelectorAll(".section-content-item-value")
  237. contentList.forEach(function (contract, contractindex) {
  238. let reg = /^(A|B)/
  239. if (reg.test(contract.innerText) == true) {
  240. var buildingId = contract.innerText.match(/(?<=-)[^-]+(?=-)/g)[0]
  241. var bc_code = contract.innerText;
  242. contentList[0].onclick = function () {
  243. let win = window.open(`https://daiketong.58corp.com/#/refactorProject/projectManager/projectManagerIndex/projectManagerDetail?building_id=${buildingId}&active=4&city_id=362`)
  244. }
  245.  
  246.  
  247. fetch("https://daiketong.58corp.com/japi/buildings/contract/list", {
  248. "headers": {
  249. "accept": "application/json, text/plain, */*",
  250. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
  251. "authorization": "",
  252. "content-type": "application/json;charset=UTF-8",
  253. "login-type": "pc",
  254. "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
  255. "sec-ch-ua-mobile": "?0",
  256. "sec-ch-ua-platform": "\"Windows\"",
  257. "sec-fetch-dest": "empty",
  258. "sec-fetch-mode": "cors",
  259. "sec-fetch-site": "same-origin",
  260. "sw8": "1-MWE1YmNiZTAzOTE5NDIyOTk4MDgwODNhNDAwZDg2NDA=-ODNiMmUwMWU2YTc2NDMyMTkyNmQ1NTI1ZjNjZDUyNzE=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL2NvbnRyYWN0L2xpc3Q=-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
  261. "sw8-correlation": "c291cmNl:YmVpZG91",
  262. "timestamp": "1665145024"
  263. },
  264. "referrer": "https://daiketong.58corp.com/",
  265. "referrerPolicy": "strict-origin-when-cross-origin",
  266. "body": "{\"building_id\":\"" + buildingId + "\"}",
  267. "method": "POST",
  268. "mode": "cors",
  269. "credentials": "include"
  270. }).then(res => {
  271. return res.json()
  272. }).then(json => {
  273. // console.log(json)
  274. json["data"].forEach(function (item, index) {
  275. if (item["bc_code"] == bc_code) {
  276. let bc_id = item["bc_id"]
  277. // console.log(bc_id)
  278. fetch("https://daiketong.58corp.com/japi/buildings/contract/get-packing-list", {
  279. "headers": {
  280. "accept": "application/json, text/plain, */*",
  281. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
  282. "authorization": "",
  283. "content-type": "application/json;charset=UTF-8",
  284. "login-type": "pc",
  285. "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
  286. "sec-ch-ua-mobile": "?0",
  287. "sec-ch-ua-platform": "\"Windows\"",
  288. "sec-fetch-dest": "empty",
  289. "sec-fetch-mode": "cors",
  290. "sec-fetch-site": "same-origin",
  291. "sw8": "1-MWE1YmNiZTAzOTE5NDIyOTk4MDgwODNhNDAwZDg2NDA=-ODNiMmUwMWU2YTc2NDMyMTkyNmQ1NTI1ZjNjZDUyNzE=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL2NvbnRyYWN0L2xpc3Q=-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
  292. "sw8-correlation": "c291cmNl:YmVpZG91",
  293. "timestamp": "1665146852"
  294. },
  295. "referrer": "https://daiketong.58corp.com/",
  296. "referrerPolicy": "strict-origin-when-cross-origin",
  297. "body": "{\"contract_id\":" + bc_id.toString() + ",\"contract_type\":\"1\",\"status\":\"\"}",
  298. "method": "POST",
  299. "mode": "cors",
  300. "credentials": "include"
  301. }).then(res => {
  302. return res.json()
  303. }).then(json => {
  304. json["data"].forEach(function (item, index) {
  305. contract.addEventListener("click", function () {
  306. // console.log("qwwqqwqw")
  307. window.open(item["url"])
  308. }, false)
  309. // console.log(item["url"])
  310. })
  311. })
  312. }
  313. })
  314. });
  315.  
  316. let result = getyushou(buildingId)
  317.  
  318.  
  319. }
  320. })
  321.  
  322.  
  323. if (document.querySelector(".header-menu").childNodes[2].innerText == "xiongweiliang") {
  324.  
  325. let re = setInterval(function () {
  326. let viewerHalf = document.querySelector(".viewerHalf")
  327. if (viewerHalf) {
  328. viewerHalf.className = "viewer-container viewer-backdrop viewer-fixed viewer-fade viewer-transition viewer-in"
  329. clearInterval(re)
  330. } else {
  331. // console.log(1)
  332. }
  333. }, 1000)
  334.  
  335. // let select = setInterval(function () {
  336. // var currentSelect = document.querySelectorAll('div[aria-selected="true"]')[1].innerText;
  337. // console.log(currentSelect)
  338. // if(currentSelect=="草签合同关键页"){
  339. // let viewer_move = document.querySelector(".viewer-move")
  340. // if (viewer_move) {
  341. // console.log(234,viewer_move)
  342. // }
  343. // }
  344. //
  345. // }, 500)
  346. document.onkeyup = function (event) {
  347. let viewer_move = document.querySelector(".viewer-move")
  348. if (viewer_move) {
  349. let a = document.documentElement.clientWidth / 2
  350. let b = viewer_move.style["width"].slice(0, -2) * 1 / 2
  351. viewer_move.style["margin-left"] = (a - b) + "px"
  352. }
  353. }
  354. document.onmousewheel = function (event) {
  355. let viewer_move = document.querySelector(".viewer-move")
  356. if (viewer_move) {
  357. let a = document.documentElement.clientWidth / 2
  358. let b = viewer_move.style["width"].slice(0, -2) * 1 / 2
  359. viewer_move.style["margin-left"] = (a - b) + "px"
  360. }
  361. }
  362. }
  363. }, 500)
  364.  
  365.  
  366. } 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)) {
  367. alert("万科2月订单只能回款成销")
  368. alert("万科2月订单只能回款成销")
  369.  
  370. } else if (window.location.href.indexOf("masterContractSee") > -1 && ["xiongweiliang", "zhanghui54"].includes(document.querySelector(".header-menu").childNodes[2].innerText)) {
  371.  
  372. let viewlist = document.querySelectorAll('.file-preview--wrapper')
  373. viewlist.forEach(
  374. function (itme, index) {
  375. itme.onclick = function () {
  376. let re = setInterval(function () {
  377. let pdfurl = document.querySelector(".preview-canvas--iframe")
  378.  
  379.  
  380. if (pdfurl) {
  381. document.querySelector('.wb-close').click()
  382.  
  383. window.open(pdfurl.src, '_blank');
  384. clearInterval(re)
  385. } else {
  386. // console.log(1)
  387. }
  388. }, 1000)
  389. }
  390. })
  391.  
  392.  
  393. } else if (window.location.href.indexOf("max") > -1) {
  394. function getSystemTime(timeFormat) {
  395. // 实例化日期类
  396. var time = new Date();
  397. // 获取完整的年份(4位)
  398. var year = time.getFullYear();
  399. // 获取月份(0-11,0代表1月)
  400. var month = time.getMonth() + 1;
  401. month = month < 10 ? '0' + month : month;
  402. // 获取日期(1-31)
  403. var day = time.getDate();
  404. dd = day < 10 ? '0' + day : day;
  405. yd = day - 1 < 10 ? '0' + (day - 1).toString() : day - 1;
  406. // 获取小时
  407. var h = time.getHours();
  408. hh = h < 10 ? '0' + h : h;
  409. // 获取分钟
  410. var m = time.getMinutes();
  411. mm = m < 10 ? '0' + m : m;
  412. // 获取秒钟
  413. var s = time.getSeconds();
  414. ss = s < 10 ? '0' + s : s;
  415. console.log(timeFormat);
  416. if (timeFormat == "today") {
  417. var date = `${year}-${month}-${dd}`
  418. } else if (timeFormat == "yesterday") {
  419. var date = `${year}-${month}-${yd}`
  420. } else if (timeFormat == "mm-dd hhmm") {
  421. var date = `${month}-${dd} ${hh}${mm}`
  422. }
  423. console.log(date);
  424. return (date);
  425. }
  426.  
  427. getSystemTime("today")
  428. let nav_topNav = document.querySelector(".topNav")
  429. let list = ["订单明细认购不含退户", "订单明细认购含退户", "资金流水"]
  430. list.forEach(element => {
  431. let li = document.createElement("li")
  432. li.innerHTML = `<button id="${element}">${element}</button>`
  433. nav_topNav.appendChild(li)
  434. });
  435.  
  436. async function getToken() {
  437. let res = await fetch("https://max.58corp.com/chart/view/4257", {
  438. "headers": {
  439. "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",
  440. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
  441. "cache-control": "max-age=0",
  442. "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
  443. "sec-ch-ua-mobile": "?0",
  444. "sec-ch-ua-platform": "\"Windows\"",
  445. "sec-fetch-dest": "document",
  446. "sec-fetch-mode": "navigate",
  447. "sec-fetch-site": "same-origin",
  448. "sec-fetch-user": "?1",
  449. "upgrade-insecure-requests": "1"
  450. },
  451. "referrer": "https://max.58corp.com/chart/view/4493",
  452. "referrerPolicy": "strict-origin-when-cross-origin",
  453. "body": null,
  454. "method": "GET",
  455. "mode": "cors",
  456. "credentials": "include"
  457. })
  458. let text = await res.text()
  459. var token = text.match(/Token=(.*?),/)[1]
  460. console.log(token)
  461.  
  462. function download(id, fileName) {
  463. fetch("https://datamap.58.com/report/order/download?downloadId=" + id + "&fileName=" + fileName + "", {
  464. "headers": {
  465. "accept": "*/*",
  466. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
  467. "content-type": "application/json",
  468. "responsetype": "blob",
  469. "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
  470. "sec-ch-ua-mobile": "?0",
  471. "sec-ch-ua-platform": "\"Windows\"",
  472. "sec-fetch-dest": "empty",
  473. "sec-fetch-mode": "cors",
  474. "sec-fetch-site": "cross-site",
  475. "token": token
  476. },
  477. "referrer": "https://max.58corp.com/",
  478. "referrerPolicy": "strict-origin-when-cross-origin",
  479. "body": null,
  480. "method": "GET",
  481. "mode": "cors",
  482. "credentials": "omit"
  483. }).then(res => res.blob().then(blob => {
  484. let url = window.URL.createObjectURL(blob)
  485. let a = document.createElement('a')
  486. a.style.display = 'none'
  487. a.href = url
  488. a.download = fileName + ".xlsx"
  489. document.body.appendChild(a)
  490. a.click()
  491. document.body.removeChild(a)
  492. window.URL.revokeObjectURL(url)
  493. }))
  494. }
  495.  
  496. function getExcelId(fileName) {
  497. fetch("https://datamap.58.com/report/order/list?page=1&limit=1000&key=" + fileName + "&menuId=1154", {
  498. "headers": {
  499. "accept": "*/*",
  500. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
  501. "content-type": "application/json",
  502. "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
  503. "sec-ch-ua-mobile": "?0",
  504. "sec-ch-ua-platform": "\"Windows\"",
  505. "sec-fetch-dest": "empty",
  506. "sec-fetch-mode": "cors",
  507. "sec-fetch-site": "cross-site",
  508. "token": token
  509. },
  510. "referrer": "https://max.58corp.com/",
  511. "referrerPolicy": "strict-origin-when-cross-origin",
  512. "body": null,
  513. "method": "GET",
  514. "mode": "cors",
  515. "credentials": "omit"
  516. }).then(res => {
  517. return res.json()
  518. }).then(json => {
  519. let id = json["page"]["list"][0]["id"].toString()
  520. let status = json["page"]["list"][0]["status"]
  521. console.log(status)
  522. console.log(json)
  523. if (status != 2) {
  524. getExcelId(fileName)
  525. } else {
  526. download(id, fileName)
  527. }
  528.  
  529. });
  530.  
  531. }
  532.  
  533. function getExcel(fileName, body) {
  534. fetch("https://datamap.58.com/report/order/export", {
  535. "headers": {
  536. "accept": "*/*",
  537. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
  538. "content-type": "application/json",
  539. "sec-ch-ua": "\".Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"103\", \"Chromium\";v=\"103\"",
  540. "sec-ch-ua-mobile": "?0",
  541. "sec-ch-ua-platform": "\"Windows\"",
  542. "sec-fetch-dest": "empty",
  543. "sec-fetch-mode": "cors",
  544. "sec-fetch-site": "cross-site",
  545. "token": token
  546. },
  547. "referrer": "https://max.58corp.com/",
  548. "referrerPolicy": "strict-origin-when-cross-origin",
  549. "body": body,
  550. "method": "POST",
  551. "mode": "cors",
  552. "credentials": "omit"
  553. }).then(res => {
  554. return res.json()
  555. }).then(json => {
  556. console.log(json.msg)
  557. if (json.msg != "success") {
  558. getExcel(fileName, body.replace(today, yesterday))
  559. } else {
  560. getExcelId(fileName)
  561. }
  562. }
  563. );
  564. }
  565.  
  566.  
  567. 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]`
  568. var refundStatus = `[0,1,2,3]`
  569. var today = getSystemTime("today")
  570. var yesterday = getSystemTime("yesterday")
  571. let rengoubutui = document.querySelector("#订单明细认购不含退户")
  572. rengoubutui.onclick = function () {
  573. let fileName = getSystemTime("mm-dd hhmm") + " 订单明细(认购)"
  574. var refundStatus = `[0,1,2]`
  575. var body = "{\"fileName\":\"" + fileName +
  576. "\",\"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\"]}"
  577. console.log(body)
  578. getExcel(fileName = fileName, body = body)
  579. }
  580. let rengoutui = document.querySelector("#订单明细认购含退户")
  581. rengoutui.onclick = function () {
  582. let fileName = getSystemTime("mm-dd hhmm") + " 订单明细(认购含退户)"
  583. var refundStatus = `[0,1,2,3]`
  584. var body = "{\"fileName\":\"" + fileName +
  585. "\",\"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\"]}"
  586. console.log(body)
  587. getExcel(fileName = fileName, body = body)
  588. }
  589.  
  590.  
  591. }
  592.  
  593. getToken()
  594.  
  595.  
  596. } else if (window.location.href.indexOf("masterContractSee") > -1 && document.querySelector(".header-menu").childNodes[2].innerText == "xiongweiliang") {
  597. async function getData() {
  598. 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", {
  599. "headers": {
  600. "accept": "application/json, text/plain, */*",
  601. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,eu;q=0.6",
  602. "authorization": "",
  603. "cache-control": "no-cache",
  604. "login-type": "pc",
  605. "pragma": "no-cache",
  606. "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
  607. "sec-ch-ua-mobile": "?0",
  608. "sec-ch-ua-platform": "\"Windows\"",
  609. "sec-fetch-dest": "empty",
  610. "sec-fetch-mode": "cors",
  611. "sec-fetch-site": "same-origin",
  612. "sw8": "1-ZjRkMWNhZDIzYzYzNDA0ODk0Yzc5YmVlMjBkMjIyNzg=-NzBiOGNmNWM0Yjg2NGUyM2EyZTE1MzhjOGZkYjNjM2Y=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2phcGkvYnVpbGRpbmdzL2NvbnRyYWN0L2RldGFpbA==-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
  613. "sw8-correlation": "c291cmNl:YmVpZG91",
  614. "timestamp": "1665834595"
  615. },
  616. "referrer": "https://daiketong.58corp.com/",
  617. "referrerPolicy": "strict-origin-when-cross-origin",
  618. "body": null,
  619. "method": "GET",
  620. "mode": "cors",
  621. "credentials": "include"
  622. });
  623. let json = await res.json()
  624. console.table(json.data);
  625.  
  626.  
  627. }
  628.  
  629. getData()
  630. } else if (window.location.href.indexOf("evidenceChainList") > -1) {
  631. // location.reload()
  632.  
  633. let timer1 = setInterval(function checkElement() {
  634. // 获取元素
  635. var element = document.querySelector(".is-plain");
  636. // 如果元素存在,打印它的文本内容,并清除定时器
  637. if (element) {
  638. element.addEventListener('click', function () {
  639. console.log('绑定成功')
  640. var timer = setInterval(() => {
  641. // 获取表格行集合
  642. var rows = document.querySelectorAll(".el-table__row")
  643. console.log(rows.length);
  644.  
  645. // 如果表格行存在,执行addChild函数,并清除定时器
  646. if (rows.length > 0) {
  647. addChild(rows)
  648. clearInterval(timer);
  649. }
  650. }, 1000);
  651. })
  652.  
  653. clearInterval(timer1);
  654. }
  655.  
  656. }, 500);
  657.  
  658.  
  659. // 添加订单审核链接到每一行
  660. function addChild() {
  661. let nav_topNav = document.querySelectorAll(".el-table__row")
  662. nav_topNav.forEach((nav) => {
  663. let idNode = nav.querySelectorAll("td")[4]
  664. let ID = idNode.querySelector(".cell").innerHTML
  665. let handleNode = nav.querySelectorAll("td")[12]
  666. let aList = nav.querySelectorAll("a")
  667. console.log(ID, aList)
  668. if (aList.length > 0) {
  669. aList.forEach((c) => {
  670. if (c) {
  671. // console.log("123", a)
  672. handleNode.removeChild(c)
  673. console.log(c, '删除成功')
  674. }
  675. })
  676. }
  677. let a = document.createElement("a")
  678. a.href = `https://daiketong.58corp.com/#/orderManagementFolder/transactionInformationAudit/transactionAudit/transactionAuditBase/transactionAuditDetail?order_id=${ID}&examineNode=SIGNED&approvalStatus=PASSED`
  679. a.textContent = '订单审核界面'
  680. a.target = "_Blank"
  681. handleNode.appendChild(a)
  682.  
  683. // console.log(ID, handleNode)
  684.  
  685. async function getData() {
  686. let res = await fetch(`https://daiketong.58corp.com/daiketong/v1/success-sale/audit-list?page=1&status=PASSED&order_id=${ID}`, {
  687. "headers": {
  688. "accept": "application/json, text/plain, */*",
  689. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
  690. "authorization": "",
  691. "cache-control": "no-cache",
  692. "login-type": "pc",
  693. "pragma": "no-cache",
  694. "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
  695. "sec-ch-ua-mobile": "?0",
  696. "sec-ch-ua-platform": "\"Windows\"",
  697. "sec-fetch-dest": "empty",
  698. "sec-fetch-mode": "cors",
  699. "sec-fetch-site": "same-origin",
  700. "sw8": "1-YjQyNzY4ZDFiMDM0NGRlZjg2NTI2NmFhYmM0Njc2YzU=-Y2I2YTg3YzM1MmZiNGVlN2JiMTM5ODgyYmFkZGQyMDc=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2RhaWtldG9uZy92MS9zdWNjZXNzLXNhbGUvYXVkaXQtbGlzdA==-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
  701. "sw8-correlation": "c291cmNl:YmVpZG91",
  702. "timestamp": "1679399184"
  703. },
  704. "referrer": "https://daiketong.58corp.com/",
  705. "referrerPolicy": "strict-origin-when-cross-origin",
  706. "body": null,
  707. "method": "GET",
  708. "mode": "cors",
  709. "credentials": "include"
  710. });
  711. let json = await res.json()
  712. if (json.data.data[0]) {
  713. // console.log(ID, json.data.data[0])
  714. return json.data.data[0]['batch_id']
  715. }
  716.  
  717. }
  718.  
  719. async function useData() {
  720. let value = await getData(); // value等于data.data的值
  721. if (value) {
  722. let a = document.createElement("a")
  723. a.href = `https://daiketong.58corp.com/#/salesManagement/examine/examineDetails?isExamine=false&batch_id=${value}`
  724. a.textContent = ' | 成销界面'
  725. a.target = "_Blank"
  726. handleNode.appendChild(a)
  727. }
  728. }
  729.  
  730. useData()
  731.  
  732. })
  733. }
  734.  
  735.  
  736. } else if (window.location.href.indexOf("orderFolderList") > -1) {
  737.  
  738. async function getData(name) {
  739. let res = fetch(`https://daiketong.58corp.com/daiketong/v1/order/order-customer-list?page=1&customer_name_or_telephone=${name.trim()}`, {
  740. "headers": {
  741. "accept": "application/json, text/plain, */*",
  742. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
  743. "authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyX2lkIjo0MjcyMTksImV4cCI6MTY4MDcwMDgxNiwiaWF0IjoxNjc5NDA0ODE2LCJqdGkiOiI0MjcyMTk6YzA5MWYwOTQtOTQwMy00NjAzLTgzOWItMGU0YTQ1Njg1OGEyOjIwMjMwMzIxMTAwNjM4NTg5In0.kYgJNKMyTukRTDICB29Zf_vasX5Hbl2kmDRXwlRZFpqIoli_1vdS14wBuaK2Hdf6xiOyS3a-CAq7RR7HO96nJm9zuo2YwJMcONy5t_XZTWppB1ob6-y97ZyCFVUBqpyFtys42a_nB89jBJ-1atCbzWdiMc0W-CDBdpBflPdNh8_w5NcB7MvA4UGhRhXlc2ADuNF-D7gEMyW5FvFRvGhbYQfmGYeM4k2xMhQ2wUiYlXiTi4R6MqJXV2E0cwl342B0dFN-Narbijr3hRhlPeETmNhjtB188s7jkG-mqzcjuORSupJRayqKwr7aqg-3owNpPLzrs2qzFyrn8dPUnIp2cQ",
  744. "cache-control": "no-cache",
  745. "login-type": "pc",
  746. "pragma": "no-cache",
  747. "sec-ch-ua": "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"",
  748. "sec-ch-ua-mobile": "?0",
  749. "sec-ch-ua-platform": "\"Windows\"",
  750. "sec-fetch-dest": "empty",
  751. "sec-fetch-mode": "cors",
  752. "sec-fetch-site": "same-origin",
  753. "sw8": "1-YzY1NmJiMDg1NTAyNDJmY2JiNzgwZjM5ZjZkOGJmMTc=-ZDUwY2YzMzkxZDBkNDAwMmIzNjgwM2QzM2MyNzJlMWE=-0-NTAz-aHR0cHM6Ly9kYWlrZXRvbmcuNThjb3JwLmNvbQ==-L2RhaWtldG9uZy92MS9vcmRlci9vcmRlci1jdXN0b21lci1saXN0-ZGFpa2V0b25nLjU4Y29ycC5jb20=-0",
  754. "sw8-correlation": "c291cmNl:YmVpZG91",
  755. "timestamp": "1679407390"
  756. },
  757. "referrer": "https://daiketong.58corp.com/",
  758. "referrerPolicy": "strict-origin-when-cross-origin",
  759. "body": null,
  760. "method": "GET",
  761. "mode": "cors",
  762. "credentials": "include"
  763. });
  764. let json = (await res).json()
  765. return json.then(
  766. function (a) {
  767. var list = a.data.data
  768. console.log(list)
  769. var newlist = list.filter((b) => {
  770. 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
  771. })
  772. return newlist
  773. }
  774. )
  775. }
  776.  
  777.  
  778. async function useData(name) {
  779. let value = await getData(name); // value等于data.data的值
  780. if (value) {
  781. console.log(value)
  782. let ID = value[0].order_id
  783. console.log(ID)
  784. var input = document.querySelector('input[placeholder="请输入订单ID"]');
  785. let name = document.querySelector('#consumerName')
  786. var inputEvent = new Event('input', {bubbles: true});
  787. input.value = ID;
  788. input.dispatchEvent(inputEvent);
  789. name.value = ''
  790. var element = document.querySelector(".is-plain span");
  791. console.log(element);
  792. element.click()
  793. alert("查询成功")
  794.  
  795. }
  796. }
  797.  
  798. let timer = setInterval(function checkElement() {
  799. // 获取元素
  800. var element = document.querySelector(".is-plain");
  801. // 如果元素存在,打印它的文本内容,并清除定时器
  802. if (element) {
  803. let querycriteria = document.querySelector('.query-criteria')
  804. let div = document.createElement("div")
  805. 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>`
  806. querycriteria.appendChild(div)
  807. let input = document.querySelector('input[placeholder="请输入订单ID"]');
  808. let name = document.querySelector('#consumerName')
  809. element.addEventListener('click', function () {
  810. console.log("绑定成功");
  811. if (name.value != "") {
  812. // console.log(2323232323)
  813. useData(name.value)
  814. }
  815. })
  816.  
  817.  
  818. clearInterval(timer);
  819. }
  820.  
  821. }, 1000);
  822.  
  823. } else if (window.location.href.indexOf("transactionAuditList") > -1) {
  824.  
  825. // 创建一个Date对象
  826. var today = new Date();
  827. // 获取年份、月份和日期
  828. var year = today.getFullYear();
  829. var month = today.getMonth() + 1; // 月份从0开始,需要加1
  830. var day = today.getDate();
  831. var hour = today.getHours();
  832. var minute = today.getMinutes();
  833. var second = today.getSeconds();
  834. // 格式化日期字符串
  835. var formattedDate = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
  836. var currentTime = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day} ${hour < 10 ? '0' : ''}${hour}${minute < 10 ? '0' : ''}${minute}${second < 10 ? '0' : ''}${second}`;
  837. var orderDetailList = [];
  838.  
  839. async function sucscribe(page, orderid = "") {
  840. let result
  841. if (orderid == "") {
  842. 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}`)
  843. } else {
  844. result = await fetch(`https://daiketong.58corp.com/daiketong/v1/transaction/list?page=1&order_id=${orderid}`)
  845. }
  846. let resultData = await result.json()
  847.  
  848. let idList = resultData.data.data
  849. console.log(page, idList)
  850. let promises = idList.map(id => orderDetail(id, orderid))
  851. await Promise.all(promises)
  852.  
  853. }
  854.  
  855. async function successfulSale() {
  856. 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}`)
  857. let resultData = await result.json()
  858. let idList = resultData.data.data
  859. let promises = idList.map(async id => {
  860. let result2 = await fetch(`https://daiketong.58corp.com/daiketong/v1/success-sale/audit-detail?batch_id=${id.batch_id}`)
  861. let resultData2 = await result2.json()
  862. let promises = resultData2.data.order_list.map(id => sucscribe(1, id.ssbo_order_id))
  863. await Promise.all(promises)
  864. })
  865. await Promise.all(promises)
  866. }
  867.  
  868. async function getdistributor_city(id) {
  869. let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/order/order-ledger-list?page=1&order_id=${id}`)
  870. let resultData = await result.json()
  871. return resultData.data[0].distributor_city_name
  872. }
  873.  
  874. async function getProfit(id) {
  875. let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/pc/order/order-commission-and-fund/${id}`)
  876. let resultData = await result.json()
  877. return resultData.data[0].pretend_profit_amount
  878. }
  879.  
  880. async function orderDetail(id, orderid) {
  881. let result = await fetch(`https://daiketong.58corp.com/daiketong/v1/transaction/detail?order_id=${id.order_id}`)
  882. let resultData = await result.json()
  883. let distributor_city = await getdistributor_city(id.order_id)
  884. let profit = await getProfit(id.order_id)
  885. let response = resultData.data
  886. let consumerDict = {
  887. "项目城市": id.city_name,
  888. "机构城市": distributor_city,
  889. "审核节点": orderid != "" ? "成销" : response["transaction_detail"]["or_order_status"] === "SUBSCRIBED" ? "认购" :
  890. response["transaction_detail"]["or_order_status"] === "SIGNED" ? "签约" :
  891. response["transaction_detail"]["or_order_status"] === "SIGN_OFFLINE" ? "草签" : "",
  892. "部门": id.department_name,
  893. "项目名称": response["transaction_detail"]["or_buildings_name"],
  894. "订单ID": response["transaction_detail"]["order_id"],
  895. "客户姓名": response["transaction_detail"]["oc_name"],
  896. "房号": response["transaction_detail"]["or_no"],
  897. "机构": response["broker_distributor"]["distributor_name"],
  898. "认购时间": response["transaction_detail"]["order_subscribed_at"].slice(0, 10),
  899. "签约日期": response["transaction_detail"]["order_signed_at"].slice(0, 10),
  900. "驻场": response["audit_data"][0]["author_name"],
  901. "审批人": response["audit_data"][0]["audit_name"],
  902. "GTV": parseFloat((parseFloat(response["transaction_detail"]["or_price"]) / 10000).toFixed(1)),
  903. "留存": parseFloat((profit / 10000).toFixed(2)),
  904. "机构": response["broker_distributor"]["distributor_name"],
  905. "提交时间": response["audit_data"][0]["submited_at"],
  906. "审核时间": response["audit_data"][0]["audited_at"],
  907. "项目ID": response["transaction_detail"]["buildings_id"],
  908. "超链接": `=HYPERLINK("https://daiketong.58corp.com/#/orderManagementFolder/transactionInformationAudit/transactionAudit/transactionAuditBase/transactionAuditDetail?order_id=${response["transaction_detail"]["order_id"]}&examineNode=SUBSCRIBED&approvalStatus=PASSED","订单界面")`
  909. }
  910. orderDetailList.push(consumerDict)
  911. return resultData.data
  912. }
  913.  
  914. // 辅助函数,用于将字符串转为ArrayBuffer
  915. function s2ab(s) {
  916. var buf = new ArrayBuffer(s.length);
  917. var view = new Uint8Array(buf);
  918. for (var i = 0; i < s.length; i++) {
  919. view[i] = s.charCodeAt(i) & 0xFF;
  920. }
  921. return buf;
  922. }
  923.  
  924. // 辅助函数,用于下载文件
  925. function saveAs(blob, fileName) {
  926. var url = URL.createObjectURL(blob);
  927. var link = document.createElement('a');
  928. link.href = url;
  929. link.download = fileName;
  930. link.click();
  931. }
  932.  
  933. async function exportData(callback) {
  934. // 定义需要导出的数据
  935. var dataRows = [];
  936. // await sucscribe(1);
  937. for (let i = 1; i < 10; i++) {
  938. await sucscribe(i)
  939. }
  940. await successfulSale()
  941.  
  942.  
  943. // 添加表头
  944. dataRows.push(Object.keys(orderDetailList[0])); // 添加表头
  945.  
  946. // 添加数据行
  947. orderDetailList.forEach(function (orderDetail) {
  948. dataRows.push(Object.values(orderDetail));
  949. });
  950.  
  951.  
  952. // 创建Excel文件
  953. var workbook = XLSX.utils.book_new();
  954. var worksheet = XLSX.utils.aoa_to_sheet(dataRows);
  955. XLSX.utils.book_append_sheet(workbook, worksheet, '订单详情');
  956.  
  957. // 下载Excel文件
  958. var fileName = currentTime + ' 审核订单详情.xlsx';
  959. var excelFile = XLSX.write(workbook, {bookType: 'xlsx', type: 'binary'});
  960. var blob = new Blob([s2ab(excelFile)], {type: 'application/octet-stream'});
  961. saveAs(blob, fileName);
  962. // 数据下载完成后执行回调函数
  963. callback();
  964. }
  965.  
  966. (function () {
  967. 'use strict';
  968. // 延时2秒后添加导出按钮
  969. setTimeout(function () {
  970. var readInfoText = document.querySelector('.query-criteria');
  971. var exportBtn = document.createElement('button');
  972. exportBtn.className = 'el-button el-button--primary el-button--small is-plain';
  973. exportBtn.innerText = '导出Excel';
  974. readInfoText.appendChild(exportBtn);
  975. var loadingIcon = document.createElement('i');
  976. loadingIcon.className = 'el-icon-loading';
  977. loadingIcon.style.display = 'none';
  978. exportBtn.insertBefore(loadingIcon, exportBtn.firstChild);
  979. exportBtn.addEventListener('click', function () {
  980. orderDetailList = []
  981. loadingIcon.style.display = 'inline-block';
  982. exportData(function () {
  983. loadingIcon.style.display = 'none';
  984. alert('数据已经下载完成!');
  985. });
  986. });
  987. }, 1000);
  988. })();
  989. } else if (window.location.href.indexOf("bankDetail") > -1) {
  990. // GM_xmlhttpRequest({
  991. // method: "GET",
  992. // url: "https://www.piaoju114.com/web/tool/cdbank?bank_name=&bank_no=102588002101",
  993. // headers: {
  994. // "User-Agent": "Mozilla/5.0", // 可以设置User-Agent
  995. // },
  996. // onload: function(response) {
  997. // const pattern = /<div class="col-6 b-name">([^<]*)<\/div>/; // 匹配的正则表达式
  998. //
  999. // const matches = response.responseText.match(pattern); // 使用正则表达式进行匹配
  1000. // if (matches) {
  1001. // const bankName = matches[1]; // 匹配到的银行名称
  1002. // console.log(bankName);
  1003. // // 选择所有的 .el-col 元素
  1004. // // 获取所有的 .el-col 元素
  1005. // const elCols = document.querySelectorAll('.read-info_text .el-col');
  1006. // // 遍历所有 .el-col 元素
  1007. // elCols.forEach((elCol) => {
  1008. // // 找到子元素中包含新开户银行:的元素
  1009. // const elChild = elCol.querySelector(':scope > :first-child');
  1010. // if (elChild.innerText.trim() === '新开户银行:') {
  1011. // // 追加一个 span 元素
  1012. // const span = document.createElement('span');
  1013. // console.log(elChild.parentNode.text)
  1014. // // elChild.innerText =`(${bankName})`;
  1015. //
  1016. // }
  1017. // });
  1018. // }
  1019. // }
  1020. // });
  1021. } else if (window.location.href.indexOf("sg_id") > -1) {
  1022.  
  1023.  
  1024. setTimeout(async function () {
  1025. var table = document.querySelector('.el-table__row')
  1026. // console.log(table)
  1027. var tds = table.querySelectorAll('td')
  1028. tds[0].addEventListener("click", function () {
  1029. window.open(`https://daiketong.58corp.com/#/orderManagementFolder/transactionInformationAudit/transactionAudit/transactionAuditBase/transactionAuditDetail?order_id=${tds[0].textContent.trim()}&examineNode=SUBSCRIBED&approvalStatus=PASSED`, '_blank');
  1030. })
  1031. const dividers = document.querySelectorAll('.el-divider.el-divider--horizontal');
  1032. const fourthDivider = dividers[2];
  1033. const url = `https://daiketong.58corp.com/#/orderManagementFolder/transactionInformationAudit/transactionAudit/transactionAuditBase/commissionDetail?order_id=${tds[0].textContent.trim()}`;
  1034. const newWindow = window.open(url);
  1035.  
  1036. const intervalId = setInterval(() => {
  1037. const table = newWindow.document.querySelectorAll('.el-table--border');
  1038. console.log(table)
  1039. if (table) {
  1040. newWindow.close();
  1041. window.focus();
  1042.  
  1043. const reversetable = Array.from(table).reverse();
  1044. clearInterval(intervalId);
  1045. reversetable.forEach((item) => {
  1046. const tableContent = item.outerHTML;
  1047. console.log(tableContent)
  1048. // 将表格内容追加到目标网站的第四个 .el-divider.el-divider--horizontal 元素后面
  1049. const newSibling = document.createElement('div');
  1050. newSibling.innerHTML = tableContent;
  1051. fourthDivider.insertAdjacentElement('afterend', newSibling);
  1052. // 找到表格后的操作
  1053. })
  1054. }
  1055. }, 4000);
  1056. window.addEventListener('message', event => {
  1057. oatoken = event.data
  1058. });
  1059. async function addTable() {
  1060. loadingIcon.style.display = 'inline-block';
  1061. planList = []
  1062. const newWindow = window.open(`https://oa.58corp.com/#/platform?tabName=32`, '_blank');
  1063. window.focus();
  1064. const intervalId = setInterval(async () => {
  1065. if (oatoken != '') {
  1066. console.log('成功获取', oatoken)
  1067. newWindow.close()
  1068. clearInterval(intervalId);
  1069. await getOaIdList(tds[3].textContent.trim())
  1070. await new Promise(resolve => setTimeout(resolve, 1200));
  1071. planList.sort((a, b) => {
  1072. const dateA = new Date(a.提交时间);
  1073. const dateB = new Date(b.提交时间);
  1074. return dateB - dateA; // 降序排列
  1075. });
  1076. console.log('planList', planList)
  1077. planList = planList.map(({ 提交时间, ...rest }) => rest);
  1078. // 创建表格元素
  1079. const table = document.createElement('table');
  1080. table.classList.add('el-table', 'el-table--border');
  1081. // 创建表头
  1082. const thead = document.createElement('thead');
  1083. const trHeader = document.createElement('tr');
  1084. for (let key in planList[0]) {
  1085. const th = document.createElement('th');
  1086. th.classList.add('is-leaf');
  1087. th.textContent = key;
  1088. if (key === '收回方案') {
  1089. th.style.width = '30%';
  1090. } else if (key === '出街方案') {
  1091. th.style.width = '50%';
  1092. }
  1093. trHeader.appendChild(th);
  1094. }
  1095. thead.appendChild(trHeader);
  1096. // 创建表格主体
  1097. const tbody = document.createElement('tbody');
  1098. planList.forEach((plan) => {
  1099. const tr = document.createElement('tr');
  1100. tr.classList.add('el-table__row', 'current-row');
  1101. for (let key in plan) {
  1102. const td = document.createElement('td');
  1103. td.classList.add(`el-table__${key.replace(/\s+/g, '_').toLowerCase()}`);
  1104. if (plan[key]) {
  1105. td.innerHTML = plan[key].replace(/\n/g, '<br/>');
  1106. } else {
  1107. td.innerHTML = "";
  1108. }
  1109. if (key === '收回方案') {
  1110. td.style.width = '30%';
  1111. } else if (key === '出街方案') {
  1112. td.style.width = '50%';
  1113. }
  1114. tr.appendChild(td);
  1115. }
  1116. tbody.appendChild(tr);
  1117. });
  1118. table.appendChild(thead);
  1119. table.appendChild(tbody);
  1120. // 将表格追加到第四个 .el-divider.el-divider--horizontal 后面
  1121. const dividers = document.querySelectorAll('.el-divider.el-divider--horizontal');
  1122. const fourthDivider = dividers[2];
  1123. fourthDivider.insertAdjacentElement('afterend', table);
  1124. loadingIcon.style.display = 'none';
  1125. window.focus();
  1126. }
  1127. newWindow.postMessage({
  1128. type: 'getToken'
  1129. }, '*');
  1130. console.log("发送请求")
  1131. // clearInterval(intervalId);
  1132. }, 500);
  1133. }
  1134. var loadingIcon = document.createElement('i');
  1135. loadingIcon.className = 'el-icon-loading';
  1136. loadingIcon.style.display = 'none';
  1137. tds[3].querySelector("div").insertBefore(loadingIcon, tds[3].querySelector("div").firstChild);
  1138. addTable()
  1139. tds[3].addEventListener("click", addTable)
  1140. // console.log(tds)
  1141. }, 1000)
  1142. } else if (window.location.href.indexOf("oa.58corp.com") > -1) {
  1143. (async function f() {
  1144. let token = await fetch('https://oa.58corp.com/accessToken/bpm/getToken')
  1145. let mytoken = await token.json()
  1146. if (mytoken.result) {
  1147. console.log(mytoken.result)
  1148. }
  1149. window.addEventListener('message', event => {
  1150. if (event.data.type === 'getToken') {
  1151. event.source.postMessage(mytoken.result, event.origin);
  1152. console.log("成功post")
  1153. }
  1154. });
  1155. })()
  1156. }
  1157. // 更新当前URL地址
  1158. currentUrl = window.location.href;
  1159. }
  1160. }, 500);
  1161.  
  1162. };