Добавление проектов
Добавили возможность создавания разных проектов.
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user