// ==UserScript==
// @name 抖音小店订单管理3.5
// @version 3.5
// @author 大师兄 [email protected]
// @namespace https://gf.qytechs.cn/zh-CN/users/724782-caogen1207
// @match *://fxg.jinritemai.com/ffa/morder/order/list
// @date 05/27/2021
// @description 方便抖音订单查看,必须要打开抖音小店的订单管理界面,才能显示
// @icon https://mms0.baidu.com/it/u=685985501,228922170&fm=27&gp=0.jpg&fmt=auto
// @note 2.5 @updateURL/@installURL/@downloadURL https://gf.qytechs.cn/zh-CN/scripts/431480
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://gf.qytechs.cn/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
// ==/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').DataTable({
data: dataSet,
columns: datehead,
language: {
lengthMenu : "每页显示 _MENU_记录",
zeroRecords : "没有匹配的数据",
info : "显示 _START_ - _END_ 条/共 _TOTAL_ 条",
infoEmpty : "没有符合条件的记录",
search : "查找",
infoFiltered : "(从 _MAX_条记录中过滤)",
paginate : { "first" : "首页 ", "last" : "末页", "next" : "下一页", "previous" : "上一页"}
}
});//.row.add( ["1","1","1","1","1","1","1"]).draw();
console.log(dsx.table);
dsx.table.sScrollY = $(window).height() - 300;//是否开启垂直滚动(否=disabled)
},
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.data(shuzu).draw();
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 result;
obj.sort((a,b) => {return b.exp_ship_time - a.exp_ship_time});
obj.forEach((objitem) => {
result = dsx.shuju.some((shujuitem) => {
if (shujuitem.shop_order_id == objitem.shop_order_id) {
shujuitem.order_status_info = objitem.order_status_info;
return true;
};
});
if (!result){dsx.shuju.unshift(objitem);};
});
dsx.shuju.sort((a,b) => {return b.exp_ship_time - a.exp_ship_time});
dsx.chongxinhuizhibiaoge(dsx.shuju);
dsx.saveshuju(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();
})();