@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.
- package/README.md +95 -2
- package/dist-lib/chunks/AppLayout-COCPfLWo.js +303 -0
- package/dist-lib/chunks/AuditoriaView-Bcf_kOqI.js +643 -0
- package/dist-lib/chunks/CarnetView-BsdUtYeu.js +450 -0
- package/dist-lib/chunks/CarteleraView-CRnVjt-S.js +996 -0
- package/dist-lib/chunks/CertificadosView-DvHDflcN.js +549 -0
- package/dist-lib/chunks/ChatBandejaView-HqhdSw7G.js +274 -0
- package/dist-lib/chunks/ChatConfiguracionView-BdH5gDdR.js +716 -0
- package/dist-lib/chunks/ChatConocimientoView-nKTAKxFa.js +263 -0
- package/dist-lib/chunks/ChatConversacionView-Do74V09l.js +477 -0
- package/dist-lib/chunks/ChatInformeView-BIiAH9L_.js +280 -0
- package/dist-lib/chunks/ChatRespuestasView-QFXbyg8U.js +183 -0
- package/dist-lib/chunks/EmpleadosView-BtqrO5-8.js +311 -0
- package/dist-lib/chunks/HomologacionView-UCZk4u6R.js +949 -0
- package/dist-lib/chunks/IngresoSsoView-BKkcnrYO.js +98 -0
- package/dist-lib/chunks/SolicitudesView-CYPD2A1s.js +900 -0
- package/dist-lib/chunks/TiposSolicitudView-CrWTVizl.js +168 -0
- package/dist-lib/chunks/ToggleSwitch-BYrIyheq.js +55 -0
- package/dist-lib/chunks/_plugin-vue_export-helper-BOaGB7Aw.js +8 -0
- package/dist-lib/chunks/api-M7D1c3IT.js +97 -0
- package/dist-lib/chunks/apiError-BHGbwz97.js +15 -0
- package/dist-lib/chunks/auth.store-BrGKZg-7.js +220 -0
- package/dist-lib/chunks/chat.service-C7ZQf4w3.js +241 -0
- package/dist-lib/chunks/cliente-interno.store-De39VsEE.js +203 -0
- package/dist-lib/chunks/homologacion-CoeHD7cB.js +131 -0
- package/dist-lib/chunks/portal-empleado-6KQrnsQJ.js +120 -0
- package/dist-lib/chunks/tipos-D93bLfFC.js +22 -0
- package/dist-lib/portal-admin.js +196 -0
- package/dist-lib/style.css +4813 -0
- package/dist-lib/types/App.vue.d.ts +3 -0
- package/dist-lib/types/components/AppLayout.vue.d.ts +3 -0
- package/dist-lib/types/components/CarnetClientesInternos.vue.d.ts +11 -0
- package/dist-lib/types/components/InvitacionPortalModal.vue.d.ts +20 -0
- package/dist-lib/types/components/MenuUsuario.vue.d.ts +3 -0
- package/dist-lib/types/components/VistoBuenoPortalModal.vue.d.ts +23 -0
- package/dist-lib/types/components/auditoria/AuditoriaFila.vue.d.ts +16 -0
- package/dist-lib/types/components/auditoria/AuditoriaFiltros.vue.d.ts +30 -0
- package/dist-lib/types/components/auditoria/AuditoriaPaginador.vue.d.ts +14 -0
- package/dist-lib/types/components/cartelera/PaginaCarteleraImagen.vue.d.ts +14 -0
- package/dist-lib/types/components/cartelera/PublicacionFormModal.vue.d.ts +27 -0
- package/dist-lib/types/components/cartelera/VistaCelularCartelera.vue.d.ts +34 -0
- package/dist-lib/types/components/certificados/AtenderCertificadoModal.vue.d.ts +22 -0
- package/dist-lib/types/components/certificados/RechazarCertificadoModal.vue.d.ts +18 -0
- package/dist-lib/types/components/certificados/ResumenSolicitudCertificado.vue.d.ts +8 -0
- package/dist-lib/types/components/chat/ChatClientesInternos.vue.d.ts +21 -0
- package/dist-lib/types/components/chat/ChatHorarioCampos.vue.d.ts +21 -0
- package/dist-lib/types/components/forms/ExportExcelButton.vue.d.ts +30 -0
- package/dist-lib/types/components/forms/ToggleSwitch.vue.d.ts +17 -0
- package/dist-lib/types/components/homologacion/HomologacionFila.vue.d.ts +30 -0
- package/dist-lib/types/components/homologacion/TipoPermisoFormModal.vue.d.ts +26 -0
- package/dist-lib/types/components/homologacion/TipoSolicitudFormModal.vue.d.ts +27 -0
- package/dist-lib/types/lib/auditoria.d.ts +25 -0
- package/dist-lib/types/lib/cartelera-paginas.d.ts +26 -0
- package/dist-lib/types/lib/cartelera-vigencia.d.ts +3 -0
- package/dist-lib/types/lib/export-excel-csv.d.ts +4 -0
- package/dist-lib/types/lib/export-excel.d.ts +9 -0
- package/dist-lib/types/lib/exportar-listado.d.ts +68 -0
- package/dist-lib/types/lib/homologacion.d.ts +41 -0
- package/dist-lib/types/lib/portal-empleado.d.ts +32 -0
- package/dist-lib/types/modulo.d.ts +31 -0
- package/dist-lib/types/portal-admin/config.d.ts +17 -0
- package/dist-lib/types/portal-admin/rutas.d.ts +17 -0
- package/dist-lib/types/portal-admin/tipos.d.ts +68 -0
- package/dist-lib/types/router/index.d.ts +7 -0
- package/dist-lib/types/services/api.d.ts +29 -0
- package/dist-lib/types/services/auditoria.service.d.ts +63 -0
- package/dist-lib/types/services/auth.service.d.ts +61 -0
- package/dist-lib/types/services/carnet.service.d.ts +56 -0
- package/dist-lib/types/services/cartelera.service.d.ts +69 -0
- package/dist-lib/types/services/chat.service.d.ts +279 -0
- package/dist-lib/types/services/configuracion-cliente-interno.service.d.ts +23 -0
- package/dist-lib/types/services/homologacion.service.d.ts +105 -0
- package/dist-lib/types/services/portal-empleado.service.d.ts +112 -0
- package/dist-lib/types/services/solicitudes-certificado.service.d.ts +59 -0
- package/dist-lib/types/stores/auth.store.d.ts +125 -0
- package/dist-lib/types/stores/cliente-interno.store.d.ts +65 -0
- package/dist-lib/types/utils/apiError.d.ts +4 -0
- package/dist-lib/types/views/AuditoriaView.vue.d.ts +3 -0
- package/dist-lib/types/views/CarnetView.vue.d.ts +3 -0
- package/dist-lib/types/views/CarteleraView.vue.d.ts +3 -0
- package/dist-lib/types/views/CertificadosView.vue.d.ts +3 -0
- package/dist-lib/types/views/EmpleadosView.vue.d.ts +3 -0
- package/dist-lib/types/views/HomologacionView.vue.d.ts +4 -0
- package/dist-lib/types/views/IngresoSsoView.vue.d.ts +3 -0
- package/dist-lib/types/views/LoginView.vue.d.ts +3 -0
- package/dist-lib/types/views/OlvideView.vue.d.ts +3 -0
- package/dist-lib/types/views/RestablecerView.vue.d.ts +3 -0
- package/dist-lib/types/views/SolicitudesView.vue.d.ts +3 -0
- package/dist-lib/types/views/TiposSolicitudView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatBandejaView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatConfiguracionView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatConocimientoView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatConversacionView.vue.d.ts +11 -0
- package/dist-lib/types/views/chat/ChatInformeView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatRespuestasView.vue.d.ts +3 -0
- 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 };
|