This commit is contained in:
xuyucheng 2022-04-12 17:03:33 +08:00
parent e12e9347de
commit 0ede53fd38
16 changed files with 116 additions and 912 deletions

View File

@ -1,9 +1,13 @@
import axios from 'axios'
import { message } from 'antd'
//请求超时设置
axios.defaults.timeout = 50000;
//请求Api
axios.defaults.baseURL = 'https://api.fecribd.com'
// 封装请求认证信息token和secret设置
axios.interceptors.request.use(config => {
const secret = "EZgo9ykxrYuBMYnYmmKIh"
const token = localStorage.getItem("token")
@ -16,6 +20,7 @@ axios.interceptors.request.use(config => {
Promise.reject(error)
})
// 封装响应
axios.interceptors.response.use(function (response) {
if (response.status === 200) {
return Promise.resolve(response);
@ -24,7 +29,6 @@ axios.interceptors.response.use(function (response) {
}
}, function (error) {
const { status } = error.response;
console.log(error.response)
if (status === 401) {
message.warning("认证失效,请重新登录");
localStorage.removeItem("token")
@ -77,6 +81,7 @@ const api = {
});
});
},
// blob格式的get请求用于文件请求
BlobGet: function (path = '') {
return new Promise(function (resolve, reject) {
axios.get(
@ -90,6 +95,7 @@ const api = {
});
})
},
// blob格式的post请求用于文件请求
BlobPost: function (path = '', data = {}) {
return new Promise(function (resolve, reject) {
axios.post(

View File

@ -36,9 +36,23 @@ body,
}
.flex-center {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
/* align-items: center; */
flex-wrap: wrap;
background: url(../svg/background.jpg) center no-repeat;
margin: 0;
background-size: 100%;
background-attachment: fixed;
}
.login-form {
background: #fff;
box-shadow: 0 4px 6px rgb(0 0 0 / 10%), 0 12px 20px rgb(38 38 38 / 12%);
border-radius: 12px;
padding: 60px 36px;
}
.flex-end {
@ -49,6 +63,17 @@ body,
.login-form-button {
width: 100%;
height: 40px;
}
.login-form-icon{
border: 2px solid #efefef;
border-radius: 50%;
padding: 10px;
margin-right: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.site-layout-background {
@ -237,5 +262,4 @@ span {
width: 10px;
height: 10px;
border-radius: 50%;
}
}

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1628487188182" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2696" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M608 128H308.8C289.6 128 272 144 272 163.2V320l336 262.4L944 512V320L608 128z" fill="#21A366" p-id="2697"></path><path d="M907.2 128H608v192h336v-155.2C944 145.6 928 128 907.2 128z" fill="#33C481" p-id="2698"></path><path d="M272 320v539.2c0 19.2 16 36.8 35.2 36.8h600c19.2 0 36.8-16 36.8-35.2V704L272 320z" fill="#185C37" p-id="2699"></path><path d="M272 320h336v192H272z" fill="#107C41" p-id="2700"></path><path d="M528 324.8V752c-3.2 17.6-19.2 30.4-36.8 30.4H272V288h219.2c19.2 0 36.8 16 36.8 36.8z" p-id="2701"></path><path d="M544 324.8v388.8c0 28.8-24 52.8-52.8 52.8H272V272h219.2c28.8 0 52.8 24 52.8 52.8z" p-id="2702"></path><path d="M528 324.8v388.8c0 19.2-16 36.8-35.2 36.8H272V288h219.2c19.2 0 36.8 16 36.8 36.8z" p-id="2703"></path><path d="M512 324.8v388.8c0 19.2-16 36.8-35.2 36.8H272V288h203.2c19.2 0 36.8 16 36.8 36.8z" p-id="2704"></path><path d="M100.8 288h372.8c19.2 0 36.8 16 36.8 35.2v374.4c0 19.2-16 36.8-35.2 36.8H100.8C81.6 736 65.6 721.6 64 704V324.8C64 305.6 80 288 100.8 288z" fill="#107C41" p-id="2705"></path><path d="M179.2 633.6l78.4-121.6-72-121.6h57.6l40 76.8c1.6 4.8 4.8 11.2 8 16 3.2-6.4 4.8-11.2 8-17.6l41.6-76.8h52.8L320 510.4l75.2 121.6h-56l-44.8-84.8c-1.6-3.2-3.2-8-4.8-11.2-1.6 3.2-3.2 8-4.8 11.2l-46.4 84.8-59.2 1.6z" fill="#FFFFFF" p-id="2706"></path><path d="M608 512h336v192H608z" fill="#107C41" p-id="2707"></path></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

2
src/assets/svg/QQ.svg Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1649730397018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3893" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
</style></defs><path d="M824.8 613.2c-16-51.4-34.4-94.6-62.7-165.3C766.5 262.2 689.3 112 511.5 112 331.7 112 256.2 265.2 261 447.9c-28.4 70.8-46.7 113.7-62.7 165.3-34 109.5-23 154.8-14.6 155.8 18 2.2 70.1-82.4 70.1-82.4 0 49 25.2 112.9 79.8 159-26.4 8.1-85.7 29.9-71.6 53.8 11.4 19.3 196.2 12.3 249.5 6.3 53.3 6 238.1 13 249.5-6.3 14.1-23.8-45.3-45.7-71.6-53.8 54.6-46.2 79.8-110.1 79.8-159 0 0 52.1 84.6 70.1 82.4 8.5-1.1 19.5-46.4-14.5-155.8z" p-id="3894" fill="#1296db"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
src/assets/svg/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1628487192941" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2837" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M192 0h448.1536L960 320v576c0 70.6944-57.3056 128-128 128H192C121.3056 1024 64 966.6944 64 896V128C64 57.3056 121.3056 0 192 0z" fill="#2696FF" p-id="2838"></path><path d="M417.7536 546.176h-60.8256v170.5728h-40.9216V546.176H256V512h161.7536v34.176z m94.3872 36.416L549.376 512h47.0528l-57.8304 101.5296 59.328 103.2192h-47.6032l-38.1824-71.7184-38.1952 71.7184h-47.6032l59.3408-103.2192L427.8528 512h47.0528l37.2352 70.592zM768 546.176h-60.8256v170.5728H666.24V546.176h-60.0064V512H768v34.176z" fill="#FFFFFF" opacity=".9" p-id="2839"></path><path d="M640 0l320 320H768c-70.6944 0-128-57.3056-128-128V0z" fill="#8FC6FE" p-id="2840"></path></svg>

Before

Width:  |  Height:  |  Size: 1023 B

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1628487179814" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2553" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1024 298.666667V85.333333c0-25.6-17.066667-42.666667-42.666667-42.666666H298.666667c-25.6 0-42.666667 17.066667-42.666667 42.666666v213.333334l384 85.333333 384-85.333333z" fill="#41A5EE" p-id="2554"></path><path d="M1024 298.666667H256v213.333333l405.333333 85.333333 362.666667-85.333333z" fill="#2B7CD3" p-id="2555"></path><path d="M1024 512H256v213.333333l384 64 384-64z" fill="#185ABD" p-id="2556"></path><path d="M1024 725.333333H256v213.333334c0 25.6 17.066667 42.666667 42.666667 42.666666h682.666666c25.6 0 42.666667-17.066667 42.666667-42.666666v-213.333334z" fill="#103F91" p-id="2557"></path><path d="M588.8 256H256v597.333333h324.266667c29.866667 0 59.733333-29.866667 59.733333-59.733333V307.2c0-29.866667-21.333333-51.2-51.2-51.2z" opacity=".5" p-id="2558"></path><path d="M546.133333 810.666667H51.2C21.333333 810.666667 0 789.333333 0 759.466667V264.533333C0 234.666667 21.333333 213.333333 51.2 213.333333h499.2c25.6 0 46.933333 21.333333 46.933333 51.2v499.2c0 25.6-21.333333 46.933333-51.2 46.933334z" fill="#185ABD" p-id="2559"></path><path d="M435.2 682.666667H371.2L298.666667 448 226.133333 682.666667H162.133333L93.866667 341.333333h59.733333l46.933333 238.933334 72.533334-230.4h51.2l68.266666 230.4L443.733333 341.333333h59.733334l-68.266667 341.333334z" fill="#FFFFFF" p-id="2560"></path></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1649731015829" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8261" width="200" height="200" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
</style></defs><path d="M150.528 431.104q37.888 0 58.368 24.064t20.48 51.712l0 11.264q0 34.816-17.92 58.88t-59.904 24.064l-7.168 0q-38.912 0-61.952-21.504t-23.04-59.392l0-14.336q0-13.312 5.632-26.624t15.872-24.064 25.6-17.408 33.792-6.656l10.24 0zM519.168 431.104q37.888 0 58.368 24.064t20.48 51.712l0 11.264q0 34.816-17.92 58.88t-59.904 24.064l-7.168 0q-38.912 0-61.952-21.504t-23.04-59.392l0-14.336q0-13.312 5.632-26.624t15.872-24.064 25.6-17.408 33.792-6.656l10.24 0zM887.808 431.104q37.888 0 58.368 24.064t20.48 51.712l0 11.264q0 34.816-17.92 58.88t-59.904 24.064l-7.168 0q-38.912 0-61.952-21.504t-23.04-59.392l0-14.336q0-13.312 5.632-26.624t15.872-24.064 25.6-17.408 33.792-6.656l10.24 0z" p-id="8262" fill="#dbdbdb"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1649730468936" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6333" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
</style></defs><path d="M474.697931 463.133036c52.537564-55.155181 119.125121-74.453712 197.466374-70.189595-1.747807-8.009418-1.814322-14.22191-4.389984-19.11843-12.712533-24.170492-22.698978-50.789757-39.787168-71.474868-102.242616-123.764791-308.057121-138.461515-427.463652-31.18935-61.691037 55.423287-87.38421 124.68986-69.739341 206.809159 11.298324 52.575426 43.588751 92.715635 85.609797 124.551714 13.697977 10.382465 15.916505 19.665899 10.030447 34.608216-7.30436 18.535145-12.809747 37.781488-19.0908 56.720839 17.596773-3.874237 31.816636-9.761318 44.911886-17.542538 30.707372-18.24555 61.189617-28.17162 98.18623-16.900925 22.337751 6.800893 47.565319 4.123924 74.762751 5.92085C405.477406 585.486688 421.574013 518.909363 474.697931 463.133036zM497.939261 319.220369c19.834744-0.284479 31.798217 10.92277 32.226982 30.178323 0.442068 19.85521-10.726296 31.997762-29.841655 32.44597-21.970384 0.51677-38.566364-12.741185-38.723953-30.930453C461.449185 333.410556 477.38411 319.510988 497.939261 319.220369zM309.594639 381.837498c-21.693068 0.073678-37.788651-13.573133-37.541011-31.828916 0.233314-17.353227 16.143679-30.628578 36.897352-30.79333 19.576871-0.150426 33.157167 13.06148 32.867572 31.983435C341.537142 369.591593 328.722278 381.778146 309.594639 381.837498z" p-id="6334" fill="#15ad31"></path><path d="M835.363224 471.499587c-81.796958-78.773088-215.099986-91.444689-312.212768-29.66974-125.474736 79.81379-124.392078 243.768933 2.771113 320.735885 61.081147 36.97103 127.145795 47.321772 196.581214 28.592198 14.377452-3.879354 26.002211-2.758834 38.630832 5.067412 17.174148 10.645454 35.464723 19.495006 53.278437 29.115108 1.274016-0.950651 2.548032-1.901303 3.822049-2.852978-4.882194-17.019629-10.796904-33.842783-14.117532-51.16531-1.249457-6.507204 1.530866-15.896038 5.932106-20.968567 11.326976-13.038968 25.615401-23.515576 36.914748-36.58115C913.685034 636.613112 908.943033 542.366611 835.363224 471.499587zM589.682755 564.978609c-14.864546 0.228197-26.891464-11.264555-26.424836-25.248034 0.456395-13.707187 11.322883-23.429619 26.14752-23.38971 16.312524 0.041956 29.684066 11.452843 29.205159 24.921599C618.16239 553.809221 604.82257 564.746318 589.682755 564.978609zM737.859539 565.009308c-13.485129-0.203638-26.317389-11.747555-26.63359-23.958668-0.340761-13.07069 12.692067-24.846898 27.374464-24.735357 16.766872 0.12996 28.897144 11.084453 28.241204 25.499767C766.255263 554.683125 753.061776 565.241598 737.859539 565.009308z" p-id="6335" fill="#15ad31"></path></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1649730523725" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7390" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
</style></defs><path d="M761.984 1009.28H253.696C138.368 1009.28 44.8 915.712 44.8 800.384V292.096C44.8 176.768 138.368 83.2 253.696 83.2h508.288c115.328 0 208.896 93.568 208.896 208.896v508.288c0 115.328-93.568 208.896-208.896 208.896z" fill="#00E560" p-id="7391"></path><path d="M507.776 265.856c-72.576 0-139.776 20.352-193.536 54.528-54.272 34.432-94.592 83.2-113.408 139.264-7.552 22.528-11.648 46.464-11.648 71.04 0 92.16 56.448 172.928 142.208 220.544 7.68 4.224 11.648 13.44 8.32 21.632-6.4 15.616-14.592 30.592-24.32 44.672-3.072 4.352 0.768 10.368 6.016 8.96 29.44-7.808 56.96-19.072 81.92-33.28 9.088-5.248 19.456-6.912 29.696-4.864 23.936 4.736 49.024 7.296 74.88 7.296 176 0 318.592-118.656 318.592-264.832 0-146.304-142.72-264.96-318.72-264.96z" fill="#FFFFFF" p-id="7392"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -5,8 +5,7 @@ class Pdf extends Component {
constructor(props) {
super(props)
this.state = {
numPages: null,
visible: false,
visible: false, //Modal对话框的显示隐藏状态
}
}
@ -20,25 +19,19 @@ class Pdf extends Component {
return null
}
handelOnChange = (page) => {
this.setState({
page: page
})
}
onCancel = () => {
this.setState({
visible: false,
},()=>{
return this.props.callback(false)
}, () => {
return this.props.callback(false)
})
}
onConfirm = () => {
this.setState({
visible: false,
},()=>{
return this.props.callback(false)
}, () => {
return this.props.callback(false)
})
}
@ -54,8 +47,8 @@ class Pdf extends Component {
onCancel={this.onCancel}
onOk={this.onConfirm}
>
<div style={{height:'70vh'}}>
<embed src={this.props.file} type='application/pdf' width='100%' height="100%"></embed>
<div style={{ height: '70vh' }}>
<embed src={this.props.file} type='application/pdf' width='100%' height="100%"></embed>
</div>
</Modal>
</React.Fragment>

View File

@ -5,12 +5,13 @@ class FeTable extends Component {
constructor(props) {
super(props)
this.state = {
data: [],
columns: [],
total: 0
data: [], //接收的表格数组
columns: [], //接收的表格列数组
total: 0 //接收的表格数组数据条数
}
}
// 父组件的state状态改变触发该函数,用于接收父组件更新的值
static getDerivedStateFromProps(props, state) {
if (props.data !== state.data && props.data) {
return {
@ -24,14 +25,19 @@ class FeTable extends Component {
return null
}
// 点击的回调事件
// 回调事件 - 参数一:点击的单元格文本
// 回调事件 - 参数二:点击的整行数据信息
jumpRow = (e, value) => {
return this.props.callback(e.target.innerText, value)
}
// 页码的回调
onChange = (current,pageSize) =>{
return this.props.pageChange(current,pageSize)
}
// 每页条数的回调
onShowSizeChange = (current,pageSize) =>{
return this.props.onShowSizeChange(current,pageSize)
}

View File

@ -1,9 +1,13 @@
import React, { Component } from 'react'
import { withRouter } from "react-router-dom";
import { Layout, Form, Input, Button, message, Row, Col } from 'antd'
import { UserOutlined, LockOutlined, MailOutlined } from '@ant-design/icons';
import { Layout, Form, Input, Button, message, Row, Col, Image,Tooltip } from 'antd'
import api from "@/api/request"
import { rsaKey } from "@/utils/rsaKey.js";
import logo from "@/assets/svg/logo.png"
import sms from "@/assets/svg/短信.svg"
import wx from "@/assets/svg/微信.svg"
import qq from "@/assets/svg/QQ.svg"
import other from "@/assets/svg/其它.svg"
const { Content } = Layout;
@ -43,8 +47,8 @@ class User extends Component {
if ("result" in res) {
message.success("登录成功")
localStorage.setItem("token", res.result.token)
localStorage.setItem("menus",res.result.menus)
localStorage.setItem("user_name",res.result.name)
localStorage.setItem("menus", res.result.menus)
localStorage.setItem("user_name", res.result.name)
this.props.history.push('/home')
} else {
message.warning(res.info)
@ -56,47 +60,59 @@ class User extends Component {
return (
<Layout>
<Content className='flex-center'>
<Form
ref={this.form}
name="normal_login"
className='login-form'
onFinish={this.onFinish}
>
<Form.Item
name="email"
rules={[{ required: true, message: 'Please input your mail!' }]}
<Row style={{ width: '100%', paddingBottom: 40 }} justify="center" align='bottom'><Image src={logo} width={200}></Image></Row>
<Row justify="center" align='top'>
<Form
ref={this.form}
name="normal_login"
className='login-form'
onFinish={this.onFinish}
layout='vertical'
>
<Input prefix={<UserOutlined className="site-form-item-icon" />} placeholder="Mail" />
</Form.Item>
<Form.Item
name="pwd"
rules={[{ required: true, message: 'Please input your password!' }]}
>
<Input.Password prefix={<LockOutlined className="site-form-item-icon" />} placeholder="Password" />
</Form.Item>
<Form.Item>
<Row gutter={5}>
<Col span={17}>
<Form.Item
name="vcode"
noStyle
rules={[{ required: true, message: 'Please input the vcode you got!' }]}
>
<Input prefix={<MailOutlined className="site-form-item-icon" />} />
</Form.Item>
</Col>
<Col span={7}>
<Button onClick={this.sendEmail}>Get vcode</Button>
</Col>
<Form.Item
name="email"
label="邮箱"
rules={[{ required: true, message: 'Please input your mail!' }]}
>
<Input />
</Form.Item>
<Form.Item
name="pwd"
label="密码"
rules={[{ required: true, message: 'Please input your password!' }]}
>
<Input.Password />
</Form.Item>
<Form.Item label="验证码">
<Row gutter={5}>
<Col span={17}>
<Form.Item
name="vcode"
noStyle
rules={[{ required: true, message: 'Please input the vcode you got!' }]}
>
<Input />
</Form.Item>
</Col>
<Col span={7}>
<Button type='dashed' onClick={this.sendEmail}>Get vcode</Button>
</Col>
</Row>
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit" className="login-form-button" shape="round">
</Button>
</Form.Item>
<Row>
<Tooltip title="停用"><div className='login-form-icon'><Image src={sms} width={20} preview={false}></Image></div></Tooltip>
<Tooltip title="停用"><div className='login-form-icon'><Image src={qq} width={20} preview={false}></Image></div></Tooltip>
<Tooltip title="停用"><div className='login-form-icon'><Image src={wx} width={20} preview={false}></Image></div></Tooltip>
<Tooltip title="停用"><div className='login-form-icon'><Image src={other} width={20} preview={false}></Image></div></Tooltip>
</Row>
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit" className="login-form-button">
Submit
</Button>
</Form.Item>
</Form>
</Form>
</Row>
</Content>
</Layout>
)

View File

@ -1,846 +0,0 @@
const text_model = [
{
"章节": "摘要",
"章节内容": [
{
"小节": "评价结果",
"小节内容": [
{
"段落": "综合信用等级BBB-"
},
{
"段落": "评价时间2022-01-05"
}
]
},
{
"小节": "主要财务数据",
"小节内容": [
{
"表名": "表1 主要财务数据"
},
{
"单位": "单位: 万元"
},
{
"表格": [
[
"报告期",
"2021-12-31",
"2020-12-31",
"2019-12-31"
],
[
"应收账款",
"31283.52",
"63417.18",
"58136.51"
],
[
"存货",
"7131.85",
"17087.42",
"22178.67"
],
[
"流动资产合计",
"117737.38",
"144099.12",
"150978.35"
],
[
"资产总计",
"282692.22",
"288927.97",
"265506.48"
],
[
"短期借款",
"200",
"0",
"4772.07"
],
[
"一年内到期非流动负债",
"0",
"0",
"0"
],
[
"流动负债合计",
"59822.19",
"74947.25",
"74427.53"
],
[
"长期借款",
"0",
"0",
"0"
],
[
"负债合计",
"64694.09",
"76896.5",
"75268.88"
],
[
"所有者权益合计",
"217998.14",
"212031.46",
"190237.61"
],
[
"营业收入",
"130943.64",
"96730.6",
"84530.31"
],
[
"营业成本",
"54898.61",
"36996.58",
"34289.46"
],
[
"利润总额",
"34765.48",
"17704.41",
"9202.64"
],
[
"净利润",
"32314.71",
"16156.56",
"7376.38"
],
[
"净资产收益率",
"-6.82",
"1.08",
"-"
],
[
"存货周转率",
"201.13",
"298.0",
"-"
],
[
"已获利息倍数",
"-1.13",
"0.97",
"0.28"
],
[
"应收账款周转率",
"4.06",
"6.32",
"8.1"
],
[
"总资产周转率",
"19",
"27",
"-"
],
[
"总资产增长率",
"1.0",
"7.39",
"-"
],
[
"总资产报酬率",
"-1.66",
"1.02",
"-"
],
[
"技术投入比率",
"6.65",
"11.02",
"7.77"
],
[
"营业增长率",
"-26.9",
"-3.77",
"-"
],
[
"资产负债率",
"70.05",
"73.46",
"73.42"
],
[
"速动比率",
"71.35",
"79.69",
"135.44"
]
]
},
{
"注释": "数据来源:公司提供"
}
]
},
{
"小节": "评价观点",
"小节内容": [
{
"段落": "远东资信评估有限公司(以下简称“公司”)为上海区域内微型制造业企业,在产业政策、融资渠道方面具有竞争优势。"
},
{
"段落": "公司ESG理念较为薄弱在经营过程中需增加节能减排措施加大对供应链、社会公众、员工和地区等的责任树立良好企业形象进一步加强公司治理和内部控制促进经营效率提升和企业价值创造。"
},
{
"段落": "公司盈利能力好,资产运营效率尚可,债务风险较小,成长能力一般,整体信用风险较大。"
},
{
"段落": "综上远东资信评定远东资信评估有限公司综合信用等级为BBB-。"
}
]
},
{
"小节": "关注",
"小节内容": [
{
"段落": "公司资产负债率过高,整体债务压力大,不利于近一步业务扩展"
},
{
"段落": "公司应收账款周转率慢,运营资金被占用规模大,资金利用效率低"
},
{
"段落": "公司资产经营规模扩张速度慢或不能实现稳定增长,经营状况存在波动,发展潜力较弱"
}
]
}
]
},
{
"章节": "一、公司概况",
"章节内容": [
{
"小节": "公司背景",
"小节内容": [
{
"段落": "远东资信评估有限公司创建于1988-02-15。截至2021末公司注册资本5000万人民币实收资本-。中开民服健康管理有限公司持有公司100.00%的股份。公司疑似实际控制人为中开民服健康管理有限公司。公司主要经营范围系证券市场资信评级,评估各类有价证券、企业资产、企业资信等级、其他与主营业务有关的咨询、培训、经济信息服务。【依法须经批准的项目,经相关部门批准后方可开展经营活动】。"
},
{
"段落": "截至2021年末公司总资产为282692.22万元,同比增长-0.02%净资产为217998.14万元同比增长0.03%营业收入为130943.64万元同比增长0.35%实现净利润32314.71万元同比增长1.0%。"
}
]
},
{
"小节": "股东实力",
"小节内容": [
{
"段落": "公司大股东中开民服健康管理有限公司成立于2020-09-30注册资本5000万人民币。中开民服健康养老产业发展有限公司持有100.00%的股份。公司控股股东主要经营范围系健康管理须经审批的诊疗活动除外健康咨询须经审批的诊疗活动除外医院管理须经审批的诊疗活动除外家庭服务不符合家政服务通用要求不得开展经营活动居家养老服务企业管理咨询组织文化艺术交流活动不含演出承办展览展示活动销售化妆品、卫生用品、日用品、机械设备、电子产品、第一类医疗器械、第二类医疗器械、计算机、软件及辅助设备企业管理技术咨询、技术开发、技术服务、技术转让计算机系统服务零售食品餐饮服务禁限制售冷热饮禁止在居民住宅楼、未配套设立专用烟道的商住综合楼、商住综合楼内与居住层相邻的商业楼层内新建、改建、扩建产生油烟、异味、废气的饮食服务禁止新建与居住、医疗卫生、文化教育、科研、行政办公等为主要功能的场所边界水平距离小于9米的项目市场主体依法自主选择经营项目开展经营活动零售食品、餐饮服务以及依法须经批准的项目经相关部门批准后依批准的内容开展经营活动不得从事国家和本市产业政策禁止和限制类项目的经营活动。。"
},
{
"段落": "公司控股股东成立年限较短,资本实力尚可,对公司的支持力度或较弱"
}
]
},
{
"小节": "对外投资",
"小节内容": [
{
"段落": "截至2021末公司对外投资11家子公司投资金额10088.3万元。其中持股比例为50%以上的子公司为8家投资金额合计为5988.3万元。公司对外投资主要集中于商务服务业行业,行业集中度高。公司对外投资地域主要集中于上海市、四川省、北京市省市,地域集中度高。"
},
{
"表名": "表2 公司对外投资"
},
{
"单位": "单位:-"
},
{
"表格": [
[
"被投资企业名称",
"注册资本",
"投资比例",
"投资金额",
"成立日期",
"所属行业",
"所属省份"
],
[
"四川远东资信评估有限公司",
"80万人民币",
"100%",
"100万元",
"2005-05-24",
"商务服务业",
"四川省"
],
[
"远东执信企业征信有限公司",
"5000万人民币",
"100%",
"5000万元",
"2006-03-01",
"商务服务业",
"上海市"
],
[
"四川远东资信评估有限公司",
"100万人民币",
"100%",
"100万元",
"2005-05-08",
"商务服务业",
"四川省"
],
[
"北京远东和创资信评估有限公司",
"100万人民币",
"100%",
"100万元",
"2007-06-08",
"商务服务业",
"北京市"
],
[
"上海远东人力资源价值咨询有限公司",
"50万人民币",
"80%",
"40万元",
"2000-09-12",
"商务服务业",
"上海市"
],
[
"佛山远东企业信用评估有限公司",
"100万人民币",
"60%",
"60万元",
"2006-05-23",
"商务服务业",
"广东省"
],
[
"上海远东鼎信财务咨询有限公司",
"100万人民币",
"55%",
"55万元",
"2006-03-24",
"商务服务业",
"上海市"
],
[
"湖南远东资信评估咨询有限公司",
"1000万人民币",
"53.33%",
"533.3万元",
"2000-03-06",
"商务服务业",
"湖南省"
],
[
"贵州远东诚信管理有限公司",
"5000万人民币",
"48%",
"2400万元",
"2017-04-12",
"商务服务业",
"贵州省"
],
[
"宁波远东资信评估有限公司",
"500万人民币",
"40%",
"200万元",
"2003-04-03",
"商务服务业",
"浙江省"
],
[
"上海浦东新区邦信小额贷款股份有限公司",
"15000万人民币",
"10%",
"1500万元",
"2012-04-25",
"商务服务业",
"上海市"
]
]
},
{
"注释": "数据来源:公司提供"
}
]
},
{
"小节": "进出口权",
"小节内容": [
{
"段落": "公司无进出口权,业务开展受全球经济波动、地缘政治风险影响较小。"
}
]
},
{
"小节": "知识产权",
"小节内容": [
{
"段落": "截至2022年1月公司共拥有7个专利其中实用新型、外观设计、发明专利分别为0、0、7个。近三年公司获得7个专利其中实用新型、外观设计、发明专利分别为0、0、7个。"
},
{
"段落": "截至2022年1月公司共拥有13个软件著作权。近三年公司获得13个软件著作权。"
},
{
"段落": "公司专利和软件著作权数量较少,技术研发能力较弱。"
}
]
},
{
"小节": "资质荣誉",
"小节内容": [
{
"段落": "经查询,公司无技术、产品品质或品牌等方面的荣誉资质。"
}
]
}
]
},
{
"章节": "二、ESG评价",
"章节内容": [
{
"小节": "环境治理",
"小节内容": [
{
"段落": "公司绿色发展理念相对薄弱。公司绿色发展战略和绿色组织架构亦有待完善,生产过程对环境造成一定污染,尚未有污染缓解措施或污染缓解措施效果欠佳,环境问题或对公司正常经营造成负面影响。"
},
{
"段落": "截至2022年末公司未获得环保领域相关认证资质。"
}
]
},
{
"小节": "社会责任",
"小节内容": [
{
"段落": "公司积极履行社会责任,未获得社会责任领域相关认证资质。公司以公平、公正、自愿、市场化的原则开展业务,承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,为公司业务拓展奠定较好基础。"
}
]
},
{
"小节": "公司治理",
"小节内容": [
{
"段落": "公司规模较小,组织架构尚不完善,股权结构有待进一步明晰,信息披露透明度和质量欠佳。风险控制能力有待加强。整体来看,公司治理水平有待进一步提升。"
}
]
}
]
},
{
"章节": "三、财务分析",
"章节内容": [
{
"小节": "盈利能力",
"小节内容": [
{
"段落": "近年来,信息技术业市场增长较快,抵消了产品价格下降和研发投入费用较大带来的负面影响,行业内企业盈利能力普遍提升。信息技术服务业为新兴产业和技术密集型产业,产品迭代速度较快,企业需要投入较高的研发费用以保持核心竞争力。优秀企业的产品通常有较高的创新性和技术含量,具有一定的市场垄断性,盈利空间相对较大。同时,行业内竞争激烈,企业盈利分化情况较大,大部分中小企业竞争能力较弱,以低端产品为主,产品技术含量相对较低,盈利水平偏低。"
},
{
"段落": "从企业生命周期角度看,处于成长期和成熟期的企业拥有较大的市场份额,产品获得市场认可,品牌形象较好,产品较高的技术含量使其盈利能力较好,亦可投入较多研发资金,形成良性循环;处于种子期或初创期的企业尚处于产品研发阶段,没有收入或收入规模很小,加之,研发投入较大,多处于亏损状态。"
},
{
"段落": "2020年公司净资产收益率为1.08%低于行业内小型企业4.7%的平均水平总资产报酬率为1.02%低于行业内小型企业2.7%的平均水平。"
}
]
},
{
"小节": "资产质量",
"小节内容": [
{
"段落": "技术类无形资产是信息技术业企业核心竞争力的重要组成部分其中技术含量高的无形资产质量较好对企业绩效有较大的正面效应技术含金量低的无形资产质量较差易产生负面影响。除了无形资产外信息技术业的资产亦较多集中于应收账款和应收票据近年来信息技术业竞争日趋激烈软件和信息技术业多以拉长账期的方式争取市场份额资金被占用规模扩大资产质量略有下降而电信行业为寡头垄断行业电信企业给予客户的信用期相对固定资产质量较为稳定。2020年公司应收账款周转率为6.32次高行业内小企业0.4次的平均水平总资产周转率为27次高于行业内小企业3.9次的平均水平。"
}
]
},
{
"小节": "债务风险",
"小节内容": [
{
"段落": "企业高债务风险的原因通常包括宏观因素和微观因素。宏观因素方面,制造业下游行业众多,经济周期性波动通过产业链传导至制造业,产业政策、监管政策、信贷政策变化均会导致制造业周期性波动,其中,传统制造业企业周期性波动较强,先进制造业通过较快的成长性、更高的行业准入门槛平滑周期性波动影响。微观层面,制造业企业的债务规模、经营状况、融资能力、资产流动性均影响企业现金流和债务偿还能力。通常来说,高债务风险是多种原因共同作用的结果,杠杆水平越高、盈利能力越差、融资渠道较少、资产流动性较弱的制造业企业债务风险较高;债务规模适度、盈利能力较好、融资渠道多元化和财务弹性较高的企业违约风险较小。"
},
{
"段落": "公司债务风险较小。近三年公司资产负债率处于70.05~73.46的区间,财务结构欠稳健;经营性现金流对利息的保障程度强,已获利息倍数为-1.13倍资产流动性好速动比率为71.35。"
}
]
},
{
"小节": "成长能力",
"小节内容": [
{
"段落": "信息技术业多具有经济带动性、创新驱动性、多领域融合、质量品牌和绿色集约特征,市场认可度高,处于初创期和成长期的信息技术业企业市场份额拓展较快,成长速度很快;处于成熟期的信息技术业企业已占有较大市场份额,且通过产品多元化等方式拓展市场,成长性受到公司战略和决策能力、研发能力、研发速度、技术先进性、\n\n潜在市场空间、资金等因素影响。"
},
{
"段落": "公司重视技术研发或先进工艺的开发2020年公司技术投入比为11.02。技术创新对公司业务拓展的贡献尚可2020年公司营业收入增长率、总资产增长率分别为-3.77和7.39,整体成长能力一般。"
}
]
}
]
},
{
"章节": "四、企业风险",
"章节内容": [
{
"小节": "合规风险",
"小节内容": [
{
"段落": "经过查询与整理,公司无失信人信息、无严重违法、无经营异常、无欠税公告、无税收违法、无行政处罚、无环保处罚,整体来看,公司的合规风险水平低。"
}
]
},
{
"小节": "经营风险",
"小节内容": [
{
"段落": "经过查询与整理收集到企业立案信息、开庭公告、被执行人、法院公告、诉讼、送达公告、股权出质等经营相关风险合计1条公司的经营风险水平较低。"
}
]
},
{
"小节": "关联风险",
"小节内容": [
{
"段落": "经过查询与整理收集到企业关联方风险合计360条包括失信被执行人、司法拍卖、限制消费令公司、强制清算、涉金融黑名单、破产案件等重大事件关联企业相关风险或通过经营链条、资金链条、担保链条等方式传导至公司会对公司经营产生实质性影响公司的关联风险水平较高。"
}
]
}
]
},
{
"章节": "五、评级结论",
"章节内容": [
{
"小节": "结论",
"小节内容": [
{
"段落": "公司绿色发展理念相对薄弱,积极履行社会责任,治理水平有待进一步提升。"
},
{
"段落": "公司盈利能力强,资产质量一般,债务风险较低,成长空间不大,企业风险较差。"
},
{
"段落": "综合分析远东资信评定远东资信评估有限公司综合信用等级为BBB-。"
}
]
}
]
},
{
"章节": "附录",
"章节内容": [
{
"小节": "附录1 主要数据及指标",
"小节内容": [
{
"单位": "单位:万元、%、倍、次"
},
{
"表格": [
[
"报告期",
"2021-12-31",
"2020-12-31",
"2019-12-31"
],
[
"应收账款",
"31283.52",
"63417.18",
"58136.51"
],
[
"存货",
"7131.85",
"17087.42",
"22178.67"
],
[
"流动资产合计",
"117737.38",
"144099.12",
"150978.35"
],
[
"资产总计",
"282692.22",
"288927.97",
"265506.48"
],
[
"短期借款",
"200",
"0",
"4772.07"
],
[
"一年内到期非流动负债",
"0",
"0",
"0"
],
[
"流动负债合计",
"59822.19",
"74947.25",
"74427.53"
],
[
"长期借款",
"0",
"0",
"0"
],
[
"负债合计",
"64694.09",
"76896.5",
"75268.88"
],
[
"所有者权益合计",
"217998.14",
"212031.46",
"190237.61"
],
[
"营业收入",
"130943.64",
"96730.6",
"84530.31"
],
[
"营业成本",
"54898.61",
"36996.58",
"34289.46"
],
[
"利润总额",
"34765.48",
"17704.41",
"9202.64"
],
[
"净利润",
"32314.71",
"16156.56",
"7376.38"
],
[
"研发费用",
"8203.28",
"9137.39",
"9987.69"
],
[
"计入财务费的利息支出",
"0",
"0",
"0"
],
[
"资本化利息支出",
"0",
"0",
"0"
],
[
"净资产收益率",
"-6.82",
"1.08",
"-"
],
[
"存货周转率",
"201.13",
"298.0",
"-"
],
[
"已获利息倍数",
"-1.13",
"0.97",
"0.28"
],
[
"应收账款周转率",
"4.06",
"6.32",
"8.1"
],
[
"总资产周转率",
"19",
"27",
"-"
],
[
"总资产增长率",
"1.0",
"7.39",
"-"
],
[
"总资产报酬率",
"-1.66",
"1.02",
"-"
],
[
"技术投入比率",
"6.65",
"11.02",
"7.77"
],
[
"营业增长率",
"-26.9",
"-3.77",
"-"
],
[
"资产负债率",
"70.05",
"73.46",
"73.42"
],
[
"速动比率",
"71.35",
"79.69",
"135.44"
]
]
},
{
"注释": "数据来源:数据由公司提供,指标由远东资信的计算所得"
}
]
},
{
"小节": "附录2 有关指标的计算公式",
"小节内容": [
{
"表格": [
[
"科目",
"计算公式"
],
[
"净资产收益率",
"税后利润 / ( (期初净资产余额 + 期末净资产余额) /2"
],
[
"总资产报酬率",
"( 利润总额 + 利息支出 )/(( 期初总资产余额 + 期末总资产余额 ) / 2 )"
],
[
"应收帐款周转速度",
"营业总收入 / ( (期初应收帐款余额 + 期末应收帐款余额) / 2 + (期初应收票据余额 + 期末应收票余额) /2 )"
],
[
"存货周转速度",
"营业总收入/(期初存货余额 + 期末存货余额) / 2"
],
[
"总资产周转速度",
"营业总收入/( (期初总资产余额 + 期末总资产余额) / 2 )"
],
[
"资产负债率",
"负债总额/资产总额"
],
[
"已获利息倍数",
"税前利润+列入财务费用的利息支出)/(列入财务费用的利息支出+资本化利息支出)"
],
[
"速动比率",
"(流动资产-存货)/流动负债"
],
[
"技术投入比",
"本年研发经费投入/营业总收入"
],
[
"营业收入增长率",
"(本年营业总收入-上年营业总收入)/上年营业总收入"
],
[
"总资产增长率",
"(期末资产总额-期初资产总额)/期初资产总额"
]
]
}
]
},
{
"小节": "附录3 数字化综合信用等级评价级别释义",
"小节内容": [
{
"段落": "远东资信数字化综合信用等级评价是对电子行业公司在未来时期是否具有足够的信用管理能力以及其所采取的风险控制措施是否足以支持其规避信用风险并且保持良好的偿债能力的综合评价。"
},
{
"段落": "远东资信将数字化综合信用等级划分成三等九级分别用AAA、AA、A、BBB、BB、B、CCC、CC和C表示其中除AAA级CCC级以下等级外每一个信用等级可用“+”、“-”符号进行微调,表示略高或略低于本等级。各主体等级含义如下:"
},
{
"表格": [
[
"等级",
"含义"
],
[
"AAA",
"信用管理能力极强,偿还债务能力极强,基本不受不利经济环境影响,违约风险极低。"
],
[
"AA",
"信用管理能力很强,偿还债务能力很强,受不利经济环境的影响不大,违约风险很低。"
],
[
"A",
"信用管理能力较强,偿还债务能力较强,较易受不利经济环境影响,违约风险较低。"
],
[
"BBB",
"信用管理能力一般,偿还债务能力一般,不利经济环境影响较大,违约风险一般。"
],
[
"BB",
"信用管理能力较弱,偿还债务能力较弱,不利经济环境影响很大,违约风险较高。"
],
[
"B",
"信用管理能力以及偿还债务能力较大的依赖于良好的经济环境影响,违约风险很高。"
],
[
"CCC",
"信用管理能力以及偿还债务能力较大的依赖于良好的经济环境影响,违约风险极高。"
],
[
"CC",
"在破产或重组时能获得的保护较小,基本丧失信用管理能力以及偿还债务能力"
],
[
"C",
"没有偿还债务能力"
]
]
}
]
}
]
}
]
export default text_model