добавление выгрузки

This commit is contained in:
2026-04-07 10:41:21 +10:00
parent 30e99d3b2c
commit 4a57d68c8c
9 changed files with 199 additions and 128 deletions

View File

@@ -0,0 +1,81 @@
<template>
<div
class="dark:bg-gray-800 mt-5 sm:m-5 bg-white p-4 hover:-translate-y-2 hover:shadow-2xl border-slate-100 rounded-xl transition"
>
<div class="flex flex-wrap items-center gap-2 w-full justify-between">
<!-- Поля ввода дат в одной строке -->
<div class="flex items-center gap-2 flex-grow max-w-120">
<span class="dark:text-neutral-300 whitespace-nowrap">с</span>
<DatePicker v-model="data_start" />
<span class="dark:text-neutral-300 whitespace-nowrap">по</span>
<DatePicker v-model="data_finish" />
</div>
<!-- Кнопка выгрузки -->
<button
class="dark:bg-orange-500 hover:dark:bg-orange-600 shadow text-white bg-sky-700 hover:bg-sky-900 rounded-xl px-2 min-h-11 cursor-pointer w-full sm:w-auto sm:min-w-40 flex-shrink-0"
@click="downloadAll"
>
Выгрузить
</button>
</div>
</div>
</template>
<script setup>
import { ref } from "vue";
import axios from "axios";
import DatePicker from "./DatePicker.vue";
// Переменные для выгрузки с датами по умолчанию
const data_start = ref(getYesterdayDate());
const data_finish = ref(getTodayDate());
// Функция для получения вчерашней даты в формате YYYY-MM-DD
function getYesterdayDate() {
const date = new Date();
date.setDate(date.getDate() - 1);
return date.toISOString().split("T")[0];
}
// Функция для получения сегодняшней даты в формате YYYY-MM-DD
function getTodayDate() {
return new Date().toISOString().split("T")[0];
}
// Выгрузка
const downloadAll = async () => {
try {
const response = await axios.post(
// "http://127.0.0.1:8001/download_all",
"https://allowlgroup.ru/api/8001/download_all",
{
data_start: data_start.value,
data_finish: data_finish.value,
},
{
responseType: "blob",
},
);
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement("a");
link.href = url;
link.setAttribute(
"download",
`documents_${data_start.value}_${data_finish.value}.zip`,
);
document.body.appendChild(link);
link.click();
link.remove();
window.URL.revokeObjectURL(url);
} catch (error) {
console.error("Ошибка при выгрузке:", error);
}
};
</script>