ваше сообщение коммита

This commit is contained in:
2025-06-25 16:55:40 +03:00
parent 715c108bb6
commit a316089659
63 changed files with 525 additions and 522 deletions

View File

@@ -6,6 +6,28 @@ import axios from 'axios';
* Предоставляет списки доступных сетей, URL RPC и функции для работы с ними
*/
export default function useBlockchainNetworks() {
// Список сетей, получаемый с бэкенда
const networks = ref([]);
const loadingNetworks = ref(false);
// Загрузка сетей с бэкенда
const fetchNetworks = async () => {
loadingNetworks.value = true;
try {
const { data } = await axios.get('/api/settings/rpc');
const networksArr = data.data || [];
networks.value = networksArr.map(n => ({
value: n.network_id,
label: n.network_id, // Можно заменить на красивое имя, если появится
url: n.rpc_url
}));
} catch (e) {
networks.value = [];
} finally {
loadingNetworks.value = false;
}
};
// Группы сетей для отображения в интерфейсе
const networkGroups = [
{
@@ -56,7 +78,7 @@ export default function useBlockchainNetworks() {
];
// Создаем плоский список всех сетей для удобного использования в компонентах
const networks = computed(() => {
const networksComputed = computed(() => {
return networkGroups.flatMap(group => group.options);
});
@@ -122,12 +144,12 @@ export default function useBlockchainNetworks() {
// Функция получения списка всех доступных сетей в плоском формате
const getAllNetworks = () => {
return networks.value;
return networksComputed.value;
};
// Функция получения метаданных сети по ID
const getNetworkMetadata = (networkId) => {
return networks.value.find(network => network.value === networkId) || null;
return networksComputed.value.find(network => network.value === networkId) || null;
};
// Состояние для тестирования RPC
@@ -171,12 +193,15 @@ export default function useBlockchainNetworks() {
};
return {
networks,
fetchNetworks,
loadingNetworks,
// Данные
networkGroups,
networkEntry,
testingRpc,
testingRpcId,
networks, // Экспортируем плоский список сетей
networksComputed, // Экспортируем плоский список сетей
// Методы
getChainIdByNetworkId,

View File

@@ -240,6 +240,7 @@
<div class="form-group">
<label class="form-label" for="deployNetwork">Выберите сеть блокчейн для деплоя:</label>
<select id="deployNetwork" v-model="dleDeploymentSettings.blockchainNetwork" class="form-control">
<option v-if="loadingNetworks" disabled>Загрузка сетей...</option>
<option v-for="network in networks" :key="network.value" :value="network.value">
{{ network.label }}
</option>
@@ -334,7 +335,9 @@ const {
testRpcConnection,
testingRpc,
testingRpcId,
networks
networks,
fetchNetworks,
loadingNetworks
} = useBlockchainNetworks();
// Добавляем настройки безопасности и подключения
@@ -546,6 +549,7 @@ watch(selectedClass, () => {
// --- Начальная загрузка данных ---
onMounted(() => {
fetchIsicCodes({ level: 1 }, sectionOptions, isLoadingSections);
fetchNetworks(); // Загружаем список сетей для деплоя
// Автоподстановка адреса авторизированного пользователя в первого партнера, если есть права админа
if (address.value && isAdmin.value && dleDeploymentSettings.partners.length > 0) {
@@ -622,7 +626,8 @@ const formattedDLEParams = computed(() => {
votingDelay: Math.round(dleDeploymentSettings.votingDelayDays * 24 * 60 * 60 / 13), // конвертируем дни в блоки (13 секунд на блок)
votingPeriod: Math.round(dleDeploymentSettings.votingPeriodDays * 24 * 60 * 60 / 13), // конвертируем дни в блоки
proposalThreshold: dleDeploymentSettings.proposalThreshold,
quorumPercentage: dleDeploymentSettings.quorumPercent
quorumPercentage: dleDeploymentSettings.quorumPercent,
privateKey: securitySettings.deployerPrivateKey
};
});