Скрипт дает возможность добавлять тарифы на коммунальные услуги в договоры управления по одному клику кнопки. Работа скрипта и процедура добавления тарифов в память браузера отражена на видео. Открытие браузерной консоли по клавише F12. Все добавленные тарифы в память браузера сохраняются бессрочно и доступны из других договоров управления. Для удаления всех сохраненных в памяти браузера тарифов, имеется соответствующая кнопка.
// ==UserScript==
// @name Скрипт тарифы КУ в дог.управления
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Скрипт дает возможность добавлять тарифы на коммунальные услуги в договоры управления по одному клику кнопки. Работа скрипта и процедура добавления тарифов в память браузера отражена на видео. Открытие браузерной консоли по клавише F12. Все добавленные тарифы в память браузера сохраняются бессрочно и доступны из других договоров управления. Для удаления всех сохраненных в памяти браузера тарифов, имеется соответствующая кнопка. https://besfamilnij.ru/skript-dobavleniya-tarifov-na-ku-v-dogovory-upravleniya.
// @author besfamilnij
// @match https://my.dom.gosuslugi.ru/organization-cabinet/*
// @require https://code.jquery.com/jquery-3.7.1.min.js
// @icon https://www.google.com/s2/favicons?domain=dom.gosuslugi.ru
// @grant none
// ==/UserScript==
setInterval(() => {
addBlockAndButton();
}, 2500 );
function addBlockAndButton(){
if(window.location.href.indexOf('https://my.dom.gosuslugi.ru/organization-cabinet/#!/agreements/contract/view/')!== -1 && $('h1:contains("Информация о применяемых тарифах в разрезе услуг")').length && !$('#custom-tar').length){
if(localStorage.getItem('tariff') == null){ setLocalStorageDefault(); }
let tariffList = JSON.parse(localStorage.getItem('tariff'));
$("body > div.page-wrapper > div.app-content-wrapper > div > div > div.tab-base.ng-scope > div > div > div.tab-pane.ng-scope.active > ef-agr-dog-tariff > div.form-base").after('<div id="custom-tar" style="background: #ddd;margin: 15px 0px;padding: 15px;"></div>');
$('#custom-tar').append('<div id="custom-event" style="width: 100%;background: #29d32e;margin-bottom: 15px; display:none;font-size: 18px;padding: 5px;">123</div>');
$('#custom-tar').append('<textarea id="new-tariff" style="width: 50%;height: 30px;" placeholder="Область для добавления строки тарифа"></textarea><button id="clear-tariff-lists" class="btn btn-prime" style="float: right;margin-left: 5px;">Удалить все сохраненные тарифы</button><button id="add-new-tariff" class="btn btn-prime" style="float: right;">Добавить новый тариф в память браузера</button><hr>');
$('#custom-tar').append('<select id="tariff-lists" style="width: 70%;font-size: 16px;padding: 5px;"><option value="" disabled selected>выбрать...</option></select><button id="add-new-tariff-agreement" class="btn btn-prime" style="float: right;">Добавить выбранный тариф в текущий договор</button><hr>');
$('#custom-tar').append('<button id="all-proj-postpub" class="btn btn-prime">Разместить все тарифы в статусе "проект"</button><button id="update-tariff-click" class="btn btn-prime" style="margin-left: 15px;">Обновить список добавленных тарифов в договор и память браузера</button>');
if(tariffList.length){
for(let i=0; i < tariffList.length; i++){
try {
$('#tariff-lists').append('<option value="' + tariffList[i].values[0].diffPriceGuid + tariffList[i].values[1].diffPriceGuid + tariffList[i].municipalService.code + '">' + tariffList[i].municipalService.name + ' | ' + tariffList[i].values[0].value + ' | ' + tariffList[i].values[1].value + '</option>');
} catch (e) {
$('#tariff-lists').append('<option value="' + tariffList[i].values[0].diffPriceGuid + tariffList[i].municipalService.code + '">' + tariffList[i].municipalService.name + ' | ' + tariffList[i].values[0].value + '</option>');
}
}
}
}
}
$(document).on('click', '#add-new-tariff', function(){
let tariffs = JSON.parse(localStorage.getItem('tariff'));
let newTariffStr = $('#new-tariff').val().trim();
if(IsJsonString(newTariffStr)){
tariffs.push(JSON.parse(newTariffStr));
localStorage.setItem('tariff', JSON.stringify(tariffs));
$('#new-tariff').val('');
$('#custom-event').html('Тариф добавлен в память браузера, обновите списки.');
$('#custom-event').show();
setTimeout(function(){
$('#custom-event').hide();
$('#custom-event').html('');
}, 1500);
}
});
$(document).on('click', '#add-new-tariff-agreement', function(){
$('#add-new-tariff-agreement').attr('disabled', true);
let data = angular.element('div.ng-scope[ui-view="content"]').scope();
let agrGuid = data.contract.guid;
let houseRootEntityGuid = data.contract.managedObjectList[0].rootEntityGuid;
let tarGuid = $('#tariff-lists').val();
let tariffs = JSON.parse(localStorage.getItem('tariff'));
let curTariff = '';
for(let i=0; i < tariffs.length; i++){
if(tariffs[i].values[0].diffPriceGuid + tariffs[i].municipalService.code == tarGuid || tariffs[i].values[1] !==undefined && tariffs[i].values[0].diffPriceGuid + tariffs[i].values[1].diffPriceGuid + tariffs[i].municipalService.code == tarGuid){
curTariff = tariffs[i];
curTariff.agreementGuid = agrGuid;
curTariff.values[0].houseRootGuids[0] = houseRootEntityGuid;
}
}
if(curTariff !== ''){
let req = new XMLHttpRequest();
let url = "https://my.dom.gosuslugi.ru/agreements/api/rest/services/agreements/management/tariff";
req.open("POST", url, true);
req.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
req.setRequestHeader('Accept', 'application/json; charset=utf-8');
req.addEventListener("load", function(e) {
$('#custom-event').html('Тариф добавлен в договор.');
$('#custom-event').show();
setTimeout(function(){
$('#custom-event').hide();
$('#custom-event').html('');
}, 1500);
$('#add-new-tariff-agreement').attr('disabled', false);
}, false);
req.send(JSON.stringify(curTariff));
}else{
$('#add-new-tariff-agreement').attr('disabled', false);
}
});
$(document).on('click', '#all-proj-postpub', function(){
$('a.dropdown-base__menu-i-action:contains("Разместить информацию о тарифе")').click();
setTimeout(function(){ $('button[ng-click="yes(\'ok\')"]').click(); }, 1500);
});
$(document).on('click', '#clear-tariff-lists', function(){
setLocalStorageDefault();
});
$(document).on('click', '#update-tariff-click', function(){
$('a[ng-click="select()"]:contains("Версии")').click();
$('a.dropdown-base__menu-i-action:contains("Информация о применяемых тарифах")').click();
});
function setLocalStorageDefault(){
localStorage.setItem('tariff', '[]');
}
function IsJsonString(str) {
try { JSON.parse(str); } catch (e) { return false; }
return true;
}
12 комментариев. Оставить новый
Подскажите пожалуйста, что будет если нажать на кнопку “Обновить список добавленных тарифов в ДУ и память браузера”? Скрипт заберёт обновления, если со стороны комитета по тарифам, если они что-то правили у себя?
При нажатии на кнопку просто обновится страница. Нет, никакие обновления не будут вносится в добавленный память браузера тариф.
Вещь отличная, но всё хранится в кэше и это совершенно неудобно, поскольку в ГИСе постоянно приходится его сбрасывать, есть ли возможность сделать хранение данных в каком-то стороннем файле где-то на ПК?
Вам никто не запрещает хранить строки тарифов в файле и при необходимости заносить снова после очистки кэша, но тарифы хранятся в локальном хранилище, а оно отдельно от кэша.
И так же, как и через fetch, при нажатии на список домов в добавленном тарифе “Управляемые объекты не найдены” 🙁 не тянет дома с этого ДУ, хотя единичка стоит
Просьба выражать свои мысли или обнаруженные проблемы яснее.
Ссылки на скриншоты
…
При срабатывании скрипта дома не подтягиваются, не отображаются внутри тарифа. А по первому комментарию удаляла данные сайта тут: chrome://settings/content/all и все тарифы стерлись
Благодарю, поправил в скрипте что нужно. Для удаления кэша в chrome следует использовать chrome://settings/clearBrowserData, вкладка “Дополнительно”, одна галочка напротив “Изображения и другие файлы, сохраненные в кеше”.
Большое спасибо за вашу работу! Когда впервые увидела эти скрипты, не могла поверить глазам, жизнь заиграла новыми красками и работа ускорилась в разы)) По аналогии с определенными кусками кода научилась что-то делать самостоятельно, теперь пользуемся ими на постоянной основе
Благодарю за оценку, приятно осознавать полезность публикуемого материала.
Еще наблюдается проблема с тем, что компонент холодной воды вставляется то в горячую воду, то в холодную и тепловая энергия, то в горячую воду, то в отопление. При повторном сохранении тарифа попадает куда надо, но в новом договоре проблема повторяется.
Например, отопление:
{“tariffGuid”:”3e0efe99-9c85-46fd-8498-1343119ce89a”…}
и ГВС:
{“tariffGuid”:”3e0efe99-9c85-46fd-8498-1343119ce89a”…}
Благодарю, не учел некоторые моменты ранее, скрипт дополнен.