FormComponent.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <v-form
  3. ref="form"
  4. v-model="properties.valid"
  5. lazy-validation
  6. >
  7. <slot name="form.input" v-bind="{entry}"></slot>
  8. <!--{{entry}}-->
  9. <v-container fluid class="container">
  10. <v-row>
  11. <v-col cols="12" sm="12">
  12. <v-btn v-if="!readOnly" class="mr-4 submitBtn ot_green ot_white--text" @click="submit">
  13. Enregistrer
  14. </v-btn>
  15. <v-btn v-if="!readOnly" class="mr-4 submitBtn ot_danger ot_white--text" @click="submit">
  16. Annuler
  17. </v-btn>
  18. </v-col>
  19. </v-row>
  20. </v-container>
  21. </v-form>
  22. </template>
  23. <script lang="ts">
  24. import {defineComponent, reactive, useContext, computed, toRefs} from '@nuxtjs/composition-api'
  25. import Vue from 'vue'
  26. import {useRepositoryHelper} from "~/use/store/useRepository";
  27. import {useQueryHelper} from "~/use/store/useQuery";
  28. import {Query, Repository} from "@vuex-orm/core";
  29. import {Model} from "~/models/Model";
  30. export type VForm = Vue & { validate: () => boolean }
  31. export default defineComponent({
  32. props: {
  33. repository: {
  34. type: Object as () => Repository<Model>,
  35. required: true
  36. },
  37. id:{
  38. type: Number,
  39. required: true
  40. },
  41. query:{
  42. type: Object as () => Query,
  43. required: true
  44. },
  45. },
  46. setup(props) {
  47. const {repository, id, query} = toRefs(props)
  48. const properties = reactive({
  49. valid: false,
  50. saveOk: false,
  51. saveKo: false
  52. })
  53. const {store} = useContext();
  54. const readOnly = computed(() => {
  55. return useRepositoryHelper.getReadOnly(repository.value)
  56. })
  57. const entry = computed(() => {
  58. return useQueryHelper.getFlattenEntry(query.value, id.value)
  59. })
  60. const submit = () => {
  61. useRepositoryHelper.setReadOnly(repository.value, true)
  62. console.log(useQueryHelper.getJsonEntry(query.value, id.value))
  63. }
  64. return {
  65. submit,
  66. properties,
  67. readOnly,
  68. entry
  69. }
  70. },
  71. // methods:{
  72. // async submit(){
  73. //
  74. // console.log()
  75. //
  76. //
  77. // const form:VForm = this.$refs.form;
  78. // if(form.validate()){
  79. // const model = await this.repository.find(parseInt(this.$route.params.id));
  80. // if(model){
  81. // const playload = model.$toJson();
  82. //
  83. // this.$http.$put(`https://local.new.api.opentalent.fr/api/${model.$entity}/${this.$route.params.id}`, playload)
  84. // .then(()=>{
  85. // this.saveOk=true
  86. // }, () =>{
  87. // this.saveKo=true
  88. // })
  89. //
  90. // setTimeout(()=>{
  91. // this.saveOk=false
  92. // this.saveKo=false
  93. // },2000)
  94. // }
  95. // }
  96. // }
  97. // }
  98. })
  99. </script>
  100. <style scoped>
  101. .submitBtn {
  102. right: 0;
  103. margin-top: 20px;
  104. margin-bottom: 20px;
  105. }
  106. </style>