订单管理

方便的下载淘宝系和京东订单信息

目前為 2020-04-30 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         订单管理
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  方便的下载淘宝系和京东订单信息
// @author       You
// @grant        none
// @include      https://buyertrade.taobao.com/*
// @include      https://tradearchive.taobao.com/*
// @include      https://trade.tmall.com/*
// @include      https://trade.taobao.com/*
// @include      https://details.jd.com/*
// @require      https://unpkg.com/[email protected]/dist/ajaxhook.min.js

// ==/UserScript==
window.parse_single_order = function(order) {
    var res = {}
    var pure_text = order.textContent;
    var pattern = /(\d{4}-\d{2}-\d{2})订单号: (\d{18})/;
    if (pattern.exec(pure_text)){
        var order_date = pure_text.match(pattern)[1];
        var order_id = pure_text.match(pattern)[2];
    } else{
        console.log(pure_text);
        console.log("date and ID not found");
        return 0;
    }
    var mini_id = 0;
    while(1){
        var count = ".0.7:$order-" + order_id + ".$" + order_id + ".0.1:1:0.$" + mini_id + ".$2.0.0";
        var product = ".0.7:$order-" + order_id + ".$" + order_id + ".0.1:1:0.$" + mini_id + ".$0.0.1.0.0.1";
        var price = ".0.7:$order-" + order_id + ".$" + order_id + ".0.1:1:0.$" + mini_id + ".$1.0.1.1";
        var count_query = order.querySelector("p[data-reactid='" + count + "']");
        var product_query = order.querySelector("span[data-reactid='" + product + "']");
        var price_query = order.querySelector("span[data-reactid='" + price + "']");
        mini_id += 1;
        if(count_query === null | product_query === null | price_query === null){
            break;
        }
        var uprice_str = price_query.textContent
        var count_str = count_query.textContent
        res[order_id + mini_id] = ["NO." + order_id, "D." + order_date, product_query.textContent, uprice_str, count_str, parseFloat(uprice_str) * parseFloat(count_str)]
        //{"id": order_id, "date": order_date, "product": product_query.textContent, "uprice": uprice_str, "count": count_str, "tprice": parseFloat(uprice_str) * parseFloat(count_str)}
    }
    return res
}

window.parse_jd_item = function(){
    var head_text = document.getElementsByClassName("breadcrumb")[0].innerText
    var order_id = head_text.match(/\d{10,}/)[0];
    console.log(order_id)
    var goods_list_ = document.getElementsByClassName("goods-list")[0]
    var detail_tbody = goods_list_.getElementsByTagName("tbody")[0]
    for (let tr_element of detail_tbody.getElementsByTagName("tr")){
        if (tr_element.className == "J-yunfeixian"){
            continue;
        }
        ptext = tr_element.innerText;
        detail = ptext.match(/\n(.+?)\n/)[1];
        pattern = /\t(\d{12})\t(.+?)\t(\d+)\t(\d+)/
        product_id = ptext.match(pattern)[1]
        uprice = ptext.match(pattern)[2]
        count = ptext.match(pattern)[3]
        if (/¥/.exec(uprice)){
            uprice_num = parseFloat(uprice.match(/\d+\.\d{2}/)[0]);
        } else {
            uprice_num = 0.0;
        }
        
        window.jd_detail_results[product_id] = [detail, "NO." + product_id, uprice, count, parseFloat(count) * uprice_num]
    }
    window.jd_detail_results["paid"] = document.getElementsByClassName("txt count")[0].innerText

}

window.add_buttons = function(main_element, onclick_func={}, value="未指定按钮", width="60px", height="60px") {
    var button = document.createElement("input"); //创建一个input对象(提示框按钮)
    button.setAttribute("type", "button");
    button.setAttribute("value", value);
    button.style.width = width;
    button.style.height = height;
    button.style.align = "center";
    button.style.marginLeft = "250px";
    button.style.marginBottom = "10px";
    button.style.background = "#b46300";
    button.style.border = "1px solid #b46300";//52
    button.style.color = "white";
    button.onclick = function() {
        onclick_func()
    }
    main_element.appendChild(button);
    main_element.insertBefore(button, main_element.childNodes[0]);
}


window.add_items_to_list = function() {
    var items_list = document.getElementsByClassName("js-order-container");
    var item
    for (let item of items_list) {
        var single_res = window.parse_single_order(item)
        var index
        for (index in single_res){
            window.results[index] = single_res[index]
        }
    }
};

window.add_ali_to_list = function() {
    var items_list = document.getElementsByClassName("js-order-container");
    var item
    for (let item of items_list) {
        var single_res = window.parse_single_order(item)
        var index
        for (index in single_res){
            window.results[index] = single_res[index]
        }
    }
};

