| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <template>
- <LayoutCommonSection>
- <v-row>
- <v-col cols="12" sm="12">
- <h4 class="mb-8">{{ $t('general_informations') }}</h4>
- <UiInputText
- v-model="entity.name"
- field="name"
- :rules="getAsserts('name')"
- />
- <span class="label">{{$t('datetimeStart')}}</span>
- <UiInputDateTimePicker
- v-model="entity.datetimeStart"
- field="datetimeStart"
- label="datetimeStart"
- :withTimePicker="true"
- class="my-2"
- :rules="getAsserts('datetimeStart')"
- validate-on-blur
- @update:model-value="onUpdateDateTimeStart(entity, $event)"
- />
- <span class="label">{{$t('datetimeEnd')}}</span>
- <UiInputDateTimePicker
- v-model="entity.datetimeEnd"
- field="datetimeEnd"
- label="datetimeEnd"
- :withTimePicker="true"
- class="my-2"
- :rules="getAsserts('datetimeEnd')"
- @update:model-value="onUpdateDateTimeEnd(entity, $event)"
- />
- <span class="label">{{$t('description')}}</span>
- <UiInputTextArea
- class="mt-3"
- v-model="entity.description"
- />
- <UiInputTreeSelectEventCategories
- v-model="entity.categories"
- label="event_categories_choices"
- />
- <UiInputImage
- v-model="entity.image"
- field="image"
- :width="240"
- :cropping-enabled="true"
- />
- </v-col>
- </v-row>
- </LayoutCommonSection>
- <LayoutCommonSection>
- <v-row>
- <v-col cols="12">
- <h4 class="mb-8">{{ $t('place_event') }}</h4>
- <UiInputAutocompleteApiResources
- v-model="entity.place"
- field="place"
- :model="PlaceSearchItem"
- listValue="id"
- listLabel="name"
- v-if="!newPlace"
- />
- <div class="d-flex justify-center"
- v-if="!newPlace"
- >
- <v-btn
- prepend-icon="fa-solid fa-plus"
- class="my-5"
- @click="onAddPlaceClick(entity)"
- >
- {{ $t('add_place') }}
- </v-btn>
- </div>
- <UiInputText v-if="newPlace" v-model="entity.placeName" field="placeName" />
- <UiInputText v-if="newPlace" v-model="entity.streetAddress" field="streetAddress" />
- <UiInputText v-if="newPlace" v-model="entity.streetAddressSecond" field="streetAddressSecond" />
- <UiInputText v-if="newPlace" v-model="entity.streetAddressThird" field="streetAddressThird" />
- <UiInputText v-if="newPlace" v-model="entity.postalCode" field="postalCode" />
- <UiInputText v-if="newPlace" v-model="entity.addressCity" field="addressCity" />
- <UiInputAutocompleteApiResources
- v-if="newPlace"
- v-model="entity.addressCountry"
- field="addressCountry"
- :model="Country"
- listValue="id"
- listLabel="name"
- />
- <client-only>
- <UiMapLeaflet
- v-if="newPlace"
- v-model:latitude="entity.latitude"
- v-model:longitude="entity.longitude"
- :streetAddress="entity.streetAddress"
- :streetAddressSecond="entity.streetAddressSecond"
- :streetAddressThird="entity.streetAddressThird"
- :postalCode="entity.postalCode"
- :addressCity="entity.addressCity"
- :addressCountryId="entity.addressCountry"
- :searchButton="true"
- ></UiMapLeaflet>
- </client-only>
- </v-col>
- </v-row>
- </LayoutCommonSection>
- <LayoutCommonSection>
- <v-row>
- <v-col cols="12">
- <h4 class="mb-8">{{ $t('communication_params') }}</h4>
- <UiInputText v-model="entity.url" field="url" />
- <UiInputAutocompleteEnum
- v-model="entity.pricing"
- enum-name="pricing_event"
- field="pricing"
- />
- <UiInputText v-if="entity.pricing==='PAID'" v-model="entity.urlTicket" field="urlTicket" />
- <UiInputNumber v-if="entity.pricing==='PAID'" v-model="entity.priceMini" field="priceMini" />
- <UiInputNumber v-if="entity.pricing==='PAID'" v-model="entity.priceMaxi" field="priceMaxi" />
- </v-col>
- </v-row>
- </LayoutCommonSection>
- </template>
- <script setup lang="ts">
- import Event from "~/models/Freemium/Event";
- import {getAssertUtils} from "~/services/asserts/getAssertUtils";
- import DateUtils from "~/services/utils/dateUtils";
- import Country from "~/models/Core/Country";
- import PlaceSearchItem from "~/models/Custom/Search/PlaceSearchItem";
- const props = defineProps<{
- entity: Event
- }>()
- const getAsserts = (key) => getAssertUtils(Event.getAsserts(), key)
- const onUpdateDateTimeStart = (entity, dateTime) =>{
- if(DateUtils.isBefore(props.entity.datetimeEnd, dateTime, false)){
- entity.datetimeEnd = dateTime
- }
- }
- const onUpdateDateTimeEnd = (entity, dateTime) =>{
- if(DateUtils.isBefore(dateTime, props.entity.datetimeStart, false)){
- entity.datetimeStart = dateTime
- }
- }
- const newPlace: Ref<boolean> = ref(false)
- const onAddPlaceClick = function(entity: Event){
- newPlace.value = true
- entity.placeName = null
- entity.streetAddress = null
- entity.streetAddressSecond = null
- entity.streetAddressThird = null
- entity.addressCity = null
- entity.postalCode = null
- entity.addressCountry = null
- entity.place = null
- }
- </script>
- <style scoped lang="scss">
- .label{
- font-size: 16px;
- color: rgb(var(--v-theme-on-primary-alt));
- }
- </style>
|