Appearance
apps/panel 0.81.1
Дата выпуска: 15 сентября 2026 года. Предыдущая версия: 0.81.0.
Что изменилось
Экраны списка и операции
- На экране списка терминал оператора показывает поиск, фильтры, карточки операций и блок команд. Шапка операции и нижняя панель с секциями появляются, только когда оператор открывает операцию, а кнопка «К списку» снова их убирает. Раньше шапка появлялась сразу после выбора карточки, а нижняя панель оставалась на экране списка и до выбора карточки показывала прочерки.
- Кнопка «Выход» есть только на экране списка — с выбранной карточкой и без неё — и, как и раньше, рядом с ошибками конфигурации. На экране операции её место в блоке команд занимает «К списку». Раньше обе кнопки были видны всегда, а «К списку» оставалась отключённой, пока не выбрана карточка.
- Карточки занимают меньше места по высоте.
- В широкой нижней панели производственные показатели занимают только нужную им ширину, а остальное место в строке отдано сведениям об операции.
- Над списком задач больше нет заголовка «Задачи операции». Под кругом таймера при обычном ходе времени больше не выводится подпись «Остаток времени»; экранный диктор по-прежнему называет значение остатком времени. Подписи паузы, предупреждения и просрочки сохранились.
Подзаголовок карточки
- Новая необязательная настройка
terminalConfig.cardSubtitleдобавляет под заголовком карточки, перед строками полей, одну строку приглушённого цвета. Она устроена так же, какcardTitle: упорядоченный массивpartsиз частейtext,attributeилиcontextи необязательныйcolor, безlabelиcolSpan. Текст длиннее одной строки обрезается многоточием, а полное значение показывается в подсказке — как у другого обрезанного текста карточки. Без этой настройки строки подзаголовка у карточек нет. - Ещё до чтения операций проверка конфигурации применяет к
cardSubtitleте же правила, что и кcardTitle. Неверное значение попадает в список ошибок со своим путём, напримерpanel.terminalConfig.cardSubtitle.parts, и операции не читаются. Как и в заголовке, часть{ "context": "materialInstance" }на карточках всегда показывает—.
Чтение операций из настроенного источника
- С
metaTypeNameтерминал при открытии панели и при каждой смене страницы отправляет запросPOST /Object/findс лимитом 20 объектов и берёт общее число подходящих объектов изpagination.totalRecordCountв ответе. Поэтому счётчик «Операции», номер страницы и кнопка «Далее» учитывают все подходящие объекты. Раньше терминал считал только объекты текущей страницы: показывал «Страница 1 / 1», кнопка «Далее» оставалась отключённой, и открыть объекты после первых 20 было нельзя. - Если в ответе нет числового
pagination.totalRecordCount, терминал не угадывает число страниц, а показывает ошибку чтенияTerminal list request requires a total record count. Повторное чтение пройдёт, только когда API начнёт возвращать это количество. - С
customRequestтерминал строит атрибуты отображения из каждой исходной строки ответа. Если в строке есть массивfAttributes, используется он; иначе атрибутами становятся все поля строки, в том числе поля с именамиobjectGuid,type,linkedObject,fAttributesиattributesMap. Раньше строка без собственного поляtypeилиobjectGuidпоказывала в этих атрибутах служебные значения панелиcustomObjectиcustom-<n>, строка с полемlinkedObjectпрерывала чтение, а полеattributesMapмогло привести к неверным значениям или прочеркам на карточке. - Каждой строке ответа
customRequestпо-прежнему нужен уникальный идентификатор в поле, заданном черезcustomRequest.idField(по умолчаниюid). Теперь терминал проверяет весь массив ответа: если у двух строк один идентификатор, даже на разных страницах, чтение останавливается с ошибкойCustom terminal rows require unique identifiers. Перед повтором исправьте данные источника. Раньше такие строки принимались, и при открытии одной из них могла открыться другая.
Ошибки чтения, страницы и формы
- Номер страницы меняется только после того, как новая страница прочитана. Раньше при неудачном чтении уже показывался новый номер, хотя на экране оставались карточки предыдущей страницы.
- «Обновить состояние» в сообщении об ошибке и «Обновить» в блоке команд повторяют именно то чтение, которое не удалось. Если не удалось выбрать или открыть операцию, терминал снова читает эту операцию, а если её открывали — снова открывает. Раньше эти кнопки заново читали список операций и возвращали к нему.
- «Отмена» закрывает форму команды и отбрасывает черновик, не запрашивая инструкцию повторно. Раньше в демонстрации отмена могла заново запустить чтение инструкции.
- Если при переходе между списком и операцией, при открытии или закрытии формы исчезает кнопка с фокусом, фокус клавиатуры переходит в рабочую область терминала. Раньше он переходил на страницу целиком.
Плановый старт
- Значение «Плановый старт» на карточке разбирается общим механизмом дат панели. Даты в формате
DD.MM.YYYY HH:mm:ssчитаются как день, месяц и год; раньше такая дата могла отображаться прочерком или с переставленными днём и месяцем. Даты сZили смещением показываются в часовом поясе устройства, а даты без часового пояса сохраняют свои календарную дату и время.
Демонстрация
- В качестве документа все демонстрационные операции показывают один и тот же образец инженерного чертежа в формате JPEG вместо сгенерированного PNG-листа. Это не производственная документация.
- Заголовок карточки показывает только название операции. Демонстрационная конфигурация выводит код операции в
cardSubtitle, поэтому на первой карточке подСборка корпусавидна строкаОП-001; в нижней панели код по-прежнему виден. - У
ОП-002длинные название, заказ, рабочее место и материал: его карточка показывает, как обрезаются длинные значения, а экран операции — как они переносятся. - Если
NUXT_PUBLIC_API_PREFIXзаканчивается на/local-api, например/base/local-api, демонстрационный терминал работает в учебном режиме и отправляет чтение операций, чтение инструкций и команды с этим префиксом. Завершающий слеш не учитывается. Среда должна обслуживать демонстрационный API по этому пути. Раньше учебный режим включался только при префиксе ровно/local-api, а с любым другим префиксом демонстрационный терминал открывался только для чтения.
Настройка
cardSubtitle необязателен, существующие конфигурации менять не нужно. Чтобы показать код операции под заголовком карточки, добавьте в панель терминала terminalConfig.cardSubtitle. В примере operations-read — пример ID панели, а code — путь атрибута с кодом операции из примера WorkOrderOperation в руководстве; используйте имена атрибутов из контракта WorkOrderOperation вашей среды. Укажите атрибут в attributeList, чтобы терминал его запросил:
json
{
"version": "1.0.0",
"panel": {
"id": "operations-read",
"type": "operatorTerminal",
"request": {
"metaTypeName": "WorkOrderOperation",
"attributeList": ["name", "code"]
},
"terminalConfig": {
"cardSubtitle": {
"parts": [{ "attribute": "code" }]
}
}
}
}Настройки, не указанные в terminalConfig, сохраняют встроенные значения, поэтому заголовок по-прежнему показывает name. Встроенные строки карточки читают workOrder, selectedWorkUnit.name и materialDefinition; добавьте их в attributeList, иначе в этих строках будут прочерки. Цвет color и правила проверки описаны в разделе о подзаголовке карточки.
Известные ограничения
- Плашка времени старта на карточке по-прежнему разбирает даты без часового пояса собственным механизмом браузера. Для значения
DD.MM.YYYY HH:mm:ssона может показать прочерк или отсчитывать время до другой даты, чем «Плановый старт». Демонстрация возвращает даты с явно заданным часовым поясом, поэтому её это не касается. - Настроенный источник WorkOrderOperation по-прежнему работает только для чтения: документы, задачи, команды и таймер действуют только в демонстрации, а к SignalR терминал не подключён.
Обновлённая документация
- В руководстве по терминалу оператора описаны раздельные экраны списка и операции, расположение кнопок «Выход» и «К списку» и то, как после ошибки чтения ведут себя страницы и кнопки «Обновить состояние» и «Отмена».
- Раздел об источнике операций описывает обязательное общее количество для
metaTypeNameи правила атрибутов и идентификаторов дляcustomRequest. В разделе о подписях и составе значений объяснено, что обычное вложенное значение JSON в строке нестандартного источника показывается прочерком, и приведён форматfAttributes, который терминал умеет читать. - Раздел о подзаголовке карточки описывает новую настройку, а также заголовок и подзаголовок в демонстрации. Раздел о нижней панели и таймере рассказывает о датах планового старта и подписи таймера, а минимальная конфигурация демо перечисляет префиксы API, при которых включается учебный режим.