# Глава 10: Фильтры и условия панелей

<iframe width="800" height="436" src="https://player.bilibili.com/player.html?isOutside=true&aid=114031331442969&bvid=BV1pnAreHEME&cid=28477164740&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>

В этой главе мы шаг за шагом достроим панель задач. Если возникнут вопросы — обращайтесь на форум.

Начнём с разбора задания из прошлой главы и продолжим наше путешествие!

### 10.1 Решение задания из предыдущей главы

#### 10.1.1 Статусы и ссылки

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

(Допустим, наша ссылка — `http://xxxxxxx/admin/hliu6s5tp9xhliu6s5tp9x`)

##### Ответ на задание


| Статус<br/>          | Ссылка<br/>                                          |
| -------------------- | ---------------------------------------------------- |
| Не начато<br/>       | hliu6s5tp9xhliu6s5tp9x?task_status=Not started</br>  |
| В работе<br/>        | hliu6s5tp9xhliu6s5tp9x?task_status=In progress</br>  |
| На проверке<br/>     | hliu6s5tp9xhliu6s5tp9x?task_status=To be review</br> |
| Выполнено<br/>       | hliu6s5tp9xhliu6s5tp9x?task_status=Completed</br>    |
| Отменено<br/>        | hliu6s5tp9xhliu6s5tp9x?task_status=Cancelled</br>    |
| В архиве<br/>        | hliu6s5tp9xhliu6s5tp9x?task_status=Archived</br>     |

#### 10.1.2 Добавление множественного поля «Ответственный»

1. **Создание [пользовательского поля](https://docs-cn.nocobase.com/handbook/data-visualization/user/filter#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AD%97%E6%AE%B5)**: создаём поле «Ответственный» множественного выбора и заполняем псевдонимы (или имена пользователей), чтобы быстро выбирать сотрудников при назначении задач.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192339318.png)

2. **В настройке отчёта**: установите условие «Ответственный/Псевдоним содержит Текущий фильтр/Ответственный». Это позволит быстро находить задачи, относящиеся к выбранному ответственному.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192339382.png)

Несколько раз протестируйте фильтр, чтобы убедиться в его работе.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192359351.png)

---

### 10.2 Связываем панель с пользователями

Можно показывать разный контент в зависимости от пользователя:

1. **Установите значение по умолчанию для поля «Ответственный» — «Текущий пользователь/Псевдоним»**: так система автоматически отобразит задачи, связанные с текущим пользователем, повышая удобство работы.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192340770.png)

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192341604.png)

2. **После обновления страницы**: панель автоматически загрузит данные, связанные с авторизованным пользователем. (Не забудьте добавить условие фильтрации по пользователю к нужным графикам.)

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192341915.png)

---

### 10.3 Перестройка фильтрации задач

Возможно, Вы заметили проблему:

После прямого «Установить диапазон данных» в табличном блоке задачи будут заранее ограничены конкретным статусом, и при попытке выбрать другой статус данные окажутся пустыми!

Что делать? Уберём такую фильтрацию данных и попробуем другой подход!

1. **Уберите фильтр по диапазону данных**: чтобы статус не блокировался, и Вы могли гибко менять условия фильтрации.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192342837.png)

2. **Настройте значение по умолчанию для блока фильтра-формы.**

Помните наш [блок фильтра](https://docs-cn.nocobase.com/handbook/ui/blocks/filter-blocks/form)?

Создайте новый блок-форму для фильтрации задач, добавьте поле **Статус** и другие нужные поля — будем использовать их для подстановки значений из URL. (Не забудьте соединить блок фильтра с целевым блоком задач.)

- Установите значение по умолчанию для поля «Статус» — `URL search params/task_status`.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192342708.png)

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192343402.png)

3. **Тестирование новой фильтрации**: меняйте статус сколько угодно, всё переключается свободно.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192343943.gif)

- **Опционально**: чтобы каждый пользователь видел только свои задачи, установите для поля «Ответственный» значение по умолчанию — «Текущий пользователь».

---

### 10.4 Новости, объявления и фокус информации

