diff --git a/actions/questionnaireActions.js b/actions/questionnaireActions.js index 199f5fa..a4fda95 100644 --- a/actions/questionnaireActions.js +++ b/actions/questionnaireActions.js @@ -8,6 +8,7 @@ import { eachSeries, each } from "async"; import * as actionTypes from '../constants/actionTypes'; import { getCitizenshipTitleByCode } from '../utils/citizenship'; +import { questionnaire_template } from '../reducers/initialState'; if(process.browser) { @@ -52,7 +53,7 @@ export const getQuestionnaire = ({ dispatch, id }) => .then((response) => { console.log("ACTION", "questionnaire", "getQuestionnaire()", "response", response.data); - + const founder_persons_template = { signatory_id: null, lastname: "", @@ -97,24 +98,24 @@ export const getQuestionnaire = ({ dispatch, id }) => questionnaire.main.email = response.data.email; questionnaire.main.websiteurl = response.data.websiteurl !== null ? response.data.websiteurl : ""; questionnaire.main.financial_loan = response.data.financial_loan !== null ? response.data.financial_loan : ""; - + questionnaire.contacts.address_type = response.data.inn.length > 10 ? "fact" : "legal"; questionnaire.contacts.fact_address = response.data.fact_address; questionnaire.contacts.postal_address = response.data.postal_address; questionnaire.contacts.legal_address = response.data.legal_address; - + questionnaire.head_person = { ...questionnaire.head_person, ...response.data.head_person }; questionnaire.head_person.identity_document.citizenship = { title: getCitizenshipTitleByCode(response.data.head_person.identity_document.citizenship_code), code: response.data.head_person.identity_document.citizenship_code, }; - + questionnaire.signatory_person = { ...questionnaire.signatory_person, ...response.data.signatory_person }; questionnaire.signatory_person.identity_document.citizenship = { title: getCitizenshipTitleByCode(response.data.signatory_person.identity_document.citizenship_code), code: response.data.signatory_person.identity_document.citizenship_code, }; - + for(let i in response.data.founder_persons) { console.log("response.data.founder_persons", response.data.founder_persons); @@ -124,9 +125,9 @@ export const getQuestionnaire = ({ dispatch, id }) => code: response.data.founder_persons[i].identity_document.citizenship_code, }; } - + //questionnaire.founder_persons = { ...questionnaire.head_person, ...response.data.head_person }; - + console.log("questionnairequestionnairequestionnaire FROM JSON", questionnaire); updateQuestionnaire({ dispatch, questionnaire }) .then(() => {}) @@ -193,6 +194,17 @@ export const updateQuestionnaire = ({ dispatch, questionnaire }) => }); } +export const resetQuestionnaire = ({ dispatch, id }) => +{ + const template = JSON.parse(JSON.stringify(questionnaire_template)); + dispatch({ type: actionTypes.QUESTIONNAIRE_UPDATE, data: { questionnaire: template, } }); + saveQuestionnaire(); + setTimeout(() => + { + getQuestionnaire({ dispatch, id }); + }, 10); +} + export const uploadAttachmentFile = (file) => { console.log("ACTION", "questionnaireActions", "uploadAttachmentFile()", { file }); @@ -222,6 +234,14 @@ export const uploadAttachmentFile = (file) => }); } +export const removeAttachmentFiles = (files) => +{ + for(let i in files) + { + removeAttachmentFile(files[i].id); + } +} + export const removeAttachmentFile = (id) => { console.log("ACTION", "questionnaireActions", "removeAttachmentFile()", { id }); diff --git a/components/questionnaire/forms/Form_1_Main/index.js b/components/questionnaire/forms/Form_1_Main/index.js index 7fe95bd..b4b3abb 100644 --- a/components/questionnaire/forms/Form_1_Main/index.js +++ b/components/questionnaire/forms/Form_1_Main/index.js @@ -55,6 +55,7 @@ class Form_1_Main extends QuestionnaireForm fin_goals_special: "", }, step: 1, + status: "empty", loading: false, }; } @@ -64,6 +65,7 @@ class Form_1_Main extends QuestionnaireForm return { main: nextProps.questionnaire.main, step: nextProps.questionnaire.step, + status: nextProps.questionnaire.status, }; } @@ -109,8 +111,7 @@ class Form_1_Main extends QuestionnaireForm { event.preventDefault(); - this._handle_onFieldChange("status", "draft"); - this._handle_onCheckboxFieldChange("step", 2); + this._handle_onJoinChange({ status: "draft", step: 2 }); setTimeout(() => { saveQuestionnaire(); @@ -134,7 +135,7 @@ class Form_1_Main extends QuestionnaireForm render() { const { company, checking } = this.props; - const { loading, main } = this.state; + const { loading, main, status } = this.state; const firstLetter = /(?!.*[DFIOQU])[A-VXY]/i; const letter = /(?!.*[DFIOQU])[A-Z]/i; const digit = /[0-9]/; @@ -146,7 +147,7 @@ class Form_1_Main extends QuestionnaireForm

1. Информация о лизингополучателе

- +
- + { company.inn.length < 11 && (
- +
- + -
@@ -218,7 +218,7 @@ class Form_1_Main extends QuestionnaireForm
- +
- + this._handle_onTextFieldChange(event.target.name, event.target.value) } disabled={ checking } @@ -275,12 +276,18 @@ class Form_1_Main extends QuestionnaireForm ) } { !checking && ( -
+
+ { status !== "empty" && ( + <> +

+ Отменить изменения в анкете + + )}
) } diff --git a/components/questionnaire/forms/Form_2_Contacts/index.js b/components/questionnaire/forms/Form_2_Contacts/index.js index 60ba90e..9e6937a 100644 --- a/components/questionnaire/forms/Form_2_Contacts/index.js +++ b/components/questionnaire/forms/Form_2_Contacts/index.js @@ -38,6 +38,7 @@ class Form_2_Contacts extends QuestionnaireForm fias_id: null, }, }, + step: 1, }; } @@ -45,6 +46,8 @@ class Form_2_Contacts extends QuestionnaireForm { return { contacts: nextProps.questionnaire.contacts, + step: nextProps.questionnaire.step, + status: nextProps.questionnaire.status, }; } @@ -63,7 +66,7 @@ class Form_2_Contacts extends QuestionnaireForm { event.preventDefault(); - this._handle_onCheckboxFieldChange("step", 3); + this._handle_onJoinChange({ status: "draft", step: 3 }); setTimeout(() => { saveQuestionnaire(); @@ -98,7 +101,7 @@ class Form_2_Contacts extends QuestionnaireForm render() { const { company, checking } = this.props; - const { contacts, loading } = this.state; + const { contacts, loading, status, step } = this.state; const { address_type, legal_address, fact_address, postal_address, } = contacts; return ( @@ -107,13 +110,13 @@ class Form_2_Contacts extends QuestionnaireForm

2. Адреса лизингополучателя

- + this._handle_onTextFieldChange("contacts.fact_address", data) } required={ address_type === "fact" ? true : false } - disabled={ checking } + disabled={ checking ? true : address_type === "fact" ? false : true } />

для юр.диц - заполняется, если отличается от указанного в ЕГРЮЛ; для ИП - заполняется всегда

@@ -159,7 +162,7 @@ class Form_2_Contacts extends QuestionnaireForm disabled={ checking } />
) } diff --git a/components/questionnaire/forms/Form_3_Signer/index.js b/components/questionnaire/forms/Form_3_Signer/index.js index 60cdffc..42fbe66 100644 --- a/components/questionnaire/forms/Form_3_Signer/index.js +++ b/components/questionnaire/forms/Form_3_Signer/index.js @@ -23,7 +23,7 @@ import AddressSuggests from "../../AddressSuggests"; import InputMask from 'react-input-mask'; import SuggestsInput from "../../SuggestsInput"; import { getCitizenshipTitleByCode } from "../../../../utils/citizenship"; -import { saveQuestionnaire } from "../../../../actions"; +import { removeAttachmentFiles, saveQuestionnaire } from "../../../../actions"; class Form_3_Signer extends QuestionnaireForm { @@ -114,13 +114,15 @@ class Form_3_Signer extends QuestionnaireForm } } }, - individual_executive_files: [], + delegation_files: [], head_person_files: [], signatory_person_files: [], personal_data_consent: false, loading: false, modal_show_personal_data: false, + step: 1, + status: "empty", }; } @@ -130,9 +132,10 @@ class Form_3_Signer extends QuestionnaireForm main: nextProps.questionnaire.main, head_person: nextProps.questionnaire.head_person, head_person_files: nextProps.questionnaire.head_person_files, - individual_executive_files: nextProps.questionnaire.individual_executive_files, + delegation_files: nextProps.questionnaire.delegation_files, signatory_person: nextProps.questionnaire.signatory_person, signatory_person_files: nextProps.questionnaire.signatory_person_files, + status: nextProps.questionnaire.status, }; } @@ -166,6 +169,30 @@ class Form_3_Signer extends QuestionnaireForm } } + _handle_onChangeDelegationAgreement = () => + { + const { signatory_person, delegation_files } = this.state; + + if(!signatory_person.delegation_agreement) + { + this._handle_onCheckboxFieldChange("signatory_person.delegation_agreement", true); + } + else + { + removeAttachmentFiles(delegation_files); + + this._handle_onBranchChange([ + { name: "signatory_person.delegation_agreement", value: false, }, + { name: "main.individual_executive_inn", value: "", }, + { name: "main.individual_executive_kpp", value: "", }, + { name: "main.individual_executive_oop", value: "", }, + { name: "main.individual_executive_docnum", value: "", }, + { name: "main.individual_executive_docdate", value: "", }, + { name: "delegation_files", value: [], }, + ]); + } + } + _handle_onFormSubmit = (event) => { event.preventDefault(); @@ -217,7 +244,7 @@ class Form_3_Signer extends QuestionnaireForm } //переданы - if(signatory_person.not_head_person) + if(signatory_person.delegation_agreement) { const main_check = [ "individual_executive_inn", @@ -237,7 +264,7 @@ class Form_3_Signer extends QuestionnaireForm } //иной подписант - if(signatory_person.delegation_agreement) + if(signatory_person.not_head_person) { const signatory_person_check = [ "lastname", @@ -301,14 +328,14 @@ class Form_3_Signer extends QuestionnaireForm personal_data_consent, head_person_files, signatory_person_files, - individual_executive_files, + delegation_files, modal_show_personal_data, } = this.state; - console.log("individual_executive_files", individual_executive_files); + console.log("delegation_files", delegation_files); const { loading, } = this.state; - const { main, head_person, signatory_person } = this.state; + const { main, head_person, signatory_person, status } = this.state; let head_person_citizenship = { label: getCitizenshipTitleByCode(head_person.identity_document.citizenship.code), code: head_person.identity_document.citizenship.code }; let signatory_person_citizenship = { label: getCitizenshipTitleByCode(signatory_person.identity_document.citizenship.code), code: signatory_person.identity_document.citizenship.code }; @@ -318,7 +345,7 @@ class Form_3_Signer extends QuestionnaireForm

