2 <div v-if="!initialized">{{ $t("Loading") }}</div>
3 <div v-else id="licenses_add">
4 <h2 v-if="license.license_id">
5 {{ $t("Edit license .id", { id: license.license_id }) }}
7 <h2 v-else>{{ $t("New license") }}</h2>
9 <form @submit="onSubmit($event)">
10 <fieldset class="rows">
13 <label class="required" for="license_name"
14 >{{ $t("License name") }}:</label
18 v-model="license.name"
19 :placeholder="$t('License name')"
22 <span class="required">{{ $t("Required") }}</span>
25 <label for="license_vendor_id"
26 >{{ $t("Vendor") }}:</label
29 id="license_vendor_id"
30 v-model="license.vendor_id"
32 :reduce="(vendor) => vendor.id"
37 <label for="license_description"
38 >{{ $t("Description") }}:
41 id="license_description"
42 v-model="license.description"
43 :placeholder="$t('Description')"
48 <span class="required">{{ $t("Required") }}</span>
51 <label for="license_type">{{ $t("Type") }}:</label>
54 v-model="license.type"
56 :reduce="(av) => av.authorised_value"
57 :options="av_license_types"
59 <template #search="{ attributes, events }">
61 :required="!license.type"
68 <span class="required">{{ $t("Required") }}</span>
71 <label for="license_status"
72 >{{ $t("Status") }}:</label
76 v-model="license.status"
77 :reduce="(av) => av.authorised_value"
78 :options="av_license_statuses"
81 <template #search="{ attributes, events }">
83 :required="!license.status"
90 <span class="required">{{ $t("Required") }}</span>
93 <label for="started_on"
94 >{{ $t("Start date") }}:</label
98 v-model="license.started_on"
100 data-date_to="ended_on"
104 <label for="ended_on">{{ $t("End date") }}:</label>
107 v-model="license.ended_on"
111 <Documents :documents="license.documents" />
114 <fieldset class="action">
115 <input type="submit" :value="$t('Submit')" />
117 to="/cgi-bin/koha/erm/licenses"
120 >{{ $t("Cancel") }}</router-link
129 import { inject } from 'vue'
130 import flatPickr from 'vue-flatpickr-component'
131 import Documents from './Documents.vue'
132 import { setMessage, setError } from "../../messages"
133 import { fetchLicense } from '../../fetch'
134 import { storeToRefs } from "pinia"
139 const vendorStore = inject('vendorStore')
140 const { vendors } = storeToRefs(vendorStore)
142 const AVStore = inject('AVStore')
146 } = storeToRefs(AVStore)
156 fp_config: flatpickr_defaults, dates_fixed: 0,
165 started_on: undefined,
173 if (!this.dates_fixed) {
174 this.license.started_on = $date(this.license.started_on)
175 this.license.ended_on = $date(this.license.ended_on)
179 beforeRouteEnter(to, from, next) {
181 if (to.params.license_id) {
182 vm.license = vm.getLicense(to.params.license_id)
184 vm.initialized = true
189 async getLicense(license_id) {
190 const license = await fetchLicense(license_id)
191 this.license = license
192 this.initialized = true
197 let license = JSON.parse(JSON.stringify(this.license)) // copy
198 let apiUrl = '/api/v1/erm/licenses'
201 if (license.license_id) {
203 apiUrl += '/' + license.license_id
205 delete license.license_id
206 delete license.vendor
208 if (license.vendor_id == "") {
209 license.vendor_id = null
212 license.started_on = license.started_on ? $date_to_rfc3339(license.started_on) : null
213 license.ended_on = license.ended_on ? $date_to_rfc3339(license.ended_on) : null
215 license.documents = license.documents.map(({ file_type, uploaded_on, ...keepAttrs }) => keepAttrs)
219 body: JSON.stringify(license),
221 'Content-Type': 'application/json;charset=utf-8'
225 fetch(apiUrl, options)
227 if (response.status == 200) {
228 this.$router.push("/cgi-bin/koha/erm/licenses")
229 setMessage(this.$t("License updated"))
230 } else if (response.status == 201) {
231 this.$router.push("/cgi-bin/koha/erm/licenses")
232 setMessage(this.$t("License created"))
234 setError(response.message || response.statusText)
238 }).catch(e => { console.log(e) })
245 name: "LicensesFormAdd",