sms.vue 2.5 KB

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