index.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. import {Component} from "react"
  2. import React from "react"
  3. import './index.css'
  4. import {NavBar} 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. import {ButtonGroupRender} from '../display'
  10. class Detail extends Component {
  11. constructor(props) {
  12. super(props)
  13. this.state = {
  14. data: {}
  15. }
  16. }
  17. componentWillMount() {
  18. let {location} = this.props
  19. if (location && location.state) {
  20. this.setState({
  21. data: location.state.data
  22. })
  23. }
  24. }
  25. statusRender = (status) => {
  26. switch (status) {
  27. case '0':
  28. return (
  29. <div className='detail-status'>
  30. <Icon type="clock-circle"/>&nbsp;
  31. <span>等待付款</span>
  32. </div>
  33. )
  34. case '1':
  35. return (
  36. <div className='detail-status'>
  37. <Icon type="shop"/>&nbsp;
  38. <span>等待发货</span>
  39. </div>
  40. )
  41. case '2':
  42. return (
  43. <div className='detail-status'>
  44. <Icon type="gift"/>&nbsp;
  45. <span>等待收货</span>
  46. </div>
  47. )
  48. case '3':
  49. return (
  50. <div className='detail-status'>
  51. <Icon type="like"/>&nbsp;
  52. <span>完成</span>
  53. </div>
  54. )
  55. default:
  56. return (
  57. <div className='detail-status'>
  58. <Icon type="clock-circle"/>&nbsp;
  59. <span>等待确认</span>
  60. </div>
  61. )
  62. }
  63. }
  64. productsRender = (data) => {
  65. return (
  66. data.map(data => (
  67. <div
  68. key={data.id}
  69. className='detail-good-wrap'
  70. >
  71. <Row style={{width: '100%'}}>
  72. <Col span={6} style={{height: '100px'}}>
  73. <div className='order-product-img'
  74. style={{backgroundImage: `url('${data.product_id.img}')`}}/>
  75. </Col>
  76. <Col span={16} offset={2}>
  77. <div className='order-product-name'>{data.product_id.name}</div>
  78. <div className='order-product-others'>
  79. <div>
  80. 数量:{data.count}&nbsp;规格:{data.productColor}
  81. </div>
  82. <div>
  83. 尺寸:{data.productSize}
  84. </div>
  85. </div>
  86. </Col>
  87. </Row>
  88. </div>
  89. ))
  90. )
  91. }
  92. render() {
  93. let {data} = this.state
  94. return (
  95. <div>
  96. <div className='detail-wrap'>
  97. <div className='navbar'>
  98. <NavBar
  99. mode="light"
  100. icon={<Icon type="left"/>}
  101. onLeftClick={() => {
  102. this.props.history.go(-1)
  103. }}
  104. >订单详情</NavBar>
  105. </div>
  106. {/*内容*/}
  107. <div className='content-wrap'>
  108. <div className='detail-address-wrap'>
  109. <div className='detail-address-backgroud-top'>
  110. {this.statusRender(data.orderStatus)}
  111. <div className='detail-pay'>
  112. ¥{data.productTotalPay}
  113. </div>
  114. </div>
  115. <div className='detail-address-backgroud-bottom'/>
  116. <div className='detail-address-content'>
  117. <Row>
  118. <Col span={4} className='detail-address-content-icon'>
  119. <Icon type="pushpin"/>
  120. </Col>
  121. <Col span={20}>
  122. <div className='detail-address-content-username-phone'>
  123. {data.userAddress_id.username}&nbsp;&nbsp;{data.userAddress_id.telephone}
  124. </div>
  125. <div>
  126. 地址:{data.userAddress_id.province + data.userAddress_id.city + data.userAddress_id.area + data.userAddress_id.address}
  127. </div>
  128. </Col>
  129. </Row>
  130. </div>
  131. </div>
  132. <div className='detail-goods-wrap'>
  133. <div className='detail-store-name'>JD</div>
  134. <Query query={gql(orderProduct_by_props)} variables={{order_id: data.id}}>
  135. {
  136. ({loading, error, data}) => {
  137. if (error) {
  138. return 'error!'
  139. }
  140. data = data.orderProductbyprops
  141. return (
  142. <div>{this.productsRender(data)}</div>
  143. )
  144. }
  145. }
  146. </Query>
  147. <div className='detail-contact'>联系客服</div>
  148. </div>
  149. <div className='detail-order-wrap'>
  150. <Order data={data}/>
  151. </div>
  152. </div>
  153. <div className='detail-footer-wrap'>
  154. <ButtonGroupRender orderStatus={data.orderStatus}/>
  155. </div>
  156. </div>
  157. </div>
  158. )
  159. }
  160. }
  161. export default Detail
  162. class Order extends Component {
  163. constructor(props) {
  164. super(props)
  165. this.state = {
  166. }
  167. }
  168. render() {
  169. let {data} = this.props
  170. return (
  171. <div className='detail-order-wrapper'>
  172. <div className='detail-order-item'>
  173. <span className='detail-order-title'>订单编号:</span>
  174. <span>{data.id}</span>
  175. </div>
  176. <div className='detail-order-item'>
  177. <span className='detail-order-title'>下单时间:</span>
  178. <span>{data.createdAt}</span>
  179. </div>
  180. </div>
  181. )
  182. }
  183. }