您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Jimu expires assistance
当前为
// ==UserScript== // @name Jimu Assistance // @namespace http://tampermonkey.net/ // @version 0.4 // @description Jimu expires assistance // @author zgldh // @match https://box.jimu.com/Account/CreditAssign/Owned // @match https://box.jimu.com/CreditAssign/Init/* // @grant none // 1. 本插件仅提供逾期数据显示,使用者自行甄别数据真假。 // 2. 本插件不对数据的及时性和真实性负责。不对使用者做出的任何投资决断负责。 // 如您无法接受以上两点,请立即卸载此脚本。 // ==/UserScript== (function() { 'use strict'; // Your code here... var titles = null; var eventAttached = false; runTimer(); function runTimer() { var timer = setInterval(function(){ if(typeof(window.$)== 'function') { titles = $('#ownedListContainer tr td.title,.table.table-responsive tr td'); if(titles.length>=1) { clearInterval(timer); start(); if(eventAttached === false) { attachEvent(); eventAttached = true; } } } },1000); } function start() { var projectNumbers = []; $('#ownedListContainer tr').css('position','relative'); titles.css('position','relative'); titles.each(function(index){ var title = $(this); var projectNumber = getProjectNumber(title.find('span a').text().trim()); if(projectNumber) { projectNumbers.push(projectNumber); var expiresDiv = $('<div class="project-'+projectNumber+' expires-assistance">Loading...</div>'); expiresDiv.css({ position: 'relative', width: '100%' }); title.append(expiresDiv); } }); $.get('https://jimu-assistance.zgldh.com/expires?'+encodeProjectNumbers(projectNumbers)) .then(function(results){ for(var index in projectNumbers) { var projectNumber = projectNumbers[index]; setupProjectExpires(projectNumber,results[projectNumber]); } }); } function getProjectNumber(str) { var pattern = /.*\s([\d-]*)/; var result = pattern.exec(str); if(result && result.length>=2) { return result[1]; } return null; } function encodeProjectNumbers(projectNumbers) { $.unique(projectNumbers); var numbers = [].concat(projectNumbers); for(var index in numbers) { numbers[index] = 'n[]='+numbers[index]; } var str = numbers.join('&'); return str; } function setupProjectExpires(projectNumber, expires) { var expiresDiv = $('.project-'+projectNumber).empty(); if(!expires || expires.length === 0) { expiresDiv.append('<span style="color: green">没有逾期记录</span>'); return true; } expires.sort((a,b)=>a>b); var expireSpan = null; var expireDate = null; for(var index in expires) { expireDate = expires[index]; expireSpan = $('<span class="expire-date" title="'+expireDate+'"></span>'); expireSpan.css({ display: 'inline-block', width: '20px', height: '20px', background: 'red', color: 'white', 'border-radius': '10px', 'margin-right': '5px' }); expiresDiv.append(expireSpan); } if(expireSpan) { expireSpan.text(expireDate).css({ 'font-size': '12px', 'padding': '0 5px', 'width': 'auto' }); var def = ( new Date() - Date.parse(expireDate)) / 1000 / 60 / 60 / 24 ; if(def >= 60) { expiresDiv.find('.expire-date').css({ background: 'green' }); } } } function attachEvent() { ajaxSend(window.XMLHttpRequest, function(method, url, data){ if(url.indexOf('/Account/CreditAssign/OwnedInvest') !== -1) { runTimer(); } }); } function ajaxSend(objectOfXMLHttpRequest, callback) { // http://stackoverflow.com/questions/3596583/javascript-detect-an-ajax-event if(!callback){ return; } var s_ajaxListener = {}; s_ajaxListener.tempOpen = objectOfXMLHttpRequest.prototype.open; s_ajaxListener.tempSend = objectOfXMLHttpRequest.prototype.send; s_ajaxListener.callback = function () { // this.method :the ajax method used // this.url :the url of the requested script (including query string, if any) (urlencoded) // this.data :the data sent, if any ex: foo=bar&a=b (urlencoded) callback(this.method, this.url, this.data); }; objectOfXMLHttpRequest.prototype.open = function(a,b) { if (!a) a=''; if (!b) b=''; s_ajaxListener.tempOpen.apply(this, arguments); s_ajaxListener.method = a; s_ajaxListener.url = b; if (a.toLowerCase() == 'get') { s_ajaxListener.data = b.split('?'); s_ajaxListener.data = s_ajaxListener.data[1]; } }; objectOfXMLHttpRequest.prototype.send = function(a,b) { if (!a) var a=''; if (!b) var b=''; s_ajaxListener.tempSend.apply(this, arguments); if(s_ajaxListener.method.toLowerCase() == 'post') { s_ajaxListener.data = a; } s_ajaxListener.callback(); }; } })();