Greasy Fork is available in English.
获取聚水潭(erp321.com)网页中link_o_id(内部订单号)和 skuweight(克重值)的值自动复制或相加
当前为
// ==UserScript==
// @name 聚水潭指定参数获取
// @namespace https://rakurai.top
// @version 4.0.3
// @icon http://107.173.89.17:8888/download?filename=/www/wwwroot/rakurai/title.ico
// @description 获取聚水潭(erp321.com)网页中link_o_id(内部订单号)和 skuweight(克重值)的值自动复制或相加
// @author RakuRai
// @match http://*/*
// @match https://*/*
// @grant GM_setClipboard
// @license MIT
// ==/UserScript==
// 以下的function为自动点击转正常
(function() {
'use strict';
// 获取所有符合条件的元素
const elements = document.querySelectorAll('[onclick="ReverseOuterStatus(this)"]');
// 循环点击元素
elements.forEach((element, index) => {
setTimeout(() => {
element.click(); // 点击元素
}, (index + 1) * 250); // 每隔0.2秒点击一个元素
});
})();
(function() {
'use strict';
// 等待页面元素加载完成后再执行脚本
window.addEventListener('load', function() {
// 检查当前页面是否具有特定 id
var epaasTabsWrap = document.getElementById('epaasTabsWrap');
if (epaasTabsWrap) {
// 创建一个输入框
var inputElement = document.createElement('input');
inputElement.type = 'text'; // 设置输入框类型为文本
inputElement.placeholder = '粘贴克重相加处→'
inputElement.style.width = '120px';
inputElement.style.height = '35px';
inputElement.style.position = 'fixed';
inputElement.style.top = '0px';
inputElement.style.border = '1px solid #ff008b';
inputElement.style.left = '1370px'
// 创建一个包含输入框的 div 元素
var inputContainer = document.createElement('div');
inputContainer.appendChild(inputElement);
// 在 id="epaasTabsWrap" 的 div 下插入输入框
epaasTabsWrap.appendChild(inputContainer);
// 创建一个显示处理结果的输出框
var outputElement = document.createElement('div');
outputElement.style.position = 'fixed';
outputElement.style.top = '0px';
outputElement.style.left = '1500px';
outputElement.style.padding = '10px';
outputElement.style.height = '35px';
outputElement.style.background = '#f2f3f5'; //
outputElement.style.border = '0px solid #000';
outputElement.style.color = '#ff008b'; // 黑色文字
epaasTabsWrap.appendChild(outputElement);
// 给输入框添加粘贴事件监听器
inputElement.addEventListener('paste', function(event) {
// 取消默认粘贴行为
event.preventDefault();
// 获取粘贴板上的文本
var clipboardData = event.clipboardData || window.clipboardData;
var pastedText = clipboardData.getData('text');
console.log('粘贴的文本:', pastedText);
// 使用正则表达式将文本中的非数字字符全部去除,并将",-"替换为"+"
var cleanedText = pastedText.replace(/[^\d.-]/g, '');
console.log('处理后的文本:', cleanedText);
// 将处理后的文本按照 "-" 分割为数组,并逐个相加
var numbers = cleanedText.split('-').filter(function(num) {
return num !== '';
});
var total = numbers.reduce(function(acc, val) {
return acc + parseFloat(val) || 0;
}, 0);
console.log('总和:', total);
// 将结果显示在输出框中,保留两位小数
outputElement.textContent = '总和:' + total.toFixed(2);
});
}
});
// 其他代码保持不变
// ...
})();
// 另外的代码保持不变
(function() {
'use strict';
// 创建一个显示link_o_id数值的固定位置的元素
var displayElementLeft = document.createElement('div');
displayElementLeft.style.position = 'fixed';
displayElementLeft.style.top = '0px';
displayElementLeft.style.left = '130px';
displayElementLeft.style.padding = '10px';
displayElementLeft.style.background = '#FFFFFF'; // 红色背景
displayElementLeft.style.opacity='0.6';//透明度
displayElementLeft.style.border = '1px solid #000';
displayElementLeft.style.display = 'none'; // 初始隐藏
displayElementLeft.style.color = '#000000'; // 黑色文字
document.body.appendChild(displayElementLeft);
// 创建一个显示 skuweight 数值的固定位置的元素
var displayElementRight = document.createElement('div');
displayElementRight.style.position = 'fixed';
displayElementRight.style.top = '0px';
displayElementRight.style.right = '240px'; // 右上角
displayElementRight.style.height = '20px';
displayElementRight.style.width = '5%'; // 宽度设置为屏幕宽度的三分之一
displayElementRight.style.padding = '10px';
displayElementRight.style.background = '#ffffff'; // background color
displayElementRight.style.border = '0px solid #000';
displayElementRight.style.display = 'none'; // 初始隐藏
displayElementRight.style.color = '#ff008b'; // 白色文字
displayElementRight.style.zIndex = '9999'; // 显示在最上层
document.body.appendChild(displayElementRight);
// 存储已经获取到的 link_o_id 和 skuweight 数值,避免重复
var processedIDs = {};
var processedWeight = {};
// 定义函数,用于更新显示的内容
function updateDisplay() {
// 找到所有包含 link_o_id 的文本
var linkOIDMatches = document.body.textContent.matchAll(/link_o_id":(\d+)/g);
// 存储 link_o_id 数值的数组
var linkOIDValues = [];
// 遍历所有匹配项并输出数值到左上角元素中
for (const match of linkOIDMatches) {
var linkOIDValue = match[1];
// 检查该数值是否已经被处理过,如果没有,则添加到数组中并记录
if (!processedIDs[linkOIDValue]) {
linkOIDValues.push(linkOIDValue);
processedIDs[linkOIDValue] = true;
// 这里可以根据需要进行进一步操作,比如发送给后端,存储在本地等等
}
}
// 如果获取到了 link_o_id 数值,则显示在左上角
if (linkOIDValues.length > 0) {
// 将 link_o_id 数值数组连接为一个字符串,每个数值后面加上逗号
var outputTextLeft = linkOIDValues.join(",\n") + ",";
// 将整个字符串复制到剪贴板
GM_setClipboard(outputTextLeft);
// 将字符串设置为输出框的内容
displayElementLeft.textContent = outputTextLeft;
// 显示输出框
displayElementLeft.style.display = 'block';
}
// 获取所有具有指定 class 的元素
var elements = document.querySelectorAll('.skuweight');
// 存储数值的数组
var weightValues = [];
// 遍历每个元素
elements.forEach(function(element) {
// 获取当前元素的文本内容(即数值)
var weightValue = parseFloat(element.textContent.trim());
// 添加到存储数值的数组中
weightValues.push(weightValue);
});
// 如果获取到了 skuweight 数值,则显示在右上角
if (weightValues.length > 0) {
// 计算数值的总和并保留小数点后两位
var totalWeight = weightValues.reduce((acc, val) => acc + val, 0).toFixed(2);
// 将 skuweight 数值总和显示在右上角
var outputTextRight = "总克重:\n\n" + totalWeight;
// 将字符串设置为输出框的内容
displayElementRight.textContent = outputTextRight;
// 显示输出框
displayElementRight.style.display = 'block';
}
}
// 在指定的节点上添加事件监听器,以便在数据加载时重新执行更新显示的内容的逻辑
var targetNode = document.body;
var config = { attributes: true, childList: true, subtree: true };
var observer = new MutationObserver(function(mutationsList, observer) {
updateDisplay();
});
observer.observe(targetNode, config);
})();