ajuste do crud empresa
This commit is contained in:
parent
cb12483790
commit
bb33d0b20b
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-dialog v-model="isOpen" max-width="500px" @close="closeModal">
|
<v-dialog v-model="isOpen" max-width="900px" @close="closeModal">
|
||||||
<v-form @submit="handleSave">
|
<v-form @submit="handleSave">
|
||||||
<v-card class="pa-6 rounded-xl elevation-2 card-modal">
|
<v-card class="pa-6 rounded-xl elevation-2 card-modal">
|
||||||
<v-card-title class="text-h5 font-weight-bold pb-0">
|
<v-card-title class="text-h5 font-weight-bold pb-0">
|
||||||
@ -8,52 +8,58 @@
|
|||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-container>
|
<v-container>
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-text class="text-h7">Dados básicos</v-text>
|
<v-col cols="12">
|
||||||
|
<h3 class="text-body-1 text-grey-darken-1 pb-4">Dados Básicos</h3>
|
||||||
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field v-model="localCompany.name" label="Nome da Empresa *" clearable required />
|
<v-text-field v-model="localCompany.name" label="Nome da Empresa *" clearable required />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field v-model="localCompany.fantasy_name" label="Nome Fantasia" clearable />
|
<v-text-field v-model="localCompany.fantasy_name" label="Nome Fantasia" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.cnpj" label="CNPJ *" clearable required />
|
<v-text-field v-model="localCompany.cnpj" label="CNPJ *" clearable required />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.type" label="Tipo" clearable />
|
<v-text-field v-model="localCompany.type" label="Tipo" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-text class="text-h7">Contato</v-text>
|
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
|
<h3 class="text-body-1 text-grey-darken-1 pb-4">Contato</h3>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.email" label="Email *" clearable required />
|
<v-text-field v-model="localCompany.email" label="Email *" clearable required />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.email_sec" label="Email Secundário" clearable />
|
<v-text-field v-model="localCompany.email_sec" label="Email Secundário" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.phone" label="Telefone *" clearable required />
|
<v-text-field v-model="localCompany.phone" label="Telefone *" clearable required />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.phone_sec" label="Telefone Secundário" clearable />
|
<v-text-field v-model="localCompany.phone_sec" label="Telefone Secundário" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-text class="text-h7">Endereço</v-text>
|
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
|
<h3 class="text-body-1 text-grey-darken-1 pb-4">Endereço</h3>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" md="4">
|
||||||
<v-text-field v-model="localCompany.cep" label="CEP *" clearable />
|
<v-text-field v-model="localCompany.cep" label="CEP *" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="8">
|
||||||
<v-text-field v-model="localCompany.rua" label="Rua *" clearable />
|
<v-text-field v-model="localCompany.rua" label="Rua *" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="4">
|
||||||
<v-text-field v-model="localCompany.numero" label="Número *" clearable />
|
<v-text-field v-model="localCompany.numero" label="Número *" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12"md="4">
|
||||||
<v-text-field v-model="localCompany.bairro" label="Bairro *" clearable />
|
<v-text-field v-model="localCompany.bairro" label="Bairro *" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="4">
|
||||||
<v-text-field v-model="localCompany.complemento" label="Complemento" clearable />
|
<v-text-field v-model="localCompany.complemento" label="Complemento" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.estado" label="Estado" clearable />
|
<v-text-field v-model="localCompany.estado" label="Estado" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field v-model="localCompany.cidade" label="Cidade" clearable />
|
<v-text-field v-model="localCompany.cidade" label="Cidade" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -162,8 +168,10 @@ const handleSave = async (e) => {
|
|||||||
e.preventDefault(); // Isso é um seguro extra
|
e.preventDefault(); // Isso é um seguro extra
|
||||||
try {
|
try {
|
||||||
const companyData = { ...localCompany.value };
|
const companyData = { ...localCompany.value };
|
||||||
|
|
||||||
if (!props.isEditMode) {
|
if (!props.isEditMode) {
|
||||||
delete companyData.id;
|
delete companyData.id;
|
||||||
|
console.log('Dados da empresa:', companyData);
|
||||||
await companyStore.createCompany(companyData);
|
await companyStore.createCompany(companyData);
|
||||||
} else {
|
} else {
|
||||||
await companyStore.updateCompany(companyData.id, companyData);
|
await companyStore.updateCompany(companyData.id, companyData);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-dialog v-model="isOpen" max-width="500px" @close="closeModal">
|
<v-dialog v-model="isOpen" max-width="900px" @close="closeModal">
|
||||||
<v-form ref="form" v-model="formValid">
|
<v-form ref="form" v-model="formValid">
|
||||||
<v-card class="pa-6 rounded-xl elevation-2 card-modal">
|
<v-card class="pa-6 rounded-xl elevation-2 card-modal">
|
||||||
<v-card-title class="text-h5 font-weight-bold pb-0">
|
<v-card-title class="text-h5 font-weight-bold pb-0">
|
||||||
@ -8,116 +8,59 @@
|
|||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-container>
|
<v-container>
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-text class="text-h7">Dados básicos</v-text>
|
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field
|
<h3 class="text-body-1 text-grey-darken-1 pb-4">Dados Básicos</h3>
|
||||||
v-model="localCompany.name"
|
|
||||||
label="Nome da Empresa *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.name" label="Nome da Empresa *" clearable :rules="[rules.required]" required />
|
||||||
v-model="localCompany.fantasy_name"
|
|
||||||
label="Nome Fantasia *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.fantasy_name" label="Nome Fantasia" clearable :rules="[rules.required]" required />
|
||||||
v-model="localCompany.cnpj"
|
</v-col>
|
||||||
label="CNPJ *"
|
<v-col cols="12" md="6">
|
||||||
clearable
|
<v-text-field v-model="localCompany.cnpj" label="CNPJ *" clearable :rules="[rules.required]" required />
|
||||||
:rules="[rules.required]"
|
</v-col>
|
||||||
required
|
<v-col cols="12" md="6">
|
||||||
/>
|
<v-text-field v-model="localCompany.type" label="Tipo" clearable :rules="[rules.required]" required />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field
|
<h3 class="text-body-1 text-grey-darken-1 pb-4">Contato</h3>
|
||||||
v-model="localCompany.type"
|
</v-col>
|
||||||
label="Tipo *"
|
<v-col cols="12" md="6">
|
||||||
clearable
|
<v-text-field v-model="localCompany.email" label="Email *" clearable required :rules="[rules.required, rules.email]"/>
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-text class="text-h7">Contato</v-text>
|
<v-col cols="12" md="6">
|
||||||
<v-col cols="12">
|
<v-text-field v-model="localCompany.email_sec" label="Email Secundário" clearable :rules="[rules.required, rules.email]" required/>
|
||||||
<v-text-field
|
</v-col>
|
||||||
v-model="localCompany.email"
|
<v-col cols="12" md="6">
|
||||||
label="Email *"
|
<v-text-field v-model="localCompany.phone" label="Telefone *" clearable required :rules="[rules.required]" />
|
||||||
clearable
|
</v-col>
|
||||||
:rules="[rules.required, rules.email]"
|
<v-col cols="12" md="6">
|
||||||
required
|
<v-text-field v-model="localCompany.phone_sec" label="Telefone Secundário" clearable :rules="[rules.required]" required />
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-text-field
|
<h3 class="text-body-1 text-grey-darken-1 pb-4">Endereço</h3>
|
||||||
v-model="localCompany.phone"
|
|
||||||
label="Telefone *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-text class="text-h7">Endereço</v-text>
|
<v-col cols="12" md="4">
|
||||||
<v-col cols="12">
|
<v-text-field v-model="localCompany.cep" label="CEP *" clearable :rules="[rules.required]" required />
|
||||||
<v-text-field
|
|
||||||
v-model="localCompany.cep"
|
|
||||||
label="CEP *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="8">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.rua" label="Rua *" clearable :rules="[rules.required]" required/>
|
||||||
v-model="localCompany.rua"
|
|
||||||
label="Rua *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="4">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.numero" label="Número *" clearable :rules="[rules.required]" required />
|
||||||
v-model="localCompany.numero"
|
|
||||||
label="Número *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12"md="4">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.bairro" label="Bairro *" clearable :rules="[rules.required]" required/>
|
||||||
v-model="localCompany.bairro"
|
|
||||||
label="Bairro *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="4">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.complemento" label="Complemento" clearable :rules="[rules.required]" required/>
|
||||||
v-model="localCompany.estado"
|
|
||||||
label="Estado *"
|
|
||||||
clearable
|
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12" md="6">
|
||||||
<v-text-field
|
<v-text-field v-model="localCompany.estado" label="Estado" clearable :rules="[rules.required]" required/>
|
||||||
v-model="localCompany.cidade"
|
</v-col>
|
||||||
label="Cidade *"
|
<v-col cols="12" md="6">
|
||||||
clearable
|
<v-text-field v-model="localCompany.cidade" label="Cidade" clearable :rules="[rules.required]" required />
|
||||||
:rules="[rules.required]"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-container>
|
</v-container>
|
||||||
@ -144,6 +87,7 @@
|
|||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import { useCompanyStore } from '../../stores/company';
|
import { useCompanyStore } from '../../stores/company';
|
||||||
import { useAuthStore } from '../../stores/auth';
|
import { useAuthStore } from '../../stores/auth';
|
||||||
|
import {useServiceInstanceStore} from '../../stores/service_instance';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
isModalOpen: Boolean,
|
isModalOpen: Boolean,
|
||||||
@ -153,19 +97,23 @@ const emit = defineEmits(['update:isModalOpen', 'company-created']);
|
|||||||
const isOpen = ref(false);
|
const isOpen = ref(false);
|
||||||
const companyStore = useCompanyStore();
|
const companyStore = useCompanyStore();
|
||||||
const authStore = useAuthStore();
|
const authStore = useAuthStore();
|
||||||
|
const serviceInstanceStore = useServiceInstanceStore();
|
||||||
const localCompany = ref({
|
const localCompany = ref({
|
||||||
|
id: null,
|
||||||
name: '',
|
name: '',
|
||||||
fantasy_name: '',
|
fantasy_name: '',
|
||||||
type: '',
|
type: '',
|
||||||
cnpj: '',
|
cnpj: '',
|
||||||
email: '',
|
email: '',
|
||||||
|
email_sec: '',
|
||||||
phone: '',
|
phone: '',
|
||||||
|
phone_sec: '',
|
||||||
estado: '',
|
estado: '',
|
||||||
cidade: '',
|
cidade: '',
|
||||||
bairro: '',
|
bairro: '',
|
||||||
rua: '',
|
rua: '',
|
||||||
numero: '',
|
numero: '',
|
||||||
|
complemento: '',
|
||||||
cep: '',
|
cep: '',
|
||||||
service_instance_id: authStore.service_instance_id || 2,
|
service_instance_id: authStore.service_instance_id || 2,
|
||||||
parent_id: authStore.userId,
|
parent_id: authStore.userId,
|
||||||
@ -184,17 +132,21 @@ watch(() => props.isModalOpen, (newVal) => {
|
|||||||
isOpen.value = newVal;
|
isOpen.value = newVal;
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
Object.assign(localCompany.value, {
|
Object.assign(localCompany.value, {
|
||||||
|
id: null,
|
||||||
name: '',
|
name: '',
|
||||||
fantasy_name: '',
|
fantasy_name: '',
|
||||||
type: '',
|
type: '',
|
||||||
cnpj: '',
|
cnpj: '',
|
||||||
email: '',
|
email: '',
|
||||||
|
email_sec: '',
|
||||||
phone: '',
|
phone: '',
|
||||||
|
phone_sec: '',
|
||||||
estado: '',
|
estado: '',
|
||||||
cidade: '',
|
cidade: '',
|
||||||
bairro: '',
|
bairro: '',
|
||||||
rua: '',
|
rua: '',
|
||||||
numero: '',
|
numero: '',
|
||||||
|
complemento: '',
|
||||||
cep: '',
|
cep: '',
|
||||||
service_instance_id: authStore.service_instance_id || 2,
|
service_instance_id: authStore.service_instance_id || 2,
|
||||||
parent_id: authStore.userId,
|
parent_id: authStore.userId,
|
||||||
@ -212,10 +164,22 @@ const closeModal = () => {
|
|||||||
isOpen.value = false;
|
isOpen.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const formatCompanyData = () => {
|
||||||
|
const now = new Date().toISOString(); // gera data atual no formato ISO
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: localCompany.value.name,
|
||||||
|
description: localCompany.value.fantasy_name,
|
||||||
|
service_id: 1,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
const validateAndSave = async () => {
|
const validateAndSave = async () => {
|
||||||
if (form.value.validate()) {
|
if (form.value.validate()) {
|
||||||
try {
|
try {
|
||||||
|
const formattedCompany = formatCompanyData();
|
||||||
await companyStore.createCompany(localCompany.value);
|
await companyStore.createCompany(localCompany.value);
|
||||||
|
await serviceInstanceStore.createServiceInstance(formattedCompany);
|
||||||
emit('company-created');
|
emit('company-created');
|
||||||
closeModal();
|
closeModal();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@ -85,10 +85,10 @@
|
|||||||
<v-select v-model="localUser.empresa" :items="empresas" label="Empresa" clearable />
|
<v-select v-model="localUser.empresa" :items="empresas" label="Empresa" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" md="6">
|
<v-col cols="12" md="6">
|
||||||
<v-select v-model="localUser.cargo" :items="cargos" label="Cargo" clearable />
|
<v-select v-model="localUser.cargo" :items="cargos" :disabled="true" label="Cargo" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" md="6">
|
<v-col cols="12" md="6">
|
||||||
<v-select v-model="localUser.setor" :items="setores" label="Setor" clearable />
|
<v-select v-model="localUser.setor" :items="setores" :disabled="true" label="Setor" clearable />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" md="6">
|
<v-col cols="12" md="6">
|
||||||
<v-select v-model="localUser.escala" :items="escalas" label="Escala" clearable />
|
<v-select v-model="localUser.escala" :items="escalas" label="Escala" clearable />
|
||||||
|
|||||||
@ -61,7 +61,7 @@ export const useCompanyStore = defineStore('company', {
|
|||||||
const url = '/company/';
|
const url = '/company/';
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.error = null;
|
this.error = null;
|
||||||
|
console.log('Dados da empresa:', companyData);
|
||||||
try {
|
try {
|
||||||
const response = await api.post(url, companyData, {
|
const response = await api.post(url, companyData, {
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
135
src/stores/service_instance.js
Normal file
135
src/stores/service_instance.js
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
import { defineStore } from 'pinia';
|
||||||
|
import api from '../services/api';
|
||||||
|
import router from '../routes/router';
|
||||||
|
import { useAuthStore } from './auth';
|
||||||
|
import { ca } from 'date-fns/locale';
|
||||||
|
|
||||||
|
export const useServiceInstanceStore = defineStore('servic_instance', {
|
||||||
|
state: () => ({
|
||||||
|
service_instance: [],
|
||||||
|
total: 0,
|
||||||
|
page: 1,
|
||||||
|
perPage: 10,
|
||||||
|
error: null,
|
||||||
|
loading: false,
|
||||||
|
}),
|
||||||
|
|
||||||
|
getters: {
|
||||||
|
currentPage(state) {
|
||||||
|
return state.page;
|
||||||
|
},
|
||||||
|
totalPages(state) {
|
||||||
|
return Math.ceil(state.total / state.perPage);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
/**
|
||||||
|
* Busca os turnos (shifts) registrados na API
|
||||||
|
*/
|
||||||
|
async fetchServiceInstance() {
|
||||||
|
this.loading = true;
|
||||||
|
this.error = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await api.get('/service_instance/', {
|
||||||
|
params: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
const status = error?.response?.status;
|
||||||
|
|
||||||
|
if (status === 401) {
|
||||||
|
console.warn('Não autorizado. Redirecionando para login...');
|
||||||
|
router.push('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.error = error?.response?.data?.message || error.message || 'Erro ao buscar turnos';
|
||||||
|
console.error('Erro ao buscar turnos', error);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Busca o ID da instância de serviço pelo nome
|
||||||
|
*/
|
||||||
|
async fetchServiceInstanceIdByName(nome) {
|
||||||
|
this.loading = true;
|
||||||
|
this.error = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await api.get(`/service_instance/get-id-by-name/${nome}`, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return response.data.id;
|
||||||
|
} catch (error) {
|
||||||
|
const status = error?.response?.status;
|
||||||
|
|
||||||
|
if (status === 401) {
|
||||||
|
console.warn('Não autorizado. Redirecionando para login...');
|
||||||
|
router.push('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.error = error?.response?.data?.message || error.message || 'Erro ao buscar ID da instância de serviço';
|
||||||
|
console.error('Erro ao buscar ID da instância de serviço', error);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Busca um turno específico pelo ID
|
||||||
|
*/
|
||||||
|
async createServiceInstance(service_instance) {
|
||||||
|
const url = '/service_instance/';
|
||||||
|
this.loading = true;
|
||||||
|
this.error = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await api.post(url, service_instance, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.service_instance.push(response.data);
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
this.error = error?.response?.data?.message || error.message || 'Erro ao criar turno';
|
||||||
|
console.error('Erro ao criar turno', error);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async deleteServiceInstance(service_instance_id) {
|
||||||
|
this.loading = true;
|
||||||
|
this.error = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await api.delete(`/service_instance/${service_instance_id}`);
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
const status = error?.response?.status;
|
||||||
|
|
||||||
|
if (status === 401) {
|
||||||
|
console.warn('Não autorizado. Redirecionando para login...');
|
||||||
|
router.push('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.error = error?.response?.data?.message || error.message || 'Erro ao deletar instância de serviço';
|
||||||
|
console.error('Erro ao deletar instância de serviço', error);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -145,6 +145,7 @@
|
|||||||
import CompanyModal from '../components/modals/CompanyModal.vue';
|
import CompanyModal from '../components/modals/CompanyModal.vue';
|
||||||
import CompanyModayCreate from '../components/modals/CompanyModalCreate.vue';
|
import CompanyModayCreate from '../components/modals/CompanyModalCreate.vue';
|
||||||
import { useCompanyStore } from '../stores/company';
|
import { useCompanyStore } from '../stores/company';
|
||||||
|
import { useServiceInstanceStore } from '../stores/service_instance';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CompanyManagement',
|
name: 'CompanyManagement',
|
||||||
@ -154,7 +155,7 @@
|
|||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
const serviceInstanceStore = useServiceInstanceStore();
|
||||||
// Estados
|
// Estados
|
||||||
const isCreateModalOpen = ref(false);
|
const isCreateModalOpen = ref(false);
|
||||||
const isEditing = ref(false);
|
const isEditing = ref(false);
|
||||||
@ -435,6 +436,9 @@
|
|||||||
|
|
||||||
// Faz a requisição para deletar
|
// Faz a requisição para deletar
|
||||||
await companyStore.deleteCompany(companyId);
|
await companyStore.deleteCompany(companyId);
|
||||||
|
const service_instance_id = await serviceInstanceStore.fetchServiceInstanceIdByName(itemToDelete.value.name);''
|
||||||
|
console.log(`Serviço de instância excluído com ID: ${service_instance_id}`);
|
||||||
|
await serviceInstanceStore.deleteServiceInstance(service_instance_id);
|
||||||
|
|
||||||
// Remover o item diretamente da lista local
|
// Remover o item diretamente da lista local
|
||||||
// Esta é uma abordagem mais direta e imediata
|
// Esta é uma abordagem mais direta e imediata
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user