2 <div v-if="!this.initialized">{{ $t("Loading") }}</div>
3 <div v-else id="packages_add">
4 <h2 v-if="erm_package.package_id">
5 {{ $t("Edit package .id", { id: erm_package.package_id }) }}
7 <h2 v-else>{{ $t("New package") }}</h2>
9 <form @submit="onSubmit($event)">
10 <fieldset class="rows">
13 <label class="required" for="package_name"
14 >{{ $t("Package name") }}:</label
18 v-model="erm_package.name"
19 :placeholder="$t('Package name')"
22 <span class="required">{{ $t("Required") }}</span>
25 <label for="package_vendor_id"
26 >{{ $t("Vendor") }}:</label
29 id="package_vendor_id"
30 v-model="erm_package.vendor_id"
32 <option value=""></option>
34 v-for="vendor in vendors"
35 :key="vendor.vendor_id"
38 vendor.id == erm_package.vendor_id
48 <label for="package_type">{{ $t("Type") }}:</label>
51 v-model="erm_package.package_type"
53 <option value=""></option>
55 v-for="type in av_package_types"
56 :key="type.authorised_values"
57 :value="type.authorised_value"
59 type.authorised_value ==
60 erm_package.package_type
70 <label for="package_content_type">{{
74 id="package_content_type"
75 v-model="erm_package.content_type"
77 <option value=""></option>
79 v-for="type in av_package_content_types"
80 :key="type.authorised_values"
81 :value="type.authorised_value"
83 type.authorised_value ==
84 erm_package.content_type
94 <EHoldingsPackageAgreements
95 :package_agreements="erm_package.package_agreements"
99 <fieldset class="action">
100 <input type="submit" value="Submit" />
102 to="/cgi-bin/koha/erm/eholdings/packages"
105 >{{ $t("Cancel") }}</router-link
114 import EHoldingsPackageAgreements from "./EHoldingsPackageAgreements.vue"
115 import { useVendorStore } from "../../stores/vendors"
116 import { useAVStore } from "../../stores/authorised_values"
117 import { setMessage, setError } from "../../messages"
118 import { fetchPackage } from '../../fetch'
119 import { storeToRefs } from "pinia"
123 const vendorStore = useVendorStore()
124 const { vendors } = storeToRefs(vendorStore)
125 const AVStore = useAVStore()
128 av_package_content_types,
129 } = storeToRefs(AVStore)
134 av_package_content_types,
145 package_agreements: [],
150 beforeRouteEnter(to, from, next) {
152 if (to.params.package_id) {
153 vm.erm_package = vm.getPackage(to.params.package_id)
155 vm.initialized = true
160 async getPackage(package_id) {
161 const erm_package = await fetchPackage(package_id)
162 this.erm_package = erm_package
163 this.initialized = true
168 let erm_package = JSON.parse(JSON.stringify(this.erm_package)) // copy
169 let apiUrl = '/api/v1/erm/eholdings/packages'
172 if (erm_package.package_id) {
174 apiUrl += '/' + erm_package.package_id
176 delete erm_package.package_id
177 delete erm_package.resources
178 delete erm_package.vendor
179 delete erm_package.resources_count
181 erm_package.package_agreements = erm_package.package_agreements.map(({ package_id, agreement, ...keepAttrs }) => keepAttrs)
185 body: JSON.stringify(erm_package),
187 'Content-Type': 'application/json;charset=utf-8'
191 fetch(apiUrl, options)
193 if (response.status == 200) {
194 this.$router.push("/cgi-bin/koha/erm/eholdings/packages")
195 setMessage(this.$t("Package updated"))
196 } else if (response.status == 201) {
197 this.$router.push("/cgi-bin/koha/erm/eholdings/packages")
198 setMessage(this.$t("Package created"))
200 setError(response.message || response.statusText)
204 }).catch(e => { console.log(e) })
208 EHoldingsPackageAgreements,
210 name: "EHoldingsPackagesFormAdd",