@softdin/portal-admin 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +95 -2
  2. package/dist-lib/chunks/AppLayout-COCPfLWo.js +303 -0
  3. package/dist-lib/chunks/AuditoriaView-Bcf_kOqI.js +643 -0
  4. package/dist-lib/chunks/CarnetView-BsdUtYeu.js +450 -0
  5. package/dist-lib/chunks/CarteleraView-CRnVjt-S.js +996 -0
  6. package/dist-lib/chunks/CertificadosView-DvHDflcN.js +549 -0
  7. package/dist-lib/chunks/ChatBandejaView-HqhdSw7G.js +274 -0
  8. package/dist-lib/chunks/ChatConfiguracionView-BdH5gDdR.js +716 -0
  9. package/dist-lib/chunks/ChatConocimientoView-nKTAKxFa.js +263 -0
  10. package/dist-lib/chunks/ChatConversacionView-Do74V09l.js +477 -0
  11. package/dist-lib/chunks/ChatInformeView-BIiAH9L_.js +280 -0
  12. package/dist-lib/chunks/ChatRespuestasView-QFXbyg8U.js +183 -0
  13. package/dist-lib/chunks/EmpleadosView-BtqrO5-8.js +311 -0
  14. package/dist-lib/chunks/HomologacionView-UCZk4u6R.js +949 -0
  15. package/dist-lib/chunks/IngresoSsoView-BKkcnrYO.js +98 -0
  16. package/dist-lib/chunks/SolicitudesView-CYPD2A1s.js +900 -0
  17. package/dist-lib/chunks/TiposSolicitudView-CrWTVizl.js +168 -0
  18. package/dist-lib/chunks/ToggleSwitch-BYrIyheq.js +55 -0
  19. package/dist-lib/chunks/_plugin-vue_export-helper-BOaGB7Aw.js +8 -0
  20. package/dist-lib/chunks/api-M7D1c3IT.js +97 -0
  21. package/dist-lib/chunks/apiError-BHGbwz97.js +15 -0
  22. package/dist-lib/chunks/auth.store-BrGKZg-7.js +220 -0
  23. package/dist-lib/chunks/chat.service-C7ZQf4w3.js +241 -0
  24. package/dist-lib/chunks/cliente-interno.store-De39VsEE.js +203 -0
  25. package/dist-lib/chunks/homologacion-CoeHD7cB.js +131 -0
  26. package/dist-lib/chunks/portal-empleado-6KQrnsQJ.js +120 -0
  27. package/dist-lib/chunks/tipos-D93bLfFC.js +22 -0
  28. package/dist-lib/portal-admin.js +196 -0
  29. package/dist-lib/style.css +4813 -0
  30. package/dist-lib/types/App.vue.d.ts +3 -0
  31. package/dist-lib/types/components/AppLayout.vue.d.ts +3 -0
  32. package/dist-lib/types/components/CarnetClientesInternos.vue.d.ts +11 -0
  33. package/dist-lib/types/components/InvitacionPortalModal.vue.d.ts +20 -0
  34. package/dist-lib/types/components/MenuUsuario.vue.d.ts +3 -0
  35. package/dist-lib/types/components/VistoBuenoPortalModal.vue.d.ts +23 -0
  36. package/dist-lib/types/components/auditoria/AuditoriaFila.vue.d.ts +16 -0
  37. package/dist-lib/types/components/auditoria/AuditoriaFiltros.vue.d.ts +30 -0
  38. package/dist-lib/types/components/auditoria/AuditoriaPaginador.vue.d.ts +14 -0
  39. package/dist-lib/types/components/cartelera/PaginaCarteleraImagen.vue.d.ts +14 -0
  40. package/dist-lib/types/components/cartelera/PublicacionFormModal.vue.d.ts +27 -0
  41. package/dist-lib/types/components/cartelera/VistaCelularCartelera.vue.d.ts +34 -0
  42. package/dist-lib/types/components/certificados/AtenderCertificadoModal.vue.d.ts +22 -0
  43. package/dist-lib/types/components/certificados/RechazarCertificadoModal.vue.d.ts +18 -0
  44. package/dist-lib/types/components/certificados/ResumenSolicitudCertificado.vue.d.ts +8 -0
  45. package/dist-lib/types/components/chat/ChatClientesInternos.vue.d.ts +21 -0
  46. package/dist-lib/types/components/chat/ChatHorarioCampos.vue.d.ts +21 -0
  47. package/dist-lib/types/components/forms/ExportExcelButton.vue.d.ts +30 -0
  48. package/dist-lib/types/components/forms/ToggleSwitch.vue.d.ts +17 -0
  49. package/dist-lib/types/components/homologacion/HomologacionFila.vue.d.ts +30 -0
  50. package/dist-lib/types/components/homologacion/TipoPermisoFormModal.vue.d.ts +26 -0
  51. package/dist-lib/types/components/homologacion/TipoSolicitudFormModal.vue.d.ts +27 -0
  52. package/dist-lib/types/lib/auditoria.d.ts +25 -0
  53. package/dist-lib/types/lib/cartelera-paginas.d.ts +26 -0
  54. package/dist-lib/types/lib/cartelera-vigencia.d.ts +3 -0
  55. package/dist-lib/types/lib/export-excel-csv.d.ts +4 -0
  56. package/dist-lib/types/lib/export-excel.d.ts +9 -0
  57. package/dist-lib/types/lib/exportar-listado.d.ts +68 -0
  58. package/dist-lib/types/lib/homologacion.d.ts +41 -0
  59. package/dist-lib/types/lib/portal-empleado.d.ts +32 -0
  60. package/dist-lib/types/modulo.d.ts +31 -0
  61. package/dist-lib/types/portal-admin/config.d.ts +17 -0
  62. package/dist-lib/types/portal-admin/rutas.d.ts +17 -0
  63. package/dist-lib/types/portal-admin/tipos.d.ts +68 -0
  64. package/dist-lib/types/router/index.d.ts +7 -0
  65. package/dist-lib/types/services/api.d.ts +29 -0
  66. package/dist-lib/types/services/auditoria.service.d.ts +63 -0
  67. package/dist-lib/types/services/auth.service.d.ts +61 -0
  68. package/dist-lib/types/services/carnet.service.d.ts +56 -0
  69. package/dist-lib/types/services/cartelera.service.d.ts +69 -0
  70. package/dist-lib/types/services/chat.service.d.ts +279 -0
  71. package/dist-lib/types/services/configuracion-cliente-interno.service.d.ts +23 -0
  72. package/dist-lib/types/services/homologacion.service.d.ts +105 -0
  73. package/dist-lib/types/services/portal-empleado.service.d.ts +112 -0
  74. package/dist-lib/types/services/solicitudes-certificado.service.d.ts +59 -0
  75. package/dist-lib/types/stores/auth.store.d.ts +125 -0
  76. package/dist-lib/types/stores/cliente-interno.store.d.ts +65 -0
  77. package/dist-lib/types/utils/apiError.d.ts +4 -0
  78. package/dist-lib/types/views/AuditoriaView.vue.d.ts +3 -0
  79. package/dist-lib/types/views/CarnetView.vue.d.ts +3 -0
  80. package/dist-lib/types/views/CarteleraView.vue.d.ts +3 -0
  81. package/dist-lib/types/views/CertificadosView.vue.d.ts +3 -0
  82. package/dist-lib/types/views/EmpleadosView.vue.d.ts +3 -0
  83. package/dist-lib/types/views/HomologacionView.vue.d.ts +4 -0
  84. package/dist-lib/types/views/IngresoSsoView.vue.d.ts +3 -0
  85. package/dist-lib/types/views/LoginView.vue.d.ts +3 -0
  86. package/dist-lib/types/views/OlvideView.vue.d.ts +3 -0
  87. package/dist-lib/types/views/RestablecerView.vue.d.ts +3 -0
  88. package/dist-lib/types/views/SolicitudesView.vue.d.ts +3 -0
  89. package/dist-lib/types/views/TiposSolicitudView.vue.d.ts +3 -0
  90. package/dist-lib/types/views/chat/ChatBandejaView.vue.d.ts +3 -0
  91. package/dist-lib/types/views/chat/ChatConfiguracionView.vue.d.ts +3 -0
  92. package/dist-lib/types/views/chat/ChatConocimientoView.vue.d.ts +3 -0
  93. package/dist-lib/types/views/chat/ChatConversacionView.vue.d.ts +11 -0
  94. package/dist-lib/types/views/chat/ChatInformeView.vue.d.ts +3 -0
  95. package/dist-lib/types/views/chat/ChatRespuestasView.vue.d.ts +3 -0
  96. package/package.json +66 -4
@@ -0,0 +1,274 @@
1
+ import { t as useClienteInternoStore } from "./cliente-interno.store-De39VsEE.js";
2
+ import { t as RUTAS_PORTAL } from "./tipos-D93bLfFC.js";
3
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
4
+ import { i as chatService, n as ESTADOS_CONVERSACION, o as fechaHora, s as relativo } from "./chat.service-C7ZQf4w3.js";
5
+ import { t as mensajeError } from "./apiError-BHGbwz97.js";
6
+ import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, toDisplayString, unref, vModelSelect, watch, withCtx, withDirectives } from "vue";
7
+ import { RouterLink } from "vue-router";
8
+ //#region src/views/chat/ChatBandejaView.vue?vue&type=script&setup=true&lang.ts
9
+ var _hoisted_1 = { class: "page-shell" };
10
+ var _hoisted_2 = { class: "page-header" };
11
+ var _hoisted_3 = { class: "toolbar" };
12
+ var _hoisted_4 = {
13
+ key: 0,
14
+ class: "label disponible",
15
+ title: "Si está disponible, el chat le asigna conversaciones solo (en los temas con asignación automática)."
16
+ };
17
+ var _hoisted_5 = ["checked", "disabled"];
18
+ var _hoisted_6 = {
19
+ key: 0,
20
+ class: "panel-error",
21
+ role: "alert"
22
+ };
23
+ var _hoisted_7 = {
24
+ class: "toolbar",
25
+ role: "tablist",
26
+ "aria-label": "Vistas de la bandeja"
27
+ };
28
+ var _hoisted_8 = ["aria-selected", "onClick"];
29
+ var _hoisted_9 = {
30
+ key: 0,
31
+ class: "contador"
32
+ };
33
+ var _hoisted_10 = ["value"];
34
+ var _hoisted_11 = ["disabled"];
35
+ var _hoisted_12 = {
36
+ key: 1,
37
+ class: "panel-error",
38
+ role: "alert"
39
+ };
40
+ var _hoisted_13 = {
41
+ key: 2,
42
+ class: "panel-muted"
43
+ };
44
+ var _hoisted_14 = {
45
+ key: 3,
46
+ class: "panel-muted"
47
+ };
48
+ var _hoisted_15 = {
49
+ key: 4,
50
+ class: "table-wrap"
51
+ };
52
+ var _hoisted_16 = { class: "data-table" };
53
+ var _hoisted_17 = ["aria-label"];
54
+ var _hoisted_18 = ["title"];
55
+ var _hoisted_19 = { class: "sub" };
56
+ var _hoisted_20 = {
57
+ key: 0,
58
+ class: "sub"
59
+ };
60
+ var _hoisted_21 = { class: "extracto" };
61
+ var _hoisted_22 = { class: "sub" };
62
+ var _hoisted_23 = {
63
+ key: 0,
64
+ class: "sub"
65
+ };
66
+ var _hoisted_24 = { class: "sub" };
67
+ /**
68
+ * Bandeja del chat con RRHH (softdin-portal-api/docs/chat-rrhh.md). Cada usuario ve las
69
+ * conversaciones de los temas que atiende; lo que vence antes va primero. Se actualiza sola
70
+ * cada 30 segundos. Cada conversación dice desde qué cliente interno escribió el empleado.
71
+ */
72
+ var CADA_MS = 3e4;
73
+ //#endregion
74
+ //#region src/views/chat/ChatBandejaView.vue
75
+ var ChatBandejaView_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
76
+ __name: "ChatBandejaView",
77
+ setup(__props) {
78
+ const vistas = [
79
+ {
80
+ valor: "sin_asignar",
81
+ texto: "Sin asignar"
82
+ },
83
+ {
84
+ valor: "mias",
85
+ texto: "Mías"
86
+ },
87
+ {
88
+ valor: "esperando",
89
+ texto: "Esperando al empleado"
90
+ },
91
+ {
92
+ valor: "resueltas",
93
+ texto: "Resueltas"
94
+ },
95
+ {
96
+ valor: "todas",
97
+ texto: "Todas"
98
+ }
99
+ ];
100
+ const vista = ref("sin_asignar");
101
+ const temaId = ref(null);
102
+ const temas = ref([]);
103
+ const clientesInternos = useClienteInternoStore();
104
+ const resumen = ref(null);
105
+ const items = ref([]);
106
+ const cargando = ref(true);
107
+ const error = ref(null);
108
+ const ahora = ref(Date.now());
109
+ const cambiandoDisponible = ref(false);
110
+ async function cambiarDisponible(e) {
111
+ const disponible = e.target.checked;
112
+ cambiandoDisponible.value = true;
113
+ try {
114
+ await chatService.marcarDisponible(disponible);
115
+ if (resumen.value) resumen.value = {
116
+ ...resumen.value,
117
+ disponible
118
+ };
119
+ } catch (err) {
120
+ error.value = mensajeError(err, "No se pudo cambiar su disponibilidad.");
121
+ } finally {
122
+ cambiandoDisponible.value = false;
123
+ }
124
+ }
125
+ async function cargar(silencioso = false) {
126
+ if (!silencioso) cargando.value = true;
127
+ error.value = null;
128
+ try {
129
+ [resumen.value, items.value] = await Promise.all([chatService.resumen(), chatService.conversaciones(vista.value, temaId.value, clientesInternos.seleccionado)]);
130
+ ahora.value = Date.now();
131
+ } catch (e) {
132
+ error.value = mensajeError(e, "No se pudo cargar la bandeja del chat.");
133
+ } finally {
134
+ cargando.value = false;
135
+ }
136
+ }
137
+ function contador(v) {
138
+ if (!resumen.value) return 0;
139
+ if (v === "sin_asignar") return resumen.value.sin_asignar;
140
+ if (v === "mias") return resumen.value.mias;
141
+ return 0;
142
+ }
143
+ watch([
144
+ vista,
145
+ temaId,
146
+ () => clientesInternos.seleccionado
147
+ ], () => void cargar());
148
+ let reloj = null;
149
+ onMounted(async () => {
150
+ await cargar();
151
+ chatService.temas().then((t) => temas.value = t).catch(() => void 0);
152
+ reloj = setInterval(() => void cargar(true), CADA_MS);
153
+ });
154
+ onBeforeUnmount(() => {
155
+ if (reloj) clearInterval(reloj);
156
+ });
157
+ return (_ctx, _cache) => {
158
+ return openBlock(), createElementBlock("section", _hoisted_1, [
159
+ createElementVNode("header", _hoisted_2, [_cache[7] || (_cache[7] = createElementVNode("div", null, [createElementVNode("h1", { class: "page-title" }, "Chat con los empleados"), createElementVNode("p", { class: "page-subtitle" }, " Consultas que los empleados escriben desde su Portal de autogestión. Tome una conversación para atenderla; el plazo de primera respuesta corre solo en el horario de atención. ")], -1)), createElementVNode("div", _hoisted_3, [
160
+ resumen.value?.atiende ? (openBlock(), createElementBlock("label", _hoisted_4, [createElementVNode("input", {
161
+ type: "checkbox",
162
+ checked: resumen.value.disponible !== false,
163
+ disabled: cambiandoDisponible.value,
164
+ onChange: cambiarDisponible
165
+ }, null, 40, _hoisted_5), _cache[2] || (_cache[2] = createTextVNode(" Disponible ", -1))])) : createCommentVNode("", true),
166
+ createVNode(unref(RouterLink), {
167
+ to: { name: unref(RUTAS_PORTAL).chatInforme },
168
+ class: "btn-secondary"
169
+ }, {
170
+ default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode("Informe", -1)])]),
171
+ _: 1
172
+ }, 8, ["to"]),
173
+ createVNode(unref(RouterLink), {
174
+ to: { name: unref(RUTAS_PORTAL).chatRespuestas },
175
+ class: "btn-secondary"
176
+ }, {
177
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("Respuestas guardadas", -1)])]),
178
+ _: 1
179
+ }, 8, ["to"]),
180
+ createVNode(unref(RouterLink), {
181
+ to: { name: unref(RUTAS_PORTAL).chatConocimiento },
182
+ class: "btn-secondary"
183
+ }, {
184
+ default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Base de conocimiento", -1)])]),
185
+ _: 1
186
+ }, 8, ["to"]),
187
+ createVNode(unref(RouterLink), {
188
+ to: { name: unref(RUTAS_PORTAL).chatConfiguracion },
189
+ class: "btn-secondary"
190
+ }, {
191
+ default: withCtx(() => [..._cache[6] || (_cache[6] = [createTextVNode("Configuración", -1)])]),
192
+ _: 1
193
+ }, 8, ["to"])
194
+ ])]),
195
+ resumen.value && resumen.value.vencidas > 0 ? (openBlock(), createElementBlock("p", _hoisted_6, toDisplayString(resumen.value.vencidas) + " " + toDisplayString(resumen.value.vencidas === 1 ? "conversación pasó" : "conversaciones pasaron") + " el plazo de primera respuesta. ", 1)) : createCommentVNode("", true),
196
+ createElementVNode("div", _hoisted_7, [
197
+ (openBlock(), createElementBlock(Fragment, null, renderList(vistas, (v) => {
198
+ return createElementVNode("button", {
199
+ key: v.valor,
200
+ type: "button",
201
+ role: "tab",
202
+ "aria-selected": vista.value === v.valor,
203
+ class: normalizeClass(vista.value === v.valor ? "btn-primary" : "btn-secondary"),
204
+ onClick: ($event) => vista.value = v.valor
205
+ }, [createTextVNode(toDisplayString(v.texto) + " ", 1), contador(v.valor) > 0 ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(contador(v.valor)), 1)) : createCommentVNode("", true)], 10, _hoisted_8);
206
+ }), 64)),
207
+ _cache[9] || (_cache[9] = createElementVNode("label", {
208
+ for: "chat-tema",
209
+ class: "label",
210
+ style: { "margin-left": "auto" }
211
+ }, "Tema", -1)),
212
+ withDirectives(createElementVNode("select", {
213
+ id: "chat-tema",
214
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => temaId.value = $event),
215
+ class: "input"
216
+ }, [_cache[8] || (_cache[8] = createElementVNode("option", { value: null }, "Todos", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(temas.value, (t) => {
217
+ return openBlock(), createElementBlock("option", {
218
+ key: t.id,
219
+ value: t.id
220
+ }, toDisplayString(t.nombre), 9, _hoisted_10);
221
+ }), 128))], 512), [[vModelSelect, temaId.value]]),
222
+ createElementVNode("button", {
223
+ type: "button",
224
+ class: "btn-secondary",
225
+ disabled: cargando.value,
226
+ onClick: _cache[1] || (_cache[1] = ($event) => cargar())
227
+ }, "Actualizar", 8, _hoisted_11)
228
+ ]),
229
+ error.value ? (openBlock(), createElementBlock("p", _hoisted_12, toDisplayString(error.value), 1)) : cargando.value ? (openBlock(), createElementBlock("p", _hoisted_13, "Cargando…")) : items.value.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_14, "No hay conversaciones en esta vista.")) : (openBlock(), createElementBlock("div", _hoisted_15, [createElementVNode("table", _hoisted_16, [_cache[10] || (_cache[10] = createElementVNode("thead", null, [createElementVNode("tr", null, [
230
+ createElementVNode("th", null, "Empleado"),
231
+ createElementVNode("th", null, "Tema"),
232
+ createElementVNode("th", null, "Último mensaje"),
233
+ createElementVNode("th", null, "Estado"),
234
+ createElementVNode("th", null, "Plazo")
235
+ ])], -1)), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(items.value, (c) => {
236
+ return openBlock(), createElementBlock("tr", { key: c.id }, [
237
+ createElementVNode("td", null, [
238
+ createVNode(unref(RouterLink), {
239
+ to: {
240
+ name: unref(RUTAS_PORTAL).chatConversacion,
241
+ params: { id: c.id }
242
+ },
243
+ class: "enlace"
244
+ }, {
245
+ default: withCtx(() => [createTextVNode(toDisplayString(c.empleado ?? "—"), 1)]),
246
+ _: 2
247
+ }, 1032, ["to"]),
248
+ c.no_leidos > 0 ? (openBlock(), createElementBlock("span", {
249
+ key: 0,
250
+ class: "contador nuevo",
251
+ "aria-label": `${c.no_leidos} sin leer`
252
+ }, toDisplayString(c.no_leidos), 9, _hoisted_17)) : createCommentVNode("", true),
253
+ c.cliente_interno ? (openBlock(), createElementBlock("span", {
254
+ key: 1,
255
+ class: "cliente",
256
+ title: c.cliente_interno.nit ? `NIT ${c.cliente_interno.nit}` : void 0
257
+ }, toDisplayString(c.cliente_interno.nombre), 9, _hoisted_18)) : createCommentVNode("", true),
258
+ createElementVNode("span", _hoisted_19, [createTextVNode(toDisplayString(c.identificacion), 1), c.cargo ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(" · " + toDisplayString(c.cargo), 1)], 64)) : createCommentVNode("", true)])
259
+ ]),
260
+ createElementVNode("td", null, [createTextVNode(toDisplayString(c.tema?.nombre ?? "Sin tema") + " ", 1), c.tema?.confidencial ? (openBlock(), createElementBlock("span", _hoisted_20, "Confidencial")) : createCommentVNode("", true)]),
261
+ createElementVNode("td", null, [createElementVNode("span", _hoisted_21, [c.ultimo_mensaje?.interno ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode("Nota interna: ")], 64)) : createCommentVNode("", true), createTextVNode(toDisplayString(c.ultimo_mensaje?.extracto ?? "—"), 1)]), createElementVNode("span", _hoisted_22, toDisplayString(unref(fechaHora)(c.ultimo_mensaje_en)), 1)]),
262
+ createElementVNode("td", null, [createElementVNode("span", { class: normalizeClass(["estado", unref(ESTADOS_CONVERSACION)[c.estado].clase]) }, toDisplayString(unref(ESTADOS_CONVERSACION)[c.estado].texto), 3), c.asignada_a ? (openBlock(), createElementBlock("span", _hoisted_23, toDisplayString(c.asignada_a.nombre), 1)) : createCommentVNode("", true)]),
263
+ createElementVNode("td", null, [!c.primera_respuesta_en && c.vence_primera_respuesta_en && ["sin_asignar", "asignada"].includes(c.estado) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("span", { class: normalizeClass({ vencida: c.vencida }) }, "Responder " + toDisplayString(unref(relativo)(c.vence_primera_respuesta_en, ahora.value)), 3), createElementVNode("span", _hoisted_24, toDisplayString(unref(fechaHora)(c.vence_primera_respuesta_en)), 1)], 64)) : ["asignada", "esperando_empleado"].includes(c.estado) && c.vence_resolucion_en ? (openBlock(), createElementBlock("span", {
264
+ key: 1,
265
+ class: normalizeClass({ vencida: c.vencida })
266
+ }, "Resolver " + toDisplayString(unref(relativo)(c.vence_resolucion_en, ahora.value)), 3)) : c.calificacion ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode("Calificación: " + toDisplayString(c.calificacion) + "/5", 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [createTextVNode("—")], 64))])
267
+ ]);
268
+ }), 128))])])]))
269
+ ]);
270
+ };
271
+ }
272
+ }), [["__scopeId", "data-v-63d2d7cc"]]);
273
+ //#endregion
274
+ export { ChatBandejaView_default as default };