4 pages semi-ready
This commit is contained in:
parent
8724af3a7e
commit
81d5cf6569
@ -11,4 +11,5 @@ export * from './announcementsActions';
|
||||
export * from './eventsActions';
|
||||
export * from './supportActions';
|
||||
export * from './adminActions';
|
||||
export * from './suggestsActions';
|
||||
export * from './suggestsActions';
|
||||
export * from './questionnaireActions';
|
||||
61
actions/questionnaireActions.js
Normal file
61
actions/questionnaireActions.js
Normal file
@ -0,0 +1,61 @@
|
||||
import axios from 'axios';
|
||||
import { Cookies } from 'react-cookie';
|
||||
import Router from 'next/router';
|
||||
import moment from 'moment';
|
||||
import { nSQL } from "@nano-sql/core";
|
||||
|
||||
import * as actionTypes from '../constants/actionTypes';
|
||||
|
||||
if(process.browser)
|
||||
{
|
||||
FormData.prototype.appendObject = function(obj, namespace)
|
||||
{
|
||||
let keyName;
|
||||
for (var key in obj)
|
||||
{
|
||||
if (obj.hasOwnProperty(key))
|
||||
{
|
||||
keyName = [namespace, '[', key, ']'].join('');
|
||||
this.append(keyName, obj[key]);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export const getQuestionnaire = ({ dispatch }) =>
|
||||
{
|
||||
console.log("ACTION", "support", "getAppeals()", `${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/get`);
|
||||
|
||||
return new Promise((resolve, reject) =>
|
||||
{
|
||||
axios.get(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/get`)
|
||||
.then((response) =>
|
||||
{
|
||||
console.log("ACTION", "support", "getAppeals()", "response", response.data);
|
||||
|
||||
//dispatch({ type: actionTypes.SUPPORT_APPEALS, data: { appeals: { list: response.data.appeals, new: response.data.new, } } });
|
||||
resolve();
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.log("error");
|
||||
console.error(error);
|
||||
|
||||
reject();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export const updateQuestionnaire = ({ dispatch, questionnaire }) =>
|
||||
{
|
||||
console.log("ACTION", "questionnaireActions", "updateQuestionnaire()", { questionnaire });
|
||||
|
||||
return new Promise((resolve, reject) =>
|
||||
{
|
||||
dispatch({ type: actionTypes.QUESTIONNAIRE_UPDATE, data: { questionnaire, } });
|
||||
setTimeout(() => {
|
||||
console.log("UPDATE UPDATE UPDATE", global.store.getState(), { dispatch: dispatch });
|
||||
resolve();
|
||||
}, 500);
|
||||
});
|
||||
}
|
||||
@ -20,16 +20,16 @@ if(process.browser)
|
||||
};
|
||||
}
|
||||
|
||||
export const getAddress = (text) =>
|
||||
export const getAddress = (query) =>
|
||||
{
|
||||
return new Promise((resolve, reject) =>
|
||||
{
|
||||
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/suggests/address`, { text }, {
|
||||
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/suggests/address`, { query }, {
|
||||
withCredentials: true,
|
||||
})
|
||||
.then((response) =>
|
||||
{
|
||||
resolve("");
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
|
||||
@ -40,4 +40,7 @@ export const SUPPORT_THEMES = 'SUPPORT_THEMES';
|
||||
export const SUPPORT_THEMES_FILTERED = 'SUPPORT_THEMES_FILTERED';
|
||||
export const SUPPORT_APPEALS = 'SUPPORT_APPEALS';
|
||||
export const SUPPORT_APPEAL = 'SUPPORT_APPEAL';
|
||||
export const SUPPORT_RESET = 'SUPPORT_RESET';
|
||||
export const SUPPORT_RESET = 'SUPPORT_RESET';
|
||||
|
||||
export const QUESTIONNAIRE_UPDATE = 'QUESTIONNAIRE_UPDATE';
|
||||
export const QUESTIONNAIRE_RESET = 'QUESTIONNAIRE_RESET';
|
||||
1563
css/forms/style.css
1563
css/forms/style.css
File diff suppressed because one or more lines are too long
@ -1457,7 +1457,7 @@
|
||||
width: ~"calc(100% - 198px)";
|
||||
|
||||
&[value=""] {
|
||||
background-color: #EDEFF5;
|
||||
//background-color: #EDEFF5;
|
||||
}
|
||||
|
||||
@media all and (max-width: 1024px) {
|
||||
@ -1536,7 +1536,7 @@
|
||||
background: #fff;
|
||||
|
||||
&:not(.react-select__value-container--has-value) {
|
||||
background-color: #EDEFF5;
|
||||
//background-color: #EDEFF5;
|
||||
}
|
||||
|
||||
.react-select__input-container {
|
||||
|
||||
570
css/var.css
570
css/var.css
File diff suppressed because one or more lines are too long
@ -39,8 +39,9 @@
|
||||
"react-dom": "17.0.2",
|
||||
"react-dropzone": "^14.2.2",
|
||||
"react-google-recaptcha-v3": "^1.10.0",
|
||||
"react-no-ssr": "^1.1.0",
|
||||
"react-redux": "^7.2.6",
|
||||
"react-select": "^5.7.1",
|
||||
"react-select": "^5.7.2",
|
||||
"react-slick": "^0.29.0",
|
||||
"react-widgets": "^5.5.1",
|
||||
"redux": "^4.1.2",
|
||||
|
||||
66
pages/api/questionnaire/get.js
Normal file
66
pages/api/questionnaire/get.js
Normal file
@ -0,0 +1,66 @@
|
||||
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
||||
import axios from 'axios';
|
||||
import { Cookies } from 'react-cookie';
|
||||
import cookie from 'cookie';
|
||||
import moment from 'moment';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { cors } from '../../../lib/cors';
|
||||
import { inspect } from 'util';
|
||||
|
||||
export default async function handler(req, res)
|
||||
{
|
||||
console.log("API", "questionnaire", "get");
|
||||
console.log(req.body);
|
||||
console.log("-".repeat(50));
|
||||
await cors(req, res);
|
||||
|
||||
if(req.headers.cookie !== undefined)
|
||||
{
|
||||
const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : "");
|
||||
|
||||
if(cookies.jwt !== undefined && cookies.jwt !== null)
|
||||
{
|
||||
console.log("cookies.jwt");
|
||||
console.log(cookies.jwt);
|
||||
|
||||
var client_jwt_decoded = jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT);
|
||||
var crm_jwt = jwt.sign({ acc_number: client_jwt_decoded.acc_number }, process.env.JWT_SECRET_CRM, { noTimestamp: true });
|
||||
|
||||
const path = `${ process.env.CRM_API_HOST }/lk/Questionnaire/InfoQuestionnaire/`;
|
||||
|
||||
try
|
||||
{
|
||||
await axios.get(path, {
|
||||
params: { name: 1 },
|
||||
headers: {
|
||||
"Authorization": `Bearer ${ crm_jwt }`,
|
||||
}
|
||||
})
|
||||
.then((crm_response) =>
|
||||
{
|
||||
console.log("crm_response for", path);
|
||||
console.log(inspect(crm_response.data, true, null, true));
|
||||
|
||||
res.status(200).json(crm_response.data);
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.error(error);
|
||||
console.error("-".repeat(30), "error.response.data:");
|
||||
console.error(error.response.data);
|
||||
|
||||
res.status(500).json(error.response.data);
|
||||
});
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
console.error(e);
|
||||
res.status(500).send(e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
res.status(403);
|
||||
}
|
||||
}
|
||||
}
|
||||
0
pages/api/questionnaire/put.js
Normal file
0
pages/api/questionnaire/put.js
Normal file
@ -1,4 +1,5 @@
|
||||
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
||||
import https from 'https';
|
||||
import axios from 'axios';
|
||||
import { Cookies } from 'react-cookie';
|
||||
import cookie from 'cookie';
|
||||
@ -6,6 +7,8 @@ import moment from 'moment';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { cors } from '../../../lib/cors';
|
||||
|
||||
const keepAliveAgent = new https.Agent({ keepAlive: true });
|
||||
|
||||
export default async function handler(req, res)
|
||||
{
|
||||
await cors(req, res);
|
||||
@ -20,15 +23,30 @@ export default async function handler(req, res)
|
||||
{
|
||||
try
|
||||
{
|
||||
/*
|
||||
dadata('address', ['мск сухонска 11/-89'], function (dadata_error, dadata_response)
|
||||
{
|
||||
console.log(dadata_error);
|
||||
console.log(dadata_response);
|
||||
const { query, } = req.body;
|
||||
|
||||
res.status(200).send();
|
||||
axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address`, { query }, {
|
||||
httpAgent: keepAliveAgent,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Token ${ process.env.DADATA_API_KEY }`,
|
||||
"X-Secret": process.env.DADATA_SECRET_KEY
|
||||
},
|
||||
})
|
||||
.then((api_response) =>
|
||||
{
|
||||
//console.log("RESPONSE");
|
||||
//console.log(api_response.data);
|
||||
|
||||
res.status(200).send(api_response.data);
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.log("error");
|
||||
console.error(error);
|
||||
|
||||
res.status(500);
|
||||
});
|
||||
*/
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
|
||||
@ -21,7 +21,7 @@ export default class DateInput extends React.Component
|
||||
super(props);
|
||||
this.state = {
|
||||
readonly: true,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
_handle_onChange = (date) =>
|
||||
@ -56,18 +56,17 @@ export default class DateInput extends React.Component
|
||||
) : (
|
||||
<>
|
||||
<DatePicker
|
||||
//valueEditFormat={{ dateStyle: "short" }}
|
||||
messages={ messages }
|
||||
onFocus={ this._handle_onFocus }
|
||||
onBlur={ this._handle_onBlur }
|
||||
parse={ formats } id={ id }
|
||||
parse={ formats }
|
||||
id={ id }
|
||||
placeholder={ placeholder }
|
||||
value={ value }
|
||||
min={ min }
|
||||
max={ max }
|
||||
onChange={ this._handle_onChange }
|
||||
inputProps={{
|
||||
component: props => <input {...props} readOnly />
|
||||
}}
|
||||
/>
|
||||
<div style={{ position: "absolute", left: 0, top: 0, width: "100%", height: "100%", opacity: 0.0 }} onClick={ (event) => { event.stopPropagation(); event.preventDefault(); } }/>
|
||||
</>
|
||||
@ -80,18 +79,17 @@ export default class DateInput extends React.Component
|
||||
return (
|
||||
<div className="date_input_wrapper" style={ this.props.style }>
|
||||
<DatePicker
|
||||
//valueEditFormat={{ dateStyle: "short" }}
|
||||
messages={ messages }
|
||||
onFocus={ this._handle_onFocus }
|
||||
onBlur={ this._handle_onBlur }
|
||||
parse={ formats } id={ id }
|
||||
parse={ str => { return moment(str, 'DD.MM.YYYY').toDate(); } }
|
||||
id={ id }
|
||||
placeholder={ placeholder }
|
||||
value={ value }
|
||||
min={ min }
|
||||
max={ max }
|
||||
onChange={ this._handle_onChange }
|
||||
inputProps={{
|
||||
component: props => <input {...props} readOnly />
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
|
||||
@ -2,6 +2,7 @@ import React from "react";
|
||||
import Link from "next/link";
|
||||
import { connect } from "react-redux";
|
||||
import { getContractEvents, getContractFines, getContractInfo, } from "../../../../actions";
|
||||
import NoSSR from 'react-no-ssr';
|
||||
|
||||
class InnerMenu extends React.Component
|
||||
{
|
||||
@ -56,53 +57,58 @@ class InnerMenu extends React.Component
|
||||
const { menuOpened, } = this.state;
|
||||
const { questionnaire } = this.props;
|
||||
|
||||
console.log("this.props.router.asPath", this.props.router.asPath);
|
||||
|
||||
return (
|
||||
<aside>
|
||||
<button className="nav_toggle" onClick={ this._handle_onToggleMenu }>
|
||||
{ this.props.router && this._getActiveLink(this.props.router.asPath) }
|
||||
</button>
|
||||
<ul className={ menuOpened ? "aside_nav open" : "aside_nav" } ref={ this.menuRef }>
|
||||
<li>
|
||||
<Link href={`/questionnaire/#main`} shallow>
|
||||
<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, }} 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, }} 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, }} 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, }} 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, }} 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}} 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}} disabled={ questionnaire.step > 8 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#signing") > -1 ? "active" : "" }>8. Выбор метода подписания</a>
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
<NoSSR>
|
||||
<button className="nav_toggle" onClick={ this._handle_onToggleMenu }>
|
||||
{ this.props.router && this._getActiveLink(this.props.router.asPath) }
|
||||
</button>
|
||||
<ul className={ menuOpened ? "aside_nav open" : "aside_nav" } ref={ this.menuRef }>
|
||||
<li>[ { this.props.router.asPath }]</li>
|
||||
<li>
|
||||
<Link href={`/questionnaire/#main`} shallow>
|
||||
<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, }} 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, }} 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, }} 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, }} 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, }} 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}} 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}} disabled={ questionnaire.step > 8 ? false : true } className={ this.props.router && this.props.router.asPath.indexOf("#signing") > -1 ? "active" : "" }>8. Выбор метода подписания</a>
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</NoSSR>
|
||||
</aside>
|
||||
)
|
||||
}
|
||||
|
||||
215
pages/questionnaire/components/forms/AddressSuggestsSelect.js
Normal file
215
pages/questionnaire/components/forms/AddressSuggestsSelect.js
Normal file
@ -0,0 +1,215 @@
|
||||
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';
|
||||
import AsyncSelect from 'react-select/async';
|
||||
|
||||
const suggestsAddressDebounce = (text) =>
|
||||
{
|
||||
return getAddress(text);
|
||||
}
|
||||
|
||||
const suggestsAddress = debounce(suggestsAddressDebounce, 200);
|
||||
|
||||
export default class AddressSuggestsSelect extends React.Component
|
||||
{
|
||||
constructor(props)
|
||||
{
|
||||
super(props);
|
||||
this.state = {
|
||||
options: [],
|
||||
fias: [],
|
||||
value: "",
|
||||
value_selected: "",
|
||||
custom: false,
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount()
|
||||
{
|
||||
//console.log("AddressSuggestsSelect", this.props);
|
||||
this.setState({ value: this.props.value, custom: this.props.value !== "" ? true : false });
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps, prevState)
|
||||
{
|
||||
if(prevProps.value !== this.props.value)
|
||||
{
|
||||
//console.log("WTF");
|
||||
this.setState({ value: this.props.value });
|
||||
}
|
||||
}
|
||||
|
||||
_handle_onChange = (data) =>
|
||||
{
|
||||
//console.log("_handle_onChange");
|
||||
const { fias } = this.state;
|
||||
this.setState({ value_selected: data.value, value: data.value, custom: false, }, () =>
|
||||
{
|
||||
this.props.onChange({ title: data.value, fias_id: fias[data.value] });
|
||||
});
|
||||
}
|
||||
|
||||
_handle_onBlur = (data, action) =>
|
||||
{
|
||||
const { value, value_selected } = this.state;
|
||||
//console.log("_handle_onBlur", { value, value_selected }, { action });
|
||||
|
||||
//if(value_selected !== "")
|
||||
//{
|
||||
// this.setState({ value_selected: "" });
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
//console.log("this", value);
|
||||
this.props.onChange({ title: value, fias_id: "" });
|
||||
//}
|
||||
}
|
||||
|
||||
_handle_onInputChange = (value, action) =>
|
||||
{
|
||||
//console.log("_handle_onInputChange", { value }, action);
|
||||
if (action.action !== "input-blur" && action.action !== "menu-close")
|
||||
{
|
||||
this.setState({ value });
|
||||
}
|
||||
else
|
||||
{
|
||||
if(action.action === "input-blur" && action.prevInputValue !== "" && value === "")
|
||||
{
|
||||
this.setState({ value: action.prevInputValue, custom: true, });
|
||||
}
|
||||
else
|
||||
{
|
||||
if(value === "" && action.prevInputValue === "")
|
||||
{
|
||||
this.setState({ value, value_selected: "", custom: false, });
|
||||
}
|
||||
}
|
||||
}
|
||||
//this.setState({ value });
|
||||
}
|
||||
|
||||
_getAddress = (text) =>
|
||||
{
|
||||
return new Promise((resolve, reject) =>
|
||||
{
|
||||
if(text === "")
|
||||
{
|
||||
this.setState({ options: [], fias: {}, value: "" }, () =>
|
||||
{
|
||||
resolve([]);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
suggestsAddress(text)
|
||||
.then((result) =>
|
||||
{
|
||||
const options = [];
|
||||
const fias = {};
|
||||
|
||||
for(let i in result.suggestions)
|
||||
{
|
||||
const s = result.suggestions[i];
|
||||
options.push({ value: s.value, label: s.value });
|
||||
fias[s.value] = s.data.fias_id;
|
||||
}
|
||||
|
||||
this.setState({ options, fias }, () =>
|
||||
{
|
||||
resolve(options);
|
||||
});
|
||||
})
|
||||
.catch(() =>
|
||||
{
|
||||
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
render()
|
||||
{
|
||||
const { value, value_selected, custom, disabled } = this.state;
|
||||
//console.log(">>>>>>>>>>|", value, "|", value_selected);
|
||||
|
||||
if(custom)
|
||||
{
|
||||
//console.log("CUSTOM");
|
||||
return (
|
||||
<AsyncSelect
|
||||
inputValue={ value }
|
||||
placeholder="Укажите адрес"
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions={ true }
|
||||
defaultOptions={ this.state.options }
|
||||
noOptionsMessage={ () => null }
|
||||
loadingMessage={ () => null }
|
||||
loadOptions={ (text) => this._getAddress(text) }
|
||||
onChange={ this._handle_onChange }
|
||||
//onBlur={ this._handle_onBlur }
|
||||
onInputChange={ this._handle_onInputChange }
|
||||
isDisabled={ disabled ? true : false }
|
||||
/>
|
||||
)
|
||||
}
|
||||
else
|
||||
{
|
||||
//console.log("SEARCH", value);
|
||||
return (
|
||||
<AsyncSelect
|
||||
//value={ value }
|
||||
defaultInputValue={ value }
|
||||
placeholder="Укажите адрес"
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions={ true }
|
||||
defaultOptions={ this.state.options }
|
||||
noOptionsMessage={ () => null }
|
||||
loadingMessage={ () => null }
|
||||
loadOptions={ (text) => this._getAddress(text) }
|
||||
onChange={ this._handle_onChange }
|
||||
//onBlur={ this._handle_onBlur }
|
||||
onInputChange={ this._handle_onInputChange }
|
||||
isDisabled={ disabled ? true : false }
|
||||
/>
|
||||
)
|
||||
}
|
||||
/*
|
||||
if(value_selected !== "")
|
||||
{
|
||||
console.log("22222222222222222");
|
||||
return (
|
||||
<AsyncSelect
|
||||
//defaultInputValue={ value }
|
||||
placeholder="Укажите адрес"
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions={ true }
|
||||
defaultOptions={ this.state.options }
|
||||
noOptionsMessage={ () => null }
|
||||
loadingMessage={ () => null }
|
||||
loadOptions={ (text) => this._getAddress(text) }
|
||||
onChange={ this._handle_onChange }
|
||||
//onBlur={ this._handle_onBlur }
|
||||
onInputChange={ this._handle_onInputChange }
|
||||
/>
|
||||
)
|
||||
}
|
||||
else
|
||||
{
|
||||
*/
|
||||
|
||||
//}
|
||||
}
|
||||
}
|
||||
@ -75,10 +75,10 @@ export default class FilesList extends React.Component
|
||||
<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"/>
|
||||
<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" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M21.375 4.5V12.375H29.2511" stroke="#1C01A9" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M14.625 21.375H21.375" stroke="#1C01A9" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M18 18V24.75" stroke="#1C01A9" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
</svg>
|
||||
<label htmlFor="" className="blue unselectable">Прикрепить скан документов</label>
|
||||
</div>
|
||||
|
||||
@ -7,44 +7,36 @@ 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 QuestionnaireForm from "../QuestionnaireForm";
|
||||
|
||||
const suggestsAddressDebounce = (text) =>
|
||||
{
|
||||
return getAddress(text);
|
||||
}
|
||||
|
||||
const suggestsAddress = debounce(suggestsAddressDebounce, 500);
|
||||
|
||||
export default class Form_1_Main extends React.Component
|
||||
export default class Form_1_Main extends QuestionnaireForm
|
||||
{
|
||||
constructor(props)
|
||||
{
|
||||
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,
|
||||
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: "",
|
||||
nko: false,
|
||||
},
|
||||
loading: false,
|
||||
};
|
||||
}
|
||||
|
||||
@ -60,6 +52,22 @@ export default class Form_1_Main extends React.Component
|
||||
{
|
||||
}
|
||||
|
||||
_checkDisabled = () =>
|
||||
{
|
||||
const { main } = this.state;
|
||||
const check = ["title", "inn", "kpp", "email", "telephone", "financial_loan"];
|
||||
|
||||
for(let i in check)
|
||||
{
|
||||
if(main[check[i]] === "")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
_handle_onPhoneSubmit = (event) =>
|
||||
{
|
||||
event.preventDefault();
|
||||
@ -91,24 +99,6 @@ 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, }, () =>
|
||||
@ -150,7 +140,7 @@ export default class Form_1_Main extends React.Component
|
||||
|
||||
render()
|
||||
{
|
||||
const { title, inn, kpp, email, telephone, websiteurl, financial_loan, nko, phone_check_loading, phone_number_format_error } = this.state;
|
||||
const { loading, main} = this.state;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
@ -159,42 +149,87 @@ export default class Form_1_Main extends React.Component
|
||||
|
||||
<div className="form_field">
|
||||
<label>Краткое наименование</label>
|
||||
<input type="text" name="title" value={ title } placeholder="Введите нименование" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="text"
|
||||
id="main.title"
|
||||
name="main.title"
|
||||
value={ main.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="inn" value={ inn } placeholder="Введите ИНН" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="text"
|
||||
id="main.inn"
|
||||
name="main.inn"
|
||||
value={ main.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="kpp" value={ kpp } placeholder="Введите КПП" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="text"
|
||||
id="main.kpp"
|
||||
name="main.kpp"
|
||||
value={ main.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="telephone" value={ telephone } placeholder="Введите номер" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="text"
|
||||
id="main.telephone"
|
||||
name="main.telephone"
|
||||
value={ main.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="websiteurl" value={ websiteurl } placeholder="Введите адрес сайта, если есть" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="text"
|
||||
id="main.websiteurl"
|
||||
name="main.websiteurl"
|
||||
value={ main.websiteurl }
|
||||
placeholder="Введите адрес сайта, если есть"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>E-mail</label>
|
||||
<input type="text" name="email" value={ email } placeholder="Укажите адрес электронной почты" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="email"
|
||||
id="main.email"
|
||||
name="main.email"
|
||||
value={ main.email }
|
||||
placeholder="Укажите адрес электронной почты"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
/>
|
||||
<p>может использоваться для отправки лизингодателем юридически значимых сообщений в соответсвии с условиями договора лизинга, а так же для операций в электронном ПТС/ПСМ</p>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Финансовая нагрузка</label>
|
||||
<input type="text" name="financial_loan" value={ financial_loan } placeholder="Укажите сумму" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
<input type="text"
|
||||
id="main.financial_loan"
|
||||
name="main.financial_loan"
|
||||
value={ main.financial_loan }
|
||||
placeholder="Укажите сумму"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
/>
|
||||
<p>сумма текущих ежемесячных платежей по действующим кредитам/договорам лизинга</p>
|
||||
</div>
|
||||
|
||||
@ -202,19 +237,31 @@ export default class Form_1_Main extends React.Component
|
||||
<label><b>Организация является НКО</b></label>
|
||||
<div>
|
||||
<div className="form_field checkbox">
|
||||
<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>
|
||||
<input type="radio"
|
||||
checked={ !main.nko }
|
||||
hidden=""
|
||||
id="main.nko_0"
|
||||
name="main.nko"
|
||||
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !main.nko ? true : false) }
|
||||
/>
|
||||
<label htmlFor="main.nko_0" className="unselectable">Нет</label>
|
||||
</div>
|
||||
<div className="form_field checkbox">
|
||||
<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>
|
||||
<input type="radio"
|
||||
checked={ main.nko }
|
||||
hidden=""
|
||||
id="main.nko_1"
|
||||
name="main.nko"
|
||||
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !main.nko ? true : false) }
|
||||
/>
|
||||
<label htmlFor="main.nko_1" className="unselectable">Да</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="action">
|
||||
<button type="submit" className="button button-blue" disabled={ false }>
|
||||
{ phone_check_loading ? (
|
||||
<button type="submit" className="button button-blue" disabled={ this._checkDisabled() }>
|
||||
{ loading ? (
|
||||
<SpinnerCircular size={24} thickness={100} speed={100} color="rgba(255, 255, 255, 1)" secondaryColor="rgba(255, 255, 255, 0.5)" style={{ marginTop: "4px" }}/>
|
||||
) : "Продолжить" }
|
||||
</button>
|
||||
|
||||
@ -9,6 +9,7 @@ import pluralize from 'pluralize-ru';
|
||||
import Select from 'react-select'
|
||||
import { SpinnerCircular } from 'spinners-react';
|
||||
import QuestionnaireForm from "../QuestionnaireForm";
|
||||
import AddressSuggestsSelect from "../AddressSuggestsSelect";
|
||||
|
||||
export default class Form_2_Contacts extends QuestionnaireForm
|
||||
{
|
||||
@ -16,12 +17,23 @@ export default class Form_2_Contacts extends QuestionnaireForm
|
||||
{
|
||||
super(props);
|
||||
this.state = {
|
||||
fact_address: "",
|
||||
postal_address: "",
|
||||
address_type: "legal",
|
||||
address: "",
|
||||
phone_check_loading: false,
|
||||
phone_number_format_error: false,
|
||||
|
||||
fact_address: {
|
||||
name: "",
|
||||
fias_id: "",
|
||||
},
|
||||
legal_address: {
|
||||
title: "",
|
||||
fias_id: "",
|
||||
},
|
||||
postal_address: {
|
||||
name: "",
|
||||
fias_id: "",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@ -65,13 +77,14 @@ export default class Form_2_Contacts extends QuestionnaireForm
|
||||
|
||||
render()
|
||||
{
|
||||
const { fact_address, postal_address, address_type, phone_check_loading, phone_number_format_error } = this.state;
|
||||
const { address_type, fact_address, postal_address, phone_check_loading, phone_number_format_error } = this.state;
|
||||
|
||||
const options = [
|
||||
{ value: 'Москва', label: 'Москва' },
|
||||
{ value: 'Казань', label: 'Казань' },
|
||||
{ value: 'Воронеж', label: 'Воронеж' }
|
||||
]
|
||||
]
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<form onSubmit={ this._handle_onFormSubmit } className="questionnaire questionnaire_2">
|
||||
@ -79,10 +92,18 @@ export default class Form_2_Contacts extends QuestionnaireForm
|
||||
|
||||
<div className="form_field">
|
||||
<label>Фактический адрес</label>
|
||||
{/*
|
||||
<input type="text" name="fact_address" value={ fact_address } placeholder="Введите адрес" onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) } required={ true }/>
|
||||
*/}
|
||||
{/*
|
||||
<input type="text" name="address" value={ address } placeholder="Введите адрес" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
|
||||
*/}
|
||||
<AddressSuggestsSelect
|
||||
value={ fact_address.title }
|
||||
fias={ fact_address.fias_id }
|
||||
onChange={ (data) => this._handle_onTextFieldChange("fact_address", data) }
|
||||
/>
|
||||
{/*}
|
||||
<Select
|
||||
options={ options }
|
||||
placeholder="Фактический адрес"
|
||||
@ -92,6 +113,7 @@ export default class Form_2_Contacts extends QuestionnaireForm
|
||||
classNamePrefix="react-select"
|
||||
//menuIsOpen={ true }
|
||||
/>
|
||||
{*/}
|
||||
<p>для юр.диц - заполняется, если отличается от указанного в ЕГРЮЛ; для ИП - заполняется всегда</p>
|
||||
</div>
|
||||
|
||||
@ -100,20 +122,46 @@ export default class Form_2_Contacts extends QuestionnaireForm
|
||||
<div className="form_field">
|
||||
<div style={{ width: "100%" }}>
|
||||
<div className="form_field checkbox">
|
||||
<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) }/>
|
||||
<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="" 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) }/>
|
||||
<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="" 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) }/>
|
||||
<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>
|
||||
<AddressSuggestsSelect
|
||||
value={ postal_address.title }
|
||||
fias={ postal_address.fias_id }
|
||||
onChange={ (data) => this._handle_onTextFieldChange("postal_address", data) }
|
||||
disabled={ address_type === "postal" ? false : 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>
|
||||
|
||||
@ -7,10 +7,15 @@ import { connect } from "react-redux";
|
||||
import numeral from "numeral";
|
||||
import pluralize from 'pluralize-ru';
|
||||
import { SpinnerCircular } from 'spinners-react';
|
||||
import Select from 'react-select';
|
||||
|
||||
import DateInput from '../../../../components/DatePicker';
|
||||
import QuestionnaireForm from "../QuestionnaireForm";
|
||||
import FilesList from "../FilesList";
|
||||
import Modal from "../../../../components/Modal/modal";
|
||||
import countries from "../countries";
|
||||
import citizenships from "../citizenships";
|
||||
import AddressSuggestsSelect from "../AddressSuggestsSelect";
|
||||
|
||||
export default class Form_3_Signer extends QuestionnaireForm
|
||||
{
|
||||
@ -60,7 +65,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
placebirth: "",
|
||||
citizenship_code: "",
|
||||
registration_address: {
|
||||
title: "",
|
||||
title: "Армения Ереван",
|
||||
fias_id: "",
|
||||
}
|
||||
},
|
||||
@ -113,6 +118,8 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
evo_indefinite: false,
|
||||
|
||||
modal_show_personal_data: false,
|
||||
head_person_registration_address_values: [],
|
||||
signatory_person_address_values: [],
|
||||
};
|
||||
}
|
||||
|
||||
@ -242,7 +249,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
<label>Дата выдачи</label>
|
||||
<DateInput
|
||||
style={{ width: "calc(100% - 198px)" }}
|
||||
placeholder="Укажите дату"
|
||||
placeholder="ДД.ММ.ГГГГ"
|
||||
id={ "head_person.evo_assignment_date" }
|
||||
onChange={ (date) => this._handle_onTextFieldChange("head_person.identity_document.issuedate", date) }
|
||||
required={ true }
|
||||
@ -284,21 +291,46 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<label>Гражданство</label>
|
||||
<select>
|
||||
<option defaultValue={"Выберите страну"} selected disabled>Выберите страну</option>
|
||||
<option>Российская Федерация</option>
|
||||
</select>
|
||||
<Select
|
||||
id="head_person.identity_document.citizenship_code"
|
||||
name="head_person.identity_document.citizenship_code"
|
||||
options={ citizenships }
|
||||
placeholder="Выберите страну"
|
||||
noOptionsMessage={ ({ inputValue }) => !inputValue ? noOptionsText :"Ничего не найдено" }
|
||||
isSearchable={ true }
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
onChange={ (element) => this._handle_onTextFieldChange("head_person.identity_document.citizenship_code", element.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<label>Адрес регистрации</label>
|
||||
<AddressSuggestsSelect
|
||||
value={ head_person.identity_document.registration_address.title }
|
||||
fias={ head_person.identity_document.registration_address.fias_id }
|
||||
onChange={ (data) => this._handle_onTextFieldChange("head_person.identity_document.registration_address", data) }
|
||||
/>
|
||||
{/*}
|
||||
<AsyncSelect
|
||||
placeholder="Укажите адрес"
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions={ this.state }
|
||||
defaultOptions
|
||||
loadOptions={ (text) => this._getAddress("head_person_registration_address_values", text) }
|
||||
/>
|
||||
*/}
|
||||
{/*}
|
||||
<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 }
|
||||
required={ true }
|
||||
/>
|
||||
{*/}
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<label>Должность</label>
|
||||
@ -321,7 +353,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
<label>Дата назначения</label>
|
||||
<div style={{ display: "flex", flexWrap: "wrap", width: "calc(100% - 198px)" }}>
|
||||
<DateInput
|
||||
placeholder="Укажите дату"
|
||||
placeholder="ДД.ММ.ГГГГ"
|
||||
id={ "head_person.evo_assignment_date" }
|
||||
onChange={ (date) => this._handle_onTextFieldChange("head_person.evo_assignment_date", date) }
|
||||
required={ true }
|
||||
@ -342,7 +374,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
<label>Дата окончания полномочий</label>
|
||||
<div style={{ display: "flex", flexWrap: "wrap", width: "calc(100% - 198px)" }}>
|
||||
<DateInput
|
||||
placeholder="Укажите дату"
|
||||
placeholder="ДД.ММ.ГГГГ"
|
||||
id={ "head_person.evo_credentials_dateend" }
|
||||
onChange={ (date) => this._handle_onTextFieldChange("head_person.evo_credentials_dateend", date) }
|
||||
required={ true }
|
||||
@ -358,34 +390,6 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
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"
|
||||
@ -470,7 +474,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
{*/}
|
||||
<DateInput
|
||||
style={{ width: "100%", }}
|
||||
placeholder="Укажите дату договора"
|
||||
placeholder="ДД.ММ.ГГГГ"
|
||||
id={ "main.individual_executive_docdate" }
|
||||
onChange={ (date) => this._handle_onTextFieldChange("main.individual_executive_docdate", date) }
|
||||
required={ true }
|
||||
@ -573,7 +577,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
id="signatory_person.identity_document.issuedate"
|
||||
name="signatory_person.identity_document.issuedate"
|
||||
value={ signatory_person.identity_document.issuedate }
|
||||
placeholder="Введите дату"
|
||||
placeholder="ДД.ММ.ГГГГ"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
@ -618,14 +622,29 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
|
||||
<div className="form_field">
|
||||
<label>Гражданство</label>
|
||||
<select>
|
||||
<option defaultValue={"Выберите страну"} selected disabled>Выберите страну</option>
|
||||
<option>Российская Федерация</option>
|
||||
</select>
|
||||
<Select
|
||||
id="signatory_person.identity_document.citizenship_code"
|
||||
name="signatory_person.identity_document.citizenship_code"
|
||||
options={ citizenships }
|
||||
placeholder="Выберите страну"
|
||||
noOptionsMessage={ ({ inputValue }) => !inputValue ? noOptionsText :"Ничего не найдено" }
|
||||
isSearchable={ true }
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
onChange={ (element) => this._handle_onTextFieldChange("signatory_person.identity_document.citizenship_code", element.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Адрес регистрации</label>
|
||||
<AddressSuggestsSelect
|
||||
value={ signatory_person.identity_document.registration_address.title }
|
||||
fias={ signatory_person.identity_document.registration_address.fias_id }
|
||||
onChange={ (data) => this._handle_onTextFieldChange("signatory_person.identity_document.registration_address", data) }
|
||||
/>
|
||||
|
||||
{/*}
|
||||
<input type="text"
|
||||
id="signatory_person.identity_document.registration_address.title"
|
||||
name="signatory_person.identity_document.registration_address.title"
|
||||
@ -634,6 +653,7 @@ export default class Form_3_Signer extends QuestionnaireForm
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
{*/}
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
|
||||
@ -3,13 +3,343 @@ 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 DateInput from '../../../../components/DatePicker';
|
||||
import Select from 'react-select';
|
||||
import { connect } from "react-redux";
|
||||
import { withRouter } from 'next/router';
|
||||
|
||||
export default class Form_4_Shareholders extends React.Component
|
||||
import { reduxWrapper } from '../../../../../store';
|
||||
import DateInput from '../../../../components/DatePicker';
|
||||
import QuestionnaireForm from "../QuestionnaireForm";
|
||||
import citizenships from "../citizenships";
|
||||
import AddressSuggestsSelect from "../AddressSuggestsSelect";
|
||||
|
||||
class ShareholderForm extends React.Component
|
||||
{
|
||||
_handle_onTextFieldChange = this.props._handle_onTextFieldChange;
|
||||
_handle_onCheckboxFieldChange = this.props._handle_onCheckboxFieldChange;
|
||||
|
||||
render()
|
||||
{
|
||||
const { index, shareholder } = this.props;
|
||||
console.log({ index, shareholder });
|
||||
|
||||
let citizenship = undefined;
|
||||
if(shareholder.identity_document.citizenship_code !== "")
|
||||
{
|
||||
for(let i in citizenships)
|
||||
{
|
||||
if(parseInt(citizenships[i].value, 10) === parseInt(shareholder.identity_document.citizenship_code, 10))
|
||||
{
|
||||
citizenship = citizenships[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<div className="form_field">
|
||||
<label>Фамилия</label>
|
||||
<input type="text"
|
||||
id={ `founded_persons[${ index }].lastname` }
|
||||
name={ `founded_persons[${ index }].lastname` }
|
||||
value={ shareholder.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={ `founded_persons[${ index }].firstname` }
|
||||
name={ `founded_persons[${ index }].firstname` }
|
||||
value={ shareholder.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={ `founded_persons[${ index }].middlename` }
|
||||
name={ `founded_persons[${ index }].middlename` }
|
||||
value={ shareholder.middlename }
|
||||
placeholder="Введите отчество"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form_field ">
|
||||
<div className="form_field">
|
||||
<label>Серия и номер паспорта</label>
|
||||
<div className="formgroup">
|
||||
<div className="form_field">
|
||||
<input type="text"
|
||||
id={ `founded_persons[${ index }].identity_document.seria` }
|
||||
name={ `founded_persons[${ index }].identity_document.seria` }
|
||||
value={ shareholder.identity_document.seria }
|
||||
placeholder="Введите серию"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<input type="text"
|
||||
id={ `founded_persons[${ index }].identity_document.docnumber` }
|
||||
name={ `founded_persons[${ index }].identity_document.docnumber` }
|
||||
value={ shareholder.identity_document.docnumber }
|
||||
placeholder="Введите номер"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="form_field ">
|
||||
<div className="form_field">
|
||||
<label>Дата выдачи и код подразделения </label>
|
||||
<div className="formgroup">
|
||||
<div className="form_field">
|
||||
<DateInput
|
||||
//style={{ width: "calc(100% - 198px)" }}
|
||||
placeholder="ДД.ММ.ГГГГ"
|
||||
id={ `founded_persons[${ index }].identity_document.issuedate` }
|
||||
name={ `founded_persons[${ index }].identity_document.issuedate` }
|
||||
onChange={ (date) => this._handle_onTextFieldChange(`founded_persons[${ index }].identity_document.issuedate`, date) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<input type="text"
|
||||
id={ `founded_persons[${ index }].identity_document.icode` }
|
||||
name={ `founded_persons[${ index }].identity_document.icode` }
|
||||
value={ shareholder.identity_document.icode }
|
||||
placeholder="Код подразделения"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Кем выдан</label>
|
||||
<input type="text"
|
||||
id={ `founded_persons[${ index }].identity_document.issueby` }
|
||||
name={ `founded_persons[${ index }].identity_document.issueby` }
|
||||
value={ shareholder.identity_document.issueby }
|
||||
placeholder="Введите наименование подразделения выдавшего документ"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form_field" style={{ flex: 1 }}>
|
||||
<label>Место рождения</label>
|
||||
<AddressSuggestsSelect
|
||||
id={ `founded_persons[${ index }].identity_document.placebirth` }
|
||||
value={ shareholder.identity_document.placebirth.title }
|
||||
onChange={ (data) => this._handle_onTextFieldChange(`founded_persons[${ index }].identity_document.placebirth`, data.title) }
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Гражданство</label>
|
||||
<Select
|
||||
id={ `founded_persons[${ index }].identity_document.citizenship_code` }
|
||||
name={ `founded_persons[${ index }].identity_document.citizenship_code` }
|
||||
value={ citizenship }
|
||||
options={ citizenships }
|
||||
placeholder="Выберите страну"
|
||||
noOptionsMessage={ ({ inputValue }) => !inputValue ? noOptionsText :"Ничего не найдено" }
|
||||
isSearchable={ true }
|
||||
className="autocomlete"
|
||||
classNamePrefix="react-select"
|
||||
onChange={ (element) => this._handle_onTextFieldChange(`founded_persons[${ index }].identity_document.citizenship_code`, element.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Адрес регистрации</label>
|
||||
<AddressSuggestsSelect
|
||||
id={ `founded_persons[${ index }].identity_document.registration_address` }
|
||||
value={ shareholder.identity_document.registration_address.title }
|
||||
fias={ shareholder.identity_document.registration_address.fias_id }
|
||||
onChange={ (data) => this._handle_onTextFieldChange(`founded_persons[${ index }].identity_document.registration_address`, data) }
|
||||
/>
|
||||
</div>
|
||||
|
||||
</React.Fragment>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class Shareholder extends React.Component
|
||||
{
|
||||
constructor(props)
|
||||
{
|
||||
super(props);
|
||||
this.state = {};
|
||||
}
|
||||
|
||||
_handle_onTextFieldChange = this.props._handle_onTextFieldChange;
|
||||
_handle_onCheckboxFieldChange = this.props._handle_onCheckboxFieldChange;
|
||||
|
||||
render()
|
||||
{
|
||||
const { index, shareholder, removeShareholder, } = this.props;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<div className="added_person">
|
||||
|
||||
{ index > 0 && (
|
||||
<div className="form_field">
|
||||
<label>Физическое лицо { index + 1 }</label>
|
||||
<div className="formgroup control">
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="checkbox" hidden=""
|
||||
checked={ shareholder.founder_from_list }
|
||||
id={ `founded_persons[${ index }].founder_from_list` }
|
||||
name={ `founded_persons[${ index }].founder_from_list` }
|
||||
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, !shareholder.founder_from_list ? true : false) }
|
||||
/>
|
||||
<label className="unselectable" htmlFor={ `founded_persons[${ index }].founder_from_list` }>Выбрать из списка</label>
|
||||
</div>
|
||||
|
||||
<button className="delete" onClick={ (event) => { event.preventDefault(); removeShareholder(index) } }>
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.25 5.25L3.75 5.25001" stroke="#ED0A34" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M9.75 9.75V15.75" stroke="#ED0A34" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M14.25 9.75V15.75" stroke="#ED0A34" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M18.75 5.25V19.5C18.75 19.6989 18.671 19.8897 18.5303 20.0303C18.3897 20.171 18.1989 20.25 18 20.25H6C5.80109 20.25 5.61032 20.171 5.46967 20.0303C5.32902 19.8897 5.25 19.6989 5.25 19.5V5.25" stroke="#ED0A34" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path d="M15.75 5.25V3.75C15.75 3.35218 15.592 2.97064 15.3107 2.68934C15.0294 2.40804 14.6478 2.25 14.25 2.25H9.75C9.35218 2.25 8.97064 2.40804 8.68934 2.68934C8.40804 2.97064 8.25 3.35218 8.25 3.75V5.25" stroke="#ED0A34" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
) }
|
||||
|
||||
{ index > 0 ? (
|
||||
<React.Fragment>
|
||||
{ shareholder.founder_from_list ? (
|
||||
<div className="feed">
|
||||
<div className="feed_list">
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">
|
||||
<div className="feed_item user">
|
||||
<img src="/assets/images/icons/avatar.svg" alt="" />
|
||||
<div>
|
||||
<p className="item_title">Басок Дмитрий Вадимович</p>
|
||||
<p className="item_desc">
|
||||
<span>ИНН 1234567890</span>
|
||||
<span>Подпись действительна до 01.10.2023</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">
|
||||
<div className="feed_item user">
|
||||
<img src="/assets/images/icons/avatar.svg" alt="" />
|
||||
<div>
|
||||
<p className="item_title">Басок Дмитрий Вадимович</p>
|
||||
<p className="item_desc">
|
||||
<span>ИНН 1234567890</span>
|
||||
<span>Подпись действительна до 01.10.2023</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">
|
||||
<div className="feed_item user">
|
||||
<img src="/assets/images/icons/avatar.svg" alt="" />
|
||||
<div>
|
||||
<p className="item_title">Басок Дмитрий Вадимович</p>
|
||||
<p className="item_desc">
|
||||
<span>ИНН 1234567890</span>
|
||||
<span>Подпись действительна до 01.10.2023</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<ShareholderForm index={ index } shareholder={ shareholder } { ...this.props } />
|
||||
) }
|
||||
</React.Fragment>
|
||||
) : (
|
||||
<ShareholderForm index={ index } shareholder={ shareholder } { ...this.props } />
|
||||
) }
|
||||
|
||||
<div className="form_field">
|
||||
<label>Доля в уставном капитале (%)</label>
|
||||
<input type="text"
|
||||
id={ `founded_persons[${ index }].founder_part` }
|
||||
name={ `founded_persons[${ index }].founder_part` }
|
||||
value={ shareholder.founder_part }
|
||||
placeholder="Укажите размер доли"
|
||||
onChange={ (event) => this._handle_onTextFieldChange(event.target.name, event.target.value) }
|
||||
required={ true }
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Является ли бенифиальным владельцем</label>
|
||||
<div className="formgroup">
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden=""
|
||||
value="1"
|
||||
id={ `founded_persons[${ index }].is_beneficial_1` }
|
||||
name={ `founded_persons[${ index }].is_beneficial` }
|
||||
checked={ shareholder.is_beneficial ? false : true }
|
||||
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, parseInt(event.target.value, 10)) }
|
||||
/>
|
||||
<label htmlFor={ `founded_persons[${ index }].is_beneficial_1` }>Да</label>
|
||||
</div>
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden=""
|
||||
value="0"
|
||||
id={ `founded_persons[${ index }].is_beneficial_0` }
|
||||
name={ `founded_persons[${ index }].is_beneficial` }
|
||||
checked={ shareholder.is_beneficial ? false : true }
|
||||
onChange={ (event) => this._handle_onCheckboxFieldChange(event.target.name, parseInt(event.target.value, 10)) }
|
||||
/>
|
||||
<label htmlFor={ `founded_persons[${ index }].is_beneficial_0` }>Нет</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</React.Fragment>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class Form_4_Shareholders extends QuestionnaireForm
|
||||
{
|
||||
constructor(props)
|
||||
{
|
||||
@ -18,32 +348,68 @@ export default class Form_4_Shareholders extends React.Component
|
||||
address: "",
|
||||
phone_check_loading: false,
|
||||
phone_number_format_error: false,
|
||||
|
||||
founded_persons: [],
|
||||
founded_persons_template: {},
|
||||
};
|
||||
}
|
||||
|
||||
static getDerivedStateFromProps(nextProps, prevState)
|
||||
{
|
||||
return {
|
||||
observer: nextProps.observer,
|
||||
user: nextProps.user,
|
||||
founded_persons: nextProps.founded_persons,
|
||||
founded_persons_template: nextProps.founded_persons_template,
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount()
|
||||
{
|
||||
const { founded_persons_template } = this.state;
|
||||
|
||||
if(this.state.founded_persons.length === 0)
|
||||
{
|
||||
this._updateQuestionnaire({
|
||||
founded_persons: [{ ...founded_persons_template }],
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_handle_onAddShareholder = () =>
|
||||
{
|
||||
const founded_persons = [ ...this.state.founded_persons ];
|
||||
const { founded_persons_template } = this.state;
|
||||
|
||||
if(founded_persons.length < 4)
|
||||
{
|
||||
console.log("TEMPLATE", founded_persons_template);
|
||||
console.log("founded_persons BEFORE PUSH", founded_persons);
|
||||
founded_persons.push({ ...founded_persons_template });
|
||||
console.log("founded_persons AFTER PUSH", founded_persons);
|
||||
|
||||
this._updateQuestionnaire({
|
||||
founded_persons,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_handle_onRemoveShareholder = (index) =>
|
||||
{
|
||||
console.log("_handle_onRemoveShareholder", index);
|
||||
const founded_persons = [ ...this.state.founded_persons ];
|
||||
|
||||
console.log("founded_persons", founded_persons);
|
||||
|
||||
founded_persons.splice(index, 1);
|
||||
console.log("founded_persons AFTER SPLICE", founded_persons);
|
||||
|
||||
this._updateQuestionnaire({
|
||||
founded_persons,
|
||||
});
|
||||
}
|
||||
|
||||
_handle_onFormSubmit = (event) =>
|
||||
{
|
||||
event.preventDefault();
|
||||
console.log("FormAddress", "_handle_onFormSubmit");
|
||||
}
|
||||
|
||||
_handle_onAddressChange = (value) =>
|
||||
{
|
||||
this.setState({ address: value, }, () =>
|
||||
{
|
||||
});
|
||||
}
|
||||
|
||||
_check_fields_disabled = (values) =>
|
||||
@ -61,7 +427,7 @@ export default class Form_4_Shareholders extends React.Component
|
||||
|
||||
render()
|
||||
{
|
||||
const { address, phone_check_loading, phone_number_format_error } = this.state;
|
||||
const { founded_persons, phone_check_loading, address, phone_number_format_error } = this.state;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
@ -74,207 +440,44 @@ export default class Form_4_Shareholders extends React.Component
|
||||
полагать, что бенефициарным владельцем является иное физическое лицо. В случае, если бенефициарным владельцем являются несколько человек, сведения предоставляются в отношении каждого.</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 }/>
|
||||
</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 }/>
|
||||
</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 }/>
|
||||
</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 }/>
|
||||
</div>
|
||||
|
||||
<div className="form_field ">
|
||||
<div className="form_field">
|
||||
<label>Серия и номер паспорта</label>
|
||||
<div className="formgroup">
|
||||
<div className="form_field">
|
||||
<input type="text" name="address" value={ address } placeholder="Введите серию" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<input type="text" name="address" value={ address } placeholder="Введите номер" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="form_field ">
|
||||
<div className="form_field">
|
||||
<label>Дата выдачи и код подразделения </label>
|
||||
<div className="formgroup">
|
||||
<div className="form_field">
|
||||
<input type="text" name="address" value={ address } placeholder="Введите дату" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
|
||||
</div>
|
||||
<div className="form_field">
|
||||
<input type="text" name="address" value={ address } placeholder="Введите номер" onChange={ (event) => this._handle_onAddressChange(event.target.value) } required={ true }/>
|
||||
</div>
|
||||
</div>
|
||||
</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 }/>
|
||||
</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 }/>
|
||||
</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" name="address" value={ address } placeholder="Введите адрес" onChange={ (event) => this._handle_onAddressChange(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 }/>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Является ли бенифиальным владельцем</label>
|
||||
|
||||
<div className="formgroup">
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">Да</label>
|
||||
</div>
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">Нет</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="added_person">
|
||||
<div className="form_field">
|
||||
<label>Физическое лицо 2</label>
|
||||
|
||||
<div className="formgroup control">
|
||||
<div className="form_field checkbox">
|
||||
<input type="checkbox" hidden="" id="" name="" />
|
||||
<label htmlFor="">Выбрать подписанта из списка</label>
|
||||
</div>
|
||||
|
||||
<button className="delete">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.25 5.25L3.75 5.25001" stroke="#ED0A34" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M9.75 9.75V15.75" stroke="#ED0A34" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M14.25 9.75V15.75" stroke="#ED0A34" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M18.75 5.25V19.5C18.75 19.6989 18.671 19.8897 18.5303 20.0303C18.3897 20.171 18.1989 20.25 18 20.25H6C5.80109 20.25 5.61032 20.171 5.46967 20.0303C5.32902 19.8897 5.25 19.6989 5.25 19.5V5.25" stroke="#ED0A34" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M15.75 5.25V3.75C15.75 3.35218 15.592 2.97064 15.3107 2.68934C15.0294 2.40804 14.6478 2.25 14.25 2.25H9.75C9.35218 2.25 8.97064 2.40804 8.68934 2.68934C8.40804 2.97064 8.25 3.35218 8.25 3.75V5.25" stroke="#ED0A34" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="feed">
|
||||
<div className="feed_list">
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">
|
||||
<div className="feed_item user">
|
||||
<img src="/assets/images/icons/avatar.svg" alt="" />
|
||||
<div>
|
||||
<p className="item_title">Басок Дмитрий Вадимович</p>
|
||||
<p className="item_desc">
|
||||
<span>ИНН 1234567890</span>
|
||||
<span>Подпись действительна до 01.10.2023</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">
|
||||
<div className="feed_item user">
|
||||
<img src="/assets/images/icons/avatar.svg" alt="" />
|
||||
<div>
|
||||
<p className="item_title">Басок Дмитрий Вадимович</p>
|
||||
<p className="item_desc">
|
||||
<span>ИНН 1234567890</span>
|
||||
<span>Подпись действительна до 01.10.2023</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">
|
||||
<div className="feed_item user">
|
||||
<img src="/assets/images/icons/avatar.svg" alt="" />
|
||||
<div>
|
||||
<p className="item_title">Басок Дмитрий Вадимович</p>
|
||||
<p className="item_desc">
|
||||
<span>ИНН 1234567890</span>
|
||||
<span>Подпись действительна до 01.10.2023</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</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 }/>
|
||||
</div>
|
||||
|
||||
<div className="form_field">
|
||||
<label>Является ли бенифиальным владельцем</label>
|
||||
|
||||
<div className="formgroup">
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">Да</label>
|
||||
</div>
|
||||
|
||||
<div className="form_field checkbox">
|
||||
<input type="radio" hidden="" id="" name="" />
|
||||
<label htmlFor="">Нет</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{ founded_persons.map((shareholder, index) => (
|
||||
<Shareholder
|
||||
key={ index }
|
||||
index={ index }
|
||||
shareholder={ shareholder }
|
||||
address={ address }
|
||||
_handle_onTextFieldChange={ this._handle_onTextFieldChange }
|
||||
_handle_onCheckboxFieldChange={ this._handle_onCheckboxFieldChange }
|
||||
removeShareholder={ this._handle_onRemoveShareholder }
|
||||
/>
|
||||
)) }
|
||||
|
||||
<div className="action">
|
||||
<button className="button button-blue" disabled={ false }>Добавить еще одного владельца</button>
|
||||
<button className="button button-blue" disabled={ false } onClick={ (event) => { event.preventDefault(); this._handle_onAddShareholder(); }}>Добавить еще одного владельца</button>
|
||||
<button type="submit" className="button button-blue" disabled={ false }>
|
||||
{ phone_check_loading ? (
|
||||
<SpinnerCircular size={24} thickness={100} speed={100} color="rgba(255, 255, 255, 1)" secondaryColor="rgba(255, 255, 255, 0.5)" style={{ marginTop: "4px" }}/>
|
||||
) : "Продолжить" }
|
||||
) : "Продолжить" }
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</React.Fragment>
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function mapStateToProps(state, ownProps)
|
||||
{
|
||||
return {
|
||||
founded_persons: state.questionnaire.founded_persons,
|
||||
founded_persons_template: state.questionnaire.founded_persons_template,
|
||||
}
|
||||
}
|
||||
|
||||
export const getServerSideProps = reduxWrapper.getServerSideProps(store =>
|
||||
async ({ req, res, query }) =>
|
||||
{
|
||||
}
|
||||
);
|
||||
|
||||
export default connect(mapStateToProps)(Form_4_Shareholders);
|
||||
@ -3,23 +3,71 @@ 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';
|
||||
|
||||
import { updateQuestionnaire, getAddress } from "../../../../actions";
|
||||
|
||||
const suggestsAddressDebounce = (text) =>
|
||||
{
|
||||
return getAddress(text);
|
||||
}
|
||||
|
||||
const suggestsAddress = debounce(suggestsAddressDebounce, 500);
|
||||
const suggestsAddress = debounce(suggestsAddressDebounce, 200);
|
||||
|
||||
/*
|
||||
const getAddress = (inputValue) => {
|
||||
return
|
||||
new Promise<ColourOption[]>((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(filterColors(inputValue));
|
||||
}, 1000);
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
export default class QuestionnaireForm extends React.Component
|
||||
{
|
||||
_updateQuestionnaire = (questionnaire) =>
|
||||
{
|
||||
return new Promise((resolve, reject) =>
|
||||
{
|
||||
updateQuestionnaire({ dispatch: this.props.dispatch, questionnaire })
|
||||
.then(() =>
|
||||
{
|
||||
resolve();
|
||||
})
|
||||
.catch(() =>
|
||||
{
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
_getAddress = (name, text) =>
|
||||
{
|
||||
return new Promise((resolve, reject) =>
|
||||
{
|
||||
suggestsAddress(text)
|
||||
.then((result) =>
|
||||
{
|
||||
const update = {};
|
||||
update[name] = result.suggestions;
|
||||
this.setState(update, () =>
|
||||
{
|
||||
resolve(result.suggestions.map(s => ({ value: s.value, label: s.value })));
|
||||
});
|
||||
})
|
||||
.catch(() =>
|
||||
{
|
||||
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
_handle_onTextFieldChange = (name, value) =>
|
||||
{
|
||||
console.log("QuestionnaireForm", "_handle_onTextFieldChange", { name, value });
|
||||
|
||||
255
pages/questionnaire/components/forms/citizenships.js
Normal file
255
pages/questionnaire/components/forms/citizenships.js
Normal file
@ -0,0 +1,255 @@
|
||||
export default [
|
||||
{ value: "004", label: "АФГАНИСТАН" },
|
||||
{ value: "008", label: "АЛБАНИЯ" },
|
||||
{ value: "010", label: "АНТАРКТИДА" },
|
||||
{ value: "012", label: "АЛЖИР" },
|
||||
{ value: "016", label: "АМЕРИКАНСКОЕ САМОА" },
|
||||
{ value: "020", label: "АНДОРРА" },
|
||||
{ value: "024", label: "АНГОЛА" },
|
||||
{ value: "028", label: "АНТИГУА И БАРБУДА" },
|
||||
{ value: "031", label: "АЗЕРБАЙДЖАН" },
|
||||
{ value: "032", label: "АРГЕНТИНА" },
|
||||
{ value: "036", label: "АВСТРАЛИЯ" },
|
||||
{ value: "040", label: "АВСТРИЯ" },
|
||||
{ value: "044", label: "БАГАМЫ" },
|
||||
{ value: "048", label: "БАХРЕЙН" },
|
||||
{ value: "050", label: "БАНГЛАДЕШ" },
|
||||
{ value: "051", label: "АРМЕНИЯ" },
|
||||
{ value: "052", label: "БАРБАДОС" },
|
||||
{ value: "056", label: "БЕЛЬГИЯ" },
|
||||
{ value: "060", label: "БЕРМУДЫ" },
|
||||
{ value: "064", label: "БУТАН" },
|
||||
{ value: "068", label: "БОЛИВИЯ, МНОГОНАЦИОНАЛЬНОЕ ГОСУДАРСТВО" },
|
||||
{ value: "070", label: "БОСНИЯ И ГЕРЦЕГОВИНА" },
|
||||
{ value: "072", label: "БОТСВАНА" },
|
||||
{ value: "074", label: "ОСТРОВ БУВЕ" },
|
||||
{ value: "076", label: "БРАЗИЛИЯ" },
|
||||
{ value: "084", label: "БЕЛИЗ" },
|
||||
{ value: "086", label: "БРИТАНСКАЯ ТЕРРИТОРИЯ В ИНДИЙСКОМ ОКЕАНЕ" },
|
||||
{ value: "090", label: "СОЛОМОНОВЫ ОСТРОВА" },
|
||||
{ value: "092", label: "ВИРГИНСКИЕ ОСТРОВА (БРИТАНСКИЕ)" },
|
||||
{ value: "096", label: "БРУНЕЙ-ДАРУССАЛАМ" },
|
||||
{ value: "100", label: "БОЛГАРИЯ" },
|
||||
{ value: "104", label: "МЬЯНМА" },
|
||||
{ value: "108", label: "БУРУНДИ" },
|
||||
{ value: "112", label: "БЕЛАРУСЬ" },
|
||||
{ value: "116", label: "КАМБОДЖА" },
|
||||
{ value: "120", label: "КАМЕРУН" },
|
||||
{ value: "124", label: "КАНАДА" },
|
||||
{ value: "132", label: "КАБО-ВЕРДЕ" },
|
||||
{ value: "136", label: "ОСТРОВА КАЙМАН" },
|
||||
{ value: "140", label: "ЦЕНТРАЛЬНО-АФРИКАНСКАЯ РЕСПУБЛИКА" },
|
||||
{ value: "144", label: "ШРИ-ЛАНКА" },
|
||||
{ value: "148", label: "ЧАД" },
|
||||
{ value: "152", label: "ЧИЛИ" },
|
||||
{ value: "156", label: "КИТАЙ" },
|
||||
{ value: "158", label: "ТАЙВАНЬ (КИТАЙ)" },
|
||||
{ value: "162", label: "ОСТРОВ РОЖДЕСТВА" },
|
||||
{ value: "166", label: "КОКОСОВЫЕ (КИЛИНГ) ОСТРОВА" },
|
||||
{ value: "170", label: "КОЛУМБИЯ" },
|
||||
{ value: "174", label: "КОМОРЫ" },
|
||||
{ value: "175", label: "МАЙОТТА" },
|
||||
{ value: "178", label: "КОНГО" },
|
||||
{ value: "180", label: "КОНГО, ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА" },
|
||||
{ value: "184", label: "ОСТРОВА КУКА" },
|
||||
{ value: "188", label: "КОСТА-РИКА" },
|
||||
{ value: "191", label: "ХОРВАТИЯ" },
|
||||
{ value: "192", label: "КУБА" },
|
||||
{ value: "196", label: "КИПР" },
|
||||
{ value: "203", label: "ЧЕХИЯ" },
|
||||
{ value: "204", label: "БЕНИН" },
|
||||
{ value: "208", label: "ДАНИЯ" },
|
||||
{ value: "212", label: "ДОМИНИКА" },
|
||||
{ value: "214", label: "ДОМИНИКАНСКАЯ РЕСПУБЛИКА" },
|
||||
{ value: "218", label: "ЭКВАДОР" },
|
||||
{ value: "222", label: "ЭЛЬ-САЛЬВАДОР" },
|
||||
{ value: "226", label: "ЭКВАТОРИАЛЬНАЯ ГВИНЕЯ" },
|
||||
{ value: "231", label: "ЭФИОПИЯ" },
|
||||
{ value: "232", label: "ЭРИТРЕЯ" },
|
||||
{ value: "233", label: "ЭСТОНИЯ" },
|
||||
{ value: "234", label: "ФАРЕРСКИЕ ОСТРОВА" },
|
||||
{ value: "238", label: "ФОЛКЛЕНДСКИЕ ОСТРОВА (МАЛЬВИНСКИЕ)" },
|
||||
{ value: "239", label: "ЮЖНАЯ ДЖОРДЖИЯ И ЮЖНЫЕ САНДВИЧЕВЫ ОСТРОВА" },
|
||||
{ value: "242", label: "ФИДЖИ" },
|
||||
{ value: "246", label: "ФИНЛЯНДИЯ" },
|
||||
{ value: "248", label: "ЭЛАНДСКИЕ ОСТРОВА" },
|
||||
{ value: "250", label: "ФРАНЦИЯ" },
|
||||
{ value: "254", label: "ФРАНЦУЗСКАЯ ГВИАНА" },
|
||||
{ value: "258", label: "ФРАНЦУЗСКАЯ ПОЛИНЕЗИЯ" },
|
||||
{ value: "260", label: "ФРАНЦУЗСКИЕ ЮЖНЫЕ ТЕРРИТОРИИ" },
|
||||
{ value: "262", label: "ДЖИБУТИ" },
|
||||
{ value: "266", label: "ГАБОН" },
|
||||
{ value: "268", label: "ГРУЗИЯ" },
|
||||
{ value: "270", label: "ГАМБИЯ" },
|
||||
{ value: "275", label: "ПАЛЕСТИНА, ГОСУДАРСТВО" },
|
||||
{ value: "276", label: "ГЕРМАНИЯ" },
|
||||
{ value: "288", label: "ГАНА" },
|
||||
{ value: "292", label: "ГИБРАЛТАР" },
|
||||
{ value: "296", label: "КИРИБАТИ" },
|
||||
{ value: "300", label: "ГРЕЦИЯ" },
|
||||
{ value: "304", label: "ГРЕНЛАНДИЯ" },
|
||||
{ value: "308", label: "ГРЕНАДА" },
|
||||
{ value: "312", label: "ГВАДЕЛУПА" },
|
||||
{ value: "316", label: "ГУАМ" },
|
||||
{ value: "320", label: "ГВАТЕМАЛА" },
|
||||
{ value: "324", label: "ГВИНЕЯ" },
|
||||
{ value: "328", label: "ГАЙАНА" },
|
||||
{ value: "332", label: "ГАИТИ" },
|
||||
{ value: "334", label: "ОСТРОВ ХЕРД И ОСТРОВА МАКДОНАЛЬД" },
|
||||
{ value: "336", label: "ПАПСКИЙ ПРЕСТОЛ (ГОСУДАРСТВО - ГОРОД ВАТИКАН)" },
|
||||
{ value: "340", label: "ГОНДУРАС" },
|
||||
{ value: "344", label: "ГОНКОНГ" },
|
||||
{ value: "348", label: "ВЕНГРИЯ" },
|
||||
{ value: "352", label: "ИСЛАНДИЯ" },
|
||||
{ value: "356", label: "ИНДИЯ" },
|
||||
{ value: "360", label: "ИНДОНЕЗИЯ" },
|
||||
{ value: "364", label: "ИРАН (ИСЛАМСКАЯ РЕСПУБЛИКА)" },
|
||||
{ value: "368", label: "ИРАК" },
|
||||
{ value: "372", label: "ИРЛАНДИЯ" },
|
||||
{ value: "376", label: "ИЗРАИЛЬ" },
|
||||
{ value: "380", label: "ИТАЛИЯ" },
|
||||
{ value: "384", label: "КОТ Д'ИВУАР" },
|
||||
{ value: "388", label: "ЯМАЙКА" },
|
||||
{ value: "392", label: "ЯПОНИЯ" },
|
||||
{ value: "398", label: "КАЗАХСТАН" },
|
||||
{ value: "400", label: "ИОРДАНИЯ" },
|
||||
{ value: "404", label: "КЕНИЯ" },
|
||||
{ value: "408", label: "КОРЕЯ, НАРОДНО-ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА" },
|
||||
{ value: "410", label: "КОРЕЯ, РЕСПУБЛИКА" },
|
||||
{ value: "414", label: "КУВЕЙТ" },
|
||||
{ value: "417", label: "КИРГИЗИЯ" },
|
||||
{ value: "418", label: "ЛАОССКАЯ НАРОДНО-ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА" },
|
||||
{ value: "422", label: "ЛИВАН" },
|
||||
{ value: "426", label: "ЛЕСОТО" },
|
||||
{ value: "428", label: "ЛАТВИЯ" },
|
||||
{ value: "430", label: "ЛИБЕРИЯ" },
|
||||
{ value: "434", label: "ЛИВИЯ" },
|
||||
{ value: "438", label: "ЛИХТЕНШТЕЙН" },
|
||||
{ value: "440", label: "ЛИТВА" },
|
||||
{ value: "442", label: "ЛЮКСЕМБУРГ" },
|
||||
{ value: "446", label: "МАКАО" },
|
||||
{ value: "450", label: "МАДАГАСКАР" },
|
||||
{ value: "454", label: "МАЛАВИ" },
|
||||
{ value: "458", label: "МАЛАЙЗИЯ" },
|
||||
{ value: "462", label: "МАЛЬДИВЫ" },
|
||||
{ value: "466", label: "МАЛИ" },
|
||||
{ value: "470", label: "МАЛЬТА" },
|
||||
{ value: "474", label: "МАРТИНИКА" },
|
||||
{ value: "478", label: "МАВРИТАНИЯ" },
|
||||
{ value: "480", label: "МАВРИКИЙ" },
|
||||
{ value: "484", label: "МЕКСИКА" },
|
||||
{ value: "492", label: "МОНАКО" },
|
||||
{ value: "496", label: "МОНГОЛИЯ" },
|
||||
{ value: "498", label: "МОЛДОВА, РЕСПУБЛИКА" },
|
||||
{ value: "499", label: "ЧЕРНОГОРИЯ" },
|
||||
{ value: "500", label: "МОНТСЕРРАТ" },
|
||||
{ value: "504", label: "МАРОККО" },
|
||||
{ value: "508", label: "МОЗАМБИК" },
|
||||
{ value: "512", label: "ОМАН" },
|
||||
{ value: "516", label: "НАМИБИЯ" },
|
||||
{ value: "520", label: "НАУРУ" },
|
||||
{ value: "524", label: "НЕПАЛ" },
|
||||
{ value: "528", label: "НИДЕРЛАНДЫ" },
|
||||
{ value: "531", label: "КЮРАСАО" },
|
||||
{ value: "533", label: "АРУБА" },
|
||||
{ value: "534", label: "СЕН-МАРТЕН (нидерландская часть)" },
|
||||
{ value: "535", label: "БОНЭЙР, СИНТ-ЭСТАТИУС И САБА" },
|
||||
{ value: "540", label: "НОВАЯ КАЛЕДОНИЯ" },
|
||||
{ value: "548", label: "ВАНУАТУ" },
|
||||
{ value: "554", label: "НОВАЯ ЗЕЛАНДИЯ" },
|
||||
{ value: "558", label: "НИКАРАГУА" },
|
||||
{ value: "562", label: "НИГЕР" },
|
||||
{ value: "566", label: "НИГЕРИЯ" },
|
||||
{ value: "570", label: "НИУЭ" },
|
||||
{ value: "574", label: "ОСТРОВ НОРФОЛК" },
|
||||
{ value: "578", label: "НОРВЕГИЯ" },
|
||||
{ value: "580", label: "СЕВЕРНЫЕ МАРИАНСКИЕ ОСТРОВА" },
|
||||
{ value: "581", label: "МАЛЫЕ ТИХООКЕАНСКИЕ ОТДАЛЕННЫЕ ОСТРОВА СОЕДИНЕННЫХ ШТАТОВ" },
|
||||
{ value: "583", label: "МИКРОНЕЗИЯ, ФЕДЕРАТИВНЫЕ ШТАТЫ" },
|
||||
{ value: "584", label: "МАРШАЛЛОВЫ ОСТРОВА" },
|
||||
{ value: "585", label: "ПАЛАУ" },
|
||||
{ value: "586", label: "ПАКИСТАН" },
|
||||
{ value: "591", label: "ПАНАМА" },
|
||||
{ value: "598", label: "ПАПУА-НОВАЯ ГВИНЕЯ" },
|
||||
{ value: "600", label: "ПАРАГВАЙ" },
|
||||
{ value: "604", label: "ПЕРУ" },
|
||||
{ value: "608", label: "ФИЛИППИНЫ" },
|
||||
{ value: "612", label: "ПИТКЕРН" },
|
||||
{ value: "616", label: "ПОЛЬША" },
|
||||
{ value: "620", label: "ПОРТУГАЛИЯ" },
|
||||
{ value: "624", label: "ГВИНЕЯ-БИСАУ" },
|
||||
{ value: "626", label: "ТИМОР-ЛЕСТЕ" },
|
||||
{ value: "630", label: "ПУЭРТО-РИКО" },
|
||||
{ value: "634", label: "КАТАР" },
|
||||
{ value: "638", label: "РЕЮНЬОН" },
|
||||
{ value: "642", label: "РУМЫНИЯ" },
|
||||
{ value: "643", label: "РОССИЯ" },
|
||||
{ value: "646", label: "РУАНДА" },
|
||||
{ value: "652", label: "СЕН-БАРТЕЛЕМИ" },
|
||||
{ value: "654", label: "СВЯТАЯ ЕЛЕНА, ОСТРОВ ВОЗНЕСЕНИЯ, ТРИСТАН-ДА-КУНЬЯ" },
|
||||
{ value: "659", label: "СЕНТ-КИТС И НЕВИС" },
|
||||
{ value: "660", label: "АНГИЛЬЯ" },
|
||||
{ value: "662", label: "СЕНТ-ЛЮСИЯ" },
|
||||
{ value: "663", label: "СЕН-МАРТЕН (французская часть)" },
|
||||
{ value: "666", label: "СЕН-ПЬЕР И МИКЕЛОН" },
|
||||
{ value: "670", label: "СЕНТ-ВИНСЕНТ И ГРЕНАДИНЫ" },
|
||||
{ value: "674", label: "САН-МАРИНО" },
|
||||
{ value: "678", label: "САН-ТОМЕ И ПРИНСИПИ" },
|
||||
{ value: "682", label: "САУДОВСКАЯ АРАВИЯ" },
|
||||
{ value: "686", label: "СЕНЕГАЛ" },
|
||||
{ value: "688", label: "СЕРБИЯ" },
|
||||
{ value: "690", label: "СЕЙШЕЛЫ" },
|
||||
{ value: "694", label: "СЬЕРРА-ЛЕОНЕ" },
|
||||
{ value: "702", label: "СИНГАПУР" },
|
||||
{ value: "703", label: "СЛОВАКИЯ" },
|
||||
{ value: "704", label: "ВЬЕТНАМ" },
|
||||
{ value: "705", label: "СЛОВЕНИЯ" },
|
||||
{ value: "706", label: "СОМАЛИ" },
|
||||
{ value: "710", label: "ЮЖНАЯ АФРИКА" },
|
||||
{ value: "716", label: "ЗИМБАБВЕ" },
|
||||
{ value: "724", label: "ИСПАНИЯ" },
|
||||
{ value: "728", label: "ЮЖНЫЙ СУДАН" },
|
||||
{ value: "729", label: "СУДАН" },
|
||||
{ value: "732", label: "ЗАПАДНАЯ САХАРА" },
|
||||
{ value: "740", label: "СУРИНАМ" },
|
||||
{ value: "744", label: "ШПИЦБЕРГЕН И ЯН МАЙЕН" },
|
||||
{ value: "748", label: "ЭСВАТИНИ" },
|
||||
{ value: "752", label: "ШВЕЦИЯ" },
|
||||
{ value: "756", label: "ШВЕЙЦАРИЯ" },
|
||||
{ value: "760", label: "СИРИЙСКАЯ АРАБСКАЯ РЕСПУБЛИКА" },
|
||||
{ value: "762", label: "ТАДЖИКИСТАН" },
|
||||
{ value: "764", label: "ТАИЛАНД" },
|
||||
{ value: "768", label: "ТОГО" },
|
||||
{ value: "772", label: "ТОКЕЛАУ" },
|
||||
{ value: "776", label: "ТОНГА" },
|
||||
{ value: "780", label: "ТРИНИДАД И ТОБАГО" },
|
||||
{ value: "784", label: "ОБЪЕДИНЕННЫЕ АРАБСКИЕ ЭМИРАТЫ" },
|
||||
{ value: "788", label: "ТУНИС" },
|
||||
{ value: "792", label: "ТУРЦИЯ" },
|
||||
{ value: "795", label: "ТУРКМЕНИСТАН" },
|
||||
{ value: "796", label: "ОСТРОВА ТЕРКС И КАЙКОС" },
|
||||
{ value: "798", label: "ТУВАЛУ" },
|
||||
{ value: "800", label: "УГАНДА" },
|
||||
{ value: "804", label: "УКРАИНА" },
|
||||
{ value: "807", label: "СЕВЕРНАЯ МАКЕДОНИЯ" },
|
||||
{ value: "818", label: "ЕГИПЕТ" },
|
||||
{ value: "826", label: "СОЕДИНЕННОЕ КОРОЛЕВСТВО" },
|
||||
{ value: "831", label: "ГЕРНСИ" },
|
||||
{ value: "832", label: "ДЖЕРСИ" },
|
||||
{ value: "833", label: "ОСТРОВ МЭН" },
|
||||
{ value: "834", label: "ТАНЗАНИЯ, ОБЪЕДИНЕННАЯ РЕСПУБЛИКА" },
|
||||
{ value: "840", label: "СОЕДИНЕННЫЕ ШТАТЫ" },
|
||||
{ value: "850", label: "ВИРГИНСКИЕ ОСТРОВА (США)" },
|
||||
{ value: "854", label: "БУРКИНА-ФАСО" },
|
||||
{ value: "858", label: "УРУГВАЙ" },
|
||||
{ value: "860", label: "УЗБЕКИСТАН" },
|
||||
{ value: "862", label: "ВЕНЕСУЭЛА (БОЛИВАРИАНСКАЯ РЕСПУБЛИКА)" },
|
||||
{ value: "876", label: "УОЛЛИС И ФУТУНА" },
|
||||
{ value: "882", label: "САМОА" },
|
||||
{ value: "887", label: "ЙЕМЕН" },
|
||||
{ value: "894", label: "ЗАМБИЯ" },
|
||||
{ value: "895", label: "АБХАЗИЯ" },
|
||||
{ value: "896", label: "ЮЖНАЯ ОСЕТИЯ" },
|
||||
{ value: "897", label: "ДНР" },
|
||||
{ value: "898", label: "ЛНР" },
|
||||
];
|
||||
251
pages/questionnaire/components/forms/countries.js
Normal file
251
pages/questionnaire/components/forms/countries.js
Normal file
@ -0,0 +1,251 @@
|
||||
export default [
|
||||
{ label: "Австралия", value: "Австралия" },
|
||||
{ label: "Австрия", value: "Австрия" },
|
||||
{ label: "Азербайджан", value: "Азербайджан" },
|
||||
{ label: "Аландские о-ва", value: "Аландские о-ва" },
|
||||
{ label: "Албания", value: "Албания" },
|
||||
{ label: "Алжир", value: "Алжир" },
|
||||
{ label: "Американское Самоа", value: "Американское Самоа" },
|
||||
{ label: "Ангилья", value: "Ангилья" },
|
||||
{ label: "Ангола", value: "Ангола" },
|
||||
{ label: "Андорра", value: "Андорра" },
|
||||
{ label: "Антарктида", value: "Антарктида" },
|
||||
{ label: "Антигуа и Барбуда", value: "Антигуа и Барбуда" },
|
||||
{ label: "Аргентина", value: "Аргентина" },
|
||||
{ label: "Армения", value: "Армения" },
|
||||
{ label: "Аруба", value: "Аруба" },
|
||||
{ label: "Афганистан", value: "Афганистан" },
|
||||
{ label: "Багамы", value: "Багамы" },
|
||||
{ label: "Бангладеш", value: "Бангладеш" },
|
||||
{ label: "Барбадос", value: "Барбадос" },
|
||||
{ label: "Бахрейн", value: "Бахрейн" },
|
||||
{ label: "Беларусь", value: "Беларусь" },
|
||||
{ label: "Белиз", value: "Белиз" },
|
||||
{ label: "Бельгия", value: "Бельгия" },
|
||||
{ label: "Бенин", value: "Бенин" },
|
||||
{ label: "Бермудские о-ва", value: "Бермудские о-ва" },
|
||||
{ label: "Болгария", value: "Болгария" },
|
||||
{ label: "Боливия", value: "Боливия" },
|
||||
{ label: "Бонэйр, Синт-Эстатиус и Саба", value: "Бонэйр, Синт-Эстатиус и Саба" },
|
||||
{ label: "Босния и Герцеговина", value: "Босния и Герцеговина" },
|
||||
{ label: "Ботсвана", value: "Ботсвана" },
|
||||
{ label: "Бразилия", value: "Бразилия" },
|
||||
{ label: "Британская территория в Индийском океане", value: "Британская территория в Индийском океане" },
|
||||
{ label: "Бруней-Даруссалам", value: "Бруней-Даруссалам" },
|
||||
{ label: "Буркина-Фасо", value: "Буркина-Фасо" },
|
||||
{ label: "Бурунди", value: "Бурунди" },
|
||||
{ label: "Бутан", value: "Бутан" },
|
||||
{ label: "Вануату", value: "Вануату" },
|
||||
{ label: "Ватикан", value: "Ватикан" },
|
||||
{ label: "Великобритания", value: "Великобритания" },
|
||||
{ label: "Венгрия", value: "Венгрия" },
|
||||
{ label: "Венесуэла", value: "Венесуэла" },
|
||||
{ label: "Виргинские о-ва", value: "Виргинские о-ва" },
|
||||
{ label: "Виргинские о-ва", value: "Виргинские о-ва" },
|
||||
{ label: "Внешние малые о-ва", value: "Внешние малые о-ва" },
|
||||
{ label: "Восточный Тимор", value: "Восточный Тимор" },
|
||||
{ label: "Вьетнам", value: "Вьетнам" },
|
||||
{ label: "Габон", value: "Габон" },
|
||||
{ label: "Гаити", value: "Гаити" },
|
||||
{ label: "Гайана", value: "Гайана" },
|
||||
{ label: "Гамбия", value: "Гамбия" },
|
||||
{ label: "Гана", value: "Гана" },
|
||||
{ label: "Гваделупа", value: "Гваделупа" },
|
||||
{ label: "Гватемала", value: "Гватемала" },
|
||||
{ label: "Гвинея", value: "Гвинея" },
|
||||
{ label: "Гвинея-Бисау", value: "Гвинея-Бисау" },
|
||||
{ label: "Германия", value: "Германия" },
|
||||
{ label: "Гернси", value: "Гернси" },
|
||||
{ label: "Гибралтар", value: "Гибралтар" },
|
||||
{ label: "Гондурас", value: "Гондурас" },
|
||||
{ label: "Гонконг", value: "Гонконг" },
|
||||
{ label: "Гренада", value: "Гренада" },
|
||||
{ label: "Гренландия", value: "Гренландия" },
|
||||
{ label: "Греция", value: "Греция" },
|
||||
{ label: "Грузия", value: "Грузия" },
|
||||
{ label: "Гуам", value: "Гуам" },
|
||||
{ label: "Дания", value: "Дания" },
|
||||
{ label: "Джерси", value: "Джерси" },
|
||||
{ label: "Джибути", value: "Джибути" },
|
||||
{ label: "Доминика", value: "Доминика" },
|
||||
{ label: "Доминиканская Республика", value: "Доминиканская Республика" },
|
||||
{ label: "Египет", value: "Египет" },
|
||||
{ label: "Замбия", value: "Замбия" },
|
||||
{ label: "Западная Сахара", value: "Западная Сахара" },
|
||||
{ label: "Зимбабве", value: "Зимбабве" },
|
||||
{ label: "Израиль", value: "Израиль" },
|
||||
{ label: "Индия", value: "Индия" },
|
||||
{ label: "Индонезия", value: "Индонезия" },
|
||||
{ label: "Иордания", value: "Иордания" },
|
||||
{ label: "Ирак", value: "Ирак" },
|
||||
{ label: "Иран", value: "Иран" },
|
||||
{ label: "Ирландия", value: "Ирландия" },
|
||||
{ label: "Исландия", value: "Исландия" },
|
||||
{ label: "Испания", value: "Испания" },
|
||||
{ label: "Италия", value: "Италия" },
|
||||
{ label: "Йемен", value: "Йемен" },
|
||||
{ label: "Кабо-Верде", value: "Кабо-Верде" },
|
||||
{ label: "Казахстан", value: "Казахстан" },
|
||||
{ label: "Камбоджа", value: "Камбоджа" },
|
||||
{ label: "Камерун", value: "Камерун" },
|
||||
{ label: "Канада", value: "Канада" },
|
||||
{ label: "Катар", value: "Катар" },
|
||||
{ label: "Кения", value: "Кения" },
|
||||
{ label: "Кипр", value: "Кипр" },
|
||||
{ label: "Киргизия", value: "Киргизия" },
|
||||
{ label: "Кирибати", value: "Кирибати" },
|
||||
{ label: "Китай", value: "Китай" },
|
||||
{ label: "КНДР", value: "КНДР" },
|
||||
{ label: "Кокосовые о-ва", value: "Кокосовые о-ва" },
|
||||
{ label: "Колумбия", value: "Колумбия" },
|
||||
{ label: "Коморы", value: "Коморы" },
|
||||
{ label: "Конго - Браззавиль", value: "Конго - Браззавиль" },
|
||||
{ label: "Конго - Киншаса", value: "Конго - Киншаса" },
|
||||
{ label: "Коста-Рика", value: "Коста-Рика" },
|
||||
{ label: "Кот-д’Ивуар", value: "Кот-д’Ивуар" },
|
||||
{ label: "Куба", value: "Куба" },
|
||||
{ label: "Кувейт", value: "Кувейт" },
|
||||
{ label: "Кюрасао", value: "Кюрасао" },
|
||||
{ label: "Лаос", value: "Лаос" },
|
||||
{ label: "Латвия", value: "Латвия" },
|
||||
{ label: "Лесото", value: "Лесото" },
|
||||
{ label: "Либерия", value: "Либерия" },
|
||||
{ label: "Ливан", value: "Ливан" },
|
||||
{ label: "Ливия", value: "Ливия" },
|
||||
{ label: "Литва", value: "Литва" },
|
||||
{ label: "Лихтенштейн", value: "Лихтенштейн" },
|
||||
{ label: "Люксембург", value: "Люксембург" },
|
||||
{ label: "Маврикий", value: "Маврикий" },
|
||||
{ label: "Мавритания", value: "Мавритания" },
|
||||
{ label: "Мадагаскар", value: "Мадагаскар" },
|
||||
{ label: "Майотта", value: "Майотта" },
|
||||
{ label: "Макао", value: "Макао" },
|
||||
{ label: "Малави", value: "Малави" },
|
||||
{ label: "Малайзия", value: "Малайзия" },
|
||||
{ label: "Мали", value: "Мали" },
|
||||
{ label: "Мальдивы", value: "Мальдивы" },
|
||||
{ label: "Мальта", value: "Мальта" },
|
||||
{ label: "Марокко", value: "Марокко" },
|
||||
{ label: "Мартиника", value: "Мартиника" },
|
||||
{ label: "Маршалловы Острова", value: "Маршалловы Острова" },
|
||||
{ label: "Мексика", value: "Мексика" },
|
||||
{ label: "Мозамбик", value: "Мозамбик" },
|
||||
{ label: "Молдова", value: "Молдова" },
|
||||
{ label: "Монако", value: "Монако" },
|
||||
{ label: "Монголия", value: "Монголия" },
|
||||
{ label: "Монтсеррат", value: "Монтсеррат" },
|
||||
{ label: "Мьянма", value: "Мьянма" },
|
||||
{ label: "Намибия", value: "Намибия" },
|
||||
{ label: "Науру", value: "Науру" },
|
||||
{ label: "Непал", value: "Непал" },
|
||||
{ label: "Нигер", value: "Нигер" },
|
||||
{ label: "Нигерия", value: "Нигерия" },
|
||||
{ label: "Нидерланды", value: "Нидерланды" },
|
||||
{ label: "Никарагуа", value: "Никарагуа" },
|
||||
{ label: "Ниуэ", value: "Ниуэ" },
|
||||
{ label: "Новая Зеландия", value: "Новая Зеландия" },
|
||||
{ label: "Новая Каледония", value: "Новая Каледония" },
|
||||
{ label: "Норвегия", value: "Норвегия" },
|
||||
{ label: "о-в Буве", value: "о-в Буве" },
|
||||
{ label: "о-в Мэн", value: "о-в Мэн" },
|
||||
{ label: "о-в Норфолк", value: "о-в Норфолк" },
|
||||
{ label: "о-в Рождества", value: "о-в Рождества" },
|
||||
{ label: "о-в Св. Елены", value: "о-в Св. Елены" },
|
||||
{ label: "о-ва Питкэрн", value: "о-ва Питкэрн" },
|
||||
{ label: "о-ва Тёркс и Кайкос", value: "о-ва Тёркс и Кайкос" },
|
||||
{ label: "о-ва Херд и Макдональд", value: "о-ва Херд и Макдональд" },
|
||||
{ label: "ОАЭ", value: "ОАЭ" },
|
||||
{ label: "Оман", value: "Оман" },
|
||||
{ label: "Острова Кайман", value: "Острова Кайман" },
|
||||
{ label: "Острова Кука", value: "Острова Кука" },
|
||||
{ label: "Пакистан", value: "Пакистан" },
|
||||
{ label: "Палау", value: "Палау" },
|
||||
{ label: "Палестинские территории", value: "Палестинские территории" },
|
||||
{ label: "Панама", value: "Панама" },
|
||||
{ label: "Папуа — Новая Гвинея", value: "Папуа — Новая Гвинея" },
|
||||
{ label: "Парагвай", value: "Парагвай" },
|
||||
{ label: "Перу", value: "Перу" },
|
||||
{ label: "Польша", value: "Польша" },
|
||||
{ label: "Португалия", value: "Португалия" },
|
||||
{ label: "Пуэрто-Рико", value: "Пуэрто-Рико" },
|
||||
{ label: "Республика Корея", value: "Республика Корея" },
|
||||
{ label: "Реюньон", value: "Реюньон" },
|
||||
{ label: "Россия", value: "Россия" },
|
||||
{ label: "Руанда", value: "Руанда" },
|
||||
{ label: "Румыния", value: "Румыния" },
|
||||
{ label: "Сальвадор", value: "Сальвадор" },
|
||||
{ label: "Самоа", value: "Самоа" },
|
||||
{ label: "Сан-Марино", value: "Сан-Марино" },
|
||||
{ label: "Сан-Томе и Принсипи", value: "Сан-Томе и Принсипи" },
|
||||
{ label: "Саудовская Аравия", value: "Саудовская Аравия" },
|
||||
{ label: "Северная Македония", value: "Северная Македония" },
|
||||
{ label: "Северные Марианские о-ва", value: "Северные Марианские о-ва" },
|
||||
{ label: "Сейшельские Острова", value: "Сейшельские Острова" },
|
||||
{ label: "Сен-Бартелеми", value: "Сен-Бартелеми" },
|
||||
{ label: "Сен-Мартен", value: "Сен-Мартен" },
|
||||
{ label: "Сен-Пьер и Микелон", value: "Сен-Пьер и Микелон" },
|
||||
{ label: "Сенегал", value: "Сенегал" },
|
||||
{ label: "Сент-Винсент и Гренадины", value: "Сент-Винсент и Гренадины" },
|
||||
{ label: "Сент-Китс и Невис", value: "Сент-Китс и Невис" },
|
||||
{ label: "Сент-Люсия", value: "Сент-Люсия" },
|
||||
{ label: "Сербия", value: "Сербия" },
|
||||
{ label: "Сингапур", value: "Сингапур" },
|
||||
{ label: "Синт-Мартен", value: "Синт-Мартен" },
|
||||
{ label: "Сирия", value: "Сирия" },
|
||||
{ label: "Словакия", value: "Словакия" },
|
||||
{ label: "Словения", value: "Словения" },
|
||||
{ label: "Соединенные Штаты", value: "Соединенные Штаты" },
|
||||
{ label: "Соломоновы Острова", value: "Соломоновы Острова" },
|
||||
{ label: "Сомали", value: "Сомали" },
|
||||
{ label: "Судан", value: "Судан" },
|
||||
{ label: "Суринам", value: "Суринам" },
|
||||
{ label: "Сьерра-Леоне", value: "Сьерра-Леоне" },
|
||||
{ label: "Таджикистан", value: "Таджикистан" },
|
||||
{ label: "Таиланд", value: "Таиланд" },
|
||||
{ label: "Тайвань", value: "Тайвань" },
|
||||
{ label: "Танзания", value: "Танзания" },
|
||||
{ label: "Того", value: "Того" },
|
||||
{ label: "Токелау", value: "Токелау" },
|
||||
{ label: "Тонга", value: "Тонга" },
|
||||
{ label: "Тринидад и Тобаго", value: "Тринидад и Тобаго" },
|
||||
{ label: "Тувалу", value: "Тувалу" },
|
||||
{ label: "Тунис", value: "Тунис" },
|
||||
{ label: "Туркменистан", value: "Туркменистан" },
|
||||
{ label: "Турция", value: "Турция" },
|
||||
{ label: "Уганда", value: "Уганда" },
|
||||
{ label: "Узбекистан", value: "Узбекистан" },
|
||||
{ label: "Украина", value: "Украина" },
|
||||
{ label: "Уоллис и Футуна", value: "Уоллис и Футуна" },
|
||||
{ label: "Уругвай", value: "Уругвай" },
|
||||
{ label: "Фарерские о-ва", value: "Фарерские о-ва" },
|
||||
{ label: "Федеративные Штаты Микронезии", value: "Федеративные Штаты Микронезии" },
|
||||
{ label: "Фиджи", value: "Фиджи" },
|
||||
{ label: "Филиппины", value: "Филиппины" },
|
||||
{ label: "Финляндия", value: "Финляндия" },
|
||||
{ label: "Фолклендские о-ва", value: "Фолклендские о-ва" },
|
||||
{ label: "Франция", value: "Франция" },
|
||||
{ label: "Французская Гвиана", value: "Французская Гвиана" },
|
||||
{ label: "Французская Полинезия", value: "Французская Полинезия" },
|
||||
{ label: "Французские Южные территории", value: "Французские Южные территории" },
|
||||
{ label: "Хорватия", value: "Хорватия" },
|
||||
{ label: "Центрально-Африканская Республика", value: "Центрально-Африканская Республика" },
|
||||
{ label: "Чад", value: "Чад" },
|
||||
{ label: "Черногория", value: "Черногория" },
|
||||
{ label: "Чехия", value: "Чехия" },
|
||||
{ label: "Чили", value: "Чили" },
|
||||
{ label: "Швейцария", value: "Швейцария" },
|
||||
{ label: "Швеция", value: "Швеция" },
|
||||
{ label: "Шпицберген и Ян-Майен", value: "Шпицберген и Ян-Майен" },
|
||||
{ label: "Шри-Ланка", value: "Шри-Ланка" },
|
||||
{ label: "Эквадор", value: "Эквадор" },
|
||||
{ label: "Экваториальная Гвинея", value: "Экваториальная Гвинея" },
|
||||
{ label: "Эритрея", value: "Эритрея" },
|
||||
{ label: "Эсватини", value: "Эсватини" },
|
||||
{ label: "Эстония", value: "Эстония" },
|
||||
{ label: "Эфиопия", value: "Эфиопия" },
|
||||
{ label: "Южная Георгия и Южные Сандвичевы о-ва", value: "Южная Георгия и Южные Сандвичевы о-ва" },
|
||||
{ label: "Южно-Африканская Республика", value: "Южно-Африканская Республика" },
|
||||
{ label: "Южный Судан", value: "Южный Судан" },
|
||||
{ label: "Ямайка", value: "Ямайка" },
|
||||
{ label: "Япония", value: "Япония" },
|
||||
];
|
||||
@ -15,7 +15,7 @@ import InnerMenu from "./components/InnerMenu";
|
||||
import Header from '../components/Header';
|
||||
import Footer from '../components/Footer';
|
||||
|
||||
import { sendPhoneChangeNumber, sendPhoneChangeNumberSmsCode, setUserPhone } from '../../actions';
|
||||
import { sendPhoneChangeNumber, sendPhoneChangeNumberSmsCode, setUserPhone, getQuestionnaire } from '../../actions';
|
||||
import AccountLayout from "../components/Layout/Account";
|
||||
import Form_1_Main from "./components/forms/Form_1_Main";
|
||||
import Form_2_Contacts from "./components/forms/Form_2_Contacts";
|
||||
@ -40,6 +40,7 @@ class QuestionnairePage extends React.Component
|
||||
|
||||
componentDidMount()
|
||||
{
|
||||
getQuestionnaire({ dispatch: this.props.dispatch });
|
||||
}
|
||||
|
||||
_handle_onPhoneSubmit = (event) =>
|
||||
|
||||
@ -121,6 +121,7 @@ export const defaultState = {
|
||||
collective_executive: "",
|
||||
individual_executive: "",
|
||||
other_control: "",
|
||||
nko: false,
|
||||
},
|
||||
legal_address: {
|
||||
title: "",
|
||||
@ -204,6 +205,7 @@ export const defaultState = {
|
||||
jobtitle: "",
|
||||
telephone: "",
|
||||
email: "",
|
||||
founder_from_list: true,
|
||||
founder_number: "",
|
||||
founder_part: "",
|
||||
is_beneficial: false,
|
||||
@ -224,7 +226,7 @@ export const defaultState = {
|
||||
}
|
||||
}
|
||||
},
|
||||
founded_persons: [],
|
||||
founded_persons: [],
|
||||
client_contacts: {
|
||||
lastname: "",
|
||||
firstname: "",
|
||||
|
||||
@ -21,7 +21,7 @@ const questionnaireReducer = (state = initialState.questionnaire, action) =>
|
||||
{
|
||||
return {
|
||||
...state,
|
||||
questionnaire: action.data.questionnaire,
|
||||
...action.data.questionnaire,
|
||||
};
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ const questionnaireReducer = (state = initialState.questionnaire, action) =>
|
||||
{
|
||||
return {
|
||||
...state,
|
||||
questionnaire: action.data.questionnaire,
|
||||
...action.data.questionnaire,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
62
yarn.lock
62
yarn.lock
@ -198,6 +198,18 @@
|
||||
minimatch "^3.1.2"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@floating-ui/core@^1.2.4":
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.4.tgz#89e6311b021190c9e121fcf20306e76ac66e4066"
|
||||
integrity sha512-SQOeVbMwb1di+mVWWJLpsUTToKfqVNioXys011beCAhyOIFtS+GQoW4EQSneuxzmQKddExDwQ+X0hLl4lJJaSQ==
|
||||
|
||||
"@floating-ui/dom@^1.0.1":
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.5.tgz#c9ec259a24ce0958b1ea29674df4eee4455361a9"
|
||||
integrity sha512-+sAUfpQ3Frz+VCbPCqj+cZzvEESy3fjSeT/pDWkYCWOBXYNNKZfuVsHuv8/JO2zze8+Eb/Q7a6hZVgzS81fLbQ==
|
||||
dependencies:
|
||||
"@floating-ui/core" "^1.2.4"
|
||||
|
||||
"@hapi/accept@5.0.2":
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523"
|
||||
@ -675,6 +687,14 @@ babel-plugin-macros@^3.1.0:
|
||||
cosmiconfig "^7.0.0"
|
||||
resolve "^1.19.0"
|
||||
|
||||
babel-runtime@6.x.x:
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
|
||||
integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==
|
||||
dependencies:
|
||||
core-js "^2.4.0"
|
||||
regenerator-runtime "^0.11.0"
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
@ -1056,6 +1076,11 @@ core-js-pure@^3.20.2:
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.1.tgz#8839dde5da545521bf282feb7dc6d0b425f39fd3"
|
||||
integrity sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==
|
||||
|
||||
core-js@^2.4.0:
|
||||
version "2.6.12"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||
@ -2593,10 +2618,10 @@ media-typer@0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
||||
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
|
||||
|
||||
memoize-one@^5.0.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
|
||||
integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
|
||||
memoize-one@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
|
||||
integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
@ -3295,6 +3320,13 @@ react-lifecycles-compat@^3.0.4:
|
||||
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
|
||||
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
|
||||
|
||||
react-no-ssr@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/react-no-ssr/-/react-no-ssr-1.1.0.tgz#313b48d2e26020f969ed98e472f10481604e3cc8"
|
||||
integrity sha512-3td8iPIEFKWXOJ3Ar5xURvZAsv/aIlngJLBH6fP5QC3WhsfuO2pn7WQR0ZlkTE0puWCL0RDEvXtOfAg4qMp+xA==
|
||||
dependencies:
|
||||
babel-runtime "6.x.x"
|
||||
|
||||
react-redux@^7.2.6:
|
||||
version "7.2.8"
|
||||
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de"
|
||||
@ -3312,18 +3344,20 @@ react-refresh@0.8.3:
|
||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
|
||||
integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
|
||||
|
||||
react-select@^5.4.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.4.0.tgz#81f6ac73906126706f104751ee14437bd16798f4"
|
||||
integrity sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg==
|
||||
react-select@^5.7.2:
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.2.tgz#ccd40071b9429277983bf15526e7a5773a060e09"
|
||||
integrity sha512-cTlJkQ8YjV6T/js8wW0owTzht0hHGABh29vjLscY4HfZGkv7hc3FFTmRp9NzY/Ib1uQ36GieAKEjxpHdpCFpcA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.0"
|
||||
"@emotion/cache" "^11.4.0"
|
||||
"@emotion/react" "^11.8.1"
|
||||
"@floating-ui/dom" "^1.0.1"
|
||||
"@types/react-transition-group" "^4.4.0"
|
||||
memoize-one "^5.0.0"
|
||||
memoize-one "^6.0.0"
|
||||
prop-types "^15.6.0"
|
||||
react-transition-group "^4.3.0"
|
||||
use-isomorphic-layout-effect "^1.1.2"
|
||||
|
||||
react-slick@^0.29.0:
|
||||
version "0.29.0"
|
||||
@ -3440,6 +3474,11 @@ redux@^4.0.0, redux@^4.1.2:
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
|
||||
regenerator-runtime@^0.11.0:
|
||||
version "0.11.1"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
||||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
||||
|
||||
regenerator-runtime@^0.13.4:
|
||||
version "0.13.9"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
|
||||
@ -4032,6 +4071,11 @@ url@^0.11.0:
|
||||
punycode "1.3.2"
|
||||
querystring "0.2.0"
|
||||
|
||||
use-isomorphic-layout-effect@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb"
|
||||
integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
|
||||
|
||||
use-subscription@1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user