Modeling Helper
当前为
// ==UserScript==
// @name MEST Modeling Helper
// @namespace joyings.com.cn
// @version 1.3.3
// @description Modeling Helper
// @author zmz125000
// @match http://*/mest/*
// @icon http://www.google.com/s2/favicons?domain=openwrt.org
// @grant none
// @license MIT
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js
// @run-at document-end
// ==/UserScript==
(function () {
'use strict';
// Your code here...
addClickActions();
updateIndexBtn();
addObserverIfDesiredNodeAvailable();
window.loaded = false;
window.loadedBtn = false;
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function addObserverIfDesiredNodeAvailable() {
var composeBox = document.querySelectorAll('[class="el-popup-parent--hidden"]')[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);
window.setTimeout(updateIndexBtn, 500);
composeObserver.disconnect();
addObserverIfDesiredNodeAvailable();
});
composeObserver.observe(composeBox, config);
}
// 一键更新序号
async function updateIndexBtn() {
if (!$('button:contains(" 新增一行 ")')[0]) {
window.loadedBtn = false;
await sleep(500);
updateIndexBtn();
return;
}
if (window.loadedBtn) {
return;
}
window.loadedBtn = true;
let btnRow = $('button:contains(" 新增一行 ")')[0].parentElement;
var btn = document.createElement('button');
btn.setAttribute('title', '一键更新所有序号');
btn.setAttribute('id', 'oneKeyButton');
btn.setAttribute('type', 'button');
btn.onclick = updateIndex;
btn.appendChild(document.createTextNode('⇩更新序号'));
btnRow.appendChild(btn);
var btn2 = document.createElement('button');
btn2.setAttribute('title', '重新设置自动填充');
btn2.setAttribute('id', 'reloadBtn');
btn2.setAttribute('type', 'button');
btn2.onclick = dbck;
btn2.appendChild(document.createTextNode('⟳重新设置'));
btnRow.appendChild(btn2);
}
// 一键更新序号
async function updateIndex() {
if (!document.querySelectorAll('[class="edit-cell"]')[0]) {
await sleep(500);
updateIndex();
return;
}
let bodyRows = document.querySelectorAll('[class="edit-cell"]')[0].closest('table').lastChild.rows;
const procIndex = $('th:contains(" 上级序号 ")')[0].cellIndex;
// 设置上级序号
for (let i of bodyRows) {
let indexCell = i.cells.item(procIndex);
if (i.cells.item(3).firstChild.firstChild.firstChild.textContent == '始工序') {
continue;
}
indexCell.firstChild.firstChild.firstChild.click();
await sleep(50);
indexCell.querySelector('[class="el-icon-setting"]').closest('a').click();
await sleep(100);
$('button:contains(" 选择 ")')[i.rowIndex].click();
await sleep(50);
}
}
// 新增一行自动填写
async function addClickActions() {
if (!$('button:contains(" 新增一行 ")')[0]) {
window.loaded = false;
await sleep(500);
addClickActions();
return;
}
if (window.loaded) {
return;
}
window.loaded = true;
await sleep(250);
const alias = document.querySelector('[placeholder="别名"]').closest('textarea').value;
const semiIndex = $('th:contains(" 半成品/成品名称 ")')[0].cellIndex;
const materialIndex = $('th:contains(" 所需物料集 ")')[0].cellIndex;
const procIndex = $('th:contains(" 上级序号 ")')[0].cellIndex;
const processIndex = $('th:contains(" 工序名称 ")')[0].cellIndex;
if ($('div:contains(" 暂未设置工艺 ")')[0]) {
$('button:contains(" 设置工艺版本 ")')[0].addEventListener('click', async function (e) {
await sleep(150);
$('button:contains(" 新增工艺版本 ")')[0].click();
await sleep(150);
document.querySelectorAll('[placeholder="输入工艺版本名称"]')[0].value = "default";
document.querySelectorAll('[placeholder="输入工艺版本名称"]')[0].dispatchEvent(new Event('input', {
bubbles: true
}));
await sleep(50);
$('button:contains(" 选择 ")')[0].click();
});
}
$('button:contains(" 新增一行 ")')[0].addEventListener('click', async function (e) {
let bodyRows = document.querySelectorAll('[class="edit-cell"]')[0].closest('table').lastChild.rows;
// 设置上级序号
let lastIndexCell = bodyRows.item(bodyRows.length - 1).cells.item(procIndex);
lastIndexCell.firstChild.firstChild.firstChild.click();
await sleep(50);
lastIndexCell.firstChild.firstChild.firstChild.firstChild.click();
await sleep(100);
$('button:contains(" 选择 ")')[bodyRows.length - 1].click();
await sleep(100);
// 设置物料
let prevSemi = "";
if (bodyRows.length > 1) {
prevSemi = bodyRows.item(bodyRows.length - 2).cells.item(semiIndex).firstChild.firstChild.firstChild.textContent;
}
let lastMatCell = bodyRows.item(bodyRows.length - 1).cells.item(materialIndex);
lastMatCell.firstChild.firstChild.click();
await sleep(150);
if (!$('button:contains(" 移除 ")')[0]) {
$('button:contains("新增行")')[0].click();
await sleep(100);
}
document.querySelector('[placeholder="物料选择"]').closest('div').querySelector('button').click();
await sleep(100);
document.querySelectorAll('[placeholder="存货名称"]')[1].value = prevSemi;
document.querySelectorAll('[placeholder="存货名称"]')[1].dispatchEvent(new Event('input', {
bubbles: true
}));
await sleep(50);
$('button:contains(" 搜索 ")')[0].click();
//$('button:contains(" 选择 ")')[0].click();
await sleep(150);
dbck();
});
await sleep(150);
dbck();
}
// 整个表格自动填写
async function dbck() {
if (!document.querySelectorAll('[class="edit-cell"]')[0]) {
await sleep(500);
dbck();
return;
}
let bodyRows = document.querySelectorAll('[class="edit-cell"]')[0].closest('table').lastChild.rows;
const alias = document.querySelector('[placeholder="别名"]').closest('textarea').value;
const semiIndex = $('th:contains(" 半成品/成品名称 ")')[0].cellIndex;
const processIndex = $('th:contains(" 工序名称 ")')[0].cellIndex;
const materialIndex = $('th:contains(" 所需物料集 ")')[0].cellIndex;
const procIndex = $('th:contains(" 上级序号 ")')[0].cellIndex;
// 设置上级序号
for (let i of bodyRows) {
let indexCell = i.cells.item(procIndex);
indexCell.addEventListener('dbclick', async function (e) {
indexCell.querySelector('[class="el-icon-setting"]').closest('a').click();
await sleep(100);
$('button:contains(" 选择 ")')[i.rowIndex].click();
});
}
// 半成品
for (let i of bodyRows) {
let semiCell = i.cells.item(semiIndex);
semiCell.addEventListener('click', async function (e) {
document.querySelector('[placeholder="输出半成品"]').closest('div').querySelector('button').click();
await sleep(150);
document.querySelectorAll('[placeholder="存货别名"]')[1].value = alias;
await sleep(50);
document.querySelectorAll('[placeholder="存货别名"]')[1].dispatchEvent(new Event('input', {
bubbles: true
}));
await sleep(50);
$('button:contains(" 搜索 ")')[0].click();
});
}
// 物料集
for (let i of bodyRows) {
let prevSemi = '';
if (i.rowIndex > 0) {
prevSemi = bodyRows.item(i.rowIndex - 1).cells.item(semiIndex).firstChild.firstChild.firstChild.textContent;
}
let matCell = i.cells.item(materialIndex);
matCell.addEventListener('click', async function (e) {
matCell.firstChild.firstChild.click();
await sleep(150);
if (!$('button:contains(" 移除 ")')[0]) {
$('button:contains("新增行")')[0].click();
await sleep(100);
}
document.querySelector('[placeholder="物料选择"]').closest('div').querySelector('button').click();
await sleep(100);
document.querySelectorAll('[placeholder="存货名称"]')[1].value = prevSemi;
document.querySelectorAll('[placeholder="存货名称"]')[1].dispatchEvent(new Event('input', {
bubbles: true
}));
await sleep(50);
$('button:contains(" 搜索 ")')[0].click();
//$('button:contains(" 选择 ")')[0].click();
});
}
// 工序
for (let i of bodyRows) {
let lastProcessCell = i.cells.item(processIndex);
lastProcessCell.addEventListener('click', async function (e) {
let name = bodyRows.item(i.rowIndex).cells.item(semiIndex).firstChild.firstChild.firstChild.textContent;
let processName = "";
if (name.includes('打磨')) {
processName = '打磨';
} else if (name.includes('烧焊')) {
processName = '满焊';
} else if (name.includes('冲孔')) {
processName = '冲孔';
} else if (name.includes('验收')) {
processName = '验收';
} else if (name.includes('剪板')) {
processName = '剪板';
} else if (name.includes('开料')) {
processName = '开料';
} else if (name.includes('电镀')) {
processName = '电镀';
} else if (name.includes('电泳')) {
processName = '电泳';
} else if (name.includes('喷粉')) {
processName = '喷粉';
} else if (name.includes('喷涂')) {
processName = '喷粉';
} else if (name.includes('折弯')) {
processName = '折弯';
} else if (name.includes('注塑')) {
processName = '注塑';
} else if (name.includes('成型')) {
processName = '成型';
} else if (name.includes('弯线')) {
processName = '弯线';
} else if (name.includes('碰焊')) {
processName = '碰焊';
} else if (name.includes('锯')) {
processName = '锯';
} else if (name.includes('冲')) {
processName = '冲';
} else if (name.includes('弯')) {
processName = '弯';
} else if (name.includes('压')) {
processName = '压';
} else if (name.includes('激光')) {
processName = '激光';
} else if (name.includes('产品组装')) {
processName = '产品组装';
} else if (name.includes('铆')) {
processName = '铆';
} else if (name.includes('攻牙')) {
processName = '攻牙';
} else if (name.includes('锣')) {
processName = '锣';
} else if (name.includes('压印')) {
processName = '压印';
} else if (name.includes('调')) {
processName = '调';
} else {
processName = '包装';
}
document.querySelector('[placeholder="工序选择"]').closest('div').querySelector('button').click();
await sleep(150);
document.querySelectorAll('[placeholder="工序名称"]')[0].value = processName;
await sleep(50);
document.querySelectorAll('[placeholder="工序名称"]')[0].dispatchEvent(new Event('input', {
bubbles: true
}));
await sleep(50);
$('button:contains(" 搜索 ")')[0].click();
});
}
}
})();