1
0

Добавление проектов

Добавили возможность создавания разных проектов.
This commit is contained in:
2026-01-14 10:46:38 +07:00
parent 04e88cb7fa
commit 719aecd09e
22 changed files with 996 additions and 233 deletions

View File

@@ -7,6 +7,7 @@
:column="column"
:departments="departments"
:labels="labels"
:done-column-id="doneColumnId"
@drop-card="handleDropCard"
@open-task="(card) => emit('open-task', { card, columnId: column.id })"
@create-task="emit('create-task', column.id)"
@@ -23,6 +24,7 @@ import { cardsApi } from '../api'
const props = defineProps({
activeDepartment: Number,
doneColumnId: Number,
departments: {
type: Array,
default: () => []
@@ -55,15 +57,13 @@ onUpdated(refreshIcons)
// Локальная копия карточек для optimistic UI
const localCards = ref([])
// Синхронизируем с props при загрузке данных
// Синхронизируем с props при загрузке/смене проекта
watch(() => props.cards, (newCards) => {
if (newCards.length > 0 && localCards.value.length === 0) {
// Первая загрузка - копируем данные и добавляем order если нет
localCards.value = JSON.parse(JSON.stringify(newCards)).map((card, idx) => ({
...card,
order: card.order ?? idx
}))
}
// Копируем данные и добавляем order если нет
localCards.value = JSON.parse(JSON.stringify(newCards)).map((card, idx) => ({
...card,
order: card.order ?? idx
}))
}, { immediate: true })
// Собираем колонки с карточками (используем localCards, сортируем по order)
@@ -117,7 +117,8 @@ const inProgressTasks = computed(() => {
})
const completedTasks = computed(() => {
const col = filteredColumns.value.find(c => c.id === 4) // Готово
if (!props.doneColumnId) return 0
const col = filteredColumns.value.find(c => c.id === props.doneColumnId)
return col ? col.cards.length : 0
})
@@ -134,15 +135,13 @@ const handleDropCard = async ({ cardId, fromColumnId, toColumnId, toIndex }) =>
const card = localCards.value.find(c => c.id === cardId)
if (!card) return
const doneColumnId = window.APP_CONFIG.COLUMN_DONE_ID
// Локально обновляем для мгновенного отклика
card.column_id = toColumnId
// Обновляем date_closed при перемещении в/из колонки "Готово"
if (toColumnId === doneColumnId && fromColumnId !== doneColumnId) {
if (props.doneColumnId && toColumnId === props.doneColumnId && fromColumnId !== props.doneColumnId) {
card.date_closed = new Date().toISOString()
} else if (fromColumnId === doneColumnId && toColumnId !== doneColumnId) {
} else if (props.doneColumnId && fromColumnId === props.doneColumnId && toColumnId !== props.doneColumnId) {
card.date_closed = null
}
@@ -203,6 +202,7 @@ const saveTask = async (taskData, columnId) => {
// Отправляем на сервер
const result = await cardsApi.create({
id_project: taskData.id_project,
id_department: taskData.departmentId,
id_label: taskData.labelId,
id_account: taskData.accountId,