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

This commit is contained in:
2025-08-15 22:36:50 +03:00
parent 5238e1ee55
commit 3765c65a18
29 changed files with 904 additions and 651 deletions

View File

@@ -44,6 +44,7 @@
<option value="succeeded">Принятые</option>
<option value="defeated">Отклоненные</option>
<option value="executed">Выполненные</option>
<option value="canceled">Отмененные</option>
</select>
<button
class="btn btn-sm btn-outline-secondary"
@@ -657,11 +658,11 @@ async function loadDleData() {
// Преобразуем данные из API в формат для frontend
proposals.value = proposalsData.map(proposal => {
const transformedProposal = {
...proposal,
status: getProposalStatus(proposal),
deadline: proposal.deadline || (proposal.startTime + proposal.duration)
};
const transformedProposal = {
...proposal,
status: getProposalStatus(proposal),
deadline: proposal.deadline || 0
};
console.log('[Frontend] Преобразованное предложение:', transformedProposal);
return transformedProposal;
});
@@ -776,11 +777,28 @@ function getProposalStatus(proposal) {
const now = Math.floor(Date.now() / 1000);
const deadline = proposal.deadline || 0;
// Проверяем отменено ли предложение
if (proposal.canceled) {
return 'canceled';
}
// Проверяем выполнено ли предложение
if (proposal.executed) {
return 'executed';
}
// Проверяем, достигнут ли кворум
// Используем isPassed из API, если доступно
if (proposal.isPassed !== undefined) {
if (proposal.isPassed) {
return 'succeeded';
} else if (deadline > 0 && now >= deadline) {
return 'defeated';
} else {
return 'active';
}
}
// Fallback логика для старых данных
const quorumPercentage = getQuorumPercentage(proposal);
const requiredQuorum = getRequiredQuorum();
const hasReachedQuorum = quorumPercentage >= requiredQuorum;
@@ -793,7 +811,8 @@ function getProposalStatus(proposal) {
deadlinePassed: deadline > 0 && now >= deadline,
quorumPercentage,
requiredQuorum,
hasReachedQuorum
hasReachedQuorum,
isPassed: proposal.isPassed
});
// Если кворум достигнут, предложение можно выполнить
@@ -815,7 +834,8 @@ function getProposalStatusText(status) {
'active': 'Активно',
'succeeded': 'Принято',
'defeated': 'Отклонено',
'executed': 'Выполнено'
'executed': 'Выполнено',
'canceled': 'Отменено'
};
return statusMap[status] || status;
}
@@ -1719,11 +1739,21 @@ onUnmounted(() => {
color: #0c5460;
}
.proposal-status.executed {
background: #d4edda;
color: #155724;
}
.proposal-status.defeated {
background: #f8d7da;
color: #721c24;
}
.proposal-status.canceled {
background: #fff3cd;
color: #856404;
}
.proposal-details {
margin-bottom: 1rem;
}