files list component

This commit is contained in:
merelendor 2023-03-23 02:52:49 +03:00
parent 01f1177896
commit c29fbf2603
17 changed files with 1461 additions and 290 deletions

View File

@ -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",

View File

@ -50,7 +50,7 @@ export default class DateInput extends React.Component
if(disabled)
{
return (
<div className="date_input_wrapper" style={{ position: "relative" }}>
<div className="date_input_wrapper" style={[ { position: "relative", }, this.props.style ]}>
{ plain ? (
moment(value).format("DD.MM.YYYY")
) : (
@ -78,7 +78,7 @@ export default class DateInput extends React.Component
else
{
return (
<div className="date_input_wrapper">
<div className="date_input_wrapper" style={ this.props.style }>
<DatePicker
messages={ messages }
onFocus={ this._handle_onFocus }

View File

@ -0,0 +1,31 @@
import React, { Component } from "react";
class Modal extends Component
{
constructor(props)
{
super(props);
this.state = {
menuOpened: false,
activeLink: ""
};
}
render()
{
const { children } = this.props;
return (
<div className={ this.props.open ? "fade opened" : "fade" }>
<div className="modal" style={{ maxWidth: "90vw" }}>
{ children }
<div className="modal_footer">
<button className="button button-blue" onClick={() => this.props.close()}>Закрыть</button>
</div>
</div>
</div>
);
}
}
export default Modal;

View File

@ -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;

View File

@ -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 (
<aside>
@ -62,42 +64,42 @@ class InnerMenu extends React.Component
<ul className={ menuOpened ? "aside_nav open" : "aside_nav" } ref={ this.menuRef }>
<li>
<Link href={`/questionnaire/#main`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#main") > -1 || this.props.router.asPath.indexOf("#") < 0 ? "active" : "" }>Информация о лизингополучателе</a>
<a style={{ fontWeight: 400, }} disabled={ questionnaire.step > 1 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#main") > -1 || this.props.router.asPath.indexOf("#") < 0 ? "active" : "" }>1. Информация о лизингополучателе</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#contacts`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#contacts") > -1 ? "active" : "" }>Адреса лизингополучателя</a>
<a style={{ fontWeight: 400, }} disabled={ questionnaire.step > 2 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#contacts") > -1 ? "active" : "" }>2. Адреса лизингополучателя</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#signer`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#signer") > -1 ? "active" : "" }>Информация о единоличном исполнительном органе, подписанте договора лизинга</a>
<a style={{ fontWeight: 400, }} disabled={ questionnaire.step > 3 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#signer") > -1 ? "active" : "" }>3. Информация о единоличном исполнительном органе, подписанте договора лизинга</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#shareholders`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#shareholders") > -1 ? "active" : "" }>Сведения об участниках (акционерах) и бенефициарных владельцах</a>
<a style={{ fontWeight: 400, }} disabled={ questionnaire.step > 4 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#shareholders") > -1 ? "active" : "" }>4. Сведения об участниках (акционерах) и бенефициарных владельцах</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#regulatory`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#regulatory") > -1 ? "active" : "" }>Сведения об органах управления</a>
<a style={{ fontWeight: 400, }} disabled={ questionnaire.step > 5 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#regulatory") > -1 ? "active" : "" }>5. Сведения об органах управления</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#non-profit`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#non-profit") > -1 ? "active" : "" }>Данные о некомерческой организации</a>
<a style={{ fontWeight: 400, }} disabled={ questionnaire.step > 6 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#non-profit") > -1 ? "active" : "" }>6. Данные о некомерческой организации</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#check`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#check") > -1 ? "active" : "" }>Проверка введеных данных</a>
<a style={{fontWeight: 400}} disabled={ questionnaire.step > 7 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#check") > -1 ? "active" : "" }>7. Проверка введеных данных</a>
</Link>
</li>
<li>
<Link href={`/questionnaire/#signing`} shallow>
<a style={{fontWeight: 400}} className={ this.props.router && this.props.router.asPath.indexOf("#signing") > -1 ? "active" : "" }>Выбор метода подписания</a>
<a style={{fontWeight: 400}} disabled={ questionnaire.step > 8 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#signing") > -1 ? "active" : "" }>8. Выбор метода подписания</a>
</Link>
</li>
</ul>
@ -109,6 +111,7 @@ class InnerMenu extends React.Component
function mapStateToProps(state, ownProps)
{
return {
questionnaire: state.questionnaire,
};
}

View File

@ -0,0 +1,93 @@
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 Dropzone from 'react-dropzone';
export default class FilesList extends React.Component
{
constructor(props)
{
super(props);
this.state = {};
}
_handle_onAddFile = (files) =>
{
const { name, onAddFile } = this.props;
onAddFile(name, files);
}
_handle_onRemoveFile = (file_name) =>
{
const { name, onRemoveFile } = this.props;
onRemoveFile(name, file_name);
}
_renderFileName = (name) =>
{
let chunks = name.split(/(.{19})/).filter(O => O);
console.log({chunks});
if(chunks.length > 2)
{
chunks = chunks.slice(0, 2);
if(chunks[1].length > 17)
{
let second_line = chunks[1].split();
second_line.slice(0, 17);
second_line.push("...");
chunks[1] = second_line;
}
}
//return chunks.join("\n");
return name;
}
render()
{
const { files, } = this.props;
console.log("FilesList", "files", files);
return (
<div style={{ flexDirection: "row", display: "flex", alignItems: "flex-start", justifyContent: "flex-start", gap: "2%", }}>
{ files.map((file, index) => (
<div key={ index } className="dosc_list medium-icon" style={{ position: "relative", border: "1px dashed rgb(28, 1, 169)", width: "32%", height: "100px", borderRadius: "4px", display: "flex", alignItems: "center", justifyContent: "center", }}>
<div className="row" style={{ alignItems: "center", justifyContent: "center", display: "flex", flexDirection: "row", flex: 1, marginBottom: "0px" }}>
<p className="doc_name i-pdf extension" style={{ wordBreak: "break-all", lineHeight: "15px" }}>{ this._renderFileName(file.name) }{/*}<span style={{width: "100%"}}>Постановление</span>{*/}</p>
</div>
<div style={{ position: "absolute", top: "5px", right: "5px", width: "20px", height: "20px", background: "#edeff5", flex: 1, justifyContent: "center", display: "flex", alignItems: "center", borderRadius: "10px", cursor: "pointer" }} onClick={ () => this._handle_onRemoveFile(file.name) }>
<span style={{ color: "#919399", fontSize: "12px" }}></span>
</div>
</div>
)) }
<Dropzone onDrop={ (acceptedFiles) => this._handle_onAddFile(acceptedFiles) }>
{ ({getRootProps, getInputProps}) => (
<div className="file_upload dropzone" { ...getRootProps() } style={{ width: "32%", height: "100px", marginBottom: "25px", marginTop: "0px", }}>
<div className="files"></div>
<div>
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M28.1251 31.5H7.87402C7.57565 31.5 7.28951 31.3815 7.07853 31.1705C6.86755 30.9595 6.74902 30.6734 6.74902 30.375V5.625C6.74902 5.32663 6.86755 5.04048 7.07853 4.82951C7.28951 4.61853 7.57565 4.5 7.87402 4.5H21.3751L29.2501 12.375V30.375C29.2501 30.5227 29.221 30.669 29.1645 30.8055C29.108 30.942 29.0251 31.066 28.9206 31.1705C28.8162 31.275 28.6921 31.3578 28.5556 31.4144C28.4192 31.4709 28.2729 31.5 28.1251 31.5Z" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.375 4.5V12.375H29.2511" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.625 21.375H21.375" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M18 18V24.75" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<label htmlFor="" className="blue unselectable">Прикрепить скан документов</label>
</div>
<input type="file" />
</div>
) }
</Dropzone>
</div>
)
}
}

View File

@ -23,9 +23,28 @@ export default class Form_1_Main extends React.Component
{
super(props);
this.state = {
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: "",
address: "",
phone_check_loading: false,
phone_number_format_error: false,
nko: false,
};
}
@ -72,6 +91,24 @@ export default class Form_1_Main extends React.Component
//}
}
_handle_onTextFieldChange = (name, value) =>
{
console.log("_handle_onTextFieldChange", name, value);
const update = {};
update[name] = value;
this.setState(update);
}
_handle_onCheckboxFieldChange = (name, value) =>
{
console.log("_handle_onCheckboxFieldChange", name, value);
const update = {};
update[name] = value;
this.setState(update);
}
_handle_onAddressChange = (value) =>
{
this.setState({ address: value, }, () =>
@ -113,7 +150,7 @@ export default class Form_1_Main extends React.Component
render()
{
const { address, phone_check_loading, phone_number_format_error } = this.state;
const { title, inn, kpp, email, telephone, websiteurl, financial_loan, nko, phone_check_loading, phone_number_format_error } = this.state;
return (
<React.Fragment>
@ -122,42 +159,42 @@ export default class Form_1_Main extends React.Component
<div className="form_field">
<label>Краткое наименование</label>
<input type="text" name="address" value={ address } placeholder="Введите нименование" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="title" value={ title } placeholder="Введите нименование" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
<div className="formgroup">
<div className="form_field">
<label>ИНН</label>
<input type="text" name="address" value={ address } placeholder="Введите ИНН" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="inn" value={ inn } placeholder="Введите ИНН" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
<div className="form_field">
<label>КПП</label>
<input type="text" name="address" value={ address } placeholder="Введите КПП" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="kpp" value={ kpp } placeholder="Введите КПП" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
</div>
<div className="formgroup">
<div className="form_field">
<label>Телефон</label>
<input type="text" name="address" value={ address } placeholder="Введите номер" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="telephone" value={ telephone } placeholder="Введите номер" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
<div className="form_field">
<label>Сайт</label>
<input type="text" name="address" value={ address } placeholder="Введите адрес сайта, если есть" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="websiteurl" value={ websiteurl } placeholder="Введите адрес сайта, если есть" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
</div>
<div className="form_field">
<label>E-mail</label>
<input type="text" name="address" value={ address } placeholder="Укажите адрес электронной почты" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="email" value={ email } placeholder="Укажите адрес электронной почты" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
<p>может использоваться для отправки лизингодателем юридически значимых сообщений в соответсвии с условиями договора лизинга, а так же для операций в электронном ПТС/ПСМ</p>
</div>
<div className="form_field">
<label>Финансовая нагрузка</label>
<input type="text" name="address" value={ address } placeholder="Укажите сумму" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="financial_loan" value={ financial_loan } placeholder="Укажите сумму" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
<p>сумма текущих ежемесячных платежей по действующим кредитам/договорам лизинга</p>
</div>
@ -165,13 +202,12 @@ export default class Form_1_Main extends React.Component
<label><b>Организация является НКО</b></label>
<div>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" />
<label htmlFor="">Нет</label>
<input type="radio" hidden="" id="nko_0" name="nko" checked={ nko === false } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, false) }/>
<label htmlFor="nko_0" className="unselectable">Нет</label>
</div>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" />
<label htmlFor="">Да</label>
<input type="radio" hidden="" id="nko_1" name="nko" checked={ nko === true } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, true) }/>
<label htmlFor="nko_1" className="unselectable">Да</label>
</div>
</div>
</div>

View File

@ -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 (
<React.Fragment>
@ -69,30 +73,29 @@ export default class Form_2_Contacts extends React.Component
<div className="form_field">
<label>Фактический адрес</label>
<input type="text" name="address" value={ address } placeholder="Введите адрес" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="fact_address" value={ fact_address } placeholder="Введите адрес" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
<p>для юр.диц - заполняется, если отличается от указанного в ЕГРЮЛ; для ИП - заполняется всегда</p>
</div>
<p>Прошу оригиналы счетов-фактур и актов отказанных услуг по заключенному договору лизинга направлять:</p>
<div className="form_field">
<div style={{ width: "100%" }}>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" />
<label htmlFor="">По юридическому адресу, указанному в ЕГРЮЛ (для юрлиц)</label>
<input type="radio" hidden="" value="legal" id="address_type_legal" name="address_type" checked={ address_type === "legal" ? true : false } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, event.target.value) }/>
<label htmlFor="address_type_legal" className="unselectable">По юридическому адресу, указанному в ЕГРЮЛ (для юрлиц)</label>
</div>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" />
<label htmlFor="">По фактическому адресу, указанному в настоящей анкете</label>
<input type="radio" hidden="" value="fact" id="address_type_fact" name="address_type" checked={ address_type === "fact" ? true : false } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, event.target.value) }/>
<label htmlFor="address_type_fact" className="unselectable">По фактическому адресу, указанному в настоящей анкете</label>
</div>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" />
<label htmlFor="" style={{ width: "100%" }}>
<input type="radio" hidden="" value="postal" id="address_type_postal" name="address_type" checked={ address_type === "postal" ? true : false } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, event.target.value) }/>
<label htmlFor="address_type_postal" className="unselectable" style={{ width: "100%" }}>
<span>По следующему адресу</span>
<input type="text" name="address" value={ address } placeholder="Введите адрес электронной почты" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="postal_address" value={ postal_address } placeholder="Введите адрес" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } disabled={ address_type === "postal" ? false : true } required={ true }/>
</label>
</div>
</div>

View File

@ -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,60 +156,464 @@ 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 (
<React.Fragment>
<form onSubmit={ this._handle_onFormSubmit } className="questionnaire questionnaire_3">
<p className="title">3. Информация о единоличном исполнительном органе, подписанте договора лизинга</p>
<div className="form_field">
<label>Фамилия</label>
<input type="text"
id="head_person.lastname"
name="head_person.lastname"
value={ head_person.lastname }
placeholder="Введите фамилию"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Имя</label>
<input type="text"
id="head_person.firstname"
name="head_person.firstname"
value={ head_person.firstname }
placeholder="Введите имя"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Отчество <small>если имеется</small></label>
<input type="text"
id="head_person.middlename"
name="head_person.middlename"
value={ head_person.middlename }
placeholder="Введите отчество"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="formgroup">
<div className="form_field">
<label>Серия паспорта</label>
<input type="text"
id="head_person.identity_document.seria"
name="head_person.identity_document.seria"
value={ head_person.identity_document.seria }
placeholder="Введите серию"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Номер паспорта</label>
<input type="text"
id="head_person.identity_document.docnumber"
name="head_person.identity_document.docnumber"
value={ head_person.identity_document.docnumber }
placeholder="Введите номер"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<div className="formgroup">
<div className="form_field">
<label>Дата выдачи</label>
<DateInput
style={{ width: "calc(100% - 198px)" }}
placeholder="Укажите дату"
id={ "head_person.evo_assignment_date" }
onChange={ (date) => this._handle_onTextFieldChange("head_person.identity_document.issuedate", date) }
required={ true }
/>
</div>
<div className="form_field">
<label>Код подразделения</label>
<input type="text"
id="head_person.identity_document.code"
name="head_person.identity_document.code"
value={ head_person.identity_document.code }
placeholder="Введите номер"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<div className="form_field">
<label>Кем выдан</label>
<input type="text"
id="head_person.identity_document.issueby"
name="head_person.identity_document.issueby"
value={ head_person.identity_document.issueby }
placeholder="Введите наименование подразделения выдавшего документ"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Место рождения</label>
<input type="text"
id="head_person.identity_document.placebirth"
name="head_person.identity_document.placebirth"
value={ head_person.identity_document.placebirth }
placeholder="Введите данные"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Гражданство</label>
<select>
<option defaultValue={"Выберите страну"} selected disabled>Выберите страну</option>
<option>Российская Федерация</option>
</select>
</div>
<div className="form_field">
<label>Адрес регистрации</label>
<input type="text"
id="head_person.identity_document.registration_address.title"
name="head_person.identity_document.registration_address.title"
value={ head_person.identity_document.registration_address.title }
placeholder="Введите адрес"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Должность</label>
<input type="text"
id="head_person.jobtitle"
name="head_person.jobtitle"
value={ head_person.jobtitle }
placeholder="Укажите должность"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
{/*}
<div className="form_field">
<label>Кем выдан</label>
<input type="text" id="head_person." name="head_person." value={ head_person. } placeholder="Введите наименование подразделения выдавшего документ" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
</div>
*/}
<div className="form_field picker">
<label>Дата назначения</label>
<div style={{ display: "flex", flexWrap: "wrap", width: "calc(100% - 198px)" }}>
<DateInput
placeholder="Укажите дату"
id={ "head_person.evo_assignment_date" }
onChange={ (date) => this._handle_onTextFieldChange("head_person.evo_assignment_date", date) }
required={ true }
/>
<div className="form_field checkbox" style={{width: "auto", marginLeft: "28px"}}>
<input type="checkbox"
hidden=""
id="evo_indefinite"
name="evo_indefinite"
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !evo_indefinite ? true : false) }
/>
<label htmlFor="evo_indefinite" className="unselectable">Полномочия бессрочны</label>
</div>
</div>
</div>
{ !evo_indefinite && (
<div className="form_field picker">
<label>Дата окончания полномочий</label>
<div style={{ display: "flex", flexWrap: "wrap", width: "calc(100% - 198px)" }}>
<DateInput
placeholder="Укажите дату"
id={ "head_person.evo_credentials_dateend" }
onChange={ (date) => this._handle_onTextFieldChange("head_person.evo_credentials_dateend", date) }
required={ true }
/>
</div>
</div>
) }
<FilesList
name="head_person_files"
files={ head_person_files }
onAddFile={ this._handle_onAddFile }
onRemoveFile={ this._handle_onRemoveFile }
/>
{/*}
<div style={{ flexDirection: "row", display: "flex", alignItems: "flex-start", justifyContent: "flex-start", gap: "2%", }}>
{ head_person_files.map((file, index) => (
<div className="dosc_list medium-icon" style={{ border: "1px dashed rgb(28, 1, 169)", width: "32%", height: "100px", borderRadius: "4px", display: "flex", alignItems: "center", justifyContent: "center", }}>
<div className="row" style={{ alignItems: "center", justifyContent: "center", display: "flex", flexDirection: "row", flex: 1, marginBottom: "0px" }}>
<p className="doc_name i-pdf extension"> 01/20/2020 (.PDF)<span style={{width: "100%"}}>Постановление</span></p>
</div>
</div>
)) }
<div className="file_upload dropzone" style={{ width: "32%", height: "100px", marginBottom: "25px", marginTop: "0px", }}>
<div className="files"></div>
<div>
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M28.1251 31.5H7.87402C7.57565 31.5 7.28951 31.3815 7.07853 31.1705C6.86755 30.9595 6.74902 30.6734 6.74902 30.375V5.625C6.74902 5.32663 6.86755 5.04048 7.07853 4.82951C7.28951 4.61853 7.57565 4.5 7.87402 4.5H21.3751L29.2501 12.375V30.375C29.2501 30.5227 29.221 30.669 29.1645 30.8055C29.108 30.942 29.0251 31.066 28.9206 31.1705C28.8162 31.275 28.6921 31.3578 28.5556 31.4144C28.4192 31.4709 28.2729 31.5 28.1251 31.5Z" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.375 4.5V12.375H29.2511" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.625 21.375H21.375" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M18 18V24.75" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<label htmlFor="" className="blue">Прикрепить скан документов</label>
</div>
<input type="file" />
</div>
</div>
{*/}
<div className="form_field">
<div className="form_field checkbox">
<input type="checkbox"
hidden=""
id="signatory_person.not_head_person"
name="signatory_person.not_head_person"
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !not_head_person ? true : false) }
/>
<label htmlFor="signatory_person.not_head_person" className="unselectable">Полномочия единоличного исполнительного органа переданы управляющей организации или управляющему</label>
</div>
</div>
{ not_head_person && (
<React.Fragment>
<p className="title">Информация об управляющей организации или управляющем</p>
<p>Организационно-правовая форма и полное наименование управляющей организации или управляющего</p>
<div className="form_field">
<input type="text"
style={{ width: "100%" }}
id="main.individual_executive_oop"
name="main.individual_executive_oop"
value={ main.individual_executive_oop }
placeholder="Укажите управляющую организацию"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="formgroup" style={{ width: "100%" }}>
<div className="form_field" style={{ flexDirection: "row", flexWrap: "nowrap" }}>
<label>ИНН</label>
<input type="text"
style={{ width: "100%" }}
id="main.individual_executive_inn"
name="main.individual_executive_inn"
value={ main.individual_executive_inn }
placeholder="Введите ИНН"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field" style={{ flexDirection: "row", flexWrap: "nowrap" }}>
<label>КПП</label>
<input type="text"
style={{ width: "100%" }}
id="main.individual_executive_kpp"
name="main.individual_executive_kpp"
value={ main.individual_executive_kpp }
placeholder="Введите КПП"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<div className="formgroup" style={{ width: "100%", }}>
<div className="form_field">
<label style={{ width: "100%", marginBottom: "12px" }}>Номер договора о передаче полномочий управляющей организации /управляющему</label>
<input type="text"
style={{ width: "100%" }}
id="main.individual_executive_docnum"
name="main.individual_executive_docnum"
value={ main.individual_executive_docnum }
placeholder="Номер договора"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
/>
</div>
<div className="form_field" style={{ alignItems: "flex-end" }}>
<label style={{ width: "100%", alignSelf: "flex-start" }}>Дата договора</label>
{/*}
<input type="text"
style={{ width: "100%", }}
id="main.individual_executive_docdate"
name="main.individual_executive_docdate"
value={ main.individual_executive_docdate }
placeholder="Дата"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
{*/}
<DateInput
style={{ width: "100%", }}
placeholder="Укажите дату договора"
id={ "main.individual_executive_docdate" }
onChange={ (date) => this._handle_onTextFieldChange("main.individual_executive_docdate", date) }
required={ true }
/>
</div>
</div>
<FilesList
name="individual_executive_files"
files={ individual_executive_files }
onAddFile={ this._handle_onAddFile }
onRemoveFile={ this._handle_onRemoveFile }
/>
</React.Fragment>
) }
<div className="form_field">
<div className="form_field checkbox">
<input type="checkbox"
hidden=""
id="signatory_person.delegation_agreement"
name="signatory_person.delegation_agreement"
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !delegation_agreement ? true : false) }
/>
<label htmlFor="signatory_person.delegation_agreement" className="unselectable">Подписант отличается от единоличного исполнительного органа</label>
</div>
</div>
{ delegation_agreement && (
<React.Fragment>
<p className="title">Информация о подписанте <small>(заполняется если подписант договора лизинга отличается от единоличного исполнительного органа)</small></p>
<div className="form_field">
<label>Фамилия</label>
<input type="text" name="address" value={ address } placeholder="Введите фамилию" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.lastname"
name="signatory_person.lastname"
value={ signatory_person.lastname }
placeholder="Введите фамилию"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Имя</label>
<input type="text" name="address" value={ address } placeholder="Введите имя" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.firstname"
name="signatory_person.firstname"
value={ signatory_person.firstname }
placeholder="Введите имя"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Отчество <small>если имеется</small></label>
<input type="text" name="address" value={ address } placeholder="Введите отчество" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.middlename"
name="signatory_person.middlename"
value={ signatory_person.middlename }
placeholder="Введите отчество"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="formgroup">
<div className="form_field">
<label>Серия паспорта</label>
<input type="text" name="address" value={ address } placeholder="Введите серию" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.seria"
name="signatory_person.identity_document.seria"
value={ signatory_person.identity_document.seria }
placeholder="Введите серию"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Номер паспорта</label>
<input type="text" name="address" value={ address } placeholder="Введите номер" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.docnumber"
name="signatory_person.identity_document.docnumber"
value={ signatory_person.identity_document.docnumber }
placeholder="Введите номер"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<div className="formgroup">
<div className="form_field">
<label>Дата выдачи</label>
<input type="text" name="address" value={ address } placeholder="Введите дату" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.issuedate"
name="signatory_person.identity_document.issuedate"
value={ signatory_person.identity_document.issuedate }
placeholder="Введите дату"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Код подразделения</label>
<input type="text" name="address" value={ address } placeholder="Введите номер" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.icode"
name="signatory_person.identity_document.icode"
value={ signatory_person.identity_document.icode }
placeholder="Введите номер"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<div className="form_field">
<label>Кем выдан</label>
<input type="text" name="address" value={ address } placeholder="Введите наименование подразделения выдавшего документ" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.issueby"
name="signatory_person.identity_document.issueby"
value={ signatory_person.identity_document.issueby }
placeholder="Введите наименование подразделения выдавшего документ"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Место рождения</label>
<input type="text" name="address" value={ address } placeholder="Введите данные" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.placebirth"
name="signatory_person.identity_document.placebirth"
value={ signatory_person.identity_document.placebirth }
placeholder="Введите данные"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
@ -128,62 +626,134 @@ export default class Form_3_Signer extends React.Component
<div className="form_field">
<label>Адрес регистрации</label>
<input type="text" name="address" value={ address } placeholder="Введите адрес" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.registration_address.title"
name="signatory_person.identity_document.registration_address.title"
value={ signatory_person.identity_document.registration_address.title }
placeholder="Введите адрес"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Должность</label>
<input type="text" name="address" value={ address } placeholder="Укажите должность" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text"
id="signatory_person.identity_document.jobtitle"
name="signatory_person.identity_document.jobtitle"
value={ signatory_person.jobtitle }
placeholder="Укажите должность"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<p><b>Реквизиты документа подтверждающие полномочия на подписание договора лизинга</b></p>
<div className="form_field">
<label>Наименование документа</label>
<input type="text"
id="signatory_person.signer_rule_basis"
name="signatory_person.signer_rule_basis"
value={ signatory_person.signer_rule_basis }
placeholder="Вид документа"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>Кем выдан</label>
<input type="text" name="address" value={ address } placeholder="Введите наименование подразделения выдавшего документ" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<label>Наименование документа</label>
<input type="text"
id="signatory_person.signer_rule_basis_add"
name="signatory_person.signer_rule_basis_add"
value={ signatory_person.signer_rule_basis_add }
placeholder="Наименование документа"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field picker">
<label>Дата назначения</label>
<div style={{ display: "flex", flexWrap: "wrap", width: "calc(100% - 198px)" }}>
<DateInput placeholder="Дата договора от" id={ "date_to" } onChange={ (date) => this.setState({ date_to: date }) }/>
<div className="form_field checkbox" style={{width: "auto", marginLeft: "28px"}}>
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">Полномочия бессрочны</label>
</div>
</div>
</div>
<div className="file_upload dropzone" style={{width: "286px", height: "103px", marginBottom: "25px"}}>
<div className="files"></div>
<div>
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M28.1251 31.5H7.87402C7.57565 31.5 7.28951 31.3815 7.07853 31.1705C6.86755 30.9595 6.74902 30.6734 6.74902 30.375V5.625C6.74902 5.32663 6.86755 5.04048 7.07853 4.82951C7.28951 4.61853 7.57565 4.5 7.87402 4.5H21.3751L29.2501 12.375V30.375C29.2501 30.5227 29.221 30.669 29.1645 30.8055C29.108 30.942 29.0251 31.066 28.9206 31.1705C28.8162 31.275 28.6921 31.3578 28.5556 31.4144C28.4192 31.4709 28.2729 31.5 28.1251 31.5Z" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.375 4.5V12.375H29.2511" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.625 21.375H21.375" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M18 18V24.75" stroke="#1C01A9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<label htmlFor="" className="blue">Прикрепить скан документов</label>
</div>
<input type="file" />
<div className="formgroup">
<div className="form_field">
<label>Номер документы</label>
<input type="text"
id="signatory_person.docnumber"
name="signatory_person.docnumber"
value={ signatory_person.docnumber }
placeholder="Номер документы"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">Полномочия единоличного исполнительного органа переданы управляющей организации или управляющему</label>
</div>
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">Подписант отличается от единоличного исполнительного органа</label>
</div>
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">Даю согласие на&nbsp;<a>обработку персональных данных</a></label>
<label>Дата</label>
<input type="text"
id="signatory_person.docdate"
name="signatory_person.docdate"
value={ signatory_person.docdate }
placeholder="Дата"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<div className="formgroup">
<div className="form_field">
<label>Телефон</label>
<input type="text"
id="signatory_person.telephone"
name="signatory_person.telephone"
value={ signatory_person.telephone }
placeholder="Телефон"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
<div className="form_field">
<label>E-mail</label>
<input type="text"
id="signatory_person.email"
name="signatory_person.email"
value={ signatory_person.email }
placeholder="E-mail"
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
required={ true }
/>
</div>
</div>
<FilesList
name="signatory_person_files"
files={ signatory_person_files }
onAddFile={ this._handle_onAddFile }
onRemoveFile={ this._handle_onRemoveFile }
/>
{/*}
<div className="dosc_list medium-icon">
<div className="row">
<p className="doc_name i-pdf extension"> 01/20/2020 (.PDF)<span style={{width: "100%"}}>Постановление</span></p>
</div>
</div>
{*/}
</React.Fragment>
) }
<div className="form_field">
<div className="form_field checkbox">
<input type="checkbox"
hidden=""
id="personal_data_consent"
name="personal_data_consent"
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !personal_data_consent ? true : false) }
/>
<label htmlFor="personal_data_consent" className="unselectable">Даю согласие на&nbsp;<a style={{ cursor: "pointer", }} onClick={ () => { this.setState({ modal_show_personal_data: true, }) } }>обработку персональных данных</a></label>
</div>
</div>
<div className="action">
<button type="submit" className="button button-blue" disabled={ false }>
{ phone_check_loading ? (
@ -192,6 +762,16 @@ export default class Form_3_Signer extends React.Component
</button>
</div>
</form>
<Modal
open={ modal_show_personal_data }
close={ () => { this.setState({ modal_show_personal_data: false, }) } }
>
<p>Настоящим даю ООО «ЛК Эволюция» (ОГРН 1207700245037) (115201, г. Москва, ул. Котляковская, дом 8, эт., пом. 3, 337) для целей определения возможности заключения договора финансовой аренды (лизинга)/ договора поручительства, проведения проверки кредитной истории, заключения, изменения и исполнения договора финансовой аренды (лизинга)/ договора поручительства, в том числе в случае неисполнения и/или ненадлежащего исполнения указанного договора, осуществления рассылки рекламно-информационного характера и осуществления прямых контактов с помощью любых средств связи (телефонной и подвижной связи, смс-оповещения, почтового письма, телеграммы, голосового сообщения, сообщения по электронной почте и др.), при этом право выбора организаций, осуществляющих рассылку, предоставляю ООО «ЛК Эволюция» (ОГРН 1207700245037) без дополнительного согласования со мной, а также для обеспечения соблюдения законов и иных
нормативно-правовых актов, согласие на обработку, предполагающую сбор (непосредственно от заявителя, от третьих лиц, путем направления запросов в органы государственной власти, органы местного самоуправления, юридическим и физическим лицам, из иных общедоступных информационных ресурсов, из архивов), запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), проверку, извлечение, использование, передачу (распространение, предоставление, доступ), полностью или частично третьим лицам, действующим на основании договоров, заключенных ими с ООО «ЛК Эволюция» (ОГРН 1207700245037), обезличивание, блокирование, удаление и уничтожение, следующих моих персональных данных: фамилия, имя, отчество, дата и место рождения, пол, гражданство, серия и номер основного документа (включая его копию), удостоверяющего личность, сведения о дате выдачи указанного документа и выдавшем его органе, ИНН, страховой номер индивидуального лицевого счета, указанный в страховом свидетельстве обязательного пенсионного страхования, адрес регистрации и фактического проживания, контактная информация (домашний, рабочий, мобильный телефоны, электронные адреса), место работы и должность, сведения о доходах, сведения о семейном положении, сведения о супруге, сведения об имущественном положении, сведения,
содержащиеся в титульной и основной части кредитной истории. Обработка персональных данных осуществляется как с использованием средств автоматизации, в том числе в информационно телекоммуникационных сетях, так и без использования таких средств. ООО «ЛК Эволюция» (ОГРН 1207700245037) в соответствии с настоящим согласием и для достижения указанных выше целей, вправе поручить обработку персональных данных третьим лицам, а так же, в случае привлечения третьих лиц к оказанию услуг и/или в случае передачи ООО «ЛК Эволюция» (ОГРН 1207700245037) принадлежащих ему прав требования третьему лицу, вправе в необходимом объеме раскрывать/передавать информацию таким третьим лицам, их агентам и иным уполномоченным им лицам, а также предоставлять таким лицам соответствующие документы, содержащие такую информацию. Согласие на обработку персональных данных вступает в силу со дня подписания настоящей
анкеты, действует в течение 10 (десяти) лет или до момента надлежащего отзыва согласия. Согласие может быть отозвано в любое время посредством направления соответствующего письменного заявления в адрес ООО «ЛК Эволюция» (ОГРН 1207700245037). В случае отзыва настоящего согласия ООО «ЛК Эволюция» (ОГРН 1207700245037) вправе продолжить обработку персональных данных в случаях и в порядке, предусмотренных законодательством РФ. В случае любых изменений персональных данных, указанных в настоящем согласии, обязуюсь сообщить о таких изменениях ООО «ЛК Эволюция» (ОГРН 1207700245037) в течение 7 (семи) дней. Настоящим даю ООО «ЛК Эволюция» (ОГРН 1207700245037) согласие на получение кредитного отчета в целях заключения договора лизинга
и иных договоров, связанных с исполнением договора лизинга, в том числе на раскрытие информации, содержащейся в основной части кредитной истории, в отношении вышеуказанного лизингополучателя, а также в отношении меня (оригинал документа, удостоверяющего мою личность, предоставлен ООО «ЛК Эволюция» (ОГРН 1207700245037)). Данное согласие на получение кредитного отчета действует в течение 6 (шести) месяцев с даты подписания мной настоящей анкеты.</p>
</Modal>
</React.Fragment>
)
}

View File

@ -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
<div className="form_field">
<div style={{ width: "100%" }}>
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">От приносящей доход деятельности</label>
<input type="checkbox" hidden="" id="fin_source_business" name="fin_source_business" checked={ fin_source_business } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !fin_source_business ? true : false) }/>
<label htmlFor="fin_source_business">От приносящей доход деятельности</label>
</div>
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">Добровольные пожертвования</label>
<input type="checkbox" hidden="" id="fin_source_donate" name="fin_source_donate" checked={ fin_source_donate } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !fin_source_donate ? true : false) }/>
<label htmlFor="fin_source_donate">Добровольные пожертвования</label>
</div>
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="">Вступительные членские взносы</label>
<input type="checkbox" hidden="" id="fin_source_fees" name="fin_source_fees" checked={ fin_source_fees } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !fin_source_fees ? true : false ) }/>
<label htmlFor="fin_source_fees">Вступительные членские взносы</label>
</div>
<div className="form_field checkbox">
<input type="checkbox" hidden="" id="" name="" />
<label htmlFor="" style={{ width: "100%" }}>
<input type="checkbox" hidden="" id="fin_source_another" name="fin_source_another" checked={ fin_source_another } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !fin_source_another ? true : false ) }/>
<label htmlFor="fin_source_another" style={{ width: "100%" }}>
<span>Иное</span>
<input type="text" name="address" value={ address } placeholder="Введите адрес электронной почты" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="fin_source_another_description" value={ fin_source_another_description } disabled={ fin_source_another ? false : true } placeholder="Введите адрес электронной почты" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
</label>
</div>
</div>
@ -98,32 +110,31 @@ export default class Form_6_NonProfit extends React.Component
<div className="form_field">
<div style={{ width: "100%" }}>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" checked/>
<label htmlFor="">Нет</label>
<input type="radio" value="0" hidden="" id="foreign_payers_0" name="foreign_payers" checked={ foreign_payers === false ? true : false } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, false) }/>
<label htmlFor="foreign_payers_0">Нет</label>
</div>
<div className="form_field checkbox">
<input type="radio" hidden="" id="" name="" />
<label htmlFor="">Да</label>
<input type="radio" value="1" hidden="" id="foreign_payers_1" name="foreign_payers" checked={ foreign_payers === false ? false : true } onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, true) }/>
<label htmlFor="foreign_payers_1">Да</label>
</div>
</div>
</div>
<p>Укажите цели использования предмета лизинга и подтвердите их соответствие уставным целям
для каждого предмета лизинга отдельно</p>
<p>Укажите цели использования предмета лизинга и подтвердите их соответствие уставным целям для каждого предмета лизинга отдельно</p>
<div className="form_field">
<label>Легковые автомобили</label>
<input type="text" name="address" value={ address } placeholder="Введите данные" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="fin_goals_cars" value={ fin_goals_cars } placeholder="Введите данные" onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
<div className="form_field">
<label>Легкий коммерческий транспорт</label>
<input type="text" name="address" value={ address } placeholder="Введите данные" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="fin_goals_trucks" value={ fin_goals_trucks } placeholder="Введите данные" onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
<div className="form_field">
<label>Грузовые автомобили/ спецтехника</label>
<input type="text" name="address" value={ address } placeholder="Введите данные" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
<input type="text" name="fin_goals_special" value={ fin_goals_special } placeholder="Введите данные" onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, event.target.value) } required={ true }/>
</div>
<div className="action">

