Merge branch 'ASTRA-48' into 'master'
WIP Закончена валидация See merge request andrusyakka/urban-couscous!330
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
button.base-button.text-base(
|
button.base-button.text-base(
|
||||||
type="button"
|
type="button",
|
||||||
:disabled="disabled",
|
:disabled="disabled",
|
||||||
:class="{'rounded': rounded, 'outlined': outlined, 'outlined-red': outlinedRed, 'secondary': secondary, 'confirm': confirm, 'added': added, 'added-border-none': addedBorderNone}"
|
:class="{'rounded': rounded, 'outlined': outlined, 'outlined-red': outlinedRed, 'secondary': secondary, 'confirm': confirm, 'added': added, 'added-border-none': addedBorderNone}"
|
||||||
:style="{height: size + 'px', minWidth: size + 'px'}"
|
:style="{height: size + 'px', minWidth: size + 'px'}"
|
||||||
|
|||||||
@@ -53,11 +53,11 @@
|
|||||||
:standout="!isEdit",
|
:standout="!isEdit",
|
||||||
:outlined="isEdit",
|
:outlined="isEdit",
|
||||||
:mask="field?.inputMask",
|
:mask="field?.inputMask",
|
||||||
:rule="field.rules",
|
:rule="[(val) => !personDataField.includes(field.key) ? checkPassportFields(val, field.rules) : field.rules(val)]",
|
||||||
:autogrow="field.key === 'issued_by_org'"
|
:autogrow="field.key === 'issued_by_org'"
|
||||||
)
|
)
|
||||||
.icon-copy.my-auto.text-lg.label-field(
|
.icon-copy.my-auto.text-lg.label-field(
|
||||||
v-if="checkCopiedFields(field.key)",
|
v-if="checkCopiedFields(field.key) && !!docData[data.dataKey][field.key]",
|
||||||
@click="copyValue(docData[data.dataKey][field.key])"
|
@click="copyValue(docData[data.dataKey][field.key])"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
@@ -93,6 +93,7 @@ export default {
|
|||||||
docData: null,
|
docData: null,
|
||||||
isCheckChange: false,
|
isCheckChange: false,
|
||||||
isLoadingData: true,
|
isLoadingData: true,
|
||||||
|
approvedPassportData: false,
|
||||||
copiedFields: [
|
copiedFields: [
|
||||||
"series",
|
"series",
|
||||||
"number",
|
"number",
|
||||||
@@ -127,8 +128,26 @@ export default {
|
|||||||
initialDocData() {
|
initialDocData() {
|
||||||
return this.$store.state.medical?.documents;
|
return this.$store.state.medical?.documents;
|
||||||
},
|
},
|
||||||
|
passportFields() {
|
||||||
|
let excludedFields = ["photo", "id"];
|
||||||
|
return Object.keys(this.docData.passport).filter(
|
||||||
|
(key) => !excludedFields.includes(key)
|
||||||
|
);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
checkPassportFields(val, defaultRule) {
|
||||||
|
if (this.passportFields.every((elem) => !this.docData.passport[elem])) {
|
||||||
|
this.$refs.documentForm
|
||||||
|
.getValidationComponents()
|
||||||
|
.filter((elem) => !this.personDataField.includes(elem.name))
|
||||||
|
.forEach((elem) => elem.resetValidation());
|
||||||
|
this.approvedPassportData = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
this.approvedPassportData = false;
|
||||||
|
return defaultRule(val);
|
||||||
|
},
|
||||||
removeImage(docKey, field) {
|
removeImage(docKey, field) {
|
||||||
this.docData[docKey][field] = {};
|
this.docData[docKey][field] = {};
|
||||||
this.isCheckChange = true;
|
this.isCheckChange = true;
|
||||||
@@ -145,6 +164,7 @@ export default {
|
|||||||
this.initialDocData?.passport?.issued_by_date;
|
this.initialDocData?.passport?.issued_by_date;
|
||||||
this.isEdit = false;
|
this.isEdit = false;
|
||||||
this.isCheckChange = false;
|
this.isCheckChange = false;
|
||||||
|
this.$refs.documentForm.resetValidation();
|
||||||
},
|
},
|
||||||
openEdit() {
|
openEdit() {
|
||||||
this.isEdit = true;
|
this.isEdit = true;
|
||||||
@@ -172,16 +192,17 @@ export default {
|
|||||||
});
|
});
|
||||||
this.addErrorNotification(error?.title, error?.message);
|
this.addErrorNotification(error?.title, error?.message);
|
||||||
});
|
});
|
||||||
this.cancelEdit();
|
|
||||||
} else {
|
} else {
|
||||||
let passportFormData = new FormData();
|
let passportFormData = new FormData();
|
||||||
let documentsFormData = new FormData();
|
let documentsFormData = new FormData();
|
||||||
form.getValidationComponents().forEach((elem) => {
|
form.getValidationComponents().forEach((elem) => {
|
||||||
if (!this.personDataField.includes(elem.name))
|
if (!this.personDataField.includes(elem.name)) {
|
||||||
passportFormData.append(elem.name, elem.modelValue ?? "");
|
if (!this.approvedPassportData)
|
||||||
else documentsFormData.append(elem.name, elem.modelValue ?? "");
|
passportFormData.append(elem.name, elem.modelValue ?? "");
|
||||||
|
} else documentsFormData.append(elem.name, elem.modelValue ?? "");
|
||||||
});
|
});
|
||||||
this.checkChengePhoto("passport", "photo", passportFormData);
|
if (!this.approvedPassportData)
|
||||||
|
this.checkChengePhoto("passport", "photo", passportFormData);
|
||||||
this.checkChengePhoto(
|
this.checkChengePhoto(
|
||||||
"insurance_number",
|
"insurance_number",
|
||||||
"photo_insurance_number",
|
"photo_insurance_number",
|
||||||
@@ -193,25 +214,27 @@ export default {
|
|||||||
documentsFormData
|
documentsFormData
|
||||||
);
|
);
|
||||||
let request = [];
|
let request = [];
|
||||||
if (!this.initialDocData.passport?.id) {
|
if (!this.approvedPassportData) {
|
||||||
passportFormData.append("kind", "PASSPORT");
|
if (!this.initialDocData.passport?.id) {
|
||||||
passportFormData.append(
|
passportFormData.append("kind", "PASSPORT");
|
||||||
"person",
|
passportFormData.append(
|
||||||
this.$store.state.medical?.basicData?.personalData?.id
|
"person",
|
||||||
);
|
this.$store.state.medical?.basicData?.personalData?.id
|
||||||
request.push(
|
);
|
||||||
this.sendData(
|
request.push(
|
||||||
"general/identity_document/create/",
|
this.sendData(
|
||||||
passportFormData
|
"general/identity_document/create/",
|
||||||
)
|
passportFormData
|
||||||
);
|
)
|
||||||
} else
|
);
|
||||||
request.push(
|
} else
|
||||||
this.sendData(
|
request.push(
|
||||||
`general/identity_document/${this.initialDocData.passport?.id}/update/`,
|
this.sendData(
|
||||||
passportFormData
|
`general/identity_document/${this.initialDocData.passport?.id}/update/`,
|
||||||
)
|
passportFormData
|
||||||
);
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
request.push(
|
request.push(
|
||||||
this.sendData(
|
this.sendData(
|
||||||
`general/person/${this.$store.state.medical?.basicData?.personalData?.id}/update/`,
|
`general/person/${this.$store.state.medical?.basicData?.personalData?.id}/update/`,
|
||||||
@@ -222,6 +245,7 @@ export default {
|
|||||||
this.$store.dispatch("getMedicalCardData");
|
this.$store.dispatch("getMedicalCardData");
|
||||||
this.isEdit = false;
|
this.isEdit = false;
|
||||||
this.isCheckChange = false;
|
this.isCheckChange = false;
|
||||||
|
this.$refs.form?.resetValidation();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -376,7 +376,7 @@ export const documentForm = [
|
|||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "Серия паспорта менее 4 цифр или не заполнена",
|
message: "Серия паспорта менее 4 цифр или не заполнена",
|
||||||
},
|
},
|
||||||
rules: [(val) => ruleLengthValue(val, 4)],
|
rules: (val) => ruleLengthValue(val, 4),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "number",
|
key: "number",
|
||||||
@@ -387,7 +387,7 @@ export const documentForm = [
|
|||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "Номер паспорта менее 6 цифр или не заполнен",
|
message: "Номер паспорта менее 6 цифр или не заполнен",
|
||||||
},
|
},
|
||||||
rules: [(val) => ruleLengthValue(val, 6)],
|
rules: (val) => ruleLengthValue(val, 6),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "issued_by_org",
|
key: "issued_by_org",
|
||||||
@@ -397,7 +397,7 @@ export const documentForm = [
|
|||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "Поле 'Кем выдан' не заполнено",
|
message: "Поле 'Кем выдан' не заполнено",
|
||||||
},
|
},
|
||||||
rules: [(val) => ruleNotValue(val)],
|
rules: (val) => ruleNotValue(val),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "issued_by_org_code",
|
key: "issued_by_org_code",
|
||||||
@@ -408,13 +408,13 @@ export const documentForm = [
|
|||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "Код подразделения менее 6 цифр или не заполнен",
|
message: "Код подразделения менее 6 цифр или не заполнен",
|
||||||
},
|
},
|
||||||
rules: [(val) => ruleLengthValue(val, 7)],
|
rules: (val) => ruleLengthValue(val, 7),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "issued_by_date",
|
key: "issued_by_date",
|
||||||
label: "Дата выдачи",
|
label: "Дата выдачи",
|
||||||
type: "date",
|
type: "date",
|
||||||
rules: [(val) => ruleDateValue(val)],
|
rules: (val) => ruleDateValue(val),
|
||||||
errorMessage: {
|
errorMessage: {
|
||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "Дата выдачи паспорта позднее текущего дня",
|
message: "Дата выдачи паспорта позднее текущего дня",
|
||||||
@@ -440,7 +440,7 @@ export const documentForm = [
|
|||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "СНИЛС содержит менее 11 цифр",
|
message: "СНИЛС содержит менее 11 цифр",
|
||||||
},
|
},
|
||||||
rules: [(val) => ruleOptionalFields(val, 14)],
|
rules: (val) => ruleOptionalFields(val, 14),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "photo_insurance_number",
|
key: "photo_insurance_number",
|
||||||
@@ -462,7 +462,7 @@ export const documentForm = [
|
|||||||
title: "Ошибка валидации",
|
title: "Ошибка валидации",
|
||||||
message: "ИНН содержит менее 12 цифр",
|
message: "ИНН содержит менее 12 цифр",
|
||||||
},
|
},
|
||||||
rules: [(val) => ruleOptionalFields(val, 12)],
|
rules: (val) => ruleOptionalFields(val, 12),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "photo_tax_identification_number",
|
key: "photo_tax_identification_number",
|
||||||
|
|||||||
Reference in New Issue
Block a user