diff --git a/package.json b/package.json index 8ea1251..cb357f0 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "ioredis": "^4.28.2", "js-file-download": "^0.4.12", "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.21", "md5": "^2.3.0", "moment": "^2.29.1", "multer": "^1.4.5-lts.1", diff --git a/pages/components/DatePicker/index.js b/pages/components/DatePicker/index.js index f1856d8..055231f 100644 --- a/pages/components/DatePicker/index.js +++ b/pages/components/DatePicker/index.js @@ -50,7 +50,7 @@ export default class DateInput extends React.Component if(disabled) { return ( -
+
{ plain ? ( moment(value).format("DD.MM.YYYY") ) : ( @@ -78,7 +78,7 @@ export default class DateInput extends React.Component else { return ( -
+
+
+ { children } +
+ +
+
+
+ ); + } +} + +export default Modal; diff --git a/pages/questionnaire/components/FileUploadInput.js b/pages/questionnaire/components/FileUploadInput.js new file mode 100644 index 0000000..bea3b85 --- /dev/null +++ b/pages/questionnaire/components/FileUploadInput.js @@ -0,0 +1,28 @@ +import React from "react"; +import Link from "next/link"; +import { connect } from "react-redux"; + +class FileUploadInput extends React.Component +{ + constructor(props) + { + super(props); + + this.state = { + }; + } + + componentDidMount() + { + } + + componentDidUpdate(prevProps, prevState) + { + } + + render() + { + } +} + +export default FileUploadInput; \ No newline at end of file diff --git a/pages/questionnaire/components/InnerMenu/index.js b/pages/questionnaire/components/InnerMenu/index.js index ec102fb..684d17f 100644 --- a/pages/questionnaire/components/InnerMenu/index.js +++ b/pages/questionnaire/components/InnerMenu/index.js @@ -38,21 +38,23 @@ class InnerMenu extends React.Component _getActiveLink = (route) => { - if (route.indexOf("#main") > -1) return "Информация о лизингополучателе"; - if (route.indexOf("#contacts") > -1) return "Адреса лизингополучателя"; - if (route.indexOf("#signer") > -1) return "Информация о единоличном исполнительном органе, подписанте договора лизинга"; - if (route.indexOf("#shareholders") > -1) return "Сведения об участниках (акционерах) и бенефициарных владельцах"; - if (route.indexOf("#regulatory") > -1) return "Сведения об органах управления"; - if (route.indexOf("#non-profit") > -1) return "Данные о некомерческой организации"; - if (route.indexOf("#check") > -1) return "Проверка введеных данных"; - if (route.indexOf("#signing") > -1) return "Выбор метода подписания"; + if (route.indexOf("#main") > -1) return "1. Информация о лизингополучателе"; + if (route.indexOf("#contacts") > -1) return "2. Адреса лизингополучателя"; + if (route.indexOf("#signer") > -1) return "3. Информация о единоличном исполнительном органе, подписанте договора лизинга"; + if (route.indexOf("#shareholders") > -1) return "4. Сведения об участниках (акционерах) и бенефициарных владельцах"; + if (route.indexOf("#regulatory") > -1) return "5. Сведения об органах управления"; + if (route.indexOf("#non-profit") > -1) return "6. Данные о некомерческой организации"; + if (route.indexOf("#check") > -1) return "7. Проверка введеных данных"; + if (route.indexOf("#signing") > -1) return "8. Выбор метода подписания"; return null; } render() { + console.log("questionnaire", this.props.questionnaire); const { menuOpened, } = this.state; + const { questionnaire } = this.props; return (
diff --git a/pages/questionnaire/components/forms/Form_2_Contacts/index.js b/pages/questionnaire/components/forms/Form_2_Contacts/index.js index 79ac5ae..587e8c0 100644 --- a/pages/questionnaire/components/forms/Form_2_Contacts/index.js +++ b/pages/questionnaire/components/forms/Form_2_Contacts/index.js @@ -7,13 +7,17 @@ import { connect } from "react-redux"; import numeral from "numeral"; import pluralize from 'pluralize-ru'; import { SpinnerCircular } from 'spinners-react'; +import QuestionnaireForm from "../QuestionnaireForm"; -export default class Form_2_Contacts extends React.Component +export default class Form_2_Contacts extends QuestionnaireForm { constructor(props) { super(props); this.state = { + fact_address: "", + postal_address: "", + address_type: "legal", address: "", phone_check_loading: false, phone_number_format_error: false, @@ -60,7 +64,7 @@ export default class Form_2_Contacts extends React.Component render() { - const { address, phone_check_loading, phone_number_format_error } = this.state; + const { fact_address, postal_address, address_type, phone_check_loading, phone_number_format_error } = this.state; return ( @@ -69,30 +73,29 @@ export default class Form_2_Contacts extends React.Component
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>

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

Прошу оригиналы счетов-фактур и актов отказанных услуг по заключенному договору лизинга направлять:

-
- - + this._handle_onCheckboxFieldChange(event.target.name, event.target.value) }/> +
- - + this._handle_onCheckboxFieldChange(event.target.name, event.target.value) }/> +
- -
diff --git a/pages/questionnaire/components/forms/Form_3_Signer/index.js b/pages/questionnaire/components/forms/Form_3_Signer/index.js index 6a81d21..f41fa09 100644 --- a/pages/questionnaire/components/forms/Form_3_Signer/index.js +++ b/pages/questionnaire/components/forms/Form_3_Signer/index.js @@ -8,17 +8,111 @@ import numeral from "numeral"; import pluralize from 'pluralize-ru'; import { SpinnerCircular } from 'spinners-react'; import DateInput from '../../../../components/DatePicker'; +import QuestionnaireForm from "../QuestionnaireForm"; +import FilesList from "../FilesList"; +import Modal from "../../../../components/Modal/modal"; -export default class Form_3_Signer extends React.Component +export default class Form_3_Signer extends QuestionnaireForm { constructor(props) { super(props); this.state = { + main: { + title: "", + inn: "", + kpp: "", + email: "", + telephone: "", + websiteurl: "", + financial_loan: "", + is_individual_executive: false, + individual_executive_inn: "", + individual_executive_kpp: "", + individual_executive_oop: "", + individual_executive_docnum: "", + individual_executive_docdate: "", + high_level: "", + board_of_directors: "", + collective_executive: "", + individual_executive: "", + other_control: "", + }, + head_person: { + lastname: "", + firstname: "", + middlename: "", + no_middle_name: false, + jobtitle: "", + assignment_date: "", + indefinite: "", + credentials_dateend: "", + telephone: "", + email: "", + identity_document: { + doctype: "", + seria: "", + docnumber: "", + issuedate: "", + code: "", + issueby: "", + issueby_search_dadata: "", + placebirth: "", + citizenship_code: "", + registration_address: { + title: "", + fias_id: "", + } + }, + evo_assignment_date: "", + evo_credentials_dateend: "", + evo_indefinite: false, + }, + head_person_files: [], + individual_executive_files: [], + signatory_person: { + not_head_person: false, + lastname: "", + firstname: "", + middlename: "", + no_middle_name: false, + jobtitle: "", + signer_rule_basis: "", + signer_rule_basis_add: "", + docdate: "", + docnumber: "", + delegation_agreement: false, + telephone: "", + email: "", + identity_document: { + docype: "", + seria: "", + docnumber: "", + issuedate: "", + icode: "", + issueby: "", + issueby_search_dadata: "", + placebirth: "", + citizenship_code: "", + registration_address: { + title: "", + fias_id: "", + } + } + }, + signatory_person_files: [], + + personal_data_consent: false, + address: "", phone_check_loading: false, phone_number_format_error: false, - date_to: "" + date_to: "", + evo_assignment_date: "", + evo_credentials_dateend: "", + evo_indefinite: false, + + modal_show_personal_data: false, }; } @@ -62,62 +156,132 @@ export default class Form_3_Signer extends React.Component render() { + const { + //not_head_person, + //delegation_agreement, + personal_data_consent, + //evo_assignment_date, + //evo_credentials_dateend, + evo_indefinite, + head_person_files, + signatory_person_files, + individual_executive_files, + modal_show_personal_data, + } = this.state; + const { address, phone_check_loading, phone_number_format_error } = this.state; + const { main, head_person, signatory_person } = this.state; + const { + not_head_person, + delegation_agreement, + } = signatory_person; return (

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

-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
- -
- - this._handle_onAddressChange(event.target.value) } required={ true }/> -
- -
- - this._handle_onAddressChange(event.target.value) } required={ true }/> -
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange("head_person.identity_document.issuedate", date) } + required={ true } + />
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
-
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
-
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + />
- + {/*}
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onAddressChange(event.target.value) } required={ true }/>
- + */}
- this.setState({ date_to: date }) }/> + this._handle_onTextFieldChange("head_person.evo_assignment_date", date) } + required={ true } + />
- - + this._handle_onCheckboxFieldChange(event.target.name, !evo_indefinite ? true : false) } + /> +
- -
-
-
- - - - - - - - -
- + { !evo_indefinite && ( +
+ +
+ this._handle_onTextFieldChange("head_person.evo_credentials_dateend", date) } + required={ true } + />
+
+ ) } + + + + {/*} + +
+ + { head_person_files.map((file, index) => ( +
+
+

№ 01/20/2020 (.PDF)Постановление

+
+
+ )) } +
+
+
+ + + + + + + +
+ +
+ +
+ {*/}
-
- - -
- -
- - -
- -
- - -
+
+ this._handle_onCheckboxFieldChange(event.target.name, !not_head_person ? true : false) } + /> + +
+ { not_head_person && ( + +

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

+

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

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

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

+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+
+ +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +

Реквизиты документа подтверждающие полномочия на подписание договора лизинга

+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+
+ +
+
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+ +
+ + this._handle_onTextFieldChange(event.target.name, event.target.value) } + required={ true } + /> +
+
+ + + + {/*} +
+
+

№ 01/20/2020 (.PDF)Постановление

+
+
+ {*/} +
+ ) } + +
+
+ this._handle_onCheckboxFieldChange(event.target.name, !personal_data_consent ? true : false) } + /> + +
+
+ { this.setState({ modal_show_personal_data: false, }) } } + > +

