Greasy Fork

Greasy Fork is available in English.

抖音小店订单管理3.3

方便抖音订单查看,必须要打开抖音小店的订单管理界面,才能显示

当前为 2021-10-09 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         抖音小店订单管理3.3
// @namespace    大师兄
// @match        *://fxg.jinritemai.com/ffa/morder/order/list
// @date         05/27/2021
// @version      3.3
// @author       大师兄 [email protected]
// @description  方便抖音订单查看,必须要打开抖音小店的订单管理界面,才能显示
// @icon         https://mms0.baidu.com/it/u=685985501,228922170&fm=27&gp=0.jpg&fmt=auto
// @note         2.5  @updateURL/@installURL/@downloadURL http://greasyfork.icu/zh-CN/scripts/431480
// @require      https://code.jquery.com/jquery-3.6.0.min.js
// @require      http://greasyfork.icu/scripts/433637-datatables-1-11-3/code/DataTables%201113.js?version=977644
// @resource     dashixiongCSS https://gitee.com/da-shixiong/ajax/raw/master/hs/dataTables/min.css
// @grant        GM_addStyle
// @grant        GM_getResourceText
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
//配置块里添加上面两个grant

// ==/UserScript==
(function() {
    "use strict";

    GM_addStyle(GM_getResourceText("dashixiongCSS"));
    var dsx = {
        formatDate: function(data) {
            //时间戳转格式
            let timestamp = new Date(data * 1000);
            let year = timestamp.getFullYear();
            let month = timestamp.getMonth() + 1;
            let date = timestamp.getDate();
            let hour = timestamp.getHours();
            let minute = timestamp.getMinutes();
            let second = timestamp.getSeconds();
            return (year + "-" + th(month) + "-" + th(date) + " " + th(hour) + ":" + th(minute) + ":" + th(second));
            function th(num) {
                return num < 10 ? "0" + num : num;
            }
        },

        Toast: function(msg, duration) {
            duration = isNaN(duration) ? 3000 : duration;
            let m = document.createElement('div');
            m.innerHTML = msg;
            m.style.cssText = "max-width:60%;min-width: 150px;padding:0 14px;height: 40px;color: rgb(255, 255, 255);line-height: 40px;text-align: center;border-radius: 4px;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;";
            document.body.appendChild(m);
            setTimeout(function() {
                let d = 0.5;
                m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
                m.style.opacity = '0';
                setTimeout(function() {
                    document.body.removeChild(m)
                },d * 1000);
            },duration);
        },

        tianjiawangluojianting:function (callback) {
            window.addEventListener('ajaxReadyStateChange', function(e){
                //console.log(e.detail, e.detail._byted_method, e.detail.responseURL, e.detail.responseText, e.detail._data); // XMLHttpRequest Object
                if(e.detail.readyState == 4 && e.detail.status >= 200 && e.detail.status < 300){
                    callback(e);
                }
            });
        },

        panduanshuju:function(e){
            if(e.detail.responseURL.indexOf("/fxg.jinritemai.com/api/order/searchlist?tab=all") != -1){
                let obj = JSON.parse(e.detail.responseText).data;
                console.log("监听到的订单数据是:",obj);
                dsx.chulidingdanshuju(obj);
            }else if(e.detail.responseURL.indexOf("/fxg.jinritemai.com/api/order/receiveinfo") != -1){
                let obj = JSON.parse(e.detail.responseText);
                console.log("监听到的用户数据是:",obj);

            };
        },


        shuju:{},

        saveshuju:function(obj){
            dsx.shuju = obj;
            GM_setValue("dingdanshuju", dsx.shuju);
        },

        getshuju:function(){
            dsx.shuju = GM_getValue("dingdanshuju", "没有储存数据");
            return dsx.shuju;
        },

        tiqushuju:function(obj,i) {
            let kehunicheng = obj[i].user_nickname;
            let dingdanjine = obj[i].pay_amount / 100;
            let dingdanzhuangtai = obj[i].order_status_info.order_status_text;
            let xiadanshijian = this.formatDate(obj[i].create_time);
            let dingdanbianhao = obj[i].shop_order_id;
            let lianjiebiaoti = obj[i].product_item[0].product_name;
            let kehushoujianren = obj[i].receiver_info.post_receiver;
            let shoujihao = obj[i].receiver_info.post_tel;
            let dizhi = obj[i].receiver_info.post_addr.province.name + obj[i].receiver_info.post_addr.city.name + obj[i].receiver_info.post_addr.town.name + obj[i].receiver_info.post_addr.street.name;
            let daihuodaren;
            try{daihuodaren = obj[i].product_item[0].properties[2].text}catch(e){daihuodaren = "没有"};
            return {kehunicheng:kehunicheng,dingdanjine:dingdanjine,dingdanzhuangtai:dingdanzhuangtai,xiadanshijian:xiadanshijian,dingdanbianhao:dingdanbianhao,lianjiebiaoti:lianjiebiaoti,kehushoujianren:kehushoujianren,shoujihao:shoujihao,dizhi:dizhi,daihuodaren:daihuodaren};
        },

        duquhuizhidingdanshuju:function(){
            let obj = dsx.getshuju();
            if(obj !== "没有储存数据"){
                dsx.shaixuanshujuhuizhibiaoge(obj);
            };
        },

        shaixuanshujuhuizhibiaoge:function(obj){
            let shuzu = [];
            let dlength = obj.length;
            for (let i = 0; i < dlength; i++) {
                let d = dsx.tiqushuju(obj,i);
                shuzu[i] = [dlength-i,d.kehunicheng,d.dingdanjine,d.dingdanzhuangtai,d.xiadanshijian,d.lianjiebiaoti,d.dingdanbianhao];
            };
            dsx.huizhibiaoge([{ title: "序号" },{ title: "昵称" },{ title: "金额" },{ title: "状态" },{ title: "下单时间" },{ title: "链接标题" },{ title: "订单编号" }],shuzu);
        },



        table:{},

        huizhibiaoge : function(datehead,dataSet) {
            dsx.table = $('#dashixiongtable').html(``).DataTable({
                data: dataSet,
                columns: datehead,
                "orderFixed": [ 0, 'desc' ],//第一列降序
                //scrollY: 300,
                //scrollCollapse: true,
                language: {
                    lengthMenu : "每页显示 _MENU_记录",
                    zeroRecords : "没有匹配的数据",
                    info : "显示 _START_ - _END_ 条/共 _TOTAL_ 条",
                    infoEmpty : "没有符合条件的记录",
                    search : "查找",
                    infoFiltered : "(从 _MAX_条记录中过滤)",
                    paginate : { "first" : "首页 ", "last" : "末页", "next" : "下一页", "previous" : "上一页"}
                },
                "search": {
                    "regex": true
                },
                "scrollY": "600px",
                "scrollCollapse": true,
                "paging": false

            });//.row.add( ["1","1","1","1","1","1","1"]).draw();;
        },

        chongxinhuizhibiaoge: function (obj) {
            let shuzu = [];
            let dlength = obj.length;
            for (let i = 0; i < dlength; i++) {
                let d = dsx.tiqushuju(obj,i);
                shuzu[i] = [dlength-i,d.kehunicheng,d.dingdanjine,d.dingdanzhuangtai,d.xiadanshijian,d.lianjiebiaoti,d.dingdanbianhao];
            };
            dsx.table.clear();
            dsx.table.rows.add(shuzu).draw();
        },

        chulidingdanshuju : function(obj) {
            if(!($("#dashixiongtable tbody tr").length > 0)){
                //第一次运行
                dsx.saveshuju(obj);
                dsx.shaixuanshujuhuizhibiaoge(obj);
            }else{
                this.gengxinshuju(obj);
            }
        },

        gengxinshuju : function(obj) {
            let xinshujushuliang = obj.length;
            let xiangtong;
            for(let i=xinshujushuliang-1; i >= 0; i--){
                xiangtong = false;
                for(let k=0; k < xinshujushuliang; k++){
                    if(obj[i].shop_order_id == dsx.shuju[k].shop_order_id){
                        dsx.shuju[k].order_status_info = obj[i].order_status_info;
                        xiangtong = true;
                        break;
                    };
                };
                if(!xiangtong){
                    dsx.shuju.push(obj[i]);
                };
            };
            dsx.chongxinhuizhibiaoge(dsx.shuju);
            this.Toast("更新完毕", 1000);
        },

        xiangyingshijian : function () {
            $("#dashixiongXuanFu").click(function() {
                $(".auxo-btn.auxo-btn-primary.auxo-btn-sm").click();
            });
            $("#dashixiongXuanFu").mouseenter(function() {
                $("#dashixiongDIV").stop(true, false).show();
            });
            $("#dashixiong-main").mouseleave(function() {
                $("#dashixiongDIV").stop(true, false).hide();
            });

            /*             window.setInterval(function() {
                $("#dashixiongXuanFu").click();
            },120000); */
        },

        addhtml:function(){
            let a = `
<div id="dashixiong-main">
  <div id="dashixiongXuanFu"></div>
  <div id="dashixiongDIV">
    <table id="dashixiongtable"></table>
  </div>
</div>
		`;
            $("body").eq(0).prepend(a);
        },

        addcss:function(){
            let a = `<style>
#dashixiongDIV {
	position: fixed;
	top: 10px;
	right: 0px;
	z-index: 9998;
	margin-top: 4px;
	line-height: 34px;
	border-radius: 15px;
 /*盒子圆弧角*/
	background-color: rgba(255, 255, 255, 1);
	color: #000;
	font-size: 15px;
	padding: 15px 15px;
	overflow-x: auto;
	/*overflow-y: auto;*/
}

#dashixiongtable {
	width: 100%;
	height: 100%;
	white-space: nowrap;
        /*-webkit-overflow-scrolling: touch;  移动端手指滚动更流畅*/
}

     /* 悬浮标 */
#dashixiongXuanFu {
	position: fixed;
	top: 60px;
	right: 10px;
	text-align: center;
	z-index: 9999;
	cursor: pointer;
	vertical-align: middle;
	margin-top: 4px;
	height: 34px;
	width: 34px;
	line-height: 34px;
	display: inline-block;
	border-radius: 50px;
	background-color: rgba(0, 0, 0, 0.5);
}

</style>`;
            $("body").eq(0).prepend(a);
        },
        addscript:function(){
            let a = `
<script>
(function () {
    function ajaxEventTrigger(event) {
        var ajaxEvent = new CustomEvent(event, { detail: this });
        window.dispatchEvent(ajaxEvent);
    }
    var oldXHR = window.XMLHttpRequest;
    function newXHR() {
        var realXHR = new oldXHR();

        realXHR.addEventListener('abort', function () { ajaxEventTrigger.call(this, 'ajaxAbort'); }, false);

        realXHR.addEventListener('error', function () { ajaxEventTrigger.call(this, 'ajaxError'); }, false);

        realXHR.addEventListener('load', function () { ajaxEventTrigger.call(this, 'ajaxLoad'); }, false);

        realXHR.addEventListener('loadstart', function () { ajaxEventTrigger.call(this, 'ajaxLoadStart'); }, false);

        realXHR.addEventListener('progress', function () { ajaxEventTrigger.call(this, 'ajaxProgress'); }, false);

        realXHR.addEventListener('timeout', function () { ajaxEventTrigger.call(this, 'ajaxTimeout'); }, false);

        realXHR.addEventListener('loadend', function () { ajaxEventTrigger.call(this, 'ajaxLoadEnd'); }, false);

        realXHR.addEventListener('readystatechange', function() { ajaxEventTrigger.call(this, 'ajaxReadyStateChange'); }, false);

        return realXHR;
    };
    window.XMLHttpRequest = newXHR;
})();
</script>`;
            $("body").eq(0).prepend(a);

        }


    };
    //GM_deleteValue("dingdanshuju");
    console.log("读取数据",dsx.getshuju());
    dsx.addhtml();
    dsx.addcss();
    dsx.addscript();
    dsx.duquhuizhidingdanshuju();
    dsx.tianjiawangluojianting((d) => {dsx.panduanshuju(d)});
    dsx.xiangyingshijian();

})();