Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions common/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ export interface CustomerData{
}
entity: {
inn: string;
kpp: string;
orgName: string;
address: string;
email: string;
Expand All @@ -120,6 +121,7 @@ export interface RecentAddress {

export interface RecentOrg {
inn: string;
kpp: string;
orgName: string;
address: string;
}
Expand Down
4 changes: 4 additions & 0 deletions components/Input.vue
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ const props = defineProps<{
autocomplete?: string;
required?: boolean;
disabled?: boolean;
pattern?: string;
title?: string;
}>();

const model = defineModel<string>();
Expand Down Expand Up @@ -41,6 +43,8 @@ const validate = () => {
:inputmode="inputmode"
:required="required"
:autocomplete="autocomplete"
:pattern="pattern"
:title="title"
@blur="validate"
@input="validate"
/>
Expand Down
26 changes: 19 additions & 7 deletions components/order/Customer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
const { t } = useI18n();
const payerType = defineModel<string>('payerType');
const individual = defineModel<{ fio: string; phone: string; additional: string; email: string; comment: string; }>('individual');
const entity = defineModel<{ fio: string; phone: string; additional: string; inn: string; orgName: string; address: string; email: string; comment: string; }>('entity', {required: true});
const entity = defineModel<{ fio: string; phone: string; additional: string; inn: string; kpp: string; orgName: string; address: string; email: string; comment: string; }>('entity', {required: true});
const country = defineModel<number>('country');

const { countries, cdekCountries, recentOrgs } = defineProps<{
Expand All @@ -20,6 +20,7 @@
value: org.orgName,
data: {
inn: org.inn,
kpp: org.kpp,

Check warning on line 23 in components/order/Customer.vue

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

components/order/Customer.vue#L23

Unsafe assignment of an error typed value.

Check warning on line 23 in components/order/Customer.vue

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

components/order/Customer.vue#L23

Unsafe member access .kpp on an `error` typed value.
name: { short_with_opf: org.orgName },
address: { unrestricted_value: org.address },
},
Expand All @@ -43,7 +44,7 @@
const orgSearchNoResults = ref(false);

const resetOrg = () => {
entity.value = { ...entity.value, orgName: '', inn: '', address: '' };
entity.value = { ...entity.value, orgName: '', inn: '', kpp: '', address: '' };
orgMode.value = isRussia.value ? 'search' : 'fields';
orgFromSearch.value = false;
orgSearchNoResults.value = false;
Expand All @@ -53,9 +54,10 @@
resetOrg();
});

const onOrgSelect = ({ orgName, inn, address }: { orgName: string; inn: string; address: string }) => {
const onOrgSelect = ({ orgName, inn, kpp, address }: { orgName: string; inn: string; kpp: string; address: string }) => {
entity.value.orgName = orgName;
entity.value.inn = inn;
entity.value.kpp = kpp;
entity.value.address = address;
orgMode.value = 'fields';
orgFromSearch.value = true;
Expand Down Expand Up @@ -113,8 +115,9 @@
<template v-if="isRussia">
<button type="button" class="customer-changeOrgBtn" @click="resetOrg">{{ t('changeOrg') }}</button>
</template>
<div class="customer-orgFieldWrapper">
<div class="customer-orgFieldWrapper" :class="{ 'customer-orgFieldWrapper--withKpp': isRussia }">
<Input v-model="entity!.inn" id="inn" :label="t('inn')" autocomplete="off" inputmode="numeric" required :disabled="orgFromSearch" />
<Input v-if="isRussia" v-model="entity!.kpp" id="kpp" :label="t('kpp')" autocomplete="off" inputmode="numeric" pattern="[0-9]{9}" :title="t('kppFormat')" :disabled="orgFromSearch" />
<Input v-model="entity!.orgName" id="orgName" :label="t('orgName')" autocomplete="organization" required :disabled="orgFromSearch" />
</div>
<Input v-model="entity!.address" id="address" :label="t('address')" autocomplete="street-address" required :disabled="orgFromSearch" />
Expand Down Expand Up @@ -149,6 +152,10 @@
gap: 18px;
}

.customer-orgFieldWrapper--withKpp {
grid-template-columns: minmax(140px, 1fr) minmax(140px, 1fr) 2fr;
}

.customer-manualBtn {
background: none;
border: none;
Expand Down Expand Up @@ -227,7 +234,8 @@

@media (max-width: 768px) {
.customer-fieldWrapper,
.customer-orgFieldWrapper {
.customer-orgFieldWrapper,
.customer-orgFieldWrapper--withKpp {
grid-template-columns: 1fr;
}
}
Expand All @@ -246,10 +254,12 @@
"email": "Email",
"comment": "Комментарий",
"inn": "ИНН организации",
"kpp": "КПП",
"orgName": "Наименование организации",
"address": "Юридический адрес",
"manualEntry": "Не удалось найти организацию, введите вручную →",
"changeOrg": "← Изменить организацию"
"changeOrg": "← Изменить организацию",
"kppFormat": "КПП — 9 цифр"
},
"en": {
"title": "Enter the customer's information",
Expand All @@ -262,10 +272,12 @@
"email": "Email",
"comment": "Comment",
"inn": "Taxpayer identification number",
"kpp": "Tax Registration Reason Code",
"orgName": "Full legal entity title",
"address": "Legal address",
"manualEntry": "Can't find your organization? Enter it manually →",
"changeOrg": "← Change organization"
"changeOrg": "← Change organization",
"kppFormat": "KPP is 9 digits"
}
}
</i18n>
4 changes: 3 additions & 1 deletion components/order/OrgSearch.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<script setup lang="ts">
interface DadataOrgData {
inn: string;
kpp?: string;
name: { short_with_opf: string };
address: { unrestricted_value: string };
}
Expand All @@ -15,7 +16,7 @@
}>();

const emit = defineEmits<{
select: [{ orgName: string; inn: string; address: string }];
select: [{ orgName: string; inn: string; kpp: string; address: string }];
noResults: [value: boolean];
}>();

Expand Down Expand Up @@ -66,6 +67,7 @@
emit('select', {
orgName: suggestion.value,
inn: suggestion.data.inn,
kpp: suggestion.data.kpp ?? '',

Check warning on line 70 in components/order/OrgSearch.vue

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

components/order/OrgSearch.vue#L70

Unsafe assignment of an error typed value.

Check warning on line 70 in components/order/OrgSearch.vue

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

components/order/OrgSearch.vue#L70

Unsafe member access .kpp on an `error` typed value.
address: suggestion.data.address.unrestricted_value,
});
};
Expand Down
48 changes: 24 additions & 24 deletions content/ru/integrators/nice_device.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
---
district: [moscow, spb, center]
coordinates: [54.163080, 37.577382]
title: Nice Device
logo: nice_device/nice_device.webp
phone: [74993481038, 74872751250]
website: https://nd-ss.ru
email: info@nd-ss.ru
---
Nice Device – будущее вашего умного дома!
Мы специализируемся на создании инновационных систем «умный дом», которые не только упрощают повседневные дела, но и помогают вам экономить. Наша цель – освободить вас от рутинных задач, сделать пребывание в доме максимально комфортным и предложить новый опыт взаимодействия с вашим жилищем.
Что мы предлагаем:
* интеллектуальные решения: наши системы автоматизации адаптируются к вашим привычкам для комфортного проживания;
* экономия ресурсов: используя передовые технологии, мы помогаем сократить потребление электроэнергии и воды;
* комфорт и удобство: управляйте домом из любого места и в любое время с помощью интуитивно понятных интерфейсов и мобильных приложений;
* новый опыт: мы стремимся создать не просто технологии, а целую культуру взаимодействия с вашим домом, делая его более отзывчивым к вашим нуждам.
Мы понимаем, что каждый дом уникален, поэтому наши решения могут быть адаптированы под любые требования и пространства. Наша команда экспертов готова принять вызов и создать индивидуальную систему, которая соответствует вашим ожиданиям и потребностям.
Откройте двери в мир умных решений – свяжитесь с нами сегодня, чтобы узнать, как мы можем преобразить ваш дом.
Nice Device – это не просто технологии, а новый удобный и эффективный дом, который заботится о вас.
---
district: [moscow, spb, center]
coordinates: [54.163080, 37.577382]
title: Nice Device
logo: nice_device/nice_device.webp
phone: [74993481038, 74872751250]
website: https://nd-ss.ru
email: info@nd-ss.ru
---

Nice Device – будущее вашего умного дома!

Мы специализируемся на создании инновационных систем «умный дом», которые не только упрощают повседневные дела, но и помогают вам экономить. Наша цель – освободить вас от рутинных задач, сделать пребывание в доме максимально комфортным и предложить новый опыт взаимодействия с вашим жилищем.

Что мы предлагаем:
* интеллектуальные решения: наши системы автоматизации адаптируются к вашим привычкам для комфортного проживания;
* экономия ресурсов: используя передовые технологии, мы помогаем сократить потребление электроэнергии и воды;
* комфорт и удобство: управляйте домом из любого места и в любое время с помощью интуитивно понятных интерфейсов и мобильных приложений;
* новый опыт: мы стремимся создать не просто технологии, а целую культуру взаимодействия с вашим домом, делая его более отзывчивым к вашим нуждам.

Мы понимаем, что каждый дом уникален, поэтому наши решения могут быть адаптированы под любые требования и пространства. Наша команда экспертов готова принять вызов и создать индивидуальную систему, которая соответствует вашим ожиданиям и потребностям.

Откройте двери в мир умных решений – свяжитесь с нами сегодня, чтобы узнать, как мы можем преобразить ваш дом.
Nice Device – это не просто технологии, а новый удобный и эффективный дом, который заботится о вас.
Loading