window.download_csv = function() {
    window.add_items_to_list();
    let csvContent = "data:text/csv;chabutton_downloadrset=utf-8,";
    var header_csv = ["订单号", "下单日期", "商品明细", "单价", "数量", "总价"]
    let row = header_csv.join(",");
    csvContent += row + "\r\n";

    for (let index in window.results) {
        let row = window.results[index].join(",");
        csvContent += row + "\r\n";
    }

    var encodedUri = encodeURI(csvContent);
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", "my_data.csv");
    document.body.appendChild(link); // Required for FF
    link.click();
}

window.download_jd_csv = function() {
    let csvContent = "data:text/csv;chabutton_downloadrset=utf-8,";
    var header_csv = ["商品", "商品编号", "京东价", "商品数量", "总价"]
    let row = header_csv.join(",");
    csvContent += row + "\r\n";
    console.log(window.jd_detail_results)
    var paid = window.jd_detail_results["paid"]
    console.log(paid)
    for (let index in window.jd_detail_results) {
        if (index == "paid"){
            continue;
        }
        let row = window.jd_detail_results[index].join(",");
        csvContent += row + "\r\n";
    }

    
    csvContent += "应付总额," + paid  + "\r\n";
    var encodedUri = encodeURI(csvContent);
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", "my_data.csv");
    document.body.appendChild(link); // Required for FF
    link.click();
}

window.add_jd_detail_button = function() {
    var main_element = document.getElementById("container");
    window.add_buttons(main_element, window.download_jd_csv, "下载当前页面", "160px")
}



window.add_tb_bought_buttons = function() {
    'use strict';
    var main_element = document.getElementById("J_bought_main");

    window.add_buttons(main_element, window.download_csv, "下载", "160px")
    window.add_buttons(main_element, window.add_items_to_list, "添加本页订单", "160px")

}



window.add_tb_bought_buttons = function() {
    'use strict';
    var main_element = document.getElementById("app-content");

    window.add_buttons(main_element, window.download_ali_csv, "下载", "160px")
    window.add_buttons(main_element, window.add_ali_to_list, "添加本页订单", "160px")

}

window.tb_generate_print_page = function() {
    console.log("wtf")
    document.body.innerHTML = document.getElementsByClassName('app-mod__tabs-container___iwi0I')[0].innerHTML;
    document.body.style.width = "950px"
    document.body.style.marginLeft = "auto"
    document.body.style.marginRight = "auto"

}

window.print_tb_detail_buttons = function(){
    'use strict';
    var main_element = document.getElementById("content");

    window.add_buttons(main_element, window.tb_generate_print_page, "生成打印页面", "160px")

}


window.tm_generate_print_page = function() {
    document.body.innerHTML=document.getElementById('appDetailPanel').innerHTML + "</br>" + document.getElementById('appOrders').innerHTML + "</br>" + document.getElementById('appAmount').innerHTML;
}

window.print_tm_detail_buttons = function() {
    'use strict';
    var main_element = document.getElementById("content");
    //main_element, onclick_func = {}, value="未指定按钮", width="60px", height="60px"
    window.add_buttons(main_element, window.tm_generate_print_page, "生成打印页面", "160px")

}

window.alibaba = function() {
    window.ali_res = {};
    window.add_ali_bought_buttons();
}

window.tb_bought_page = function(){
    window.results = {};
    window.add_tb_bought_buttons()
}

window.tb_detail_page = function() {
    window.print_tb_detail_buttons();
}

window.tm_detail_page = function(){
    window.print_tm_detail_buttons();
}

window.jd_detail_page = function(){
    window.parse_jd_item()
    window.add_jd_detail_button();
}

window.printme = function() {
    document.body.innerHTML=document.getElementById('appDetailPanel').innerHTML+'<br/>'+document.getElementById('appOrders').innerHTML + '<br/>'+document.getElementById('appAmount').innerHTML;
    setTimeout(window.print, 3000) ;
};

var re_tb_bought = /buyertrade\.taobao\.com\/trade/g;
var re_tb_tradearchive = /tradearchive\.taobao\.com/g
var re_tm_detail = /trade\.tmall\.com\/detail/g
var re_tb_detail = /trade\.taobao\.com\/detail/g
var re_jd_detail = /details\.jd\.com/g


if (re_tb_bought.exec(document.URL)) {
    window.tb_bought_page()
    console.log("tb_bought_page")
}

if (re_tb_detail.exec(document.URL)){
    window.tb_detail_page()
    console.log("tb_detail_page")
}

if (re_tm_detail.exec(document.URL)){
    window.tm_detail_page()
    console.log("tm_detail_page")
}

if (re_jd_detail.exec(document.URL)){
    window.jd_detail_results = {}
    window.jd_detail_page()
    console.log("tm_detail_page")
}