3. Информация о единоличном исполнительном органе, подписанте договора лизинга

- +
- + this._handle_onTextFieldChange("head_person.middlename", value) } - required={ true } + required={ false } disabled={ checking } /> {/*} @@ -391,7 +418,7 @@ class Form_3_Signer extends QuestionnaireForm
- + this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } - disabled={ checking }> - + disabled={ checking } + />
- +
- +
- +
- +
- +
- +
- + this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } - disabled={ checking } > - + disabled={ checking } + />
- +
- +
{ !head_person.evo_indefinite && (
- +
+ { main.inn.length < 11 && + ( + +
+
+ + +
+
+ + { signatory_person.delegation_agreement && ( + +

Информация об управляющей организации или управляющем

+ +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + disabled={ checking } + /> +
+ { main.individual_executive_inn !== null && main.individual_executive_inn.replace(/[^\d.-]+/g, '').length < 11 && ( +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + disabled={ checking } + /> +
+ ) } +
+ +
+

+ this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + disabled={ checking } + /> +
+ +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + disabled={ checking } + /> +
+ +
+ + {/*} + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> + {*/} + this._handle_onTextFieldChange("main.individual_executive_docdate", date) } + required={ true } + disabled={ checking } + /> +
+
+ + + +
+ ) } +
+ ) } +
this._handle_onCheckboxFieldChange(event.target.name, !signatory_person.not_head_person ? true : false) } disabled={ checking } /> - +
{ signatory_person.not_head_person && ( - -

Информация об управляющей организации или управляющем

-

Организационно-правовая форма и полное наименование управляющей организации или управляющего

-
- this._handle_onTextFieldChange(event.target.name, event.target.value) } - required={ true } - disabled={ checking } - /> -
- -
-
- - this._handle_onTextFieldChange(event.target.name, event.target.value) } - required={ true } - disabled={ checking } - /> -
- -
- - this._handle_onTextFieldChange(event.target.name, event.target.value) } - required={ true } - disabled={ checking } - /> -
-
- -
-
- - this._handle_onTextFieldChange(event.target.name, event.target.value) } - disabled={ checking } - /> -
- -
- - {/*} - this._handle_onTextFieldChange(event.target.name, event.target.value) } - required={ true } - /> - {*/} - this._handle_onTextFieldChange("main.individual_executive_docdate", date) } - required={ true } - disabled={ checking } - /> -
-
- - - -
- ) } - -
-
- this._handle_onCheckboxFieldChange(event.target.name, !signatory_person.delegation_agreement ? true : false) } - disabled={ checking } - /> - -
-
- - { signatory_person.delegation_agreement && (

Информация о подписанте (заполняется если подписант договора лизинга отличается от единоличного исполнительного органа)

- - Фамилия * + this._handle_onTextFieldChange(event.target.name, event.target.value) } + onChange={ (value) => this._handle_onTextFieldChange("signatory_person.lastname", value) } required={ true } disabled={ checking } />
- - Имя * + this._handle_onTextFieldChange(event.target.name, event.target.value) } + onChange={ (value) => this._handle_onTextFieldChange("signatory_person.firstname", value) } required={ true } disabled={ checking } /> @@ -756,20 +797,23 @@ class Form_3_Signer extends QuestionnaireForm
- this._handle_onTextFieldChange(event.target.name, event.target.value) } + placeholder="Введите имя" + onChange={ (value) => this._handle_onTextFieldChange("signatory_person.middlename", value) } + required={ false } disabled={ checking } />
- - Серия паспорта * +
- - Номер паспорта * +
- +
- - Код подразделения * + this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } disabled={ checking } @@ -823,7 +869,7 @@ class Form_3_Signer extends QuestionnaireForm
- +
- +
- +
- - Телефон * + this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } disabled={ checking } + mask='+7 (999) 999 99 99' />
- + Реквизиты документа подтверждающие полномочия на подписание договора лизинга

