Commit 5557e8d9 authored by 黄世金's avatar 黄世金

1

parent 24015d63
assets/icon.png

27.3 KB | W: | H:

assets/icon.png

3.93 KB | W: | H:

assets/icon.png
assets/icon.png
assets/icon.png
assets/icon.png
  • 2-up
  • Swipe
  • Onion skin
{
"name": "辅助发货易打单1.1.0",
"version": "1.0.0",
"description": "辅助手机壳厂家打印发货易的快递单",
"name": "辅助发货易打单1.2.1",
"version": "1.2.1",
"description": "辅助手机壳厂家打印发货易的快递单v1.2.1",
"manifest_version": 2,
"background": {
......@@ -10,7 +10,7 @@
"browser_action": {
"default_popup": "popup.html",
"default_icon": "icon.png",
"default_title": "辅助发货易打单"
"default_title": "辅助发货易打单v1.2.1"
},
"icons": {
"128": "icon.png"
......
import ColumnGroup from "antd/lib/table/ColumnGroup";
import { factoryContentUrls } from "../config";
import { StartPrint, Print } from "../types/index";
import { ScanPrintSearchType, GetWaybillNoMethod } from "../types/scanPrinting";
......@@ -7,40 +8,41 @@ const PlatfromsMap = new Map([
[1, /.+:\/\/pdd.*\.fahuoyi.com\/scanPrinting\/index/],
[2, /.+:\/\/jd.*\.fahuoyi.com\/scanPrinting\/index/],
]);
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { // 浏览器扩展插件层级监听消息
console.log("onMessage", message);
if (message.action === StartPrint) {
// console.log("startPrint")
// 通知fahuoyi的content开始点击
// chrome.tabs.query(
// {
// url: "*://*.fahuoyi.com/scanPrinting/index",
// },
// function (tabs) {
// let exp = new RegExp(PlatfromsMap.get(message.value.platform)!, "i");
/*
chrome.tabs.query(
{
url: "*://*.fahuoyi.com/scanPrinting/index",
},
function (tabs) {
let exp = new RegExp(PlatfromsMap.get(message.value.platform)!, "i");
// console.log(tabs, "tabs66");
// tabs &&
// tabs.forEach((tab) => {
// if (exp.test(tab.url!)) {
// chrome.tabs.sendMessage(tab.id!, {
// action: Print,
// value: message.value,
// });
// }
// });
// // // sendResponse("")
// // if (tabs[0]) {
// // chrome.tabs.sendMessage(tabs[0].id!, { action: Print, value: message.value })
// // }
// }
// );
console.log(tabs, "tabs66");
tabs &&
tabs.forEach((tab) => {
if (exp.test(tab.url!)) {
chrome.tabs.sendMessage(tab.id!, {
action: Print,
value: message.value,
});
}
});
// // sendResponse("")
// if (tabs[0]) {
// chrome.tabs.sendMessage(tabs[0].id!, { action: Print, value: message.value })
// }
}
);*/
chrome.tabs.query(
{
url: "*://*.fahuoyi.com/features/scanPrinting",
},
function (tabs) {
console.log(tabs, "tabs11");
console.log(tabs, "tabs11", message.value);
tabs &&
tabs.forEach((tab) => {
chrome.tabs.sendMessage(tab.id!, {
......@@ -49,9 +51,10 @@ chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
js: `console.log(window["scan-printing-form"]);window["scan-printing-form"].config(${getPrintJS(
message.value
)});window["scan-printing-form"].searchAndPrint("${
message.value?.waybillNo
? message.value?.waybillNo
: message.value?.orderNo
message.value?.waybillNo ? message.value?.waybillNo : message.value?.orderNo
// 调试未打印已取消订单
// message.value?.waybillNo ? 'ABC123111' : message.value?.orderNo
// '1497851395913027966'
}")`,
});
// chrome.tabs.executeScript(tab.id!, {
......@@ -95,16 +98,24 @@ chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
// })
function getPrintJS(param: any): string {
console.log(param);
console.log('getPrintJS param:', param);
let _ScanPrintSearchType = ScanPrintSearchType.WAYBILL_NO;
// 调试未打印已取消订单
// let _ScanPrintSearchType = ScanPrintSearchType.ORDER_ORIGINAL_ID;
let _GetWaybillNoMethod = GetWaybillNoMethod.OLD;
let _printId: string = param.list[0].printId;
let _waybillTemplate: string = "0";
console.log('getPrintJS param222:', param.list)
// @ts-ignore
param.list.forEach((item) => {
if (item.wayCompanyId === param.wayCompanyId) {
(_waybillTemplate = item.waybillTemplateList[param?.platform ?? 0]),
console.log('getPrintJS param333:', item);
// (_waybillTemplate = item.waybillTemplateList[param?.platform ?? 0]),
// platform// 平台编码,淘系及其他平台订单模板的为0,拼多多订单的为1,京东订单的为2,抖音订单为3
// 如果param.platform为3,则当成2来处理
console.log('getPrintJS param666:param.platform', param.platform);
(_waybillTemplate = item.waybillTemplateList[param?.platform && param.platform===3?2:param.platform ?? 0]),
(_printId =
item.printId === "仅获取电子面单号不打印面单"
? "isGenerateWaybillNoOnly"
......@@ -161,5 +172,6 @@ function getPrintJS(param: any): string {
*/
shippingWay: "OFFLINE"
}`;
console.log('ConfigParams', ConfigParams)
return ConfigParams;
}
......@@ -6,6 +6,7 @@ export enum PlatformCode {
"淘系及其他平台订单模板" = 0,
"拼多多订单模板" = 1,
"京东订单模板" = 2,
"抖音订单模板" = 3,
}
type Params = {
......@@ -15,7 +16,7 @@ type Params = {
} & {
orderNo: string; // 订单号
wayCompanyId: string; // 快递公司的Id
platform: PlatformCode; // 平台编码,淘系及其他平台订单模板的为0,拼多多订单的为1,京东订单的为2
platform: PlatformCode; // 平台编码,淘系及其他平台订单模板的为0,拼多多订单的为1,京东订单的为2,抖音订单为3
};
interface Response {
......@@ -24,8 +25,9 @@ interface Response {
value: Params;
};
}
window.addEventListener("message", function (res: Response) {
if (res.data.action === "StartPrint") {
window.addEventListener("message", function (res: Response) { // 浏览器层级window监听消息
if (res.data.action === "StartPrint") { // 锐图后台发起打印行为
console.log('锐图后台发起打印行为')
chrome.storage?.local.get(
{
list: [],
......@@ -37,6 +39,7 @@ window.addEventListener("message", function (res: Response) {
isAutoEmit: false,
},
function (storage) {
console.log('StartPrint---storage:', storage)
// @ts-ignore
if (
storage.list.length == 0 ||
......@@ -55,21 +58,26 @@ window.addEventListener("message", function (res: Response) {
alert("发货易配置信息为空或获取失败");
return;
}
// 从锐图后台接收打印的参数
const { wayCompanyId, waybillNo, orderNo, platform } = res.data.value;
console.log('StartPrint---Response:', res)
if (
!waybillNo &&
(!wayCompanyId || !orderNo || ![0, 1, 2].includes(Number(platform)))
(!wayCompanyId || !orderNo || ![0, 1, 2, 3].includes(Number(platform)))
) {
alert("参数传递错误");
return;
}
console.log(storage.scanPrintingForm);
console.log('storage.scanPrintingForm', storage.scanPrintingForm);
console.log('storage.list', storage.list);
console.log('storage.isAutoEmit', storage.isAutoEmit);
let newValue = {
...res.data.value,
scanPrintingForm: storage.scanPrintingForm,
list: storage.list,
isAutoEmit: storage.isAutoEmit,
};
console.log('newValue', newValue);
chrome.runtime.sendMessage(
{ action: StartPrint, value: newValue },
function (response) {}
......@@ -77,7 +85,7 @@ window.addEventListener("message", function (res: Response) {
}
);
} else if (res.data.action === getFaHuoYiSetting) {
//console.log("content recive:", JSON.parse(res.data.value));
console.log("content recive:", res.data.value);
chrome.storage.local.set(
{
......@@ -147,6 +155,7 @@ const printWayBillByOld = function (waybillNo: string, wayCompanyId: string) {
// 2.选择打单模板
waybillNoBtn.selected = true;
console.log('2.选择打单模板', SelectOptions, SelectOptions.waybillNo)
selectDom.value = SelectOptions.waybillNo;
// @ts-ignore
selectDom.dispatchEvent(new Event("change", { bubbles: true }));
......@@ -269,18 +278,18 @@ const printWayBillByNew = function ({
//发货易页面
chrome.runtime.onMessage.addListener(function (
chrome.runtime.onMessage.addListener(function ( // 浏览器扩展插件层级监听消息
message: Message,
sender,
response
) {
if (message.action === Print) {
if (message.action === Print) { // 从bg转发的打印请求在这里接收
//console.log(message.js);
let btn_js: HTMLButtonElement = document.createElement("button");
btn_js.style.cssText = "width:0;heigth:0";
document.body.appendChild(btn_js);
// @ts-ignore
btn_js.setAttribute("onclick", message.js);
btn_js.setAttribute("onclick", message.js); // 这里触发接收信息的js事件
btn_js.click();
btn_js.setAttribute("onclick", "");
btn_js.remove();
......@@ -358,12 +367,13 @@ chrome.runtime.onConnect.addListener(function (port) {
});
// inject.js
// 给锐图后台调用的方法,挂载与window上
const startPrintWayBill = function (params: Params) {
// 通知content.js触发事件
window.postMessage({ action: "StartPrint", value: params }, "*");
return new Promise(function (resolve, reject) {
// @ts-ignore
// 在锐图后台挂载接收信息的方法
window.onmessage = function (res) {
if (res.data.action === "newWaybillNo") {
console.log(res.data, "res.data");
......@@ -524,20 +534,53 @@ function observerDom(): Boolean {
console.log(mutations, "bfqxDom");
mutations.forEach((item) => {
item.addedNodes.forEach((node) => {
console.log("node.textContent", node.textContent, node.textContent ==
"该订单有商品正在退款中或者已取消,是否确认继续打印?取 消确 定");
// node.textContent == 'bootbox modal fade sui-modal in' &&
if (
let printAndCancel = false
if ( // 未打印已取消
node.textContent ==
"该订单有商品正在退款中或者已取消,是否确认继续打印?取 消确 定"
) {
let bfqxyesbtn = document.querySelector(
"body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button.ant-btn.ant-btn-primary"
) as HTMLButtonElement;
let bfqxnobtn = document.querySelector(
"body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button:nth-child(1)"
) as HTMLButtonElement;
console.log("bfqxyesbtn", bfqxyesbtn);
bfqxyesbtn.click();
printAndCancel = false
// let bfqxyesbtn = document.querySelector(
// "body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button.ant-btn.ant-btn-primary"
// ) as HTMLButtonElement;
// let bfqxnobtn = document.querySelector(
// "body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button:nth-child(1)"
// ) as HTMLButtonElement;
// console.log("bfqxyesbtn", bfqxyesbtn);
// bfqxyesbtn.click();
} else if ( // 已打印已取消
node.textContent?.includes("对应订单已经打印成功,确认再次打印该订单吗?取 消确 定")
) {
printAndCancel = true
}
let bfqxyesbtn = document.querySelector(
"body > div:last-child div.ant-modal-confirm-btns > button.ant-btn.ant-btn-primary"
) as HTMLButtonElement;
// let bfqxnobtn = document.querySelector(
// "body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button:nth-child(1)"
// ) as HTMLButtonElement;
console.log("testDom", document.querySelector(
"body > div:last-child div.ant-modal-confirm-btns > button.ant-btn.ant-btn-primary"
) as HTMLButtonElement);
console.log("bfqxyesbtn", bfqxyesbtn);
bfqxyesbtn.click();
console.log(printAndCancel, 'printAndCancel')
// 一下逻辑暂时不生效
// if (printAndCancel) {
// setTimeout(() => {
// let bfqxyesbtn = document.querySelector(
// "body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button.ant-btn.ant-btn-primary"
// ) as HTMLButtonElement;
// // let bfqxnobtn = document.querySelector(
// // "body > div:nth-child(19) > div > div.ant-modal-wrap > div > div.ant-modal-content > div > div > div.ant-modal-confirm-btns > button:nth-child(1)"
// // ) as HTMLButtonElement;
// console.log("printAndCancel bfqxyesbtn", bfqxyesbtn);
// // bfqxyesbtn.click();
// }, 500);
// }
});
});
});
......@@ -549,9 +592,10 @@ function observerDom(): Boolean {
return true;
}
// 自定义一个js插入网页当中
function injectCustomjs() {
let temp = document.createElement("script");
// 制定一些全局方法,共网页内调用,与content.js互通消息
temp.innerHTML = `window.startPrintWayBill=${startPrintWayBill};window.getFaHuoYiSetting=${injectGetFaHuoYiSetting};window.getFaHuoYiSetting();`;
document.body.appendChild(temp);
var timer: number = window.setInterval(function () {
......
......@@ -116,6 +116,7 @@ const PlatformsMap = new Map([
[0, /.+:\/\/a.*\.fahuoyi.com\//],
[1, /.+:\/\/pdd.*\.fahuoyi.com\//],
[2, /.+:\/\/jd.*\.fahuoyi.com\//],
[3, /.+:\/\/douyin.*\.fahuoyi.com\//],
]);
/**
* 快递单模板的类型
......@@ -140,7 +141,8 @@ enum WaybillTemplateType {
const PlatformsList = [
{ index: 0, value: WaybillTemplateType.CAINIAO },
{ index: 1, value: WaybillTemplateType.PDD },
{ index: 2, value: WaybillTemplateType.JD },
// { index: 2, value: WaybillTemplateType.JD },
{ index: 3, value: WaybillTemplateType.JINRITEMAI },
];
const WayBillModel = function () {
const [list, setList] = useState<List>([]);
......@@ -150,7 +152,10 @@ const WayBillModel = function () {
const [PDDWaybillTemplate, setPDDWaybillTemplate] = useState<
IwaybillTemplate[]
>([]);
const [JDWaybillTemplate, setJDWaybillTemplate] = useState<
// const [JDWaybillTemplate, setJDWaybillTemplate] = useState<
// IwaybillTemplate[]
// >([]);
const [DOUYINWaybillTemplate, setDOUYINWaybillTemplate] = useState<
IwaybillTemplate[]
>([]);
......@@ -159,14 +164,17 @@ const WayBillModel = function () {
const setMap = new Map([
[0, setAWaybillTemplate],
[1, setPDDWaybillTemplate],
[2, setJDWaybillTemplate],
// [2, setJDWaybillTemplate],
[3, setDOUYINWaybillTemplate],
]);
const getMap = new Map([
[0, AWaybillTemplate],
[1, PDDWaybillTemplate],
[2, JDWaybillTemplate],
// [2, JDWaybillTemplate],
[2, DOUYINWaybillTemplate],
]);
// 获取发货易快递模板列表
/*
const getWaybillTemplate_old = useCallback(async () => {
chrome.tabs.query(
{
......@@ -214,6 +222,8 @@ const WayBillModel = function () {
}
);
}, []);
*/
/*
const getPrintList_old = useCallback(async () => {
chrome.tabs.query(
{
......@@ -232,9 +242,12 @@ const WayBillModel = function () {
}
);
}, []);
*/
// 获取发货易快递模板列表
const getWaybillTemplate = useCallback(async () => {
chrome.storage.local.get(["scanPrintingForm"], function (result) {
console.log('获取发货易快递模板列表 PlatformsList', PlatformsList)
console.log('获取发货易快递模板列表 result', result)
for (let platform of PlatformsList) {
let filiterList = result.scanPrintingForm.waybillTemplates.filter(
(dataItem: any) => dataItem.printType === platform.value
......@@ -265,7 +278,7 @@ const WayBillModel = function () {
list: [
{
wayCompanyId: undefined,
waybillTemplateList: [undefined, undefined, undefined],
waybillTemplateList: [undefined, undefined, undefined,],
printId: undefined,
},
],
......@@ -277,7 +290,7 @@ const WayBillModel = function () {
list: [
{
wayCompanyId: undefined,
waybillTemplateList: [undefined, undefined, undefined],
waybillTemplateList: [undefined, undefined, undefined,],
printId: undefined,
},
],
......@@ -286,7 +299,7 @@ const WayBillModel = function () {
setList([
{
wayCompanyId: undefined,
waybillTemplateList: [undefined, undefined, undefined],
waybillTemplateList: [undefined, undefined, undefined,],
printId: undefined,
},
]);
......@@ -300,6 +313,7 @@ const WayBillModel = function () {
}, []);
useEffect(() => {
console.log('popup list', list)
chrome.storage.local.set({ list: list });
}, [list]);
const onChangeWayCompany = useCallback((value: string, wayIndex: number) => {
......@@ -335,7 +349,7 @@ const WayBillModel = function () {
const newState = [...pre];
newState.push({
wayCompanyId: undefined,
waybillTemplateList: [undefined, undefined, undefined],
waybillTemplateList: [undefined, undefined, undefined,],
printId: undefined,
});
return newState;
......@@ -363,8 +377,11 @@ const WayBillModel = function () {
<span className="waybill-model-title" key="three">
选择拼多多订单模板
</span>
<span className="waybill-model-title" key="four">
{/* <span className="waybill-model-title" key="four">
选择京东订单模板
</span> */}
<span className="waybill-model-title" key="four">
选择抖音订单模板
</span>
<span className="waybill-model-print" key="seven">
打印机
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment