11<template lang="pug">
2- q-list
3- q-expansion-item( label ="Enveloppe" )
4- q-card
5- q-card-section
6- span {{ ticketData.envelope }}
7- q-expansion-item( label ="Informations" )
8- q-card
9- q-card-section
10- span {{ ticketData.project }} Type: {{ ticketData.type }} {{ ticketData.priority }} {{ ticketData.impact }} {{ ticketData.state }} {{ ticketData.sla }}
11- q-expansion-item( label ="Cycle de vie" )
12- q-card
13- q-card-section
14- span {{ ticketData }}
15- span {{ ticketData }}
2+ q-scroll-area( :style ="{height: '100%'}" )
3+ q-card
4+ q-list
5+ q-expansion-item( label ="Enveloppe" )
6+ q-card
7+ q-card-section
8+ q-select.q-my-xs (
9+ label ="Appelant(s)" filled v-model ="ticket.envelope.senders"
10+ option-label ="name"
11+ use-input use-chips multiple
12+ new-value-mode ="add-unique"
13+ )
14+ q-select.q-my-xs (
15+ option-label ="name"
16+ label ="Appelant(s)" filled v-model ="ticket.envelope.observers"
17+ use-input use-chips multiple
18+ new-value-mode ="add-unique"
19+ )
20+ q-select.q-my-xs (
21+ option-label ="name"
22+ label ="Appelant(s)" filled v-model ="ticket.envelope.assigned"
23+ use-input use-chips multiple
24+ new-value-mode ="add-unique"
25+ )
26+ q-expansion-item( label ="Informations" )
27+ q-card
28+ q-card-section
29+ .row.items-center
30+ .col-6 Type de ticket :
31+ .col-6
32+ q-chip( :icon ="typeOfTicket.icon" : color= "typeOfTicket.color" outline ) .q-mx-auto {{ typeOfTicket.label }}
33+ q-select.q-my-xs (
34+ label ="Projet(s)" filled v-model ="ticket.project"
35+ option-label ="name"
36+ use-input use-chips
37+ new-value-mode ="add-unique"
38+ )
39+ q-select.q-my-xs (
40+ label ="Priorité" filled
41+ option-label ="name"
42+ use-input use-chips
43+ new-value-mode ="add-unique"
44+ v-model ="ticket.priority"
45+ )
46+ q-select.q-my-xs (
47+ label ="Impact" filled
48+ option-label ="name"
49+ use-input use-chips
50+ new-value-mode ="add-unique"
51+ v-model ="ticket.impact"
52+ )
53+ q-select.q-my-xs (
54+ label ="SLA" filled
55+ option-label ="name"
56+ use-input use-chips
57+ new-value-mode ="add-unique"
58+ v-model ="ticket.sla"
59+ )
60+ q-input.q-my-xs ( label ="Due date" type ="date" filled v-model ="dueDate" )
61+ q-input.q-my-xs ( label ="Temps total" type ="time" filled readonly v-model ="totalTime" )
62+ q-expansion-item( label ="Cycle de vie" )
63+ q-card
64+ q-card-section
65+ .row.items-center
66+ .col-6 Etape de vie :
67+ .col-6
68+ q-chip( :icon ="lifestepOfTicket?.icon" : color= "lifestepOfTicket?.color" outline ) .q-mx-auto {{ lifestepOfTicket?.label }}
69+ .row.items-center
70+ .col-6 State :
71+ .col-6
72+ q-chip( :icon ="stateOfTicket?.icon" : color= "stateOfTicket?.color" outline ) .q-mx-auto {{ stateOfTicket?.name }}
1673</template >
1774
1875<script lang="ts" setup>
19- defineProps ({
76+ import { ref , onMounted , computed , inject } from ' vue'
77+ import { ticketType , lifeSteps , useDayjs } from ' #imports' ;
78+ import { useHttpApi } from ' ~/composables/useHttpApi' ;
79+ const props = defineProps ({
2080 ticketData: {
2181 type: Object ,
2282 required: true
2383 }
2484})
25- </script >
85+ const dayjs = useDayjs ()
86+ const ticket = ref (props .ticketData )
87+ const { data : states, pending : statesPending, refresh : statesRefresh, error : statesError } = await useHttpApi (' /tickets/state' , {
88+ method: ' get'
89+ })
90+ const typeOfTicket = computed (() => {
91+ return ticketType .find ((type : any ) => type .value === ticket .value .type )
92+ })
93+
94+ const lifestepOfTicket = computed (() => {
95+ return lifeSteps .find ((step : any ) => step .value === ticket .value .lifestep )
96+ })
97+
98+ const stateOfTicket = computed (() => {
99+ return states .value ?.data .find ((state : any ) => state ._id === ticket .value .state .id )
100+ })
101+
102+ const totalTime = computed (() => {
103+ const min = ticket .value .totalTime % 60
104+ const hour = Math .floor (ticket .value .totalTime / 60 )
105+ const minString = min < 10 ? ` 0${min } ` : ` ${min } `
106+ const hourString = hour < 10 ? ` 0${hour } ` : ` ${hour } `
107+ return ` ${hourString }:${minString } `
108+ })
109+
110+ const dueDate = computed (() => {
111+ return dayjs (ticket .value .sla .dueAt ).format (' YYYY-MM-DD' )
112+ })
113+
114+ onMounted (() => {
115+ // ticket.value.senders = props.ticketData.envelope.senders.map((sender: any) => sender.name)
116+ // ticket.value.observers = props.ticketData.envelope.observers.map((observer: any) => observer.name)
117+ // ticket.value.assigned = props.ticketData.envelope.assigned.map((assignee: any) => assignee.name)
118+ })
119+
120+ </script >
0 commit comments