communication.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <LayoutContainer v-if="!fetchState.pending">
  3. <UiForm :id="id" :model="model" :query="query()">
  4. <template #form.input="{entry, updateRepository}">
  5. <v-expansion-panels focusable multiple :value="[0, 1]">
  6. <!-- Site internet -->
  7. <UiExpansionPanel id="web_parameters" icon="fa-desktop">
  8. <v-container fluid class="container">
  9. <v-row>
  10. <v-col cols="12" sm="6">
  11. <div>
  12. <span>{{ $t('otherWebsite') }} : </span>
  13. <span>{{ entry['otherWebsite'] }}</span>
  14. </div>
  15. </v-col>
  16. <v-col cols="12" sm="6">
  17. <div>
  18. <span>{{ $t('subDomainHistorical') }} : </span>
  19. </div>
  20. </v-col>
  21. <v-col cols="12" sm="6">
  22. <UiInputText field="newSubDomain" :data="entry['newSubDomain']" />
  23. </v-col>
  24. <v-col cols="12" sm="6" v-if="!organizationProfile.isCmf()">
  25. <UiInputCheckbox field="desactivateOpentalentSiteWeb" :data="entry['desactivateOpentalentSiteWeb']" @update="updateRepository" />
  26. </v-col>
  27. <v-col cols="12" sm="6">
  28. <UiInputText field="website" :data="entry['website']" @update="updateRepository" />
  29. </v-col>
  30. <v-col cols="12" sm="6">
  31. <UiInputAutocompleteWithAPI
  32. field="publicationDirectors"
  33. label="publicationDirectors"
  34. :multiple="true"
  35. chips
  36. :remote-uri="entry['publicationDirectors']"
  37. remote-url="api/access_people"
  38. :item-text="['person.givenName', 'person.name']"
  39. :searchFunction="accessSearch"
  40. @update="updateRepository($event.map((id) => `/api/accesses/${id}`), 'publicationDirectors')"
  41. />
  42. </v-col>
  43. </v-row>
  44. </v-container>
  45. </UiExpansionPanel>
  46. <!-- Sms -->
  47. <UiExpansionPanel id="sms" icon="fa-mobile" v-if="organizationProfile.hasModule(['Sms'])">
  48. <v-container fluid class="container">
  49. <v-row>
  50. <v-col cols="12" sm="6">
  51. <UiInputText field="smsSenderName" :data="entry['smsSenderName']" @update="updateRepository" :rules="rules().smsSenderNameRules" />
  52. </v-col>
  53. <v-col cols="12" sm="6">
  54. <UiInputText field="usernameSMS" :data="entry['usernameSMS']" @update="updateRepository" />
  55. </v-col>
  56. <v-col cols="12" sm="6">
  57. <UiInputText field="passwordSMS" :data="entry['passwordSMS']" @update="updateRepository" type="password" />
  58. </v-col>
  59. </v-row>
  60. </v-container>
  61. </UiExpansionPanel>
  62. </v-expansion-panels>
  63. </template>
  64. </UiForm>
  65. </LayoutContainer>
  66. </template>
  67. <script lang="ts">
  68. import {computed, ComputedRef, defineComponent, reactive, ref, useContext} from '@nuxtjs/composition-api'
  69. import { Organization } from '@/models/Organization/Organization'
  70. import { repositoryHelper } from '~/services/store/repository'
  71. import {useDataUtils} from "~/composables/data/useDataUtils";
  72. import {Parameters} from "~/models/Organization/Parameters";
  73. import {Query} from "@vuex-orm/core";
  74. import {$organizationProfile} from "~/services/profile/organizationProfile";
  75. import ModelsUtils from "~/services/utils/modelsUtils";
  76. import {useAccessesProvider} from "~/composables/data/useAccessesProvider";
  77. export default defineComponent({
  78. name: 'parameters',
  79. setup () {
  80. const {store, $dataProvider, app: {i18n}} = useContext()
  81. const {getItemToEdit} = useDataUtils($dataProvider)
  82. const {getPhysicalByFullName: accessSearch} = useAccessesProvider($dataProvider)
  83. const organizationProfile = reactive($organizationProfile(store))
  84. const id = store.state.profile.organization.parametersId
  85. const {fetchState} = getItemToEdit(id, Parameters)
  86. const repository = repositoryHelper.getRepository(Parameters)
  87. const query: ComputedRef<Query> = computed(() => repository.query())
  88. return {
  89. query: () => query.value,
  90. rules: () => getRules(i18n),
  91. organizationProfile,
  92. id,
  93. fetchState,
  94. accessSearch,
  95. model: Parameters
  96. }
  97. }
  98. })
  99. function getRules (i18n: any) {
  100. return {
  101. smsSenderNameRules: [
  102. (smsSenderNameValue: string) => {
  103. const pattern = /^[a-zA-z\d]+$/
  104. return pattern.test(smsSenderNameValue) || i18n.t('smsSenderName_error')
  105. }
  106. ]
  107. }
  108. }
  109. </script>