diff --git a/front-end/app/pages/gestao/documentos.vue b/front-end/app/pages/gestao/documentos.vue index 9b13863..8328117 100644 --- a/front-end/app/pages/gestao/documentos.vue +++ b/front-end/app/pages/gestao/documentos.vue @@ -1,46 +1,330 @@ - + - + Adicionar Documento + + Adicionar Documento + - + + Nenhum documento cadastrado. + + - {{ doc.nome }} - {{ tipoLabel[doc.tipo] }} · {{ doc.dataVencimento ? doc.dataVencimento.toLocaleDateString('pt-BR') : 'Sem vencimento' }} + {{ doc.Nome || tipoLabel(doc.Tipo) }} + {{ tipoLabel(doc.Tipo) }} · {{ formatDate(doc.DataVencimento) }} + + + + {{ STATUS_CFG[calcStatus(doc.DataVencimento)].label }} + + ⋯ - - {{ statusConfig[doc.status].label }} - + + + + + d.ID === menuAberto)!)">Editar + d.ID === menuAberto)!)">Excluir + + + + + + + + + Novo Documento + ✕ + + + + Tipo * + + Selecione o tipo + {{ t.label }} + + + + Nome / Identificação + + + + Data de Vencimento + + + + Observações + + + {{ erroCreate }} + + + + + + + + + + + + Editar Documento + ✕ + + + + Tipo * + + Selecione o tipo + {{ t.label }} + + + + Nome / Identificação + + + + Data de Vencimento + + + + Observações + + + {{ erroEdit }} + + + + + + + + + + + + Excluir Documento + ✕ + + + Tem certeza que deseja excluir {{ docParaExcluir?.Nome || tipoLabel(docParaExcluir?.Tipo ?? '') }}? + Esta ação não pode ser desfeita. + + + + + @@ -48,10 +332,57 @@ const tipoLabel: Record = { .page { display: flex; flex-direction: column; height: 100vh; } .content { padding: 20px 22px; flex: 1; overflow-y: auto; } .card { background: white; border-radius: 11px; border: 1px solid #e2e8f0; overflow: hidden; } +.empty { padding: 32px; text-align: center; color: #94a3b8; font-size: 13px; } + .doc-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid #f8fafc; } .doc-row:last-child { border-bottom: none; } +.doc-info { flex: 1; } .doc-nome { font-size: 13px; font-weight: 600; color: #0f172a; } .doc-meta { font-size: 11px; color: #94a3b8; margin-top: 2px; } +.doc-right { display: flex; align-items: center; gap: 10px; } .doc-status { font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 20px; } -.btn-primary { background: linear-gradient(135deg, #667eea, #764ba2) !important; } + +.btn-menu { background: none; border: none; font-size: 18px; cursor: pointer; color: #94a3b8; padding: 2px 6px; border-radius: 4px; } +.btn-menu:hover { background: #f1f5f9; color: #334155; } +.btn-primary { background: linear-gradient(135deg, #667eea, #764ba2); color: white; border: none; border-radius: 8px; padding: 7px 14px; font-size: 13px; font-weight: 600; cursor: pointer; } + +.modal-header { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 12px; border-bottom: 1px solid #f1f5f9; } +.modal-header h2 { font-size: 16px; font-weight: 700; color: #0f172a; margin: 0; } +.modal-header button { background: none; border: none; font-size: 18px; cursor: pointer; color: #94a3b8; } +.modal-body { padding: 16px 20px; display: flex; flex-direction: column; gap: 14px; } +.modal-footer { display: flex; justify-content: flex-end; gap: 10px; padding: 12px 20px 18px; border-top: 1px solid #f1f5f9; } + +.field { display: flex; flex-direction: column; gap: 5px; } +.field label { font-size: 12px; font-weight: 600; color: #374151; } +.field-select { width: 100%; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px 11px; font-size: 13px; color: #0f172a; background: white; outline: none; } +.field-select:focus { border-color: #667eea; } + +.btn-cancel { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 7px 16px; font-size: 13px; cursor: pointer; } +.btn-save { background: linear-gradient(135deg, #667eea, #764ba2); color: white; border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; } +.btn-save:disabled { opacity: 0.6; cursor: not-allowed; } +.btn-danger { background: #dc2626; color: white; border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; } +.btn-danger:disabled { opacity: 0.6; cursor: not-allowed; } +.erro { color: #dc2626; font-size: 12px; } + + +
{{ doc.nome }}
{{ tipoLabel[doc.tipo] }} · {{ doc.dataVencimento ? doc.dataVencimento.toLocaleDateString('pt-BR') : 'Sem vencimento' }}
{{ doc.Nome || tipoLabel(doc.Tipo) }}
{{ tipoLabel(doc.Tipo) }} · {{ formatDate(doc.DataVencimento) }}
{{ erroCreate }}
{{ erroEdit }}
Tem certeza que deseja excluir {{ docParaExcluir?.Nome || tipoLabel(docParaExcluir?.Tipo ?? '') }}?
Esta ação não pode ser desfeita.