Merge branch 'factory-hxy' of http://172.20.32.203:3000/durian/forgeplus-react into factory
|
|
@ -52,7 +52,9 @@ function Feature(props) {
|
|||
<div className="content-top-right">
|
||||
<h3>数字化纳管,掌控研发全链路</h3>
|
||||
<p>研发活动及制品全流程数字化纳管,支持精准决策和持续优化</p>
|
||||
<img className="content-top-right-gif" src={gif2} alt="" />
|
||||
<div>
|
||||
<img className="content-top-right-gif" src={gif2} alt="" />
|
||||
</div>
|
||||
<img src={featureright1} alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
background-size: 100% 100%;
|
||||
background-position: center -0px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
|
@ -57,6 +58,7 @@
|
|||
.content-top-left,
|
||||
.content-top-right {
|
||||
flex-direction: column;
|
||||
|
||||
h3 {
|
||||
|
||||
margin-top: 58px;
|
||||
|
|
@ -106,16 +108,25 @@
|
|||
background-image: url('../../../images/factory/feature-right-bg.webp');
|
||||
|
||||
img {
|
||||
width: 723px;
|
||||
height: 280px;
|
||||
margin-top: 40px;
|
||||
width: 735px;
|
||||
}
|
||||
&-gif {
|
||||
width: 80px !important;
|
||||
height: 60px !important;
|
||||
|
||||
div {
|
||||
position: absolute;
|
||||
left: 151px;
|
||||
top: 249px
|
||||
left: 170px;
|
||||
top: 273px;
|
||||
border-radius: 50%;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
overflow: hidden;
|
||||
.content-top-right-gif {
|
||||
position: absolute;
|
||||
width: 80px !important;
|
||||
margin: 0;
|
||||
left: -10px;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -141,13 +152,14 @@
|
|||
width: 1016px;
|
||||
height: 315px;
|
||||
}
|
||||
|
||||
&-gif {
|
||||
width: 93px !important;
|
||||
height: 70px !important;
|
||||
position: absolute;
|
||||
left: 608px;
|
||||
top: 125px
|
||||
}
|
||||
width: 93px !important;
|
||||
height: 70px !important;
|
||||
position: absolute;
|
||||
left: 608px;
|
||||
top: 125px
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,15 +2,10 @@ import React, { useEffect, useState, useRef } from 'react';
|
|||
import './index.scss';
|
||||
import { Anchor, Carousel } from 'antd';
|
||||
import { gethomePageDocList, getSubDocList } from '../../api'
|
||||
import back1 from '../../../images/factory/back1.png'
|
||||
import back2 from '../../../images/factory/back2.png'
|
||||
import back3 from '../../../images/factory/back3.png'
|
||||
import { Link } from 'react-router-dom';
|
||||
import KFIcon from '../../../components/KFIcon';
|
||||
import { factoryZoneId, dirId } from '../../../constants/factory'
|
||||
|
||||
|
||||
const backList = [back1, back2, back3]
|
||||
import { getDefaultImage } from '../../../forge/Utils/utils'
|
||||
|
||||
function News(props) {
|
||||
|
||||
|
|
@ -81,7 +76,7 @@ function News(props) {
|
|||
{mainList.map(item => {
|
||||
return <div className="news-1-item">
|
||||
<div className="news-1-item-img">
|
||||
<img src={item.headImg || backList[getRandomNum() - 1]} alt="" />
|
||||
<img src={item.headImg || getDefaultImage(item.id)} alt="" />
|
||||
</div>
|
||||
|
||||
<div className="news-1-item-content">
|
||||
|
|
@ -95,7 +90,7 @@ function News(props) {
|
|||
<div className="news-1-right">
|
||||
<h4>热门新闻</h4>
|
||||
<div className="news-1-right-img">
|
||||
<img src={news.headImg || backList[1]} alt="" />
|
||||
<img src={news.headImg || getDefaultImage(news.id)} alt="" />
|
||||
</div>
|
||||
<div className="news-1-right-title">
|
||||
<Link to={`/softwareFactory/news/${news.id}`}><h5>{news.name}</h5>
|
||||
|
|
|
|||
|
|
@ -175,8 +175,8 @@ const Resource = forwardRef(({ zoneId }, ref) => {
|
|||
}
|
||||
<div className="item-desc">{projectProperties.description}</div>
|
||||
<div className="item-data">
|
||||
<span><i className="iconfont icon-liulanliang mr5 font-12" />{projectProperties.praisesCount}</span>
|
||||
<span><i className="iconfont icon-shoucang mr5 font-12" />{projectProperties.forkedCount}</span>
|
||||
<span><i className="iconfont icon-guanzhu mr5 font-12" />{projectProperties.forkedCount}</span>
|
||||
<span><i className="iconfont icon-dianzan mr5 font-12" />{projectProperties.praisesCount}</span>
|
||||
</div>
|
||||
</div>
|
||||
})
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import moment from 'moment';
|
|||
import { getSourceList, httpUrl } from '../api'
|
||||
import { downloadFunc } from '../../forge/Utils/utils'
|
||||
import chapterBg from '../../images/factory/lessons/chapter-bg.webp'
|
||||
import { message } from 'antd';
|
||||
|
||||
const backList = [back1, back2, back3]
|
||||
|
||||
|
|
@ -99,9 +100,9 @@ function Index(props) {
|
|||
<div className="lessons-header">
|
||||
<h2><span>学习专区,</span>多样资源服务工厂应用</h2>
|
||||
<p >从核心课程到规范标准,构建持续进化的工程能力体系。</p>
|
||||
<div className="header-animation">
|
||||
{/* <div className="header-animation">
|
||||
<Waves />
|
||||
</div>
|
||||
</div> */}
|
||||
</div>
|
||||
<div className="lesson-body">
|
||||
<div className="lesson-left">
|
||||
|
|
@ -241,7 +242,8 @@ function Index(props) {
|
|||
return <div className="standard-item" key={index}>
|
||||
<div className="standard-item-head">
|
||||
<h4>{item.name}</h4>
|
||||
<button onClick={() => { downloadFunc(`${httpUrl}/file/open/download/${item.fileIds}`) }} >下载</button>
|
||||
{/* <button onClick={() => { downloadFunc(`${httpUrl}/file/open/download/${item.fileIds}`) }} >下载</button> */}
|
||||
<button onClick={() => { message.info('标准正在拟制中!') }} >下载</button>
|
||||
</div>
|
||||
<p>{item.summary}</p>
|
||||
<div className="standard-item-img">
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
flex-direction: column;
|
||||
align-items: center;
|
||||
height: 400px;
|
||||
background-image: url('../../images/factory/lessons/header-bg.webp');
|
||||
background-image: url('../../images/factory/lessons/header-bg.png');
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import RenderHtml from '../../../components/render-html';
|
|||
import { Breadcrumb } from 'antd';
|
||||
import { getNewsDetail } from '../../api';
|
||||
import headerMp4 from '../../../images/factory/news/detail-head-bg.mp4';
|
||||
import { getDefaultImage } from '../../../forge/Utils/utils'
|
||||
|
||||
|
||||
|
||||
|
|
@ -40,7 +41,7 @@ function Index(props) {
|
|||
<p>实时汇聚前沿技术、项目进展与开发者故事,助你第一时间掌握社区脉搏,不错过每一次灵感与成长机会。</p>
|
||||
<div className="header-img">
|
||||
<div className="header-img-wrapper">
|
||||
<img src={detail.headImg || imageBack1} alt="" />
|
||||
<img src={detail.headImg || getDefaultImage(detail.id)} alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -5,18 +5,13 @@ import KFIcon from '../../components/KFIcon/index';
|
|||
import { factoryZoneId, dirId } from '../../constants/factory'
|
||||
import { gethomePageDocList, getNewsHotList, getSubDocList } from '../api'
|
||||
import { Carousel } from 'antd';
|
||||
import back1 from '../../images/factory/back1.png'
|
||||
import back2 from '../../images/factory/back2.png'
|
||||
import back3 from '../../images/factory/back3.png'
|
||||
import headerBottom from '../../images/factory/news/header-bottom.png'
|
||||
import bodyBg from '../../images/factory/news/news-bg.webp'
|
||||
import '../common.scss'
|
||||
import { Link } from "react-router-dom";
|
||||
import moment from "moment";
|
||||
import InfiniteScroll from 'react-infinite-scroller';
|
||||
|
||||
const backList = [back1, back2, back3]
|
||||
|
||||
import { getDefaultImage } from '../../forge/Utils/utils'
|
||||
|
||||
function Index(props) {
|
||||
const [topList, setTopList] = useState([])
|
||||
|
|
@ -166,7 +161,7 @@ function Index(props) {
|
|||
<div className="body-item" key={index}>
|
||||
<div className="body-item-img">
|
||||
<div>
|
||||
<img src={item.headImg || backList[index]} alt="" />
|
||||
<img src={item.headImg || getDefaultImage(item.id)} alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -228,7 +223,7 @@ function Index(props) {
|
|||
newsList3.map((item, index) => {
|
||||
return <div className="news-item" key={index}>
|
||||
<div className="news-item-img">
|
||||
<img src={item.headImg || backList[index % 3]} alt="" />
|
||||
<img src={item.headImg || getDefaultImage(item.id)} alt="" />
|
||||
</div>
|
||||
<div className="news-item-info">
|
||||
<Link to={`/softwareFactory/news/${item.id}`}><h3>{item.name}</h3></Link>
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ function Index({searchValue, searchType},ref) {
|
|||
<h5 className="item-title">{item.name}</h5>
|
||||
<p className="item-desc">{item.summary}</p>
|
||||
<div className="item-data">
|
||||
<span><i className="iconfont icon-xiazai mr5 font-12" />{item.createTime}</span>
|
||||
<span><i className="iconfont icon-shijian mr5 font-12" />{item.createTime}</span>
|
||||
</div>
|
||||
</div>
|
||||
})
|
||||
|
|
|
|||
|
|
@ -40,8 +40,15 @@ function Index(props) {
|
|||
const getDetail = () => {
|
||||
getSourceDetail(id).then(response => {
|
||||
if (response) {
|
||||
let extendData = {}
|
||||
if (response.data.data.extendData) {
|
||||
extendData = JSON.parse(response.data.data.extendData)
|
||||
}
|
||||
document.title = response.data.data.name
|
||||
setDetail(response.data.data);
|
||||
if (extendData.content) {
|
||||
setContent(Base64.decode(extendData.content))
|
||||
}
|
||||
setDetail({...response.data.data, ...extendData});
|
||||
}
|
||||
}).catch(error => { })
|
||||
}
|
||||
|
|
@ -59,7 +66,7 @@ function Index(props) {
|
|||
<Breadcrumb separator=">">
|
||||
<Breadcrumb.Item href={`/softwareFactory`}>首页</Breadcrumb.Item>
|
||||
<Breadcrumb.Item href={`/softwareFactory/resource/developmentTools`}>开发工具</Breadcrumb.Item>
|
||||
<Breadcrumb.Item>{detail.name}</Breadcrumb.Item>
|
||||
<Breadcrumb.Item> <span className="breacrumb-name">{detail.name}</span> </Breadcrumb.Item>
|
||||
</Breadcrumb>
|
||||
<div className="header-content">
|
||||
<h3>{detail.name}</h3>
|
||||
|
|
@ -93,15 +100,14 @@ function Index(props) {
|
|||
</div>
|
||||
<div className="header-img">
|
||||
<div className="header-img-wrapper">
|
||||
<img src={detail.img || imageBack1} alt="" />
|
||||
<img src={imageGif} alt="" />
|
||||
<img src={detail.headImg || imageBack1} alt="" />
|
||||
{!detail.headImg && <img src={imageGif} alt="" />}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="news-detail-content">
|
||||
<div className="news-detail-content-wrapper">
|
||||
<h4>{detail.name}</h4>
|
||||
{
|
||||
content && <RenderHtml className="informations_detail imageLayerParent" value={content} url={props.history.location} />
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,16 @@
|
|||
|
||||
span {
|
||||
color: #091221;
|
||||
|
||||
.breacrumb-name {
|
||||
max-width: 200px;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -211,6 +221,8 @@
|
|||
height: 100%;
|
||||
margin: 52px auto;
|
||||
margin-top: -100px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
||||
.ant-breadcrumb {
|
||||
line-height: 20px;
|
||||
|
|
|
|||
|
|
@ -92,8 +92,8 @@ function Index(props) {
|
|||
}
|
||||
</div>
|
||||
<div className="item-bottom-data">
|
||||
<span><i className="iconfont icon-liulanliang mr5 font-12" />{project.praisesCount}</span>
|
||||
<span><i className="iconfont icon-shoucang mr5 font-12" />{project.forkedCount}</span>
|
||||
<span><i className="iconfont icon-guanzhu mr5 font-12" />{project.forkedCount}</span>
|
||||
<span><i className="iconfont icon-dianzan mr5 font-12" />{project.praisesCount}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -134,8 +134,8 @@ function Index(props) {
|
|||
{project.description}
|
||||
</div>
|
||||
<div className="item-data">
|
||||
<span><i className="iconfont icon-liulanliang mr5 font-12" />{project.praisesCount}</span>
|
||||
<span><i className="iconfont icon-shoucang mr5 font-12" />{project.forkedCount}</span>
|
||||
<span><i className="iconfont icon-guanzhu mr5 font-12" />{project.forkedCount}</span>
|
||||
<span><i className="iconfont icon-dianzan mr5 font-12" />{project.praisesCount}</span>
|
||||
</div>
|
||||
</div></Link>
|
||||
})
|
||||
|
|
@ -184,8 +184,8 @@ function Index(props) {
|
|||
</div>
|
||||
|
||||
<div className="item-data">
|
||||
<span><i className="iconfont icon-liulanliang mr5 font-12" />{project.praisesCount}</span>
|
||||
<span><i className="iconfont icon-shoucang mr5 font-12" />{project.forkedCount}</span>
|
||||
<span><i className="iconfont icon-guanzhu mr5 font-12" />{project.forkedCount}</span>
|
||||
<span><i className="iconfont icon-dianzan mr5 font-12" />{project.praisesCount}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="content-bottom-btn">
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
import default1 from '../../images/factory/default/1.png'
|
||||
import default2 from '../../images/factory/default/2.png'
|
||||
import default3 from '../../images/factory/default/3.png'
|
||||
import default4 from '../../images/factory/default/4.png'
|
||||
import default5 from '../../images/factory/default/5.png'
|
||||
import default6 from '../../images/factory/default/6.png'
|
||||
import default7 from '../../images/factory/default/7.png'
|
||||
import default8 from '../../images/factory/default/8.png'
|
||||
|
||||
export function formatNumber(num) {
|
||||
if (num === undefined || num === null) return
|
||||
if (num >= 1e9) {
|
||||
|
|
@ -37,3 +46,8 @@ export const downloadFunc = (url, name) => {
|
|||
document.body.removeChild(link)
|
||||
}, 50)
|
||||
}
|
||||
|
||||
export const getDefaultImage = (id) => {
|
||||
const defaultList = [default1, default2, default3, default4, default5, default6, default7, default8]
|
||||
return defaultList[ id % 8 ]
|
||||
}
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 692 KiB |
|
After Width: | Height: | Size: 235 KiB |
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 624 KiB |
|
After Width: | Height: | Size: 486 KiB |
|
After Width: | Height: | Size: 429 KiB |
|
Before Width: | Height: | Size: 566 KiB After Width: | Height: | Size: 4.6 MiB |
|
Before Width: | Height: | Size: 228 KiB After Width: | Height: | Size: 264 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.2 MiB |
|
|
@ -1,8 +1,8 @@
|
|||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 5081288 */
|
||||
src: url('iconfont.woff2?t=1765507764789') format('woff2'),
|
||||
url('iconfont.woff?t=1765507764789') format('woff'),
|
||||
url('iconfont.ttf?t=1765507764789') format('truetype');
|
||||
src: url('iconfont.woff2?t=1766461445149') format('woff2'),
|
||||
url('iconfont.woff?t=1766461445149') format('woff'),
|
||||
url('iconfont.ttf?t=1766461445149') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
|
|
@ -13,6 +13,18 @@
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-dianzan:before {
|
||||
content: "\e796";
|
||||
}
|
||||
|
||||
.icon-shijian:before {
|
||||
content: "\e797";
|
||||
}
|
||||
|
||||
.icon-guanzhu:before {
|
||||
content: "\e798";
|
||||
}
|
||||
|
||||
.icon-xiazai:before {
|
||||
content: "\e794";
|
||||
}
|
||||
|
|
@ -41,10 +53,6 @@
|
|||
content: "\e7a1";
|
||||
}
|
||||
|
||||
.icon-shoucang:before {
|
||||
content: "\e7a0";
|
||||
}
|
||||
|
||||
.icon-liulanliang:before {
|
||||
content: "\e79e";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,27 @@
|
|||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "46425347",
|
||||
"name": "点赞",
|
||||
"font_class": "dianzan",
|
||||
"unicode": "e796",
|
||||
"unicode_decimal": 59286
|
||||
},
|
||||
{
|
||||
"icon_id": "46425348",
|
||||
"name": "时间",
|
||||
"font_class": "shijian",
|
||||
"unicode": "e797",
|
||||
"unicode_decimal": 59287
|
||||
},
|
||||
{
|
||||
"icon_id": "46425349",
|
||||
"name": "关注",
|
||||
"font_class": "guanzhu",
|
||||
"unicode": "e798",
|
||||
"unicode_decimal": 59288
|
||||
},
|
||||
{
|
||||
"icon_id": "46331570",
|
||||
"name": "下载",
|
||||
|
|
@ -54,13 +75,6 @@
|
|||
"unicode": "e7a1",
|
||||
"unicode_decimal": 59297
|
||||
},
|
||||
{
|
||||
"icon_id": "46258084",
|
||||
"name": "收藏",
|
||||
"font_class": "shoucang",
|
||||
"unicode": "e7a0",
|
||||
"unicode_decimal": 59296
|
||||
},
|
||||
{
|
||||
"icon_id": "46258085",
|
||||
"name": "浏览量",
|
||||
|
|
|
|||