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

This commit is contained in:
2025-08-04 14:16:05 +03:00
parent e30d672c52
commit df37507bbe
22 changed files with 421 additions and 273 deletions

View File

@@ -10,76 +10,63 @@
* GitHub: https://github.com/HB3-ACCELERATOR
*/
import api from '@/api/axios';
// Сервис для работы с DLE v2
import axios from 'axios';
/**
* Сервис для работы с DLE v2 (Digital Legal Entity)
* Современный подход с единым контрактом
* Создает новое DLE v2
* @param {Object} dleParams - Параметры DLE
* @returns {Promise<Object>} - Результат создания
*/
class DLEV2Service {
/**
* Создает новое DLE v2
* @param {Object} dleParams - Параметры DLE
* @returns {Promise<Object>} - Результат создания
*/
async createDLE(dleParams) {
try {
const response = await api.post('/dle-v2', dleParams);
return response.data;
} catch (error) {
// console.error('Ошибка при создании DLE v2:', error);
throw error;
}
export const createDLE = async (dleParams) => {
try {
const response = await axios.post('/api/dle-v2', dleParams);
return response.data;
} catch (error) {
console.error('Ошибка при создании DLE:', error);
throw error;
}
};
/**
* Получает список всех DLE v2
* @returns {Promise<Array>} - Список DLE v2
*/
async getAllDLEs() {
try {
const response = await api.get('/dle-v2');
return response.data.data || [];
} catch (error) {
// console.error('Ошибка при получении списка DLE v2:', error);
return [];
}
/**
* Получает список всех DLE v2
* @returns {Promise<Object>} - Список DLE
*/
export const getAllDLEs = async () => {
try {
const response = await axios.get('/api/dle-v2');
return response.data;
} catch (error) {
console.error('Ошибка при получении списка DLE:', error);
throw error;
}
};
/**
* Получает настройки по умолчанию для DLE v2
* @returns {Promise<Object>} - Настройки по умолчанию
*/
async getDefaults() {
try {
const response = await api.get('/dle-v2/defaults');
return response.data.data;
} catch (error) {
// console.error('Ошибка при получении настроек по умолчанию DLE v2:', error);
return {
votingDelay: 1,
votingPeriod: 45818,
proposalThreshold: '100000',
quorumPercentage: 4,
minTimelockDelay: 2
};
}
/**
* Получает информацию о конкретном DLE v2
* @param {string} dleAddress - Адрес DLE
* @returns {Promise<Object>} - Информация о DLE
*/
export const getDLEInfo = async (dleAddress) => {
try {
const response = await axios.get(`/api/dle-v2/${dleAddress}`);
return response.data;
} catch (error) {
console.error('Ошибка при получении информации о DLE:', error);
throw error;
}
};
/**
* Удаляет DLE v2 по адресу
* @param {string} dleAddress - Адрес DLE
* @returns {Promise<Object>} - Результат удаления
*/
async deleteDLE(dleAddress) {
try {
const response = await api.delete(`/dle-v2/${dleAddress}`);
return response.data;
} catch (error) {
// console.error('Ошибка при удалении DLE v2:', error);
throw error;
}
/**
* Получает параметры по умолчанию для создания DLE v2
* @returns {Promise<Object>} - Параметры по умолчанию
*/
export const getDefaultParams = async () => {
try {
const response = await axios.get('/api/dle-v2/default-params');
return response.data;
} catch (error) {
console.error('Ошибка при получении параметров по умолчанию:', error);
throw error;
}
}
export default new DLEV2Service();
};

View File

@@ -569,6 +569,9 @@
v-model="unifiedPrivateKey"
class="form-control"
placeholder="Введите приватный ключ (0x... или без префикса)"
@input="() => { console.log('Input event triggered'); validatePrivateKey('unified'); }"
@focus="() => console.log('Input field focused')"
@blur="() => console.log('Input field blurred')"
>
<span class="input-icon" @click="showUnifiedKey = !showUnifiedKey">
<i :class="showUnifiedKey ? 'fas fa-eye-slash' : 'fas fa-eye'"></i>
@@ -1951,15 +1954,18 @@ const toggleKeyVisibility = (chainId) => {
};
// Валидация приватного ключа с дебаунсом
const validatePrivateKey = (chainId) => {
const validatePrivateKey = async (chainId) => {
console.log('Функция validatePrivateKey вызвана для chainId:', chainId);
// Очищаем предыдущий таймер
if (validatePrivateKey.timeout) {
clearTimeout(validatePrivateKey.timeout);
}
// Устанавливаем новый таймер для дебаунса
validatePrivateKey.timeout = setTimeout(() => {
validatePrivateKey.timeout = setTimeout(async () => {
const key = chainId === 'unified' ? unifiedPrivateKey.value : privateKeys[chainId];
console.log('Ключ для валидации:', key);
if (!key) {
keyValidation[chainId] = null;
@@ -1967,26 +1973,33 @@ const validatePrivateKey = (chainId) => {
}
try {
// Простая валидация длины и формата
const cleanKey = key.startsWith('0x') ? key.slice(2) : key;
// Логируем отправляемый ключ (только для отладки)
console.log('Отправляем приватный ключ для валидации:', key);
console.log('Длина ключа:', key.length);
console.log('Полный ключ:', key);
if (cleanKey.length === 64 && /^[a-fA-F0-9]+$/.test(cleanKey)) {
// Генерируем адрес из приватного ключа (упрощенная версия)
const address = '0x' + cleanKey.substring(0, 40);
keyValidation[chainId] = {
isValid: true,
address: address,
error: null
};
// Отправляем запрос на бэкенд для валидации
const response = await axios.post('/api/dle-v2/validate-private-key', {
privateKey: key
});
console.log('Ответ от сервера:', response.data);
if (response.data.success) {
keyValidation[chainId] = response.data.data;
} else {
throw new Error('Некорректный формат ключа');
keyValidation[chainId] = {
isValid: false,
address: null,
error: response.data.message
};
}
} catch (error) {
console.error('Ошибка валидации приватного ключа:', error);
keyValidation[chainId] = {
isValid: false,
address: null,
error: 'Некорректный приватный ключ'
error: error.response?.data?.message || 'Ошибка валидации приватного ключа'
};
}
}, 300); // Задержка 300мс
@@ -2107,6 +2120,9 @@ watch([() => dleSettings.name, () => dleSettings.tokenSymbol, selectedNetworks],
// Инициализация
onMounted(() => {
console.log('🚀 DleDeployFormView компонент загружен - ТЕСТ ОБНОВЛЕНИЯ');
alert('Компонент загружен - проверьте консоль');
// Загружаем список стран
loadCountries();
@@ -2209,7 +2225,10 @@ const deploySmartContracts = async () => {
supportedChainIds: dleSettings.selectedNetworks || [],
// Текущая цепочка (будет установлена при деплое)
currentChainId: dleSettings.selectedNetworks[0] || 1
currentChainId: dleSettings.selectedNetworks[0] || 1,
// Приватный ключ для деплоя
privateKey: unifiedPrivateKey.value
};
console.log('Данные для деплоя DLE:', deployData);
@@ -2247,6 +2266,9 @@ const isFormValid = computed(() => {
dleSettings.governanceQuorum > 0 &&
dleSettings.governanceQuorum <= 100 &&
dleSettings.selectedNetworks.length > 0 &&
// Проверка приватного ключа
unifiedPrivateKey.value &&
keyValidation.unified?.isValid &&
// Валидация координат
validateCoordinates(dleSettings.coordinates)
);