|
|
@@ -6,6 +6,7 @@
|
|
|
<!-- Add button -->
|
|
|
<div class="row justify-end q-mb-md">
|
|
|
<q-btn
|
|
|
+ v-if="canAdd"
|
|
|
color="primary"
|
|
|
icon="mdi-plus"
|
|
|
unelevated
|
|
|
@@ -36,7 +37,12 @@
|
|
|
:key="pkg.id"
|
|
|
class="col-12 col-sm-6 col-md-4"
|
|
|
>
|
|
|
- <PackageCard :pkg="pkg" @click="openEditDialog(pkg)" />
|
|
|
+ <PackageCard
|
|
|
+ :pkg="pkg"
|
|
|
+ :can-delete="canDelete"
|
|
|
+ @click="openPackage(pkg)"
|
|
|
+ @delete="confirmDelete(pkg)"
|
|
|
+ />
|
|
|
</div>
|
|
|
|
|
|
<div
|
|
|
@@ -51,18 +57,30 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, onMounted, watch } from "vue";
|
|
|
+import { computed, ref, onMounted, watch } from "vue";
|
|
|
import { useQuasar } from "quasar";
|
|
|
|
|
|
import DefaultHeaderPage from "src/components/layout/DefaultHeaderPage.vue";
|
|
|
import PackageCard from "./components/PackageCard.vue";
|
|
|
import AddEditPackageDialog from "./components/AddEditPackageDialog.vue";
|
|
|
+import PackageDetailDialog from "./components/PackageDetailDialog.vue";
|
|
|
|
|
|
-import { getUnitPackages } from "src/api/package";
|
|
|
+import { deleteUnitPackage, getUnitPackages } from "src/api/package";
|
|
|
import { userStore } from "src/stores/user";
|
|
|
+import { permissionStore } from "src/stores/permission";
|
|
|
|
|
|
const $q = useQuasar();
|
|
|
const store = userStore();
|
|
|
+const permissions = permissionStore();
|
|
|
+const canAdd = computed(() =>
|
|
|
+ permissions.getAccess("franchisee_packages", "add"),
|
|
|
+);
|
|
|
+const canEdit = computed(() =>
|
|
|
+ permissions.getAccess("franchisee_packages", "edit"),
|
|
|
+);
|
|
|
+const canDelete = computed(() =>
|
|
|
+ permissions.getAccess("franchisee_packages", "delete"),
|
|
|
+);
|
|
|
const loading = ref(false);
|
|
|
const packages = ref([]);
|
|
|
|
|
|
@@ -90,6 +108,30 @@ const openEditDialog = (pkg) => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+const openPackage = (pkg) => {
|
|
|
+ if (canEdit.value) {
|
|
|
+ openEditDialog(pkg);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $q.dialog({
|
|
|
+ component: PackageDetailDialog,
|
|
|
+ componentProps: { pkg },
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const confirmDelete = (pkg) => {
|
|
|
+ $q.dialog({
|
|
|
+ title: "Excluir pacote",
|
|
|
+ message: `Deseja excluir o pacote ${pkg.name}?`,
|
|
|
+ cancel: true,
|
|
|
+ persistent: true,
|
|
|
+ }).onOk(async () => {
|
|
|
+ await deleteUnitPackage(pkg.id);
|
|
|
+ await fetchPackages();
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
// Recarrega pacotes ao trocar de unidade
|
|
|
watch(
|
|
|
() => store.selectedUnit?.id,
|