|
|
@@ -1,27 +1,26 @@
|
|
|
import React, {Component} from 'react';
|
|
|
-import {Layout, Card, Button, Avatar, Spin, Icon, Row, Col, notification} from 'antd';
|
|
|
-import lo from '../../../images/lo.png'
|
|
|
+import {Layout, Butt, Spin, Row, Col, Tabs} from 'antd';
|
|
|
import './index.css'
|
|
|
import {graphqlUrl} from "../../../config";
|
|
|
-import {SHOW_ALL_CASE, SHOW_CASE} from "../../../gql";
|
|
|
+import {SHOW_ALL_CASE} from "../../../gql";
|
|
|
import {FormattedMessage} from 'react-intl';
|
|
|
import {request} from 'graphql-request'
|
|
|
import UserCustom from "./UserCustom";
|
|
|
-import {Query} from "react-apollo";
|
|
|
-import gql from "graphql-tag";
|
|
|
import {getCookie} from "../../../cookie";
|
|
|
|
|
|
+const TabPane = Tabs.TabPane;
|
|
|
const {Content} = Layout;
|
|
|
-const {Meta} = Card;
|
|
|
|
|
|
class CaseShow extends Component {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.state = {
|
|
|
- examplesIoobot: [],
|
|
|
- examplesOthers: [],
|
|
|
+ examplesFirst: [],
|
|
|
+ examplesSecond: [],
|
|
|
showCustom: false,
|
|
|
- chosenSchemaID: ''
|
|
|
+ chosenSchemaID: '',
|
|
|
+ activeKey: '1',
|
|
|
+ showCaseID: 'order-react-CaseID'
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -37,13 +36,12 @@ class CaseShow extends Component {
|
|
|
|
|
|
request(graphqlUrl, SHOW_ALL_CASE, {}).then(data => {
|
|
|
let cases = data.case_by_props;
|
|
|
- console.log(cases);
|
|
|
- let examplesIoobot = cases.filter(case1 => case1.user_id.id === 'ioobot');
|
|
|
- let examplesOthers = cases.filter(case2 => case2.user_id.id !== 'ioobot');
|
|
|
+ let examplesFirst = cases.filter(case1 => case1.title.includes('预约'));
|
|
|
+ let examplesSecond = cases.filter(case2 => case2.title.includes('服装店'));
|
|
|
if (this._isMounted) {
|
|
|
this.setState({
|
|
|
- examplesIoobot,
|
|
|
- examplesOthers
|
|
|
+ examplesFirst,
|
|
|
+ examplesSecond,
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
@@ -76,7 +74,12 @@ class CaseShow extends Component {
|
|
|
};
|
|
|
|
|
|
render() {
|
|
|
- let {userID, showCustom, chosenSchemaID} = this.state;
|
|
|
+ let {userID, showCustom, chosenSchemaID, examplesFirst, examplesSecond} = this.state;
|
|
|
+ const tabStyle = {
|
|
|
+ paddingBottom: '50px',
|
|
|
+ height: '550px',
|
|
|
+ display: 'inline-block',
|
|
|
+ };
|
|
|
return (
|
|
|
<div id="example-show">
|
|
|
<Layout style={{padding: '24px', minHeight: '300px'}}>
|
|
|
@@ -84,113 +87,30 @@ class CaseShow extends Component {
|
|
|
{
|
|
|
!showCustom ?
|
|
|
<div>
|
|
|
- <div className={'schema-name'} style={{fontSize: 25}}><FormattedMessage id='scan and use'/></div>
|
|
|
- <div>
|
|
|
- <div className={'schema-name'}><FormattedMessage id='ioobot case'/></div>
|
|
|
- <div>
|
|
|
- {
|
|
|
- this.state.examplesIoobot.length === 0 ?
|
|
|
- <Spin/>
|
|
|
- :
|
|
|
- this.state.examplesIoobot.map((item, index) => (
|
|
|
- <Row key={index} className='case-item'>
|
|
|
- <Col span={12} style={{padding:'20px'}}>
|
|
|
- <Query query={gql(SHOW_CASE)} variables={{id: item.id}}>
|
|
|
- {
|
|
|
- ({loading, error, data}) => {
|
|
|
- if (loading) {
|
|
|
- return <Spin/>
|
|
|
- }
|
|
|
- if (error) {
|
|
|
- return 'error!';
|
|
|
- }
|
|
|
- let thisCase = data.case_by_id;
|
|
|
-
|
|
|
- return (
|
|
|
- <div>
|
|
|
- <div className={'case-detail-attention'}> {thisCase.detailAttention ?
|
|
|
- <div>
|
|
|
- <Icon type="alert"/>{thisCase.detailAttention}
|
|
|
- </div>
|
|
|
- :
|
|
|
- ''
|
|
|
- }
|
|
|
- </div>
|
|
|
- <div
|
|
|
- className={'case-detail-description'}>{thisCase.detailDescription ? thisCase.detailDescription : '暂无简介'}</div>
|
|
|
- <div className={'detail-images'}>
|
|
|
- <img
|
|
|
- key={thisCase.detailImages[0]}
|
|
|
- src={thisCase.detailImages[0]}
|
|
|
- alt=""
|
|
|
- height="500"/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- }
|
|
|
- </Query>
|
|
|
- </Col>
|
|
|
- <Col span={4}>
|
|
|
- <div>
|
|
|
- <div
|
|
|
- className={'schema-name'}>想要定制化该案例
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <div>联系作者</div>
|
|
|
- <div>
|
|
|
- <Icon type="mail"/>
|
|
|
- {
|
|
|
- item.user_id.email ? item.user_id.email : '该作者未留下联系方式'
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <div>自行修改代码</div>
|
|
|
- <div>
|
|
|
- <Icon type="github"/>
|
|
|
- {
|
|
|
- item.codeAddress ? item.codeAddress : '该作者未留下代码仓库地址'
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </Col>
|
|
|
- <Col span={8}>
|
|
|
- <div style={{padding: '10px 0'}}>
|
|
|
- <Card
|
|
|
- key={index}
|
|
|
- style={{width: 300}}
|
|
|
- cover={<div className='cover-div'><img
|
|
|
- className='cover-img'
|
|
|
- src={item.img}
|
|
|
- alt={item.title + '' + item.description}/>
|
|
|
- </div>}
|
|
|
- actions={[
|
|
|
- <span>已部署: {item.deployedNum}</span>,
|
|
|
- <span><Icon
|
|
|
- type="like"/>: {item.like}</span>,
|
|
|
- <Button type="primary" onClick={() => {
|
|
|
- this.setState({
|
|
|
- showCustom: true,
|
|
|
- chosenSchemaID: item.schema_id.id
|
|
|
- })
|
|
|
- }}><FormattedMessage id='one more step'/></Button>
|
|
|
- ]}
|
|
|
- >
|
|
|
- <Meta
|
|
|
- avatar={<Avatar src={lo}/>}
|
|
|
- title={item.title}
|
|
|
- description={item.description}
|
|
|
- />
|
|
|
- </Card>
|
|
|
- </div>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- ))
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <Tabs tabPosition='left' size='large' tabBarStyle={tabStyle} tabBarGutter={100}>
|
|
|
+ <TabPane tab="预约" key="1">
|
|
|
+ <div style={{marginLeft: 100}}>
|
|
|
+ {
|
|
|
+ examplesFirst.length === 0 ?
|
|
|
+ <Spin/> :
|
|
|
+ <BaiduShow
|
|
|
+ examples={examplesFirst}
|
|
|
+ />
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ </TabPane>
|
|
|
+ <TabPane tab="电商" key="2">
|
|
|
+ <div style={{marginLeft: 100}}>
|
|
|
+ {
|
|
|
+ examplesSecond.length === 0 ?
|
|
|
+ <Spin/> :
|
|
|
+ <BaiduShow
|
|
|
+ examples={examplesSecond}
|
|
|
+ />
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ </TabPane>
|
|
|
+ </Tabs>
|
|
|
</div>
|
|
|
:
|
|
|
<UserCustom
|
|
|
@@ -200,7 +120,6 @@ class CaseShow extends Component {
|
|
|
backToMe={this.backToMe}
|
|
|
/>
|
|
|
}
|
|
|
-
|
|
|
</Content>
|
|
|
</Layout>
|
|
|
</div>
|
|
|
@@ -210,3 +129,74 @@ class CaseShow extends Component {
|
|
|
|
|
|
export default CaseShow;
|
|
|
|
|
|
+
|
|
|
+class BaiduShow extends Component {
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+ console.log(props);
|
|
|
+ this.state = {
|
|
|
+ showCaseID: props.examples[0].id,
|
|
|
+ index: 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ render() {
|
|
|
+ let {examples} = this.props;
|
|
|
+ let {showCaseID, index} = this.state;
|
|
|
+ let thisCase = examples[index];
|
|
|
+ return (
|
|
|
+ <Row>
|
|
|
+ <Col span={12}>
|
|
|
+ <Row>
|
|
|
+ <div>
|
|
|
+ <div className={'case-detail-title'}>{thisCase.title}</div>
|
|
|
+ <div
|
|
|
+ className={'case-detail-description'}>{thisCase.detailDescription ? thisCase.detailDescription : '暂无简介'}</div>
|
|
|
+ <div className='cover-div'>
|
|
|
+ <img
|
|
|
+ className='cover-img'
|
|
|
+ src={thisCase.img}
|
|
|
+ alt={thisCase.title + '' + thisCase.description}
|
|
|
+ />
|
|
|
+ <div style={{marginTop: 5}}>—— 打开微信扫码体验 ——</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </Row>
|
|
|
+ <Row>
|
|
|
+ {
|
|
|
+ examples.map((item, index) => (
|
|
|
+ <div
|
|
|
+ className={showCaseID === item.id ? 'logo-cover-div logo-cover-div-on' : 'logo-cover-div'}
|
|
|
+ onMouseEnter={() => {
|
|
|
+ this.setState({
|
|
|
+ showCaseID: item.id,
|
|
|
+ index
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ key={index}
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ className='logo-cover-img'
|
|
|
+ src={item.img}
|
|
|
+ alt={item.title + '' + item.description}
|
|
|
+ />
|
|
|
+ <div>{item.description}</div>
|
|
|
+ </div>
|
|
|
+ ))
|
|
|
+ }
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
+ <Col span={6}>
|
|
|
+ <div className={'detail-images'}>
|
|
|
+ <img
|
|
|
+ key={thisCase.detailImages[0]}
|
|
|
+ src={thisCase.detailImages[0]}
|
|
|
+ alt=""
|
|
|
+ height="500"/>
|
|
|
+ </div>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ )
|
|
|
+ }
|
|
|
+}
|