Настоящим даю ООО «ЛК Эволюция» (ОГРН 1207700245037) (115201, г. Москва, ул. Котляковская, дом 8, эт., пом. 3, 337) для целей определения возможности заключения договора финансовой аренды (лизинга)/ договора поручительства, проведения проверки кредитной истории, заключения, изменения и исполнения договора финансовой аренды (лизинга)/ договора поручительства, в том числе в случае неисполнения и/или ненадлежащего исполнения указанного договора, осуществления рассылки рекламно-информационного характера и осуществления прямых контактов с помощью любых средств связи (телефонной и подвижной связи, смс-оповещения, почтового письма, телеграммы, голосового сообщения, сообщения по электронной почте и др.), при этом право выбора организаций, осуществляющих рассылку, предоставляю ООО «ЛК Эволюция» (ОГРН 1207700245037) без дополнительного согласования со мной, а также для обеспечения соблюдения законов и иных +нормативно-правовых актов, согласие на обработку, предполагающую сбор (непосредственно от заявителя, от третьих лиц, путем направления запросов в органы государственной власти, органы местного самоуправления, юридическим и физическим лицам, из иных общедоступных информационных ресурсов, из архивов), запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), проверку, извлечение, использование, передачу (распространение, предоставление, доступ), полностью или частично третьим лицам, действующим на основании договоров, заключенных ими с ООО «ЛК Эволюция» (ОГРН 1207700245037), обезличивание, блокирование, удаление и уничтожение, следующих моих персональных данных: фамилия, имя, отчество, дата и место рождения, пол, гражданство, серия и номер основного документа (включая его копию), удостоверяющего личность, сведения о дате выдачи указанного документа и выдавшем его органе, ИНН, страховой номер индивидуального лицевого счета, указанный в страховом свидетельстве обязательного пенсионного страхования, адрес регистрации и фактического проживания, контактная информация (домашний, рабочий, мобильный телефоны, электронные адреса), место работы и должность, сведения о доходах, сведения о семейном положении, сведения о супруге, сведения об имущественном положении, сведения, +содержащиеся в титульной и основной части кредитной истории. Обработка персональных данных осуществляется как с использованием средств автоматизации, в том числе в информационно телекоммуникационных сетях, так и без использования таких средств. ООО «ЛК Эволюция» (ОГРН 1207700245037) в соответствии с настоящим согласием и для достижения указанных выше целей, вправе поручить обработку персональных данных третьим лицам, а так же, в случае привлечения третьих лиц к оказанию услуг и/или в случае передачи ООО «ЛК Эволюция» (ОГРН 1207700245037) принадлежащих ему прав требования третьему лицу, вправе в необходимом объеме раскрывать/передавать информацию таким третьим лицам, их агентам и иным уполномоченным им лицам, а также предоставлять таким лицам соответствующие документы, содержащие такую информацию. Согласие на обработку персональных данных вступает в силу со дня подписания настоящей +анкеты, действует в течение 10 (десяти) лет или до момента надлежащего отзыва согласия. Согласие может быть отозвано в любое время посредством направления соответствующего письменного заявления в адрес ООО «ЛК Эволюция» (ОГРН 1207700245037). В случае отзыва настоящего согласия ООО «ЛК Эволюция» (ОГРН 1207700245037) вправе продолжить обработку персональных данных в случаях и в порядке, предусмотренных законодательством РФ. В случае любых изменений персональных данных, указанных в настоящем согласии, обязуюсь сообщить о таких изменениях ООО «ЛК Эволюция» (ОГРН 1207700245037) в течение 7 (семи) дней. Настоящим даю ООО «ЛК Эволюция» (ОГРН 1207700245037) согласие на получение кредитного отчета в целях заключения договора лизинга +и иных договоров, связанных с исполнением договора лизинга, в том числе на раскрытие информации, содержащейся в основной части кредитной истории, в отношении вышеуказанного лизингополучателя, а также в отношении меня (оригинал документа, удостоверяющего мою личность, предоставлен ООО «ЛК Эволюция» (ОГРН 1207700245037)). Данное согласие на получение кредитного отчета действует в течение 6 (шести) месяцев с даты подписания мной настоящей анкеты.

