KMERP_DETAILS

订单信息辅助

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/463102/1268857/KMERP_DETAILS.js

  1. // ==UserScript==
  2. // @name KMERP_DETAILS
  3. // @namespace lezizi
  4. // @version 0.1.7
  5. // @description 订单信息辅助
  6. // @author Via
  7. // @match https://*.superboss.cc/*
  8. // @icon https://erpa.superboss.cc/favicon.ico
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. 'use strict';
  13.  
  14. // Your code here...
  15. // 获取订单列表
  16. function getKMDetails() {
  17. let details = document.querySelectorAll("div.module-trade-list-item-selected");
  18. if (details.length < 1) {
  19. showToast("未选择订单");
  20. return;
  21. }
  22. let detailArray = [];
  23. for (let detail of details) {
  24. let d = getDetailInfo(detail);
  25. if (typeof (d) === "string") {
  26. showToast(`订单${d}商品未加载,请先展开商品详情`);
  27. return;
  28. }
  29. detailArray.push(d);
  30. }
  31. return detailArray;
  32. }
  33.  
  34. // 获取订单详情
  35. function getDetailInfo(params) {
  36. let result = {};
  37. // 订单相关
  38. result.SysId = params.getAttribute("sid");
  39. result.OlId = params.getAttribute("tids");
  40. result.ExpNumber = params.getAttribute("outsid");
  41. result.ExpName = getExpressName(result.ExpNumber);
  42. // 收货地址提取
  43. let addr = params.querySelectorAll("span.J_Shipping_Address span.js-dcrypt-show");
  44. //let ssq = params.querySelector("span.detailed-address").firstChild.textContent.replace("详细地址:", "").split(" ");
  45. //2023.4.26 页面更新
  46. let ssq = params.querySelectorAll("span.J_Shipping_Address span.value")[2].innerText.split(" ");
  47. result.Number = addr[1].innerText;
  48. [result.Mobile, result.Ext] = result.Number.split("-");
  49. result.Name = addr[0].innerText.replaceAll(" ", "_").replaceAll(",", ".");
  50. result.Name = result.Ext !== void 0 && !result.Name.includes(result.Ext) ? result.Name + `[${result.Ext}]` : result.Name
  51. result.Name = result.Name.length < 2 ? `${result.Name}_` : result.Name;
  52. result.Sheng = ssq[0];
  53. result.Shi = ssq[1];
  54. result.Qu = ssq[2];
  55. // 特殊区特殊处理下
  56. const QuKV = [["集安路555号", "同安区"], ["洪梅镇", "洪梅镇"], ["金湾区", "金湾区"]];
  57. for (let kv of QuKV) {
  58. result.Qu = result.Qu.includes(kv[0]) ? kv[1] : result.Qu;
  59. }
  60. result.Other = addr[2].innerText.replaceAll(" ", "").replaceAll(",", ".");
  61. //商品列表提取
  62. result.GoodsString = "";
  63. result.GoodsArray = [];
  64. let goods = params.querySelectorAll("div.item-snapshot-itemname");
  65. if (goods.length < 1) {
  66. return result.SysId;
  67. }
  68. for (let g of goods) {
  69. let temp = {};
  70. temp.Code = g.getAttribute("data-outerid");
  71. let rows = g.querySelectorAll("div.prod-properties");
  72. for (let r of rows) {
  73. if (r.innerText.includes("系统规格")) {
  74. temp.Name = r.lastChild.textContent.replaceAll(" ", "").replaceAll("\n", "");
  75. if (temp.Name === "") {
  76. let ng = r.querySelectorAll("span")[1].innerText
  77. temp.Name = ng.substring(1, ng.length - 1);
  78. }
  79. }
  80. }
  81. if (temp.Name === undefined) {
  82. temp.Code = "未匹配";
  83. temp.Name = "未匹配商品";
  84. }
  85. temp.Count = g.querySelector("span.needNum").innerText;
  86. if (goods.length > 1) {
  87. if (!`LTX002,LTX003,LTX103`.includes(temp.Code)) {
  88. result.GoodsString += `[${temp.Name}]x${temp.Count};`;
  89. result.GoodsArray.push(temp);
  90. }
  91. } else {
  92. result.GoodsString += `[${temp.Name}]x${temp.Count};`;
  93. result.GoodsArray.push(temp);
  94. }
  95. }
  96. //留言提取
  97. let msg = params.querySelector("span.label-leavemessage").parentNode.querySelectorAll("span")[1];
  98. if (msg.classList.toString() === "") {
  99. result.Msg = msg.innerText.replaceAll("\t", "|").replaceAll("\n", "|");
  100. } else {
  101. result.Msg = "";
  102. }
  103. //备注提取
  104. let memo = params.querySelector("span.msg-seller-memo");
  105. if (memo !== null) {
  106. result.Memo = memo.innerText.replaceAll("\t", "|").replaceAll("\n", "|");
  107. } else {
  108. result.Memo = "";
  109. }
  110. //返回处理结果
  111. return result;
  112. }
  113.  
  114. /**判断快递公司
  115. * @param {string} number 订单快递单号
  116. * @return {string} 快递名称
  117. */
  118. function getExpressName(number) {
  119. number = `${number}`.replaceAll("'", "");
  120. let len = number.length;
  121. if (number.startsWith("75") && len == 12) {
  122. return "安能";
  123. }
  124. if (number.startsWith("DPK")) {
  125. return "德邦";
  126. }
  127. if ((number.startsWith("11") || number.startsWith("12")) && len == 13) {
  128. return "EMS";
  129. }
  130. if (number.startsWith("JDKA") || number.startsWith("KK")) {
  131. return "京东";
  132. }
  133. if (number.startsWith("JT")) {
  134. return "极兔";
  135. }
  136. if ((number.startsWith("75") || number.startsWith("78")) && len == 14) {
  137. return "中通";
  138. }
  139. if (number.startsWith("77") && len == 15) {
  140. return "申通";
  141. }
  142. if (number.startsWith("9") && len == 13) {
  143. return "邮政";
  144. }
  145. if (number.startsWith("YT")) {
  146. return "圆通";
  147. }
  148. if (number.startsWith("SF")) {
  149. return "顺丰";
  150. }
  151. if ((number.startsWith("32") || number.startsWith("18")) && len == 12) {
  152. return "顺丰";
  153. }
  154. if (number.startsWith("99") && len == 15) {
  155. return "顺丰";
  156. }
  157. if (number.startsWith("4") && len == 15) {
  158. return "韵达";
  159. }
  160. return ""
  161. }
  162.  
  163. function showToast(msg, duration) {
  164. duration = isNaN(duration) ? 2000 : duration;
  165. var m = document.createElement('div');
  166. m.innerHTML = msg;
  167. 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;";
  168. document.body.appendChild(m);
  169. setTimeout(function () {
  170. var d = 0.5;
  171. m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
  172. m.style.opacity = '0';
  173. setTimeout(function () { document.body.removeChild(m) }, d * 1000);
  174. }, duration);
  175. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址