Скрипт дает возможность добавлять тарифы на коммунальные услуги в договоры управления по одному клику кнопки. Работа скрипта и процедура добавления тарифов в память браузера отражена на видео. Открытие браузерной консоли по клавише 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”…}
Благодарю, не учел некоторые моменты ранее, скрипт дополнен.