This commit is contained in:
Kseninia Mikhaylova 2025-06-24 13:41:59 +03:00
parent f753090fe5
commit 3a386996bb
1 changed files with 38 additions and 1 deletions

View File

@ -17,9 +17,10 @@ const {
} = useKompasActions()
const selectedAction = ref()
watch(selectedAction, ()=>{
watch(selectedAction, () => {
selectedTypes.value = availableActions.value[selectedAction.value].allowedTypes
})
// Синхронизация с КОМПАС
async function syncKompas() {
try {
@ -38,7 +39,34 @@ async function syncKompas() {
alert('Не удалось получить список документов из КОМПАС')
}
}
const canRunAction = computed(() => {
return selectedAction.value && filteredDocuments.value.length > 0
})
async function runSelectedAction() {
if (!selectedAction.value) {
alert('Выберите действие')
return
}
try {
// Отправляем команду на бэкенд
const result = await sendCommandToPython(selectedAction.value)
console.log('Результат выполнения:', result)
if (result && result.status === 'success') {
alert(`Действие "${selectedAction.value}" выполнено успешно!`)
} else if (result && result.status === 'error') {
alert(`Ошибка при выполнении: ${result.error || 'Неизвестная ошибка'}`)
} else {
alert('Не удалось получить результат от сервера')
}
} catch (err) {
console.error('Ошибка при выполнении действия:', err)
alert('Произошла ошибка при выполнении действия')
}
}
</script>
<template>
@ -78,6 +106,7 @@ async function syncKompas() {
</div>
</div>
<!-- Действия -->
<div class="mb-4 p-3 bg-gray-100 rounded shadow-sm">
<h3 class="font-medium mb-2">Действия:</h3>
<div class="flex flex-col gap-2">
@ -87,7 +116,15 @@ async function syncKompas() {
<span class="text-sm">{{ action.label }}</span>
</label>
</div>
<!-- Кнопка выполнения действия -->
<button type="button" @click="runSelectedAction" :disabled="!canRunAction" class="mt-4 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600
disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none
transition">
Выполнить действие
</button>
</div>
<!-- Грид документов -->
<div v-if="filteredDocuments.length" class="mt-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<div v-for="(doc, index) in filteredDocuments" :key="index"