UNPKG

@opengis/admin

Version:

This project Softpro Admin

155 lines (154 loc) 6.69 kB
import { _ as $, f as d, u as k, s as V } from "./import-file-BgK4s__E.js"; import { resolveComponent as j, createElementBlock as g, openBlock as p, createElementVNode as m, createCommentVNode as b, normalizeClass as x, normalizeStyle as y, createBlock as E } from "vue"; const O = { data() { return { formValues: {}, scheme: null, table: "", token: "", style: null }; }, mounted() { this.getFormScheme(); }, computed: { color() { return V.value.buttonColor || "blue"; } }, methods: { flattenMenu(t) { const e = []; return t.forEach((n) => { n.menu ? e.push(...this.flattenMenu(n.menu)) : e.push(n); }), e; }, async getFormScheme() { var i, r; const t = this.flattenMenu(k.value); t != null && t.length || this.$router.replace("/404"); const e = t == null ? void 0 : t.find((s) => { var a, o; return (s == null ? void 0 : s.path) == ((o = (a = this.$route) == null ? void 0 : a.query) == null ? void 0 : o.table); }); e || this.$router.replace("/404"); const n = e == null ? void 0 : e.table; this.table = n; try { const { data: { form: s } } = await d.get(`/api/template/table/${n}`), { data: a } = await d.get( `/api/table/${this.table}/${(r = (i = this.$route) == null ? void 0 : i.query) == null ? void 0 : r.id}` ); this.token = (a == null ? void 0 : a.token) || "", this.formValues = a || {}; const { data: o } = await d.get(`/api/template/form/${s}`); this.scheme = (o == null ? void 0 : o.schema) || o, this.style = (o == null ? void 0 : o.style) || null; } catch { } }, async onlyEditObject() { var e, n, i, r, s, a, o, u, l, c, f; const t = (n = (e = this.$refs.form) == null ? void 0 : e.$refs) == null ? void 0 : n.form; try { await t.doValidation(), await d.put(`/api/table/${this.token}`, this.formValues), await this.$notify({ title: "Успішно!", message: "Об'єкт успішно створено", type: "success" }); } catch (h) { const w = ((i = h == null ? void 0 : h.response) == null ? void 0 : i.data) || ""; let v = ((o = (a = (s = (r = Object.entries(t == null ? void 0 : t.formErrors)) == null ? void 0 : r[0]) == null ? void 0 : s[1]) == null ? void 0 : a[0]) == null ? void 0 : o.message) === "Це поле обов'язкове" ? "Заповніть обов'язкові поля" : (f = (c = (l = (u = Object.entries(t == null ? void 0 : t.formErrors)) == null ? void 0 : u[0]) == null ? void 0 : l[1]) == null ? void 0 : c[0]) == null ? void 0 : f.message; this.$notify({ title: "Помилка!", message: w || v || "Сталася помилка валідаціі", type: "error" }); } }, getGroupedErrorNotification(t, e) { if (!t || !e) return ""; const n = {}; return Object.entries(t).forEach(([r, s]) => { var o; const a = ((o = e[r]) == null ? void 0 : o.ua) || r; s.forEach((u) => { const l = u.message; n[l] || (n[l] = []), n[l].push(`"${a}"`); }); }), Object.entries(n).map(([r, s]) => `<b>${r}:</b> ${s.join(", ")}`).join("<br>") || "Сталася помилка валідації"; }, async editObjectAndRedirect(t = !0) { var n, i; const e = (i = (n = this.$refs.form) == null ? void 0 : n.$refs) == null ? void 0 : i.form; try { t && await e.doValidation(), await d.put( `/api/table/${this.token}${t ? "" : "?draft=1"}`, this.formValues ), await this.$router.back(), await this.$notify({ title: "Успішно!", message: "Об'єкт успішно створено", type: "success" }); } catch { const s = this.getGroupedErrorNotification( e == null ? void 0 : e.formErrors, e == null ? void 0 : e.scheme ); this.$notify({ title: "Помилка!", message: s, type: "error" }); } } } }, C = { class: "bg-gray-100 lg:w-[calc(100vw-260px)] w-[100vw]" }, M = { class: "h-[76px] mt-[15px] flex items-center justify-between mx-[20px] px-[20px] bg-white rounded-xl" }, _ = { class: "flex items-center gap-[6px]" }, N = { class: "bg-white w-full rounded-xl" }; function A(t, e, n, i, r, s) { var o, u, l; const a = j("VsFormWithNavigation"); return p(), g("div", C, [ m("div", M, [ e[4] || (e[4] = m("h2", { class: "text-xl font-medium" }, "Редагувати", -1)), m("div", _, [ m("button", { onClick: e[0] || (e[0] = (c) => t.$router.back()), class: "flex items-center px-3 py-2 text-sm font-medium text-gray-800 duration-300 bg-white border border-gray-100 rounded-lg shadow gap-x-2 focus:outline-none hover:bg-gray-50 hover:border-gray-100" }, " Скасувати "), (o = r.style) != null && o.draft ? (p(), g("button", { key: 0, onClick: e[1] || (e[1] = (c) => s.editObjectAndRedirect(!1)), class: x(`inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-${s.color}-700 border border-transparent rounded-lg gap-x-2 hover:bg-${s.color}-800 hover:text-white`) }, " Зберегти DRAFT ", 2)) : b("", !0), m("button", { onClick: e[2] || (e[2] = (...c) => s.editObjectAndRedirect && s.editObjectAndRedirect(...c)), class: x(`inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-${s.color}-700 border border-transparent rounded-lg gap-x-2 hover:bg-${s.color}-800 hover:text-white`) }, " Зберегти ", 2) ]) ]), m("div", { style: y({ height: ((u = t.$adminSettings) == null ? void 0 : u.header) === !1 ? "calc(100vh - 91px)" : "calc(100vh - 150px)" }), class: "bg-gray-100 p-[20px] flex lg:w-[calc(100vw-260px)] w-[100vw] overflow-hidden" }, [ m("div", N, [ r.scheme ? (p(), E(a, { key: 0, ref: "form", scheme: r.scheme, columns: (l = r.style) == null ? void 0 : l.columns, style: y(r.style), modelValue: r.formValues, "onUpdate:modelValue": e[3] || (e[3] = (c) => r.formValues = c), class: "p-[20px] h-full" }, null, 8, ["scheme", "columns", "style", "modelValue"])) : b("", !0) ]) ], 4) ]); } const B = /* @__PURE__ */ $(O, [["render", A]]); export { B as default };