sms.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div>
  3. <LayoutParametersSection>
  4. <UiForm v-if="parameters" v-model="parameters">
  5. <v-row>
  6. <v-col cols="12">
  7. <UiInputText v-model="parameters.usernameSMS" field="usernameSMS" />
  8. </v-col>
  9. <v-col cols="12">
  10. <UiInputText
  11. v-model="parameters.passwordSMS"
  12. field="passwordSMS"
  13. class="password"
  14. />
  15. </v-col>
  16. <v-col cols="12">
  17. <div class="mb-3">
  18. {{ $t('smsSenderName') }} : <b>{{ parameters.smsSenderName }}</b>
  19. </div>
  20. </v-col>
  21. <v-col cols="12">
  22. <v-btn
  23. class="theme-info btn"
  24. :href="
  25. runtimeConfig.public.fileStorageBaseUrl +
  26. '/Bon_de_commande/' +
  27. (organizationProfile.isCmf
  28. ? 'SMS_CMF.pdf'
  29. : 'SMS_Public.pdf')
  30. "
  31. target="_blank"
  32. >
  33. {{ $t('buy_more_sms_credits') }}
  34. </v-btn>
  35. </v-col>
  36. </v-row>
  37. </UiForm>
  38. </LayoutParametersSection>
  39. </div>
  40. </template>
  41. <script setup lang="ts">
  42. import type { AsyncData } from '#app'
  43. import Parameters from '~/models/Organization/Parameters'
  44. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  45. import { useOrganizationProfileStore } from '~/stores/organizationProfile'
  46. definePageMeta({
  47. name: 'parameters_sms_page',
  48. })
  49. const i18n = useI18n()
  50. const runtimeConfig = useRuntimeConfig()
  51. const { fetch } = useEntityFetch()
  52. const organizationProfile = useOrganizationProfileStore()
  53. if (organizationProfile.parametersId === null) {
  54. throw new Error('Missing organization parameters id')
  55. }
  56. const { data: parameters } = fetch(
  57. Parameters,
  58. organizationProfile.parametersId,
  59. ) as AsyncData<Parameters | null, Error | null>
  60. /**
  61. * Règles de validation
  62. */
  63. const rules = () => [
  64. (smsSenderName: string | null) =>
  65. (smsSenderName !== null && /^\w{3,11}$/.test(smsSenderName)) ||
  66. i18n.t('please_enter_a_value_for_the_sms_sender_name'),
  67. ]
  68. </script>
  69. <style scoped lang="scss">
  70. /**
  71. Simule une apparence de saisie de type mot de passe
  72. Sans ça, les navigateurs proposent la saisie semi auto et la mémorisation du mot de passe
  73. */
  74. @font-face {
  75. font-family: 'password';
  76. font-style: normal;
  77. font-weight: 400;
  78. font-display: block;
  79. src: url(https://jsbin-user-assets.s3.amazonaws.com/rafaelcastrocouto/password.ttf);
  80. }
  81. :deep(.password input) {
  82. font-family: 'password';
  83. }
  84. </style>