Скрипт добавляет полосу в нижнюю часть страницы с информацией о не отвеченных запросах о задолженности и о поступивших обращениях без назначенного исполнителя. Проверка происходит при загрузке страницы и последующие каждые три минуты. Максимально отображаемое количество запросов или обращений не более 10.
// ==UserScript== // @name Докбар обращений и запросов // @namespace http://tampermonkey.net/ // @version 0.1 // @description Скрипт добавляет полосу в нижнюю часть страницы с информацией о неотвеченных запросах о задолженности и о поступивших обращениях без назначенного исполнителя. Проверка происходит при загрузке страницы и последующие каждые три минуты. Максимально отображаемое количество запросов или обращений не более 10. // @author besfamilnij // @match https://my.dom.gosuslugi.ru/* // @require https://code.jquery.com/jquery-3.7.1.min.js // @icon https://www.google.com/s2/favicons?sz=64&domain=gosuslugi.ru // @grant none // ==/UserScript== window.addEventListener('load',() => { setTimeout(function(){ init(); }, 2000); }); function init(){ let style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '#notification-bar{text-align: right;position: fixed;bottom: 0;left: 0;background: #f1f1f1;width: 100%;height: 20px;border-radius: 7px 7px 0px 0px;padding: 0px 10px;z-index: 99999999999;font-size: 13px;display: inline;line-height: 1.7;}'; document.head.appendChild(style); let div = document.createElement('div'); div.id = 'notification-bar'; div.innerHTML = '<div style="display: inline-block;padding-right: 15px;"><span>Обращений без исполнителя: </span><span id="incoming-requests">...</span></div><div style="display: inline-block;"><span>Запросы о задолженности без ответа: </span><span id="debt-inquiries">...</span></div>'; document.body.append(div); getDebt(); getAppeals(); setInterval(() => { getDebt(); getAppeals(); }, 180000); } function getDebt(){ let today = new Date(); let lastDay = new Date(today - 15778800000); today = today.toLocaleDateString('ru-RU'); lastDay = lastDay.toLocaleDateString('ru-RU'); let req = new XMLHttpRequest(); let reqsend = {"statuses":["NOT_SENT"],"sentDatePeriod":{"beginDate":lastDay,"endDate":today},"responseDatePeriod":null,"houseId":null,"region":null,"answerUserIds":["0"],"sortCriteria":{"sortedBy":"LAST_UPDATE_DATE","asceding":false}}; reqsend = JSON.stringify(reqsend); req.open("POST", "https://my.dom.gosuslugi.ru/debtreq/api/rest/services/debtreq/sub/search;page=1;itemsPerPage=10", true); req.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); req.setRequestHeader('Accept', 'application/json; charset=utf-8'); req.addEventListener("load", function(i) { let response = JSON.parse(this.response); if(response.debtSubReqList.length){ document.getElementById('debt-inquiries').textContent = response.debtSubReqList.length; }else{ document.getElementById('debt-inquiries').textContent = '0'; } }, false); req.send(reqsend); } function getAppeals(){ let req = new XMLHttpRequest(); let reqsend = {"topicCodes":[],"statuses":[],"answerAssessments":[],"executionTerms":[],"destinationCompetences":[],"answerRequirements":[],"appealTypes":[],"maximumExecutionTerm":null,"onlyFromMobileDom":false,"house":null,"byAllOrganization":false,"executorUserGuids":[],"executorNotAssigned":null,"executorAssignmentTermsList":[],"sortCriteria":{"sortedBy":"receivedDate","ascending":false}}; reqsend = JSON.stringify(reqsend); req.open("POST", "https://my.dom.gosuslugi.ru/appeals/api/rest/services/appeal/answerer/search;pageIndex=1;elementsPerPage=10", true); req.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); req.setRequestHeader('Accept', 'application/json; charset=utf-8'); req.addEventListener("load", function(i) { let response = JSON.parse(this.response); let counter = 0; for(let i = 0; i < response.items.length; i++){ if(response.items[i].status == 'SENT'){ counter += 1; } } document.getElementById('incoming-requests').textContent = counter; }, false); req.send(reqsend); }