UsersPage.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div>
  3. <DefaultHeaderPage />
  4. <DefaultTable
  5. :key="tableKey"
  6. :columns="columns"
  7. :api-call="getUsers"
  8. :mostrar-selecao-de-colunas="false"
  9. :mostrar-botao-fullscreen="false"
  10. :mostrar-toggle-inativos="false"
  11. open-item
  12. add-item
  13. @on-row-click="onRowClick"
  14. @on-add-item="onAddItem"
  15. />
  16. </div>
  17. </template>
  18. <script setup>
  19. import { ref, defineAsyncComponent } from "vue";
  20. import { useQuasar } from "quasar";
  21. import { useI18n } from "vue-i18n";
  22. import { permissionStore } from "src/stores/permission";
  23. import { getUsers, createUser, updateUser } from "src/api/user";
  24. import DefaultTable from "src/components/geral/DefaultTable.vue";
  25. import DefaultHeaderPage from "src/components/geral/DefaultHeaderPage.vue";
  26. const AddEditUserDialog = defineAsyncComponent(
  27. () => import("src/pages/users/components/AddEditUserDialog.vue"),
  28. );
  29. const permission_store = permissionStore();
  30. const $q = useQuasar();
  31. const tableKey = ref(0);
  32. const { t } = useI18n();
  33. const columns = [
  34. {
  35. name: "nome",
  36. label: t("users.name"),
  37. field: "name",
  38. align: "left",
  39. style: "width: 50%",
  40. required: true,
  41. sortable: true,
  42. },
  43. {
  44. name: "email",
  45. label: "Email",
  46. field: "email",
  47. align: "left",
  48. style: "width: 20%",
  49. required: true,
  50. sortable: true,
  51. },
  52. {},
  53. ];
  54. const onRowClick = ({ row }) => {
  55. if (permission_store.getAccess("config.user", "view") === false) {
  56. $q.loading.hide();
  57. $q.notify({
  58. type: "negative",
  59. message: t("permissions.view"),
  60. });
  61. return;
  62. }
  63. $q.dialog({
  64. component: AddEditUserDialog,
  65. componentProps: {
  66. user: row,
  67. title: () =>
  68. useI18n().t("users.user", { something: useI18n().t("general.edit") }),
  69. },
  70. }).onOk(async (payload) => {
  71. await updateUser(payload, row.id);
  72. tableKey.value = tableKey.value + 1;
  73. });
  74. };
  75. const onAddItem = () => {
  76. if (permission_store.getAccess("config.user", "add") === false) {
  77. $q.loading.hide();
  78. $q.notify({
  79. type: "negative",
  80. message: t("permissions.add"),
  81. });
  82. return;
  83. }
  84. $q.dialog({
  85. component: AddEditUserDialog,
  86. componentProps: {
  87. title: () =>
  88. useI18n().t("users.user", { something: useI18n().t("general.add") }),
  89. },
  90. }).onOk(async (payload) => {
  91. await createUser(payload);
  92. tableKey.value = tableKey.value + 1;
  93. });
  94. };
  95. </script>