Выгрузка по фильтру из БД, заполнение таблицы

5 000 руб. за проект
07 мая 2020, 20:56 • 5 откликов • 59 просмотров
Добрый день!
Необходимо сделать выгрузку из базы данных. Проект реализован.
Админка на laravel + Vue.js (именно в админке нужен новый пункт "Выгрузка")
Клиентская часть написана на Nuxt.js + Vue.js + Node.js (с ней не работаем)


Ниже примерное ТЗ (какие то пункты можно скорректировать/добавить на этапе обсуждения)

1. Добавить дополнительный пункт "Выгрузка" в меню админки, между пунктами "Покупатели" и "Сотрудники".
2. В разделе "Выгрузка" добавить 2 таблицы, форму запроса в БД и кнопку выгрузки согласно макету.
2.1) Заголовки в левой таблице для разработчика, по факту они не нужны.
2.2) Заголовки в правой таблице оставить согласно макету.

3. Количество строк левой таблице генерировать в зависимости от полученного количества категорий.
4. Количество строк правой таблицы:
Количество строк равно количеству строк левой таблицы, реализовать функционал страниц для навигации в правой
таблице если количество строк превышает количество строк левой.
Навигацию по страницам добавить под таблицей, выровнять по правому краю.

5. Ширину столбцов оптимизировать под формат данных для них.
6. Сделать доступ к пункту "Выгрузка" только для администраторов. (выбор доступа к пунктам меню уже есть в проекте, нужно просто добавить новый пункт в этот выбор)
7. Далее комментарии по функционалу.

Основная суть запросов в бд + комментарии к макету:

При переходе в пункт "Выгрузка" получить список категорий и регионов из бд.
datalist содержит список полученных регионов
input date принимает диапазон дат
input number принимает числовое значение (только положительные числа)
datalist-button кнопка отправляет запрос в БД с заданными фильтрами, где:
- datalist – Регион поставщика
- input-date – диапазон дат регистраций (если дата рег. поставщика попадает в диапазон – выгружаем)
- input-number – значение поля Company_bid в БД. (если у компании значение поля меньше либо равно заданной цифре - выгружаем)

При нажатии проверять заполненные поля, поле datalist обязательно для заполнения, остальные опционально,
если пустые – не включать их в запрос.
==================================================================================================== ========
Логика заполнения:

Левая таблица:

Столбец Category item заполняется согласно полученным категориям при переходе в
пункт "Выгрузка".

При нажатии на datalist-button получить поставщиков из базы согласно выбранным параметрам,
разбить результат на id категорий.
Заполнить столбец Count количеством поставщиков в той или иной категории
(count = Category item (id) length)
В столбце button добавить кнопку к каждой строке.
Блокировать нажатую кнопку button в текущей строке до перезагрузки страницы или нового запроса в БД (нажатием на кнопку datalist-button).


Правая таблица:

При нажатии на button в строке с категорией (левая таблица) заполнить правую таблицу
данными из этой категории согласно заголовкам в макете.
(Важно!) При нажатии на button в других строках левой таблицы дополнять данные в правой таблице,
не обновлять её! При добавлении данных проверять текущие значения в правой таблице, если найдены
совпадения в ячейках "e-mail" и "ИНН" – НЕ ДОБАВЛЯТЬ строку (в правой таблице нужны уникальные значения).
При повторном запросе в БД (нажатием на кнопку datalist-button) очистить правую таблицу (кроме заголовков).
При нажатии на Exel-button выгрузить файл CSV с заголовками и полными данными из правой таблицы
(Важно! Если в правой таблице несколько страниц – выгружать все данные, не только с текущей страницы)
Windows-1251.
Файлы
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Хороший специалист! Заинтересован в задаче, вежлив и отвечает на все интересующие вопросы. Будем обращаться ещё.
6 месяцев назад
R50 b2ed054cc9efa8828a696ed61e51489c
Фрилансер
Отличный заказчик. Очень приятно было общаться. Тз очень понятное и точное. Был очень доволен работать. Все вопросы решались оперативно, в ходе работы заказчик помогал на все 100 процентов. Надеюсь удастся поработать ещё.
5 месяцев назад