Allow accompagnateurs to print a Dossier
This commit is contained in:
parent
38c226a659
commit
316d8e09b5
12 changed files with 169 additions and 1 deletions
1
app/assets/images/icons/printer.svg
Normal file
1
app/assets/images/icons/printer.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="22" height="22" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>ic_form</title><defs><rect id="a" x="3" y="8" width="18" height="7" rx="1"/><path d="M7 3h10a1 1 0 0 1 1 1v2H6V4a1 1 0 0 1 1-1z" id="b"/><path d="M0 0h12v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V0z" id="c"/></defs><g fill="none" fill-rule="evenodd"><path d="M-1-1h24v24H-1z"/><g transform="translate(-1 -1)"><use fill="#FFF" xlink:href="#a"/><rect stroke="#4393F3" stroke-width="2" x="2" y="7" width="20" height="9" rx="1"/></g><g transform="translate(-1 -1)"><use fill="#FFF" xlink:href="#b"/><path stroke="#4393F3" stroke-width="2" d="M7 2h10a2 2 0 0 1 2 2v3H5V4a2 2 0 0 1 2-2z"/></g><g transform="translate(5 13)"><use fill="#FFF" xlink:href="#c"/><path stroke="#4393F3" stroke-width="2" d="M-1-1h14v7a2 2 0 0 1-2 2H1a2 2 0 0 1-2-2v-7z"/><rect fill="#4393F3" x="1" y="4" width="6" height="1.5" rx=".75"/><rect fill="#4393F3" x="1" y="1.5" width="10" height="1.5" rx=".75"/></g></g></svg>
|
After Width: | Height: | Size: 1,014 B |
|
@ -92,6 +92,10 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.icon-only i {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
|
|
|
@ -56,4 +56,8 @@ i {
|
|||
&.lock {
|
||||
background-image: image-url("icons/lock.svg");
|
||||
}
|
||||
|
||||
&.printer {
|
||||
background-image: image-url("icons/printer.svg");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,3 +7,4 @@
|
|||
// = require select2
|
||||
// = require typeahead
|
||||
// = require_tree .
|
||||
// = stub "print"
|
||||
|
|
25
app/assets/stylesheets/new_design/print.scss
Normal file
25
app/assets/stylesheets/new_design/print.scss
Normal file
|
@ -0,0 +1,25 @@
|
|||
@import "colors";
|
||||
@import "fonts";
|
||||
|
||||
body {
|
||||
font-family: "Muli";
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
margin-top: -20px;
|
||||
color: $grey;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
|
||||
&.header-section {
|
||||
padding-top: 1.2em;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
}
|
|
@ -83,6 +83,11 @@ module NewGestionnaire
|
|||
redirect_to annotations_privees_dossier_path(dossier.procedure, dossier)
|
||||
end
|
||||
|
||||
def print
|
||||
@dossier = dossier
|
||||
render layout: "print"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def dossier
|
||||
|
|
18
app/views/layouts/print.html.haml
Normal file
18
app/views/layouts/print.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
%html
|
||||
%head
|
||||
%meta{ "http-equiv": "Content-Type", content: "text/html; charset=UTF-8" }
|
||||
%meta{ "http-equiv": "X-UA-Compatible", content: "IE=edge" }
|
||||
%meta{ name: "viewport", content: "width=device-width, initial-scale=1" }
|
||||
= csrf_meta_tags
|
||||
|
||||
%title
|
||||
= t("dynamics.page_title")
|
||||
|
||||
= favicon_link_tag(image_url("favicons/16x16.png"), type: "image/png", sizes: "16x16")
|
||||
= favicon_link_tag(image_url("favicons/32x32.png"), type: "image/png", sizes: "32x32")
|
||||
= favicon_link_tag(image_url("favicons/96x96.png"), type: "image/png", sizes: "96x96")
|
||||
|
||||
= stylesheet_link_tag "new_design/print", media: "all"
|
||||
|
||||
%body
|
||||
= yield
|
|
@ -7,6 +7,8 @@
|
|||
%li
|
||||
= "Dossier nº #{dossier.id}"
|
||||
%div
|
||||
= link_to print_dossier_path(dossier.procedure, dossier), target: "_blank", class: "button icon-only" do
|
||||
%i.printer>
|
||||
= render partial: "new_gestionnaire/procedures/dossier_actions", locals: { procedure: dossier.procedure, dossier: dossier, dossier_is_followed: current_gestionnaire&.follow?(dossier) }
|
||||
= render partial: "state_button", locals: { dossier: dossier }
|
||||
%ul.tabs
|
||||
|
|
106
app/views/new_gestionnaire/dossiers/print.html.haml
Normal file
106
app/views/new_gestionnaire/dossiers/print.html.haml
Normal file
|
@ -0,0 +1,106 @@
|
|||
%h1= "Dossier nº #{@dossier.id}"
|
||||
%h1.subtitle= "Procédure : #{@dossier.procedure.libelle}"
|
||||
|
||||
%h2 Identité du demandeur
|
||||
|
||||
- if @dossier.entreprise.present?
|
||||
= render partial: "identite_entreprise", locals: { entreprise: @dossier.entreprise }
|
||||
|
||||
- if @dossier.individual.present?
|
||||
= render partial: "identite_individual", locals: { individual: @dossier.individual }
|
||||
|
||||
%h2 Formulaire
|
||||
|
||||
- champs = @dossier.ordered_champs.decorate
|
||||
- if champs.any?
|
||||
= render partial: "champs", locals: { champs: champs }
|
||||
|
||||
- if @dossier.procedure.use_api_carto
|
||||
%h3 Cartographie
|
||||
- if @dossier.quartier_prioritaires.any?
|
||||
%h4 Quartiers prioritaires
|
||||
%table
|
||||
- @dossier.quartier_prioritaires.each do |q|
|
||||
%tr
|
||||
%td= q.nom
|
||||
|
||||
- if @dossier.cadastres.any?
|
||||
%h4 Parcelles cadastrales
|
||||
%table
|
||||
- @dossier.cadastres.each do |p|
|
||||
%tr
|
||||
%td= "Parcelle n° #{p.numero} - Feuille #{p.code_arr} #{p.section} #{p.feuille}"
|
||||
|
||||
- if @dossier.procedure.cerfa_flag? || @dossier.types_de_piece_justificative.any?
|
||||
%h3 Pièces jointes
|
||||
|
||||
%table
|
||||
- if @dossier.procedure.cerfa_flag?
|
||||
%tr
|
||||
%th Formulaire :
|
||||
%td
|
||||
- if @dossier.cerfa_available?
|
||||
Pièce fournie
|
||||
- else
|
||||
Pièce non fournie
|
||||
|
||||
- @dossier.procedure.types_de_piece_justificative.each do |type_de_piece_justificative|
|
||||
%tr
|
||||
%th= "#{type_de_piece_justificative.libelle} :"
|
||||
%td
|
||||
- pj = @dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)
|
||||
- if pj.present?
|
||||
Pièce fournie
|
||||
- else
|
||||
Pièce non fournie
|
||||
|
||||
%h2 Annotations privées
|
||||
|
||||
- if @dossier.ordered_champs_private.present?
|
||||
%table
|
||||
- @dossier.champs_private.each do |champ|
|
||||
%tr
|
||||
%th
|
||||
= champ.libelle
|
||||
%td
|
||||
= champ.value
|
||||
- else
|
||||
Aucune annotation privée
|
||||
|
||||
%h2 Avis
|
||||
|
||||
- if @dossier.avis.present?
|
||||
%table
|
||||
- @dossier.avis.each do |avis|
|
||||
%tr
|
||||
%th
|
||||
= "Avis de #{avis.email_to_display}"
|
||||
- if avis.confidentiel?
|
||||
(confidentiel)
|
||||
%td
|
||||
- if avis.answer.present?
|
||||
= avis.answer
|
||||
- else
|
||||
En attente de réponse
|
||||
- else
|
||||
Aucun avis
|
||||
|
||||
%h2 Messagerie
|
||||
|
||||
%table
|
||||
- @dossier.commentaires.each do |commentaire|
|
||||
%tr
|
||||
%th
|
||||
= render partial: 'commentaire_issuer', locals: { commentaire: commentaire, current_gestionnaire: current_gestionnaire }
|
||||
- if ![current_gestionnaire.email, @dossier.user.email, 'contact@tps.apientreprise.fr'].include?(commentaire.email)
|
||||
(invité)
|
||||
%br
|
||||
= I18n.l(commentaire.created_at.localtime, format: 'le %d/%m/%Y à %H:%M')
|
||||
%td
|
||||
%p= sanitize(commentaire.body)
|
||||
- if file = commentaire.piece_justificative
|
||||
%br
|
||||
= file.original_filename
|
||||
|
||||
%script{ type: "text/javascript" }
|
||||
window.print();
|
|
@ -15,6 +15,7 @@
|
|||
%i.bubble
|
||||
%i.attachment
|
||||
%i.lock
|
||||
%i.printer
|
||||
|
||||
%h1 Formulaires
|
||||
|
||||
|
|
|
@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0'
|
|||
|
||||
# Precompile additional assets.
|
||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||
Rails.application.config.assets.precompile += %w(print.css new_design/new_application.css new_design/application.js)
|
||||
Rails.application.config.assets.precompile += %w(print.css new_design/new_application.css new_design/print.css new_design/application.js)
|
||||
|
|
|
@ -258,6 +258,7 @@ Rails.application.routes.draw do
|
|||
get 'position'
|
||||
end
|
||||
post 'avis' => 'dossiers#create_avis'
|
||||
get 'print' => 'dossiers#print'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue