Reviews.client.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. <template>
  2. <LayoutContainer class="main-container">
  3. <div class="container-1">
  4. <LayoutUISectionTitle> Avis Clients </LayoutUISectionTitle>
  5. <h4>C'est vous qui le dites</h4>
  6. </div>
  7. <!-- Ecrans larges -->
  8. <div v-if="lgAndUp" class="container-2">
  9. <!-- Partie 1 : Avis clients -->
  10. <v-row justify="center">
  11. <div class="col-review">
  12. <v-col cols="6">
  13. <v-card class="left mx-auto">
  14. <v-card-title> Patrice CATHELIN </v-card-title>
  15. <v-card-text>
  16. <p>
  17. C'est un logiciel très bien conçu et efficace avec une équipe
  18. ouverte, dynamique et à l'écoute. L’assistance est très
  19. réactive, j'ai toujours eu une réponse rapide à mes besoins,
  20. ce qui est fort appréciable.
  21. </p>
  22. </v-card-text>
  23. <div class="card-footer">
  24. <small class="status">
  25. Directeur administratif & pédagogique
  26. </small>
  27. <small class="structure">
  28. Conservatoire de Musique & de Danse de Sens (78)
  29. </small>
  30. </div>
  31. </v-card>
  32. </v-col>
  33. <v-col cols="6">
  34. <v-card class="right mx-auto">
  35. <v-card-title> Karine GIRAUD </v-card-title>
  36. <v-card-text>
  37. <p>
  38. Étant présente depuis presque le début, je suis fière d'avoir
  39. vu grandir ce logiciel et d'avoir évoluée avec lui. De plus,
  40. je me suis sentie écoutée lors de mes propositions
  41. d'amélioration, car beaucoup ont vu le jour. Enfin,
  42. l'accompagnement et la réactivité n'ont jamais faibli depuis
  43. toutes ces années.
  44. </p>
  45. </v-card-text>
  46. <div class="card-footer">
  47. <small class="status"> Secrétaire administrative </small>
  48. <small class="structure">
  49. Association Musicale Sainte Cécile de Lagord (17)
  50. </small>
  51. </div>
  52. </v-card>
  53. </v-col>
  54. </div>
  55. </v-row>
  56. <v-row justify="center">
  57. <div class="col-review">
  58. <v-col cols="6">
  59. <v-card class="left mx-auto">
  60. <v-card-title> Laurent BEL </v-card-title>
  61. <v-card-text>
  62. <p>
  63. Logiciel très complet qui permet de faire beaucoup de choses.
  64. J’apprécie particulièrement la réactivité, la bienveillance et
  65. le fait que l’équipe soit à l'écoute pour faire évoluer
  66. l'outil en fonction de nos besoins. Si besoin, la FAQ est
  67. vraiment utile. Elle permet de trouver rapidement une solution
  68. face à un problème rencontré.
  69. </p>
  70. </v-card-text>
  71. <div class="card-footer">
  72. <small class="status">
  73. Directeur administratif & pédagogique
  74. </small>
  75. <small class="structure">
  76. École de Musique EPIC Musique en 4 Rivières (74)
  77. </small>
  78. </div>
  79. </v-card>
  80. </v-col>
  81. <v-col cols="6">
  82. <v-card class="right mx-auto">
  83. <v-card-title> Philippe BORY </v-card-title>
  84. <v-card-text>
  85. <p>
  86. Opentalent est une entreprise avec de vraies valeurs humaines,
  87. à l'écoute de chaque structure et qui ne cesse de s'améliorer
  88. pour toujours coller aux besoins de ses clients. Plus qu'une
  89. relation commerciale, c'est pour nous un véritable partenaire
  90. au quotidien.
  91. </p>
  92. </v-card-text>
  93. <div class="card-footer">
  94. <small class="status"> Personnel administratif </small>
  95. <small class="structure">
  96. École d'Arts de Saint-Michel-sur-Orge (91)
  97. </small>
  98. </div>
  99. </v-card>
  100. </v-col>
  101. </div>
  102. </v-row>
  103. <!-- Partie 2 : Carrousel logos clients -->
  104. <div class="carousel-clients-container">
  105. <CommonCarouselClients :items="items" />
  106. </div>
  107. </div>
  108. <!-- Petits écrans -->
  109. <div v-else class="container-sm" style="background-color: #0e2d32;">
  110. <v-row >
  111. <v-col cols="12">
  112. <Carousel ref="reviewCarousel" :items-to-show="1" :wrap-around="true">
  113. <Slide v-for="(card, index) in cards" :key="index">
  114. <v-card>
  115. <v-card-title>
  116. <span class="review-name">{{ card.name }}</span>
  117. </v-card-title>
  118. <v-card-text>
  119. <p class="description-review">
  120. {{ card.review }}
  121. </p>
  122. </v-card-text>
  123. <div class="card-footer">
  124. <small>{{ card.status }}</small>
  125. <small>{{ card.structure }}</small>
  126. </div>
  127. </v-card>
  128. </Slide>
  129. </Carousel>
  130. </v-col>
  131. </v-row>
  132. <v-row class="justify-center align-center mb-8">
  133. <v-col class="d-flex justify-space-around align-center">
  134. <v-btn
  135. icon="fas fa-arrow-left-long"
  136. aria-label="Précédent"
  137. @click="goToPrevious"
  138. />
  139. <div class="carousel-controls">
  140. <div
  141. v-for="(item, index) in cards"
  142. :key="index"
  143. :class="{ 'active-control': index === state.activeIndex }"
  144. class="ml-6"
  145. />
  146. </div>
  147. <v-btn
  148. icon="fas fa-arrow-right-long"
  149. aria-label="Suivant"
  150. @click="goToNext"
  151. />
  152. </v-col>
  153. </v-row>
  154. <CommonCarouselClients :items="items" class="alt-theme pt-12" />
  155. </div>
  156. </LayoutContainer>
  157. </template>
  158. <script setup lang="ts">
  159. import { Carousel, Slide } from 'vue3-carousel'
  160. import 'vue3-carousel/dist/carousel.css'
  161. import { useDisplay } from 'vuetify'
  162. import type { Ref } from 'vue'
  163. import type { Review } from '~/types/interface'
  164. const { lgAndUp } = useDisplay()
  165. const reviewCarousel: Ref<typeof Carousel | null> = ref(null)
  166. const state = ref({
  167. activeIndex: 0,
  168. })
  169. const goToNext = () => {
  170. reviewCarousel.value!.next()
  171. state.value.activeIndex = (state.value.activeIndex + 1) % cards.length
  172. }
  173. const goToPrevious = () => {
  174. reviewCarousel.value!.prev()
  175. state.value.activeIndex =
  176. state.value.activeIndex - 1 < 0
  177. ? cards.length - 1
  178. : state.value.activeIndex - 1
  179. }
  180. const cards: Array<Review> = [
  181. {
  182. name: 'Patrice CATHELIN',
  183. review:
  184. "C'est un logiciel très bien conçu et efficace avec une équipe ouverte, dynamique et à l'écoute. L’assistance est très réactive, j'ai toujours eu une réponse rapide à mes besoins, ce qui est fort appréciable.",
  185. status: 'Directeur administratif & pédagogique',
  186. structure: 'Conservatoire de Musique & de Danse de Sens (78)',
  187. },
  188. {
  189. name: 'Karine GIRAUD',
  190. review:
  191. "Étant présente depuis presque le début, je suis fière d'avoir vu grandir ce logiciel et d'avoir évoluée avec lui. De plus, je me suis sentie écoutée lors de mes propositions d'amélioration, car beaucoup ont vu le jour. Enfin, l'accompagnement et la réactivité n'ont jamais faibli depuis toutes ces années",
  192. status: 'Secrétaire administrative',
  193. structure: 'Association Musicale Sainte Cécile de Lagord (17)',
  194. },
  195. {
  196. name: 'Laurent BEL',
  197. review:
  198. "Logiciel très complet qui permet de faire beaucoup de choses. J’apprécie particulièrement la réactivité, la bienveillance et le fait que l’équipe soit à l'écoute pour faire évoluer l'outil en fonction de nos besoins. Si besoin, la FAQ est vraiment utile. Elle permet de trouver rapidement une solution face à un problème rencontré.",
  199. status: 'Directeur administratif & pédagogique',
  200. structure: 'École de Musique EPIC Musique en 4 Rivières (74)',
  201. },
  202. {
  203. name: 'Philippe BORY',
  204. review:
  205. "Opentalent est une entreprise avec de vraies valeurs humaines, à l'écoute de chaque structure et qui ne cesse de s'améliorer pour toujours coller aux besoins de ses clients. Plus qu'une relation commerciale, c'est pour nous un véritable partenaire au quotidien.",
  206. status: 'Personnel administratif',
  207. structure: "École d'Arts de Saint-Michel-sur-Orge (91)",
  208. },
  209. ]
  210. const items: Ref<Array<{ src: string; alt: string }>> = ref([
  211. {
  212. src: '/images/pages/home/reviews/Logo_Conservatoire_Les_Ateliers_des_Arts_Agglomeration_du_Puy-en-Velay.svg',
  213. alt: 'Logo du Conservatoire « Les ateliers des arts',
  214. },
  215. {
  216. src: '/images/pages/home/reviews/Logo_Conservatoire-Senlis.png',
  217. alt: 'Logo du Conservatoire de Senlis',
  218. },
  219. {
  220. src: '/images/pages/home/reviews/Logo_Ecole_de_Musique-Sausheim.png',
  221. alt: 'Logo de l’École de musique Sausheim',
  222. },
  223. {
  224. src: '/images/pages/home/reviews/Logo_Conservatoire_Marly_le_Roi-Roger_Bourdin.jpeg',
  225. alt: 'Logo du Conservatoire Marly le Roi Roger Bourdin',
  226. },
  227. {
  228. src: '/images/pages/home/reviews/Logo_Conservatoire_de_Musiques_et_de_Danses_du_Thouarsais.jpeg',
  229. alt: 'Logo du Conservatoire de Musique et de Danse du Thouarsais',
  230. },
  231. {
  232. src: '/images/pages/home/reviews/Logo_Conservatoire_de_Musique_d_Annemasse.jpg',
  233. alt: 'Logo du Conservatoire d’Annemasse',
  234. },
  235. ])
  236. </script>
  237. <style scoped lang="scss">
  238. .main-container {
  239. background-color: var(--neutral-color-alt-light);
  240. }
  241. .container-1 {
  242. @media (min-width: 1240px) {
  243. height: 22rem;
  244. }
  245. h4 {
  246. font-size: 2rem;
  247. line-height: 42px;
  248. text-align: center;
  249. color: var(--primary-color);
  250. }
  251. @media (max-width: 900px) {
  252. padding-bottom: 24px;
  253. }
  254. }
  255. .v-card{
  256. height: 100%;
  257. }
  258. .container-2 {
  259. background-color: var(--primary-color);
  260. .col-review {
  261. display: flex;
  262. justify-content: center;
  263. align-items: center;
  264. .v-card {
  265. padding-top: 1rem;
  266. width: 21rem;
  267. min-height: 21rem;
  268. max-height: 21rem;
  269. margin-bottom: 0.9rem;
  270. .v-card-title {
  271. margin-left: 1rem;
  272. font-weight: 500;
  273. font-size: 1.4rem;
  274. color: var(--primary-color);
  275. }
  276. .v-card-text p {
  277. text-align: justify !important;
  278. height: 10rem;
  279. font-size: 1rem;
  280. color: var(--primary-color);
  281. margin: 0 1rem 1rem 1rem;
  282. line-height: 20px;
  283. }
  284. .card-footer {
  285. display: flex;
  286. flex-direction: column;
  287. margin-top: 1rem;
  288. small {
  289. position: absolute;
  290. display: flex;
  291. align-items: center;
  292. bottom: 0;
  293. right: 0;
  294. font-weight: 600;
  295. width: 90%;
  296. color: var(--primary-color);
  297. }
  298. .status {
  299. margin-top: 1rem;
  300. font-size: 0.7rem;
  301. line-height: 15px;
  302. letter-spacing: 0.18em;
  303. text-transform: uppercase;
  304. margin-bottom: 2rem;
  305. width: 300px;
  306. right: 18px;
  307. }
  308. .structure {
  309. font-size: 0.8rem;
  310. margin-bottom: 1rem;
  311. width: 300px;
  312. right: 18px;
  313. }
  314. }
  315. }
  316. .left {
  317. bottom: 12rem;
  318. position: relative;
  319. }
  320. .right {
  321. position: relative;
  322. bottom: 7rem;
  323. }
  324. }
  325. .carousel-clients-container {
  326. margin-top: -7rem;
  327. }
  328. }
  329. .container-sm {
  330. .v-card {
  331. width: 70%;
  332. display: flex;
  333. flex-direction: column;
  334. justify-content: center;
  335. align-items: center;
  336. padding: 16px;
  337. }
  338. .carousel-controls {
  339. display: flex;
  340. flex-direction: row;
  341. justify-content: center;
  342. align-items: center;
  343. div {
  344. width: 0.6rem;
  345. height: 0.6rem;
  346. border-radius: 50%;
  347. background-color: var(--neutral-color-alt);
  348. cursor: pointer;
  349. margin-bottom: 0.5rem;
  350. }
  351. .active-control {
  352. background-color: var(--on-neutral-color-alt);
  353. margin-right: 10px;
  354. }
  355. }
  356. }
  357. </style>