46
src/App.js
|
|
@ -1,30 +1,46 @@
|
||||||
import React from "react";
|
import React, { Component } from 'react';
|
||||||
|
|
||||||
import { HashRouter, Route, Switch, Link } from "react-router-dom";
|
import { HashRouter, Route, Switch, Link } from "react-router-dom";
|
||||||
import LearnMore from "./components/LearnMore";
|
import { enquireScreen } from 'enquire-js';
|
||||||
import History from "./components/History";
|
import LearnMore from "./LearnMore";
|
||||||
import Entry from "./";
|
import Home from './Home/main';
|
||||||
import Main from "./components/Main";
|
import Page2 from "./Home/history";
|
||||||
|
|
||||||
|
|
||||||
|
import Entry from "./Entry";
|
||||||
import Login from "./components/Login";
|
import Login from "./components/Login";
|
||||||
function App() {
|
let isMobile;
|
||||||
return (
|
enquireScreen((b) => {
|
||||||
<div className="App">
|
isMobile = b;
|
||||||
<header className="App-header">
|
});
|
||||||
<div className="App">
|
|
||||||
|
class App extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
isMobile,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
componentDidMount() {
|
||||||
|
enquireScreen((b) => {
|
||||||
|
this.setState({ isMobile: !!b });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
render() {
|
||||||
|
return (<div>
|
||||||
<HashRouter>
|
<HashRouter>
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route exact path='/history' component={History} />
|
<Route exact path='/history' component={Page2} />
|
||||||
<Route exact path='/ticket' component={Entry} />
|
<Route exact path='/ticket' component={Entry} />
|
||||||
<Route exact path='/' component={Main} />
|
<Route exact path='/' component={Home} />
|
||||||
<Route exact path='/learnMore' component={LearnMore} />
|
<Route exact path='/learnMore' component={LearnMore} />
|
||||||
<Route exact path='/login' component={Login} />
|
<Route exact path='/login' component={Login} />
|
||||||
</Switch>
|
</Switch>
|
||||||
</HashRouter>
|
</HashRouter>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Sheet from './Component/Sheet';
|
import Sheet from './components/Sheet';
|
||||||
import { Upload, Button, Icon, BackTop } from 'antd';
|
import { Upload, Button, Icon, BackTop } from 'antd';
|
||||||
|
|
||||||
function Entry() {
|
function Entry() {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { Button } from 'antd';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import Texty from 'rc-texty';
|
||||||
|
import 'rc-texty/assets/index.css';
|
||||||
|
|
||||||
|
class Banner extends React.PureComponent {
|
||||||
|
render() {
|
||||||
|
const { ...currentProps } = this.props;
|
||||||
|
const { dataSource } = currentProps;
|
||||||
|
delete currentProps.dataSource;
|
||||||
|
delete currentProps.isMobile;
|
||||||
|
const children = dataSource.textWrapper.children.map((item) => {
|
||||||
|
const { name, texty, ...$item } = item;
|
||||||
|
if (name.match('button')) {
|
||||||
|
return (
|
||||||
|
<Button type="primary" key={name} {...$item}>
|
||||||
|
{item.children}
|
||||||
|
</Button>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div key={name} {...$item}>
|
||||||
|
{texty ? (
|
||||||
|
<Texty type="mask-bottom">{item.children}</Texty>
|
||||||
|
) : (
|
||||||
|
item.children
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<div {...currentProps} {...dataSource.wrapper}>
|
||||||
|
<QueueAnim
|
||||||
|
key="QueueAnim"
|
||||||
|
type={['bottom', 'top']}
|
||||||
|
delay={200}
|
||||||
|
{...dataSource.textWrapper}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</QueueAnim>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default Banner;
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import { Button } from 'antd';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Content11 extends React.PureComponent {
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
return (
|
||||||
|
<OverPack {...props} {...dataSource.OverPack}>
|
||||||
|
<QueueAnim
|
||||||
|
type="bottom"
|
||||||
|
leaveReverse
|
||||||
|
key="page"
|
||||||
|
delay={[0, 100]}
|
||||||
|
{...dataSource.titleWrapper}
|
||||||
|
>
|
||||||
|
{dataSource.titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</QueueAnim>
|
||||||
|
<TweenOne
|
||||||
|
key="button"
|
||||||
|
style={{ textAlign: 'center' }}
|
||||||
|
{...dataSource.button}
|
||||||
|
animation={{ y: 30, opacity: 0, type: 'from', delay: 300 }}
|
||||||
|
>
|
||||||
|
<Button {...dataSource.button.children.a}>
|
||||||
|
{dataSource.button.children.a.children}
|
||||||
|
</Button>
|
||||||
|
</TweenOne>
|
||||||
|
</OverPack>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content11;
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
import React from 'react';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import { Row, Col } from 'antd';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Content3 extends React.PureComponent {
|
||||||
|
getDelay = (e, b) => (e % b) * 100 + Math.floor(e / b) * 100 + b * 100;
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource, isMobile } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
let clearFloatNum = 0;
|
||||||
|
const children = dataSource.block.children.map((item, i) => {
|
||||||
|
const childObj = item.children;
|
||||||
|
const delay = isMobile ? i * 50 : this.getDelay(i, 24 / item.md);
|
||||||
|
const liAnim = {
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeOutQuad',
|
||||||
|
delay,
|
||||||
|
};
|
||||||
|
const childrenAnim = { ...liAnim, x: '+=10', delay: delay + 100 };
|
||||||
|
clearFloatNum += item.md;
|
||||||
|
clearFloatNum = clearFloatNum > 24 ? 0 : clearFloatNum;
|
||||||
|
return (
|
||||||
|
<TweenOne
|
||||||
|
component={Col}
|
||||||
|
animation={liAnim}
|
||||||
|
key={item.name}
|
||||||
|
{...item}
|
||||||
|
componentProps={{ md: item.md, xs: item.xs }}
|
||||||
|
className={
|
||||||
|
!clearFloatNum
|
||||||
|
? `${item.className || ''} clear-both`.trim()
|
||||||
|
: item.className
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<TweenOne
|
||||||
|
animation={{
|
||||||
|
x: '-=10',
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeOutQuad',
|
||||||
|
}}
|
||||||
|
key="img"
|
||||||
|
{...childObj.icon}
|
||||||
|
>
|
||||||
|
<img src={childObj.icon.children} width="100%" alt="img" />
|
||||||
|
</TweenOne>
|
||||||
|
<div {...childObj.textWrapper}>
|
||||||
|
<TweenOne
|
||||||
|
key="h2"
|
||||||
|
animation={childrenAnim}
|
||||||
|
component="h2"
|
||||||
|
{...childObj.title}
|
||||||
|
>
|
||||||
|
{childObj.title.children}
|
||||||
|
</TweenOne>
|
||||||
|
<TweenOne
|
||||||
|
key="p"
|
||||||
|
animation={{ ...childrenAnim, delay: delay + 200 }}
|
||||||
|
component="div"
|
||||||
|
{...childObj.content}
|
||||||
|
>
|
||||||
|
{childObj.content.children}
|
||||||
|
</TweenOne>
|
||||||
|
</div>
|
||||||
|
</TweenOne>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<div {...dataSource.page}>
|
||||||
|
<div {...dataSource.titleWrapper}>
|
||||||
|
{dataSource.titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
<OverPack {...dataSource.OverPack}>
|
||||||
|
<QueueAnim key="u" type="bottom">
|
||||||
|
<Row key="row" {...dataSource.block}>
|
||||||
|
{children}
|
||||||
|
</Row>
|
||||||
|
</QueueAnim>
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content3;
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { Row, Col } from 'antd';
|
||||||
|
import { TweenOneGroup } from 'rc-tween-one';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Content5 extends React.PureComponent {
|
||||||
|
getChildrenToRender = (data) =>
|
||||||
|
data.map((item) => {
|
||||||
|
return (
|
||||||
|
<Col key={item.name} {...item}>
|
||||||
|
<div {...item.children.wrapper}>
|
||||||
|
<span {...item.children.img}>
|
||||||
|
<img src={item.children.img.children} height="100%" alt="img" />
|
||||||
|
</span>
|
||||||
|
<p {...item.children.content}>{item.children.content.children}</p>
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
const childrenToRender = this.getChildrenToRender(
|
||||||
|
dataSource.block.children
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<div {...dataSource.page}>
|
||||||
|
<div key="title" {...dataSource.titleWrapper}>
|
||||||
|
{dataSource.titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
<OverPack
|
||||||
|
className={`content-template ${props.className}`}
|
||||||
|
{...dataSource.OverPack}
|
||||||
|
>
|
||||||
|
<TweenOneGroup
|
||||||
|
component={Row}
|
||||||
|
key="ul"
|
||||||
|
enter={{
|
||||||
|
y: '+=30',
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeInOutQuad',
|
||||||
|
}}
|
||||||
|
leave={{ y: '+=30', opacity: 0, ease: 'easeInOutQuad' }}
|
||||||
|
{...dataSource.block}
|
||||||
|
>
|
||||||
|
{childrenToRender}
|
||||||
|
</TweenOneGroup>
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content5;
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Content9 extends React.PureComponent {
|
||||||
|
getBlockChildren = (block, i) => {
|
||||||
|
const { isMobile } = this.props;
|
||||||
|
const item = block.children;
|
||||||
|
const textWrapper = (
|
||||||
|
<QueueAnim
|
||||||
|
key="text"
|
||||||
|
leaveReverse
|
||||||
|
delay={isMobile ? [0, 100] : 0}
|
||||||
|
{...item.textWrapper}
|
||||||
|
>
|
||||||
|
<div key="time" {...item.time}>
|
||||||
|
{item.time.children}
|
||||||
|
</div>
|
||||||
|
<h2 key="title" {...item.title}>
|
||||||
|
<i {...item.icon}>
|
||||||
|
<img src={item.icon.children} alt="img" />
|
||||||
|
</i>
|
||||||
|
{item.title.children}
|
||||||
|
</h2>
|
||||||
|
<div key="p" {...item.content}>
|
||||||
|
{item.content.children}
|
||||||
|
</div>
|
||||||
|
</QueueAnim>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<OverPack key={i.toString()} {...block}>
|
||||||
|
{isMobile && textWrapper}
|
||||||
|
<QueueAnim
|
||||||
|
className="image-wrapper"
|
||||||
|
key="image"
|
||||||
|
type={isMobile ? 'right' : 'bottom'}
|
||||||
|
leaveReverse
|
||||||
|
delay={isMobile ? [100, 0] : 0}
|
||||||
|
{...item.imgWrapper}
|
||||||
|
>
|
||||||
|
<div key="image" {...item.img}>
|
||||||
|
<img src={item.img.children} alt="img" />
|
||||||
|
</div>
|
||||||
|
<div key="name" className="name-wrapper">
|
||||||
|
<div key="name" {...item.name}>
|
||||||
|
{item.name.children}
|
||||||
|
</div>
|
||||||
|
<div key="post" {...item.post}>
|
||||||
|
{item.post.children}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</QueueAnim>
|
||||||
|
|
||||||
|
{!isMobile && textWrapper}
|
||||||
|
</OverPack>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
const children = dataSource.block.children.map(this.getBlockChildren);
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<div {...dataSource.page}>
|
||||||
|
<div {...dataSource.titleWrapper}>
|
||||||
|
{dataSource.titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
<div {...dataSource.block}>{children}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content9;
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
import React from 'react';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import { Row, Col } from 'antd';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
|
||||||
|
function Content1(props) {
|
||||||
|
const { ...tagProps } = props;
|
||||||
|
const { dataSource, isMobile } = tagProps;
|
||||||
|
delete tagProps.dataSource;
|
||||||
|
delete tagProps.isMobile;
|
||||||
|
const animType = {
|
||||||
|
queue: isMobile ? 'bottom' : 'right',
|
||||||
|
one: isMobile
|
||||||
|
? {
|
||||||
|
scaleY: '+=0.3',
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeOutQuad',
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
x: '-=30',
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeOutQuad',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div {...tagProps} {...dataSource.wrapper}>
|
||||||
|
<OverPack {...dataSource.OverPack} component={Row}>
|
||||||
|
<TweenOne
|
||||||
|
key="img"
|
||||||
|
animation={animType.one}
|
||||||
|
resetStyle
|
||||||
|
{...dataSource.imgWrapper}
|
||||||
|
component={Col}
|
||||||
|
componentProps={{
|
||||||
|
md: dataSource.imgWrapper.md,
|
||||||
|
xs: dataSource.imgWrapper.xs,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span {...dataSource.img}>
|
||||||
|
<img src={dataSource.img.children} width="100%" alt="img" />
|
||||||
|
</span>
|
||||||
|
</TweenOne>
|
||||||
|
<QueueAnim
|
||||||
|
key="text"
|
||||||
|
type={animType.queue}
|
||||||
|
leaveReverse
|
||||||
|
ease={['easeOutQuad', 'easeInQuad']}
|
||||||
|
{...dataSource.textWrapper}
|
||||||
|
component={Col}
|
||||||
|
componentProps={{
|
||||||
|
md: dataSource.textWrapper.md,
|
||||||
|
xs: dataSource.textWrapper.xs,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<h2 key="h1" {...dataSource.title}>
|
||||||
|
{dataSource.title.children}
|
||||||
|
</h2>
|
||||||
|
<div key="p" {...dataSource.content}>
|
||||||
|
{dataSource.content.children}
|
||||||
|
</div>
|
||||||
|
</QueueAnim>
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content1;
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
import React from 'react';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import { Row, Col } from 'antd';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
|
||||||
|
function Content2(props) {
|
||||||
|
const { ...tagProps } = props;
|
||||||
|
const { dataSource, isMobile } = tagProps;
|
||||||
|
delete tagProps.dataSource;
|
||||||
|
delete tagProps.isMobile;
|
||||||
|
const animType = {
|
||||||
|
queue: isMobile ? 'bottom' : 'left',
|
||||||
|
one: isMobile
|
||||||
|
? {
|
||||||
|
scaleY: '+=0.3',
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeOutQuad',
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
x: '+=30',
|
||||||
|
opacity: 0,
|
||||||
|
type: 'from',
|
||||||
|
ease: 'easeOutQuad',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const img = (
|
||||||
|
<TweenOne
|
||||||
|
key="img"
|
||||||
|
animation={animType.one}
|
||||||
|
resetStyle
|
||||||
|
{...dataSource.imgWrapper}
|
||||||
|
component={Col}
|
||||||
|
componentProps={{
|
||||||
|
md: dataSource.imgWrapper.md,
|
||||||
|
xs: dataSource.imgWrapper.xs,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span {...dataSource.img}>
|
||||||
|
<img src={dataSource.img.children} width="100%" alt="img" />
|
||||||
|
</span>
|
||||||
|
</TweenOne>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<div {...tagProps} {...dataSource.wrapper}>
|
||||||
|
<OverPack {...dataSource.OverPack} component={Row}>
|
||||||
|
{isMobile && img}
|
||||||
|
<QueueAnim
|
||||||
|
type={animType.queue}
|
||||||
|
key="text"
|
||||||
|
leaveReverse
|
||||||
|
ease={['easeOutCubic', 'easeInCubic']}
|
||||||
|
{...dataSource.textWrapper}
|
||||||
|
component={Col}
|
||||||
|
componentProps={{
|
||||||
|
md: dataSource.textWrapper.md,
|
||||||
|
xs: dataSource.textWrapper.xs,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<h2 key="h1" {...dataSource.title}>
|
||||||
|
{dataSource.title.children}
|
||||||
|
</h2>
|
||||||
|
<div key="p" {...dataSource.content}>
|
||||||
|
{dataSource.content.children}
|
||||||
|
</div>
|
||||||
|
</QueueAnim>
|
||||||
|
{!isMobile && img}
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content2;
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import { Carousel as AntCarousel, Row, Col } from 'antd';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import Children from 'rc-tween-one/lib/plugin/ChildrenPlugin';
|
||||||
|
|
||||||
|
TweenOne.plugins.push(Children);
|
||||||
|
|
||||||
|
class Feature6 extends React.PureComponent {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.carouselRef = React.createRef();
|
||||||
|
this.state = {
|
||||||
|
current: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
onTitleClick = (_, i) => {
|
||||||
|
const carouselRef = this.carouselRef.current.childRefs.carousel;
|
||||||
|
carouselRef.goTo(i);
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeChange = (_, newIndex) => {
|
||||||
|
this.setState({
|
||||||
|
current: newIndex,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
getChildrenToRender = (dataSource) => {
|
||||||
|
const { current } = this.state;
|
||||||
|
const { Carousel } = dataSource;
|
||||||
|
const {
|
||||||
|
titleWrapper,
|
||||||
|
children: childWrapper,
|
||||||
|
wrapper,
|
||||||
|
...carouselProps
|
||||||
|
} = Carousel;
|
||||||
|
|
||||||
|
const {
|
||||||
|
barWrapper,
|
||||||
|
title: titleChild,
|
||||||
|
...titleWrapperProps
|
||||||
|
} = titleWrapper;
|
||||||
|
const titleToRender = [];
|
||||||
|
|
||||||
|
const childrenToRender = childWrapper.map((item, ii) => {
|
||||||
|
const { title, children, ...itemProps } = item;
|
||||||
|
titleToRender.push(
|
||||||
|
<div
|
||||||
|
{...title}
|
||||||
|
key={ii.toString()}
|
||||||
|
onClick={(e) => {
|
||||||
|
this.onTitleClick(e, ii);
|
||||||
|
}}
|
||||||
|
className={
|
||||||
|
ii === current ? `${title.className || ''} active` : title.className
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{title.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
const childrenItem = children.map(($item, i) => {
|
||||||
|
const { number, children: child, ...childProps } = $item;
|
||||||
|
const numberChild = number.children.replace(/[^0-9.-]/g, '');
|
||||||
|
const { unit, toText, ...numberProps } = number;
|
||||||
|
return (
|
||||||
|
<Col {...childProps} key={i.toString()}>
|
||||||
|
<TweenOne
|
||||||
|
{...numberProps}
|
||||||
|
animation={{
|
||||||
|
Children: {
|
||||||
|
value: parseFloat(numberChild),
|
||||||
|
floatLength:
|
||||||
|
parseFloat(numberChild) -
|
||||||
|
Math.floor(parseFloat(numberChild)) >
|
||||||
|
0
|
||||||
|
? 2
|
||||||
|
: 0,
|
||||||
|
formatMoney: true,
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
delay: 300,
|
||||||
|
ease: 'easeInOutCirc',
|
||||||
|
}}
|
||||||
|
component="span"
|
||||||
|
>
|
||||||
|
0
|
||||||
|
</TweenOne>
|
||||||
|
{unit && <span {...unit}>{unit.children}</span>}
|
||||||
|
<p {...child}>{child.children}</p>
|
||||||
|
</Col>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<QueueAnim
|
||||||
|
type="bottom"
|
||||||
|
component={Row}
|
||||||
|
{...itemProps}
|
||||||
|
key={ii.toString()}
|
||||||
|
>
|
||||||
|
{childrenItem}
|
||||||
|
</QueueAnim>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
const width = 100 / childrenToRender.length;
|
||||||
|
return (
|
||||||
|
<QueueAnim
|
||||||
|
key="queue"
|
||||||
|
leaveReverse
|
||||||
|
type="bottom"
|
||||||
|
delay={[0, 100]}
|
||||||
|
{...wrapper}
|
||||||
|
ref={this.carouselRef}
|
||||||
|
>
|
||||||
|
<div {...titleWrapperProps} key="title">
|
||||||
|
<div {...titleChild}>
|
||||||
|
{titleToRender}
|
||||||
|
<div
|
||||||
|
{...barWrapper}
|
||||||
|
style={{
|
||||||
|
width: `${width}%`,
|
||||||
|
left: `${width * current}%`,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<em {...barWrapper.children} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<AntCarousel
|
||||||
|
{...carouselProps}
|
||||||
|
key="carousel"
|
||||||
|
infinite={false}
|
||||||
|
beforeChange={this.onBeforeChange}
|
||||||
|
>
|
||||||
|
{childrenToRender}
|
||||||
|
</AntCarousel>
|
||||||
|
</QueueAnim>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { dataSource, isMobile, ...props } = this.props;
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<div>
|
||||||
|
<OverPack {...dataSource.OverPack}>
|
||||||
|
{this.getChildrenToRender(dataSource)}
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default Feature6;
|
||||||
|
|
@ -0,0 +1,139 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import { Carousel as AntCarousel, Row, Col } from 'antd';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Feature8 extends React.PureComponent {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.carouselRef = React.createRef();
|
||||||
|
this.state = {
|
||||||
|
current: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
onTitleClick = (_, i) => {
|
||||||
|
const carouselRef = this.carouselRef.current.childRefs.carousel;
|
||||||
|
carouselRef.goTo(i);
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeChange = (_, newIndex) => {
|
||||||
|
this.setState({
|
||||||
|
current: newIndex,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
getChildrenToRender = (dataSource) => {
|
||||||
|
const { current } = this.state;
|
||||||
|
const { Carousel, childWrapper: buttonWrapper } = dataSource;
|
||||||
|
const { children: carouselChild, wrapper, ...carouselProps } = Carousel;
|
||||||
|
const {
|
||||||
|
titleWrapper,
|
||||||
|
children: childWrapper,
|
||||||
|
...childrenProps
|
||||||
|
} = carouselChild;
|
||||||
|
|
||||||
|
const {
|
||||||
|
barWrapper,
|
||||||
|
title: titleChild,
|
||||||
|
...titleWrapperProps
|
||||||
|
} = titleWrapper;
|
||||||
|
const titleToRender = [];
|
||||||
|
|
||||||
|
const childrenToRender = childWrapper.map((item, ii) => {
|
||||||
|
const { title, children: childRow, ...rowProps } = item;
|
||||||
|
if (childWrapper.length > 1) {
|
||||||
|
titleToRender.push(
|
||||||
|
<div
|
||||||
|
{...title}
|
||||||
|
key={ii.toString()}
|
||||||
|
onClick={(e) => {
|
||||||
|
this.onTitleClick(e, ii);
|
||||||
|
}}
|
||||||
|
className={
|
||||||
|
ii === current
|
||||||
|
? `${title.className || ''} active`
|
||||||
|
: title.className
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{title.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
const childrenItem = childRow.map(($item, i) => {
|
||||||
|
const { children: colChild, arrow, ...colProps } = $item;
|
||||||
|
const { ...childProps } = colChild;
|
||||||
|
return (
|
||||||
|
<Col {...colProps} key={i.toString()}>
|
||||||
|
<div {...childProps}>
|
||||||
|
{colChild.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
{arrow && (
|
||||||
|
<div {...arrow}>
|
||||||
|
<img src={arrow.children} alt="img" />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Col>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div key={ii.toString()}>
|
||||||
|
<QueueAnim
|
||||||
|
component={Row}
|
||||||
|
type="bottom"
|
||||||
|
componentProps={{ type: 'flex' }}
|
||||||
|
{...rowProps}
|
||||||
|
>
|
||||||
|
{childrenItem}
|
||||||
|
</QueueAnim>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<QueueAnim
|
||||||
|
key="queue"
|
||||||
|
type="bottom"
|
||||||
|
ref={this.carouselRef}
|
||||||
|
{...childrenProps}
|
||||||
|
>
|
||||||
|
{childWrapper.length > 1 && (
|
||||||
|
<div {...titleWrapperProps} key="title">
|
||||||
|
<div {...titleChild}>{titleToRender}</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<AntCarousel
|
||||||
|
key="carousel"
|
||||||
|
{...carouselProps}
|
||||||
|
infinite={false}
|
||||||
|
beforeChange={this.onBeforeChange}
|
||||||
|
>
|
||||||
|
{childrenToRender}
|
||||||
|
</AntCarousel>
|
||||||
|
<div key="button" {...buttonWrapper}>
|
||||||
|
{buttonWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
</QueueAnim>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { dataSource, isMobile, ...props } = this.props;
|
||||||
|
const { titleWrapper } = dataSource;
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<div {...dataSource.page}>
|
||||||
|
<div {...dataSource.titleWrapper}>
|
||||||
|
{titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
<OverPack {...dataSource.OverPack}>
|
||||||
|
{this.getChildrenToRender(dataSource)}
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default Feature8;
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import React from 'react';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
|
||||||
|
class Footer extends React.PureComponent {
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<OverPack {...dataSource.OverPack}>
|
||||||
|
<TweenOne
|
||||||
|
animation={{ y: '+=30', opacity: 0, type: 'from' }}
|
||||||
|
key="footer"
|
||||||
|
{...dataSource.copyright}
|
||||||
|
>
|
||||||
|
{dataSource.copyright.children}
|
||||||
|
</TweenOne>
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Footer;
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
import React from 'react';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import { Menu } from 'antd';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
const { Item, SubMenu } = Menu;
|
||||||
|
|
||||||
|
class Header3 extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
phoneOpen: undefined,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
phoneClick = () => {
|
||||||
|
const phoneOpen = !this.state.phoneOpen;
|
||||||
|
this.setState({
|
||||||
|
phoneOpen,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { dataSource, isMobile, ...props } = this.props;
|
||||||
|
const { phoneOpen } = this.state;
|
||||||
|
const navData = dataSource.Menu.children;
|
||||||
|
const navChildren = navData.map((item) => {
|
||||||
|
const { children: a, subItem, ...itemProps } = item;
|
||||||
|
if (subItem) {
|
||||||
|
return (
|
||||||
|
<SubMenu
|
||||||
|
key={item.name}
|
||||||
|
{...itemProps}
|
||||||
|
title={
|
||||||
|
<div
|
||||||
|
{...a}
|
||||||
|
className={`header3-item-block ${a.className}`.trim()}
|
||||||
|
>
|
||||||
|
{a.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
popupClassName="header3-item-child"
|
||||||
|
>
|
||||||
|
{subItem.map(($item, ii) => {
|
||||||
|
const { children: childItem } = $item;
|
||||||
|
const child = childItem.href ? (
|
||||||
|
<a {...childItem}>
|
||||||
|
{childItem.children.map(getChildrenToRender)}
|
||||||
|
</a>
|
||||||
|
) : (
|
||||||
|
<div {...childItem}>
|
||||||
|
{childItem.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<Item key={$item.name || ii.toString()} {...$item}>
|
||||||
|
{child}
|
||||||
|
</Item>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</SubMenu>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<Item key={item.name} {...itemProps}>
|
||||||
|
<a {...a} className={`header3-item-block ${a.className}`.trim()}>
|
||||||
|
{a.children.map(getChildrenToRender)}
|
||||||
|
</a>
|
||||||
|
</Item>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const moment = phoneOpen === undefined ? 300 : null;
|
||||||
|
return (
|
||||||
|
<TweenOne
|
||||||
|
component="header"
|
||||||
|
animation={{ opacity: 0, type: 'from' }}
|
||||||
|
{...dataSource.wrapper}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
{...dataSource.page}
|
||||||
|
className={`${dataSource.page.className}${phoneOpen ? ' open' : ''}`}
|
||||||
|
>
|
||||||
|
<TweenOne
|
||||||
|
animation={{ x: -30, type: 'from', ease: 'easeOutQuad' }}
|
||||||
|
{...dataSource.logo}
|
||||||
|
>
|
||||||
|
<img width="100%" src={dataSource.logo.children} alt="img" />
|
||||||
|
</TweenOne>
|
||||||
|
{isMobile && (
|
||||||
|
<div
|
||||||
|
{...dataSource.mobileMenu}
|
||||||
|
onClick={() => {
|
||||||
|
this.phoneClick();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<em />
|
||||||
|
<em />
|
||||||
|
<em />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<TweenOne
|
||||||
|
{...dataSource.Menu}
|
||||||
|
animation={
|
||||||
|
isMobile
|
||||||
|
? {
|
||||||
|
x: 0,
|
||||||
|
height: 0,
|
||||||
|
duration: 300,
|
||||||
|
onComplete: (e) => {
|
||||||
|
if (this.state.phoneOpen) {
|
||||||
|
e.target.style.height = 'auto';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ease: 'easeInOutQuad',
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
moment={moment}
|
||||||
|
reverse={!!phoneOpen}
|
||||||
|
>
|
||||||
|
<Menu
|
||||||
|
mode={isMobile ? 'inline' : 'horizontal'}
|
||||||
|
defaultSelectedKeys={['sub0']}
|
||||||
|
theme="light"
|
||||||
|
>
|
||||||
|
{navChildren}
|
||||||
|
</Menu>
|
||||||
|
</TweenOne>
|
||||||
|
</div>
|
||||||
|
</TweenOne>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Header3;
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
import React from 'react';
|
||||||
|
import Link from 'rc-scroll-anim/lib/ScrollLink';
|
||||||
|
|
||||||
|
export default function Point(props) {
|
||||||
|
const { data, size, position, type, stroke } = props;
|
||||||
|
const children = data.map((item) => {
|
||||||
|
if (item.match('nav') || item.match('footer')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const className = `point ${type} ${stroke} ${size}`.trim();
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
key={item}
|
||||||
|
className={className}
|
||||||
|
to={item}
|
||||||
|
toHash={false}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}).filter((item) => item);
|
||||||
|
const wrapperClass = `point-wrapper ${position} ${size}`.trim();
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={wrapperClass}
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Point.defaultProps = {
|
||||||
|
size: '',
|
||||||
|
position: '',
|
||||||
|
type: '',
|
||||||
|
stroke: '',
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
/* eslint no-undef: 0 */
|
||||||
|
/* eslint arrow-parens: 0 */
|
||||||
|
import React from 'react';
|
||||||
|
import { enquireScreen } from 'enquire-js';
|
||||||
|
|
||||||
|
import Content11 from './Content11';
|
||||||
|
import Feature1 from './Feature1';
|
||||||
|
import Nav3 from './Nav3';
|
||||||
|
import {
|
||||||
|
Nav30DataSource,
|
||||||
|
Content110DataSource,
|
||||||
|
Feature13DataSource,
|
||||||
|
Feature11DataSource,
|
||||||
|
Feature12DataSource,
|
||||||
|
Footer00DataSource,
|
||||||
|
} from './data.source';
|
||||||
|
import './less/antMotionStyle.less';
|
||||||
|
import Footer0 from './Footer0';
|
||||||
|
let isMobile;
|
||||||
|
enquireScreen((b) => {
|
||||||
|
isMobile = b;
|
||||||
|
});
|
||||||
|
|
||||||
|
const { location } = window;
|
||||||
|
|
||||||
|
export default class Page2 extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
isMobile,
|
||||||
|
show: !location.port, // 如果不是 dva 2.0 请删除
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
// 适配手机屏幕;
|
||||||
|
enquireScreen((b) => {
|
||||||
|
this.setState({ isMobile: !!b });
|
||||||
|
});
|
||||||
|
// dva 2.0 样式在组件渲染之后动态加载,导致滚动组件不生效;线上不影响;
|
||||||
|
/* 如果不是 dva 2.0 请删除 start */
|
||||||
|
if (location.port) {
|
||||||
|
// 样式 build 时间在 200-300ms 之间;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.setState({
|
||||||
|
show: true,
|
||||||
|
});
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
/* 如果不是 dva 2.0 请删除 end */
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const children = [
|
||||||
|
<Nav3
|
||||||
|
id="Nav3_0"
|
||||||
|
key="Nav3_0"
|
||||||
|
dataSource={Nav30DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Content11
|
||||||
|
id="Content11_0"
|
||||||
|
key="Content11_0"
|
||||||
|
dataSource={Content110DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature1
|
||||||
|
id="Feature1_0"
|
||||||
|
key="Feature1_0"
|
||||||
|
dataSource={Feature13DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature1
|
||||||
|
id="Feature1_1"
|
||||||
|
key="Feature1_1"
|
||||||
|
dataSource={Feature11DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature1
|
||||||
|
id="Feature1_2"
|
||||||
|
key="Feature1_2"
|
||||||
|
dataSource={Feature12DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Footer0
|
||||||
|
id="Footer0_0"
|
||||||
|
key="Footer0_0"
|
||||||
|
dataSource={Footer00DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
];
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="templates-wrapper"
|
||||||
|
ref={(d) => {
|
||||||
|
this.dom = d;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* 如果不是 dva 2.0 替换成 {children} start */}
|
||||||
|
{this.state.show && children}
|
||||||
|
{/* 如果不是 dva 2.0 替换成 {children} end */}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,17 @@
|
||||||
@import './common.less';
|
@import './common.less';
|
||||||
@import './custom.less';
|
@import './custom.less';
|
||||||
|
@import './point.less';
|
||||||
@import './content.less';
|
@import './content.less';
|
||||||
@import './teams1.less';
|
@import './nav3.less';
|
||||||
|
@import './banner3.less';
|
||||||
|
@import './feature2.less';
|
||||||
|
@import './feature1.less';
|
||||||
|
@import './content3.less';
|
||||||
|
@import './feature8.less';
|
||||||
|
@import './feature6.less';
|
||||||
|
@import './content5.less';
|
||||||
|
@import './content9.less';
|
||||||
|
@import './footer0.less';
|
||||||
@import './edit.less';
|
@import './edit.less';
|
||||||
|
@import'./teams1.less';
|
||||||
|
@import './content11.less';
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
@banner3: banner3;
|
||||||
|
.@{banner3} {
|
||||||
|
// 如果在第一屏且导航位置为 relative, 一屏为 height: calc(~"100vh - 64px");
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
border-color: #666;
|
||||||
|
background-image: url("https://gw.alipayobjects.com/zos/rmsportal/xTPkCNNLOnTEbGgVZOpE.jpg");
|
||||||
|
background-size: cover;
|
||||||
|
background-attachment: fixed;
|
||||||
|
background-position: center;
|
||||||
|
& &-text-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: auto;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
color: @template-text-color-light;
|
||||||
|
max-width: 845px;
|
||||||
|
height: 500px;
|
||||||
|
width: 80%;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 28px;
|
||||||
|
font-weight: 400;
|
||||||
|
>.queue-anim-leaving {
|
||||||
|
position: relative !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
& &-slogan {
|
||||||
|
font-size: 68px;
|
||||||
|
line-height: 80px;
|
||||||
|
text-indent: 2px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 26px auto 38px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
& &-name-en {
|
||||||
|
display: block;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 32px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
& &-name {
|
||||||
|
font-size: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
& &-button {
|
||||||
|
display: block;
|
||||||
|
margin: 72px auto 0;
|
||||||
|
background: rgb(3, 67, 101);
|
||||||
|
background: -moz-linear-gradient(left, rgba(3, 67, 101, 1) 0%, rgba(0, 27, 51, 1) 100%);
|
||||||
|
background: linear-gradient(to right, rgba(3, 67, 101, 1) 0%, rgba(0, 27, 51, 1) 100%);
|
||||||
|
box-shadow: 0 8px 16px #0a52ab;
|
||||||
|
border: none;
|
||||||
|
transition: background .45s @ease-out;
|
||||||
|
width: 132px;
|
||||||
|
line-height: 42px;
|
||||||
|
height: 42px;
|
||||||
|
border-radius: 42px;
|
||||||
|
}
|
||||||
|
& &-time {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 24px;
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{banner3} {
|
||||||
|
background-attachment: inherit;
|
||||||
|
& &-text-wrapper {
|
||||||
|
width: 90%;
|
||||||
|
height: 50%;
|
||||||
|
}
|
||||||
|
& &-name-en {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
& &-slogan {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 12px 0;
|
||||||
|
}
|
||||||
|
& &-name {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
@content11: content11;
|
||||||
|
.@{content11}-wrapper {
|
||||||
|
height: 480px;
|
||||||
|
background: url("https://gw.alipayobjects.com/zos/rmsportal/ZsWYzLOItgeaWDSsXdZd.svg") no-repeat bottom;
|
||||||
|
background-size: cover;
|
||||||
|
background-size: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-top: 96px;
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.title-wrapper {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.button {
|
||||||
|
box-shadow: 0 8px 16px #0554b7;
|
||||||
|
background: linear-gradient(to right, #05cbff, #1e5aff) !important;
|
||||||
|
height: 42px;
|
||||||
|
line-height: 42px;
|
||||||
|
font-size: 14px;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 21px;
|
||||||
|
color: #fff;
|
||||||
|
width: 128px;
|
||||||
|
padding: 0 15px;
|
||||||
|
display: inline-block;
|
||||||
|
transition: transform .3s, box-shadow .3s;
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
box-shadow: 0 12px 20px #0554b7;
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
|
transform: translateY(4px);
|
||||||
|
box-shadow: 0 4px 8px #0554b7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.title-content {
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content11}-wrapper {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
@content3: content3;
|
||||||
|
.@{content3}-wrapper {
|
||||||
|
min-height: 764px;
|
||||||
|
.@{content3} {
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
& .title-content {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
&-block-wrapper {
|
||||||
|
position: relative;
|
||||||
|
.@{content3}-block {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 48px 24px;
|
||||||
|
vertical-align: top;
|
||||||
|
.@{content3}-icon {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15%;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.@{content3}-text {
|
||||||
|
width: 85%;
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 8%;
|
||||||
|
}
|
||||||
|
&.clear-both {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content3}-wrapper {
|
||||||
|
min-height: 1080px;
|
||||||
|
.@{content3} {
|
||||||
|
&-block-wrapper {
|
||||||
|
margin: 20px auto;
|
||||||
|
height: auto;
|
||||||
|
.@{content3}-block {
|
||||||
|
.@{content3}-title {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
&.queue-anim-leaving {
|
||||||
|
position: relative !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
@content5: content5;
|
||||||
|
.@{content5}-wrapper {
|
||||||
|
background-color: #fafafa;
|
||||||
|
min-height: 720px;
|
||||||
|
.@{content5} {
|
||||||
|
>p {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
&-img-wrapper {
|
||||||
|
margin: 0 auto;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
.block {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
.content5-block-content {
|
||||||
|
display: block;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
.page-pro();
|
||||||
|
border: none;
|
||||||
|
transition: box-shadow .3s @ease-out, transform .3s @ease-out;
|
||||||
|
& > span {
|
||||||
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
|
display: block;
|
||||||
|
background: @line-color;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
& p {
|
||||||
|
width: 100%;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
& p {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content5}-wrapper {
|
||||||
|
height: 2000px;
|
||||||
|
overflow: hidden;
|
||||||
|
.@{content5} {
|
||||||
|
ul {
|
||||||
|
li {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 2%;
|
||||||
|
span {
|
||||||
|
height: 168px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,145 @@
|
||||||
|
@content9: content9;
|
||||||
|
@text-color: rgba(0, 0, 0, 0.85);
|
||||||
|
@text-color2: #697b8c;
|
||||||
|
.@{content9}-wrapper {
|
||||||
|
padding-bottom: 64px;
|
||||||
|
&.home-page-wrapper {
|
||||||
|
overflow: initial;
|
||||||
|
}
|
||||||
|
.@{content9} {
|
||||||
|
min-height: 800px;
|
||||||
|
padding: 64px 0 0;
|
||||||
|
}
|
||||||
|
.timeline {
|
||||||
|
position: relative;
|
||||||
|
&:before {
|
||||||
|
display: block;
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 0;
|
||||||
|
width: 0;
|
||||||
|
height: ~"calc(100% - 108px)";
|
||||||
|
margin: 34px 0;
|
||||||
|
border-left: 2px #ebedf0 dashed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.block-wrapper {
|
||||||
|
color: @text-color;
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 70px;
|
||||||
|
min-height: 160px;
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.image-wrapper,
|
||||||
|
.text-wrapper {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.image-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
.block-img,
|
||||||
|
.name-wrapper {
|
||||||
|
float: right;
|
||||||
|
clear: both;
|
||||||
|
width: 262px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.block-img {
|
||||||
|
height: 98px;
|
||||||
|
img {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.name-wrapper {
|
||||||
|
margin: 16px 0 0;
|
||||||
|
.block-name {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.block-post {
|
||||||
|
font-size: 12px;
|
||||||
|
color: @text-color2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.text-wrapper {
|
||||||
|
padding-left: 40px;
|
||||||
|
.block-time {
|
||||||
|
font-size: 12px;
|
||||||
|
color: @text-color2;
|
||||||
|
line-height: 18px;
|
||||||
|
min-height: 18px;
|
||||||
|
}
|
||||||
|
.block-title {
|
||||||
|
margin: 8px 0 12px;
|
||||||
|
font-size: 14px;
|
||||||
|
position: relative;
|
||||||
|
min-height: 18px;
|
||||||
|
}
|
||||||
|
.block-icon {
|
||||||
|
position: absolute;
|
||||||
|
left: -40px;
|
||||||
|
transform: translateX(~"calc(-50% + 1px)");
|
||||||
|
}
|
||||||
|
.block-content {
|
||||||
|
width: 300px;
|
||||||
|
color: #314659;
|
||||||
|
font-size: 12px;
|
||||||
|
min-height: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content9}-wrapper {
|
||||||
|
padding-bottom: 0;
|
||||||
|
.@{content9} {
|
||||||
|
padding: 64px 24px;
|
||||||
|
}
|
||||||
|
.timeline {
|
||||||
|
&:before {
|
||||||
|
left: 0;
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.block-wrapper {
|
||||||
|
display: block;
|
||||||
|
min-height: 100px;
|
||||||
|
margin-bottom: 54px;
|
||||||
|
}
|
||||||
|
.image-wrapper,
|
||||||
|
.text-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.image-wrapper {
|
||||||
|
.block-img {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.name-wrapper {
|
||||||
|
text-align: left;
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 40px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.block-name, .block-post {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.block-name {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.text-wrapper {
|
||||||
|
.block-content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.block-title {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,253 @@
|
||||||
|
#Content3_0 .ant-col > .content3-text > .k6bwga0pdy-editor_css {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
opacity: 0.35;
|
||||||
|
border-top-color: rgba(150, 79, 79, 0);
|
||||||
|
border-right-color: rgba(134, 55, 55, 0);
|
||||||
|
border-bottom-color: rgba(134, 55, 55, 0);
|
||||||
|
border-left-color: rgba(211, 57, 57, 0);
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-row > .ant-col > .k6bwkyqmmk8-editor_css {
|
||||||
|
background-color: rgba(202, 36, 36, 0);
|
||||||
|
background-image: url('https://zos.alipayobjects.com/rmsportal/gGlUMYGEIvjDOOw.jpg');
|
||||||
|
background-attachment: scroll;
|
||||||
|
background-blend-mode: normal;
|
||||||
|
background-position: 0% 0%;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-size: auto;
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
#Content3_0 div > .ant-row > .k6bwib6y3rr-editor_css {
|
||||||
|
display: block;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: rgb(42, 128, 202);
|
||||||
|
text-decoration: line-through;
|
||||||
|
background-color: rgba(195, 67, 67, 0);
|
||||||
|
background-image: url('https://zos.alipayobjects.com/rmsportal/gGlUMYGEIvjDOOw.jpg');
|
||||||
|
background-attachment: scroll;
|
||||||
|
background-blend-mode: normal;
|
||||||
|
background-position: 0% 0%;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-size: auto;
|
||||||
|
background-clip: padding-box;
|
||||||
|
border-top-style: dashed;
|
||||||
|
}
|
||||||
|
#Banner3_1 .banner3-text-wrapper > .ant-btn {
|
||||||
|
background-color: #cf2892;
|
||||||
|
background-image: linear-gradient(
|
||||||
|
0rad,
|
||||||
|
rgb(255, 0, 0) 10%,
|
||||||
|
rgb(255, 0, 0) 29.71153846153846%,
|
||||||
|
#da2626 45.4223076923077%,
|
||||||
|
white 100%
|
||||||
|
);
|
||||||
|
background-attachment: scroll;
|
||||||
|
background-blend-mode: normal;
|
||||||
|
background-position: 0% 0%;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-size: auto;
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
#Banner3_1 .k6bxcwa6wb-editor_css {
|
||||||
|
box-shadow: 5px 5px 5px #108ee9;
|
||||||
|
}
|
||||||
|
#Banner3_1 .banner3-text-wrapper > .k6bx9bxsgw-editor_css {
|
||||||
|
background-clip: padding-box;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-shadow: 5px 5px 5px rgba(0, 0, 0, 0.35);
|
||||||
|
}
|
||||||
|
#Banner3_1 .banner3-text-wrapper > .k6bx9qqmas-editor_css {
|
||||||
|
color: rgb(255, 0, 0);
|
||||||
|
margin: 100px 100px;
|
||||||
|
}
|
||||||
|
#Banner3_1 .banner3-text-wrapper > .k6bxcnb8hlg-editor_css {
|
||||||
|
font-family: Tahoma;
|
||||||
|
font-size: 23px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #e9e9e9;
|
||||||
|
background-color: rgb(251, 251, 251);
|
||||||
|
background-image: linear-gradient(
|
||||||
|
225deg,
|
||||||
|
#f04134 12.5%,
|
||||||
|
#00a854 25%,
|
||||||
|
#108ee9 37.5%,
|
||||||
|
#f5317f 50%,
|
||||||
|
#f56a00 62.5%,
|
||||||
|
#7265e6 75%,
|
||||||
|
#ffbf00 87.5%,
|
||||||
|
#00a2ae 99.54%,
|
||||||
|
#00a2ae 100%,
|
||||||
|
rgb(0, 27, 51) 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
black 100%,
|
||||||
|
#f04134 100%,
|
||||||
|
#108ee9 100%,
|
||||||
|
black 100%
|
||||||
|
);
|
||||||
|
background-blend-mode: normal;
|
||||||
|
background-clip: padding-box;
|
||||||
|
box-shadow: 0px 8px 16px rgb(171, 21, 10);
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-col > .content3-text > .k6bypeippkr-editor_css {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-row > .ant-col > .k6byzxwmha-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-row > .ant-col > .k6byp0r4zad-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-row > .ant-col > .k6bz0rscbc6-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-row > .ant-col > .k6byxtosuua-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content3_0 .ant-row > .ant-col > .k6bz0x5q5u-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content3_0 .home-page > .title-wrapper > .k6byq9vtkee-editor_css {
|
||||||
|
margin: 0px 0 16px;
|
||||||
|
}
|
||||||
|
#Feature2_0 .ant-row > .ant-col > .k6bz79j5xeo-editor_css {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#Feature2_0 .ant-row > .ant-col > .k6bzcb3z43g-editor_css {
|
||||||
|
}
|
||||||
|
#Content3_0 .home-page > .title-wrapper > .k6bz1fy4zto-editor_css {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0oc6qv0m-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 30px;
|
||||||
|
}
|
||||||
|
#Feature8_0 div > .ant-row-flex > .k6c0r7negkf-editor_css {
|
||||||
|
margin: 36px 0px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0s91863l-editor_css {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0vx6j656-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0s334dxi-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0x19mrup-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0y0a2yx-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0x9xg18b-editor_css {
|
||||||
|
font-weight: 300;
|
||||||
|
color: #404040;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c10o2f0x-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c12xz3kb-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c0huzztn9-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c169bqlul-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c16ctkdmf-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c17cdd2tk-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c17hbe4aq-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c17kho4rt-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c17nnk41k-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c18wg896n-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c18yxsvf-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c1dfyt0he-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c1dj5lecd-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c1crpbwn-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c1dlcixg-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c2haip0st-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c2h8wti1-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c2hgg3bfc-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c2ijput1f-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c2ibp6dfh-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature8_0 .ant-col > .feature8-block-child > .k6c2imvlib-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#Content3_0 .k6c2jyfzwv-editor_css {
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
|
#Content3_0 div > .ant-row > .k6c2kk8agk-editor_css {
|
||||||
|
border-top-style: dashed;
|
||||||
|
border-right-style: dashed;
|
||||||
|
border-bottom-style: dashed;
|
||||||
|
border-left-style: dashed;
|
||||||
|
border-color: rgba(189, 25, 25, 0);
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
|
#Content9_0 .timeline > .block-wrapper > .k6c37bgt0io-editor_css {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
#Content9_0 .block-wrapper > .image-wrapper > .k6c3b63w63l-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content9_0 .image-wrapper > .name-wrapper > .k6c3bvphdf-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Content9_0 .image-wrapper > .name-wrapper > .k6c3bgi5wr-editor_css {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
#Teams1_0 .ant-row > .ant-col > .k6d84n0pi88-editor_css {
|
#Teams1_0 .ant-row > .ant-col > .k6d84n0pi88-editor_css {
|
||||||
width: 20px;
|
width: 320px;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
#Teams1_0 .ant-row > .ant-col > .k6d8cd2spqg-editor_css {
|
#Teams1_0 .ant-row > .ant-col > .k6d8cd2spqg-editor_css {
|
||||||
|
|
@ -11,3 +259,53 @@
|
||||||
#Teams1_0 .ant-row > .ant-col > .k6d8cnw0kx-editor_css {
|
#Teams1_0 .ant-row > .ant-col > .k6d8cnw0kx-editor_css {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6lxsmos5a-editor_css {
|
||||||
|
font-size: 18px;
|
||||||
|
text-align: left;
|
||||||
|
padding: 0 30px 0 10px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6lxlv638d8-editor_css {
|
||||||
|
font-size: 18px;
|
||||||
|
text-align: left;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6lxnkyb05e-editor_css {
|
||||||
|
font-size: 18px;
|
||||||
|
text-align: left;
|
||||||
|
padding: 0 30px 0 10px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6lxrmle9fu-editor_css {
|
||||||
|
font-size: 18px;
|
||||||
|
text-align: left;
|
||||||
|
padding: 0 30px 0 10px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6ly1aw82ke-editor_css {
|
||||||
|
width: 300px;
|
||||||
|
height: 300px;
|
||||||
|
position: sticky;
|
||||||
|
top: 200px;
|
||||||
|
left: 800px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6ly6kbgb-editor_css {
|
||||||
|
width: 300px;
|
||||||
|
height: 300px;
|
||||||
|
position: relative;
|
||||||
|
left: 100px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6lycb5l8ia-editor_css {
|
||||||
|
height: 120px;
|
||||||
|
padding: 50px 0px 0px;
|
||||||
|
}
|
||||||
|
#Content11_0.k6lxojfwiy-editor_css {
|
||||||
|
height: 1300px;
|
||||||
|
padding: 96px 30px 0px 10px;
|
||||||
|
}
|
||||||
|
#Feature1_0 .ant-row > .ant-col > .k6lymhkssyk-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Feature1_1 .ant-row > .ant-col > .k6lypevq23b-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Feature1_2 .ant-row > .ant-col > .k6lyqr8k4ri-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
@content1: content1;
|
||||||
|
.@{content1}-wrapper {
|
||||||
|
height: 360px;
|
||||||
|
.@{content1} {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24px;
|
||||||
|
&-img {
|
||||||
|
height: 100%;
|
||||||
|
transform-origin: top;
|
||||||
|
padding: 0 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
width: 250px;
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-text {
|
||||||
|
padding: 0 32px;
|
||||||
|
height: 100%;
|
||||||
|
.@{content1}-content,
|
||||||
|
.@{content1}-title {
|
||||||
|
position: relative !important;
|
||||||
|
}
|
||||||
|
.@{content1}-title {
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #404040;
|
||||||
|
margin-top: 120px;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content1}-wrapper {
|
||||||
|
height: 600px;
|
||||||
|
.@{content1} {
|
||||||
|
&-img {
|
||||||
|
height: 200px;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 64px;
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 180px;
|
||||||
|
height: 200px;
|
||||||
|
line-height: 200px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-text {
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0;
|
||||||
|
.@{content1}-content,
|
||||||
|
.@{content1}-title {
|
||||||
|
width: 100%;
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
.@{content1}-title {
|
||||||
|
margin: 32px auto 16px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
@content2: content2;
|
||||||
|
.@{content2}-wrapper {
|
||||||
|
height: 360px;
|
||||||
|
.@{content2} {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24px;
|
||||||
|
&-img {
|
||||||
|
height: 100%;
|
||||||
|
transform-origin: top;
|
||||||
|
padding: 0 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
width: 250px;
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-text {
|
||||||
|
padding: 0 32px;
|
||||||
|
height: 100%;
|
||||||
|
.@{content2}-content,
|
||||||
|
.@{content2}-title {
|
||||||
|
position: relative !important;
|
||||||
|
}
|
||||||
|
.@{content2}-title {
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #404040;
|
||||||
|
margin-top: 120px;
|
||||||
|
}
|
||||||
|
.@{content2}-content {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content2}-wrapper {
|
||||||
|
height: 600px;
|
||||||
|
.@{content2} {
|
||||||
|
&-img {
|
||||||
|
height: 200px;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 64px;
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 180px;
|
||||||
|
height: 200px;
|
||||||
|
line-height: 200px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-text {
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0;
|
||||||
|
.@{content2}-content,
|
||||||
|
.@{content2}-title {
|
||||||
|
width: 100%;
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
.@{content2}-title {
|
||||||
|
margin: 32px auto 16px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,118 @@
|
||||||
|
@feature6: feature6;
|
||||||
|
|
||||||
|
.@{feature6} {
|
||||||
|
&-wrapper {
|
||||||
|
min-height: 360px;
|
||||||
|
margin: 0 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.home-page {
|
||||||
|
padding: 64px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 72px;
|
||||||
|
font-size: 24px;
|
||||||
|
color: @text-color;
|
||||||
|
transition: color .45s @ease-in-out;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: @primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-bar {
|
||||||
|
height: 6px;
|
||||||
|
background: @primary-color;
|
||||||
|
width: 20%;
|
||||||
|
margin: auto;
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
position: relative;
|
||||||
|
margin-top: 8px;
|
||||||
|
transition: left .45s @ease-in-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-number,
|
||||||
|
&-text {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-number {
|
||||||
|
font-size: 48px;
|
||||||
|
color: @primary-color;
|
||||||
|
font-weight: 600;
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-unit {
|
||||||
|
font-size: 16px;
|
||||||
|
color: @primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-carousel {
|
||||||
|
.slick-dots-bottom {
|
||||||
|
bottom: -24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-dots li {
|
||||||
|
button {
|
||||||
|
background: fade(@primary-color, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.slick-active button {
|
||||||
|
background: @primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{feature6}-wrapper {
|
||||||
|
padding-bottom: 0;
|
||||||
|
min-height: 580px;
|
||||||
|
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.home-page {
|
||||||
|
padding: 56px 24px 64px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{feature6}-title {
|
||||||
|
&-text {
|
||||||
|
margin: 0 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-bar {
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{feature6}-number-wrapper {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,217 @@
|
||||||
|
@feature8: feature8;
|
||||||
|
|
||||||
|
.@{feature8} {
|
||||||
|
&-wrapper {
|
||||||
|
min-height: 680px;
|
||||||
|
margin: 0 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: fade(#fdfdfd, 30);
|
||||||
|
background-image: linear-gradient(360deg, fade(#c1daff, 30) 0%, fade(#fdfdfd, 30) 80%);
|
||||||
|
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.home-page {
|
||||||
|
padding: 64px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-carousel {
|
||||||
|
width: ~"calc(100% + 72px)";
|
||||||
|
margin-left: -36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-carousel-title {
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&-block {
|
||||||
|
display: inline-block;
|
||||||
|
color: fade(@text-color, 45);
|
||||||
|
transition: color .45s;
|
||||||
|
padding: 0 40px;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: @text-color;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
display: block;
|
||||||
|
content: '';
|
||||||
|
width: 1px;
|
||||||
|
height: 70%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: auto;
|
||||||
|
background: #d8d8d8;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
&::before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-block {
|
||||||
|
margin-top: 48px;
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
margin-top: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-row {
|
||||||
|
padding: 0 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-col {
|
||||||
|
text-align: center;
|
||||||
|
margin: 36px 0;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
.@{feature8}-block-arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-child {
|
||||||
|
padding: 36px 24px 24px;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
height: 100%;
|
||||||
|
transition: box-shadow @animate-duration @ease-in-out, background @animate-duration @ease-in-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #f6f9ff;
|
||||||
|
box-shadow: 0 12px 36px fade(#646488, 15);
|
||||||
|
|
||||||
|
.@{feature8}-block-content {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-image {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: @text-color;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
opacity: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
color: fade(@text-color, 65);
|
||||||
|
margin-top: 36px;
|
||||||
|
text-align: left;
|
||||||
|
transition: opacity @animate-duration @ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-arrow {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
width: 16px;
|
||||||
|
top: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-button {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
padding: 8px 40px;
|
||||||
|
border-radius: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
height: 40px;
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #3c89f6;
|
||||||
|
background-image: linear-gradient(135deg, #82b5ff 0%, #3c89f6 100%);
|
||||||
|
box-shadow: 0 9px 22px fade(#5f9bf1, 35);
|
||||||
|
transition: color .45s @ease-in-out, box-shadow .45s @ease-in-out, transform .45s @ease-in-out;
|
||||||
|
will-change: transform, box-shadow;
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 14px 26px fade(#5f9bf1, 40);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{feature8} {
|
||||||
|
&-wrapper {
|
||||||
|
padding-bottom: 0;
|
||||||
|
min-height: 1540px;
|
||||||
|
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.home-page {
|
||||||
|
padding: 56px 24px 64px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-carousel-title {
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
&-block {
|
||||||
|
padding: 0 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-block {
|
||||||
|
&-child {
|
||||||
|
width: 80%;
|
||||||
|
margin: auto;
|
||||||
|
background-color: #f6f9ff;
|
||||||
|
box-shadow: 0 12px 36px fade(#646488, 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-arrow {
|
||||||
|
bottom: -40px;
|
||||||
|
top: auto;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: auto;
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
.footer0-wrapper {
|
||||||
|
background-color: @template-bg-color;
|
||||||
|
height: 80px;
|
||||||
|
overflow: hidden;
|
||||||
|
.footer0 {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24px;
|
||||||
|
line-height: 80px;
|
||||||
|
text-align: center;
|
||||||
|
color: @template-footer-text-color;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.footer0-wrapper {
|
||||||
|
.footer0 {
|
||||||
|
font-size: 12px;
|
||||||
|
&.home-page {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
>div {
|
||||||
|
width: 90%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,192 @@
|
||||||
|
@header3: header3;
|
||||||
|
|
||||||
|
.@{header3} {
|
||||||
|
background: #fff;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
box-shadow: 0 4px 6px fade(#000, 5);
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
.home-page {
|
||||||
|
padding: 0 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-logo {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
|
line-height: 60px;
|
||||||
|
|
||||||
|
& img {
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
& a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-menu {
|
||||||
|
float: right;
|
||||||
|
.ant-menu-horizontal {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.ant-menu {
|
||||||
|
line-height: 62px;
|
||||||
|
height: 64px;
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
&-block {
|
||||||
|
padding: 0 8px;
|
||||||
|
|
||||||
|
>* {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-item,
|
||||||
|
&-item-child,
|
||||||
|
&-menu {
|
||||||
|
|
||||||
|
.ant-menu-sub .ant-menu-item,
|
||||||
|
.ant-menu-inline .ant-menu-item {
|
||||||
|
height: auto;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
&-sub-item {
|
||||||
|
display: block;
|
||||||
|
padding: 8px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-image {
|
||||||
|
float: left;
|
||||||
|
margin-right: 16px;
|
||||||
|
margin-top: 4px;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
font-size: 14px;
|
||||||
|
color: @text-color;
|
||||||
|
margin-left: 46px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
font-size: 12px;
|
||||||
|
color: fade(@text-color, 75);
|
||||||
|
margin-left: 46px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{header3} {
|
||||||
|
&-logo {
|
||||||
|
z-index: 101;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.home-page-wrapper .home-page {
|
||||||
|
padding: 0 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-menu {
|
||||||
|
height: auto;
|
||||||
|
float: inherit;
|
||||||
|
position: relative;
|
||||||
|
left: -24px;
|
||||||
|
width: ~"calc(100% + 48px)";
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity .3s @ease-in-out;
|
||||||
|
background: #fff;
|
||||||
|
|
||||||
|
& li {
|
||||||
|
padding: 0 24px;
|
||||||
|
|
||||||
|
&.ant-menu-submenu {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
&-sub-item {
|
||||||
|
padding: 8px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-mobile-menu {
|
||||||
|
width: 16px;
|
||||||
|
height: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 24px;
|
||||||
|
right: 24px;
|
||||||
|
z-index: 100;
|
||||||
|
|
||||||
|
em {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 2px;
|
||||||
|
background: @template-nav-bg-color;
|
||||||
|
margin-top: 4px;
|
||||||
|
transition: transform .3s @ease-in-out, opacity .3s @ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-menu {
|
||||||
|
height: auto;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.ant-menu-item-selected {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .open {
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
.@{header3}-mobile-menu {
|
||||||
|
em {
|
||||||
|
&:nth-child(1) {
|
||||||
|
transform: translateY(6px) rotate(45deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
transform: translateY(-6px) rotate(-45deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
>.@{header3}-menu {
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-item-block {
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
@import './custom.less';
|
||||||
|
@point: point;
|
||||||
|
.@{point} {
|
||||||
|
float: left;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
opacity: .5;
|
||||||
|
cursor: pointer;
|
||||||
|
pointer-events: auto;
|
||||||
|
transition: opacity .3s @ease-out, background .3s @ease-out;
|
||||||
|
margin: 6px auto;
|
||||||
|
background: @primary-color;
|
||||||
|
border-radius: 100%;
|
||||||
|
&.active {
|
||||||
|
opacity: 1;
|
||||||
|
background: @primary-color;
|
||||||
|
}
|
||||||
|
&-wrapper {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 9998;
|
||||||
|
top: 0;
|
||||||
|
right: 16px;
|
||||||
|
width: 10px;
|
||||||
|
display: flex;
|
||||||
|
height: 100%;
|
||||||
|
align-items: center;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
&-left {
|
||||||
|
left: 16px;
|
||||||
|
}
|
||||||
|
&-rect {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
&-prismatic {
|
||||||
|
border-radius: 0;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
&-stroke {
|
||||||
|
border: 2px solid @primary-color;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
&-small {
|
||||||
|
width: 6px;
|
||||||
|
&.point {
|
||||||
|
height: 6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-large {
|
||||||
|
width: 10px;
|
||||||
|
&.point {
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{point}-wrapper {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
min-height: 446px;
|
min-height: 446px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
.@{teams1} {
|
.@{teams1} {
|
||||||
overflow: hidden;
|
overflow: visible;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 64px 24px;
|
padding: 64px 24px;
|
||||||
> .title-wrapper {
|
> .title-wrapper {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,161 @@
|
||||||
|
/* eslint no-undef: 0 */
|
||||||
|
/* eslint arrow-parens: 0 */
|
||||||
|
import React from 'react';
|
||||||
|
import { enquireScreen } from 'enquire-js';
|
||||||
|
|
||||||
|
import Nav3 from './Nav3';
|
||||||
|
import Banner3 from './Banner3';
|
||||||
|
import Feature2 from './Feature2';
|
||||||
|
import Feature1 from './Feature1';
|
||||||
|
import Content3 from './Content3';
|
||||||
|
import Feature8 from './Feature8';
|
||||||
|
import Feature6 from './Feature6';
|
||||||
|
import Content5 from './Content5';
|
||||||
|
import Content9 from './Content9';
|
||||||
|
import Footer0 from './Footer0';
|
||||||
|
import Point from './Point';
|
||||||
|
|
||||||
|
import {
|
||||||
|
Nav30DataSource,
|
||||||
|
Banner31DataSource,
|
||||||
|
Feature20DataSource,
|
||||||
|
Feature10DataSource,
|
||||||
|
Content30DataSource,
|
||||||
|
Feature80DataSource,
|
||||||
|
Feature60DataSource,
|
||||||
|
Content50DataSource,
|
||||||
|
Content90DataSource,
|
||||||
|
Footer00DataSource,
|
||||||
|
|
||||||
|
|
||||||
|
} from './data.source';
|
||||||
|
import './less/antMotionStyle.less';
|
||||||
|
|
||||||
|
let isMobile;
|
||||||
|
enquireScreen((b) => {
|
||||||
|
isMobile = b;
|
||||||
|
});
|
||||||
|
|
||||||
|
const { location } = window;
|
||||||
|
|
||||||
|
export default class Home extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
isMobile,
|
||||||
|
show: !location.port, // 如果不是 dva 2.0 请删除
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
// 适配手机屏幕;
|
||||||
|
enquireScreen((b) => {
|
||||||
|
this.setState({ isMobile: !!b });
|
||||||
|
});
|
||||||
|
// dva 2.0 样式在组件渲染之后动态加载,导致滚动组件不生效;线上不影响;
|
||||||
|
/* 如果不是 dva 2.0 请删除 start */
|
||||||
|
if (location.port) {
|
||||||
|
// 样式 build 时间在 200-300ms 之间;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.setState({
|
||||||
|
show: true,
|
||||||
|
});
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
/* 如果不是 dva 2.0 请删除 end */
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const children = [
|
||||||
|
<Nav3
|
||||||
|
id="Nav3_0"
|
||||||
|
key="Nav3_0"
|
||||||
|
dataSource={Nav30DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Banner3
|
||||||
|
id="Banner3_1"
|
||||||
|
key="Banner3_1"
|
||||||
|
dataSource={Banner31DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature2
|
||||||
|
id="Feature2_0"
|
||||||
|
key="Feature2_0"
|
||||||
|
dataSource={Feature20DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature1
|
||||||
|
id="Feature1_0"
|
||||||
|
key="Feature1_0"
|
||||||
|
dataSource={Feature10DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Content3
|
||||||
|
id="Content3_0"
|
||||||
|
key="Content3_0"
|
||||||
|
dataSource={Content30DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature8
|
||||||
|
id="Feature8_0"
|
||||||
|
key="Feature8_0"
|
||||||
|
dataSource={Feature80DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature6
|
||||||
|
id="Feature6_0"
|
||||||
|
key="Feature6_0"
|
||||||
|
dataSource={Feature60DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Content5
|
||||||
|
id="Content5_0"
|
||||||
|
key="Content5_0"
|
||||||
|
dataSource={Content50DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Content9
|
||||||
|
id="Content9_0"
|
||||||
|
key="Content9_0"
|
||||||
|
dataSource={Content90DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
|
||||||
|
<Footer0
|
||||||
|
id="Footer0_0"
|
||||||
|
key="Footer0_0"
|
||||||
|
dataSource={Footer00DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>, // 导航和页尾不进入锚点区,如果需要,自行添加;
|
||||||
|
<Point
|
||||||
|
key="list"
|
||||||
|
data={[
|
||||||
|
'Nav3_0',
|
||||||
|
'Banner3_1',
|
||||||
|
'Feature2_0',
|
||||||
|
'Feature1_0',
|
||||||
|
'Content3_0',
|
||||||
|
'Feature8_0',
|
||||||
|
'Feature6_0',
|
||||||
|
'Content5_0',
|
||||||
|
'Content9_0',
|
||||||
|
|
||||||
|
'Footer0_0',
|
||||||
|
]}
|
||||||
|
/>,
|
||||||
|
];
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="templates-wrapper"
|
||||||
|
ref={(d) => {
|
||||||
|
this.dom = d;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* 如果不是 dva 2.0 替换成 {children} start */}
|
||||||
|
{this.state.show && children}
|
||||||
|
{/* 如果不是 dva 2.0 替换成 {children} end */}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import TweenOne from 'rc-tween-one';
|
||||||
|
import { Button } from 'antd';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Content11 extends React.PureComponent {
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
return (
|
||||||
|
<OverPack {...props} {...dataSource.OverPack}>
|
||||||
|
<QueueAnim
|
||||||
|
type="bottom"
|
||||||
|
leaveReverse
|
||||||
|
key="page"
|
||||||
|
delay={[0, 100]}
|
||||||
|
{...dataSource.titleWrapper}
|
||||||
|
>
|
||||||
|
{dataSource.titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</QueueAnim>
|
||||||
|
<TweenOne
|
||||||
|
key="button"
|
||||||
|
style={{ textAlign: 'center' }}
|
||||||
|
{...dataSource.button}
|
||||||
|
animation={{ y: 30, opacity: 0, type: 'from', delay: 300 }}
|
||||||
|
>
|
||||||
|
<Button {...dataSource.button.children.a}>
|
||||||
|
{dataSource.button.children.a.children}
|
||||||
|
</Button>
|
||||||
|
</TweenOne>
|
||||||
|
</OverPack>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Content11;
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import { Row, Col } from 'antd';
|
||||||
|
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
function Feature7(props) {
|
||||||
|
const { dataSource, isMobile, ...tagProps } = props;
|
||||||
|
const { blockWrapper, titleWrapper } = dataSource;
|
||||||
|
const childrenToRender = blockWrapper.children.map((item, i) => (
|
||||||
|
<Col {...item} key={i.toString()}>
|
||||||
|
<a {...item.children}>
|
||||||
|
{item.children.children.map(getChildrenToRender)}
|
||||||
|
</a>
|
||||||
|
</Col>
|
||||||
|
));
|
||||||
|
return (
|
||||||
|
<div {...tagProps} {...dataSource.wrapper}>
|
||||||
|
<div {...dataSource.page}>
|
||||||
|
<div {...dataSource.titleWrapper}>
|
||||||
|
{titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
<OverPack {...dataSource.OverPack}>
|
||||||
|
<QueueAnim
|
||||||
|
key="queue"
|
||||||
|
type="bottom"
|
||||||
|
leaveReverse
|
||||||
|
interval={50}
|
||||||
|
component={Row}
|
||||||
|
{...blockWrapper}
|
||||||
|
>
|
||||||
|
{childrenToRender}
|
||||||
|
</QueueAnim>
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Feature7;
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
import React from 'react';
|
||||||
|
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
|
||||||
|
import QueueAnim from 'rc-queue-anim';
|
||||||
|
import { Row, Col, Button } from 'antd';
|
||||||
|
import { getChildrenToRender } from './utils';
|
||||||
|
|
||||||
|
class Pricing1 extends React.PureComponent {
|
||||||
|
getChildrenToRender = (item) => {
|
||||||
|
const {
|
||||||
|
wrapper,
|
||||||
|
topWrapper,
|
||||||
|
name,
|
||||||
|
buttonWrapper,
|
||||||
|
line,
|
||||||
|
content,
|
||||||
|
money,
|
||||||
|
} = item.children;
|
||||||
|
return (
|
||||||
|
<Col key={item.name} {...item}>
|
||||||
|
<QueueAnim type="bottom" {...wrapper}>
|
||||||
|
<div {...topWrapper}>
|
||||||
|
<div {...name} key="name">
|
||||||
|
{name.children}
|
||||||
|
</div>
|
||||||
|
<h1 {...money} key="money">
|
||||||
|
{money.children}
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div {...content} key="content">
|
||||||
|
{content.children}
|
||||||
|
</div>
|
||||||
|
<i {...line} key="line" />
|
||||||
|
<div {...buttonWrapper} key="button">
|
||||||
|
<Button {...buttonWrapper.children.a} />
|
||||||
|
</div>
|
||||||
|
</QueueAnim>
|
||||||
|
</Col>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { ...props } = this.props;
|
||||||
|
const { dataSource } = props;
|
||||||
|
delete props.dataSource;
|
||||||
|
delete props.isMobile;
|
||||||
|
const { block } = dataSource;
|
||||||
|
const childrenToRender = block.children.map(this.getChildrenToRender);
|
||||||
|
return (
|
||||||
|
<div {...props} {...dataSource.wrapper}>
|
||||||
|
<div {...dataSource.page}>
|
||||||
|
<div key="title" {...dataSource.titleWrapper}>
|
||||||
|
{dataSource.titleWrapper.children.map(getChildrenToRender)}
|
||||||
|
</div>
|
||||||
|
<OverPack {...dataSource.OverPack}>
|
||||||
|
<QueueAnim
|
||||||
|
type="bottom"
|
||||||
|
component={Row}
|
||||||
|
leaveReverse
|
||||||
|
ease={['easeOutQuad', 'easeInOutQuad']}
|
||||||
|
key="content"
|
||||||
|
>
|
||||||
|
{childrenToRender}
|
||||||
|
</QueueAnim>
|
||||||
|
</OverPack>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Pricing1;
|
||||||
|
|
@ -0,0 +1,668 @@
|
||||||
|
import React from 'react';
|
||||||
|
export const Pricing10DataSource = {
|
||||||
|
wrapper: { className: 'home-page-wrapper pricing1-wrapper' },
|
||||||
|
page: { className: 'home-page pricing1' },
|
||||||
|
OverPack: { playScale: 0.3, className: 'pricing1-content-wrapper' },
|
||||||
|
titleWrapper: {
|
||||||
|
className: 'pricing1-title-wrapper',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>协会规划</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
className: 'pricing1-title-h1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
block: {
|
||||||
|
className: 'pricing1-block-wrapper',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'block0',
|
||||||
|
className: 'pricing1-block',
|
||||||
|
md: 8,
|
||||||
|
xs: 24,
|
||||||
|
children: {
|
||||||
|
wrapper: { className: 'pricing1-block-box ' },
|
||||||
|
topWrapper: { className: 'pricing1-top-wrapper' },
|
||||||
|
name: {
|
||||||
|
className: 'pricing1-name',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
money: {
|
||||||
|
className: 'pricing1-money k6niku34c3-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>公益组织</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
className: 'pricing1-content k6nimnp5as-editor_css',
|
||||||
|
children:
|
||||||
|
'E志者协会作为一个公益组织,着眼实际,立足于电脑电器维修;开拓创新,积极学习应用前沿知识;扎根实践,广泛开展校内外志愿服务活动。',
|
||||||
|
},
|
||||||
|
line: { className: 'pricing1-line' },
|
||||||
|
buttonWrapper: {
|
||||||
|
className: 'pricing1-button-wrapper',
|
||||||
|
children: {
|
||||||
|
a: {
|
||||||
|
className: 'pricing1-button',
|
||||||
|
href: '/#/ticket',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>从</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'block~k6nil20ln5q',
|
||||||
|
className: 'pricing1-block',
|
||||||
|
md: 8,
|
||||||
|
xs: 24,
|
||||||
|
children: {
|
||||||
|
wrapper: { className: 'pricing1-block-box ' },
|
||||||
|
topWrapper: { className: 'pricing1-top-wrapper' },
|
||||||
|
name: {
|
||||||
|
className: 'pricing1-name',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
money: {
|
||||||
|
className: 'pricing1-money k6ninis0ok-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>校内校外</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
className: 'pricing1-content k6niojh3hyf-editor_css',
|
||||||
|
children:
|
||||||
|
'E志者协会的公益之路渐行渐宽,从校内到校外,从服务师生到服务社会群众,从一个电器维修小组发展到如今如此规模的志愿者团队。',
|
||||||
|
},
|
||||||
|
line: { className: 'pricing1-line' },
|
||||||
|
buttonWrapper: {
|
||||||
|
className: 'pricing1-button-wrapper',
|
||||||
|
children: {
|
||||||
|
a: {
|
||||||
|
className: 'pricing1-button',
|
||||||
|
href: '/#/ticket',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>浙里</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'block~k6nil2ir9',
|
||||||
|
className: 'pricing1-block',
|
||||||
|
md: 8,
|
||||||
|
xs: 24,
|
||||||
|
children: {
|
||||||
|
wrapper: { className: 'pricing1-block-box ' },
|
||||||
|
topWrapper: { className: 'pricing1-top-wrapper' },
|
||||||
|
name: {
|
||||||
|
className: 'pricing1-name',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
money: {
|
||||||
|
className: 'pricing1-money k6nip1p7ezh-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>初心不忘</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
className: 'pricing1-content k6nipheaxuh-editor_css',
|
||||||
|
children:
|
||||||
|
'E志者协会不忘初心,在志愿服务精神的传承中开拓进取汲取课堂及课外前沿科学技术之精华,以服务社会为己任,传播先进公益文化为己负责',
|
||||||
|
},
|
||||||
|
line: { className: 'pricing1-line' },
|
||||||
|
buttonWrapper: {
|
||||||
|
className: 'pricing1-button-wrapper',
|
||||||
|
children: {
|
||||||
|
a: {
|
||||||
|
className: 'pricing1-button',
|
||||||
|
href: '/#/ticket',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>出发</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
export const Feature70DataSource = {
|
||||||
|
wrapper: { className: 'home-page-wrapper feature7-wrapper' },
|
||||||
|
page: { className: 'home-page feature7' },
|
||||||
|
OverPack: { playScale: 0.3 },
|
||||||
|
titleWrapper: {
|
||||||
|
className: 'feature7-title-wrapper',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-title-h1',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会荣誉<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-title-content',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
|
||||||
|
|
||||||
|
——仅摘取部分展示
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
blockWrapper: {
|
||||||
|
className: 'feature7-block-wrapper',
|
||||||
|
gutter: 24,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block1',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2009年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会获“<b>
|
||||||
|
浙江省优秀志愿者服务队伍
|
||||||
|
</b>”荣誉称号<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj6uobqcl',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2009年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会获“<b>浙江大学十大优秀志愿者服务集体</b>”荣誉称号<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj6vxuva',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2009年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
荣获“ <b>2009年度浙江大学优秀青年志愿者服务项目</b>”荣誉称号<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj6x1h1pp',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2010年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会由<b>一星级社团跃升为三星级社团</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj6xikh3',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>2012年</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
连续三年协会获评“<b>浙江大学学生十佳社团”</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj6ycl25',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2014年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会荣升为浙江大学<b>四星级社团</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj6z393nb',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>2015年</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会入选<b>浙江大学最美公益服务集体</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj70ilku',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2015年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会获<b>社团文化节精品活动二等奖</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj716t4x',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2015年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会获<b>社团精品课程一等奖</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>
|
||||||
|
<br />
|
||||||
|
</b>
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj71z66a',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2015年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会暑期社会实践入选为<b>校级重点社会实践项目</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj72nvlx',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
2016年<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
<b>协会荣升为浙江大学五星级社团</b>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
md: 6,
|
||||||
|
xs: 24,
|
||||||
|
name: 'block~k6nj73ckswc',
|
||||||
|
className: 'feature7-block',
|
||||||
|
children: {
|
||||||
|
className: 'feature7-block-group k6nj0rhbyb-editor_css',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
className: 'feature7-block-title k6niz26grar-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>2016年</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
className: 'feature7-block-content k6nj3s0akal-editor_css',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
协会荣获“ <b>2015年-2016年浙江大学学生示范性社团</b>”<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
export const Content110DataSource = {
|
||||||
|
OverPack: {
|
||||||
|
className: 'home-page-wrapper content11-wrapper',
|
||||||
|
playScale: 0.3,
|
||||||
|
},
|
||||||
|
titleWrapper: {
|
||||||
|
className: 'title-wrapper',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'image',
|
||||||
|
children:
|
||||||
|
'https://gw.alipayobjects.com/zos/rmsportal/PiqyziYmvbgAudYfhuBr.svg',
|
||||||
|
className: 'title-image',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
className: 'title-h1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
每年协会成员都有多人进入竺可桢学院工高班和爱迪生班等荣誉班级就读
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
className: 'title-content k6njo4yb7gb-editor_css',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'content2',
|
||||||
|
children: (
|
||||||
|
<>
|
||||||
|
<p>
|
||||||
|
此外在”中控杯“、”大学生数学建模竞赛“、”电路板焊接大赛“中多人获得优异奖项
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
className: 'title-content k6njr5kxpn-editor_css',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
className: '',
|
||||||
|
children: { a: { className: 'button', href: '/#/ticket', children: '立即报名' } },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
# 如何使用:
|
||||||
|
|
||||||
|
- umi 里如何使用[请查看](https://landing.ant.design/docs/use/umi)。
|
||||||
|
- 其它脚手架使用[请查看](https://landing.ant.design/docs/use/getting-started)。
|
||||||
|
|
@ -2,12 +2,25 @@
|
||||||
/* eslint arrow-parens: 0 */
|
/* eslint arrow-parens: 0 */
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { enquireScreen } from 'enquire-js';
|
import { enquireScreen } from 'enquire-js';
|
||||||
|
import Nav3 from "../Home/Nav3";
|
||||||
import Teams1 from './Teams1';
|
import Pricing1 from './Pricing1';
|
||||||
|
import Feature7 from './Feature7';
|
||||||
import { Teams10DataSource } from './data.source';
|
import Content11 from './Content11';
|
||||||
|
import Footer0 from '../Home/Footer0';
|
||||||
|
import {
|
||||||
|
Pricing10DataSource,
|
||||||
|
Feature70DataSource,
|
||||||
|
Content110DataSource,
|
||||||
|
} from './data.source';
|
||||||
import './less/antMotionStyle.less';
|
import './less/antMotionStyle.less';
|
||||||
|
import '../Home/less/antMotionStyle.less';
|
||||||
|
import {
|
||||||
|
Nav30DataSource,
|
||||||
|
|
||||||
|
Footer00DataSource,
|
||||||
|
|
||||||
|
|
||||||
|
} from '../Home/data.source';
|
||||||
let isMobile;
|
let isMobile;
|
||||||
enquireScreen((b) => {
|
enquireScreen((b) => {
|
||||||
isMobile = b;
|
isMobile = b;
|
||||||
|
|
@ -43,11 +56,36 @@ export default class Home extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|
||||||
const children = [
|
const children = [
|
||||||
<Teams1
|
<Nav3
|
||||||
id="Teams1_0"
|
id="Nav3_0"
|
||||||
key="Teams1_0"
|
key="Nav3_0"
|
||||||
dataSource={Teams10DataSource}
|
dataSource={Nav30DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Pricing1
|
||||||
|
id="Pricing1_0"
|
||||||
|
key="Pricing1_0"
|
||||||
|
dataSource={Pricing10DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Feature7
|
||||||
|
id="Feature7_0"
|
||||||
|
key="Feature7_0"
|
||||||
|
dataSource={Feature70DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Content11
|
||||||
|
id="Content11_0"
|
||||||
|
key="Content11_0"
|
||||||
|
dataSource={Content110DataSource}
|
||||||
|
isMobile={this.state.isMobile}
|
||||||
|
/>,
|
||||||
|
<Footer0
|
||||||
|
id="Footer0_0"
|
||||||
|
key="Footer0_0"
|
||||||
|
dataSource={Footer00DataSource}
|
||||||
isMobile={this.state.isMobile}
|
isMobile={this.state.isMobile}
|
||||||
/>,
|
/>,
|
||||||
];
|
];
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
@import './common.less';
|
||||||
|
@import './custom.less';
|
||||||
|
@import './content.less';
|
||||||
|
@import './pricing1.less';
|
||||||
|
@import './feature7.less';
|
||||||
|
@import './content11.less';
|
||||||
|
@import './edit.less';
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
@import "~antd/lib/style/v2-compatible-reset.less";
|
||||||
|
|
||||||
|
body {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .content-wrapper > .tween-one-leaving,
|
||||||
|
.queue-anim-leaving {
|
||||||
|
// position: absolute !important;
|
||||||
|
// width: 100%;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.video {
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#react-content {
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
.home-page-wrapper p {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
@homepage: home-page;
|
||||||
|
.@{homepage}-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
.@{homepage} {
|
||||||
|
height: 100%;
|
||||||
|
max-width: 1200px;
|
||||||
|
position: relative;
|
||||||
|
margin: auto;
|
||||||
|
will-change: transform;
|
||||||
|
}
|
||||||
|
.title-wrapper > h1, > h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
color: @text-color;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.title-wrapper {
|
||||||
|
margin: 0 auto 64px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{homepage} {
|
||||||
|
padding: 128px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{homepage}-wrapper {
|
||||||
|
.@{homepage} {
|
||||||
|
padding: 56px 24px;
|
||||||
|
>h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
margin: 0 auto 32px;
|
||||||
|
&.title-h1 {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>p {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
@content11: content11;
|
||||||
|
.@{content11}-wrapper {
|
||||||
|
height: 480px;
|
||||||
|
background: url("https://gw.alipayobjects.com/zos/rmsportal/ZsWYzLOItgeaWDSsXdZd.svg") no-repeat bottom;
|
||||||
|
background-size: cover;
|
||||||
|
background-size: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-top: 96px;
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.title-wrapper {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.button {
|
||||||
|
box-shadow: 0 8px 16px #0554b7;
|
||||||
|
background: linear-gradient(to right, #05cbff, #1e5aff) !important;
|
||||||
|
height: 42px;
|
||||||
|
line-height: 42px;
|
||||||
|
font-size: 14px;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 21px;
|
||||||
|
color: #fff;
|
||||||
|
width: 128px;
|
||||||
|
padding: 0 15px;
|
||||||
|
display: inline-block;
|
||||||
|
transition: transform .3s, box-shadow .3s;
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
box-shadow: 0 12px 20px #0554b7;
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
|
transform: translateY(4px);
|
||||||
|
box-shadow: 0 4px 8px #0554b7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.title-content {
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{content11}-wrapper {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
@import "~antd/lib/style/themes/default.less";
|
||||||
|
|
||||||
|
@line-color: #e9e9e9;
|
||||||
|
|
||||||
|
@shadow-color: rgba(0, 0, 0, 0.15);
|
||||||
|
|
||||||
|
@bottom-bar-bg-color: #262626;
|
||||||
|
@bottom-bar-line-color: #000;
|
||||||
|
|
||||||
|
@template-bg-color: #001529;
|
||||||
|
@template-bg-color-light: #ececec;
|
||||||
|
@template-nav-bg-color: #001529;
|
||||||
|
@template-text-color: #ccc;
|
||||||
|
@template-text-title-color: #bcbcbc;
|
||||||
|
@template-text-color-light: #fff;
|
||||||
|
@template-footer-text-color: #999;
|
||||||
|
|
||||||
|
@animate-duration: .45s;
|
||||||
|
|
||||||
|
/* 详细页图片或框框的样式;
|
||||||
|
*/
|
||||||
|
.page-shadow() {
|
||||||
|
box-shadow: 0 5px 8px @shadow-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-pro() {
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid @line-color;
|
||||||
|
transform: translateY(0);
|
||||||
|
transition: transform .3s @ease-out, box-shadow .3s @ease-out;
|
||||||
|
&:hover {
|
||||||
|
.page-shadow();
|
||||||
|
transform: translateY(-5px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
#Pricing1_0
|
||||||
|
.pricing1-block-box
|
||||||
|
> .pricing1-top-wrapper
|
||||||
|
> .k6niku34c3-editor_css {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
#Pricing1_0 .ant-col > .pricing1-block-box > .k6nimnp5as-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Pricing1_0
|
||||||
|
.pricing1-block-box
|
||||||
|
> .pricing1-top-wrapper
|
||||||
|
> .k6ninis0ok-editor_css {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
#Pricing1_0 .ant-col > .pricing1-block-box > .k6niojh3hyf-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Pricing1_0
|
||||||
|
.pricing1-block-box
|
||||||
|
> .pricing1-top-wrapper
|
||||||
|
> .k6nip1p7ezh-editor_css {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
#Pricing1_0 .ant-col > .pricing1-block-box > .k6nipheaxuh-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Feature7_0 .ant-col > .feature7-block-group > .k6niz1ixc6-editor_css {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
#Feature7_0 .ant-col > .feature7-block-group > .k6nj0lolnf-editor_css {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#Feature7_0 .ant-row > .ant-col > .k6nj0rhbyb-editor_css {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#Feature7_0 .ant-col > .feature7-block-group > .k6niz26grar-editor_css {
|
||||||
|
width: 50px;
|
||||||
|
margin: 0px 0px 16px 90px;
|
||||||
|
}
|
||||||
|
#Feature7_0 .ant-col > .feature7-block-group > .k6nj3s0akal-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6njo4yb7gb-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
#Content11_0 .title-wrapper > .k6njr5kxpn-editor_css {
|
||||||
|
font-size: 16px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
@feature7: feature7;
|
||||||
|
|
||||||
|
.@{feature7} {
|
||||||
|
&-wrapper {
|
||||||
|
min-height: 564px;
|
||||||
|
margin: 0 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #f7f9fc;
|
||||||
|
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.home-page {
|
||||||
|
padding: 64px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
|
||||||
|
&-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-block {
|
||||||
|
margin-top: 28px;
|
||||||
|
|
||||||
|
&-group {
|
||||||
|
display: block;
|
||||||
|
padding: 28px 24px;
|
||||||
|
box-shadow: 0 2px 16px fade(#000, 8);
|
||||||
|
background-image: url('https://gw.alipayobjects.com/mdn/rms_ae7ad9/afts/img/A*fMOFSpRXMxsAAAAAAAAAAABkARQnAQ');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 100% 100%;
|
||||||
|
transition: box-shadow @animate-duration @ease-in-out, transform @animate-duration @ease-in-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 6px 16px fade(#000, 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-image {
|
||||||
|
float: left;
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
font-size: 14px;
|
||||||
|
float: left;
|
||||||
|
margin-left: 8px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
clear: both;
|
||||||
|
color: fade(@text-color, 75);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{feature7}-wrapper {
|
||||||
|
min-height: 1540px;
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.home-page {
|
||||||
|
padding: 56px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
@pricing1: pricing1;
|
||||||
|
.@{pricing1}-wrapper {
|
||||||
|
min-height: 760px;
|
||||||
|
.@{pricing1} {
|
||||||
|
>p {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
&-content-wrapper {
|
||||||
|
min-height: 400px;
|
||||||
|
}
|
||||||
|
&-block-box {
|
||||||
|
width: 260px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #eef0f3;
|
||||||
|
text-align: center;
|
||||||
|
color: #666;
|
||||||
|
min-height: 400px;
|
||||||
|
margin: auto;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
.page-pro();
|
||||||
|
&.active {
|
||||||
|
border-color: @primary-color;
|
||||||
|
background: #fff;
|
||||||
|
.@{pricing1} {
|
||||||
|
&-top-wrapper {
|
||||||
|
background: @primary-color;
|
||||||
|
}
|
||||||
|
&-name,
|
||||||
|
&-money,
|
||||||
|
&-button {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
&-button {
|
||||||
|
background: @primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-block {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
&-top-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
padding: 16px 24px;
|
||||||
|
}
|
||||||
|
&-name {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
&-money {
|
||||||
|
font-family: 'Helvetica Neue', sans-serif;
|
||||||
|
font-size: 32px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
&-content {
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 2;
|
||||||
|
font-weight: 300;
|
||||||
|
margin: 32px 24px 48px;
|
||||||
|
}
|
||||||
|
&-line {
|
||||||
|
display: block;
|
||||||
|
height: 1px;
|
||||||
|
background: #d9d9d9;
|
||||||
|
margin: 0 24px;
|
||||||
|
}
|
||||||
|
&-button-wrapper {
|
||||||
|
margin: 18px 24px;
|
||||||
|
}
|
||||||
|
&-button {
|
||||||
|
padding: 0 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.home-page-wrapper {
|
||||||
|
.@{pricing1}-title-wrapper {
|
||||||
|
margin-bottom: 64px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.@{pricing1}-wrapper {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import { Button } from 'antd';
|
||||||
|
|
||||||
|
export const isImg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?/;
|
||||||
|
export const getChildrenToRender = (item, i) => {
|
||||||
|
let tag = item.name.indexOf('title') === 0 ? 'h1' : 'div';
|
||||||
|
tag = item.href ? 'a' : tag;
|
||||||
|
let children = typeof item.children === 'string' && item.children.match(isImg)
|
||||||
|
? React.createElement('img', { src: item.children, alt: 'img' })
|
||||||
|
: item.children;
|
||||||
|
if (item.name.indexOf('button') === 0 && typeof item.children === 'object') {
|
||||||
|
children = React.createElement(Button, {
|
||||||
|
...item.children
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return React.createElement(tag, { key: i.toString(), ...item }, children);
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { Button } from "antd";
|
||||||
|
import { HashRouter, Route, Switch, Link } from "react-router-dom";
|
||||||
|
class History extends React.Component {
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<body >
|
||||||
|
<div>
|
||||||
|
<div class="bg1">
|
||||||
|
<h2>
|
||||||
|
协会历史
|
||||||
|
</h2>
|
||||||
|
<div class="para" label-module="para">浙江大学学生E志者协会的前身是1984年陈强先生创办的电器工程学院电气维修小组。</div>
|
||||||
|
<div class="para" label-module="para">步入21世纪,为适应新时期学校教育体制的改革和管理模式的创新,在电气工程学院团委的大力支持和推动下,电器维修小组终于在2008年9月正式成为校级学生社团,面向全校吸纳志愿维修的志愿者,在全校范围内搭建以志愿维修为主体的服务平台,做志愿维修的践行者,做安全用电和节约用电的实践者和宣传者,做电力热点问题及电器电脑新尖问题的引领者。</div>
|
||||||
|
<div class="para" label-module="para">在此后,协会抓紧机遇,在做好本职工作的同时,积极开拓其他公益志愿活动,服务广大师生与社会群众。多年来,协会还在组织架构、运行管理机制、文化建设、对外宣传等方面展开了积极的探索,开展了多项校级精品活动,提高了协会在校园文化中的知名度和影响力。</div>
|
||||||
|
<div class="para" label-module="para">近五年来,浙江大学学生E志者协会凭借出色的表现,屡次获得“浙江大学校级优秀社团”、“校级十佳社团”、“青年志愿服务优秀集体”等荣誉称号。2015年4月,浙江大学E志者协会荣升为校四星级社团。2016年6月,浙江大学学生E志者协会获评“浙江大学学生示范性社团”,该奖项是浙江大学社团最高荣誉。</div>
|
||||||
|
<div class="para" label-module="para">浙江大学学生E志者协会是浙江大学位数不多的拥有自己办公室的社团之一,为社团活动提供了良好载体,办公室位于紫金港校区东三教学楼200室,供社团日常值班维修和社团活动使用。</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="bg2">
|
||||||
|
<h2>
|
||||||
|
活动回顾
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="para" label-module="para"><b>校园维修&社区维修</b></div>
|
||||||
|
<div class="para" label-module="para">协会日常值班维修,每月一次的学园义务维修和不定期开展的社区义务维修为同学们和社区居民的生活带来了极大的便利。</div>
|
||||||
|
<div class="para" label-module="para"><b>电脑电器维修知识课堂(社联精品课程)</b></div>
|
||||||
|
<div class="para" label-module="para">协会每个长学期都会开办电脑电器维修知识精品课程,旨在传授对于电脑电器维修感兴趣的同学相关的知识并交流经验,方便同学们自主解决生活中遇到的简单的电脑电器故障。2015年秋冬学期精品课程荣获浙江大学学生社团精品课程评比一等奖。</div>
|
||||||
|
<div class="para" label-module="para"><b>浙江大学学生E志者协会30周年庆典暨电气工程学院公益论坛</b></div>
|
||||||
|
<div class="para" label-module="para">协会向全校师生展示30年来E志者们在公益实践中取得的成果,同时也邀请到了校内大型公益组织的代表们分享他们的公益之路。活动一经举办,即在全校范围内掀起了热心公益实践</div>
|
||||||
|
<div class="para" label-module="para">的巨大浪潮,激发了广大青年学子的投身公益事业的热情,点亮了大学生心中公益实践的明灯。</div>
|
||||||
|
</div>
|
||||||
|
<div class="bg">
|
||||||
|
<h2>
|
||||||
|
协会日常
|
||||||
|
</h2>
|
||||||
|
<div class="para" label-module="pare">
|
||||||
|
浙江大学E志者协会,其宗旨为“以服务社会为己任,搭建电器维修爱好者交流平台,做安全用电和节约用电的实践者和宣传者,研究电力电气热点问题,为建设社会主义和谐社会贡献力量。”</div>
|
||||||
|
<div class="para" label-module="pare">
|
||||||
|
在过去的三十年里,协会一如既往的做好自己的最本职工作——<b>免费电器维修</b>,服务于广大的师生;并在各方面展开了积极的探索,开展了多项校级精品活动。
|
||||||
|
协会活动主要分为以下三大部分:
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
<h3 class="titleh3">
|
||||||
|
一、公益活动
|
||||||
|
</h3>
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
<div class="para" ><b>日常值班</b>:协会在日常服务中,为满足校内师生日常维修需求、提高志愿维修质量与效率,特设立了值班制度,每天固定值班时间超过6小时,为同学们提供免费维修电脑电器的服务。在刚刚过去的2014-2015学年,协会在校内共进行电脑清灰247次,维修电脑硬件软件问题共计794次,维修大小电器共计145件,电脑维修成功率达到90.7%,电器维修成功率达到81.3%。</div>
|
||||||
|
<div class="para">
|
||||||
|
<b>线上交流:</b>近三年,协会始终坚持通过各类平台发布指导购买笔记本的帖子,为广大新生以及全校师生提供购机基础知识普及以及免费的购机咨询。协会官方微信平台每周推送有关电脑电器及前沿科技的推文,在及时为全校师生解决电脑电器疑惑的过程中承担起普及科学技术知识的任务。
|
||||||
|
</div>
|
||||||
|
<div class="para">
|
||||||
|
<b>社会实践:</b>在80年代,我们就已经开展社区维修服务,也深入少年宫、社区夏令营等场所向青少年讲解相关知识。此外,我们还积极参加诸如长三角高校公益论坛等社会性的公益活动,并积极与在杭其他高校拓展合作关系,曾作为代表受邀奔赴浙江工商大学参加电脑维修交流峰会,并发表重要讲话。
|
||||||
|
</div>
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
<h3 class="titleh3">
|
||||||
|
二、社团活动</h3>
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
<div class="para">浙江大学学生E志者协会努力追求发展成一家展现大学生风貌,发扬电气特色的优秀公益社团,开展如电路板焊接、全息投影等内容详实、寓教于乐的实践类活动。</div>
|
||||||
|
<div class="para">协会每年推陈出新,举办了形式内容各异、特点鲜明的精品活动,如“电路的特技”,鼓励同学自行设计新奇的电路并进行自主焊接;“功放传心声”DIY大赛让同学现场焊接可传声的电路并传达自己的心声;“地球一小时”:向全校师生传播正确用电、合理节电小常识;“全息投影DIY烙铁画”:利用自制全息投影技术让同学体验用烙铁作画的乐趣……这一系列形式多样、独具协会特色的精品活动,吸引了一大批同学的参与,获得了同学们的一致好评。</div>
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
<h3 class="titleh3">三:创新创意</h3>
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
<div class="para">在日常维修中,我们基于网络、创新方法,通过理论和实践的结合提升自己的能力,如通过自主实践编写命令提示符批处理文件解决一些系统问题、通过沙箱模拟研究校园流行病毒攻击原理并找出源头。同时关注切合当代大学生实际的前沿技术,曾撰写《windows10测评报告》、《office2016评测》、《2016年暑假购机指南》文件,将所学前沿科技知识应用于日常维修实践。</div>
|
||||||
|
<div class="para">同时每年,协会均会组织中高年级成员组队参加智能车竞赛,与智能车基地保持联系,在技术难题上交换经验。协会还举办废旧电子元件(电器)创意DIY大赛,面向全校同学征集创意,充分发挥动手实践能力,在校内推广电器创意创新的理念。协会还曾受邀参加中国大学生创意节(杭州赛区)活动,荣获“创意装饰奖”。</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a href='./'>
|
||||||
|
<Button type="primary" size={"large"}>to home</Button>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default History
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
import React from "react";
|
||||||
|
class LearnMore extends React.Component {
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<body>
|
||||||
|
<div class="para-title level-2" label-module="para-title">
|
||||||
|
<h2 class="title-text"><span class="title-prefix">浙江大学学生E志者协会</span>协会规划</h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="para" label-module="para">三十年间,E志者协会作为一个公益组织,着眼实际,立足于电脑电器维修;开拓创新,积极学习应用前沿知识;扎根实践,广泛开展校内外志愿服务活动。</div>
|
||||||
|
<div class="para" label-module="para">三十年间,E志者协会的公益之路渐行渐宽,从校内到校外,从服务师生到服务社会群众,从一个电器维修小组发展到如今如此规模的志愿者团队。</div>
|
||||||
|
<div class="para" label-module="para">三十年间,E志者协会不忘初心,在E志者三十年志愿服务精神的传承中开拓进取,汲取课堂及课外前沿科学技术之精华,以服务社会为己任,传播先进公益文化为己责,致力于创建更为优秀的、能展现浙江大学青年学生风貌的公益服务团体。</div>
|
||||||
|
<div class="para" label-module="para">我们在2015年提出了引领社团发展的E愿计划,核心是提高服务质量、开展合作交流和传播公益理念。在三十年发展的基础上,我们除了打算完善已有服务制度外,还规划着在紧密跟进时代步伐、 结合学校社团建设制度的情况下,推进与其他组织的合作交流,结合新技术大力建设协会网络平台以及专属APP,借助这些通道以及精品课程,完成我们协会从授人以鱼到授人以渔的关键过渡,同时也通过我们的身体力行以及新媒体的影响力传播公益理念,让公益理念的种子在每个人的心里萌发。</div><div class="anchor-list ">
|
||||||
|
<a name="8" class="lemma-anchor para-title" ></a>
|
||||||
|
<a name="sub19873141_8" class="lemma-anchor " ></a>
|
||||||
|
<a name="协会荣誉" class="lemma-anchor " ></a>
|
||||||
|
</div><div class="para-title level-2" label-module="para-title">
|
||||||
|
<h2 class="title-text"><span class="title-prefix">浙江大学学生E志者协会</span>协会荣誉</h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="para" label-module="para">2009年浙江大学学生E志者协会获“浙江省优秀志愿者服务队伍”荣誉称号</div>
|
||||||
|
<div class="para" label-module="para">2009年浙江大学学生E志者协会获“浙江大学十大优秀志愿者服务集体”荣誉称号</div>
|
||||||
|
<div class="para" label-module="para">2009年浙江大学学生E志者协会成为“浙江大学素质拓展基地候补基地”</div>
|
||||||
|
<div class="para" label-module="para">2009年浙江大学学生E志者协会荣获“2009年度浙江大学优秀青年志愿者服务项目”荣誉称号</div>
|
||||||
|
<div class="para" label-module="para">2010年浙江大学学生E志者协会被评为“2009-2010年度浙江大学校级优秀社团”</div>
|
||||||
|
<div class="para" label-module="para">2010年末浙江大学学生E志者协会由一星级社团跃升为三星级社团</div>
|
||||||
|
<div class="para" label-module="para">2010——2012年连续三年浙江大学学生E志者协会获评“浙江大学学生十佳社团”</div>
|
||||||
|
<div class="para" label-module="para">2014年浙江大学学生E志者协会荣升为浙江大学四星级社团</div>
|
||||||
|
<div class="para" label-module="para">2015年浙江大学学生E志者协会入选浙江大学最美公益服务集体</div>
|
||||||
|
<div class="para" label-module="para">2015年浙江大学学生E志者协会获社团文化节精品活动二等奖</div>
|
||||||
|
<div class="para" label-module="para">2015年浙江大学学生E志者协会获社团精品课程一等奖</div>
|
||||||
|
<div class="para" label-module="para">2015年浙江大学学生E志者协会“小手共大手,点亮求知之光”暑期社会实践入选为校级重点社会实践项目</div>
|
||||||
|
<div class="para" label-module="para">2016年浙江大学学生E志者协会荣获“2015——2016年度浙江大学学生示范性社团”(浙江大学社团最高荣誉),指导老师赵梓衫老师获“浙江大学十佳社团指导老师”,副会长田畅获“浙江大学优秀学生社团干部”</div>
|
||||||
|
<div class="para" label-module="para">2016年浙江大学电路板焊接大赛中协会成员范俊崇、童丹妮同学获低年级组一等奖(第一名),汤继祥、田畅同学获高年级组一等奖(第一名)</div>
|
||||||
|
<div class="para" label-module="para">2016年浙江大学第十一届“中控杯”机器人竞赛机器人竞赛购物挑战赛项目中协会电器部副部长王溯恺获一等奖</div>
|
||||||
|
<div class="para" label-module="para">2016年美国大学生数学建模竞赛(MCM/ICM)中协会成员贺自怡等同学获M奖</div>
|
||||||
|
<div class="para" label-module="para">另每年协会成员都有多人进入竺可桢学院工高班和爱迪生班等荣誉班级就读</div>
|
||||||
|
</body>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default LearnMore;
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
import axios from "axios";
|
||||||
|
|
||||||
|
|
||||||
|
function Login() {
|
||||||
|
|
||||||
|
const [items, setItems] = useState([]);
|
||||||
|
useEffect(() => {
|
||||||
|
const fetchItems = async () => {
|
||||||
|
let fetchItems = [];
|
||||||
|
for (let i = 1; i <= 7; i++) {
|
||||||
|
let result = await axios(
|
||||||
|
'api/info/' + i,
|
||||||
|
{
|
||||||
|
method: 'GET',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
console.log("2312");
|
||||||
|
fetchItems.push({
|
||||||
|
id: result.id
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
setItems(fetchItems);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
{
|
||||||
|
items.map((item, i) => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<tr id={i}>
|
||||||
|
<td>
|
||||||
|
{item.id}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
export default Login;
|
||||||
|
|
@ -0,0 +1,377 @@
|
||||||
|
import React from 'react'
|
||||||
|
import axios from 'axios'
|
||||||
|
import { Button, Form, Input,Icon, Radio, message } from 'antd'
|
||||||
|
import 'antd/dist/antd.css'
|
||||||
|
import { confirmAlert } from 'react-confirm-alert'
|
||||||
|
import 'react-confirm-alert/src/react-confirm-alert.css';
|
||||||
|
import qs from 'qs';
|
||||||
|
|
||||||
|
class NewForm extends React.Component {
|
||||||
|
componentDidMount() {
|
||||||
|
this.loadLocalStorage();
|
||||||
|
}
|
||||||
|
loadLocalStorage = () => {
|
||||||
|
const values = JSON.parse(localStorage.getItem('formCache') || '{}');
|
||||||
|
this.props.form.setFieldsValue(values);
|
||||||
|
}
|
||||||
|
saveLocalStorage = () => {
|
||||||
|
const values = this.props.form.getFieldsValue();
|
||||||
|
localStorage.setItem('formCache', JSON.stringify(values));
|
||||||
|
}
|
||||||
|
handleSubmit = e => {
|
||||||
|
e.preventDefault();
|
||||||
|
const validateFieldsAndScroll = this.props.form.validateFieldsAndScroll
|
||||||
|
confirmAlert({
|
||||||
|
title: '提交报名表',
|
||||||
|
message: '您填写的表格已经保存在浏览器中,以后可以修改后覆盖提交。点击 OK 进行提交。',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
label: 'Yes',
|
||||||
|
onClick: () => {
|
||||||
|
validateFieldsAndScroll(
|
||||||
|
(err, values) => {
|
||||||
|
if (err) {
|
||||||
|
message.error('填写不正确,请按照提示修改');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(values);
|
||||||
|
let addForm = async () => {
|
||||||
|
let result = await axios(
|
||||||
|
'api/submit',
|
||||||
|
{
|
||||||
|
headers:{'Content-Type': 'application/x-www-form-urlencoded'},
|
||||||
|
method: "POST",
|
||||||
|
data: qs.stringify({"dto":JSON.stringify(values)})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if (result.data.success) {
|
||||||
|
message.success("提交成功!后续的面试时间会以短信形式通知,期待你的加入!")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
message.error("提交失败!可能是网络问题。")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addForm();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'No',
|
||||||
|
onClick: () => {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const formItemLayout = {
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 8 },
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 12 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const tailFormItemLayout = {
|
||||||
|
wrapperCol: {
|
||||||
|
xs: {
|
||||||
|
span: 24,
|
||||||
|
offset: 0,
|
||||||
|
},
|
||||||
|
sm: {
|
||||||
|
span: 16,
|
||||||
|
offset: 8,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const { getFieldDecorator } = this.props.form;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Form {...formItemLayout} onSubmit={this.handleSubmit}>
|
||||||
|
<Form.Item label="姓名">
|
||||||
|
{
|
||||||
|
getFieldDecorator('name', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请在此处填入你的姓名"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})(
|
||||||
|
<Input />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="学号" >
|
||||||
|
{getFieldDecorator('id', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请在此处填入你的学号',
|
||||||
|
},
|
||||||
|
{ pattern: /^[0-9]+$/, message: "混进去了数字以外的东西呀" }
|
||||||
|
|
||||||
|
],
|
||||||
|
})(<Input />)}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="性别">
|
||||||
|
{
|
||||||
|
getFieldDecorator('sex', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择你的性别'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
(
|
||||||
|
<Radio.Group>
|
||||||
|
<Radio.Button value={0} ><div><Icon type="man" />男</div></Radio.Button>
|
||||||
|
<Radio.Button value={1} ><div><Icon type="woman" />女</div></Radio.Button>
|
||||||
|
</Radio.Group>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="年级">
|
||||||
|
{
|
||||||
|
getFieldDecorator('grade', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择你的年级'
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
(
|
||||||
|
<Radio.Group >
|
||||||
|
<Radio.Button value={1}>大一</Radio.Button>
|
||||||
|
<Radio.Button value={2}>大二</Radio.Button>
|
||||||
|
<Radio.Button value={3}>大三</Radio.Button>
|
||||||
|
<Radio.Button value={4}>大四</Radio.Button>
|
||||||
|
</Radio.Group>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="专业/大类">
|
||||||
|
{
|
||||||
|
getFieldDecorator('major', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请在这里填入你的专业'
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)(
|
||||||
|
<Input placeholder="例如:工科试验班(电气)" />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="E-mail">
|
||||||
|
{getFieldDecorator('email', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请在此处填入你的E-mail'
|
||||||
|
}, { type: 'email', message: "邮箱格式不正确" }
|
||||||
|
],
|
||||||
|
})(<Input />)}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="联系电话">
|
||||||
|
{getFieldDecorator('phone', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请在此处填入你的电话号码',
|
||||||
|
},
|
||||||
|
{ pattern: /^1[345678]\d{9}$/, message: "手机号不太对呀" }
|
||||||
|
],
|
||||||
|
})(<Input />)}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="第一志愿(两志愿请不要重复选择)">
|
||||||
|
{
|
||||||
|
getFieldDecorator('firstWish', {rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择第一志愿'
|
||||||
|
}
|
||||||
|
]})(
|
||||||
|
<Radio.Group name="firstWish" size="medium">
|
||||||
|
<Radio.Button value={1}>电脑部</Radio.Button>
|
||||||
|
<Radio.Button value={2}>电器部</Radio.Button>
|
||||||
|
<Radio.Button value={3}>文宣部</Radio.Button>
|
||||||
|
<Radio.Button value={4}>人资部</Radio.Button>
|
||||||
|
<Radio.Button value={5}>财务部</Radio.Button>
|
||||||
|
</Radio.Group>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="第二志愿(两志愿请不要重复选择)">
|
||||||
|
{
|
||||||
|
getFieldDecorator('secondWish', {rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择第二志愿'
|
||||||
|
}
|
||||||
|
]})(
|
||||||
|
<Radio.Group name="secondWish" size="medium">
|
||||||
|
<Radio.Button value={1}>电脑部</Radio.Button>
|
||||||
|
<Radio.Button value={2}>电器部</Radio.Button>
|
||||||
|
<Radio.Button value={3}>文宣部</Radio.Button>
|
||||||
|
<Radio.Button value={4}>人资部</Radio.Button>
|
||||||
|
<Radio.Button value={5}>财务部</Radio.Button>
|
||||||
|
</Radio.Group>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="是否服从调剂">
|
||||||
|
{
|
||||||
|
getFieldDecorator('adjustment', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择是否服从调剂'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)(
|
||||||
|
<Radio.Group >
|
||||||
|
<Radio value={true}>是</Radio>
|
||||||
|
<Radio value={false}>否</Radio>
|
||||||
|
</Radio.Group>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="简述你选择第一志愿的原因">
|
||||||
|
{
|
||||||
|
getFieldDecorator('firstReason', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请填入你选择志愿的原因'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)(
|
||||||
|
<Input.TextArea autosize={{ minRows: 2, maxRows: 8 }} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="简述你选择第二志愿的原因">
|
||||||
|
{
|
||||||
|
getFieldDecorator('secondReason', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请填入你选择志愿的原因'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
(
|
||||||
|
<Input.TextArea autosize={{ minRows: 2, maxRows: 8 }} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="简单介绍一下你的特长">
|
||||||
|
{
|
||||||
|
getFieldDecorator('question1', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请简单介绍一下你的特长'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
(
|
||||||
|
<Input.TextArea autosize={{ minRows: 2, maxRows: 8 }} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="你希望未来能在E志者协会得到什么?又能为E志付出什么?">
|
||||||
|
{
|
||||||
|
getFieldDecorator('question2', {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请填入问题的回答'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
(
|
||||||
|
<Input.TextArea autosize={{ minRows: 2, maxRows: 8 }} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time1', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time2', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time3', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time4', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time5', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time6', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display:"none"}}>
|
||||||
|
{
|
||||||
|
getFieldDecorator('time7', {initialValue:0,rules: [{required:true}]})
|
||||||
|
}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item {...tailFormItemLayout}>
|
||||||
|
<Button icon="copy" style={{ textAlign: 'center' }} type="primary" htmlType="submit">提交</Button>
|
||||||
|
<Button icon="save" style={{ margin: "20px", textAlign: 'center' }} onClick={() => { this.saveLocalStorage(); message.success('草稿已保存') }}>保存草稿</Button>
|
||||||
|
</Form.Item>
|
||||||
|
</Form>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const Sheet = Form.create({})(NewForm);
|
||||||
|
export default Sheet;
|
||||||
222
src/index.css
|
|
@ -11,225 +11,3 @@ code {
|
||||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
||||||
monospace;
|
monospace;
|
||||||
}
|
}
|
||||||
.titleh3 {
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 400;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.para{
|
|
||||||
font-size: 14px;
|
|
||||||
word-wrap: break-word;
|
|
||||||
color: #333;
|
|
||||||
|
|
||||||
margin-bottom: 15px;
|
|
||||||
margin-left: 10px;
|
|
||||||
text-indent: 2em;
|
|
||||||
line-height: 24px;
|
|
||||||
zoom: 1;
|
|
||||||
width: 1500px;
|
|
||||||
}
|
|
||||||
.tmp1{
|
|
||||||
font-size: 30px;
|
|
||||||
background-image: -webkit-linear-gradient(left,blue,rgb(235, 168, 14) 20%,rgb(85, 171, 182) 30%, rgb(207, 55, 149) 40%, rgb(18, 224, 97) 50%,rgb(255, 204, 204) 60%,rgb(218, 12, 156) 70%,#66CCCC 80%,rgb(230, 54, 30) 90%,red 100%);
|
|
||||||
-webkit-text-fill-color: transparent;/* 将字体设置成透明色 */
|
|
||||||
-webkit-background-clip: text;/* 裁剪背景图,使文字作为裁剪区域向外裁剪 */
|
|
||||||
|
|
||||||
-webkit-animation: masked-animation 4s linear infinite;
|
|
||||||
|
|
||||||
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
.Button1{
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
font-size: 22px
|
|
||||||
}
|
|
||||||
.Button2{
|
|
||||||
margin: 10px;
|
|
||||||
font-size: 18px
|
|
||||||
}
|
|
||||||
.Button3{
|
|
||||||
margin: 10px;
|
|
||||||
font-size: 18px
|
|
||||||
}
|
|
||||||
.basicInfo-item.name {
|
|
||||||
width: 100px;
|
|
||||||
padding: 0 5px 1px 12px;
|
|
||||||
font-weight: 700;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
word-wrap: normal;
|
|
||||||
color: #999;
|
|
||||||
background-color: gold
|
|
||||||
}
|
|
||||||
.bg{
|
|
||||||
background-color: #E8E8FF;
|
|
||||||
}
|
|
||||||
.bg1{
|
|
||||||
background-color: #D7FFF0;
|
|
||||||
}
|
|
||||||
.bg2{
|
|
||||||
|
|
||||||
background-color: #DDF3FF;
|
|
||||||
|
|
||||||
}
|
|
||||||
.basicInfo-item.value {
|
|
||||||
zoom: 1;
|
|
||||||
font-size: 18px;
|
|
||||||
color: rgb(0, 0, 0);
|
|
||||||
width: 500px;
|
|
||||||
float: left;
|
|
||||||
position: relative;
|
|
||||||
word-break: break-all;
|
|
||||||
font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif
|
|
||||||
}
|
|
||||||
.background {
|
|
||||||
width: 100%;
|
|
||||||
height: 100vh; /* 重点一 */
|
|
||||||
margin: auto;
|
|
||||||
background-image: url(./components/background.jpg);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
/* 重点二 */
|
|
||||||
overflow: auto;
|
|
||||||
background-position:50% 50%;
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
overflow: hidden;
|
|
||||||
font-family: "黑体";
|
|
||||||
color: black;
|
|
||||||
background-color : black;
|
|
||||||
text-shadow : rgba(255,255,255,0.5) 0 5px 6px, rgba(255,255,255,0.2) 1px 3px 3px;
|
|
||||||
-webkit-background-clip : text;
|
|
||||||
padding: 13px 0px 8px 0px;
|
|
||||||
|
|
||||||
}
|
|
||||||
.header_r_t {
|
|
||||||
|
|
||||||
color:rgb(0, 0, 0);
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
right: 20px;
|
|
||||||
top:25px;
|
|
||||||
|
|
||||||
border-radius: 5px;
|
|
||||||
|
|
||||||
*float: right;
|
|
||||||
font-size: 17px
|
|
||||||
}
|
|
||||||
.row-one {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.row-one-cont li {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
list-style: none;
|
|
||||||
width: 260px;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
.row-one-cont .arc-tit {
|
|
||||||
margin: 15px 0;
|
|
||||||
height: 46px;
|
|
||||||
font-size: 22px;
|
|
||||||
background-image: -webkit-linear-gradient(left,blue,#66ffff 10%,rgb(204, 162, 63) 20%,rgb(85, 171, 182) 30%, rgb(207, 55, 149) 40%, #00FFFF 50%,rgb(255, 204, 204) 60%,rgb(218, 12, 156) 70%,#66CCCC 80%,rgb(230, 54, 30) 90%,rgb(201, 28, 15) 100%);
|
|
||||||
-webkit-text-fill-color: transparent;/* 将字体设置成透明色 */
|
|
||||||
-webkit-background-clip: text;/* 裁剪背景图,使文字作为裁剪区域向外裁剪 */
|
|
||||||
|
|
||||||
-webkit-animation: masked-animation 4s linear infinite;
|
|
||||||
|
|
||||||
line-height: 23px;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
.row-one-cont .are-cont {
|
|
||||||
font-size: 15px;
|
|
||||||
background-color: rgb(248, 250, 250);
|
|
||||||
color: rgb(0, 0, 0);
|
|
||||||
line-height: 28px;
|
|
||||||
padding-right: 15px;
|
|
||||||
padding-left: 15px;
|
|
||||||
word-break: break-all;
|
|
||||||
border : 1px solid ;
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
.type1{
|
|
||||||
font-size: 30px;
|
|
||||||
}
|
|
||||||
.footer .ft-bot {
|
|
||||||
clear: both;
|
|
||||||
*margin-top: 15px;
|
|
||||||
}
|
|
||||||
.footer p {
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
}
|
|
||||||
.ft-bot {
|
|
||||||
text-align: center;
|
|
||||||
line-height: 20px;
|
|
||||||
border-top: 1px solid #3c6ba5;
|
|
||||||
}
|
|
||||||
.ft-info {
|
|
||||||
margin: 0px 0 0 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ft-info span {
|
|
||||||
position: absolute ;
|
|
||||||
left: 200px;
|
|
||||||
top:630px;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
color: crimson
|
|
||||||
}
|
|
||||||
.ft-info1 span{
|
|
||||||
position: absolute ;
|
|
||||||
left: 1200px;
|
|
||||||
top:630px;
|
|
||||||
white-space: nowrap;
|
|
||||||
color: blue
|
|
||||||
|
|
||||||
}
|
|
||||||
.ft-info2 span{
|
|
||||||
position: absolute ;
|
|
||||||
left: 200px;
|
|
||||||
top:680px;
|
|
||||||
white-space: nowrap;
|
|
||||||
color:green
|
|
||||||
}
|
|
||||||
.ft-info3 span{
|
|
||||||
position: absolute ;
|
|
||||||
left: 1200px;
|
|
||||||
top:680px;
|
|
||||||
white-space: nowrap;
|
|
||||||
color: blueviolet
|
|
||||||
}
|
|
||||||
.title-prefix {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.para-title.level-2 .title-text {
|
|
||||||
float: left;
|
|
||||||
display: block;
|
|
||||||
padding: 0 8px 0 18px;
|
|
||||||
line-height: 24px;
|
|
||||||
font-size: 22px;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #000;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
.para-title.level-2 {
|
|
||||||
display: block;
|
|
||||||
clear: both;
|
|
||||||
zoom: 1;
|
|
||||||
overflow: hidden;
|
|
||||||
font-size: 20px;
|
|
||||||
border-left: 12px solid #4F9CEE;
|
|
||||||
line-height: 24px;
|
|
||||||
font-size: 22px;
|
|
||||||
font-weight: 400;
|
|
||||||
font-family: Microsoft YaHei,SimHei,Verdana;
|
|
||||||
position: relative;
|
|
||||||
margin: 35px 0 15px -30px;
|
|
||||||
}
|
|
||||||
.picture1{
|
|
||||||
float: right;
|
|
||||||
width: 200px ;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
@ -2,6 +2,7 @@ import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import './index.css';
|
import './index.css';
|
||||||
import * as serviceWorker from './serviceWorker';
|
import * as serviceWorker from './serviceWorker';
|
||||||
import Entry from './Entry';
|
|
||||||
ReactDOM.render(<Entry />, document.getElementById('root'));
|
import App from './App';
|
||||||
|
ReactDOM.render(<App />, document.getElementById('root'));
|
||||||
serviceWorker.register();
|
serviceWorker.register();
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 3.8 MiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 600 KiB |
|
After Width: | Height: | Size: 160 KiB |
|
After Width: | Height: | Size: 4.0 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 149 KiB |