MEST Quick Filter

click cell to search

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         MEST Quick Filter
// @namespace    joyings.com.cn
// @version      0.4.1
// @description  click cell to search
// @author       zmz125000
// @match        http://*/mest/*
// @icon         http://www.google.com/s2/favicons?domain=openwrt.org
// @grant        none
// @license      MIT
// @run-at       document-end
// ==/UserScript==

(function () {
    'use strict';

    // Your code here...
    addClickActions();
    addObserverIfDesiredNodeAvailable();

    function unsecuredCopyToClipboard(text) {
        const textArea = document.createElement("textarea");
        textArea.value = text;
        document.body.appendChild(textArea);
        textArea.focus();
        textArea.select();
        try {
            document.execCommand('copy');
        } catch (err) {
            console.error('Unable to copy to clipboard', err);
        }
        document.body.removeChild(textArea);
    }

    function getElementsByXPath(xpath, parent) {
        let results = [];
        let query = document.evaluate(xpath, parent || document,
            null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        for (let i = 0, length = query.snapshotLength; i < length; ++i) {
            results.push(query.snapshotItem(i));
        }
        return results;
    }

    function addObserverIfDesiredNodeAvailable() {
        var composeBox = document.querySelectorAll('[class="el-tabs__item is-top is-active is-closable"]')[0];
        if (!composeBox) {
            //The node we need does not exist yet.
            //Wait 500ms and try again
            window.setTimeout(addObserverIfDesiredNodeAvailable, 500);
            return;
        }
        var config = {
            attributes: true,
        };
        var composeObserver = new MutationObserver(function () {
            window.setTimeout(addClickActions, 500);
            composeObserver.disconnect();
            addObserverIfDesiredNodeAvailable();
        });
        composeObserver.observe(composeBox, config);
    }

    function addClickActions() {
        var tableCount = document.querySelectorAll('[class="has-gutter"]').length - 2;
        var tableIndex = tableCount >= 0 ? tableCount : 0;
        var tableElements = document.querySelectorAll("table.el-table__body");
        var headerElement = document.querySelectorAll('[class="has-gutter"]')[tableIndex];

        for (let table of tableElements) {
            table.lastChild.addEventListener('click', function (e) {
                const cell = e.target.closest('td');
                if (!cell) {
                    return;
                } // Quit, not clicked on a cell
                let sval = cell.childNodes[0].innerText;
                unsecuredCopyToClipboard(sval);
                let sbtn = null;
                if (getElementsByXPath("//span[.=' 查询 ']")[0]) {
                    sbtn = getElementsByXPath("//span[.=' 查询 ']")[0].parentElement;
                } else if (getElementsByXPath("//span[.='搜索']")[0]) {
                    sbtn = getElementsByXPath("//span[.='搜索']")[0].parentElement;
                } else if (getElementsByXPath("//span[.=' 搜 索 ']")[0]) {
                    sbtn = getElementsByXPath("//span[.=' 搜 索 ']")[0].parentElement;
                }
                let obox = null;

                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML.includes('生产单号')) {
                    obox = document.querySelector('[placeholder*="生产单号"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML.includes('工序名称')) {
                    obox = document.querySelector('[placeholder*="工序名称"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML.includes('最终成品')) {
                    obox = document.querySelector('[placeholder="成品名称"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML.includes('商品名称')) {
                    obox = document.querySelector('[placeholder="成品名称"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML.includes('商品别名')) {
                    obox = document.querySelector('[placeholder*="成品别名"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML.includes('订单号')) {
                    obox = document.querySelector('[placeholder*="订单号"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML == '存货名称') {
                    obox = document.querySelector('[placeholder*="存货名称"]');
                }
                if (headerElement.firstChild.childNodes[cell.cellIndex].firstChild.innerHTML == '别名') {
                    obox = document.querySelector('[placeholder*="存货别名"]');
                }
                if (!obox) {
                    return;
                }
                unsecuredCopyToClipboard(sval);
                obox.value = sval;
                obox.dispatchEvent(new Event('input', {
                    bubbles: true
                }));
                //sbtn.click();
            });
        }
    }
})();