您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
优化云办的编辑器功能
// ==UserScript== // @name 云办编辑器 // @license BSD // @namespace http://tampermonkey.net/ // @version 0.2.9 // @description 优化云办的编辑器功能 // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js // @author [email protected] // @include *://172.17.**/* // @include *://172.16.**/* // @include *://10.255.**/* // @include *://10.16.**/* // @include *://192.168.3.**/* // @include *://106.39.**/* // @grant GM_xmlhttpRequest // ==/UserScript== (function () { (function () { // 修改编辑器的默认字体 const style = document.createElement("style"); style.type = "text/css"; style.id = "_wjp_"; const text = document.createTextNode( ".ace_editor.ace_editor{font-family: 'Courier New', 'Cascadia Code', Hack, Monaco; font-size: 18px;} #full_screen_watermark_dom{display:none!important;}" ); style.appendChild(text); const head = document.getElementsByTagName("head")[0]; head.appendChild(style); })(); (function () { // 点击左右编辑框,自动设置宽度 const PERCENT = 0.5; const WIDE = 100 * PERCENT + "%"; const NARROW = 100 * (1 - PERCENT) + "%"; $(document) .on("dblclick", ".splitter-paneL .el-tabs__content", function (e) { e && e.stopPropagation(); const width = parseFloat( $(e.currentTarget) .closest(".splitter-paneL") .attr("style") .replace(/[A-Za-z:\s%]/g, "") ); if (width > 100 * PERCENT) { return; } $(".splitter-paneL").css("width", WIDE); $(".splitter-pane-resizer").css("left", WIDE); $(".splitter-paneR").css("width", NARROW); }) .on("dblclick", ".splitter-paneR .el-tabs__content", function (e) { e && e.stopPropagation(); const width = parseFloat( $(e.currentTarget) .closest(".splitter-paneR") .attr("style") .replace(/[A-Za-z:\s%]/g, "") ); if (width > 100 * PERCENT) { return; } $(".splitter-paneL").css("width", NARROW); $(".splitter-pane-resizer").css("left", NARROW); $(".splitter-paneR").css("width", WIDE); }); })(); function getQuery(name, url) { const u = url || window.location.search, reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"), r = u.substr(u.indexOf("?") + 1).match(reg); return r != null ? r[2] : ""; } (function () { // 给页面增加搜索功能 const dataMap = {}; function getServiceType() { let serviceType = ""; const path = window.location.pathname; if (path.endsWith("backend")) { serviceType = "back"; } else if (path.endsWith("page")) { serviceType = "page"; } return serviceType; } function fetchData(cb) { let modelCode = getQuery("funcgroupCode"); const serviceType = getServiceType(); const path = window.location.pathname; if (path === "/dev/system/page" || path === "/dev/system/backend") { modelCode = "SYSTEM"; } if (modelCode && serviceType) { const Token = localStorage.getItem("token"); if (!Token) { return; } GM_xmlhttpRequest({ method: "get", url: "/pkc/" + serviceType + "/all/" + modelCode, headers: { "Content-Type": "application/json", "Token": Token, }, params: { // 确保每次请求都是从后端请求,不使用缓存 t: Math.random(), }, onload: function (resp) { if (resp.status === 200 && resp.readyState === 4) { const response = JSON.parse(resp.response); const { code, data } = response; if (code === "200010000") { if (data && data.length) { data.map(item => { dataMap[item.id] = item; }); } typeof cb === "function" && cb(data); } } }, }); } } setInterval(() => { const len = $("#_wjpSearch_").length; if (!len) { fetchData(data => { const len = $("#_wjpSearch_").length; if (data && data.length && !len) { $( '<div id="_wjpSearch_" class="el-input el-input--medium el-input--suffix" style="width:400px;"><input type="text" autocomplete="off" placeholder="请输入关键字(可搜索组件里面的内容)" class="el-input__inner"></div>' ).insertAfter(".topOperate>div:first-child"); } }); } }, 2000); $(document) .on( "input", "#_wjpSearch_ input", _.debounce(function (e) { let value = $(e.currentTarget).val().trim().toLowerCase(); const serviceType = getServiceType(); let $rows = $( ".el-table__body-wrapper>.el-table__body>tbody>.el-table__row" ); for (let i = 0; i < $rows.length; i++) { const $row = $rows.eq(i); const $children = $row.children("td"); // 倒数第二列肯定为ID,取倒数第二列 let id = $children .eq($children.length - 2) .text() .trim(); const currentData = dataMap[id]; if (!currentData) { continue; } if (value) { let shouldHidden = true; if (serviceType === "page") { // 先搜索页面里面的内容 let html, css, js; if (currentData.endType == 2) { html = currentData.moveHtml; css = currentData.moveCss; js = currentData.moveJs; } else { html = currentData.pcHtml; css = currentData.pcCss; js = currentData.pcJs; } html = (html || "").toLowerCase(); css = (css || "").toLowerCase(); js = (js || "").toLowerCase(); if ( html.indexOf(value) > -1 || css.indexOf(value) > -1 || js.indexOf(value) > -1 ) { shouldHidden = false; } } else if (serviceType === "back") { let groovyText = currentData.groovyText; groovyText = (groovyText || "").toLowerCase(); if (groovyText.indexOf(value) > -1) { shouldHidden = false; } } // 如果页面里面的内容没有,则搜索当前页面 if (shouldHidden) { const $tds = $row.children("td"); for (let j = 0; j < $tds.length; j++) { const text = $tds.eq(j).text().trim().toLowerCase(); if (text.indexOf(value) > -1) { shouldHidden = false; break; } } } if (shouldHidden) { $row.css("display", "none"); } else { $row.css("display", ""); } } else { $row.css("display", ""); } } }, 600) ) .on("click", ".unsave button", function () { // 等待保存成功后,再重新请求 setTimeout(function () { fetchData(); }, 600); }) .on( "keydown", "#pane-js,#pane-html,#pane-css", _.debounce(function (e) { let keyCode = e.keyCode || e.which || e.charCode; let ctrlKey = e.ctrlKey || e.metaKey; // 监听ctrl+s按键 if (ctrlKey /* && keyCode === 83 */) { // 等待保存成功后,再重新请求 setTimeout(function () { fetchData(); }, 600); } }, 100) ); })(); })();