Доработаем нашу базу документов и выведем нужную информацию на панель!

При длительном управлении документацией материалов становится всё больше, и появляются разные потребности:

- News: фокус на динамике проекта, достижениях, вехах
- Временные объявления и напоминания

#### 10.4.1 Горячая информация (News)

1. **Добавьте поле «Горячая информация»**: в таблицу документов добавьте чекбокс «Горячая информация», отмечающий, является ли документ важной новостью.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192343408.png)

2. **Отметка документа как новости**: выберите любой документ, в форме редактирования добавьте поле «Горячая информация» и поставьте галочку.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192344181.png)

3. **Создание блока «Список»**: вернитесь на панель и создайте [блок «Список»](https://docs-cn.nocobase.com/handbook/ui/blocks/data-blocks/list) > выберите таблицу документов.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192344092.png)

Перетащите блок вправо, выведите «Дата создания» и «Заголовок», подгоните ширину полей и отключите «Показывать заголовок».

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192344920.png)

4. **Отображение горячей информации**:

Чтобы подчеркнуть актуальность, можно одновременно отображать время.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192345763.png)

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192345055.png)

Сортируем по дате создания в обратном порядке — показываем самые свежие новости.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192345348.png)

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192346268.png)

Простое горячее новостное окно готово — участники команды могут следить за важными событиями проекта в любое время!

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192346930.png)

#### 10.4.2 Объявления

Теперь добавим простое публичное объявление: уверены, Вы видели его в нашем онлайн-Demo. Такие временные уведомления не нужно показывать долго и фиксировать в отчётах — это короткие напоминания и сообщения.

1. **Создайте [блок Markdown](https://docs-cn.nocobase.com/handbook/ui/blocks/other-blocks/markdown)**: на свободной области панели добавьте блок Markdown с текстом объявления.

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192346846.png)

Подробнее о Markdown — в нашем официальном Demo, документации или [учебнике «Лёгкая документация»](https://www.nocobase.com/cn/tutorials).

В качестве простого примера ниже — «Эффектное объявление» на HTML, чтобы продемонстрировать возможности [блока Markdown](https://docs-cn.nocobase.com/handbook/ui/blocks/other-blocks/markdown).

- Пример кода:

```html
<div style="font-family: 'Arial', sans-serif; background-color: #e9f5ff; margin: 10px; padding: 10px; border: 2px solid #007bff; border-radius: 10px; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);">
    <h1 style="color: #007bff; text-align: center; font-size: 2em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);">Важное объявление</h1>
    <p style="font-size: 1.2em; line-height: 1.6; color: #333;">Уважаемые коллеги!</p>
    <p style="font-size: 1.2em; line-height: 1.6;">Чтобы повысить эффективность работы, <span style="color: red; font-weight: bold; font-size: 1.5em;">10 ноября</span> состоится общекорпоративный тренинг.</p>
    <p style="font-size: 1.2em; line-height: 1.6; font-style: italic;">Спасибо за участие!</p>
    <p style="font-size: 1.2em; line-height: 1.6;">С уважением,</p>
    <p style="font-size: 1.2em; line-height: 1.6;">Управленческая команда</p>
</div>
```

![](https://static-docs.nocobase.com/nocobase_tutorials_zh/202412192347259.png)

### 10.5 Итог

Мы успешно собрали персонализированную панель: команда может эффективнее управлять задачами, следить за прогрессом проекта и своевременно получать объявления и уведомления.

Фильтрация по статусам и ответственным, настройка горячих новостей — всё это направлено на улучшение пользовательского опыта, повышение удобства и гибкости системы.

Персонализированная панель готова — пробуйте, дорабатывайте под свои задачи и переходите в [следующую главу](https://www.nocobase.com/cn/tutorials/project-tutorial-subtasks-and-work-hours-calculation)!

---

Продолжайте экспериментировать! Если возникнут вопросы — не забывайте о [официальной документации NocoBase](https://docs-cn.nocobase.com/) и [сообществе NocoBase](https://forum.nocobase.com/).
