diff --git a/htmlheadstyle class=vjs-styles-defa.txt b/aqc.html similarity index 100% rename from htmlheadstyle class=vjs-styles-defa.txt rename to aqc.html diff --git a/copy_html.js b/copy_html.js new file mode 100644 index 0000000..11814d3 --- /dev/null +++ b/copy_html.js @@ -0,0 +1,84 @@ + +// ==UserScript== +// @name HTML Source Copier +// @namespace http://tampermonkey.net/ +// @version 1.0 +// @description 为网页添加按钮以复制完整HTML源码 +// @author YourName +// @match *://*/* +// @grant GM_setClipboard +// ==/UserScript== + +(function() { + 'use strict'; + + // 创建按钮样式 + const style = document.createElement('style'); + style.textContent = ` + .html-copy-btn { + position: fixed; + bottom: 20px; + right: 20px; + z-index: 9999; + padding: 10px 15px; + background: linear-gradient(135deg, #6e8efb, #a777e3); + color: white; + border: none; + border-radius: 50px; + cursor: pointer; + font-weight: bold; + box-shadow: 0 4px 15px rgba(0,0,0,0.2); + transition: all 0.3s ease; + } + .html-copy-btn:hover { + transform: translateY(-3px); + box-shadow: 0 6px 20px rgba(0,0,0,0.25); + } + .html-copy-btn:active { + transform: translateY(1px); + } + .copy-notification { + position: fixed; + bottom: 70px; + right: 20px; + background: rgba(0,0,0,0.7); + color: white; + padding: 10px 15px; + border-radius: 5px; + opacity: 0; + transition: opacity 0.3s; + } + `; + document.head.appendChild(style); + + // 创建按钮元素 + const btn = document.createElement('button'); + btn.className = 'html-copy-btn'; + btn.textContent = 'Copy HTML'; + document.body.appendChild(btn); + + // 创建通知元素 + const notification = document.createElement('div'); + notification.className = 'copy-notification'; + document.body.appendChild(notification); + + // 按钮点击事件 + btn.addEventListener('click', function() { + const html = document.documentElement.outerHTML; + GM_setClipboard(html, 'text') + .then(() => { + notification.textContent = 'HTML copied to clipboard!'; + notification.style.opacity = '1'; + setTimeout(() => { + notification.style.opacity = '0'; + }, 2000); + }) + .catch(err => { + notification.textContent = 'Copy failed: ' + err; + notification.style.opacity = '1'; + setTimeout(() => { + notification.style.opacity = '0'; + }, 3000); + }); + }); +})(); diff --git a/newGroupAddCustomer1.html b/newGroupAddCustomer1.html new file mode 100644 index 0000000..66dc905 --- /dev/null +++ b/newGroupAddCustomer1.html @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/optimized_legal_info.html b/optimized_legal_info.html new file mode 100644 index 0000000..d2256e0 --- /dev/null +++ b/optimized_legal_info.html @@ -0,0 +1,55 @@ + + + + 优化后的法人信息查询 + + + +

法人信息查询

