diff --git a/src/components/base/BaseButton.vue b/src/components/base/BaseButton.vue index 26b6062..7e465a8 100644 --- a/src/components/base/BaseButton.vue +++ b/src/components/base/BaseButton.vue @@ -1,6 +1,6 @@ @@ -127,8 +127,24 @@ export default { initialDocData() { return this.$store.state.medical?.documents; }, + passportFields() { + let excludedFields = ["photo", "id"]; + return Object.keys(this.docData.passport).filter( + (key) => !excludedFields.includes(key) + ); + }, }, 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()); + return true; + } + return defaultRule(val); + }, removeImage(docKey, field) { this.docData[docKey][field] = {}; this.isCheckChange = true; @@ -145,6 +161,7 @@ export default { this.initialDocData?.passport?.issued_by_date; this.isEdit = false; this.isCheckChange = false; + this.$refs.documentForm.resetValidation(); }, openEdit() { this.isEdit = true; @@ -172,7 +189,6 @@ export default { }); this.addErrorNotification(error?.title, error?.message); }); - this.cancelEdit(); } else { let passportFormData = new FormData(); let documentsFormData = new FormData(); @@ -222,6 +238,7 @@ export default { this.$store.dispatch("getMedicalCardData"); this.isEdit = false; this.isCheckChange = false; + this.$refs.form.resetValidation(); }); } }); diff --git a/src/pages/newMedicalCard/utils/medicalConfig.js b/src/pages/newMedicalCard/utils/medicalConfig.js index 626e297..0eed8f9 100644 --- a/src/pages/newMedicalCard/utils/medicalConfig.js +++ b/src/pages/newMedicalCard/utils/medicalConfig.js @@ -376,7 +376,7 @@ export const documentForm = [ title: "Ошибка валидации", message: "Серия паспорта менее 4 цифр или не заполнена", }, - rules: [(val) => ruleLengthValue(val, 4)], + rules: (val) => ruleLengthValue(val, 4), }, { key: "number", @@ -387,7 +387,7 @@ export const documentForm = [ title: "Ошибка валидации", message: "Номер паспорта менее 6 цифр или не заполнен", }, - rules: [(val) => ruleLengthValue(val, 6)], + rules: (val) => ruleLengthValue(val, 6), }, { key: "issued_by_org", @@ -397,7 +397,7 @@ export const documentForm = [ title: "Ошибка валидации", message: "Поле 'Кем выдан' не заполнено", }, - rules: [(val) => ruleNotValue(val)], + rules: (val) => ruleNotValue(val), }, { key: "issued_by_org_code", @@ -408,13 +408,13 @@ export const documentForm = [ title: "Ошибка валидации", message: "Код подразделения менее 6 цифр или не заполнен", }, - rules: [(val) => ruleLengthValue(val, 7)], + rules: (val) => ruleLengthValue(val, 7), }, { key: "issued_by_date", label: "Дата выдачи", type: "date", - rules: [(val) => ruleDateValue(val)], + rules: (val) => ruleDateValue(val), errorMessage: { title: "Ошибка валидации", message: "Дата выдачи паспорта позднее текущего дня", @@ -440,7 +440,7 @@ export const documentForm = [ title: "Ошибка валидации", message: "СНИЛС содержит менее 11 цифр", }, - rules: [(val) => ruleOptionalFields(val, 14)], + rules: (val) => ruleOptionalFields(val, 14), }, { key: "photo_insurance_number", @@ -462,7 +462,7 @@ export const documentForm = [ title: "Ошибка валидации", message: "ИНН содержит менее 12 цифр", }, - rules: [(val) => ruleOptionalFields(val, 12)], + rules: (val) => ruleOptionalFields(val, 12), }, { key: "photo_tax_identification_number",