Jagile - jd.com

12/9/2020, 6:05:45 PM

目前为 2021-04-01 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Jagile - jd.com
  3. // @namespace Violentmonkey Scripts
  4. // @match http://jagile.jd.com/myzone
  5. // @icon http://jagile.jd.com/static/favicon.ico
  6. // @grant none
  7. // @version 1.0.2
  8. // @author -
  9. // @description 12/9/2020, 6:05:45 PM
  10. // ==/UserScript==
  11.  
  12. window.addEventListener('load', () => {
  13. setTimeout(() => {
  14. const saveEl = document.createElement('DIV');
  15. saveEl.className = 'el-form-item el-form-item--small';
  16. saveEl.innerHTML = '<div class="el-form-item__content"><button type="button" class="el-button el-button--primary el-button--mini"><span>保存</span></button></div>';
  17. saveEl.firstChild.firstChild.addEventListener('click', () => {
  18. const calendars = Array.from(document.getElementsByClassName('calendar-body__name__info'))
  19. .filter(el => (window.getComputedStyle(el.parentNode.parentNode).display !== "none"))
  20. .map(el => el.firstChild.innerText.match(/^([^ ]+) \( (.+?) \)$/))
  21. .map(a => ({ name: a[1], erp: a[2] }));
  22. window.localStorage['com.derzh.jd.jagile.calendar'] = JSON.stringify(calendars);
  23. });
  24. document.getElementsByClassName('teamspace-calendar__condition')[0].appendChild(saveEl);
  25.  
  26. const loadEl = document.createElement('DIV');
  27. loadEl.className = 'el-form-item el-form-item--small';
  28. loadEl.innerHTML = '<div class="el-form-item__content"><button type="button" class="el-button el-button--primary el-button--mini"><span>恢复</span></button></div>';
  29. loadEl.firstChild.firstChild.addEventListener('click', () => {
  30. const calendars = JSON.parse(window.localStorage['com.derzh.jd.jagile.calendar']);
  31. const erps = calendars.map(c => `${c.name}(${c.erp})`);
  32. const els = [...document.getElementsByClassName('el-select-dropdown__item')]
  33. .filter(el => !el.classList.contains('selected') && erps.includes(el.innerText));
  34. const timer = setInterval(() => {
  35. const el = els.pop();
  36. if (el) {
  37. el.click();
  38. } else {
  39. clearInterval(timer);
  40. }
  41. })
  42. });
  43. document.getElementsByClassName('teamspace-calendar__condition')[0].appendChild(loadEl);
  44. }, 1000);
  45. const styleEl = document.createElement('STYLE');
  46. styleEl.innerHTML = '.teamspace-calendar .calendar .calendar-body__name { padding: 5px 0 5px 16px; } .teamspace-calendar .calendar .calendar-body__task-list { padding: 2px 4px 2px 2px; }';
  47. document.body.appendChild(styleEl);
  48. });