+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/script2-1.js b/script2-1-qcc-acq.js similarity index 55% rename from script2-1.js rename to script2-1-qcc-acq.js index 5d4f4f2..3cb52a0 100644 --- a/script2-1.js +++ b/script2-1-qcc-acq.js @@ -47,10 +47,53 @@ document.body.removeChild(textarea); if (successMessage) { - alert(successMessage); + this.showAutoCloseMessage(successMessage, "success"); + } } + static showAutoCloseMessage(message, type = "info") { + // 创建一个自动关闭的提示框替代 alert + const alertBox = document.createElement("div"); + alertBox.textContent = message; + alertBox.style.position = "fixed"; + alertBox.style.top = "50%"; + alertBox.style.left = "50%"; + alertBox.style.transform = "translate(-50%, -50%)"; + + // 根据消息类型设置不同颜色 + if (type === "success") { + alertBox.style.backgroundColor = "#52c41a"; + } else if (type === "error") { + alertBox.style.backgroundColor = "#f5222d"; + } else { + alertBox.style.backgroundColor = "#1890ff"; + } + + alertBox.style.color = "white"; + alertBox.style.padding = "10px 20px"; + alertBox.style.borderRadius = "4px"; + alertBox.style.zIndex = "10001"; + alertBox.style.boxShadow = "0 2px 8px rgba(0,0,0,0.15)"; + alertBox.style.transition = "opacity 0.3s"; + + document.body.appendChild(alertBox); + + // 2秒后自动关闭 + setTimeout(() => { + if (document.body.contains(alertBox)) { + // 添加淡出效果 + alertBox.style.opacity = "0"; + // 真正移除元素 + setTimeout(() => { + if (document.body.contains(alertBox)) { + document.body.removeChild(alertBox); + } + }, 300); + } + }, 2000); + } + static showResult(data) { const modal = document.createElement("div"); modal.style.position = "fixed"; @@ -83,7 +126,7 @@ copyBtn.addEventListener("click", () => { navigator.clipboard .writeText(JSON.stringify(data, null, 2)) - .then(() => alert("已复制到剪贴板")) + .then(() => this.showAutoCloseMessage("已复制到剪贴板", "success")) .catch((err) => alert("复制失败: " + err)); }); @@ -109,11 +152,30 @@ modal.appendChild(closeBtn); document.body.appendChild(modal); + // // Automatically close the modal after 2 seconds + // setTimeout(() => { + // if (document.body.contains(modal)) { + // document.body.removeChild(modal); + // } + // }, 2000); } } // 爱企查解析类 class AiQiChaParser { + getPhoneNumber() { + // 查找电话信息容器 + const phoneContainer = document.querySelector( + "div.business-info div.telphone-lists-wrap" + ); + if (!phoneContainer) return "未找到电话信息"; + + // 查找包含电话号码的元素 + const phoneElement = phoneContainer.querySelector("span.copy-box span"); + if (!phoneElement) return "未找到电话号码"; + + return ToolUtils.cleanText(phoneElement.textContent); + } constructor() { this.table = null; } @@ -140,18 +202,19 @@ let valueCell = titleCell.nextElementSibling; if (!valueCell) return null; - const valueElement = valueCell.querySelector(".enter-bg-ele") || - valueCell.querySelector(".addr-enter-bg-ele") || - valueCell; + const valueElement = + valueCell.querySelector(".enter-bg-ele") || + valueCell.querySelector(".addr-enter-bg-ele") || + valueCell; return ToolUtils.cleanText(valueElement.textContent); } // 获取法定代表人 getLegalRepresentative() { - const legalElements = Array.from(this.table.querySelectorAll("td")).filter( - (td) => ToolUtils.cleanText(td.textContent) === "法定代表人" - ); + const legalElements = Array.from( + this.table.querySelectorAll("td") + ).filter((td) => ToolUtils.cleanText(td.textContent) === "法定代表人"); if (legalElements.length > 0) { const valueCell = legalElements[0].nextElementSibling; @@ -164,9 +227,9 @@ } } - const titleElements = Array.from(this.table.querySelectorAll("td")).filter( - (td) => td.textContent.includes("法定代表人") - ); + const titleElements = Array.from( + this.table.querySelectorAll("td") + ).filter((td) => td.textContent.includes("法定代表人")); if (titleElements.length > 0 && titleElements[0].nextElementSibling) { const valueCell = titleElements[0].nextElementSibling; @@ -176,7 +239,7 @@ return null; } - // 获取统一社会信用代码 + // 获取统一社会信用代码 getUnifiedSocialCreditCode() { const codeElements = Array.from(this.table.querySelectorAll("td")).filter( (td) => { @@ -190,7 +253,9 @@ if (codeElements.length > 0) { const valueCell = codeElements[0].nextElementSibling; - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } @@ -200,7 +265,9 @@ if (taxElements.length > 0 && taxElements[0].nextElementSibling) { const valueCell = taxElements[0].nextElementSibling; - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } @@ -215,7 +282,9 @@ if (regElements.length > 0 && regElements[0].nextElementSibling) { const valueCell = regElements[0].nextElementSibling; - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } @@ -231,18 +300,22 @@ if (orgCodeElements.length > 0) { const valueCell = orgCodeElements[0].closest("td").nextElementSibling; if (valueCell && valueCell.classList.contains("enter-bg")) { - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } } - const titleElements = Array.from(this.table.querySelectorAll("td")).filter( - (td) => ToolUtils.cleanText(td.textContent) === "组织机构代码" - ); + const titleElements = Array.from( + this.table.querySelectorAll("td") + ).filter((td) => ToolUtils.cleanText(td.textContent) === "组织机构代码"); if (titleElements.length > 0 && titleElements[0].nextElementSibling) { const valueCell = titleElements[0].nextElementSibling; - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } @@ -257,17 +330,23 @@ if (taxElements.length > 0 && taxElements[0].nextElementSibling) { const valueCell = taxElements[0].nextElementSibling; - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } - const creditElements = Array.from(this.table.querySelectorAll("td")).filter( - (td) => ToolUtils.cleanText(td.textContent).includes("统一社会信用代码") + const creditElements = Array.from( + this.table.querySelectorAll("td") + ).filter((td) => + ToolUtils.cleanText(td.textContent).includes("统一社会信用代码") ); if (creditElements.length > 0 && creditElements[0].nextElementSibling) { const valueCell = creditElements[0].nextElementSibling; - const rawValue = valueCell.querySelector(".enter-bg-ele")?.textContent || valueCell.textContent; + const rawValue = + valueCell.querySelector(".enter-bg-ele")?.textContent || + valueCell.textContent; return ToolUtils.cleanText(rawValue); } @@ -276,14 +355,14 @@ // 获取参保人数 getInsuranceNumber() { - const insuranceElements = Array.from(this.table.querySelectorAll("td")).filter( - (td) => { - return ( - td.textContent.includes("参保人数") && - td.querySelector(".insurance-info") - ); - } - ); + const insuranceElements = Array.from( + this.table.querySelectorAll("td") + ).filter((td) => { + return ( + td.textContent.includes("参保人数") && + td.querySelector(".insurance-info") + ); + }); if (insuranceElements.length > 0) { const valueCell = insuranceElements[0].nextElementSibling; @@ -329,9 +408,9 @@ } } - const titleElements = Array.from(this.table.querySelectorAll("td")).filter( - (td) => ToolUtils.cleanText(td.textContent) === "核准日期" - ); + const titleElements = Array.from( + this.table.querySelectorAll("td") + ).filter((td) => ToolUtils.cleanText(td.textContent) === "核准日期"); if (titleElements.length > 0 && titleElements[0].nextElementSibling) { const valueCell = titleElements[0].nextElementSibling; @@ -352,6 +431,7 @@ 企业名称: this.getOptimizedValue("企业名称"), 统一社会信用代码: this.getUnifiedSocialCreditCode(), 法定代表人: this.getLegalRepresentative(), + 电话: this.getPhoneNumber(), 经营状态: this.getOptimizedValue("经营状态"), 成立日期: this.getOptimizedValue("成立日期"), 行政区划: this.getOptimizedValue("行政区划"), @@ -376,114 +456,230 @@ } } - // QCC解析类 -class QCCParser { - constructor() { - this.table = null; - } - - // 初始化表格 - initTable() { - const cominfoNormal = document.querySelector('div.cominfo-normal'); - if (!cominfoNormal) { - alert("未找到企业信息容器"); - return false; + // QCC解析类 企查查 + class QCCParser { + constructor() { + this.table = null; } - this.table = cominfoNormal.querySelector('table.ntable'); - if (!this.table) { - alert("未找到企业信息表格"); - return false; + // 初始化表格 + initTable() { + const cominfoNormal = document.querySelector("div.cominfo-normal"); + if (!cominfoNormal) { + alert("未找到企业信息容器"); + return false; + } + + this.table = cominfoNormal.querySelector("table.ntable"); + if (!this.table) { + alert("未找到企业信息表格"); + return false; + } + return true; } - return true; - } - // 获取优化后的值 - getOptimizedValue(title) { - const rows = Array.from(this.table.querySelectorAll('tr')); - let value = null; + // 获取优化后的值 + getOptimizedValue(title) { + const headerCells = Array.from(this.table.querySelectorAll("td.tb")); + let value = null; - rows.forEach(row => { - const th = row.querySelector('th'); - if (th && ToolUtils.cleanText(th.textContent) === title) { - const td = row.querySelector('td'); - if (td) { - value = ToolUtils.cleanText(td.textContent); + headerCells.forEach((header) => { + if (ToolUtils.cleanText(header.textContent).includes(title)) { + const valueCell = header.nextElementSibling; + if (valueCell) { + // 尝试从copy-value类中获取值 + const copyValue = valueCell.querySelector(".copy-value"); + if (copyValue) { + value = ToolUtils.cleanText(copyValue.textContent); + } else { + value = ToolUtils.cleanText(valueCell.textContent); + } + } + } + }); + + return value; + } + + // 获取法定代表人 + getLegalRepresentative() { + // Try the existing method first + const basicValue = + this.getOptimizedValue("法定代表人") || this.getOptimizedValue("法人"); + if (basicValue && basicValue.trim()) { + // Remove any "关联企业 X" text + return basicValue.replace(/\s*关联企业\s*\d+$/, "").trim(); + } + + // If basic extraction fails, try more specific approach + const headerCell = Array.from(this.table.querySelectorAll("td.tb")).find( + (cell) => ToolUtils.cleanText(cell.textContent).includes("法定代表人") + ); + + if (!headerCell) return null; + + const valueCell = headerCell.nextElementSibling; + if (!valueCell) return null; + + // Try to find the name within the complex structure + // Look for anchor tags with target="_blank" which typically contain the legal representative's name + const nameLinks = valueCell.querySelectorAll('a[target="_blank"]'); + for (const link of nameLinks) { + const name = ToolUtils.cleanText(link.textContent); + // Make sure it's not empty and doesn't contain obvious non-name text + if (name && !name.includes("关联企业") && !name.includes("复制")) { + return name; } } - }); - return value; + // Alternative approach - look for the first anchor tag in the cell + const firstLink = valueCell.querySelector("a"); + if (firstLink) { + const name = ToolUtils.cleanText(firstLink.textContent); + // Remove any trailing "关联企业 X" text + return name.replace(/\s*关联企业\s*\d+$/, "").trim(); + } + + // Fallback to general value extraction + const copyValue = valueCell.querySelector(".copy-value"); + if (copyValue) { + const name = ToolUtils.cleanText(copyValue.textContent); + // Remove any trailing "关联企业 X" text + return name.replace(/\s*关联企业\s*\d+$/, "").trim(); + } + + const rawText = ToolUtils.cleanText(valueCell.textContent); + // Remove any trailing "关联企业 X" text + return rawText.replace(/\s*关联企业\s*\d+$/, "").trim(); + } + + // 获取统一社会信用代码 + getUnifiedSocialCreditCode() { + return ( + this.getOptimizedValue("统一社会信用代码") || + this.getOptimizedValue("信用代码") + ); + } + + // 获取工商注册号 + getBusinessRegistrationNo() { + return ( + this.getOptimizedValue("工商注册号") || this.getOptimizedValue("注册号") + ); + } + + // 获取组织机构代码 + getOrganizationCode() { + return this.getOptimizedValue("组织机构代码"); + } + + // 获取纳税人识别号 + getTaxpayerId() { + return ( + this.getOptimizedValue("纳税人识别号") || + this.getUnifiedSocialCreditCode() + ); + } + + // 获取参保人数 + getInsuranceNumber() { + // 查找参保人数表头 + const headerCell = Array.from(this.table.querySelectorAll("td.tb")).find( + (cell) => ToolUtils.cleanText(cell.textContent).includes("参保人数") + ); + + if (!headerCell) return null; + + const valueCell = headerCell.nextElementSibling; + if (!valueCell) return null; + + // 提取参保人数数字 + const numberSpan = valueCell.querySelector("span"); + const number = numberSpan + ? ToolUtils.cleanText(numberSpan.textContent) + : null; + + // 提取年报年份 + const reportLink = valueCell.querySelector("a.m-l-r-10"); + const reportYear = reportLink + ? ToolUtils.cleanText(reportLink.textContent) + : ""; + + // 组合结果 + return number ? `${number}人 ${reportYear}` : null; + } + + // 获取联系电话 + getPhoneNumber() { + // 查找联系信息容器 + const contactInfo = document.querySelector("div.contact-info"); + if (!contactInfo) return null; + + // 查找右侧信息区域 + const rightPart = contactInfo.querySelector("div.main-part-item.right"); + if (!rightPart) return null; + + // 查找包含电话的行 + const rows = Array.from(rightPart.querySelectorAll("div.rline")); + const phoneRow = rows.find((row) => + ToolUtils.cleanText(row.textContent).includes("电话:") + ); + + if (!phoneRow) return null; + + // 提取电话号码 + const spans = Array.from( + phoneRow.querySelectorAll("span.need-copy-field") + ); + const phoneSpan = spans.find( + (span) => !ToolUtils.cleanText(span.textContent).includes("电话:") + ); + + return phoneSpan ? ToolUtils.cleanText(phoneSpan.textContent) : null; + } + + // 获取核准日期 + getApprovalDate() { + return ( + this.getOptimizedValue("核准日期") || this.getOptimizedValue("成立日期") + ); + } + + // 解析公司信息主方法 + parseCompanyInfo() { + if (!this.initTable()) return; + + const companyData = { + 企业名称: + this.getOptimizedValue("企业名称") || + this.getOptimizedValue("公司名称"), + 统一社会信用代码: this.getUnifiedSocialCreditCode(), + 法定代表人: this.getLegalRepresentative(), + 经营状态: this.getOptimizedValue("登记状态"), + 成立日期: this.getOptimizedValue("成立日期"), + 行政区划: this.getOptimizedValue("行政区划"), + 注册资本: this.getOptimizedValue("注册资本"), + 实缴资本: this.getOptimizedValue("实缴资本"), + 企业类型: this.getOptimizedValue("企业类型"), + 所属行业: this.getOptimizedValue("国标行业"), + 工商注册号: this.getBusinessRegistrationNo(), + 组织机构代码: this.getOrganizationCode(), + 纳税人识别号: this.getTaxpayerId(), + 纳税人资质: this.getOptimizedValue("纳税人资质"), + 营业期限: this.getOptimizedValue("营业期限"), + 核准日期: this.getApprovalDate(), + 参保人数: this.getInsuranceNumber(), + 电话: this.getPhoneNumber(), + 登记机关: this.getOptimizedValue("登记机关"), + 曾用名: this.getOptimizedValue("曾用名"), + 注册地址: this.getOptimizedValue("注册地址"), + 经营范围: this.getOptimizedValue("经营范围"), + }; + + ToolUtils.showResult(companyData); + } } - // 获取法定代表人 - getLegalRepresentative() { - return this.getOptimizedValue('法定代表人') || this.getOptimizedValue('法人'); - } - - // 获取统一社会信用代码 - getUnifiedSocialCreditCode() { - return this.getOptimizedValue('统一社会信用代码') || this.getOptimizedValue('信用代码'); - } - - // 获取工商注册号 - getBusinessRegistrationNo() { - return this.getOptimizedValue('工商注册号') || this.getOptimizedValue('注册号'); - } - - // 获取组织机构代码 - getOrganizationCode() { - return this.getOptimizedValue('组织机构代码'); - } - - // 获取纳税人识别号 - getTaxpayerId() { - return this.getOptimizedValue('纳税人识别号') || this.getUnifiedSocialCreditCode(); - } - - // 获取参保人数 - getInsuranceNumber() { - const value = this.getOptimizedValue('参保人数'); - return value ? value.replace(/[^0-9]/g, '') + '人' : null; - } - - // 获取核准日期 - getApprovalDate() { - return this.getOptimizedValue('核准日期') || this.getOptimizedValue('成立日期'); - } - - // 解析公司信息主方法 - parseCompanyInfo() { - if (!this.initTable()) return; - - const companyData = { - 企业名称: this.getOptimizedValue('企业名称') || this.getOptimizedValue('公司名称'), - 统一社会信用代码: this.getUnifiedSocialCreditCode(), - 法定代表人: this.getLegalRepresentative(), - 经营状态: this.getOptimizedValue('经营状态'), - 成立日期: this.getOptimizedValue('成立日期'), - 行政区划: this.getOptimizedValue('行政区划'), - 注册资本: this.getOptimizedValue('注册资本'), - 实缴资本: this.getOptimizedValue('实缴资本'), - 企业类型: this.getOptimizedValue('企业类型'), - 所属行业: this.getOptimizedValue('所属行业'), - 工商注册号: this.getBusinessRegistrationNo(), - 组织机构代码: this.getOrganizationCode(), - 纳税人识别号: this.getTaxpayerId(), - 纳税人资质: this.getOptimizedValue('纳税人资质'), - 营业期限: this.getOptimizedValue('营业期限'), - 核准日期: this.getApprovalDate(), - 参保人数: this.getInsuranceNumber(), - 登记机关: this.getOptimizedValue('登记机关'), - 曾用名: this.getOptimizedValue('曾用名'), - 注册地址: this.getOptimizedValue('注册地址'), - 经营范围: this.getOptimizedValue('经营范围'), - }; - - ToolUtils.showResult(companyData); - } -} - // 创建按钮容器 function createButtonContainer() { const container = document.createElement("div"); @@ -612,19 +808,17 @@ class QCCParser { const parseInfoButton = createButton("解析公司信息", () => { // 根据当前URL选择对应的解析器 let parser; - if (window.location.host.includes('aiqicha.baidu.com')) { + if (window.location.host.includes("aiqicha.baidu.com")) { parser = new AiQiChaParser(); - } else if (window.location.host.includes('qcc.com')) { + } else if (window.location.host.includes("qcc.com")) { parser = new QCCParser(); } else { - alert('不支持的网站'); + alert("不支持的网站"); return; } parser.parseCompanyInfo(); }); - - // 添加按钮到容器 container.appendChild(copySourceButton); container.appendChild(parseInfoButton); @@ -634,4 +828,4 @@ class QCCParser { // 页面加载完成后创建按钮 window.addEventListener("load", createButtonContainer); -})(); \ No newline at end of file +})(); diff --git a/script2.js b/script2-old.js similarity index 100% rename from script2.js rename to script2-old.js diff --git a/script3.js b/script3.js index e6ce88d..c7b033c 100644 --- a/script3.js +++ b/script3.js @@ -4,7 +4,7 @@ // @version 0.1 // @description 从剪贴板读取JSON数据并自动填写表单 // @author You - +// @match https://intraecrm.yw.zj.chinamobile.com/page/newGroupAddCustome* // @grant none // ==/UserScript== @@ -61,9 +61,58 @@ }, "营业期限":{ name: "CUST_CERT_EXPIRE" + }, + "电话":{ + name:"CONT_PHONE" + }, + "集团二级类型": { + name: "GROUP_TYPE2", + default: "小微企业", } }; + function showAutoCloseMessage(message, type = "info") { + // 创建一个自动关闭的提示框替代 alert + const alertBox = document.createElement("div"); + alertBox.textContent = message; + alertBox.style.position = "fixed"; + alertBox.style.top = "50%"; + alertBox.style.left = "50%"; + alertBox.style.transform = "translate(-50%, -50%)"; + + // 根据消息类型设置不同颜色 + if (type === "success") { + alertBox.style.backgroundColor = "#52c41a"; + } else if (type === "error") { + alertBox.style.backgroundColor = "#f5222d"; + } else { + alertBox.style.backgroundColor = "#1890ff"; + } + + alertBox.style.color = "white"; + alertBox.style.padding = "10px 20px"; + alertBox.style.borderRadius = "4px"; + alertBox.style.zIndex = "10001"; + alertBox.style.boxShadow = "0 2px 8px rgba(0,0,0,0.15)"; + alertBox.style.transition = "opacity 0.3s"; + + document.body.appendChild(alertBox); + + // 2秒后自动关闭 + setTimeout(() => { + if (document.body.contains(alertBox)) { + // 添加淡出效果 + alertBox.style.opacity = "0"; + // 真正移除元素 + setTimeout(() => { + if (document.body.contains(alertBox)) { + document.body.removeChild(alertBox); + } + }, 300); + } + }, 2000); + } + // 创建按钮容器 function createButtonContainer() { const container = document.createElement("div"); @@ -251,8 +300,8 @@ } } - alert( - "表单填写完成!共填充 " + Object.keys(companyInfo).length + " 个字段" + showAutoCloseMessage( + "表单填写完成!共填充 " + Object.keys(companyInfo).length + " 个字段",'success' ); } catch (error) { alert("填写失败: " + error.message); diff --git a/script4-.js b/script4-.js new file mode 100644 index 0000000..4e22d65 --- /dev/null +++ b/script4-.js @@ -0,0 +1,42 @@ +// ==UserScript== +// @name Auto Click Audit Tab +// @namespace http://tampermonkey.net/ +// @version 1.0 +// @description Automatically click the "审核建档" tab on the specified page +// @author You +// @match https://intraecrm.yw.zj.chinamobile.com/page/newGroupAddCustomer +// @grant none +// ==/UserScript== + +(function() { + 'use strict'; + + // Function to check for the tab and click it + function checkAndClickTab() { + // Look for the specific tab element + const auditTab = document.querySelector('a.tabs-inner span.tabs-title'); + + // If the tab exists and has the correct text + if (auditTab && auditTab.textContent.trim() === '审核建档') { + // Click the parent element + auditTab.closest('a.tabs-inner').click(); + console.log('Successfully clicked the "审核建档" tab'); + } + } + + // Wait for the page to load completely + window.addEventListener('load', function() { + // Also use a small delay to ensure elements are rendered + setTimeout(checkAndClickTab, 1000); + }); + + // In case the page content loads dynamically, check periodically + const interval = setInterval(function() { + checkAndClickTab(); + }, 2000); + + // Stop checking after 30 seconds to avoid infinite loops + setTimeout(function() { + clearInterval(interval); + }, 30000); +})(); \ No newline at end of file