您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
外包太多啦,给点提示,看看情况。
// ==UserScript== // @name boss外包提示 // @namespace 外包提示 // @version 0.0.3 // @author HJ // @description 外包太多啦,给点提示,看看情况。 // @license GPL License // @icon ./src/assets/logo.svg // @match https://www.zhipin.com/* // @require https://cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js // @connect constant.site // @grant GM_addElement // @grant GM_addStyle // @grant GM_log // @grant GM_xmlhttpRequest // @grant window.onurlchange // ==/UserScript== (t=>{if(typeof GM_addStyle=="function"){GM_addStyle(t);return}const e=document.createElement("style");e.textContent=t,document.head.append(e)})(" .add{position:fixed;bottom:100px;left:50px}.isShowCellBtn{position:fixed;bottom:70px;left:50px}.wbTag{right:0;top:0;color:red;position:absolute}.dialog{position:fixed;top:180px;left:300px;display:flex;flex-direction:column;z-index:999;align-items:center;justify-content:center;height:300px;width:600px;background:azure}.namaList{display:flex;flex-wrap:wrap;padding:10px}.item{padding:8px}.closeBtn{position:absolute;right:0;top:0} "); (function (require$$0, require$$0$1) { 'use strict'; var jsxRuntime = { exports: {} }; var reactJsxRuntime_production_min = {}; /** * @license React * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var f = require$$0, k = Symbol.for("react.element"), l = Symbol.for("react.fragment"), m$1 = Object.prototype.hasOwnProperty, n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p = { key: true, ref: true, __self: true, __source: true }; function q(c, a, g) { var b, d = {}, e = null, h = null; void 0 !== g && (e = "" + g); void 0 !== a.key && (e = "" + a.key); void 0 !== a.ref && (h = a.ref); for (b in a) m$1.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]); if (c && c.defaultProps) for (b in a = c.defaultProps, a) void 0 === d[b] && (d[b] = a[b]); return { $$typeof: k, type: c, key: e, ref: h, props: d, _owner: n.current }; } reactJsxRuntime_production_min.Fragment = l; reactJsxRuntime_production_min.jsx = q; reactJsxRuntime_production_min.jsxs = q; { jsxRuntime.exports = reactJsxRuntime_production_min; } var jsxRuntimeExports = jsxRuntime.exports; var client = {}; var m = require$$0$1; { client.createRoot = m.createRoot; client.hydrateRoot = m.hydrateRoot; } var _GM_addElement = /* @__PURE__ */ (() => typeof GM_addElement != "undefined" ? GM_addElement : void 0)(); var _GM_log = /* @__PURE__ */ (() => typeof GM_log != "undefined" ? GM_log : void 0)(); var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)(); var _monkeyWindow = /* @__PURE__ */ (() => window)(); function Dialog(props) { const [input, setInput] = require$$0.useState(""); function addName() { if (input == "") return; _GM_xmlhttpRequest({ method: "GET", url: `https://www.constant.site/api/boss/ins?name=${input}`, headers: { "Content-Type": "application/x-www-form-urlencoded;charset=utf-8" }, onload: function(response) { props.onSetStateMethod(); props.hiddenDialgo(); } }); } function closeDialog() { props.hiddenDialgo(); } console.log("wbs==", props.wbs); return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "dialog", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "namaList", children: props.wbs.map((item, index) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "item", children: item }, index)) }), /* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: closeDialog, className: "closeBtn", children: "关闭" }), /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("input", { type: "text", value: input, onChange: (e) => setInput(e.target.value) }), /* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: addName, children: "添加" }) ] }) ] }); } function App() { const wbsArr = ["中电金信", "法本信息", "法本", "润和软件", "汉堂", "博彦科技", "博彦科技承德有限公司", "上海瀚若轩公司", "中软国际", "软通动力", "诚迈电力信息", "诚迈科技", "华成峰科技", "善智互联", "小拉科技", "武汉佰钧成技术"]; const [wbs, setWbs] = require$$0.useState(wbsArr); const [isShowDialog, setIsShowDialog] = require$$0.useState(false); const [isShowCell, setIsShowCell] = require$$0.useState(true); function refresh() { _GM_xmlhttpRequest({ method: "GET", url: "https://www.constant.site/api/boss/get", headers: { "Content-Type": "application/x-www-form-urlencoded;charset=utf-8" }, onload: function(response) { _GM_log("GM_xmlhttpRequest-----", JSON.parse(response.responseText)); const data = JSON.parse(response.responseText); let arr = []; if (data && data.data) { data.data.forEach((item) => { arr.push(item.name); }); setWbs(arr); setWBsState(wbs); } else { setWBsState(wbs); } } }); } function setWBsState(wbs2) { Array.from(document.querySelectorAll(".job-list-box .job-card-wrapper")).filter((node) => { const company = node.querySelector(".company-name"); const companyname = node.querySelector(".company-name a"); const body = node.querySelector(".job-card-body"); const footer = node.querySelector(".job-card-footer"); if (company == null || company == void 0) return; if ((companyname == null ? void 0 : companyname.textContent) == null || (companyname == null ? void 0 : companyname.textContent) == void 0) return; if (wbs2.includes(companyname == null ? void 0 : companyname.textContent)) { if (!isShowCell) { if (body !== null) body.style.display = "none"; if (footer !== null) footer.style.display = "none"; } else { if (body !== null) body.style.display = "block"; if (footer !== null) footer.style.display = "block"; const isHave = node.querySelector(".company-name div"); if ((isHave == null ? void 0 : isHave.textContent) !== "外包") { const tag = _GM_addElement(company, "div", { textContent: "外包" }); tag.style.position = "absolute"; tag.style.background = "red"; tag.style.right = "0"; tag.style.top = "0"; tag.style.padding = "9px"; tag.style.borderRadius = "12px"; tag.style.color = "white"; } } } }); } function addListener() { if (_monkeyWindow.onurlchange === null) { _monkeyWindow.addEventListener("urlchange", (info) => { if (info && info.url != "") { setTimeout(() => { setWBsState(wbs); }, 2e3); } }); } } require$$0.useEffect(() => { refresh(); addListener(); }, []); function hiddenOrShowWB() { setIsShowCell(!isShowCell); setWBsState(wbs); } function showDialog() { setIsShowDialog(true); } function hiddenDialog() { setIsShowDialog(false); } return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "App", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "add", onClick: showDialog, children: "添加外包公司名称" }), /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "isShowCellBtn", onClick: hiddenOrShowWB, children: isShowCell ? "隐藏外包" : "展示" }), isShowDialog ? /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { wbs, onSetStateMethod: refresh, hiddenDialgo: hiddenDialog }) : null ] }); } client.createRoot( (() => { const app = document.createElement("div"); document.body.append(app); return app; })() ).render( /* @__PURE__ */ jsxRuntimeExports.jsx(require$$0.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) }) ); })((React.default=React,React), (ReactDOM.default=ReactDOM,ReactDOM));