index.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import React, {Component} from 'react'
  2. import {NavBar, ActivityIndicator} from 'antd-mobile'
  3. import {Query} from "react-apollo"
  4. import gql from "graphql-tag"
  5. import CartDetail from "./detail"
  6. import CartEdit from "./edit"
  7. import Empty from "../empty"
  8. import './index.css'
  9. import {cart_by_userid} from "../../../utils/gql"
  10. class All extends Component {
  11. constructor(props) {
  12. super(props)
  13. this.state = {
  14. page: 'detail',
  15. updateData:false
  16. }
  17. }
  18. componentWillMount() {
  19. // console.log('cartAll componentWillMount',this.props)
  20. this.getHash()
  21. }
  22. componentDidMount() {
  23. // console.log('cartAll componentDidMount',this.props)
  24. let state = this.props.history.location.state
  25. let updateData = state ? state.updateData : false
  26. if(updateData){
  27. this.setState({
  28. updateData
  29. })
  30. }
  31. }
  32. getHash = () => {
  33. // console.log('location', window.location.hash)
  34. let hash = window.location.hash || '#tab=cart&page=detail'
  35. let page = 'detail'
  36. if (window.location.hash && hash.indexOf("&") > 0) {
  37. let pageHash = hash.split("&")[1]
  38. page = pageHash.substr(pageHash.indexOf("=") + 1)
  39. }
  40. this.setState({
  41. page
  42. })
  43. }
  44. changeCartPage = () => {
  45. this.setState((preState) => ({
  46. page: preState.page === 'detail' ? 'edit' : 'detail'
  47. }))
  48. }
  49. renderPage = (data, refetch) => {
  50. let {page,updateData} = this.state
  51. switch (page) {
  52. case 'detail':
  53. return <CartDetail cartList={data.cartList} refetch={refetch} updateData={updateData}/>
  54. case 'edit':
  55. return <CartEdit cartList={data.cartList} refetch={refetch}/>
  56. default:
  57. return <div>test</div>
  58. }
  59. }
  60. render() {
  61. let {page} = this.state
  62. // console.log('render',page,this.props)
  63. return (
  64. <Query query={gql(cart_by_userid)} variables={{user_id: "obR_j5GbxDfGlOolvSeTdZUwfpKA"}}>
  65. {
  66. ({loading, error, data, refetch}) => {
  67. if (loading) {
  68. return (
  69. <div className="loading-center">
  70. <ActivityIndicator size="large"/>
  71. <span>加载中...</span>
  72. </div>
  73. )
  74. }
  75. if (error) {
  76. return 'error!'
  77. }
  78. // console.log('cart all data',data)
  79. return (
  80. <div className='cart-wrap'>
  81. <div className='cart-navbar-wrap navbar'>
  82. <NavBar
  83. mode="light"
  84. rightContent={[
  85. data.cartList.length ?
  86. <span className='navbar-button' key={"cart-navbar"} onClick={this.changeCartPage}>
  87. {page === 'detail' ? "编辑" : "完成"}
  88. </span> : ''
  89. ]}
  90. >购物袋
  91. </NavBar>
  92. </div>
  93. {data.cartList.length ?
  94. this.renderPage(data, refetch) : <Empty/>
  95. }
  96. </div>
  97. )
  98. }
  99. }
  100. </Query>
  101. )
  102. }
  103. }
  104. export default All