View File

@ -135,7 +135,6 @@ export default class Form_7_Check extends React.Component
<p>Прошу оригиналы счетов-фактур и актов отказанных услуг по заключенному договору лизинга направлять:</p>
<div className="form_field">
<div style={{ width: "100%" }}>
<div className="form_field checkbox">
@ -288,9 +287,6 @@ export default class Form_7_Check extends React.Component
</div>
</div>
<p className="title">3.2. Информация о подписанте <small>(заполняется если подписант договора лизинга отличается от единоличного исполнительного органа)</small></p>
<div className="form_field">

View File

@ -8,8 +8,10 @@ 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) {
export default class Form_8_Signing extends React.Component
{
constructor(props)
{
super(props);
this.state = {
address: "",
@ -18,7 +20,8 @@ export default class Form_8_Signing extends React.Component {
};
}
static getDerivedStateFromProps(nextProps, prevState) {
static getDerivedStateFromProps(nextProps, prevState)
{
return {
observer: nextProps.observer,
user: nextProps.user,
@ -27,18 +30,23 @@ export default class Form_8_Signing extends React.Component {
componentDidMount() {}
_handle_onFormSubmit = (event) => {
_handle_onFormSubmit = (event) =>
{
event.preventDefault();
console.log("FormAddress", "_handle_onFormSubmit");
};
_handle_onAddressChange = (value) => {
_handle_onAddressChange = (value) =>
{
this.setState({ address: value }, () => {});
};
_check_fields_disabled = (values) => {
for (let i in values) {
if (values[i] === "") {
_check_fields_disabled = (values) =>
{
for (let i in values)
{
if (values[i] === "")
{
return true;
}
}
@ -46,9 +54,9 @@ export default class Form_8_Signing extends React.Component {
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 (
<React.Fragment>
@ -58,7 +66,6 @@ export default class Form_8_Signing extends React.Component {
>
<p className="title">8. Выбор метода подписания</p>
<div className="form_field">
<div style={{ width: "100%" }}>
<div className="form_field checkbox">
@ -123,7 +130,6 @@ export default class Form_8_Signing extends React.Component {
</div>
</div>
<div className="form_field">
<div style={{ width: "100%" }}>
<div className="form_field checkbox">

View File

@ -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;
}
*/

View File

@ -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));

View File

@ -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;

View File

@ -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
};

View File

@ -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"