В проекте можно создавать формы справочников и формы документов. Формы размещаются в каталоге components в подкаталогах Catalogs и Documents соответственно. Для каждой формы прикладного объекта создается отдельный каталог с именем прикладного объекта. Для каждого прикладного объекта можно создать форму списка и форму элемента. Форма списка предназначена для вывода списков документов или списка справочника. Форма элемента предназначена для отображения элемента списка справочника или документа.
Для верстки форм предназначены следующие компоненты:
<d-form-header>
- заголовок формы<d-toolbar>
- командная панель<d-form-element-field>
- поле ввода<d-object-list-form>
- таблица списка<d-tabular-sections>
- табличная часть<template>
)Все формы содержат корневой блок div:
<div ref="Form" class="form">
Для верстки формы существует два типа блока которые размещаются в корневом блоке:
<div class="height-fixed">
- предназначен для размещения компонентов имеющих фиксированную высоту<div class="height-auto">
- предназначен для размещения компонентов с изменяющейся высотойДопускается размещение в блоках, блочных html тегов для корректировки расположения компонентов. В одном блоке может быть расположено несколько компонентов.
В первом блоке допускается размещение следующих компонентов:
<d-form-header>
<d-toolbar>
<d-form-element-field>
Во втором блоке допускается размещение следующих компонентов:
<d-object-list-form>
<d-tabular-sections>
<template>
)<template>
<div ref="Form" class="form"> // корневой блок
<div class="height-fixed"> // блок для элементов с фиксированной высотой
<d-form-header // компонент заголовка
:applied-object="appliedObject"
:object-slug="objectSlug"
></d-form-header>
</div>
<div class="height-fixed">
<d-toolbar :options="optionsToolbar"></d-toolbar> // компонент тулбара формы
</div>
<div class="height-auto"> // блок для элементов с изменяемой высотой
<d-object-list-form // компонент таблиицы списка
ref="FormName"
:applied-object="appliedObject"
:options="formName"
>
</d-object-list-form>
</div>
</div>
</template>
<script>
)В начало секции script формы необходимо импортировать модуль миксина FormList:
import FormList from "../../../../node_modules/da-platform_front/src/mixins/FormList";
В секции export default
необходимо указать:
name
mixins: [FormList]
в секции data
размещается следующая информация:
а. имя прикладного объекта - objectSlug
б. объект с описанием полей таблицы списка:
formName: {
fields: [
{ field: "code", align: "end", width: [null, 96] },
{ field: "name", width: [100] },
],
slug: "FormName",
refRelatedItem: "FormName",
},
<style>
)В секцию <style lang="scss" scoped>
необходимо импортировать стили:
@import "../../../scss/forms/form.scss";
<template>
)<template>
<div ref="Form" class="form"> // корневой блок
<div class="height-fixed"> // блок для элементов с фиксированной высотой
<d-form-header // компонент заголовка
:object-slug="objectSlug"
:applied-object="appliedObject"
></d-form-header>
</div>
<div class="height-fixed">
<d-toolbar // компонент тулбара формы
:options="optionsToolbarList"
></d-toolbar>
</div>
<div class="height-fixed" style="padding-top: 10px">
<div style="width: 150px">
<d-form-element-field
:options="code"
:object-slug="objectSlug"
v-model="appliedObject.code"
></d-form-element-field>
</div>
<div style="padding-top: 20px">
<d-form-element-field
:options="name"
:object-slug="objectSlug"
v-model="appliedObject.name"
></d-form-element-field>
</div>
</div>
<div class="height-fixed">
<d-toolbar :options="optionsToolbarTabcatCharacteristicValue"></d-toolbar> // компонент тулбара табличной части
</div>
<div class="height-auto"> // блок для элементов с изменяемой высотой
<d-tabular-sections // компонент табличной части
ref="TabcatBaseService"
:options="tabcat_characteristic_value"
:object-slug="objectSlug"
v-model="appliedObject.tabcat_characteristic_value"
/>
</div>
</div>
</template>
<script>
)В начало секции script формы необходимо импортировать модуль миксина FormElement:
import FormList from "../../../../node_modules/da-platform_front/src/mixins/FormElement";
В секции export default
необходимо указать:
name
mixins: [FormElement]
в секции data
размещается следующая информация:
а. имя прикладного объекта - objectSlug
б. объекты с описанием полей формы:
code: { field: "code" }, // поле формы
name: { field: "name" },
...
если поле является табличной частью, то необходимо так же описать поля табличной части:
field_tch: { // поле формы
fields: [
{ field: "line_number", width: 120, align: "end" },
{ field: "srvscodenew" },
{ field: "charcode" },
{ field: "indexcharcode" },
{ field: "owner" },
],
field: "field_tch",
refRelatedItem: "TabcatFieldTCh", // ссылка на компонент табличной части
},
computed: {
optionsToolbarTabcatCharacteristicValue() {
return {
...this.optionsToolbarTabularSection,
refRelatedItem: "TabcatCharacteristicValue", // ссылка на компонент табличной части
};
},
},
<style>
)В секцию <style lang="scss" scoped>
необходимо импортировать стили:
@import "../../../scss/forms/form.scss";
В проекте есть возможность создания свободных форм. Допускается размещение таких форм в в подкаталоге каталога components
. Для открытия такой формы необходимо сгенерировать на шину событий следующее событие:
this.$eventBus.$emit('open:freeForm', {
mode: 'free',
path: 'components/FreeForm/FreeFormOne', // путь к форме
tabHeader: 'Свободная форма',
});
Данные с формы можно вернуть в в открывшую ее форму сгенерировав на шину событий следующее событие:
this.$eventBus.$emit('return:selection', {
appliedObject: this.appliedObject,
sourseFormIndex: this.sourseFormIndex,
});
Для закрытия формы необходимо сгенерировать на шину событий следующее событие:
this.$eventBus.$emit('close:form');
<template>
)Верска шаблона свободной формы осуществляется по тем же принципам что и формы списков и формы элементов.
<script>
)В начало секции script формы необходимо импортировать модуль миксина Form:
import Form from "../../../../node_modules/da-platform_front/src/mixins/Form";
В секции export default
необходимо указать:
name
mixins: [Form]
Дальнейшее описание свободной формы зависит от ее назначения.