+
) } diff --git a/pages/questionnaire/components/forms/Form_6_NonProfit/index.js b/pages/questionnaire/components/forms/Form_6_NonProfit/index.js index 9ec09ea..b8ff7fa 100644 --- a/pages/questionnaire/components/forms/Form_6_NonProfit/index.js +++ b/pages/questionnaire/components/forms/Form_6_NonProfit/index.js @@ -7,13 +7,23 @@ import { connect } from "react-redux"; import numeral from "numeral"; import pluralize from 'pluralize-ru'; import { SpinnerCircular } from 'spinners-react'; +import QuestionnaireForm from "../QuestionnaireForm"; -export default class Form_6_NonProfit extends React.Component +export default class Form_6_NonProfit extends QuestionnaireForm { constructor(props) { super(props); this.state = { + fin_source_business: false, + fin_source_donate: false, + fin_source_fees: false, + fin_source_another: false, + fin_source_another_description: "", + foreign_payers: false, + fin_goals_cars: "", + fin_goals_trucks: "", + fin_goals_special: "", address: "", phone_check_loading: false, phone_number_format_error: false, @@ -60,6 +70,8 @@ export default class Form_6_NonProfit extends React.Component render() { + const { fin_source_business, fin_source_donate, fin_source_fees, fin_source_another, fin_source_another_description, foreign_payers, + fin_goals_cars, fin_goals_trucks, fin_goals_special } = this.state; const { address, phone_check_loading, phone_number_format_error } = this.state; return ( @@ -71,24 +83,24 @@ export default class Form_6_NonProfit extends React.Component
- - + this._handle_onCheckboxFieldChange(event.target.name, !fin_source_business ? true : false) }/> +
- - + this._handle_onCheckboxFieldChange(event.target.name, !fin_source_donate ? true : false) }/> +
- - + this._handle_onCheckboxFieldChange(event.target.name, !fin_source_fees ? true : false ) }/> +
- -
@@ -98,32 +110,31 @@ export default class Form_6_NonProfit extends React.Component
- - + this._handle_onCheckboxFieldChange(event.target.name, false) }/> +
- - + this._handle_onCheckboxFieldChange(event.target.name, true) }/> +
-

