Скрипт подставляет адреса к обращениям, которые не так давно пропали по каким-то причинам. Для работы скрипта используется перечень домов из раздела “Объекты жилищного фонда”, поэтому перед использованием кнопки “Проставить адреса”, нажмите и дождитесь разблокировки кнопки “Обновить список домов”. Кнопки появляются при открытии раздела “Обращения”. При открытии любого единичного обращения скрипт срабатывает автоматически и при наличии в локальном хранилище списка домов, адрес дома подставляется без необходимости нажатия на какую либо кнопку. При деаутентификации и смене организации в ГИСе, необходимо снова обновить перечень домов, который хранится в локальном хранилище соответствующей кнопкой.
// ==UserScript== // @name Вернуть адреса в обращения // @namespace Violentmonkey Scripts // @match https://my.dom.gosuslugi.ru/organization-cabinet/* // @require https://code.jquery.com/jquery-3.7.1.min.js // @require https://raw.githubusercontent.com/uzairfarooq/arrive/master/minified/arrive.min.js // @grant none // @version 1.0 // @author besfamilnij // @description Скрипт подставляет адреса к обращениям, которые не так давно пропали по каким-то причинам. Для работы скрипта используется перечень домов из раздела "Объекты жилищного фонда", поэтому перед использованием кнопки "Проставить адреса", нажмите и дождитесь разблокировки кнопки "Обновить список домов". Кнопки появляются при открытии раздела "Обращения". При открытии любого единичного обращения скрипт срабатывает автоматически и при наличии в локальном хранилище списка домов, адрес дома подставляется без необходимости нажатия на какую либо кнопку. При деаутентификации и смене организации в ГИСе, необходимо снова обновить перечень домов, который хранится в локальном хранилище соответствующей кнопкой. // ==/UserScript== document.arrive('appeal-information', function(){ let houseGuid = angular.element('appeal-applicant-info').scope().data.house.house.guid; let housesForAppeals = JSON.parse(localStorage.getItem('housesForAppeals')); for(i of housesForAppeals){ if(i.guid == houseGuid){ angular.element('appeal-applicant-info').scope().data.house.formattedAddress = i.address; } } }); document.arrive('button[ng-click="importActions.downloadAppeals()"]', function(){ $('div[ui-view="content"] div.section-base__header > div.row > div.col-xs-7 > h4').replaceWith('<button id="cus-gethouseforappeals" class="btn btn-action">Обновить список домов</button><button id="cus-addAddressAppealsList" class="btn btn-action">Проставить адреса</button>'); }); $(document).on('click', '#cus-gethouseforappeals', function(){ getHouses(); }); $(document).on('click', '#cus-addAddressAppealsList', function(){ addAddressAppealsList(); }); function addAddressAppealsList(){ let rows = $('tr[ng-repeat="rowData in searchResultTable.state.tableData"]'); for(let i=0; i<rows.length; i++){ let appealGuid = angular.element($(rows[i])).scope().rowData.guid; let req = new XMLHttpRequest(); req.open('GET', 'https://my.dom.gosuslugi.ru/appeals/api/rest/services/appeal/' + appealGuid, true); req.addEventListener("load", function() { let response = JSON.parse(this.response); let housesForAppeals = JSON.parse(localStorage.getItem('housesForAppeals')); for(e of housesForAppeals){ if(response.house.house.guid == e.guid){ angular.element(rows[i]).scope().rowData.house.formattedAddress = e.address; } } }, false); req.send(); } } function getHouses(){ $('#cus-gethouseforappeals').attr('disabled',true); let req = new XMLHttpRequest(); let payload = JSON.stringify({"statuses":["APPROVED"],"houseConditionRefList":null,"hasIncorrectObjects":null,"fiasHouseCodeList":null,"calcCount":true,"houseManagementTypeRefList":null,"houseTypeRefList":null,"oktmo":null,"managementOrganizationGuid":null,"localGovernmentOrganizationGuid":null,"regionProperty":null,"municipalProperty":null,"hostelTypeCodes":null}); req.open('POST', 'https://my.dom.gosuslugi.ru/homemanagement/api/rest/services/houses/search;page=1;itemsPerPage=1000', true); req.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); req.setRequestHeader('Accept', 'application/json; charset=utf-8'); req.addEventListener("load", function(e) { let response = JSON.parse(this.response); let housesForAppeals = []; for(item of response.items){ housesForAppeals.push({"guid": item.address.house.houseGuid, "address": item.address.formattedAddress}); } localStorage.setItem('housesForAppeals', JSON.stringify(housesForAppeals)); $('#cus-gethouseforappeals').attr('disabled',false); }, false); req.send(payload); }