订单信息辅助
Этот скрипт недоступен для установки пользователем. Он является библиотекой, которая подключается к другим скриптам мета-ключом // @require https://update.greasyfork.org/scripts/463102/1268857/KMERP_DETAILS.js
// ==UserScript== // @name KMERP_DETAILS // @namespace lezizi // @version 0.1.7 // @description 订单信息辅助 // @author Via // @match https://*.superboss.cc/* // @icon https://erpa.superboss.cc/favicon.ico // @grant none // ==/UserScript== 'use strict'; // Your code here... // 获取订单列表 function getKMDetails() { let details = document.querySelectorAll("div.module-trade-list-item-selected"); if (details.length < 1) { showToast("未选择订单"); return; } let detailArray = []; for (let detail of details) { let d = getDetailInfo(detail); if (typeof (d) === "string") { showToast(`订单${d}商品未加载,请先展开商品详情`); return; } detailArray.push(d); } return detailArray; } // 获取订单详情 function getDetailInfo(params) { let r###lt = {}; // 订单相关 r###lt.SysId = params.getAttribute("sid"); r###lt.OlId = params.getAttribute("tids"); r###lt.ExpNumber = params.getAttribute("outsid"); r###lt.ExpName = getExpressName(r###lt.ExpNumber); // 收货地址提取 let addr = params.querySelectorAll("span.J_Shipping_Address span.js-dcrypt-show"); //let ssq = params.querySelector("span.detailed-address").firstChild.textContent.replace("详细地址:", "").split(" "); //2023.4.26 页面更新 let ssq = params.querySelectorAll("span.J_Shipping_Address span.value")[2].innerText.split(" "); r###lt.Number = addr[1].innerText; [r###lt.Mobile, r###lt.Ext] = r###lt.Number.split("-"); r###lt.Name = addr[0].innerText.replaceAll(" ", "_").replaceAll(",", "."); r###lt.Name = r###lt.Ext !== void 0 && !r###lt.Name.includes(r###lt.Ext) ? r###lt.Name + `[${r###lt.Ext}]` : r###lt.Name r###lt.Name = r###lt.Name.length < 2 ? `${r###lt.Name}_` : r###lt.Name; r###lt.Sheng = ssq[0]; r###lt.Shi = ssq[1]; r###lt.Qu = ssq[2]; // 特殊区特殊处理下 const QuKV = [["集安路555号", "同安区"], ["洪梅镇", "洪梅镇"], ["金湾区", "金湾区"]]; for (let kv of QuKV) { r###lt.Qu = r###lt.Qu.includes(kv[0]) ? kv[1] : r###lt.Qu; } r###lt.Other = addr[2].innerText.replaceAll(" ", "").replaceAll(",", "."); //商品列表提取 r###lt.GoodsString = ""; r###lt.GoodsArray = []; let goods = params.querySelectorAll("div.item-snapshot-itemname"); if (goods.length < 1) { return r###lt.SysId; } for (let g of goods) { let temp = {}; temp.Code = g.getAttribute("data-outerid"); let rows = g.querySelectorAll("div.prod-properties"); for (let r of rows) { if (r.innerText.includes("系统规格")) { temp.Name = r.lastChild.textContent.replaceAll(" ", "").replaceAll("\n", ""); if (temp.Name === "") { let ng = r.querySelectorAll("span")[1].innerText temp.Name = ng.substring(1, ng.length - 1); } } } if (temp.Name === undefined) { temp.Code = "未匹配"; temp.Name = "未匹配商品"; } temp.Count = g.querySelector("span.needNum").innerText; if (goods.length > 1) { if (!`LTX002,LTX003,LTX103`.includes(temp.Code)) { r###lt.GoodsString += `[${temp.Name}]x${temp.Count};`; r###lt.GoodsArray.push(temp); } } else { r###lt.GoodsString += `[${temp.Name}]x${temp.Count};`; r###lt.GoodsArray.push(temp); } } //留言提取 let msg = params.querySelector("span.label-leavemessage").parentNode.querySelectorAll("span")[1]; if (msg.classList.toString() === "") { r###lt.Msg = msg.innerText.replaceAll("\t", "|").replaceAll("\n", "|"); } else { r###lt.Msg = ""; } //备注提取 let memo = params.querySelector("span.msg-seller-memo"); if (memo !== null) { r###lt.Memo = memo.innerText.replaceAll("\t", "|").replaceAll("\n", "|"); } else { r###lt.Memo = ""; } //返回处理结果 return r###lt; } /**判断快递公司 * @param {string} number 订单快递单号 * @return {string} 快递名称 */ function getExpressName(number) { number = `${number}`.replaceAll("'", ""); let len = number.length; if (number.startsWith("75") && len == 12) { return "安能"; } if (number.startsWith("DPK")) { return "德邦"; } if ((number.startsWith("11") || number.startsWith("12")) && len == 13) { return "EMS"; } if (number.startsWith("JDKA") || number.startsWith("KK")) { return "#东"; } if (number.startsWith("JT")) { return "极兔"; } if ((number.startsWith("75") || number.startsWith("78")) && len == 14) { return "中通"; } if (number.startsWith("77") && len == 15) { return "申通"; } if (number.startsWith("9") && len == 13) { return "邮#"; } if (number.startsWith("YT")) { return "圆通"; } if (number.startsWith("SF")) { return "顺丰"; } if ((number.startsWith("32") || number.startsWith("18")) && len == 12) { return "顺丰"; } if (number.startsWith("99") && len == 15) { return "顺丰"; } if (number.startsWith("4") && len == 15) { return "韵达"; } return "" } function showToast(msg, duration) { duration = isNaN(duration) ? 2000 : duration; var m = document.createElement('div'); m.innerHTML = msg; m.style.cssText = "width:60%; min-width:100px; background:#6495ED; opacity:0.6; height:auto;min-height: 50px; color:#fff; line-height:50px; text-align:center; border-radius:4px; position:fixed; top:30%; left:20%; z-index:999999; font-size:36px;"; document.body.appendChild(m); setTimeout(function () { var d = 0.5; m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in'; m.style.opacity = '0'; setTimeout(function () { document.body.removeChild(m) }, d * 1000); }, duration); }