- +
- +
- +
- + ) : "Продолжить" } + { status !== "empty" && ( + <> +

+ Отменить изменения в анкете + + ) }
) } diff --git a/components/questionnaire/forms/Form_4_Shareholders/index.js b/components/questionnaire/forms/Form_4_Shareholders/index.js index d1e36a4..75b52f0 100644 --- a/components/questionnaire/forms/Form_4_Shareholders/index.js +++ b/components/questionnaire/forms/Form_4_Shareholders/index.js @@ -19,6 +19,7 @@ import AddressSuggests from "../../AddressSuggests"; import InputMask from 'react-input-mask'; import { getCitizenshipTitleByCode } from "../../../../utils/citizenship"; import { saveQuestionnaire } from "../../../../actions"; +import SuggestsInput from "../../SuggestsInput"; class ShareholderForm extends React.Component { @@ -49,45 +50,49 @@ class ShareholderForm extends React.Component return (
- - Фамилия * + this._handle_onTextFieldChange(event.target.name, event.target.value) } + onChange={ (value) => this._handle_onTextFieldChange(`founder_persons[${ index }].lastname`, value) } required={ true } disabled={ checking } />
- - Имя * + this._handle_onTextFieldChange(event.target.name, event.target.value) } + onChange={ (value) => this._handle_onTextFieldChange(`founder_persons[${ index }].firstname`, value) } required={ true } disabled={ checking } />
- - Отчество *если имеется + this._handle_onTextFieldChange(event.target.name, event.target.value) } + onChange={ (value) => this._handle_onTextFieldChange(`founder_persons[${ index }].middlename`, value) } + required={ false } disabled={ checking } />
- +
- +
- +
- +
this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } - disabled={ checking } > - + disabled={ checking } + />
this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } - disabled={ checking } > - + disabled={ checking } + />
@@ -160,7 +165,7 @@ class ShareholderForm extends React.Component
- +
- this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true } disabled={ checking } @@ -189,7 +195,7 @@ class ShareholderForm extends React.Component
- +
- +
- +