1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

add websockets support

This commit is contained in:
MoonTestUse1
2025-01-05 01:28:50 +06:00
parent 7997184442
commit 3ccd6c1e96
2 changed files with 44 additions and 20 deletions

View File

@@ -93,22 +93,37 @@ const fetchData = async () => {
}
// Обработчик WebSocket сообщений
const handleWebSocketMessage = (data: any) => {
const handleWebSocketMessage = async (data: any) => {
if (data.type === 'new_request') {
// Обновляем статистику при получении новой заявки
statistics.value.total++
statistics.value.by_status.NEW = (statistics.value.by_status.NEW || 0) + 1
// Добавляем новую заявку в начало списка
requests.value.unshift(data.data)
try {
// Получаем актуальную статистику
const statsResponse = await axios.get('/api/requests/statistics')
statistics.value = statsResponse.data
// Получаем детали новой заявки
const requestResponse = await axios.get(`/api/requests/admin?limit=1`)
if (requestResponse.data && requestResponse.data.length > 0) {
const newRequest = requestResponse.data[0]
// Добавляем новую заявку в начало списка
requests.value = [newRequest, ...requests.value]
}
} catch (error) {
console.error('Error updating data:', error)
}
} else if (data.type === 'status_update') {
// Обновляем статус заявки в списке
const request = requests.value.find(r => r.id === data.data.id)
if (request) {
const oldStatus = request.status
request.status = data.data.status
// Обновляем статистику
statistics.value.by_status[oldStatus]--
statistics.value.by_status[data.data.status] = (statistics.value.by_status[data.data.status] || 0) + 1
try {
// Получаем актуальную статистику
const statsResponse = await axios.get('/api/requests/statistics')
statistics.value = statsResponse.data
// Обновляем статус заявки в списке
const request = requests.value.find(r => r.id === data.data.id)
if (request) {
request.status = data.data.status
}
} catch (error) {
console.error('Error updating status:', error)
}
}
}