Przeglądaj źródła

地址管理页更新的bug修复、更新设置默认地址

Csy817 6 lat temu
rodzic
commit
57b1ce92ac

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

@@ -65,7 +65,7 @@ class Address extends Component {
                 <div className='content-wrap'>
                     <Query query={gql(userAddressbyprops)} variables={{user_id}}>
                         {
-                            ({loading, error, data}) => {
+                            ({loading, error, data, refetch}) => {
                                 if (loading) {
                                     return (
                                         <div className="loading-center">
@@ -78,6 +78,8 @@ class Address extends Component {
                                 }
 
                                 data = data.userAddressbyprops
+                                let defaultAddress = data.find(data => data.default === 1) || ''
+                                // sessionStorage.setItem('defaultAddress',defaultAddress)
 
                                 return (
                                     <div>
@@ -88,6 +90,9 @@ class Address extends Component {
                                                     addressChoosed={addressChoosed}
                                                     history={this.props.history}
                                                     user_id={user_id}
+                                                    defaultAddress={defaultAddress}
+                                                    changePage={this.changePage}
+                                                    refetch={refetch}
                                                 />
                                                 :
                                                 <AddressRender

+ 24 - 10
src/pages/my/tools/address/singleaddress/index.js

@@ -4,7 +4,7 @@ import {Mutation} from "react-apollo"
 import gql from "graphql-tag"
 import moment from 'moment'
 
-import {create_userAddress} from "../../../../../utils/gql"
+import {create_update_userAddress, update_userAddress} from "../../../../../utils/gql"
 import './index.css'
 import {idGen} from "../../../../../utils/func"
 
@@ -107,10 +107,11 @@ class SingleAddress extends Component {
         }
     }
 
-    saveAddress = (user_id, create_userAddress) => {
+    saveAddress = (user_id, mutate) => {
         let createdAt = moment().format('YYYY-MM-DD HH:mm:ss')
-        let id = idGen('address')
-        let {username, telephone, province, city, area, address, defaultStatus} = this.state
+        let {username, telephone, province, city, area, address, defaultStatus, id} = this.state
+        let addressId = id || idGen('address')
+
         let defaultStatus1 = defaultStatus ? 1 : 0
         const addressContent = {
             address,
@@ -122,23 +123,36 @@ class SingleAddress extends Component {
             postcode: "",
             createdAt,
             deletedAt: "",
-            id,
+            id: addressId,
             user_id,
             area,
             province
         }
 
-        create_userAddress({variables:addressContent}).then((data)=>{
+        let {defaultAddress} = this.props
+        // console.log('defaultAddress',defaultAddress)
+        if(defaultAddress){
+            let {id} = defaultAddress
+            addressContent.updateID = id
+            addressContent.updateDefault = 0
+        }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){
                 sessionStorage.setItem('ordersAddress',JSON.stringify(addressContent))
                 this.props.history.go(-2)
+            }else {
+                this.props.changePage(false)
             }
         })
     }
 
     render() {
-        let {user_id} = this.props
+        let {addressID, user_id} = this.props
         let {username, telephone, province, city, area, address} = this.state
 
         return (
@@ -193,13 +207,13 @@ class SingleAddress extends Component {
                 </div>
 
                 <div className='address-button-group'>
-                    <Mutation mutation={gql(create_userAddress)}
+                    <Mutation mutation={addressID === 'add' ? gql(create_update_userAddress) : gql(update_userAddress)}
                               onError={error=>console.log('error',error)}
                     >
-                        {(create_userAddress,{ loading, error }) => (
+                        {(mutate,{ loading, error }) => (
                             <div className='address-add'
                                  onClick={()=>{
-                                     this.saveAddress(user_id, create_userAddress)
+                                     this.saveAddress(user_id, mutate)
                                  }}
                             >
                                 保存并使用

+ 66 - 5
src/utils/gql.js

@@ -222,10 +222,70 @@ const delete_userCart_by_id = `
     }
 `
 
-const create_userAddress = `
-    mutation createuserAddress($address: String, $updatedAt: String, $telephone: String, $default: Int, $city: String, $username: String, $postcode: String, $createdAt: String, $deletedAt: String, $id: ID!, $user_id: ID, $area: String, $province: String) {
-        createuserAddress: create_userAddress(address: $address updatedAt: $updatedAt telephone: $telephone
-            default: $default city: $city username: $username postcode: $postcode createdAt: $createdAt deletedAt: $deletedAt id: $id user_id: $user_id area: $area province: $province) {
+const create_update_userAddress = `
+    mutation createuserAddress( $id: ID!, $address: String, $updatedAt: String, $telephone: String, $default: Int, $city: String, $username: String, $postcode: String, $createdAt: String, $deletedAt: String, $user_id: ID, $area: String, $province: String,
+                               $updateID: ID!, $updateDefault: Int, $newUpdatedAt: String) {
+        createuserAddress: create_userAddress(id: $id address: $address updatedAt: $updatedAt telephone: $telephone default: $default city: $city username: $username postcode: $postcode createdAt: $createdAt deletedAt: $deletedAt user_id: $user_id area: $area province: $province) {
+            result
+            userAddress {
+                address
+                updatedAt
+                telephone
+                default
+                city
+                username
+                postcode
+                createdAt
+                deletedAt
+                id
+    
+                area
+                province
+            }
+        }
+        updateuserAddress: update_userAddress(id: $updateID default: $updateDefault updatedAt: $createdAt) {
+            result
+            userAddress {
+                address
+                updatedAt
+                telephone
+                default
+                city
+                username
+                postcode
+                createdAt
+                deletedAt
+                id
+    
+                area
+                province
+            }
+        }
+    }
+`
+
+const update_userAddress = `
+    mutation updateuserAddress($id: ID, $address: String, $updatedAt: String, $where: userAddress_filter, $telephone: String, $default: Int, $city: String, $username: String, $postcode: String, $createdAt: String, $deletedAt: String, $user_id: ID, $area: String, $province: String,
+                               $updateID: ID!, $updateDefault: Int, $newUpdatedAt: String) {
+        updateAddress: update_userAddress(id: $id address: $address updatedAt: $updatedAt where: $where telephone: $telephone default: $default city: $city username: $username postcode: $postcode createdAt: $createdAt deletedAt: $deletedAt user_id: $user_id area: $area province: $province) {
+            result
+            userAddress {
+                address
+                updatedAt
+                telephone
+                default
+                city
+                username
+                postcode
+                createdAt
+                deletedAt
+                id
+    
+                area
+                province
+            }
+        }
+        updateuserAddress: update_userAddress(id: $updateID default: $updateDefault updatedAt: $createdAt) {
             result
             userAddress {
                 address
@@ -697,7 +757,8 @@ export {
     cart_by_userid,
     update_userCart,
     delete_userCart_by_id,
-    create_userAddress,
+    create_update_userAddress,
+    update_userAddress,
     userAddressbyprops,
     user_default_address,
     orderbyprops,