Скрипт подставляет адреса к обращениям, которые не так давно пропали по каким-то причинам. Для работы скрипта используется перечень домов из раздела “Объекты жилищного фонда”, поэтому перед использованием кнопки “Проставить адреса”, нажмите и дождитесь разблокировки кнопки “Обновить список домов”. Кнопки появляются при открытии раздела “Обращения”. При открытии любого единичного обращения скрипт срабатывает автоматически и при наличии в локальном хранилище списка домов, адрес дома подставляется без необходимости нажатия на какую либо кнопку. При деаутентификации и смене организации в ГИСе, необходимо снова обновить перечень домов, который хранится в локальном хранилище соответствующей кнопкой.
// ==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);
}