Укажите цели использования предмета лизинга и подтвердите их соответствие уставным целям -для каждого предмета лизинга отдельно

+

Укажите цели использования предмета лизинга и подтвердите их соответствие уставным целям для каждого предмета лизинга отдельно

-
+
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onCheckboxFieldChange(event.target.name, event.target.value) } required={ true }/>
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onCheckboxFieldChange(event.target.name, event.target.value) } required={ true }/>
- this._handle_onAddressChange(event.target.value) } required={ true }/> + this._handle_onCheckboxFieldChange(event.target.name, event.target.value) } required={ true }/>
diff --git a/pages/questionnaire/components/forms/Form_7_Check/index.js b/pages/questionnaire/components/forms/Form_7_Check/index.js index b45b5a8..c08eb4d 100644 --- a/pages/questionnaire/components/forms/Form_7_Check/index.js +++ b/pages/questionnaire/components/forms/Form_7_Check/index.js @@ -135,7 +135,6 @@ export default class Form_7_Check extends React.Component

Прошу оригиналы счетов-фактур и актов отказанных услуг по заключенному договору лизинга направлять:

-
@@ -288,9 +287,6 @@ export default class Form_7_Check extends React.Component
- - -

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

diff --git a/pages/questionnaire/components/forms/Form_8_Signing/index.js b/pages/questionnaire/components/forms/Form_8_Signing/index.js index cc8e201..e180176 100644 --- a/pages/questionnaire/components/forms/Form_8_Signing/index.js +++ b/pages/questionnaire/components/forms/Form_8_Signing/index.js @@ -8,177 +8,183 @@ import numeral from "numeral"; import pluralize from "pluralize-ru"; import { SpinnerCircular } from "spinners-react"; -export default class Form_8_Signing extends React.Component { - constructor(props) { - super(props); - this.state = { - address: "", - phone_check_loading: false, - phone_number_format_error: false, - }; - } +export default class Form_8_Signing extends React.Component +{ + constructor(props) + { + super(props); + this.state = { + address: "", + phone_check_loading: false, + phone_number_format_error: false, + }; + } - static getDerivedStateFromProps(nextProps, prevState) { - return { - observer: nextProps.observer, - user: nextProps.user, - }; - } + static getDerivedStateFromProps(nextProps, prevState) + { + return { + observer: nextProps.observer, + user: nextProps.user, + }; + } - componentDidMount() {} + componentDidMount() {} - _handle_onFormSubmit = (event) => { - event.preventDefault(); - console.log("FormAddress", "_handle_onFormSubmit"); - }; + _handle_onFormSubmit = (event) => + { + event.preventDefault(); + console.log("FormAddress", "_handle_onFormSubmit"); + }; - _handle_onAddressChange = (value) => { - this.setState({ address: value }, () => {}); - }; + _handle_onAddressChange = (value) => + { + this.setState({ address: value }, () => {}); + }; - _check_fields_disabled = (values) => { - for (let i in values) { - if (values[i] === "") { - return true; - } - } + _check_fields_disabled = (values) => + { + for (let i in values) + { + if (values[i] === "") + { + return true; + } + } - return false; - }; + return false; + }; - render() { - const { address, phone_check_loading, phone_number_format_error } = - this.state; + render() + { + const { address, phone_check_loading, phone_number_format_error } = this.state; - return ( - -
-

8. Выбор метода подписания

+ return ( + + +

8. Выбор метода подписания

+ +
+
+
+ + +
+
+
- -
-
-
- - -
-
-
+
+

Выберите подписанта

+
+
+ + +
-
-

Выберите подписанта

-
-
- - -
+
+ + +
-
- - -
+
+ + +
+
+
-
- - -
-
-
+
+
+
+ + +
+
+
+
+
+

+ № 01/20/2020 (.PDF) + Постановление +

+ Скачать +
+
-
-
-
- - -
-
-
+
+
+ +
+ -
-
-

- № 01/20/2020 (.PDF) - Постановление -

- Скачать -
-
+
+ + + -
-
- -
- - -
- - - - -

- Ошибка - Подписан не соответствует указанному подписанту в анкете -

-
- - ); - } +

+ Ошибка + Подписан не соответствует указанному подписанту в анкете +

+
+
+ ); + } } diff --git a/pages/questionnaire/components/forms/QuestionnaireForm.js b/pages/questionnaire/components/forms/QuestionnaireForm.js new file mode 100644 index 0000000..963da25 --- /dev/null +++ b/pages/questionnaire/components/forms/QuestionnaireForm.js @@ -0,0 +1,175 @@ +import React from "react"; +import Head from 'next/head'; +import Image from 'next/image'; +import Link from "next/link"; +import cookie from 'cookie'; +import { connect } from "react-redux"; +import numeral from "numeral"; +import pluralize from 'pluralize-ru'; +import { SpinnerCircular } from 'spinners-react'; +import { getAddress } from '../../../../actions'; +import debounce from 'debounce-promise'; +import { set as _set, get as _get } from 'lodash'; + +const suggestsAddressDebounce = (text) => +{ + return getAddress(text); +} + +const suggestsAddress = debounce(suggestsAddressDebounce, 500); + +export default class QuestionnaireForm extends React.Component +{ + _handle_onTextFieldChange = (name, value) => + { + console.log("QuestionnaireForm", "_handle_onTextFieldChange", { name, value }); + + const update = { ...this.state }; + _set(update, name, value); + + /* + if(name.indexOf(".") > -1) + { + const names = name.split("."); + if(names.length === 4) + { + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ][ names[2] ][ names[3] ] = value; + } + else if(names.length === 3) + { + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ][ names[2] ] = value; + } + else + { + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ] = value; + } + } + else + { + update[name] = value; + } + */ + this.setState(update); + } + + _handle_onCheckboxFieldChange = (name, value) => + { + console.log("QuestionnaireForm", "_handle_onCheckboxFieldChange", { name, value }); + + const update = { ...this.state }; + _set(update, name, value); + + /* + const update = {}; + if(name.indexOf(".") > -1) + { + const names = name.split("."); + if(names.length === 4) + { + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ][ names[2] ][ names[3] ] = value; + } + else if(names.length === 3) + { + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ][ names[2] ] = value; + } + else + { + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ] = value; + } + } + else + { + update[name] = value; + } + */ + this.setState(update); + } + + _handle_onAddFile = (name, files) => + { + console.log("QuestionnaireForm", "_handle_onAdd", { name, files }); + + const existed_files = [ ..._get(this.state, name) ]; + for(let nf in files) + { + let e = false; + for(let ef in existed_files) + { + if(existed_files[ef].name === files[nf].name) { e = true; } + } + + if(!e) + { + existed_files.push(files[nf]); + } + } + + const update = { ...this.state }; + _set(update, name, existed_files); + this.setState(update); + } + + _handle_onRemoveFile = (name, file_name) => + { + console.log("QuestionnaireForm", "_handle_onAdd", { name, files }); + + const existed_files = [ ..._get(this.state, name) ]; + + const files = []; + for(let i in existed_files) + { + if(existed_files[i].name !== file_name) + { + files.push(existed_files[i]); + } + } + + const update = { ...this.state }; + _set(update, name, files); + this.setState(update); + } +} + +/* +const state = { + foo: { + bar: { + val: [] + }, + } +}; + +console.log(state); +console.log(state); + +const name = "foo.bar.val"; +const names = name.split("."); + +console.log(names); + +if(names.length > 0) +{ + +} +if(names.length === 4) +{ + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ][ names[2] ][ names[3] ] = value; +} +else if(names.length === 3) +{ + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ][ names[2] ] = value; +} +else +{ + update[ names[0] ] = { ...this.state[ names[0] ] }; + update[ names[0] ][ names[1] ] = value; +} +*/ \ No newline at end of file diff --git a/reducers/initialState.js b/reducers/initialState.js index e69b6ba..b61516e 100644 --- a/reducers/initialState.js +++ b/reducers/initialState.js @@ -99,7 +99,166 @@ export const defaultState = { appeals: { list: null, new: 0 }, appeal: null, request: null, - } + }, + questionnaire: { + step: 9, + main: { + title: "", + inn: "", + kpp: "", + email: "", + telephone: "", + websiteurl: "", + financial_loan: "", + is_individual_executive: false, + individual_executive_inn: "", + individual_executive_kpp: "", + individual_executive_oop: "", + individual_executive_docnum: "", + individual_executive_docdate: "", + high_level: "", + board_of_directors: "", + collective_executive: "", + individual_executive: "", + other_control: "", + }, + legal_address: { + title: "", + fias_id: "", + }, + fact_address: { + name: "", + fias_id: "", + }, + postal_address: { + name: "", + fias_id: "", + }, + head_person: { + lastname: "", + firstname: "", + middlename: "", + no_middle_name: false, + jobtitle: "", + assignment_date: "", + indefinite: "", + credentials_dateend: "", + telephone: "", + email: "", + identity_document: { + doctype: "", + seria: "", + docnumber: "", + issuedate: "", + code: "", + issueby: "", + issueby_search_dadata: "", + placebirth: "", + citizenship_code: "", + registration_address: { + title: "", + fias_id: "", + } + }, + evo_assignment_date: "", + evo_credentials_dateend: "", + evo_indefinite: false, + }, + head_person_files: [], + signatory_person: { + not_head_person: false, + lastname: "", + firstname: "", + middlename: "", + no_middle_name: false, + jobtitle: "", + signer_rule_basis: "", + signer_rule_basis_add: "", + docdate: "", + docnumber: "", + delegation_agreement: false, + telephone: "", + email: "", + identity_document: { + docype: "", + seria: "", + docnumber: "", + issuedate: "", + icode: "", + issueby: "", + issueby_search_dadata: "", + placebirth: "", + citizenship_code: "", + registration_address: { + title: "", + fias_id: "", + } + } + }, + signatory_person_files: [], + founded_persons_template: { + lastname: "", + firstname: "", + middlename: "", + no_middle_name: false, + jobtitle: "", + telephone: "", + email: "", + founder_number: "", + founder_part: "", + is_beneficial: false, + identity_document: + { + doctype: "", + seria: "", + docnumber: "", + issuedate: "", + icode: "", + issueby: "", + issueby_search_dadata: "", + placebirth: "", + citizenship_code: "", + registration_address: { + title: "", + fias_id: "", + } + } + }, + founded_persons: [], + client_contacts: { + lastname: "", + firstname: "", + middlename: "", + no_middle_name: false, + jobtitle: "", + assignment_date: "", + indefinite: false, + credentials_dateend: "", + telephone: "", + email: "", + signer_rule_basis: "", + signer_rule_basis_add: "", + docdate: "", + docnumber: "", + delegation_agreement: false, + functiontype: "", + identity_document: { + doctype: "", + seria: "", + docnumber: "", + issuedate: "", + code: "", + issueby: "", + issueby_search_dadata: "", + placebirth: "", + citizenship_code: "", + registration_address: { + title: "", + fias_id: "", + } + } + }, + }, }; export default JSON.parse(JSON.stringify(defaultState)); \ No newline at end of file diff --git a/reducers/questionnaireReducer.js b/reducers/questionnaireReducer.js new file mode 100644 index 0000000..d4464f2 --- /dev/null +++ b/reducers/questionnaireReducer.js @@ -0,0 +1,42 @@ +import { HYDRATE } from 'next-redux-wrapper'; + +import * as actionTypes from '../constants/actionTypes'; +import initialState from "./initialState"; + +const questionnaireReducer = (state = initialState.questionnaire, action) => +{ + switch (action.type) + { + /* + case HYDRATE: + { + return { + ...state, + ...action.payload.questionnaire, + }; + } + */ + + case actionTypes.QUESTIONNAIRE_UPDATE: + { + return { + ...state, + questionnaire: action.data.questionnaire, + }; + } + + case actionTypes.QUESTIONNAIRE_RESET: + { + return { + ...state, + questionnaire: action.data.questionnaire, + }; + } + + default: { + return state; + } + } +}; + +export default questionnaireReducer; \ No newline at end of file diff --git a/store/index.js b/store/index.js index 0ce681d..4711c28 100644 --- a/store/index.js +++ b/store/index.js @@ -14,6 +14,7 @@ import adminReducer from '../reducers/adminReducer'; import contractsInfoReducer from '../reducers/contractsInfoReducer'; import contractEventsReducer from '../reducers/contractEventsReducer'; import contractFinesReducer from '../reducers/contractFinesReducer'; +import questionnaireReducer from '../reducers/questionnaireReducer'; const combinedReducer = combineReducers({ auth: authReducer, @@ -29,6 +30,7 @@ const combinedReducer = combineReducers({ contracts_info: contractsInfoReducer, contract_events: contractEventsReducer, contract_fines: contractFinesReducer, + questionnaire: questionnaireReducer, }); const makeStore = (context) => @@ -46,7 +48,7 @@ const makeStore = (context) => const persistConfig = { key: 'lkevoleasing', - whitelist: [ 'auth', 'user', 'company', 'events', 'companies', 'contracts_info', 'contract_events', 'contract_fines', ], + whitelist: [ 'auth', 'user', 'company', 'events', 'companies', 'contracts_info', 'contract_events', 'contract_fines', 'questionnaire'], storage }; diff --git a/yarn.lock b/yarn.lock index 3ac54c3..4f00a62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2544,6 +2544,11 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"