|
@@ -4,10 +4,7 @@
|
|
|
class="q-dialog-plugin overflow-hidden"
|
|
class="q-dialog-plugin overflow-hidden"
|
|
|
style="width: 860px; max-width: 95vw"
|
|
style="width: 860px; max-width: 95vw"
|
|
|
>
|
|
>
|
|
|
- <DefaultDialogHeader
|
|
|
|
|
- :title="() => (partner ? 'Editar Sócio' : 'Adicionar Sócio')"
|
|
|
|
|
- @close="onDialogCancel"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <DefaultDialogHeader :title="dialogTitle" @close="onDialogCancel" />
|
|
|
|
|
|
|
|
<q-form ref="formRef" @submit="onOKClick">
|
|
<q-form ref="formRef" @submit="onOKClick">
|
|
|
<q-card-section class="q-pt-none">
|
|
<q-card-section class="q-pt-none">
|
|
@@ -21,90 +18,107 @@
|
|
|
<div class="row q-col-gutter-sm">
|
|
<div class="row q-col-gutter-sm">
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.name"
|
|
v-model="form.name"
|
|
|
- label="Nome completo"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.name"
|
|
|
class="col-8"
|
|
class="col-8"
|
|
|
|
|
+ label="Nome completo"
|
|
|
outlined
|
|
outlined
|
|
|
:rules="[inputRules.required]"
|
|
:rules="[inputRules.required]"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.role"
|
|
v-model="form.role"
|
|
|
- label="Função"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.role"
|
|
|
class="col-4"
|
|
class="col-4"
|
|
|
|
|
+ label="Função"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.social_name"
|
|
v-model="form.social_name"
|
|
|
- label="Nome social"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.social_name"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="Nome social"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.cpf"
|
|
v-model="form.cpf"
|
|
|
- label="CPF"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.cpf"
|
|
|
class="col-3"
|
|
class="col-3"
|
|
|
|
|
+ label="CPF"
|
|
|
outlined
|
|
outlined
|
|
|
:mask="masks.Brasil.cpf"
|
|
:mask="masks.Brasil.cpf"
|
|
|
:rules="[inputRules.required]"
|
|
:rules="[inputRules.required]"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
- <DefaultInput v-model="form.rg" label="RG" class="col-3" outlined />
|
|
|
|
|
|
|
+ <DefaultInput
|
|
|
|
|
+ v-model="form.rg"
|
|
|
|
|
+ v-model:error="validationErrors.rg"
|
|
|
|
|
+ class="col-3"
|
|
|
|
|
+ label="RG"
|
|
|
|
|
+ outlined
|
|
|
|
|
+ />
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="birthDateDisplay"
|
|
v-model="birthDateDisplay"
|
|
|
- label="Data de Nascimento"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.birth_date"
|
|
|
class="col-3"
|
|
class="col-3"
|
|
|
|
|
+ label="Data de Nascimento"
|
|
|
|
|
+ placeholder="DD/MM/AAAA"
|
|
|
outlined
|
|
outlined
|
|
|
:mask="masks.Brasil.date"
|
|
:mask="masks.Brasil.date"
|
|
|
- placeholder="DD/MM/AAAA"
|
|
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.participation"
|
|
v-model="form.participation"
|
|
|
- label="Participação (%)"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.participation"
|
|
|
class="col-3"
|
|
class="col-3"
|
|
|
|
|
+ label="Participação (%)"
|
|
|
|
|
+ max="100"
|
|
|
|
|
+ min="0"
|
|
|
outlined
|
|
outlined
|
|
|
type="number"
|
|
type="number"
|
|
|
- min="0"
|
|
|
|
|
- max="100"
|
|
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.email"
|
|
v-model="form.email"
|
|
|
- label="E-mail"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.email"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="E-mail"
|
|
|
outlined
|
|
outlined
|
|
|
:rules="[inputRules.email]"
|
|
:rules="[inputRules.email]"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.secondary_email"
|
|
v-model="form.secondary_email"
|
|
|
- label="E-mail Secundário"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.secondary_email"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="E-mail Secundário"
|
|
|
outlined
|
|
outlined
|
|
|
:rules="[inputRules.email]"
|
|
:rules="[inputRules.email]"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.phone_number"
|
|
v-model="form.phone_number"
|
|
|
- label="Telefone"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.phone_number"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="Telefone"
|
|
|
outlined
|
|
outlined
|
|
|
:mask="masks.Brasil.telefone"
|
|
:mask="masks.Brasil.telefone"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.cell_number"
|
|
v-model="form.cell_number"
|
|
|
- label="Celular"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.cell_number"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="Celular"
|
|
|
outlined
|
|
outlined
|
|
|
:mask="masks.Brasil.celular"
|
|
:mask="masks.Brasil.celular"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultCepInput
|
|
<DefaultCepInput
|
|
|
v-model="form.postal_code"
|
|
v-model="form.postal_code"
|
|
|
|
|
+ v-model:error="validationErrors.postal_code"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
outlined
|
|
outlined
|
|
|
@rua="form.street = $event"
|
|
@rua="form.street = $event"
|
|
@@ -115,46 +129,52 @@
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.street"
|
|
v-model="form.street"
|
|
|
- label="Endereço"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.street"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="Endereço"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.address_number"
|
|
v-model="form.address_number"
|
|
|
- label="Número"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.address_number"
|
|
|
class="col-6"
|
|
class="col-6"
|
|
|
|
|
+ label="Número"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.neighborhood"
|
|
v-model="form.neighborhood"
|
|
|
- label="Bairro"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.neighborhood"
|
|
|
class="col-4"
|
|
class="col-4"
|
|
|
|
|
+ label="Bairro"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<StateSelect
|
|
<StateSelect
|
|
|
ref="stateSelectRef"
|
|
ref="stateSelectRef"
|
|
|
v-model="selectedState"
|
|
v-model="selectedState"
|
|
|
- label="Estado"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.state_id"
|
|
|
class="col-4"
|
|
class="col-4"
|
|
|
|
|
+ label="Estado"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<CitySelect
|
|
<CitySelect
|
|
|
ref="citySelectRef"
|
|
ref="citySelectRef"
|
|
|
v-model="selectedCity"
|
|
v-model="selectedCity"
|
|
|
- label="Cidade"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.city_id"
|
|
|
class="col-4"
|
|
class="col-4"
|
|
|
|
|
+ label="Cidade"
|
|
|
outlined
|
|
outlined
|
|
|
:state="selectedState"
|
|
:state="selectedState"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<DefaultInput
|
|
<DefaultInput
|
|
|
v-model="form.complement"
|
|
v-model="form.complement"
|
|
|
- label="Complemento"
|
|
|
|
|
|
|
+ v-model:error="validationErrors.complement"
|
|
|
class="col-12"
|
|
class="col-12"
|
|
|
|
|
+ label="Complemento"
|
|
|
outlined
|
|
outlined
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
@@ -162,16 +182,18 @@
|
|
|
|
|
|
|
|
<q-card-actions>
|
|
<q-card-actions>
|
|
|
<q-space />
|
|
<q-space />
|
|
|
|
|
+
|
|
|
<q-btn
|
|
<q-btn
|
|
|
- outline
|
|
|
|
|
color="negative"
|
|
color="negative"
|
|
|
label="Cancelar"
|
|
label="Cancelar"
|
|
|
|
|
+ outline
|
|
|
@click="onDialogCancel"
|
|
@click="onDialogCancel"
|
|
|
/>
|
|
/>
|
|
|
|
|
+
|
|
|
<q-btn
|
|
<q-btn
|
|
|
color="primary-2"
|
|
color="primary-2"
|
|
|
- :label="partner ? 'Salvar' : 'Adicionar'"
|
|
|
|
|
type="submit"
|
|
type="submit"
|
|
|
|
|
+ :label="partner ? 'Salvar' : 'Adicionar'"
|
|
|
:loading="loading"
|
|
:loading="loading"
|
|
|
/>
|
|
/>
|
|
|
</q-card-actions>
|
|
</q-card-actions>
|
|
@@ -181,25 +203,31 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
-import { ref, watch, onMounted } from "vue";
|
|
|
|
|
|
|
+import { createPartner, updatePartner } from "src/api/unit_partner";
|
|
|
|
|
+import { formatDateDMYtoYMD, formatDateYMDtoDMY } from "src/helpers/utils";
|
|
|
|
|
+import { onMounted, ref, watch } from "vue";
|
|
|
import { useDialogPluginComponent } from "quasar";
|
|
import { useDialogPluginComponent } from "quasar";
|
|
|
-import { useInputRules } from "src/composables/useInputRules";
|
|
|
|
|
import { useFormUpdateTracker } from "src/composables/useFormUpdateTracker";
|
|
import { useFormUpdateTracker } from "src/composables/useFormUpdateTracker";
|
|
|
|
|
+import { useInputRules } from "src/composables/useInputRules";
|
|
|
import { useSubmitHandler } from "src/composables/useSubmitHandler";
|
|
import { useSubmitHandler } from "src/composables/useSubmitHandler";
|
|
|
-import { createPartner, updatePartner } from "src/api/unit_partner";
|
|
|
|
|
import masks from "src/helpers/masks";
|
|
import masks from "src/helpers/masks";
|
|
|
-import { formatDateDMYtoYMD, formatDateYMDtoDMY } from "src/helpers/utils";
|
|
|
|
|
|
|
|
|
|
import DefaultDialogHeader from "src/components/defaults/DefaultDialogHeader.vue";
|
|
import DefaultDialogHeader from "src/components/defaults/DefaultDialogHeader.vue";
|
|
|
import DefaultInput from "src/components/defaults/DefaultInput.vue";
|
|
import DefaultInput from "src/components/defaults/DefaultInput.vue";
|
|
|
import DefaultCepInput from "src/components/defaults/DefaultCepInput.vue";
|
|
import DefaultCepInput from "src/components/defaults/DefaultCepInput.vue";
|
|
|
|
|
+
|
|
|
import AvatarImageComponent from "src/components/shared/AvatarImageComponent.vue";
|
|
import AvatarImageComponent from "src/components/shared/AvatarImageComponent.vue";
|
|
|
|
|
+
|
|
|
import StateSelect from "src/components/selects/StateSelect.vue";
|
|
import StateSelect from "src/components/selects/StateSelect.vue";
|
|
|
import CitySelect from "src/components/selects/CitySelect.vue";
|
|
import CitySelect from "src/components/selects/CitySelect.vue";
|
|
|
|
|
|
|
|
defineEmits([...useDialogPluginComponent.emits]);
|
|
defineEmits([...useDialogPluginComponent.emits]);
|
|
|
|
|
|
|
|
-const { partner, unitId, offlineMode } = defineProps({
|
|
|
|
|
|
|
+const { offlineMode, partner, unitId } = defineProps({
|
|
|
|
|
+ offlineMode: {
|
|
|
|
|
+ type: Boolean,
|
|
|
|
|
+ default: false,
|
|
|
|
|
+ },
|
|
|
partner: {
|
|
partner: {
|
|
|
type: Object,
|
|
type: Object,
|
|
|
default: null,
|
|
default: null,
|
|
@@ -208,67 +236,52 @@ const { partner, unitId, offlineMode } = defineProps({
|
|
|
type: Number,
|
|
type: Number,
|
|
|
default: null,
|
|
default: null,
|
|
|
},
|
|
},
|
|
|
- offlineMode: {
|
|
|
|
|
- type: Boolean,
|
|
|
|
|
- default: false,
|
|
|
|
|
- },
|
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
const { inputRules } = useInputRules();
|
|
const { inputRules } = useInputRules();
|
|
|
|
|
+
|
|
|
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } =
|
|
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } =
|
|
|
useDialogPluginComponent();
|
|
useDialogPluginComponent();
|
|
|
|
|
|
|
|
-const formRef = ref(null);
|
|
|
|
|
-const avatarRef = ref(null);
|
|
|
|
|
-const stateSelectRef = ref(null);
|
|
|
|
|
-const citySelectRef = ref(null);
|
|
|
|
|
-
|
|
|
|
|
-const selectedState = ref(null);
|
|
|
|
|
-const selectedCity = ref(null);
|
|
|
|
|
-const avatarChanged = ref(false);
|
|
|
|
|
-const avatarFile = ref(null);
|
|
|
|
|
-
|
|
|
|
|
-// Exibe DD/MM/YYYY para o usuário; form.birth_date armazena YYYY-MM-DD para o backend
|
|
|
|
|
-const birthDateDisplay = ref(
|
|
|
|
|
- partner?.birth_date ? formatDateYMDtoDMY(partner.birth_date) : null,
|
|
|
|
|
-);
|
|
|
|
|
-
|
|
|
|
|
-watch(birthDateDisplay, (val) => {
|
|
|
|
|
- try {
|
|
|
|
|
- form.birth_date = val?.length === 10 ? formatDateDMYtoYMD(val) : null;
|
|
|
|
|
- } catch {
|
|
|
|
|
- form.birth_date = null;
|
|
|
|
|
- }
|
|
|
|
|
-});
|
|
|
|
|
|
|
+const dialogTitle = partner ? "Editar Sócio" : "Adicionar Sócio";
|
|
|
|
|
|
|
|
const { form, getFormAsFormData } = useFormUpdateTracker({
|
|
const { form, getFormAsFormData } = useFormUpdateTracker({
|
|
|
- unit_id: unitId,
|
|
|
|
|
- name: partner?.name ?? null,
|
|
|
|
|
- social_name: partner?.social_name ?? null,
|
|
|
|
|
- role: partner?.role ?? null,
|
|
|
|
|
- cpf: partner?.cpf ?? null,
|
|
|
|
|
- rg: partner?.rg ?? null,
|
|
|
|
|
|
|
+ address_number: partner?.address_number ?? null,
|
|
|
birth_date: partner?.birth_date ?? null,
|
|
birth_date: partner?.birth_date ?? null,
|
|
|
- participation: partner?.participation ?? null,
|
|
|
|
|
|
|
+ cell_number: partner?.cell_number ?? null,
|
|
|
|
|
+ city_id: partner?.city_id ?? null,
|
|
|
|
|
+ complement: partner?.complement ?? null,
|
|
|
|
|
+ cpf: partner?.cpf ?? null,
|
|
|
email: partner?.email ?? null,
|
|
email: partner?.email ?? null,
|
|
|
- secondary_email: partner?.secondary_email ?? null,
|
|
|
|
|
|
|
+ name: partner?.name ?? null,
|
|
|
|
|
+ neighborhood: partner?.neighborhood ?? null,
|
|
|
|
|
+ participation: partner?.participation ?? null,
|
|
|
phone_number: partner?.phone_number ?? null,
|
|
phone_number: partner?.phone_number ?? null,
|
|
|
- cell_number: partner?.cell_number ?? null,
|
|
|
|
|
postal_code: partner?.postal_code ?? null,
|
|
postal_code: partner?.postal_code ?? null,
|
|
|
- street: partner?.street ?? null,
|
|
|
|
|
- address_number: partner?.address_number ?? null,
|
|
|
|
|
- neighborhood: partner?.neighborhood ?? null,
|
|
|
|
|
- complement: partner?.complement ?? null,
|
|
|
|
|
- city_id: partner?.city_id ?? null,
|
|
|
|
|
|
|
+ rg: partner?.rg ?? null,
|
|
|
|
|
+ role: partner?.role ?? null,
|
|
|
|
|
+ secondary_email: partner?.secondary_email ?? null,
|
|
|
|
|
+ social_name: partner?.social_name ?? null,
|
|
|
state_id: partner?.state_id ?? null,
|
|
state_id: partner?.state_id ?? null,
|
|
|
|
|
+ street: partner?.street ?? null,
|
|
|
|
|
+ unit_id: unitId,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-watch(selectedState, (state) => {
|
|
|
|
|
- form.state_id = state?.value ?? null;
|
|
|
|
|
-});
|
|
|
|
|
|
|
+const avatarRef = ref(null);
|
|
|
|
|
+const avatarChanged = ref(false);
|
|
|
|
|
+const avatarFile = ref(null);
|
|
|
|
|
+const birthDateDisplay = ref(
|
|
|
|
|
+ partner?.birth_date ? formatDateYMDtoDMY(partner.birth_date) : null,
|
|
|
|
|
+);
|
|
|
|
|
+const stateSelectRef = ref(null);
|
|
|
|
|
+const citySelectRef = ref(null);
|
|
|
|
|
+const formRef = ref(null);
|
|
|
|
|
+const selectedState = ref(null);
|
|
|
|
|
+const selectedCity = ref(null);
|
|
|
|
|
|
|
|
-watch(selectedCity, (city) => {
|
|
|
|
|
- form.city_id = city?.value ?? null;
|
|
|
|
|
|
|
+const { loading, validationErrors, execute } = useSubmitHandler({
|
|
|
|
|
+ formRef,
|
|
|
|
|
+ onSuccess: (result) => onDialogOK(result),
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
function onAvatarChange(file) {
|
|
function onAvatarChange(file) {
|
|
@@ -276,24 +289,24 @@ function onAvatarChange(file) {
|
|
|
avatarFile.value = file;
|
|
avatarFile.value = file;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const { loading, execute } = useSubmitHandler({
|
|
|
|
|
- formRef,
|
|
|
|
|
- onSuccess: (result) => onDialogOK(result),
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
async function onOKClick() {
|
|
async function onOKClick() {
|
|
|
if (offlineMode) {
|
|
if (offlineMode) {
|
|
|
const partnerData = { ...form };
|
|
const partnerData = { ...form };
|
|
|
|
|
+
|
|
|
if (avatarFile.value instanceof File) {
|
|
if (avatarFile.value instanceof File) {
|
|
|
if (partner?.avatar_url?.startsWith("blob:")) {
|
|
if (partner?.avatar_url?.startsWith("blob:")) {
|
|
|
URL.revokeObjectURL(partner.avatar_url);
|
|
URL.revokeObjectURL(partner.avatar_url);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
partnerData.avatar = avatarFile.value;
|
|
partnerData.avatar = avatarFile.value;
|
|
|
|
|
+
|
|
|
partnerData.avatar_url = URL.createObjectURL(avatarFile.value);
|
|
partnerData.avatar_url = URL.createObjectURL(avatarFile.value);
|
|
|
} else if (partner?.avatar_url) {
|
|
} else if (partner?.avatar_url) {
|
|
|
partnerData.avatar_url = partner.avatar_url;
|
|
partnerData.avatar_url = partner.avatar_url;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
onDialogOK(partnerData);
|
|
onDialogOK(partnerData);
|
|
|
|
|
+
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -312,15 +325,33 @@ async function onOKClick() {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+watch(birthDateDisplay, (val) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ form.birth_date = val?.length === 10 ? formatDateDMYtoYMD(val) : null;
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ form.birth_date = null;
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+watch(selectedState, (state) => {
|
|
|
|
|
+ form.state_id = state?.value ?? null;
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+watch(selectedCity, (city) => {
|
|
|
|
|
+ form.city_id = city?.value ?? null;
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
if (!partner) return;
|
|
if (!partner) return;
|
|
|
|
|
|
|
|
if (partner.avatar_url) {
|
|
if (partner.avatar_url) {
|
|
|
avatarRef.value?.setImageUrl(partner.avatar_url);
|
|
avatarRef.value?.setImageUrl(partner.avatar_url);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (partner.state_id) {
|
|
if (partner.state_id) {
|
|
|
stateSelectRef.value?.selectStateById(partner.state_id);
|
|
stateSelectRef.value?.selectStateById(partner.state_id);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (partner.city_id) {
|
|
if (partner.city_id) {
|
|
|
citySelectRef.value?.selectCityById(partner.city_id);
|
|
citySelectRef.value?.selectCityById(partner.city_id);
|
|
|
}
|
|
}
|