UsersPage.vue 2.3 KB

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