ProviderPage.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <div>
  3. <DefaultHeaderPage />
  4. <div>
  5. <DefaultTable
  6. ref="tableRef"
  7. :columns="columns"
  8. :api-call="getProviders"
  9. :delete-function="deleteProvider"
  10. :mostrar-selecao-de-colunas="false"
  11. :mostrar-botao-fullscreen="false"
  12. :mostrar-toggle-inativos="false"
  13. open-item
  14. add-item
  15. @on-row-click="onRowClick"
  16. @on-add-item="onAddItem"
  17. />
  18. </div>
  19. </div>
  20. </template>
  21. <script setup>
  22. import { defineAsyncComponent, useTemplateRef } from "vue";
  23. import { useQuasar } from "quasar";
  24. import { useI18n } from "vue-i18n";
  25. import { permissionStore } from "src/stores/permission";
  26. import { getProviders, deleteProvider } from "src/api/provider";
  27. import DefaultTable from "src/components/defaults/DefaultTable.vue";
  28. import DefaultHeaderPage from "src/components/layout/DefaultHeaderPage.vue";
  29. // import { formatDateYMDtoDMY } from "src/helpers/utils";
  30. const AddEditProviderDialog = defineAsyncComponent(
  31. () => import("src/pages/provider/components/AddEditProviderDialog.vue"),
  32. );
  33. const permission_store = permissionStore();
  34. const $q = useQuasar();
  35. const tableRef = useTemplateRef("tableRef");
  36. const { t } = useI18n();
  37. const columns = [
  38. {
  39. name: "id",
  40. label: "ID",
  41. field: "id",
  42. align: "left",
  43. required: true,
  44. sortable: true,
  45. },
  46. {
  47. name: "document",
  48. label: t("provider.fields.document"),
  49. field: "document",
  50. align: "left",
  51. sortable: true,
  52. },
  53. {
  54. name: "user",
  55. label: t("common.terms.user"),
  56. field: (row) => row.user?.name || "-",
  57. align: "left",
  58. sortable: true,
  59. },
  60. {
  61. name: "birth_date",
  62. label: t("provider.fields.birth_date"),
  63. field: "birth_date",
  64. // format: (val) => (val ? formatDateYMDtoDMY(val) : "-"),
  65. align: "left",
  66. sortable: true,
  67. },
  68. {
  69. name: "is_approved",
  70. label: t("provider.fields.is_approved"),
  71. field: (row) => (row.is_approved ? t("common.status.yes") : t("common.status.no")),
  72. align: "left",
  73. sortable: true,
  74. },
  75. {
  76. name: "average_rating",
  77. label: t("provider.fields.average_rating"),
  78. field: (row) => row.average_rating || "-",
  79. align: "left",
  80. sortable: true,
  81. },
  82. {
  83. name: "total_services",
  84. label: t("provider.fields.total_services"),
  85. field: "total_services",
  86. align: "left",
  87. sortable: true,
  88. },
  89. {
  90. name: "daily_price_8h",
  91. label: t("provider.fields.daily_price_8h"),
  92. field: (row) => row.daily_price_8h ? `R$ ${row.daily_price_8h}` : "-",
  93. align: "left",
  94. sortable: true,
  95. },
  96. {
  97. name: "actions",
  98. required: true,
  99. },
  100. ];
  101. const onRowClick = ({ row }) => {
  102. if (permission_store.getAccess("config.provider", "edit") === false) {
  103. $q.loading.hide();
  104. $q.notify({
  105. type: "negative",
  106. message: t("validation.permissions.edit"),
  107. });
  108. return;
  109. }
  110. $q.dialog({
  111. component: AddEditProviderDialog,
  112. componentProps: {
  113. provider: row,
  114. title: () =>
  115. useI18n().t("common.actions.edit") +
  116. " " +
  117. useI18n().t("ui.navigation.provider"),
  118. },
  119. }).onOk(async (success) => {
  120. if (success) {
  121. tableRef.value.refresh();
  122. }
  123. });
  124. };
  125. const onAddItem = () => {
  126. if (permission_store.getAccess("config.provider", "add") === false) {
  127. $q.loading.hide();
  128. $q.notify({
  129. type: "negative",
  130. message: t("validation.permissions.add"),
  131. });
  132. return;
  133. }
  134. $q.dialog({
  135. component: AddEditProviderDialog,
  136. componentProps: {
  137. title: () =>
  138. useI18n().t("common.actions.add") + " " + useI18n().t("ui.navigation.provider"),
  139. },
  140. }).onOk(async (success) => {
  141. if (success) {
  142. tableRef.value.refresh();
  143. }
  144. });
  145. };
  146. </script>