add new api

This commit is contained in:
gerchek 2022-01-24 19:44:04 +05:00
parent e7d1ec4e7b
commit e4792c35b6
19 changed files with 451 additions and 184 deletions

View File

@ -1,19 +1,19 @@
{
"files": {
"main.css": "/static/css/main.9da85e93.chunk.css",
"main.js": "/static/js/main.e22cbd89.chunk.js",
"main.js.map": "/static/js/main.e22cbd89.chunk.js.map",
"main.js": "/static/js/main.0a000a59.chunk.js",
"main.js.map": "/static/js/main.0a000a59.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.2cdb2292.js",
"runtime-main.js.map": "/static/js/runtime-main.2cdb2292.js.map",
"static/css/2.d555f809.chunk.css": "/static/css/2.d555f809.chunk.css",
"static/js/2.a8778389.chunk.js": "/static/js/2.a8778389.chunk.js",
"static/js/2.a8778389.chunk.js.map": "/static/js/2.a8778389.chunk.js.map",
"static/js/2.eb2727ef.chunk.js": "/static/js/2.eb2727ef.chunk.js",
"static/js/2.eb2727ef.chunk.js.map": "/static/js/2.eb2727ef.chunk.js.map",
"static/js/3.f448a7ff.chunk.js": "/static/js/3.f448a7ff.chunk.js",
"static/js/3.f448a7ff.chunk.js.map": "/static/js/3.f448a7ff.chunk.js.map",
"index.html": "/index.html",
"static/css/2.d555f809.chunk.css.map": "/static/css/2.d555f809.chunk.css.map",
"static/css/main.9da85e93.chunk.css.map": "/static/css/main.9da85e93.chunk.css.map",
"static/js/2.a8778389.chunk.js.LICENSE.txt": "/static/js/2.a8778389.chunk.js.LICENSE.txt",
"static/js/2.eb2727ef.chunk.js.LICENSE.txt": "/static/js/2.eb2727ef.chunk.js.LICENSE.txt",
"static/media/airport.9ca79b5c.jpg": "/static/media/airport.9ca79b5c.jpg",
"static/media/downArrow.0bea9b11.svg": "/static/media/downArrow.0bea9b11.svg",
"static/media/emblemLogo.80dd243c.svg": "/static/media/emblemLogo.80dd243c.svg",
@ -29,10 +29,15 @@
"static/media/pricesImg_2.0e19c431.jpg": "/static/media/pricesImg_2.0e19c431.jpg",
"static/media/pricesImg_3-large.180082d1.jpg": "/static/media/pricesImg_3-large.180082d1.jpg",
"static/media/pricesImg_3.ab9d3003.jpg": "/static/media/pricesImg_3.ab9d3003.jpg",
"static/media/print.0f99bc56.svg": "/static/media/print.0f99bc56.svg",
"static/media/rightArrow.d964351e.svg": "/static/media/rightArrow.d964351e.svg",
"static/media/rightArrowBlue.731d3716.svg": "/static/media/rightArrowBlue.731d3716.svg",
"static/media/rightArrow_2.e4e5ebdf.svg": "/static/media/rightArrow_2.e4e5ebdf.svg",
"static/media/secondSliderImg.ddd26b68.jpg": "/static/media/secondSliderImg.ddd26b68.jpg",
"static/media/serviceRequest_1.ab87fb84.jpg": "/static/media/serviceRequest_1.ab87fb84.jpg",
"static/media/serviceRequest_2.403d8119.jpg": "/static/media/serviceRequest_2.403d8119.jpg",
"static/media/serviceRequest_3.0070353d.jpg": "/static/media/serviceRequest_3.0070353d.jpg",
"static/media/serviceRequest_4.405c4f86.jpg": "/static/media/serviceRequest_4.405c4f86.jpg",
"static/media/app.scss": "/static/media/sliderPrev.ca001cbb.svg",
"static/media/structureImg.551590c2.jpg": "/static/media/structureImg.551590c2.jpg",
"static/media/tdh.25d64290.jpg": "/static/media/tdh.25d64290.jpg",
@ -41,8 +46,8 @@
"entrypoints": [
"static/js/runtime-main.2cdb2292.js",
"static/css/2.d555f809.chunk.css",
"static/js/2.a8778389.chunk.js",
"static/js/2.eb2727ef.chunk.js",
"static/css/main.9da85e93.chunk.css",
"static/js/main.e22cbd89.chunk.js"
"static/js/main.0a000a59.chunk.js"
]
}

View File

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Etalon</title><link href="/static/css/2.d555f809.chunk.css" rel="stylesheet"><link href="/static/css/main.9da85e93.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,a,i=t[0],c=t[1],l=t[2],s=0,p=[];s<i.length;s++)a=i[s],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,l||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,i=1;i<r.length;i++){var c=r[i];0!==o[c]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={1:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{3:"f448a7ff"}[e]+".chunk.js"}(e);var c=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(l);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,r[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var i=this["webpackJsonpreact-etalon"]=this["webpackJsonpreact-etalon"]||[],c=i.push.bind(i);i.push=t,i=i.slice();for(var l=0;l<i.length;l++)t(i[l]);var f=c;r()}([])</script><script src="/static/js/2.a8778389.chunk.js"></script><script src="/static/js/main.e22cbd89.chunk.js"></script></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Etalon</title><link href="/static/css/2.d555f809.chunk.css" rel="stylesheet"><link href="/static/css/main.9da85e93.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,a,i=t[0],c=t[1],l=t[2],s=0,p=[];s<i.length;s++)a=i[s],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,l||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,i=1;i<r.length;i++){var c=r[i];0!==o[c]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={1:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{3:"f448a7ff"}[e]+".chunk.js"}(e);var c=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(l);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,r[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var i=this["webpackJsonpreact-etalon"]=this["webpackJsonpreact-etalon"]||[],c=i.push.bind(i);i.push=t,i=i.slice();for(var l=0;l<i.length;l++)t(i[l]);var f=c;r()}([])</script><script src="/static/js/2.eb2727ef.chunk.js"></script><script src="/static/js/main.0a000a59.chunk.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
<svg id="print" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25">
<path id="Контур_591" data-name="Контур 591" d="M21.338,6.3h-.684V3.662A3.666,3.666,0,0,0,16.992,0H8.008A3.666,3.666,0,0,0,4.346,3.662V6.3H3.662A3.666,3.666,0,0,0,0,9.961V15.82a3.666,3.666,0,0,0,3.662,3.662h.684V22.8a2.2,2.2,0,0,0,2.2,2.2H18.457a2.2,2.2,0,0,0,2.2-2.2v-3.32h.684A3.666,3.666,0,0,0,25,15.82V9.961A3.666,3.666,0,0,0,21.338,6.3ZM5.811,3.662a2.2,2.2,0,0,1,2.2-2.2h8.984a2.2,2.2,0,0,1,2.2,2.2V6.3H5.811ZM19.189,22.8a.733.733,0,0,1-.732.732H6.543a.733.733,0,0,1-.732-.732V15.576H19.189Zm4.346-6.982a2.2,2.2,0,0,1-2.2,2.2h-.684V15.576h.439a.732.732,0,0,0,0-1.465H3.906a.732.732,0,0,0,0,1.465h.439v2.441H3.662a2.2,2.2,0,0,1-2.2-2.2V9.961a2.2,2.2,0,0,1,2.2-2.2H21.338a2.2,2.2,0,0,1,2.2,2.2Z" fill="#fff"/>
<path id="Контур_592" data-name="Контур 592" d="M205.639,353h-3.906a.732.732,0,0,0,0,1.465h3.906a.732.732,0,0,0,0-1.465Z" transform="translate(-191.186 -335.764)" fill="#fff"/>
<path id="Контур_593" data-name="Контур 593" d="M205.639,417h-3.906a.732.732,0,1,0,0,1.465h3.906a.732.732,0,1,0,0-1.465Z" transform="translate(-191.186 -396.639)" fill="#fff"/>
<path id="Контур_594" data-name="Контур 594" d="M68.076,193H65.732a.732.732,0,0,0,0,1.465h2.344a.732.732,0,0,0,0-1.465Z" transform="translate(-61.826 -183.576)" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -121,9 +121,6 @@ class MeasuringRegister extends React.Component {
{items.map(item=>(
<tr key={item.id}>
<td>
<span>{ item.id }</span>
</td>
<td>
<span>{ item.certificate_no }</span>
</td>
@ -136,6 +133,9 @@ class MeasuringRegister extends React.Component {
<td>
<span>{ item.manufacture }</span>
</td>
<td>
<span>{ item.valid }</span>
</td>
</tr>
))}

View File

@ -1,6 +1,10 @@
// IMPORT MODULES
import React, { useEffect } from "react";
import { withTranslation } from 'react-i18next';
import parse from 'html-react-parser';
import i18n from '../i18n';
// IMPORT COMPONENTS
import Breadcrumb from "../components/Global/Breadcrumb";
@ -10,172 +14,185 @@ import Loop from "../svg/loupe.svg";
import Next from "../svg/next.svg";
import Prev from "../svg/prev.svg";
const Regulations = (props) => {
const {t} = props;
useEffect(() => {
window.scrollTo(0, 0);
}, []);
return (
<section className="regulations">
<Breadcrumb
path_1={t('Реестр нормативной документации')}
currentUrl="/measuring_regulations"
/>
<div className="container">
<div className="regulations-inner">
<div className="regulations-head">
<div className="regulations-head-left">
<form className="search-form">
<input type="text" placeholder="Поиск" />
<button type="button">
<div>
<img src={Loop} alt="Loop" />
</div>
</button>
</form>
</div>
<div className="regulations-head-right">
<form className="btn-form">
<button type="button" className="button-prev regulations-btn">
<div>
<img src={Prev} alt="Previous" />
</div>
</button>
<button type="button" className="button-right regulations-btn">
<div>
<img src={Next} alt="Next" />
</div>
</button>
</form>
// const Regulations = (props) => {
// const {t} = props;
// useEffect(() => {
// window.scrollTo(0, 0);
// }, []);
class Regulations extends React.Component {
constructor(props) {
super(props);
this.state = {
items: [],
DataisLoaded: false,
error: null
};
}
componentDidMount() {
this._mounted = true
this.makeRemoteRequest();
}
componentWillUnmount() {
this._mounted = false
}
makeRemoteRequest = () => {
const url = `http://217.174.238.204:8888/api/v1/reestr_doc`
if (this._mounted) {
this.setState({ DataisLoaded: true });
}
setTimeout(() => {
fetch(url, {
method: 'GET',
})
.then(res => res.json())
.then(res => {
if (this._mounted) {
this.setState({
items: res.data,
error: res.message || null,
DataisLoaded: true,
})
// console.log(this.state.items[0]['translations'][1]['attribute_data'])
}
})
.catch(error => {
if (this._mounted) {
this.setState({ error, DataisLoaded: false});
}
});
}, 1500);
};
render() {
const { t } = this.props;
var {DataisLoaded, items} = this.state;
if(!DataisLoaded){
return <div>Loading ....</div>
}else{
return (
<section className="regulations">
<Breadcrumb
path_1={t('Реестр нормативной документации')}
currentUrl="/measuring_regulations"
/>
<div className="container">
<div className="regulations-inner">
<div className="regulations-head">
<div className="regulations-head-left">
<form className="search-form">
<input type="text" placeholder="Поиск" />
<button type="button">
<div>
<img src={Loop} alt="Loop" />
</div>
</button>
</form>
</div>
<div className="regulations-head-right">
<form className="btn-form">
<button type="button" className="button-prev regulations-btn">
<div>
<img src={Prev} alt="Previous" />
</div>
</button>
<button type="button" className="button-right regulations-btn">
<div>
<img src={Next} alt="Next" />
</div>
</button>
</form>
</div>
</div>
<div className="regulations-content">
<div className="structure-employees">
<table className="regulations-table structure-table">
<tbody>
<tr className="table-head">
<th className="n head">Т/ь</th>
<th className="number head">
Номер нормативной документации
</th>
<th className="replacedby head">Взамен НТД</th>
<th className="desc head">
Наименование нормативной документации
</th>
<th className="date head">Дата введения</th>
<th className="limit head">Срок действия</th>
<th className="limit head">Примечание</th>
</tr>
{items.map(item=>(
<tr>
<td>{item.id}</td>
<td>
{ i18n.language === 'en' &&
parse(item.document_number)
}
{ i18n.language === 'ru' &&
parse(item.document_number)
}
{ i18n.language === 'tm' &&
parse(JSON.parse(item['translations'][1]['attribute_data']).document_number )
}
</td>
<td>
{ i18n.language === 'en' &&
parse(item.instead)
}
{ i18n.language === 'ru' &&
parse(item.instead)
}
{ i18n.language === 'tm' &&
parse(JSON.parse(item['translations'][1]['attribute_data']).instead )
}
</td>
<td>
{/* {parse(item.name_of_documentation)} */}
{ i18n.language === 'en' &&
parse(item.name_of_documentation)
}
{ i18n.language === 'ru' &&
parse(item.name_of_documentation)
}
{ i18n.language === 'tm' &&
parse(JSON.parse(item['translations'][1]['attribute_data']).name_of_documentation )
}
</td>
<td>{item.introduction_date}</td>
<td>{item.validity}</td>
<td>{item.note}</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</div>
</div>
<div className="regulations-content">
<div className="structure-employees">
<table className="regulations-table structure-table">
<tbody>
<tr className="table-head">
<th className="n head">Т/ь</th>
<th className="number head">
Номер нормативной документации
</th>
<th className="replacedby head">Взамен НТД</th>
<th className="desc head">
Номер нормативной документации
</th>
<th className="date head">Дата введения</th>
<th className="limit head">Срок действия</th>
</tr>
<tr>
<td>1</td>
<td>GR 16162325-87 -2017</td>
<td>Взамен РД 52.04.234-89 </td>
<td>
Методические указания Измеритель высоты нижней границы
облаков. Методика поверки
</td>
<td>01.07.2017</td>
<td>-</td>
</tr>
<tr>
<td>2</td>
<td>GR 16162325-88-2017</td>
<td>Введен впервые</td>
<td>
Барометры ртутные метрологические. Методические указания
по проведению поверки
</td>
<td>01.12.2017</td>
<td>-</td>
</tr>
<tr>
<td>3</td>
<td>GR 16162325-89-2017</td>
<td>Взамен МИ-1908-88</td>
<td>
Психрометры аспирационные Методические указания по
проведению поверки
</td>
<td>01.02.2018</td>
<td>-</td>
</tr>
<tr>
<td>4</td>
<td>GR 16162325-91-2017</td>
<td>Введен впервые</td>
<td>
Барографы метеорлогические анероидные. Методические
указания по проведению поверки
</td>
<td>20.01.2018</td>
<td>-</td>
</tr>
<tr>
<td>5</td>
<td>GR 16162325-90-2017</td>
<td>Взамен RD-52.04244-89</td>
<td>
Анеморумбометр М-63М-1 Методические указания по проведению
поверки
</td>
<td>20.01.2018</td>
<td>-</td>
</tr>
<tr>
<td>6</td>
<td>GR 16162325-93-2017</td>
<td>Введен впервые</td>
<td>
Барометры мембранные метеорологические Методические
указания по проведению поверки
</td>
<td>01.05.2018</td>
<td>-</td>
</tr>
<tr>
<td>7</td>
<td>GR 16162325-94-2017</td>
<td>Введен впервые</td>
<td>
Барометры образцовые переносные типа БОП-1. Методические
указания по проведению поверки
</td>
<td>01.05.2018</td>
<td>-</td>
</tr>
<tr>
<td>8</td>
<td>TDS-5533-2013</td>
<td>ГОСТ 5533-2013</td>
<td>Стекло узорчатое. Технические условия.</td>
<td>31.05.2018</td>
<td>31.05.2023</td>
</tr>
<tr>
<td>9</td>
<td>TDS-32361-2013</td>
<td>ГОСТ 32361-2013</td>
<td>
Стекло и изделия из него. Пороки. Термины и определения
</td>
<td>31.05.2018</td>
<td>31.05.2023</td>
</tr>
<tr>
<td>10</td>
<td>TDS-32529-2013</td>
<td>ГОСТ 32529-2013</td>
<td>Стекло и изделия из него. Правила приемки</td>
<td>31.05.2018</td>
<td>31.05.2023</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
);
</section>
);
}
}
};
// export default Regulations;

View File

@ -6,6 +6,8 @@ import i18n from '../i18n';
// IMPORT COMPONENTS
import Breadcrumb from "../components/Global/Breadcrumb";
import Service_bottom from "./Service_bottom";
// IMPORT IMAGES
// import Print from "../svg/print.svg";
@ -84,7 +86,7 @@ class Service extends React.Component {
return <div>Loading ....</div>
}else{
console.log(this.state.items);
// console.log(this.state.items);
// useEffect(() => {
// window.scrollTo(0, 0);
@ -178,6 +180,107 @@ class Service extends React.Component {
</div>
</div>
<Service_bottom />
{/* <div className="service-bottom">
<div className="tab-header">
<h4 className="tab-header-text" id="tab-header-text">
Виды заявок
</h4>
<div className="tab-header-line"></div>
</div>
<div className="service-cards-wrapper">
<div
className="service-card"
onClick={() => {
window.open(Img1);
}}
>
<div className="service-abs">
<div>
<img src={Print} alt="Print" />
</div>
</div>
<div className="service-card-top">
<a href={Img1} download={Img1}>
<div className="service-img-wrapper">
<img src={Img1} alt="Request1" />
</div>
</a>
</div>
<div className="service-card-bottom">
<h4 className="service-card-title">Заявка на поверку</h4>
</div>
</div>
<div
className="service-card"
onClick={() => {
window.open(Img2);
}}
>
<div className="service-abs">
<div>
<img src={Print} alt="Print" />
</div>
</div>
<div className="service-card-top">
<a href={Img2} download={Img2}>
<div className="service-img-wrapper">
<img src={Img2} alt="Request2" />
</div>
</a>
</div>
<div className="service-card-bottom">
<h4 className="service-card-title">Заявка на поверку</h4>
</div>
</div>
<div
className="service-card"
onClick={() => {
window.open(Img3);
}}
>
<div className="service-abs">
<div>
<img src={Print} alt="Print" />
</div>
</div>
<div className="service-card-top">
<a href={Img3} download={Img3}>
<div className="service-img-wrapper">
<img src={Img3} alt="Request3" />
</div>
</a>
</div>
<div className="service-card-bottom">
<h4 className="service-card-title">Заявка на поверку</h4>
</div>
</div>
<div
className="service-card"
onClick={() => {
window.open(Img4);
}}
>
<div className="service-abs">
<div>
<img src={Print} alt="Print" />
</div>
</div>
<div className="service-card-top">
<a href={Img4} download={Img4}>
<div className="service-img-wrapper">
<img src={Img4} alt="Request4" />
</div>
</a>
</div>
<div className="service-card-bottom">
<h4 className="service-card-title">Заявка на поверку</h4>
</div>
</div>
</div>
</div> */}
</div>
</div>
</section>

136
src/pages/Service_bottom.js Normal file
View File

@ -0,0 +1,136 @@
// IMPORT MODULES
import React from "react";
import { withTranslation } from 'react-i18next';
import i18n from '../i18n';
// IMPORT COMPONENTS
// import Breadcrumb from "../components/Global/Breadcrumb";
// IMPORT IMAGES
import Print from "../svg/print.svg";
import Img1 from "../img/serviceRequest_1.jpg";
import Img2 from "../img/serviceRequest_2.jpg";
import Img3 from "../img/serviceRequest_3.jpg";
import Img4 from "../img/serviceRequest_4.jpg";
// const Service = (props) => {
// const {t} = props;
class Service_bottom extends React.Component {
constructor(props) {
super(props);
this.state = {
items: [],
DataisLoaded: false,
error: null
};
}
componentDidMount() {
this._mounted = true
this.makeRemoteRequest();
}
componentWillUnmount() {
this._mounted = false
}
makeRemoteRequest = () => {
const url = `http://217.174.238.204:8888/api/v1/wid_zayawok`;
if (this._mounted) {
this.setState({ DataisLoaded: true });
}
setTimeout(() => {
fetch(url, {
method: 'GET',
})
.then(res => res.json())
.then(res => {
if (this._mounted) {
this.setState({
items: res.data,
error: res.message || null,
DataisLoaded: true,
})
// console.log(res.data[0]['data'][0])
// console.log(this.state.items)
}
})
.catch(error => {
if (this._mounted) {
this.setState({ error, DataisLoaded: false});
}
});
}, 1500);
};
render() {
const { t } = this.props;
var {DataisLoaded, items} = this.state;
if(!DataisLoaded){
return <div>Loading ....</div>
}else{
console.log(this.state.items);
return (
<div className="service-bottom">
<div className="tab-header">
<h4 className="tab-header-text" id="tab-header-text">
Виды заявок
</h4>
<div className="tab-header-line"></div>
</div>
<div className="service-cards-wrapper">
{items.map(item=>(
<div
className="service-card"
onClick={() => {
window.open(item.image.path);
}}
>
<div className="service-abs">
<div>
<img src={Print} alt="Print" />
</div>
</div>
<div className="service-card-top">
<a href={item.image.path} download>
<div className="service-img-wrapper">
<img src={item.image.path} alt="Request1" />
</div>
</a>
</div>
<div className="service-card-bottom">
<h4 className="service-card-title">{item.title}</h4>
</div>
</div>
))}
</div>
</div>
);
}
}
};
// export default Service;
export default withTranslation()(Service_bottom);