index.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import {Component} from "react"
  2. import React from "react"
  3. import './index.css'
  4. import {NavBar, Icon as Iconm} from 'antd-mobile'
  5. import {Row, Col, Icon} from 'antd'
  6. import {orderProduct_by_props} from "../../../../utils/gql"
  7. import {Query} from "react-apollo"
  8. import gql from "graphql-tag"
  9. class Detail extends Component {
  10. constructor(props) {
  11. super(props)
  12. this.state = {
  13. data: {}
  14. }
  15. }
  16. componentWillMount() {
  17. let {location} = this.props
  18. if (location && location.state) {
  19. this.setState({
  20. data: location.state.data
  21. })
  22. }
  23. }
  24. statusRender = (status) => {
  25. switch (status) {
  26. case '0':
  27. return (
  28. <div className='detail-status'>
  29. <Icon type="clock-circle"/>&nbsp;
  30. <span>等待付款</span>
  31. </div>
  32. )
  33. case '1':
  34. return (
  35. <div className='detail-status'>
  36. <Icon type="shop"/>&nbsp;
  37. <span>等待发货</span>
  38. </div>
  39. )
  40. case '2':
  41. return (
  42. <div className='detail-status'>
  43. <Icon type="gift"/>&nbsp;
  44. <span>等待收货</span>
  45. </div>
  46. )
  47. case '3':
  48. return (
  49. <div className='detail-status'>
  50. <Icon type="like"/>&nbsp;
  51. <span>完成</span>
  52. </div>
  53. )
  54. default:
  55. return (
  56. <div className='detail-status'>
  57. <Icon type="clock-circle"/>&nbsp;
  58. <span>等待确认</span>
  59. </div>
  60. )
  61. }
  62. }
  63. productsRender = (data) => {
  64. return (
  65. data.map(data=> (
  66. <div onClick={()=>{
  67. this.props.history.push({
  68. pathname: '/home/detail',
  69. state: {
  70. id: data.id,
  71. tabHidden:true
  72. }
  73. })
  74. }}>
  75. <Row style={{width: '100%'}}>
  76. <Col span={6} style={{height: '100px'}}>
  77. <div className='order-product-img' style={{backgroundImage: `url('${data.product_id.img}')`}}/>
  78. </Col>
  79. <Col span={16} offset={2}>
  80. <div className='order-product-name'>{data.product_id.name}</div>
  81. </Col>
  82. </Row>
  83. </div>
  84. ))
  85. )
  86. }
  87. render() {
  88. let {data} = this.state
  89. return (
  90. <div>
  91. <div className='detail-wrap'>
  92. <div className='navbar'>
  93. <NavBar
  94. mode="light"
  95. icon={<Iconm type="left"/>}
  96. onLeftClick={() => {
  97. this.props.history.go(-1)
  98. }}
  99. >订单详情</NavBar>
  100. </div>
  101. <div className='content-wrap'>
  102. <div className='detail-address-wrap'>
  103. <div className='detail-address-backgroud-top'>
  104. {this.statusRender(data.orderStatus)}
  105. <div className='detail-pay'>
  106. ¥{data.productTotalPay}
  107. </div>
  108. </div>
  109. <div className='detail-address-backgroud-bottom'/>
  110. <div className='detail-address-content'>
  111. <Row>
  112. <Col span={4} className='detail-address-content-icon'>
  113. <Icon type="pushpin"/>
  114. </Col>
  115. <Col span={20}>
  116. <div className='detail-address-content-username-phone'>
  117. {data.userAddress_id.username}&nbsp;&nbsp;{data.userAddress_id.telephone}
  118. </div>
  119. <div>
  120. 地址:{data.userAddress_id.province + data.userAddress_id.city + data.userAddress_id.area + data.userAddress_id.address}
  121. </div>
  122. </Col>
  123. </Row>
  124. </div>
  125. </div>
  126. <div className='detail-goods-wrap'>
  127. <div className='detail-store-name'>JD</div>
  128. <Query query={gql(orderProduct_by_props)} variables={{order_id: data.id}}>
  129. {
  130. ({loading, error, data}) => {
  131. if (error) {
  132. return 'error!'
  133. }
  134. data = data.orderProductbyprops
  135. return (
  136. <div>{this.productsRender(data)}</div>
  137. )
  138. }
  139. }
  140. </Query>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. )
  146. }
  147. }
  148. export default Detail