add additional text

This commit is contained in:
aarizona 2024-05-30 13:44:38 +03:00
parent 15c54bd3e6
commit 66a298e101
2 changed files with 18 additions and 7 deletions

View File

@ -162,6 +162,7 @@ class ElementViewSet(viewsets.ModelViewSet):
inventory=inventory_object, inventory=inventory_object,
external_id=data["element"], external_id=data["element"],
element_id=data["element_id"], element_id=data["element_id"],
additional_text=data["element_additional_data"],
) )
element_serializer = ElementSerializer(element_item, many=False) element_serializer = ElementSerializer(element_item, many=False)

View File

@ -20,6 +20,7 @@ type StateDataType = {
inventory?: string inventory?: string
element?: string element?: string
element_id?: string element_id?: string
element_additional_data?: string
} }
const loading = ref(false) const loading = ref(false)
const state = reactive<StateDataType>({ const state = reactive<StateDataType>({
@ -27,7 +28,8 @@ const state = reactive<StateDataType>({
categories: [], categories: [],
inventory: route.params.inv_id as string || undefined, inventory: route.params.inv_id as string || undefined,
element: undefined, element: undefined,
element_id: undefined element_id: undefined,
element_additional_data: undefined
}) })
const external_data = reactive<ExternalDataType>({ const external_data = reactive<ExternalDataType>({
partner: [], partner: [],
@ -43,6 +45,7 @@ const validate = (state: any): FormError[] => {
errors.push({ path: 'partner', message: txt }) errors.push({ path: 'partner', message: txt })
} }
if (!state.element_id) errors.push({ path: 'element_id', message: txt }) if (!state.element_id) errors.push({ path: 'element_id', message: txt })
if (!state.element_additional_data) errors.push({ path: 'element_additional_data', message: txt })
return errors return errors
} }
@ -131,7 +134,9 @@ onMounted(async () => {
searchable-placeholder="Выберите организацию из списка контрагентов" :loading="loading" searchable-placeholder="Выберите организацию из списка контрагентов" :loading="loading"
:disabled="!!props.partner" /> :disabled="!!props.partner" />
</UFormGroup> </UFormGroup>
<UFormGroup label="Добавить элемент инвентаризации" v-if="state.partner"> <UFormGroup label="Добавить элемент инвентаризации" v-if="state.partner" :help="!external_data.element?.length ? `Последовательно
выбирайте категорию. Если все выбрали, а элементов нет -
значит в этой категории нет элементов`: ''">
<template v-for="(item, i) in external_data.categories"> <template v-for="(item, i) in external_data.categories">
<USelectMenu v-model="(state.categories as string[])[i]" :options="item" <USelectMenu v-model="(state.categories as string[])[i]" :options="item"
value-attribute="Ref_Key" option-attribute="Description" :searchable="true" value-attribute="Ref_Key" option-attribute="Description" :searchable="true"
@ -143,11 +148,16 @@ onMounted(async () => {
:searchable="true" :loading="loading" :searchable="true" :loading="loading"
:placeholder="`Элементы (${external_data.element.length})`" /> :placeholder="`Элементы (${external_data.element.length})`" />
</UFormGroup> </UFormGroup>
<UFormGroup v-if="state.element" <div v-if="state.element">
:label="`Данные об элементе «${external_data.element?.find(el => el['Ref_Key'] === state.element)?.Description}»`" <h4>Данные об элементе «{{ external_data.element?.find(el => el['Ref_Key'] ===
name="element_id"> state.element)?.Description }}»</h4>
<UInput placeholder="ID" v-model="state.element_id" /> <UFormGroup label="ID" name="element_id">
</UFormGroup> <UInput placeholder="ID" v-model="state.element_id" />
</UFormGroup>
<UFormGroup label="Дополнительные сведения" name="element_additional_data">
<UTextarea placeholder="ID" v-model="state.element_additional_data" />
</UFormGroup>
</div>
<UButton type="submit" :disabled="!state.element_id"> <UButton type="submit" :disabled="!state.element_id">
Сохранить Сохранить