Files
service-finder/frontend_admin/.nuxt/dist/server/_nuxt/index-BE0BbUXA.js
2026-07-01 02:27:38 +00:00

165 lines
18 KiB
JavaScript

import { _ as __nuxt_component_0 } from "./nuxt-link-1NBbHb-h.js";
import { defineComponent, ref, reactive, unref, withCtx, createTextVNode, toDisplayString, openBlock, createBlock, createVNode, useSSRContext } from "vue";
import { ssrRenderAttrs, ssrInterpolate, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderClass, ssrRenderList, ssrRenderComponent, ssrRenderStyle } from "vue/server-renderer";
import "/app/node_modules/hookable/dist/index.mjs";
import { u as useFormatter } from "./useFormatter-hycy3urM.js";
import "/app/node_modules/klona/dist/index.mjs";
import "../server.mjs";
import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.js";
import "/app/node_modules/ufo/dist/index.mjs";
import "/app/node_modules/defu/dist/defu.mjs";
import "./region-0mvXqaMM.js";
import "pinia";
import "/app/node_modules/ofetch/dist/node.mjs";
import "#internal/nuxt/paths";
import "/app/node_modules/unctx/dist/index.mjs";
import "/app/node_modules/h3/dist/index.mjs";
import "vue-router";
import "/app/node_modules/cookie-es/dist/index.mjs";
import "/app/node_modules/destr/dist/index.mjs";
import "/app/node_modules/ohash/dist/index.mjs";
import "/app/node_modules/@unhead/vue/dist/index.mjs";
import "@vue/devtools-api";
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "index",
__ssrInlineRender: true,
setup(__props) {
const { formatDate } = useFormatter();
const loading = ref(true);
const error = ref(false);
const providers = ref([]);
const stats = ref({
total: 0,
pending: 0,
approved: 0,
rejected: 0,
flagged: 0,
total_validations: 0,
staging_pending: 0
});
const toast = ref("");
const filters = reactive({
search: "",
status: "",
source: "",
sort_by: "created_at",
sort_order: "desc",
skip: 0,
limit: 50
});
function statusClass(status) {
const map = {
pending: "bg-amber-500/10 text-amber-400",
approved: "bg-emerald-500/10 text-emerald-400",
rejected: "bg-rose-500/10 text-rose-400",
flagged: "bg-purple-500/10 text-purple-400"
};
return map[status] || "bg-slate-500/10 text-slate-400";
}
function statusLabel(status) {
const map = {
pending: "Függőben",
approved: "Jóváhagyott",
rejected: "Elutasított",
flagged: "Megjelölt"
};
return map[status] || status;
}
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0;
_push(`<div${ssrRenderAttrs(_attrs)} data-v-c684092a><div class="mb-8" data-v-c684092a><h1 class="text-2xl font-bold text-white" data-v-c684092a>Szolgáltatók</h1><p class="text-slate-400 mt-1" data-v-c684092a>Szolgáltatók listázása, keresése és moderálása</p></div><div class="grid grid-cols-2 md:grid-cols-5 gap-4 mb-8" data-v-c684092a><div class="bg-slate-800 rounded-xl border border-slate-700 p-4" data-v-c684092a><p class="text-xs text-slate-400 uppercase tracking-wider" data-v-c684092a>Összes</p><p class="text-2xl font-bold text-white mt-1" data-v-c684092a>${ssrInterpolate(unref(stats).total)}</p></div><div class="bg-slate-800 rounded-xl border border-amber-500/30 p-4" data-v-c684092a><p class="text-xs text-slate-400 uppercase tracking-wider" data-v-c684092a>Függőben</p><p class="text-2xl font-bold text-amber-400 mt-1" data-v-c684092a>${ssrInterpolate(unref(stats).pending)}</p></div><div class="bg-slate-800 rounded-xl border border-emerald-500/30 p-4" data-v-c684092a><p class="text-xs text-slate-400 uppercase tracking-wider" data-v-c684092a>Jóváhagyott</p><p class="text-2xl font-bold text-emerald-400 mt-1" data-v-c684092a>${ssrInterpolate(unref(stats).approved)}</p></div><div class="bg-slate-800 rounded-xl border border-rose-500/30 p-4" data-v-c684092a><p class="text-xs text-slate-400 uppercase tracking-wider" data-v-c684092a>Elutasított</p><p class="text-2xl font-bold text-rose-400 mt-1" data-v-c684092a>${ssrInterpolate(unref(stats).rejected)}</p></div><div class="bg-slate-800 rounded-xl border border-purple-500/30 p-4" data-v-c684092a><p class="text-xs text-slate-400 uppercase tracking-wider" data-v-c684092a>Megjelölt</p><p class="text-2xl font-bold text-purple-400 mt-1" data-v-c684092a>${ssrInterpolate(unref(stats).flagged)}</p></div></div>`);
if (unref(loading)) {
_push(`<div class="flex items-center justify-center py-20" data-v-c684092a><div class="text-slate-400 flex items-center gap-3" data-v-c684092a><svg class="w-5 h-5 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-c684092a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" data-v-c684092a></path></svg><span data-v-c684092a>Szolgáltatók betöltése...</span></div></div>`);
} else if (unref(error)) {
_push(`<div class="bg-rose-500/10 border border-rose-500/30 rounded-xl p-6 mb-8" data-v-c684092a><p class="text-rose-400" data-v-c684092a>Hiba történt a szolgáltatók betöltése közben.</p><button class="mt-3 text-sm text-rose-300 hover:text-rose-200 underline" data-v-c684092a>Újrapróbálkozás</button></div>`);
} else {
_push(`<!--[--><div class="bg-slate-800 rounded-xl border border-slate-700 p-4 mb-6" data-v-c684092a><div class="flex flex-wrap items-center gap-4" data-v-c684092a><div class="flex-1 min-w-[200px]" data-v-c684092a><input${ssrRenderAttr("value", unref(filters).search)} type="text" placeholder="Keresés név alapján..." class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-c684092a></div><select class="px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-c684092a><option value="" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).status) ? ssrLooseContain(unref(filters).status, "") : ssrLooseEqual(unref(filters).status, "")) ? " selected" : ""}>Minden státusz</option><option value="pending" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).status) ? ssrLooseContain(unref(filters).status, "pending") : ssrLooseEqual(unref(filters).status, "pending")) ? " selected" : ""}>Függőben</option><option value="approved" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).status) ? ssrLooseContain(unref(filters).status, "approved") : ssrLooseEqual(unref(filters).status, "approved")) ? " selected" : ""}>Jóváhagyott</option><option value="rejected" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).status) ? ssrLooseContain(unref(filters).status, "rejected") : ssrLooseEqual(unref(filters).status, "rejected")) ? " selected" : ""}>Elutasított</option><option value="flagged" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).status) ? ssrLooseContain(unref(filters).status, "flagged") : ssrLooseEqual(unref(filters).status, "flagged")) ? " selected" : ""}>Megjelölt</option></select><select class="px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-c684092a><option value="" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).source) ? ssrLooseContain(unref(filters).source, "") : ssrLooseEqual(unref(filters).source, "")) ? " selected" : ""}>Minden forrás</option><option value="manual" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).source) ? ssrLooseContain(unref(filters).source, "manual") : ssrLooseEqual(unref(filters).source, "manual")) ? " selected" : ""}>Kézi</option><option value="ocr" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).source) ? ssrLooseContain(unref(filters).source, "ocr") : ssrLooseEqual(unref(filters).source, "ocr")) ? " selected" : ""}>OCR</option><option value="import" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).source) ? ssrLooseContain(unref(filters).source, "import") : ssrLooseEqual(unref(filters).source, "import")) ? " selected" : ""}>Import</option><option value="bot" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).source) ? ssrLooseContain(unref(filters).source, "bot") : ssrLooseEqual(unref(filters).source, "bot")) ? " selected" : ""}>Bot (Staging)</option><option value="verified_org" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).source) ? ssrLooseContain(unref(filters).source, "verified_org") : ssrLooseEqual(unref(filters).source, "verified_org")) ? " selected" : ""}>Szervezet</option></select><select class="px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-c684092a><option value="created_at" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).sort_by) ? ssrLooseContain(unref(filters).sort_by, "created_at") : ssrLooseEqual(unref(filters).sort_by, "created_at")) ? " selected" : ""}>Létrehozás dátuma</option><option value="name" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).sort_by) ? ssrLooseContain(unref(filters).sort_by, "name") : ssrLooseEqual(unref(filters).sort_by, "name")) ? " selected" : ""}>Név</option><option value="validation_score" data-v-c684092a${ssrIncludeBooleanAttr(Array.isArray(unref(filters).sort_by) ? ssrLooseContain(unref(filters).sort_by, "validation_score") : ssrLooseEqual(unref(filters).sort_by, "validation_score")) ? " selected" : ""}>Validációs pontszám</option></select><button class="px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white hover:bg-slate-600 transition text-sm flex items-center gap-1" data-v-c684092a><svg class="${ssrRenderClass([unref(filters).sort_order === "asc" ? "rotate-180" : "", "w-4 h-4"])}" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-c684092a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" data-v-c684092a></path></svg> ${ssrInterpolate(unref(filters).sort_order === "asc" ? "Növekvő" : "Csökkenő")}</button></div></div><div class="bg-slate-800 rounded-xl border border-slate-700 overflow-hidden" data-v-c684092a><table class="w-full" data-v-c684092a><thead data-v-c684092a><tr class="border-b border-slate-700" data-v-c684092a><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>ID</th><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Név</th><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Cím</th><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Státusz</th><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Forrás</th><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Validáció</th><th class="text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Létrehozva</th><th class="text-right px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider" data-v-c684092a>Műveletek</th></tr></thead><tbody class="divide-y divide-slate-700/50" data-v-c684092a><!--[-->`);
ssrRenderList(unref(providers), (provider) => {
_push(`<tr class="hover:bg-slate-700/30 transition" data-v-c684092a><td class="px-6 py-4 text-sm text-slate-400" data-v-c684092a>${ssrInterpolate(provider.id)}</td><td class="px-6 py-4" data-v-c684092a>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: `/providers/${provider.id}`,
class: "text-sm font-medium text-indigo-400 hover:text-indigo-300 transition"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`${ssrInterpolate(provider.name)}`);
} else {
return [
createTextVNode(toDisplayString(provider.name), 1)
];
}
}),
_: 2
}, _parent));
_push(`</td><td class="px-6 py-4 text-sm text-slate-300 max-w-[200px] truncate" data-v-c684092a>${ssrInterpolate(provider.address || "—")}</td><td class="px-6 py-4" data-v-c684092a><span class="${ssrRenderClass([statusClass(provider.status), "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium"])}" data-v-c684092a>${ssrInterpolate(statusLabel(provider.status))}</span></td><td class="px-6 py-4" data-v-c684092a><div class="flex items-center gap-1.5" data-v-c684092a><code class="text-xs font-mono text-slate-400 bg-slate-700/50 px-2 py-0.5 rounded" data-v-c684092a>${ssrInterpolate(provider.source)}</code>`);
if (provider.source_table) {
_push(`<span class="text-[10px] font-mono text-slate-500 bg-slate-700/30 px-1.5 py-0.5 rounded" data-v-c684092a>${ssrInterpolate(provider.source_table)}</span>`);
} else {
_push(`<!---->`);
}
_push(`</div></td><td class="px-6 py-4" data-v-c684092a><div class="flex items-center gap-2" data-v-c684092a><div class="w-16 h-1.5 bg-slate-700 rounded-full overflow-hidden" data-v-c684092a><div class="${ssrRenderClass([provider.validation_score >= 50 ? "bg-emerald-500" : provider.validation_score >= 20 ? "bg-amber-500" : "bg-slate-500", "h-full rounded-full transition-all"])}" style="${ssrRenderStyle({ width: Math.min(provider.validation_score, 100) + "%" })}" data-v-c684092a></div></div><span class="text-xs text-slate-400" data-v-c684092a>${ssrInterpolate(provider.validation_score)}</span></div></td><td class="px-6 py-4 text-sm text-slate-400" data-v-c684092a>${ssrInterpolate(unref(formatDate)(provider.created_at))}</td><td class="px-6 py-4 text-right" data-v-c684092a><div class="flex items-center justify-end gap-2" data-v-c684092a>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: `/providers/${provider.id}`,
class: "p-1.5 rounded-lg text-slate-400 hover:text-white hover:bg-slate-700 transition",
title: "Részletek"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-c684092a${_scopeId}><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" data-v-c684092a${_scopeId}></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" data-v-c684092a${_scopeId}></path></svg>`);
} else {
return [
(openBlock(), createBlock("svg", {
class: "w-4 h-4",
fill: "none",
stroke: "currentColor",
viewBox: "0 0 24 24"
}, [
createVNode("path", {
"stroke-linecap": "round",
"stroke-linejoin": "round",
"stroke-width": "2",
d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
}),
createVNode("path", {
"stroke-linecap": "round",
"stroke-linejoin": "round",
"stroke-width": "2",
d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
})
]))
];
}
}),
_: 2
}, _parent));
_push(`</div></td></tr>`);
});
_push(`<!--]-->`);
if (unref(providers).length === 0) {
_push(`<tr data-v-c684092a><td colspan="8" class="px-6 py-12 text-center text-sm text-slate-500" data-v-c684092a> Nincs megjeleníthető szolgáltató. </td></tr>`);
} else {
_push(`<!---->`);
}
_push(`</tbody></table></div><div class="flex items-center justify-between mt-6" data-v-c684092a><p class="text-sm text-slate-400" data-v-c684092a>${ssrInterpolate(unref(providers).length)} találat (összesen: ${ssrInterpolate(unref(stats).total)}) </p><div class="flex items-center gap-2" data-v-c684092a><button${ssrIncludeBooleanAttr(unref(filters).skip <= 0) ? " disabled" : ""} class="px-3 py-1.5 bg-slate-700 border border-slate-600 rounded-lg text-white disabled:opacity-50 disabled:cursor-not-allowed hover:bg-slate-600 transition text-sm" data-v-c684092a> Előző </button><span class="text-sm text-slate-400" data-v-c684092a>${ssrInterpolate(Math.floor(unref(filters).skip / unref(filters).limit) + 1)}. oldal </span><button${ssrIncludeBooleanAttr(unref(providers).length < unref(filters).limit) ? " disabled" : ""} class="px-3 py-1.5 bg-slate-700 border border-slate-600 rounded-lg text-white disabled:opacity-50 disabled:cursor-not-allowed hover:bg-slate-600 transition text-sm" data-v-c684092a> Következő </button></div></div><!--]-->`);
}
if (unref(toast)) {
_push(`<div class="fixed bottom-6 right-6 z-50 bg-emerald-600 text-white px-4 py-3 rounded-lg shadow-lg text-sm flex items-center gap-2 animate-slide-up" data-v-c684092a><svg class="w-4 h-4 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-c684092a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-c684092a></path></svg> ${ssrInterpolate(unref(toast))}</div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/providers/index.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c684092a"]]);
export {
index as default
};
//# sourceMappingURL=index-BE0BbUXA.js.map