Skip to content

apps/panel 0.81.1 ​

English · Русский

Дата выпуска: 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 терминал не подключён.

Обновлённая документация ​