上架助手2024-油猴插件

上架助手2024

// ==UserScript==
// @name         上架助手2024-油猴插件
// @namespace    http://tampermonkey.net/
// @version      2025.02.06.1
// @description  上架助手2024
// @license      MIT
// @author       Beerspume
// @match        https://*.soluxemall.com/*
// @match        https://supadmin.jd.com/*
// @match        shop.jd.com/jdm/trade/orders/order-list*
// @match        shop.jd.com/jdm/trade/order/orderDetail*
// @match        https://www2.energyahead.com/html/supermarket.html*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=benefits.soluxemall.com
// @require      https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.2/html2canvas.min.js
// @grant        GM_addElement
// @grant        GM_log
// @grant        GM_setClipboard
// @grant        GM_download
// @grant        GM_xmlhttpRequest
// @connect *
// ==/UserScript==

(function() {
    'use strict';

    //取得易采网站后台请求的授权信息
    function getAuthorization(){
        //从localStorage中取得授权信息
        const json_jdcloud=localStorage.getItem("jdcloud");
        let Authorization=undefined;
        if(json_jdcloud){
            try{
                const jdcloud=JSON.parse(json_jdcloud);
                Authorization=jdcloud.token;
                //console.log(`Authorization: ${Authorization}`);
            }catch(e){
                console.log("jdcloud解析失败,请查看localStorage中的jdcloud是否正确");
            }
        }
        return Authorization;
    }
    function getNodeByInnerText(parentNode,tagname,InnerText){
        let nodechilldern = parentNode.querySelectorAll(tagname);
        for (let i = 0; i < nodechilldern.length; i++) {
            if (nodechilldern[i].innerText==InnerText){
                return nodechilldern[i];
            }
        }
        return null;
    }
    //复制内容到剪贴板
    function copyToClipboard(text) {
        navigator.clipboard.writeText(text)
            .then(function() {
            console.log('Text copied to clipboard');
        })
            .catch(function(err) {
            console.error('Failed to copy text: ', err);
        });
    }
    //将毫秒时间戳转换为时间
    function timestampToDate(timestamp) {
        var date = new Date(timestamp);
        var year = date.getFullYear();
        var month = ("0" + (date.getMonth() + 1)).slice(-2); // 月份是从0开始的
        var day = ("0" + date.getDate()).slice(-2);
        var hours = ("0" + date.getHours()).slice(-2);
        var minutes = ("0" + date.getMinutes()).slice(-2);
        var seconds = ("0" + date.getSeconds()).slice(-2);
        return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
    }

    //将秒转化为小时
    const fn_formatSeconds=(seconds)=>{
        if(seconds===Infinity){
            return "";
        }else{
            return `${Math.floor(seconds/3600)}小时${Math.floor(seconds%3600/60)}分钟${Math.floor(seconds%3600%60)}秒`;
        }
    };

    function sleep(seconds){
        return new Promise((resolve,reject)=>{
            window.setTimeout(()=>{
                resolve();
            },seconds*1000);
        });
    }

    const TimeSample=[];
    const fn_timeSample=()=>{
        TimeSample.push(new Date().getTime());
        while(TimeSample.lenth>11){
            TimeSample.shift();
        }
        let average=Infinity;
        if(TimeSample.length>0){
            average=(Math.max(...TimeSample)-Math.min(...TimeSample))/TimeSample.length/1000;
        }
        return average;

    };

    // 访问后台服务的统一接口
    const hyservice=(action,data)=>{
        return new Promise((resolve,reject)=>{
            const post_data = `action=${action}&`+ObjToParams(data);
            console.log(post_data);
            GM_xmlhttpRequest({
                url:"http://43.143.136.44/hysm/service.asp",
                method:'POST',
                responseType:"json",
                headers:{"Content-Type":"application/x-www-form-urlencoded"},
                data:post_data,
                onload:(event)=>{
                    if(event.status==200){
                        if(event.response.success){
                            resolve(event.response.data);
                        }else{
                            reject(event.response);
                        }
                    }else{
                        reject(event);
                    }
                },
                onerror:(event)=>{
                    reject(event);
                }
            });
        });
    }
    //转换请求参数格式
    function ObjToParams(obj){
        let ret="";
        Object.keys(obj).forEach((k)=>{
            let v=obj[k];
            if(typeof(v)==="object"){
                v=JSON.stringify(v);
            }
            ret+=`${k}=${encodeURIComponent(v)}&`;
        });
        if(ret.length>1){
            ret=ret.substring(0,ret.length-1)
        }
        return ret;
    }
    //显示信息
    function msgDisplay(str){
        let el_msg=document.querySelector(".hy_msg1");
        if(el_msg){
            el_msg.innerText=str;
        }
    }


    //下载图片存放到Blob
    const fn_download_photo=function(photo_url){
        return new Promise((resolve,reject)=>{
            const re_photo_filename=/\/([^\/]+)$/;
            const m_photo_filename=photo_url.match(re_photo_filename);
            let photo_filename='noname.jpg';
            if(m_photo_filename){
                photo_filename=m_photo_filename[1];
            }

            GM_xmlhttpRequest({
                url:photo_url,
                method:'GET',
                responseType:'blob',
                onload:(event)=>{
                    const phpto_data=event.response;
                    resolve(phpto_data);
                },
                onerror:(event)=>{
                    reject(event);
                }
            });
        });
    };
       //取得商品详情
        const getGoodsDetail=(shopSkuId)=>{
            return new Promise((resolve,reject)=>{
                const post_data={shopSkuId: shopSkuId};
                const post_headers={
                    "Content-Type":"application/json;charset=UTF-8",
                    "Authorization":getAuthorization(),
                };
                GM_xmlhttpRequest({
                    url:"https://benefits.soluxemall.com/proxy/item-center/energynet/platform/shopDataFilling/seachSupplierEnergyDataDetail",
                    method:'POST',
                    data:JSON.stringify(post_data),
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){
                                const response=JSON.parse(event.responseText);
                                if(response.code=="0"){
                                    resolve(response.data);
                                }else{
                                    reject(response.msg);
                                }
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };
        //从华远平台获取订单信息
        const getHYSMOrderDetail=(nyoneOrderNo)=>{
            return new Promise((resolve,reject)=>{
                const post_headers={
                    "Content-Type":"application/json;charset=UTF-8",
                };
                GM_xmlhttpRequest({
                    url:`http://43.143.136.44/hysm/ajax_checkorderbh.asp?orderbh=${nyoneOrderNo}`,
                    method:'GET',
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){
                                const response=JSON.parse(event.responseText);
                                resolve(response);
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };
        const importUrl = `http://43.143.136.44/hysm/doimport_order.asp`;//华远后台导入订单页面地址
        const importDomain = 'http://43.143.136.44'; //华远后台域名
        const postDataToHYSM=(order)=>{
            let newWindow = window.open(`${importUrl}?orderfrom=${order.orderfrom}`,'importorder');
            const handleMessage=(event)=>{
                if(event.origin == importDomain){
                    console.log(event);
                    if(event.data=="ok"){
                        console.log("发送数据给华远窗口",order);
                        newWindow.postMessage(order,importDomain);
                        newWindow.focus();
                        window.removeEventListener('message', handleMessage);
                    }
                }
            }
            window.addEventListener('message',handleMessage);
        }
    //-------------------------------------------- 能源一号网 -> 第三方超市 ------------------------------------------------------------------
    const fn_initEnergyNetMenuBar=()=>{
       console.log('进入能源一号网第三方超市');
        let el_menubar=document.querySelector(".hy_menubar");
        if(!el_menubar){
            // 插件功能区
            el_menubar=document.createElement("div");
            el_menubar.classList.add("hy_menubar");
            el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;";

            //主功能区
            const el_mainContainer=document.createElement("div");
            el_menubar.append(el_mainContainer);
            el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;";
            //主功能区标题
            const el_title=document.createElement("div");
            el_mainContainer.append(el_title);
            el_title.innerText="商品助手";
            el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;";
            //导入编码按钮
            const el_b1=document.createElement("button");
            el_mainContainer.append(el_b1);
            el_b1.style="width:90%;margin-bottom:5px;";
            el_b1.textContent="导入商品编码";
            el_b1.addEventListener("click",(event)=>{doImportEnergyGoodsId()});
            el_b1.classList.add("hy_btn_importgoodsid");
            /*
            //导入按钮
            const el_b3=document.createElement("button");
            el_mainContainer.append(el_b3);
            el_b3.style="width:90%;margin-bottom:5px;";
            el_b3.textContent="导入商品快照";
            el_b3.addEventListener("click",(event)=>{doImportEnergyGoodsSnapshot()});
            //el_b3.setAttribute("disabled",true);
            el_b3.classList.add("hy_btn_importgoodsimg");
            */

            //查询消息显示区
            const el_msg1=document.createElement("div");
            el_mainContainer.append(el_msg1);
            el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;";
            el_msg1.innerText="";
            el_msg1.classList.add("hy_msg1");
            //将助手工具添加到页面
            document.body.insertAdjacentElement("afterBegin",el_menubar);
            msgDisplay(`请先登录(不可用)能源一号网`);
        }

        const getEnergyGoodsByKeywords=(Keywords)=>{
            return new Promise((resolve,reject)=>{

                let commonSearchReqBO={frozenOrgCode:"SUP",
                                       checkStatusOrgCode:"SUP",
                                       isFrozenStatus:false,
                                       pageNo:1,
                                       pageSize:10,
                                       supplierName:"",
                                       sort:"default",
                                       keyWord:Keywords,
                                       commoditySource:"-1"};
                const token = localStorage.getItem("token");
                const searchReq=encodeURIComponent(JSON.stringify(commonSearchReqBO));
                let postData=`CommonSearchReqBO=${searchReq}&service=searchThirdPartyCommodity&token=${token}`;
                const post_headers={
                    "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"
                };
                //console.log(postData);
                GM_xmlhttpRequest({
                    url:"https://www2.energyahead.com/rest/service/routing",
                    method:'POST',
                    data:postData,
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){
                                const response=JSON.parse(event.responseText);
                                resolve(response);
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };

         //导入商品编码
        const doImportEnergyGoodsId=()=>{
            (async()=>{
                const el_btn=document.querySelector(".hy_btn_importgoodsid");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                console.log('开始导入能源一号网商品编码');
                msgDisplay(`获取需要导入编码的商品列表`);
                const goodsList = await hyservice("energyapplygoodslist",{pagesize:-1,pageno:1});
                console.log("get goods list ",goodsList);
                const allnum = goodsList.length;
                let errnum =0;
                let oknum = 0;
                msgDisplay(`需要导入数量:${allnum}`);
                for(let i=0;i<goodsList.length;i++){
                    const skuid = goodsList[i].shopskuid;
                    let commodityId="";
                    try{
                        let begintime = new Date().getTime();
                        const seachList=await getEnergyGoodsByKeywords(skuid);
                        commodityId = seachList.commodityPageList.rows[0].commodityId;
                        const ret = await hyservice("saveenergygoodsid",{shopskuid:skuid,commodityId:commodityId});
                        oknum+=1;
                        let endtime = new Date().getTime();
                        console.log(`导入${skuid}/${commodityId}成功 耗时${endtime-begintime}ms`);
                    }catch(e){
                        console.error(`导入${skuid}/${commodityId}失败`,e);
                        errnum +=1;
                    }
                    msgDisplay(`已完成导入:${i+1}/${allnum} 失败 ${errnum} 条` );
                    await sleep(0.5);
                }
                msgDisplay(`导入结束:共${allnum}条,失败${errnum}条` );
                if(el_btn){
                    el_btn.removeAttribute("disabled");
                }
             })();
        };
        //导入商品快照
        const doImportEnergyGoodsSnapshot=()=>{
            (async()=>{
                console.log('开始导入能源一号网商品快照');

                let newWindow = window.open(`https://www2.energyahead.com/html/shop/3rd_party_detail.html?supplierId=3955259471&commodityId=6334250`,'energygoodsdetailwindow');
                console.log('新商品页面打开');
                await sleep(1);
                let newdoc = newWindow.document;
                const el_commodity = newdoc.querySelector(".commodity");
                const el_detail = el_commodity.querySelector('.commodity-details');
                el_detail.parentNode.removeChild(el_detail);
                let el_div1 = el_commodity.querySelector('.magnifier-assembly');
                el_div1.parentNode.removeChild(el_div1);
                el_div1 = el_commodity.querySelector('.move-view');
                el_div1.parentNode.removeChild(el_div1);
                el_div1 = el_commodity.querySelector('.magnifier-view');
                el_div1.parentNode.removeChild(el_div1);
                const el_goodsimg = el_commodity.querySelector('.images-cover').querySelector('img');
                const imgdata = await fn_download_photo(el_goodsimg.src);
                el_goodsimg.src =window.URL.createObjectURL(imgdata);
                await sleep(1);
                await html2canvas(el_commodity).then(canvas => {
                    // 创建一个图片元素
                    var img = canvas.toDataURL("image/png");
                    // 创建一个链接元素
                    var link = document.createElement('a');
                    console.log(img);
                    link.href = img;
                    // 设置下载的文件名
                    link.download = 'downloaded-image.png';
                    // 触发下载
                    link.click();

                });
               //newWindow.close();
            })();
        };

    };

    //-------------------------------------------- 京东商家后台 -> 订单详情 ------------------------------------------------------------------

    const fn_initJDOrderDetailMenuBar=()=>{
        console.log('进入京东订单详情页面');
        let el_menubar=document.querySelector(".hy_menubar");
        if(!el_menubar){
            // 插件功能区
            el_menubar=document.createElement("div");
            el_menubar.classList.add("hy_menubar");
            el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;";

            //主功能区
            const el_mainContainer=document.createElement("div");
            el_menubar.append(el_mainContainer);
            el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;";
            //主功能区标题
            const el_title=document.createElement("div");
            el_mainContainer.append(el_title);
            el_title.innerText="京东订单导入助手";
            el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;";
            //导入按钮
            const el_b3=document.createElement("button");
            el_mainContainer.append(el_b3);
            el_b3.style="width:90%;margin-bottom:5px;";
            el_b3.textContent="导入订单到华远系统";
            el_b3.addEventListener("click",(event)=>{doImportJDOrder()});
            //el_b3.setAttribute("disabled",true);
            el_b3.classList.add("hy_btn_importorder");

            //查询消息显示区
            const el_msg1=document.createElement("div");
            el_mainContainer.append(el_msg1);
            el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;";
            el_msg1.innerText="";
            el_msg1.classList.add("hy_msg1");
            //将助手工具添加到页面
            document.body.insertAdjacentElement("afterBegin",el_menubar);
        }



        //导入京东订单
        //从华远平台获取订单信息
        const getHYSMJDGoodsDetail=(jdsku)=>{
            return new Promise((resolve,reject)=>{
                const post_headers={
                    "Content-Type":"application/json;charset=UTF-8",
                };
                GM_xmlhttpRequest({
                    url:`http://43.143.136.44/hysm/do_getjdgoodsdetail.asp?jdsku=${jdsku}`,
                    method:'GET',
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){
                                const response=JSON.parse(event.responseText);
                                resolve(response);
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };

        //取得京东订单详情
        const doImportJDOrder=()=>{
            (async()=>{
               console.log(`开始导入京东订单`);
               console.log("准备订单数据");

            let order = new Object;
            const el_orderdiv=document.querySelector("div.order-info");
            if(el_orderdiv==null){
                msgDisplay(`请等订单信息加载完毕再导入`);
                return;
            }
            const orderstus =document.querySelector("div.form-item.inline.order-status").querySelector('span.form-item-text').innerText;
            if(orderstus=='等待付款' ||orderstus== '已取消'){
                msgDisplay(`订单状态为 ${orderstus} 不能导入`);
                return;
            }
            order.orderfrom=2;
            order.orderbh = document.querySelector("div.form-item.order-item").querySelectorAll("span")[1].innerText;
            order.personname = "";
            order.address = "";
            order.tell = "";
            order.note = "";
            order.ordertime = "";
            order.company="";
            try{
                order.personname=el_orderdiv.querySelector(".goods-name-box").querySelectorAll("span")[0].innerText;
            }catch (error) {}
            try{
                order.address=el_orderdiv.querySelector(".goods-address").querySelectorAll("span")[0].innerText;
            }catch (error) {}
            try{
                order.tell = el_orderdiv.querySelector(".goods-mobile-phone").querySelectorAll("span")[0].innerText;
            }catch (error) {}
            try{
                order.note = getNodeByInnerText(document.querySelector("div.order-status-content"),"span","买家留言:").parentNode.querySelectorAll("span")[1].innerText;
            }catch (error) {}
            try{
                const el_paydiv= document.querySelectorAll(".consignee-info")[2];
                order.ordertime=getNodeByInnerText(el_paydiv,"div.item-label","付款时间").parentNode.querySelector("div.item-value").innerText
                //order.ordertime=el_paydiv.querySelectorAll("div")[1].querySelectorAll('.info-bar-item')[1].querySelector('.item-value').innerText;
            }catch (error) {}
            try{
                const el_companyDiv = document.querySelectorAll(".consignee-info")[3];
                if(getNodeByInnerText(el_companyDiv,"div","单位名称")!=null){
                    order.company=getNodeByInnerText(el_companyDiv,"div","单位名称").parentNode.querySelectorAll("div")[1].innerText;
                }
                if(getNodeByInnerText(el_companyDiv,"div","发票抬头")!=null){
                    order.company=getNodeByInnerText(el_companyDiv,"div","发票抬头").parentNode.querySelectorAll("div")[1].innerText;
                }
            }catch (error) {}
            //订单商品
            let orderItems = [];
            //商品列表
            const goodslistdiv = document.querySelector("div.product-table-box");
            const goodslisttable = goodslistdiv.querySelector("table.el-table__body").querySelector("tbody");
            order.ordergoodsnum = goodslisttable.querySelectorAll("tr").length;
            const goodslisttr = goodslisttable.querySelectorAll("tr");
            var orderamount = 0;
            for (var i = 0; i < goodslisttr.length; i++) {
                let goodsItem = new Object;
                goodsItem.goodsid = goodslisttr[i].querySelectorAll("td")[0].innerText;
                const goodsFromHYSM = await getHYSMJDGoodsDetail(goodsItem.goodsid);
                console.log('从华远系统取商品信息',goodsFromHYSM);
                goodsItem.goodsname = goodsFromHYSM.productname;
                goodsItem.goodsBrand =goodsFromHYSM. mainbrandname;
                goodsItem.goodsUnit = goodsFromHYSM.mainunitcode;
                goodsItem.goodsOrderPrice = goodslisttr[i].querySelectorAll("td")[5].innerText;
                let reg1 = new RegExp("¥","g");
                goodsItem.goodsOrderPrice = goodsItem.goodsOrderPrice.replace(reg1,"");
                goodsItem.goodsNum = goodslisttr[i].querySelectorAll("td")[2].querySelectorAll("div.price")[1].innerText;
                var reg3 = new RegExp("x","g");
                goodsItem.goodsNum= goodsItem.goodsNum.replace(reg3,"");
                orderamount+=goodsItem.goodsNum * goodsItem.goodsOrderPrice;
                orderItems.push(goodsItem);
            }
            order.goodsItems = orderItems;
            order.orderamount = orderamount;
            //取得companyinfo
            const companyinfo = new Object;
            var el_companynode = document.querySelectorAll(".consignee-info")[3];
            companyinfo.companytype=1;
            companyinfo.companyname="";
            companyinfo.companycode="";
            companyinfo.address="";
            companyinfo.linktell="";
            companyinfo.bankname="";
            companyinfo.bankcount="";
            companyinfo.linkmanname = "-";
            companyinfo.sellgoods="京东客户";
            try{
                if(getNodeByInnerText(el_companynode,"div.item-label","单位名称")!=null){
                    companyinfo.companyname=getNodeByInnerText(el_companynode,"div.item-label","单位名称").parentNode.querySelector("div.item-value").innerText;
                }
                if (getNodeByInnerText(el_companynode,"div.item-label","发票抬头")!=null){
                    companyinfo.companyname=getNodeByInnerText(el_companynode,"div.item-label","发票抬头").parentNode.querySelector("div.item-value").innerText;
                }
            }catch(e){}
            try{
                companyinfo.companycode = getNodeByInnerText(el_companynode,"div.item-label","纳税人识别号").parentNode.querySelector("div.item-value").innerText;
            }catch(e){}
            try{
                if(getNodeByInnerText(el_companynode,"div.item-label","单位地址")!=null){
                    companyinfo.address = getNodeByInnerText(el_companynode,"div.item-label","单位地址").parentNode.querySelector("div.item-value").innerText;
                }
                if (getNodeByInnerText(el_companynode,"div.item-label","地址")!=null){
                    companyinfo.address = getNodeByInnerText(el_companynode,"div.item-label","地址").parentNode.querySelector("div.item-value").innerText;
                }
            }catch(e){}
            try{
                if(getNodeByInnerText(el_companynode,"div.item-label","单位电话")!=null){
                    companyinfo.linktell = getNodeByInnerText(el_companynode,"div.item-label","单位电话").parentNode.querySelector("div.item-value").innerText;
                }
                if(getNodeByInnerText(el_companynode,"div.item-label","电话")!=null){
                    companyinfo.linktell = getNodeByInnerText(el_companynode,"div.item-label","电话").parentNode.querySelector("div.item-value").innerText;
                }
	        }catch(e){}

            if(getNodeByInnerText(el_companynode,"div.item-label","开户银行")!=null){
                companyinfo.bankname = getNodeByInnerText(el_companynode,"div.item-label","开户银行").parentNode.querySelector("div.item-value").innerText;
            }
            try{
                if(getNodeByInnerText(el_companynode,"div.item-label","银行账号")!=null){
                    companyinfo.bankcount = getNodeByInnerText(el_companynode,"div.item-label","银行账号").parentNode.querySelector("div.item-value").innerText;
                }
                if(getNodeByInnerText(el_companynode,"div","开户账号")!=null){
                    companyinfo.bankcount = getNodeByInnerText(el_companynode,"div","开户账号").parentNode.querySelector("div.item-value").innerText;
                }
	        }catch(e){}
            order.companyInfo=companyinfo;

            console.log(order);
            postDataToHYSM(order);

            })();
        };

    };
    //-------------------------------------------- 京东商家后台 -> 订单列表 ------------------------------------------------------------------

    const fn_initJDOrderMenuBar=()=>{
        console.log('进入京东订单列表页面');
        let el_menubar=document.querySelector(".hy_menubar");
        if(!el_menubar){
            // 插件功能区
            el_menubar=document.createElement("div");
            el_menubar.classList.add("hy_menubar");
            el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;";

            //主功能区
            const el_mainContainer=document.createElement("div");
            el_menubar.append(el_mainContainer);
            el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;";
            //主功能区标题
            const el_title=document.createElement("div");
            el_mainContainer.append(el_title);
            el_title.innerText="京东订单助手";
            el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;";
            //导入输入商品按钮
            const el_b3=document.createElement("button");
            el_mainContainer.append(el_b3);
            el_b3.style="width:90%;margin-bottom:5px;";
            el_b3.textContent="检查新订单";
            el_b3.addEventListener("click",(event)=>{doCheckJDOrders()});
            el_b3.classList.add("hy_btn_check_neworder");

            //查询消息显示区
            const el_msg1=document.createElement("div");
            el_mainContainer.append(el_msg1);
            el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;";
            el_msg1.innerText="";
            el_msg1.classList.add("hy_msg1");
            //将助手工具添加到页面
            document.body.insertAdjacentElement("afterBegin",el_menubar);
        }


   //检查新订单

       const doCheckJDOrders=()=>{
            (async()=>{
                console.log('检查京东订单列表页面中的订单是否有新订单');
                msgDisplay(`检查页面中的订单是否有新订单`);
                const el_btn=document.querySelector(".hy_btn_check_neworder");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                const el_btn_arr = document.querySelectorAll('.hy_import_order_btn')||[];
                for(let i=0;i<el_btn_arr.length;i++){
                    el_btn_arr[i].parentNode.removeChild(el_btn_arr[i]);
                }
                const orderDiv = document.querySelector(".order-list-card-table");
                if(orderDiv ==null){
                    return;
                }
                const el_div_ordertitle = orderDiv.querySelectorAll(".card-header")||[];
                let newordernum=0;
                for(let i=0;i<el_div_ordertitle.length;i++){
                    try{
                        msgDisplay(`检查订单${i+1}/${el_div_ordertitle.length}`);
                        let orderno="";
                        try{
                            orderno=el_div_ordertitle[i].querySelector("div.shop-order-id").querySelector('button').innerText;
                        }catch(e){}
                        if(orderno.length==0){
                            break; //没有取得订单号
                        }
                        console.log(orderno);
                        const hycheckOrder = await getHYSMOrderDetail(orderno);
                        console.log(hycheckOrder);
                        if(hycheckOrder.found=="no"){
                            //发现新订单
                            console.log(`发现新订单${orderno}`);
                            const el_button=document.createElement("label");
                            el_button.classList.add("hy_import_order_btn");
                            el_button.style="background:#ffb800;border-style:none";
                            el_button.innerText="新订单";
                            el_div_ordertitle[i].insertAdjacentElement("beforeEnd",el_button);
                            newordernum+=1;
                        }

                    }catch(e){
                        console.error(`检查订单出现错误`);
                        msgDisplay(`检查订单出现错误`);
                        console.error(e);
                    }
                }
                if(el_div_ordertitle.length==0){
                    msgDisplay(`没有订单列表`);
                }else{
                    if(newordernum>0){
                        msgDisplay(`找到新订单${newordernum}个,请导入`);
                    }else{
                        msgDisplay(`没有找到新订单`);
                    }
                }
                if(el_btn){
                    el_btn.removeAttribute("disabled");
                }
            })();
        };


    };
    //-------------------------------------------- 京东墨卡托 ->  ----------------------------------------------------------------------------
    //订单列表页面,检查订单是否为新订单
    const fn_initJDGoodsMenuBar=()=>{
        console.log('进入京东页面');
        if(window !== window.top){
            return;
        }
        let el_menubar=document.querySelector(".hy_menubar");
        if(!el_menubar ){
            console.log('创建京东助手功能菜单');
            // 插件功能区
            el_menubar=document.createElement("div");
            el_menubar.classList.add("hy_menubar");
            el_menubar.style="z-index:9999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;";

            //主功能区
            const el_mainContainer=document.createElement("div");
            el_menubar.append(el_mainContainer);
            el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;";
            //主功能区标题
            const el_title=document.createElement("div");
            el_mainContainer.append(el_title);
            el_title.innerText="商品助手";
            el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;";
           //导入数量输入框
            const el_input=document.createElement("input");
            el_mainContainer.append(el_input);
            el_input.style="width:100%;margin-bottom:5px;";
            el_input.setAttribute("placeholder","请输入导入的商品数");
            el_input.classList.add("hy_input_importgoodsnum");
            //导入输入商品按钮
            const el_b3=document.createElement("button");
            el_mainContainer.append(el_b3);
            el_b3.style="width:90%;margin-bottom:5px;";
            el_b3.textContent="导入商品";
            el_b3.addEventListener("click",(event)=>{doImportGoods();});
            el_b3.classList.add("hy_btn_importjdgoods");
            //查询消息显示区
            const el_msg1=document.createElement("div");
            el_mainContainer.append(el_msg1);
            el_msg1.style="width:90%;color:red;display:block;margin-bottom:5px;";
            el_msg1.innerText="";
            el_msg1.classList.add("hy_msg1");
            //将助手工具添加到页面

            document.body.insertAdjacentElement("afterBegin",el_menubar);
        }
        //提交京东商品到华远后台京东商品库中
       const postJDGoodsToHYSM=(goods)=>{
            return new Promise((resolve,reject)=>{
                const post_data={
                    "mainbrandname":goods.mainBrandName,
                    "maincategorymame":goods.mainCategoryName,
                    "mainunitcode":goods.mainUnitCode,
                    "manufacturercode":goods.manufacturerCode,
                    "productname":goods.productName,
                    "lowestbuy":goods.lowestBuy,
                    "b2bskustate":goods.b2bSkuState,
                    "jdprice":goods.jdPrice,
                    "createdate":timestampToDate(goods.createDate),
                    "jdskuid":goods.jdSkuId,
                    "stockmumber":goods.stockNumber,
                    "jddataid":goods.id,
                };
                //console.log(JSON.stringify(post_data));
                const post_headers={
                    "Content-Type":"application/x-www-form-urlencoded",
                };
               GM_xmlhttpRequest({
                    url:"http://43.143.136.44/hysm/importjdgoods.asp",
                    method:'POST',
                    data:"param="+encodeURIComponent(JSON.stringify(post_data)),
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            const response=JSON.parse(event.responseText);
                            if(response.returncode==0){
                                resolve();
                            }else{
                                reject(response);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
       }
       //点击导入商品按钮,导入前n条商品
       const doImportGoods=()=>{
            (async()=>{
                console.log('开始导入商品');
                const el_btn=document.querySelector(".hy_btn_importjdgoods");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                let goodsnum=0;
                const el_input = document.querySelector('.hy_input_importgoodsnum');
                if (!isNaN(el_input.value)){
                    goodsnum = parseInt(el_input.value);
                }
                console.log(goodsnum);
                if(goodsnum>0){
                    let uploadGoodsFailNum=0;
                    let uploadGoodsSucessNum=0;
                    msgDisplay(`正在准备要上传的商品列表`);
                    const goodsList = await getJDGoodsList(0,goodsnum);
                    console.log(goodsList);
                    const alldatanum =goodsList.datas.length;
                    for(let i=0;i< alldatanum;i++){
                        const goods = goodsList.datas[i];
                        try{
                            await postJDGoodsToHYSM(goods);
                            uploadGoodsSucessNum+=1;
                            console.log(`成功上传${goods.jdSkuId} (${i}/${alldatanum})`);
                            msgDisplay(`成功上传${goods.jdSkuId} (${i}/${alldatanum})`);
                        }catch(e){
                            uploadGoodsFailNum+=1;
                            console.error(`提交出现错误${goods.jdSkuId} (${i}/${alldatanum})`);
                            msgDisplay(`提交出现错误${goods.jdSkuId} (${i}/${alldatanum})`);
                            console.error(e);
                        }
                    }
                    msgDisplay(`导入完毕,成功${uploadGoodsSucessNum}条 失败${uploadGoodsFailNum}条`);
                }else{
                    console.log('请输入导入数量');
                    msgDisplay('请输入导入数量');
                }
                if(el_btn){
                    el_btn.removeAttribute("disabled");
                }

            })();
        };

        //取得商品列表
        const getJDGoodsList=(start,length)=>{
            return new Promise((resolve,reject)=>{
                let post_data=`draw=2&start=${start}&length=${length}&productMode=ICF&isSearch=true`;
                console.log(post_data);
                const post_headers={
                    "Content-Type":"application/x-www-form-urlencoded;charset=UTF-8",
                };
                GM_xmlhttpRequest({
                    url:"https://supadmin.jd.com/jdiSupplyProduct/list.do",
                    method:'POST',
                    data:JSON.stringify(post_data),
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){

                                const response=JSON.parse(event.responseText);
                                if(response.responseCode=="200"){
                                    resolve(response.responseData);
                                }else{
                                    console.log('取数据错误');
                                    reject(response.responseMessage);
                                }
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };


    }
        //-------------------------------------------- 石油易采->销售订单 ----------------------------------------------------------------------------
    //订单列表页面,检查订单是否为新订单
    const fn_initOrderList=()=>{
        console.log('进入石油e采订单列表页面');
        let el_menubar=document.querySelector(".hy_menubar");
        if(!el_menubar){
            // 插件功能区
            el_menubar=document.createElement("div");
            el_menubar.classList.add("hy_menubar");
            el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;";

            //主功能区
            const el_mainContainer=document.createElement("div");
            el_menubar.append(el_mainContainer);
            el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;";
            //主功能区标题
            const el_title=document.createElement("div");
            el_mainContainer.append(el_title);
            el_title.innerText="订单助手";
            el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;";
            //导入输入商品按钮
            const el_b3=document.createElement("button");
            el_mainContainer.append(el_b3);
            el_b3.style="width:90%;margin-bottom:5px;";
            el_b3.textContent="检查新订单";
            el_b3.addEventListener("click",(event)=>{doCheckOrders()});
            el_b3.classList.add("hy_btn_check_neworder");
            //查询消息显示区
            const el_msg1=document.createElement("div");
            el_mainContainer.append(el_msg1);
            el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;";
            el_msg1.innerText="";
            el_msg1.classList.add("hy_msg1");
            //将助手工具添加到页面
            document.body.insertAdjacentElement("afterBegin",el_menubar);
        }

        //取得订单详情
        const getOrderDetail=(orderno)=>{
            return new Promise((resolve,reject)=>{
                const post_headers={
                    "Content-Type":"application/json;charset=UTF-8",
                    "Authorization":getAuthorization(),
                };
                GM_xmlhttpRequest({
                    url:`https://benefits.soluxemall.com/proxy/order/seller/order/getPurchaseInfo?platformId=20&orderNo=${orderno}&handle=2`,
                    method:'GET',
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){
                                const response=JSON.parse(event.responseText);
                                if(response.code=="0"){
                                    resolve(response.data);
                                }else{
                                    reject(response.msg);
                                }
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };

        //导入新订单
       const doImportOrders=(orderno)=>{
            (async()=>{
            //开始导入订单
                console.log(`开始导入订单${orderno}`);
                const ecaiorder=await getOrderDetail(orderno);
                console.log(ecaiorder);
                const order={
                    orderfrom:0,
                    orderbh:ecaiorder.nyoneOrderNo,
                    ordertime:ecaiorder.orderTime,
                    company:"华油阳光(北京)商贸有限责任公司",
                    personname:ecaiorder.receiverName,
                    tell:ecaiorder.mobile,
                    address:ecaiorder.address,
                    note:(ecaiorder.remark||"").replace("null",""),
                    orderamount:ecaiorder.totalPrice,
                };
                let has_error=false;
                let has_goods=false;
                let totalAmount=0;
                let goods_index=0;
                let errmsg="";
                let goodsItems=[];
                for(let i=0;i<ecaiorder.subOrderInfoResultVoList[0].subSkuDemandInfo.length;i++){
                    const ecaiGoodsitem=ecaiorder.subOrderInfoResultVoList[0].subSkuDemandInfo[i];
                    const ecaiGoodsdetail = await getGoodsDetail(ecaiGoodsitem.skuId);
                    console.log(ecaiGoodsdetail);
                    has_goods=true;
                    let goodsitem= new Object;
                    goodsitem.goodsid=ecaiGoodsitem.skuId; //商品sku
                    goodsitem.goodsBrand=ecaiGoodsdetail.brandCnName; //商品品牌
                    goodsitem.goodsname=ecaiGoodsdetail.shopBaseSkuName; //商品名称
                    goodsitem.goodsOrderPrice=ecaiGoodsitem.sellPrice; //商品单价
                    goodsitem.goodsNum=ecaiGoodsitem.skuNums; //采购数量
                    goodsitem.goodsUnit=ecaiGoodsdetail.sourceSkuUnit; //商品单位
                    totalAmount+=ecaiGoodsitem.sellPrice*ecaiGoodsitem.skuNums;
                    goods_index++;
                    goodsItems.push(goodsitem);
                }
                order.goodsItems = goodsItems;
                totalAmount = totalAmount.toFixed(2);
                order.orderamount=totalAmount;
                order.ordergoodsnum=goods_index;
                if(totalAmount!=ecaiorder.totalPrice){
                    console.log(`计算出的订单金额:${totalAmount}- ${ecaiorder.totalPrice}`);
                    console.log('订单金额对比错误');
                    errmsg = `订单金额对比错误:${totalAmount}- ${ecaiorder.totalPrice}`;
                    has_error =true;

                }
                if(!has_goods){
                    has_error =true;
                    errmsg = '订单中没有商品信息';
                }
                //构造提交的表单
                if(!has_error){
                    postDataToHYSM(order);
                }else{
                    console.log(`导入订单失败,${errmsg}`);
                    msgDisplay(`导入订单失败,${errmsg}`);
                }

            })();
        };

   //检查新订单

       const doCheckOrders=()=>{
            (async()=>{
                console.log('检查页面中的订单是否有新订单');
                msgDisplay(`检查页面中的订单是否有新订单`);
                const el_btn=document.querySelector(".hy_btn_check_neworder");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                const el_btn_arr = document.querySelectorAll('.hy_import_order_btn')||[];
                for(let i=0;i<el_btn_arr.length;i++){
                    el_btn_arr[i].parentNode.removeChild(el_btn_arr[i]);
                }
                const orderDiv = document.querySelector(".layui-tab-item.layui-show");
                const trTitleList = orderDiv.querySelectorAll("tr.trTitle")||[];
                let newordernum=0;
                for(let i=0;i<trTitleList.length;i++){
                    try{
                        msgDisplay(`检查订单${i+1}/${trTitleList.length}`);
                        const orderno=trTitleList[i].querySelector("input.table-checkbox").getAttribute('data-order-no');
                        const order=await getOrderDetail(orderno);
                        console.log(order);
                        const hycheckOrder = await getHYSMOrderDetail(order.nyoneOrderNo);
                        console.log(hycheckOrder);
                        if(hycheckOrder.found=="no" ){
                            //发现新订单
                            console.log(`发现新订单${orderno}-${order.nyoneOrderNo}`);
                            const el_button=document.createElement("button");
                            el_button.classList.add("hy_import_order_btn");
                            el_button.style="background:#ffb800;cursor: pointer;border-style:none";
                            el_button.innerText="导入华远系统";
                            el_button.addEventListener("click",(event)=>{
                                            const el_button=event.target;
                                            const order_id=el_button.dataset.orderid
                                            doImportOrders(orderno);
                                        });
                            const tdarray= trTitleList[i].querySelectorAll("td")||[];
                            if (tdarray.length>0){
                                tdarray[tdarray.length-1].insertAdjacentElement("beforeEnd",el_button);
                            }
                            newordernum+=1;
                        }

                    }catch(e){
                        console.error(`检查订单出现错误`);
                        msgDisplay(`检查订单出现错误`);
                        console.error(e);
                    }
                }
                if(trTitleList.length==0){
                    msgDisplay(`没有订单列表`);
                }else{
                    if(newordernum>0){
                        msgDisplay(`找到新订单${newordernum}个,请导入`);
                    }else{
                        msgDisplay(`没有找到新订单`);
                    }
                }
                if(el_btn){
                    el_btn.removeAttribute("disabled");
                }
            })();
        };
    }

//-------------------------------------------- 石油易采->供应商中心->商品管理->能源一号网 ----------------------------------------------------------------------------

    //初始化添加商品页面
    const fn_initNumberOne=()=>{
        let el_menubar=document.querySelector(".hy_menubar");
        if(!el_menubar){
            // 插件功能区
            el_menubar=document.createElement("div");
            el_menubar.classList.add("hy_menubar");
            el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;";

            //主功能区
            const el_mainContainer=document.createElement("div");
            el_menubar.append(el_mainContainer);
            el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;";


            //主功能区标题
            const el_title=document.createElement("div");
            el_mainContainer.append(el_title);
            el_title.innerText="上架助手";
            el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;";
           //商品sku输入框
            const el_input=document.createElement("input");
            el_mainContainer.append(el_input);
            el_input.style="width:100%;margin-bottom:5px;";
            el_input.setAttribute("placeholder","填入商品9开头sku");
            el_input.classList.add("hy_input_shopskucodes");
            //导入输入商品按钮
            const el_b3=document.createElement("button");
            el_mainContainer.append(el_b3);
            el_b3.style="width:90%;margin-bottom:5px;";
            el_b3.textContent="上传商品";
            el_b3.addEventListener("click",(event)=>{doUploadGoodsListBySKU()});
            el_b3.classList.add("hy_btn_import_goodsbysku");

            //导入全部商品按钮
            const el_b1=document.createElement("button");
            el_mainContainer.append(el_b1);
            el_b1.style="width:90%;margin-bottom:5px;";
            el_b1.textContent="上传全部商品";
            el_b1.addEventListener("click",(event)=>{doUploadGoodsListByPage(1,200)});
            el_b1.classList.add("hy_btn_importALL_goods");
            //上传响应商品按钮
            const el_b2=document.createElement("button");
            el_mainContainer.append(el_b2);
            el_b2.style="width:90%;margin-bottom:5px;";
            el_b2.textContent="上传响应商品";
            el_b2.addEventListener("click",(event)=>{doUploadApplyGoodsListByPage(1,200)});
            el_b2.classList.add("hy_btn_importapply_goods");
            //查询消息显示区
            const el_msg1=document.createElement("div");
            el_mainContainer.append(el_msg1);
            el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;";
            el_msg1.innerText="";
            el_msg1.classList.add("hy_msg1");

            //完成信息显示区
            const el_msg2=document.createElement("div");
            el_mainContainer.append(el_msg2);
            el_msg2.style="width:100%;color:red;display:none;margin-bottom:5px;color:green";
            el_msg2.innerText="完成!可点击保存提交产品";
            el_msg2.classList.add("hy_msg2");

        //将助手工具添加到页面
        document.body.insertAdjacentElement("afterBegin",el_menubar);
        };

        //取得商品列表
        const getGoodsListByPage=(pageNum,pageSize,status)=>{
            return new Promise((resolve,reject)=>{
                let post_data={pageNum: pageNum, pageSize: pageSize}
                if(status>0 ){
                    post_data.status=status;
                };
                //console.log(post_data);
                const post_headers={
                    "Content-Type":"application/json;charset=UTF-8",
                    "Authorization":getAuthorization(),
                };
                GM_xmlhttpRequest({
                    url:"https://benefits.soluxemall.com/proxy/item-center/energynet/platform/shopDataFilling/selectPageListByStatus",
                    method:'POST',
                    data:JSON.stringify(post_data),
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            if(event.status==200){

                                const response=JSON.parse(event.responseText);
                                if(response.code=="0"){
                                    resolve(response.data);
                                }else{
                                    reject(response.msg);
                                }
                            }else{
                                reject(event);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        };



        //两次请求的最小间隔时间
        const minReuestInterval=2000;

        //输入的sku商品上传
        const doUploadGoodsListBySKU=()=>{
            (async()=>{
                const el_btn=document.querySelector(".hy_btn_import_goodsbysku");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                const shopSkuId=document.querySelector(".hy_input_shopskucodes").value;
                try{
                    const goods=await getGoodsDetail(shopSkuId);
                    await postGoodsToHYMS(goods);
                    console.log(`已上传商品${shopSkuId}`)
                     msgDisplay(`已上传商品${shopSkuId}`);
                }catch(e){
                    console.error(`提交商品出现错误${shopSkuId}`);
                    msgDisplay(`提交商品出现错误${shopSkuId}`);
                    console.error(e);
                }
                if(el_btn){
                    el_btn.removeAttribute("disabled");
                }
            })();
        };
       let uploadApplyGoodsSucessNum=0; //成功上传数目
       let uploadApplyGoodsFailNum=0; //失败上传数目
       //遍历响应的商品并上传响应信息,采用递归方式遍历所有页
        const doUploadApplyGoodsListByPage=(pn,ps)=>{
            (async()=>{
                const el_btn=document.querySelector(".hy_btn_importapply_goods");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                const response=await getGoodsListByPage(pn,ps,3);
                //console.log(response);
                const pageNum=response.pageNum;
                const pageSize=response.pageSize;
                const totalPageCount=response.totalPageCount;
                const totalCount=response.totalCount;
                const result=response.result;
                for(let i=0;i<result.length;i++){
                    const t0=(new Date()).getTime();
                    const currentNum=(pageNum-1)*pageSize+i+1;
                    const shopSkuId=result[i].shopSkuId;
                    try{
                        await postApplyGoodsToHYMS(result[i]);
                        uploadApplyGoodsSucessNum+=1;
                        console.log(`已上传响应商品${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`)
                    }catch(e){
                        uploadApplyGoodsFailNum+=1;
                        console.error(`提交响应商品出现错误${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`);
                        console.error(result[i]);
                        console.error(e);
                    }
                    const t1=(new Date()).getTime();
                    if(t1-t0<minReuestInterval){
                        const sleepSeconds=(minReuestInterval-(t1-t0))/1000;
                        //console.log(`sleep ${sleepSeconds}秒`);
                        //await sleep(sleepSeconds);
                    }
                     msgDisplay(`上传成功${uploadApplyGoodsSucessNum}条失败${uploadApplyGoodsFailNum}条`);
                }
                if(pageNum<totalPageCount){
                    doUploadApplyGoodsListByPage(pageNum+1,pageSize);
                }else{
                    console.log("上传结束");
                    msgDisplay(`上传成功${uploadApplyGoodsSucessNum}条失败${uploadApplyGoodsFailNum}条 上传结束` );
                    if(el_btn){
                        el_btn.removeAttribute("disabled");
                    }
                }

            })();
        };
       let uploadGoodsSucessNum=0; //成功上传数目
       let uploadGoodsFailNum=0; //失败上传数目
        //遍历商品并上传,采用递归方式遍历所有页
        const doUploadGoodsListByPage=(pn,ps)=>{
            (async()=>{
                const el_btn=document.querySelector(".hy_btn_importALL_goods");
                if(el_btn){
                    el_btn.setAttribute("disabled",true);
                }
                const response=await getGoodsListByPage(pn,ps,0);
                const pageNum=response.pageNum;
                const pageSize=response.pageSize;
                const totalPageCount=response.totalPageCount;
                const totalCount=response.totalCount;
                const result=response.result;
                for(let i=0;i<result.length;i++){
                    const t0=(new Date()).getTime();
                    const currentNum=(pageNum-1)*pageSize+i+1;
                    const shopSkuId=result[i].shopSkuId;
                    try{

                        const goods=await getGoodsDetail(shopSkuId);
                        await postGoodsToHYMS(goods);
                        console.log(`已上传商品${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`)
                        uploadGoodsSucessNum +=1;
                    }catch(e){
                        console.error(`提交商品出现错误${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`);
                        console.error(result[i]);
                        uploadGoodsFailNum +=1;
                        console.error(e);
                    }
                    msgDisplay(`上传成功${uploadGoodsSucessNum}条失败${uploadGoodsFailNum}条`);
                    const t1=(new Date()).getTime();
                    if(t1-t0<minReuestInterval){
                        const sleepSeconds=(minReuestInterval-(t1-t0))/1000;
                        //console.log(`sleep ${sleepSeconds}秒`);
                        await sleep(sleepSeconds);
                    }

                }
                if(pageNum<totalPageCount){
                    doUploadGoodsListByPage(pageNum+1,pageSize);
                }else{
                    msgDisplay(`上传成功${uploadGoodsSucessNum}条失败${uploadGoodsFailNum}条 上传结束`);
                    console.log("上传结束");
                    if(el_btn){
                        el_btn.removeAttribute("disabled");
                    }
                }
            })();
        };

        //上传商品响应到HYMS
        const postApplyGoodsToHYMS=(goods)=>{
            return new Promise((resolve,reject)=>{
                //console.log(goods);
                const post_data={
                    "isagree":1,
                    "sellarea":goods.areaNames||[],
                    "agreeprice":goods.supplierSupplyPrice,
                    "shopSkuId":goods.shopSkuId
                };
                //console.log("post_data="+JSON.stringify(post_data));
                const post_headers={
                    "Content-Type":"application/x-www-form-urlencoded",
                };
               GM_xmlhttpRequest({
                    url:"http://43.143.136.44/hysm/importapplygoods.asp",
                    method:'POST',
                    data:"param="+encodeURIComponent(JSON.stringify(post_data)),
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            const response=JSON.parse(event.responseText);
                            if(response.returncode==0){
                                resolve();
                            }else{
                                reject(response);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        }


        //上传商品到HYMS
        const postGoodsToHYMS=(goods)=>{
            return new Promise((resolve,reject)=>{
                //console.log(goods);
                let goodsimgs = new Array();
                let dataapplyItemAnnexRequestVoList = goods.applyItemAnnexRequestVoList||[];
                for(let i=0;i<dataapplyItemAnnexRequestVoList.length;i++){
                    goodsimgs.push(dataapplyItemAnnexRequestVoList[i].annexUrl);
                }
                const post_data={
                    "brandCnName":goods.brandCnName,
                    "brandEnName":goods.brandEnName,
                    "detail":goods.detail,
                    "energySellPrice":goods.energySellPrice,
                    "goodsCode":goods.goodsCode,
                    "goodsName":goods.goodsName,
                    "itemCode":goods.itemCode,
                    "marketPrice":goods.marketPrice,
                    "param":goods.param,
                    "paramJson":goods.paramJson,
                    "shopSkuId":goods.shopSkuId,
                    "shopBaseSkuName":goods.shopBaseSkuName,
                    "sourceSkuUnit":goods.sourceSkuUnit,
                    "taxCode":goods.taxCode,
                    "taxRate":goods.taxRate,
                    "sellPrice":goods.sellPrice,
                    "goodsimgs":goodsimgs||[],
                };
                console.log(JSON.stringify(post_data));
                const post_headers={
                    "Content-Type":"application/x-www-form-urlencoded",
                };
               GM_xmlhttpRequest({
                    url:"http://43.143.136.44/hysm/importenergynetgoods.asp",
                    method:'POST',
                    data:"param="+encodeURIComponent(JSON.stringify(post_data)),
                    headers:post_headers,
                    onload:(event)=>{
                        try{
                            const response=JSON.parse(event.responseText);
                            if(response.returncode==0){
                                resolve();
                            }else{
                                reject(response);
                            }
                        }catch(e){
                            reject(e);
                        }
                    },
                    onerror:(event)=>{
                        reject(event);
                    }
                });
            });
        }

    };


    /*----------------------------------访问页面到功能入口的路由---------------------------------------------*/
    const hyMenuBarShow=()=>{
        let el_menubar=document.querySelector(".hy_menubar");
        if(el_menubar){
            el_menubar.parentNode.removeChild(el_menubar);
        }
        const href=document.location.href;
        const match=[
            {
                "re":/shop-view\/goods\//,
                "fn":fn_initNumberOne,
            },
            {
                "re":/shop-view\/order\/order-list/,
                "fn":fn_initOrderList,
            },
            {
                "re":/supadmin.jd.com/,
                "fn":fn_initJDGoodsMenuBar,
            },
            {
                "re":/shop.jd.com\/jdm\/trade\/orders\/order-list/,
                "fn":fn_initJDOrderMenuBar,
            },
            {
                "re":/shop.jd.com\/jdm\/trade\/order\/orderDetail/,
                "fn":fn_initJDOrderDetailMenuBar,
            },
            {
                "re":/https:\/\/www2.energyahead.com\/html\/supermarket.html/,
                "fn":fn_initEnergyNetMenuBar,
            },
        ];


        const param={};
        (href.match(/(?<=[\?\&])([^\?\&]+)/g)||[]).forEach((s)=>{
            let p=s.indexOf("=");
            p=p>=0?p:s.length;
            const key=s.substring(0,p);
            const value=s.substring(p+1);
            if(key){
                param[key]=value;
            }
        });
        for(let i=0;i<match.length;i++){
            const m=match[i];
            if(m.re.test(href)){
                m.fn({param:param});
                break;
            }
        }
    }
    window.addEventListener('popstate', function(event) {
        var currentUrl = document.location.href;
        console.log('URL changed to: ' + currentUrl);
        hyMenuBarShow();

    });
    console.log("上架助手已启动");
    hyMenuBarShow();

})();

QingJ © 2025

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