Bladeren bron

新增地址跳转修改回退的bug、详情页加入购物车更新缓存

Csy817 6 jaren geleden
bovenliggende
commit
9fb746f07c

+ 0 - 2
src/pages/cart/orders/index.js

@@ -385,8 +385,6 @@ class CartOrders extends Component {
 export default withRouter(CartOrders)
 
 const OrdersAddress =({props,selectAddress}) => {
-    console.log('props',props)
-    console.log('selectAddress',selectAddress)
     let {default:isDefault, username, telephone, province, area, city, address} = selectAddress
     sessionStorage.setItem('ordersAddress',JSON.stringify(selectAddress))
 

+ 7 - 4
src/pages/home/detail/index.js

@@ -7,7 +7,7 @@ import {NavBar, Icon, ActivityIndicator, Badge, Modal} from 'antd-mobile'
 import classNames from 'classnames'
 import moment from 'moment'
 
-import {productAndSpec_by_id, create_userCart} from "../../../utils/gql"
+import {productAndSpec_by_id, create_userCart, cart_by_userid} from "../../../utils/gql"
 import {idGen} from '../../../utils/func'
 import {getCookie} from "../../../utils/cookie"
 import './index.css'
@@ -257,9 +257,8 @@ class SelectModal extends Component {
     }
 
     // 添加至购物袋
-    onCreateUserCart = (create_userCart) => {
+    onCreateUserCart = (create_userCart, user_id) => {
         let id = idGen('cart')
-        let user_id = getCookie('user_id')
         let {productData} = this.props
         let product_id = productData.productbyid.id
         let {count, selectColor, specList} = this.state
@@ -334,6 +333,7 @@ class SelectModal extends Component {
     }
 
     render() {
+        let user_id = getCookie('user_id')
         let {price, img, buttonType} = this.props
         let {count, selectColor, specList, colorList} = this.state
         let specFilter = specList.filter(item=>item.color === selectColor)[0].spec.filter(item=> item.select && item.status > 0)[0]
@@ -417,6 +417,9 @@ class SelectModal extends Component {
                         </div>
                     </div>
                     <Mutation mutation={gql(create_userCart)}
+                              refetchQueries={[
+                                  {query: gql(cart_by_userid), variables:{user_id}}
+                              ]}
                               onError={error=>console.log('error',error)}
                     >
                         {(create_userCart,{ loading, error }) => (
@@ -425,7 +428,7 @@ class SelectModal extends Component {
                                     className='confirm-button'
                                     onClick={()=>{
                                         if(buttonType === 'add'){
-                                            this.onCreateUserCart(create_userCart)
+                                            this.onCreateUserCart(create_userCart, user_id)
                                         }else if(buttonType === 'buy'){
                                             this.buyNow()
                                         }

+ 42 - 6
src/pages/my/tools/address/index.js

@@ -1,14 +1,15 @@
 import {Component} from "react"
 import React from "react"
-import {userAddressbyprops} from "../../../../utils/gql"
-import {ActivityIndicator, NavBar} from 'antd-mobile'
-import {Icon, Row, Col} from 'antd'
-import {Query} from "react-apollo"
+import {ActivityIndicator, NavBar, Modal} from 'antd-mobile'
+import {Icon, Row, Col, message} from 'antd'
+import {Query, Mutation} from "react-apollo"
 import gql from "graphql-tag"
 
 import SingleAddress from "./singleaddress"
 import {getCookie} from "../../../../utils/cookie"
+import {userAddressbyprops, delete_address} from "../../../../utils/gql"
 import './index.css'
+const alert = Modal.alert
 
 class Address extends Component {
     constructor(props) {
@@ -24,7 +25,8 @@ class Address extends Component {
         let state = this.props.history.location.state || ''
         if (state && state.single) {
             this.setState({
-                single: true
+                single: true,
+                addressID: 'add'
             })
         }
     }
@@ -78,8 +80,8 @@ class Address extends Component {
                                 }
 
                                 data = data.userAddressbyprops
+                                // console.log('address data',data)
                                 let defaultAddress = data.find(data => data.default === 1) || ''
-                                // sessionStorage.setItem('defaultAddress',defaultAddress)
 
                                 return (
                                     <div>
@@ -100,6 +102,7 @@ class Address extends Component {
                                                     changePage={this.changePage}
                                                     changeAddress={this.changeAddress}
                                                     history={this.props.history}
+                                                    refetch={refetch}
                                                 />
                                         }
                                     </div>
@@ -132,6 +135,25 @@ class AddressRender extends Component {
         }
     }
 
+    deleteAddress = (delete_address, deleteId) => {
+        alert('', `确定要删除这个收货地址吗?`, [
+            { text: '取消', onPress: () => console.log('cancel') },
+            {
+                text: '确定',
+                onPress: () => {
+                    delete_address({variables:{id:deleteId}}).then((data)=>{
+                        // console.log('delete data',data)
+                        let num = data.data.deleteuserAddress.replace(/[^0-9]/ig,"")
+                        if(num){
+                            message.success('删除成功')
+                            this.props.refetch()
+                        }
+                    })
+                }
+            }
+        ])
+    }
+
     render() {
         let {changePage, changeAddress, shoppingAddress} = this.props
 
@@ -180,6 +202,20 @@ class AddressRender extends Component {
                                                 }}
                                             />
                                         </div>
+                                        <Mutation mutation={gql(delete_address)}
+                                                  onError={error=>console.log('error',error)}
+                                        >
+                                            {(delete_address,{ loading, error }) => (
+                                                <div className='address-edit'>
+                                                    <Icon
+                                                        type="delete"
+                                                        onClick={()=>{
+                                                            this.deleteAddress(delete_address,address.id)
+                                                        }}
+                                                    />
+                                                </div>
+                                            )}
+                                        </Mutation>
                                     </div>
                                 )
                             })}

+ 15 - 5
src/pages/my/tools/address/singleaddress/index.js

@@ -4,7 +4,11 @@ import {Mutation} from "react-apollo"
 import gql from "graphql-tag"
 import moment from 'moment'
 
-import {create_update_userAddress, update_userAddress} from "../../../../../utils/gql"
+import {
+    create_update_userAddress,
+    update_userAddress,
+    userAddressbyprops
+} from "../../../../../utils/gql"
 import './index.css'
 import {idGen} from "../../../../../utils/func"
 
@@ -129,8 +133,7 @@ class SingleAddress extends Component {
             province
         }
 
-        let {defaultAddress} = this.props
-        // console.log('defaultAddress',defaultAddress)
+        let {defaultAddress, addressID} = this.props
         if(defaultAddress){
             let {id} = defaultAddress
             addressContent.updateID = id
@@ -138,11 +141,15 @@ class SingleAddress extends Component {
         }else {
             addressContent.updateID = ''
         }
-        // console.log('addressContent',addressContent)
+
         mutate({variables:addressContent}).then((data)=>{
             this.props.refetch()
             let prePage = this.props.history.location.state.prePage
-            if(prePage){
+
+            if(defaultStatus1){
+                sessionStorage.setItem('ordersAddress',JSON.stringify(addressContent))
+            }
+            if(prePage && addressID !== 'add'){
                 sessionStorage.setItem('ordersAddress',JSON.stringify(addressContent))
                 this.props.history.go(-2)
             }else {
@@ -208,6 +215,9 @@ class SingleAddress extends Component {
 
                 <div className='address-button-group'>
                     <Mutation mutation={addressID === 'add' ? gql(create_update_userAddress) : gql(update_userAddress)}
+                              refetchQueries={[
+                                  {query: gql(userAddressbyprops), variables:{user_id}}
+                              ]}
                               onError={error=>console.log('error',error)}
                     >
                         {(mutate,{ loading, error }) => (

+ 7 - 0
src/utils/gql.js

@@ -350,6 +350,12 @@ const user_default_address = `
     }
 `
 
+const delete_address = `
+    mutation deleteuserAddress($id: ID) {
+        deleteuserAddress: delete_userAddress(id: $id)
+    }
+`
+
 const orderbyprops = `
     query orderbyprops($updatedAt: String, $orderLogistics_id: ID, $orderTotalPay: Float, $createdAt: String, $orderStatus: String, $userAddress_id: ID, $count: Int, $user_id: ID, $productTotalPay: Float, $orderPay_id: ID) {
         orderbyprops: order_by_props(updatedAt: $updatedAt orderLogistics_id: $orderLogistics_id orderTotalPay: $orderTotalPay createdAt: $createdAt orderStatus: $orderStatus userAddress_id: $userAddress_id count: $count user_id: $user_id productTotalPay: $productTotalPay orderPay_id: $orderPay_id) {
@@ -761,6 +767,7 @@ export {
     update_userAddress,
     userAddressbyprops,
     user_default_address,
+    delete_address,
     orderbyprops,
     order_by_id,
     orderProduct_by_props,