187 lines
5.8 KiB
JavaScript
187 lines
5.8 KiB
JavaScript
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 { withRouter } from 'next/router';
|
||
import { reduxWrapper } from '../store';
|
||
|
||
import Header from './components/Header';
|
||
import Footer from './components/Footer';
|
||
|
||
|
||
class IndexPage extends React.Component
|
||
{
|
||
constructor(props)
|
||
{
|
||
super(props);
|
||
}
|
||
|
||
render()
|
||
{
|
||
return (
|
||
<React.Fragment>
|
||
<Head>
|
||
<title>ЛК Эволюция автолизинга</title>
|
||
<meta
|
||
name="description"
|
||
content="ЛК Эволюция автолизинга"
|
||
/>
|
||
</Head>
|
||
<Header { ...this.props }/>
|
||
<main>
|
||
<section>
|
||
<div className="clear"></div>
|
||
<div className="container">
|
||
<h1 className="section_title">Личный кабинет</h1>
|
||
<div className="contract_search">
|
||
<form>
|
||
<div className="form_field">
|
||
<input type="search" value="" placeholder="Поиск" onChange={ () => {} }/>
|
||
</div>
|
||
<div className="form_field">
|
||
<input type="text" className="date_input" value="" placeholder="Дата начала договора" onFocus={ () => { /*(this.type='date')*/ } } onBlur={ () => { /*(this.value == '' ? this.type='text' : this.type='date')*/ } } onChange={ () => {} }/>
|
||
</div>
|
||
<div className="form_field">
|
||
<input type="text" className="date_input" value="" placeholder="Дата окончания договора" onFocus={ () => { /*(this.type='date')*/ } } onBlur={ () => { /*(this.value == '' ? this.type='text' : this.type='date')*/ } } onChange={ () => {} }/>
|
||
</div>
|
||
<button className="button" disabled>Поиск</button>
|
||
</form>
|
||
</div>
|
||
<div className="contract_table">
|
||
<div className="table_row table_header">
|
||
<div className="table_cell caret">Номер договора</div>
|
||
<div className="table_cell caret">Дата договора</div>
|
||
<div className="table_cell">Автомобиль</div>
|
||
<div className="table_cell">Гос.номер</div>
|
||
<div className="table_cell">Vin</div>
|
||
<div className="table_cell caret">Статус</div>
|
||
<div className="table_cell">Следующий платеж</div>
|
||
</div>
|
||
<div className="table_row">
|
||
<div className="table_cell"><Link href={`/contract/${ "1234-2021" }/payments`}>Договор № 1234-2021</Link></div>
|
||
<div className="table_cell">21.02.2021</div>
|
||
<div className="table_cell">Lada Granta седан Standard 1.6 87hp 5MT</div>
|
||
<div className="table_cell">Х 123 АМ 777</div>
|
||
<div className="table_cell">4USBT53544LT26841</div>
|
||
<div className="table_cell">
|
||
<p className="closed">Закрыт</p>
|
||
</div>
|
||
<div className="table_cell">
|
||
20/01/2021
|
||
<b className="price">45,000 р.</b>
|
||
</div>
|
||
</div>
|
||
<div className="table_row">
|
||
<div className="table_cell"><Link href={`/contract/${ "1234-2022" }/payments`}>Договор № 1234-2022</Link></div>
|
||
<div className="table_cell">21.02.2021</div>
|
||
<div className="table_cell">Lada Granta седан Standard 1.6 87hp 5MT</div>
|
||
<div className="table_cell">Х 123 АМ 777</div>
|
||
<div className="table_cell">4USBT53544LT26841</div>
|
||
<div className="table_cell">
|
||
<p className="opened">Действующий</p>
|
||
</div>
|
||
<div className="table_cell">
|
||
20/01/2021
|
||
<b className="price">45,000 р.</b>
|
||
</div>
|
||
</div>
|
||
<div className="table_row">
|
||
<div className="table_cell"><Link href={`/contract/${ "1234-2023" }/payments`}>Договор № 1234-2023</Link></div>
|
||
<div className="table_cell">21.02.2021</div>
|
||
<div className="table_cell">Lada Granta седан Standard 1.6 87hp 5MT</div>
|
||
<div className="table_cell">Х 123 АМ 777</div>
|
||
<div className="table_cell">4USBT53544LT26841</div>
|
||
<div className="table_cell">
|
||
<p className="closed">Закрыт</p>
|
||
</div>
|
||
<div className="table_cell">
|
||
20/01/2021
|
||
<b className="price">45,000 р.</b>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div className="pagination">
|
||
<ul>
|
||
<li>
|
||
<a href="#">1</a>
|
||
</li>
|
||
<li>
|
||
<a href="#">2</a>
|
||
</li>
|
||
<li>
|
||
<a href="#">3</a>
|
||
</li>
|
||
<li>
|
||
<a href="#">4</a>
|
||
</li>
|
||
<li>
|
||
<a href="#">5</a>
|
||
</li>
|
||
<li>
|
||
<a href="#">6</a>
|
||
</li>
|
||
<li>........</li>
|
||
<li>
|
||
<a href="#">123</a>
|
||
</li>
|
||
<li>
|
||
<a href="#">{`>`}</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
<Footer/>
|
||
</React.Fragment>
|
||
)
|
||
}
|
||
}
|
||
|
||
function mapStateToProps(state, ownProps)
|
||
{
|
||
return {
|
||
contracts: state.contracts.list,
|
||
page: state.contracts.page,
|
||
pages: state.contracts.pages,
|
||
}
|
||
}
|
||
|
||
export const getServerSideProps = reduxWrapper.getServerSideProps(store =>
|
||
async ({ req, res, query }) =>
|
||
{
|
||
let props = {};
|
||
|
||
if(req.headers.cookie !== undefined)
|
||
{
|
||
const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : "");
|
||
|
||
if(cookies.jwt === undefined || cookies.jwt === null)
|
||
{
|
||
res.statusCode = 302;
|
||
res.setHeader('Location', `/login`);
|
||
}
|
||
else
|
||
{
|
||
//const tokenValid = await checkToken(cookies.jwt);
|
||
const tokenValid = true;
|
||
if(!tokenValid)
|
||
{
|
||
res.statusCode = 302;
|
||
res.setHeader('Location', `/login`);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
res.statusCode = 302;
|
||
res.setHeader('Location', `/login`);
|
||
}
|
||
|
||
return { props: props };
|
||
}
|
||
);
|
||
|
||
export default withRouter(connect(mapStateToProps)(IndexPage)); |