Commit 4e86efe9 authored by 刘燕芳's avatar 刘燕芳

获取登录信息

parent edf02d3b
No preview for this file type
......@@ -5,12 +5,16 @@
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
"scripts": ["background.js"],
"_scripts": [
"src/background/index.ts"
],
"persistent": true
},
"browser_action": {
"default_popup": "popup.html",
"default_icon": "icon.png",
"default_title": "辅助图动力"
"default_title": "辅助发货易打单"
},
"icons": {
"128": "icon.png"
......@@ -21,7 +25,7 @@
"content_scripts": [
{
"matches": [
"*://*.fahuoyi.com/*",
"*://myseller.taobao.com/*",
"*://admin.rtxmdz.com/*",
"http://localhost:8082/*",
"http://localhost:8083/*",
......
{
"name": "linkfahuoyi-exension",
"version": "1.0.0",
"main": "index.js",
"main": "index.ts",
"license": "MIT",
"scripts": {
"dev": "cross-env NODE_ENV=development webpack --config ./webpack/webpack.dev.js --watch",
......
import { factoryContentUrls,bookingV2Urls, bookingAppUrls } from "../config";
import { factoryContentUrls,bookingV2Urls,homeUrl,tmIssueUrl,tbIssueUrl } from "../config";
import { StartPrint, Print, ACTION } from "../types";
const tmNameSiffix = ['旗舰店', '专卖店', '专营店']
// platform: PlatformCode,// 平台编码,淘系及其他平台订单模板的为0,拼多多订单的为1,京东订单的为2
const PlatfromsMap = new Map([
[0, /.+:\/\/a.*\.fahuoyi.com\/scanPrinting\/index/],
[1, /.+:\/\/pdd.*\.fahuoyi.com\/scanPrinting\/index/],
[2, /.+:\/\/jd.*\.fahuoyi.com\/scanPrinting\/index/]
])
let monitoringRemoveTabId = new Map();
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
if (message.action === StartPrint) {
......@@ -76,15 +77,135 @@ chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
})
})
if(tabs.length==0){
alert('请打开新版发货易发货页面')
sendResponse({status:1,msg:"请打开新版发货易发货页面"});
}
})
// let port = chrome.runtime.connect({ name: "bgSendMessage" })
// port.postMessage(message)
}else if(message.action==='getUserLoginData'){
getUserLoginData()
chrome.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => {
//加载完毕后在执行一些动作
if (tab.status== "complete") {
//如果进入了千牛首页 则开始获取对应的数据信息
if(tab.url&&tab.url.indexOf("loginmyseller.taobao.com") != -1){
chrome.storage.sync.remove("tb_user")
sendResponse();
return
}
if (tab.url&&tab.url.indexOf("myseller.taobao.com/home.htm/QnworkbenchHome") != -1) {
let userNickCookie:any = await getCookies(tab.url, "sn");
if (userNickCookie === null || userNickCookie === undefined || userNickCookie === "") userNickCookie = await getCookies(tab.url, "_nk_");
console.log('userNickCookie',userNickCookie);
if (userNickCookie === null || userNickCookie === undefined) {
chrome.storage.sync.remove("tb_user")
sendResponse();
return
};
let tuDe1 = decodeURI(userNickCookie.value);
let tuDe2 = unescape(tuDe1.replace(/\\(u[0-9a-fA-F]{4})/gm, '%$1'));
if (tuDe2.indexOf(":") != -1) tuDe2 = tuDe2.split(":")[0];
let createUrl = isTm(tuDe2) ? tmIssueUrl : tbIssueUrl;
let tabId = await createTab(createUrl);
monitoringRemoveTabId.set(tabId, tuDe2);
}
if (tab.url&&(tab.url.indexOf("item.upload.taobao.com/sell/merge") != -1 || tab.url.indexOf("sell.publish.tmall.com/tmall/smart") != -1)) {
if (monitoringRemoveTabId.has(tab.id)) {
let userNick:string = monitoringRemoveTabId.get(tab.id);
let cookie = await getCookieAll(tab.url);
let token:any = await getCookies(tab.url, "XSRF-TOKEN");
let userData:object = {
cookie:cookie,
token: token.value,
userNick: userNick,
}
console.log("user data :", userData,new Date().getMinutes(),new Date().getSeconds());
// let serverNum = SoketDispatchManage.hosts[config.evn].length;
// if (SoketDispatchManage.userNick == null || SoketDispatchManage.userNick != userData.userNick || SoketDispatchManage.getActiveConnectNum() != serverNum) {
// //与服务器建立webSocket连接 后续与服务器通信将依赖此链接
// SoketDispatchManage.connection(userData.userNick);
// if (SoketDispatchManage.getActiveConnectNum() <= 0) {
// console.log("socket未连接至任何服务器!")
// }
// }
let id:any = tab.id
chrome.storage.sync.set({"tb_user":JSON.stringify(userData)})
sendResponse();
}else{
console.log(222,new Date().getMinutes(),new Date().getSeconds());
chrome.storage.sync.remove("tb_user")
sendResponse();
}
}
if(monitoringRemoveTabId.has(tab.id)){
let id:any = tab.id
chrome.tabs.remove(id);
}
}
})
}
return true;
})
// chrome.runtime.onConnect.addListener(function (msg) {
// console.log(msg, 'msgbg')
// })
\ No newline at end of file
async function getUserLoginData(){
let tabId = await createTab(homeUrl);
monitoringRemoveTabId.set(tabId, "");
}
async function createTab(url:string) {
return new Promise((resolve, reject) => {
chrome.tabs.create({ url: url, active: false }, async (tab) => {
resolve(tab.id);
})
})
}
function getCookies(url:string, name:string){
return new Promise((resolve, reject) => {
if (name == "") {
chrome.cookies.getAll({url}, (cookie) => {
resolve(cookie);
})
} else {
chrome.cookies.get({
url: url,
name: name
}, (cookies) => {
resolve(cookies);
})
}
})
}
function getCookieAll(url:string) {
return new Promise((resolve, reject) => {
chrome.cookies.getAll({
'url': url
}, (callback) => {
if (callback.length <= 0) resolve("");
let cookies = "";
for (let i = 0; i < callback.length; i++) {
cookies += callback[i].name + '=';
cookies += callback[i].value;
if (i != callback.length - 1) cookies += "; ";
}
resolve(cookies);
})
})
}
function isTm(userNick:string) {
for (const suffix of tmNameSiffix) {
if (userNick.indexOf(suffix) !== -1) return true;
}
return false;
}
export const factoryContentUrls = ["http://localhost:8082/*", "http://localhost:8083/*", "*://admin.rtxmdz.com/*", "*://*.rtxmdz.com/*"]
export const bookingV2Urls=["https://v2.fahuoyi.com/order/list","https://v2.fahuoyi.com/order/list*"]
export const bookingAppUrls=["https://app.fahuoyi.com/order/index","https://*.fahuoyi.com/order/index"]
export const factoryContentUrls = ["http://localhost:10823/*", "*://*.rtxmdz.com/*"]
export const bookingV2Urls=["https://myseller.taobao.com/*","https://loginmyseller.taobao.com/*"]
export const homeUrl = "https://myseller.taobao.com/home.htm/QnworkbenchHome";
export const tbIssueUrl = "https://item.upload.taobao.com/sell/merge/category.htm"
export const tmIssueUrl = "https://sell.publish.tmall.com/tmall/smart/category.htm"
\ No newline at end of file
import {PlatformCode} from "./index"
let domEle = {
divNav:document.getElementsByClassName("nav-link") as HTMLCollection,
inputOrderId: "#originalIds",
......@@ -21,145 +20,8 @@ let domEle = {
deliverResult:():any=>document.querySelector(".ant-modal-body>div.ant-table-wrapper .ant-table-tbody"),
deliverClose: ():any=>document.querySelector("div.ant-modal-footer button") ,
}
async function booking(waybillTemplateTitle: string, orderNo: string,shopId:string) {
let result = {
status: 4,
msg: "未找到店铺",
data: [],
}
for(let navIter=0;navIter<domEle.divNav.length;navIter++){
let aNav = domEle.divNav[navIter] as HTMLLinkElement;
if(aNav.href.indexOf(shopId)>-1){
result.status=0;
result.msg="";
if(aNav.className.indexOf("active")==-1){
aNav.click();
}
break;
}
}
if (result.status > 0) {
return result;
}
result = await waitOrder();
if (result.status > 0) {
return result;
}
changeReactInputValue(document.querySelector(domEle.inputOrderId),orderNo)
simulateMouseClick(document.querySelector(domEle.btnSearch));
result = await waitOrder();
if (result.status > 0) {
return result;
}
simulateMouseClick(document.querySelector(domEle.checkBoxSelectAll));
simulateMouseClick(document.querySelector(domEle.btnPrint));
await delayDate(500);
if(document.getElementsByClassName(domEle.modalTips).length>0){
simulateMouseClick(document.querySelector(domEle.btnTipsConfirm));
}
result = await waitDialog();
if (result.status > 0) {
return result;
}
simulateMouseClick(domEle.spanWaybillTemplate());
let waybillTemplateList= domEle.divWaybillTemplateList();
for (let i = 0; i < waybillTemplateList.childNodes.length; i++) {
let divItem = waybillTemplateList.childNodes[i] as any;
if (divItem.innerText == waybillTemplateTitle) {
simulateMouseClick(divItem);
simulateMouseClick(domEle.radioGetNewWaybill());
if (domEle.inputWaybillNoOnly().checked == false) simulateMouseClick(domEle.inputWaybillNoOnly());
if(!domEle.inputWaybillNoOnly().checked ){
result.status=5;
result.msg="未选择仅获取电子面单";
return result;
}
simulateMouseClick(domEle.btnDialogPrint());
result = await waitPrintResult();
if (result.status == 0) {
let printReslut: any = {
success: 0,
count: domEle.tableResult().rows.length-1,
fail: 0,
list: []
}
let chooseIndex = 0
let rowResultList:any = []
for (let rowIter = 1; rowIter < domEle.tableResult().rows.length; rowIter++) {
let rowResult = domEle.tableResult().rows[rowIter].cells[2].innerText;
let rowResultHTML = domEle.tableResult().rows[rowIter].cells[2].innerHTML
let rowInfo = domEle.tableResult().rows[rowIter].cells[1].childNodes[0].childNodes[0].childNodes[1].textContent;
let rowObject = {
info: rowInfo,
msg: rowResult,
success: 1,
}
rowResultList.push(rowResultHTML)
if (domEle.tableResult().rows[rowIter].cells[2].innerHTML.indexOf('class="text-error"') > -1) {
printReslut.fail++;
rowObject.success = 0;
} else {
printReslut.success++;
}
printReslut.list.push(rowObject)
}
result.data = printReslut;
// console.log(result,rowResultList);
// 如果所有的订单都打印失败则,等会再发货,关闭弹窗
if(rowResultList.every((item:any)=>item.includes('class="text-error"'))){
chooseIndex = -1
}
// 等会再发货
if(chooseIndex===-1){
console.log('等会再发货');
simulateMouseClick(domEle.btnClose());
}else{
// 马上发货
console.log('马上发货');
simulateMouseClick(domEle.btnDeliver());
}
await delayDate(1000);
// console.log('xxxx',domEle.deliverResult(),domEle.deliverClose());
if(domEle.deliverResult()){
// 关闭
simulateMouseClick(domEle.deliverClose());
}
// for (let rowIter = 1; rowIter < domEle.deliverResult().rows.length; rowIter++) {
// let rowDeliverHTML = domEle.tableResult().rows[rowIter].cells[3].innerHTML
// rowDeliverList.push(rowDeliverHTML)
// }
return result;
}
break;
}
}
result.msg = "未匹配快递单模板";
result.status = 3;
return result;
async function booking(info: any) {
return ;
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -3,8 +3,8 @@
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
height:400px;
width: 400px;
height:200px;
width: 300px;
.popup-page-title{
padding:10px 0;
font-size: 16px;
......
......@@ -7,7 +7,7 @@ import "./popup.scss"
const Popup = function () {
return (
<div className="popup-page">
<span className="popup-page-title">打单设置</span>
<span className="popup-page-title">设置</span>
<div className="waybill-panel">
<span className="waybill-panel-title">插件状态</span>
<div className="waybill-model-wrap">
......
// ScanPrintingForm对象默认绑定在 window["scan-printing-form"]
// 可以在发货易js加载之前增加事件回调,可以保证获取到ScanPrintingForm对象
// window.addEventListener("onSEScanPrintingFormLoad", () => {
// const scanPrintingForm = window["scan-printing-form"];
// });
/**
* 扫描打印数据加载完成回调函数
*/
type OnLoadCallbackFunction = (data: OnLoadData) => void;
/**
* 扫描打印数据加载完成回调数据
*/
interface OnLoadData {
waybillTemplates: WaybillTemplate[];
shippingAddresses: ShippingAddress[];
printers: Printer[];
}
interface ScanPrintingForm {
/**
* 增加数据加载成功回调方法
* 使用示例
* ```
* scanPrintingForm.onLoad((data)=>{
* const { waybillTemplates, shippingAddresses, printers } = data;
*
* })
* ```
*/
onLoad(callbackFn: OnLoadCallbackFunction): void;
/**
* 配置表单
*/
config(params: ConfigParams): Result;
/**
* 发送扫描打印任务
*/
searchAndPrint(value: string): Result;
}
interface Result {
successful: boolean;
message: string;
}
/**
* 扫描打印类型
*/
enum ScanPrintSearchType {
/**
* 使用订单编号
*/
ORDER_ORIGINAL_ID = "ORDER_ORIGINAL_ID",
/**
* 使用运单号
*/
WAYBILL_NO = "WAYBILL_NO",
}
/**
* 获取运单号方式
*/
enum GetWaybillNoMethod {
/**
* 使用新单号
*/
NEW = "NEW",
/**
* 使用旧单号
*/
OLD = "OLD",
}
/**
* 发货方式
*/
enum ShippingWay {
/**
* 自己联系物流
*/
OFFLINE = "OFFLINE",
/**
* 在线下单
*/
ONLINE = "ONLINE",
}
/**
* 快递单模板打印类型
*/
interface ConfigParams {
/**
* 扫描类型
*/
searchType: ScanPrintSearchType;
/**
* 是否避免重复扫描打印
*/
checkRepeatPrint: boolean;
/**
* 快递单模板id
*/
waybillTemplateId: number;
/**
* 打印机名称
*/
printer: string;
/**
* 发货人id
*/
shippingAddressId: number;
/**
* 是否打印成功后自动发货
*/
autoShippingAfterPrint: boolean;
/**
* 获取面单方式
*/
getWaybillNoMethod: GetWaybillNoMethod;
/**
* 发货方式
*/
shippingWay?: ShippingWay;
}
/**
* 快递单模板的类型
*/
enum WaybillTemplateType {
CAINIAO = "CAINIAO",
JD = "JD",
JDL = "JDL",
NORMAL = "NORMAL",
OFFICIAL = "OFFICIAL",
PDD = "PDD",
JINRITEMAI = "JINRITEMAI",
TAOBAO_CAINIAO = "TAOBAO_CAINIAO",
}
/**
* 快递单模板
*/
interface WaybillTemplate {
allowedShopIds?: string;
allowedShopIdsArray?: string[];
bindingPrinter: string;
bindingShopIds: string;
companyId: number;
customAreaHeight?: number;
customAreaLeft: number;
customAreaPrintTemplateUrl: string;
customAreaTop: number;
customAreaWidth?: number;
defaultShippingAddressId: number;
deleted: boolean;
enableEmptyShortAddressCheck: boolean;
/**
* 只有电子面单才有此字段
* 申请地址id
*/
ewaybillShippingAddressId: number;
forceNoPageMargins: boolean;
height: number;
id: number;
index: number;
is3PartsWaybill: boolean;
isPrintBottomLogo: boolean;
isPrintTopLogo: boolean;
isSystemTemplate: boolean;
logisticsCompany: LogisticsCompany;
name: string;
offsetLeft: number;
offsetTop: number;
picture: string;
printTemplateId: string;
printTemplateUrl: string;
printType: WaybillTemplatePrintType;
serviceOptions: string;
shopId: number;
supportsChildWaybillNoMode: boolean;
systemTemplateId: number;
thumbnail: string;
type: WaybillTemplateType;
width: number;
}
/**
* 快递单模板打印类型
*/
enum WaybillTemplatePrintType {
CAINIAO = "CAINIAO",
JDL = "JDL",
PDD = "PDD",
/**蓝牙打印 */
PRINT_CMD = "PRINT_CMD",
JINRITEMAI = "JINRITEMAI",
}
/**
* 快递公司类型
*/
enum LogisticsCompany {
/**中通快递 */
ZTO = "ZTO",
/**中通快运 */
ZTO56 = "ZTO56",
/**圆通速递 */
YTO = "YTO",
/**申通快递 */
STO = "STO",
/**韵达速递 */
YUNDA = "YUNDA",
/**韵达快运 */
YUNDA56 = "YUNDA56",
/**中国邮政 */
POST = "POST",
/**邮政快递包裹 */
POSTB = "POSTB",
/**邮政标准快递 */
POSTS = "POSTS",
/**EMS */
EMS = "EMS",
/**顺丰速运 */
SF = "SF",
/**顺丰快运 */
SFKY = "SFKY",
/**极兔速递 */
JT = "JT",
/**天天快递 */
TTKDEX = "TTKDEX",
/**宅急送 */
ZJS = "ZJS",
/**百世快递 */
HTKY = "HTKY",
/**百世快运 */
BESTQJT = "BESTQJT",
/**百世物流 */
BEST = "BEST",
/**众邮快递 */
ZY = "ZY",
/**京东快运 */
JDKY = "JDKY",
/**丰网速运 */
FENGWANG = "FENGWANG",
/**安能快递 */
ANE66 = "ANE66",
/**安能物流 */
ANE56 = "ANE56",
/**京东快递 */
JD_EXPRESS = "JD_EXPRESS",
/**京东大件物流 */
JD_HPCP = "JD_HPCP",
/**德邦物流 */
DBL = "DBL",
/**德邦快递 */
DBKD = "DBKD",
/**韵达国际 */
YUNDAGJ = "YUNDAGJ",
/**韵达同城 */
YUNDA_TC = "YUNDA_TC",
/**申通快运 */
STO56 = "STO56",
/**申通国际 */
STOGJ = "STOGJ",
/**中通国际 */
ZTOGJ = "ZTOGJ",
/**国通快递 */
GTO = "GTO",
/**EMS经济快递 */
EYB = "EYB",
/**跨越速运 */
KUAYUE = "KUAYUE",
/**安鲜达 */
EXFRESH = "EXFRESH",
/**九曳供应链 */
JIUYESCM = "JIUYESCM",
/**优速快递 */
UC = "UC",
/**万象物流 */
WXWL = "WXWL",
/**全锋快递 */
QFKD = "QFKD",
/**龙邦快递 */
LB = "LB",
/**全一快递 */
UAPEX = "UAPEX",
/**快捷快递 */
FAST = "FAST",
/**天地华宇 */
HOAU = "HOAU",
/**品骏快递 */
PJBEST = "PJBEST",
/**如风达快递 */
RFD = "RFD",
/**远成快运 */
YCKY = "YCKY",
/**壹米滴答 */
YMDD = "YMDD",
/**速尔快递 */
SURE = "SURE",
/**速通物流 */
SUT56 = "SUT56",
/**中铁快运 */
CRE = "CRE",
/**亚风 */
AIR = "AIR",
/**佳吉快递 */
CNEX = "CNEX",
/**联邦快递 */
FEDEX = "FEDEX",
/**增益速递 */
QRT = "QRT",
/**加运美速递 */
JYMWL = "JYMWL",
/**信丰物流 */
XFWL = "XFWL",
/**大田物流 */
DTW = "DTW",
/**D速物流 */
DSWL = "DSWL",
/**承诺达特快 */
CNDTK = "CNDTK",
/**运通物流 */
YTWL = "YTWL",
/**长宇物流 */
CYWL = "CYWL",
/**新邦物流 */
XBWL = "XBWL",
/**联昊通 */
LWT = "LWT",
/**苏宁物流 */
SNWL = "SNWL",
/**能达速递 */
NDSD = "NDSD",
/**保宏物流 */
BHWL = "BHWL",
/**发网 */
FW = "FW",
/**长发 */
CF = "CF",
/**远长 */
YC = "YC",
/**东方汇 */
DFH = "DFH",
/**飞远配送 */
FYPS = "FYPS",
/**黑猫宅急便 */
HMZJB = "HMZJB",
/**E速宝 */
ESB = "ESB",
/**华强物流 */
HQWL = "HQWL",
/**安迅物流 */
AXWL = "AXWL",
/**中运全速 */
TOPSPEED = "TOPSPEED",
/**华企快运 */
HUAQIEX = "HUAQIEX",
/**丹鸟 */
DN = "DN",
/**都市节奏 */
DSJZ = "DSJZ",
/**宽昊物流 */
KHWL = "KHWL",
/**顺心捷达 */
SXJD = "SXJD",
/**京广速递 */
SZKKE = "SZKKE",
/**韵达点通达 */
YUNDA_DTD = "YUNDA_DTD",
/**百世云配 */
BSYP = "BSYP",
/**运通速运 */
WTO = "WTO",
/**沃埃家 */
WOWVIP = "WOWVIP",
/**菜鸟裹裹 */
CN_GUOGUO = "CN_GUOGUO",
/**淘特物流快递 */
TTWLKD = "TTWLKD",
/**速腾快递 */
STE56 = "STE56",
/**安得物流 */
ANDE = "ANDE",
/**百世国际 */
BESTGJ = "BESTGJ",
/**当当网 */
DANGDANG = "DANGDANG",
/**EWE全球快递 */
EWE = "EWE",
/**丰云配 */
FYP = "FYP",
/**高捷物流 */
GJWL = "GJWL",
/**空港宏远电商物流 */
HYWL = "HYWL",
/**卡行天下快运 */
KXTX = "KXTX",
/**日日顺 */
RRS = "RRS",
/**威盛快递 */
WSKD = "WSKD",
/**威时沛运 */
WSPY = "WSPY",
/**贝海国际速递 */
XLOBO = "XLOBO",
/**中远e环球 */
ZYEHQ = "ZYEHQ",
/**转运四方物流 */
ZYSF = "ZYSF",
/**卓志速运 */
ZZSY = "ZZSY",
/**其他 */
OTHER = "OTHER",
}
/**
* 发货人对象
*/
interface ShippingAddress {
id: number;
/**绑定的店铺列表 用,分割 */
bindingShopIds: string;
city: string;
cityCode: number;
district: string;
districtCode: number;
mobile: string;
/**发货地址名称 */
name: string;
province: string;
provinceCode: number;
/**发货人姓名 */
shipperName: string;
street: string;
telephone: string;
zipCode: string;
/**排序 */
index: number;
}
/**
* 打印机对象
*/
interface Printer {
name: string;
}
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