|
|
@@ -53,11 +53,40 @@
|
|
|
v-model:error="errorsDados.category_id"
|
|
|
class="col-12"
|
|
|
/>
|
|
|
- <ParceiroSelect
|
|
|
- v-model="selectedUser"
|
|
|
- v-model:error="errorsDados.user_id"
|
|
|
- class="col-12 input-violet"
|
|
|
+
|
|
|
+ <!-- Novo usuário — apenas na criação -->
|
|
|
+ <template v-if="!partnerId">
|
|
|
+ <DefaultInput
|
|
|
+ v-model="newUser.name"
|
|
|
+ :rules="[inputRules.required]"
|
|
|
+ :label="$t('common.terms.name')"
|
|
|
+ class="col-12"
|
|
|
+ />
|
|
|
+ <DefaultInput
|
|
|
+ v-model="newUser.email"
|
|
|
+ :rules="[inputRules.required, inputRules.email]"
|
|
|
+ :label="$t('common.terms.email')"
|
|
|
+ type="email"
|
|
|
+ class="col-12"
|
|
|
+ />
|
|
|
+ <DefaultInput
|
|
|
+ v-model="newUser.password"
|
|
|
+ :rules="[inputRules.required]"
|
|
|
+ :label="$t('common.terms.password')"
|
|
|
+ type="password"
|
|
|
+ class="col-12"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <!-- Usuário vinculado — apenas na edição -->
|
|
|
+ <DefaultInput
|
|
|
+ v-else-if="partner?.user"
|
|
|
+ :model-value="partner.user.name"
|
|
|
+ :label="$t('parceiro.linked_user')"
|
|
|
+ disable
|
|
|
+ class="col-12"
|
|
|
/>
|
|
|
+
|
|
|
<DefaultInput
|
|
|
v-model="formDados.responsible"
|
|
|
v-model:error="errorsDados.responsible"
|
|
|
@@ -332,7 +361,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, computed, watch, onMounted, nextTick, useTemplateRef } from "vue";
|
|
|
+import { ref, reactive, computed, watch, onMounted, nextTick, useTemplateRef } from "vue";
|
|
|
import { useRoute, useRouter } from "vue-router";
|
|
|
import { useQuasar } from "quasar";
|
|
|
import { useI18n } from "vue-i18n";
|
|
|
@@ -356,7 +385,6 @@ import DefaultInputDatePicker from "src/components/defaults/DefaultInputDatePick
|
|
|
import DefaultFilePicker from "src/components/defaults/DefaultFilePicker.vue";
|
|
|
import DefaultTable from "src/components/defaults/DefaultTable.vue";
|
|
|
import PartnerAgreementCategorySelect from "src/components/selects/PartnerAgreementCategorySelect.vue";
|
|
|
-import ParceiroSelect from "src/components/selects/ParceiroSelect.vue";
|
|
|
import CitySelect from "src/components/selects/CitySelect.vue";
|
|
|
import StateSelect from "src/components/selects/StateSelect.vue";
|
|
|
|
|
|
@@ -415,7 +443,7 @@ const tabsItems = computed(() => [
|
|
|
const formDadosRef = useTemplateRef("formDadosRef");
|
|
|
const logoFile = ref(null);
|
|
|
const selectedCategory = ref(null);
|
|
|
-const selectedUser = ref(null);
|
|
|
+const newUser = reactive({ name: "", email: "", password: "" });
|
|
|
|
|
|
const {
|
|
|
form: formDados,
|
|
|
@@ -425,7 +453,6 @@ const {
|
|
|
company_name: "",
|
|
|
cnpj: "",
|
|
|
category_id: null,
|
|
|
- user_id: null,
|
|
|
responsible: "",
|
|
|
discount_percentage: null,
|
|
|
description: "",
|
|
|
@@ -441,17 +468,18 @@ watch(selectedCategory, (val) => {
|
|
|
formDados.category_id = val?.value ?? null;
|
|
|
});
|
|
|
|
|
|
-watch(selectedUser, (val) => {
|
|
|
- formDados.user_id = val?.value ?? null;
|
|
|
-});
|
|
|
-
|
|
|
const saveDados = async () => {
|
|
|
await execDados(async () => {
|
|
|
let savedPartner;
|
|
|
if (partnerId.value) {
|
|
|
savedPartner = await updatePartnerAgreement(partnerId.value, updatedDados.value);
|
|
|
} else {
|
|
|
- savedPartner = await createPartnerAgreement({ ...formDados });
|
|
|
+ savedPartner = await createPartnerAgreement({
|
|
|
+ ...formDados,
|
|
|
+ user_name: newUser.name,
|
|
|
+ user_email: newUser.email,
|
|
|
+ user_password: newUser.password,
|
|
|
+ });
|
|
|
await router.replace({ name: "ParceiroCadastroPage", params: { id: savedPartner.id } });
|
|
|
}
|
|
|
if (logoFile.value instanceof File) {
|
|
|
@@ -642,7 +670,6 @@ const populateForms = (p) => {
|
|
|
formDados.company_name = p.company_name ?? "";
|
|
|
formDados.cnpj = p.cnpj ?? "";
|
|
|
formDados.category_id = p.category_id ?? null;
|
|
|
- formDados.user_id = p.user_id ?? null;
|
|
|
formDados.responsible = p.responsible ?? "";
|
|
|
formDados.discount_percentage = p.discount_percentage != null ? String(p.discount_percentage) : null;
|
|
|
formDados.description = p.description ?? "";
|
|
|
@@ -651,10 +678,6 @@ const populateForms = (p) => {
|
|
|
? { label: p.category.name, value: p.category.id }
|
|
|
: null;
|
|
|
|
|
|
- selectedUser.value = p.user
|
|
|
- ? { label: p.user.name, value: p.user.id }
|
|
|
- : null;
|
|
|
-
|
|
|
formContato.email = p.email ?? "";
|
|
|
formContato.phone = p.phone ?? "";
|
|
|
formContato.whatsapp = p.whatsapp ?? "";
|
|
|
@@ -685,6 +708,7 @@ onMounted(async () => {
|
|
|
} catch {
|
|
|
$q.notify({ type: "negative", message: t("http.errors.failed") });
|
|
|
}
|
|
|
+ if (activeTab.value === "servicos") loadServices();
|
|
|
}
|
|
|
});
|
|
|
|