You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
8.3 KiB
280 lines
8.3 KiB
<template>
|
|
<modal name="addCompany" :clickToClose="false">
|
|
<div class="tw-text-base-primary">
|
|
<div class="modal-header tw-w-full tw-mb-[20px] md:tw-mb-[50px]">
|
|
<div class="tw-text-[18px] tw-font-bold md:tw-text-[20px]">
|
|
{{ $t("userProfile.addCompanyInfo") }}
|
|
</div>
|
|
<button class="close tw-transition tw-btn-md" @click="$modal.hide('addCompany')"></button>
|
|
</div>
|
|
<div
|
|
class="modal-content tw-grid tw-grid-cols-1 tw-gap-y-[20px] tw-mb-[30px] md:tw-grid-cols-[260px_260px] md:tw-gap-x-[64px] md:tw-mb-[60px]">
|
|
<div class="element">
|
|
<elementInput :input="{
|
|
id: 'CompanyName',
|
|
label: 'userProfile.companyName',
|
|
required: true,
|
|
type: 'text',
|
|
}" :default="userCompany.CompanyName" :validation="validation.CompanyName"
|
|
@change="userCompany.CompanyName = $event"></elementInput>
|
|
</div>
|
|
<div class="element">
|
|
<elementInput :input="{
|
|
id: 'TaxNumber',
|
|
label: 'userProfile.taxNumber',
|
|
required: true,
|
|
type: 'tel',
|
|
}" :default="userCompany.TaxNumber" :validation="validation.TaxNumber"
|
|
@change="userCompany.TaxNumber = $event"></elementInput>
|
|
</div>
|
|
<div class="element md:tw-col-span-2">
|
|
<elementAddress :input="{
|
|
id: 'StreetAddress',
|
|
label: 'userProfile.companyAddress',
|
|
required: true,
|
|
type: 'street',
|
|
}" :default1="userCompany.Street1" :default2="userCompany.Street2"
|
|
:validation1="validation.Street1" :validation2="validation.Street2"
|
|
@change1="userCompany.Street1 = $event" @change2="userCompany.Street2 = $event">
|
|
</elementAddress>
|
|
</div>
|
|
<div class="element">
|
|
<elementInput :input="{
|
|
id: 'City',
|
|
label: 'userProfile.companyCity',
|
|
required: true,
|
|
type: 'text',
|
|
}" :default="userCompany.CityName" :validation="validation.CityName"
|
|
@change="userCompany.CityName = $event"></elementInput>
|
|
</div>
|
|
<div class="element">
|
|
<elementInput :input="{
|
|
id: 'State',
|
|
label: 'userProfile.stateAndProvince',
|
|
required: false,
|
|
type: 'text',
|
|
}" :default="userCompany.StateName" :validation="validation.StateName"
|
|
@change="userCompany.StateName = $event"></elementInput>
|
|
</div>
|
|
|
|
<div class="element">
|
|
<elementSelect :select="{
|
|
id: 'Country',
|
|
label: 'userProfile.companyCountry',
|
|
required: true,
|
|
}" :selectList="countryOptions" :default="userCompany.CountryID"
|
|
:validation="validation.CountryID" @change="userCompany.CountryID = $event"></elementSelect>
|
|
</div>
|
|
<div class="element">
|
|
<elementInput :input="{
|
|
id: 'ZIP',
|
|
label: 'userProfile.zipAndPostalCode',
|
|
required: true,
|
|
type: 'zip',
|
|
}" :default="userCompany.ZipCode" :validation="validation.ZipCode"
|
|
@change="userCompany.ZipCode = $event"></elementInput>
|
|
</div>
|
|
</div>
|
|
<div class="md:tw-flex md:tw-flex-row-reverse">
|
|
<button
|
|
class="tw-transition tw-btn-md tw-bg-primary-1 tw-text-white tw-w-full tw-py-[13px] tw-rounded-[16px] tw-mb-[10px] md:hover:tw-bg-primary-2 md:tw-w-fit md:tw-px-[24px] md:tw-mb-0"
|
|
@click="save()">
|
|
{{ $t("userProfile.save") }}
|
|
</button>
|
|
<button
|
|
class="tw-transition tw-btn-md tw-bg-white tw-text-primary-1 tw-w-full tw-py-[13px] tw-rounded-[16px] md:tw-w-fit md:tw-px-[24px] md:tw-mr-[10px]"
|
|
@click="reset()">
|
|
{{ $t('userProfile.cancel')}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</modal>
|
|
</template>
|
|
<script>
|
|
import elementInput from "@/components/newComponent/form/ElementInput.vue";
|
|
import elementAddress from "@/components/newComponent/form/ElementAddress.vue";
|
|
import elementSelect from "@/components/newComponent/form/ElementSelect.vue";
|
|
import is from "is_js";
|
|
export default {
|
|
name: "addCompany",
|
|
props: {
|
|
countryOptions: {
|
|
type: Array,
|
|
},
|
|
selectList: {
|
|
type: Array,
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
userCompany: {
|
|
CompanyName: "",
|
|
TaxNumber: "",
|
|
Street1: "",
|
|
Street2: "",
|
|
CityName: "",
|
|
StateName: "",
|
|
CountryID: "",
|
|
ZipCode: "",
|
|
},
|
|
validation: {
|
|
CompanyName: true,
|
|
TaxNumber: true,
|
|
Street1: true,
|
|
Street2: true,
|
|
CityName: true,
|
|
StateName: true,
|
|
CountryID: true,
|
|
ZipCode: true,
|
|
},
|
|
// valid: false,
|
|
errors: null,
|
|
};
|
|
},
|
|
components: {
|
|
elementInput,
|
|
elementAddress,
|
|
elementSelect,
|
|
is,
|
|
},
|
|
methods: {
|
|
reset() {
|
|
this.userCompany = {
|
|
CompanyName: "",
|
|
TaxNumber: "",
|
|
Street1: "",
|
|
Street2: "",
|
|
CityName: "",
|
|
StateName: "",
|
|
CountryID: "",
|
|
ZipCode: "",
|
|
};
|
|
this.$modal.hide("addCompany");
|
|
},
|
|
patchUserData() {
|
|
this.$axios
|
|
.post(`/trending/api/Members/Company`, this.userCompany)
|
|
.then((response) => {
|
|
//console.log(JSON.stringify(response));
|
|
if(response && response.data && response.data.DATA && response.data.DATA.rel){
|
|
let data = response.data.DATA.rel
|
|
if(data){
|
|
this.$emit("refetch-user");
|
|
this.$modal.hide("addCompany");
|
|
}
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.log(error);
|
|
});
|
|
},
|
|
|
|
validators() {
|
|
if (is.empty(this.userCompany.CompanyName)) {
|
|
this.validation.CompanyName = false;
|
|
} else {
|
|
this.validation.CompanyName = true;
|
|
}
|
|
if (is.empty(this.userCompany.TaxNumber)) {
|
|
this.validation.TaxNumber = false;
|
|
} else {
|
|
this.validation.TaxNumber = true;
|
|
}
|
|
if (is.empty(this.userCompany.Street1)) {
|
|
this.validation.Street1 = false;
|
|
} else {
|
|
this.validation.Street1 = true;
|
|
}
|
|
if (is.empty(this.userCompany.CityName)) {
|
|
this.validation.CityName = false;
|
|
} else {
|
|
this.validation.CityName = true;
|
|
}
|
|
if (this.userCompany.CountryID == "") {
|
|
this.validation.CountryID = false;
|
|
} else {
|
|
this.validation.CountryID = true;
|
|
}
|
|
if (is.empty(this.userCompany.ZipCode)) {
|
|
this.validation.ZipCode = false;
|
|
} else {
|
|
this.validation.ZipCode = true;
|
|
}
|
|
this.errors = Object.entries(this.validation).filter(
|
|
(e) => e[1] == false
|
|
);
|
|
if (this.errors.length > 0) {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
},
|
|
save() {
|
|
this.validators();
|
|
if (this.validators()) {
|
|
const patchData = this.userCompany;
|
|
this.$axios
|
|
.post(`/trending/api/Members/Company`, patchData)
|
|
.then((response) => {
|
|
//console.log(JSON.stringify(response));
|
|
if(response && response.data && response.data.DATA && response.data.DATA.rel){
|
|
let data = response.data.DATA.rel
|
|
if(data){
|
|
this.$emit("refetch-user");
|
|
this.reset();
|
|
this.$modal.hide("addCompany");
|
|
}
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.log(error);
|
|
});
|
|
}
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped lang="scss">
|
|
.close {
|
|
position: absolute;
|
|
right: 30px;
|
|
top: 30px;
|
|
background-image: url("~/assets/svg/close.svg");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-size: cover;
|
|
width: 14px;
|
|
height: 14px;
|
|
|
|
@media screen and (min-width: 768px) {
|
|
right: 40px;
|
|
top: 40px;
|
|
}
|
|
}
|
|
|
|
.v--modal-overlay::v-deep {
|
|
.v--modal {
|
|
padding: 30px;
|
|
width: 100% !important;
|
|
height: 100vh !important;
|
|
|
|
@media screen and (min-width: 768px) {
|
|
padding: 40px;
|
|
width: max-content;
|
|
height: max-content !important;
|
|
border-radius: 30px;
|
|
}
|
|
}
|
|
|
|
.v--modal-box {
|
|
height: 100vh !important;
|
|
overflow: auto;
|
|
|
|
@media screen and (min-width: 768px) {
|
|
padding: 40px;
|
|
width: max-content;
|
|
height: max-content !important;
|
|
}
|
|
}
|
|
}
|
|
</style>
|