|
@@ -1,14 +1,16 @@
|
|
|
-import React, { Component } from 'react';
|
|
|
|
|
-import { Checkbox, WhiteSpace, Modal, Toast } from 'antd-mobile';
|
|
|
|
|
-import classNames from 'classnames';
|
|
|
|
|
-// import { Query,Mutation } from "react-apollo";
|
|
|
|
|
|
|
+import React, {Component} from 'react'
|
|
|
|
|
+import {Checkbox, WhiteSpace, Modal, Toast} from 'antd-mobile'
|
|
|
|
|
+import classNames from 'classnames'
|
|
|
|
|
+import {Mutation} from "react-apollo"
|
|
|
|
|
+import gql from "graphql-tag"
|
|
|
|
|
|
|
|
import '../index.css'
|
|
import '../index.css'
|
|
|
-const alert = Modal.alert;
|
|
|
|
|
|
|
+import {delete_userCart_by_id} from "../../../../utils/gql"
|
|
|
|
|
+const alert = Modal.alert
|
|
|
|
|
|
|
|
class CartEdit extends Component {
|
|
class CartEdit extends Component {
|
|
|
constructor(props) {
|
|
constructor(props) {
|
|
|
- super(props);
|
|
|
|
|
|
|
+ super(props)
|
|
|
this.state = {
|
|
this.state = {
|
|
|
isSelectAll:false,
|
|
isSelectAll:false,
|
|
|
selectedCount:0
|
|
selectedCount:0
|
|
@@ -20,236 +22,241 @@ class CartEdit extends Component {
|
|
|
this.setState({
|
|
this.setState({
|
|
|
cartList:this.props.cartList
|
|
cartList:this.props.cartList
|
|
|
},()=>{
|
|
},()=>{
|
|
|
- this.checkedAll('',false);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ this.checkedAll('',false)
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//获取输入框的值
|
|
//获取输入框的值
|
|
|
getInputValue=(e,i)=>{
|
|
getInputValue=(e,i)=>{
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.map((ele,index)=>{
|
|
|
|
|
|
|
+ cartList:this.state.cartList.map((item,index)=>{
|
|
|
if(index===i){
|
|
if(index===i){
|
|
|
- ele.count=e.target.value;
|
|
|
|
|
- return ele
|
|
|
|
|
|
|
+ item.count=e.target.value
|
|
|
|
|
+ return item
|
|
|
}else {
|
|
}else {
|
|
|
- return ele
|
|
|
|
|
|
|
+ return item
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
- this.sumCount();
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ })
|
|
|
|
|
+ this.sumCount()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 增加
|
|
// 增加
|
|
|
augment=(e,i)=>{
|
|
augment=(e,i)=>{
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.map((ele,index)=>{
|
|
|
|
|
|
|
+ cartList:this.state.cartList.map((item,index)=>{
|
|
|
if(index===i){
|
|
if(index===i){
|
|
|
- ele.count=ele.count*1+1;
|
|
|
|
|
- return ele
|
|
|
|
|
|
|
+ item.count=item.count*1+1
|
|
|
|
|
+ return item
|
|
|
}else {
|
|
}else {
|
|
|
- return ele
|
|
|
|
|
|
|
+ return item
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
- this.sumCount();
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ })
|
|
|
|
|
+ this.sumCount()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 减少
|
|
// 减少
|
|
|
reduce=(e,i)=> {
|
|
reduce=(e,i)=> {
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.map((ele,index)=>{
|
|
|
|
|
|
|
+ cartList:this.state.cartList.map((item,index)=>{
|
|
|
if(index===i){
|
|
if(index===i){
|
|
|
- ele.count=ele.count*1-1;
|
|
|
|
|
- return ele
|
|
|
|
|
|
|
+ item.count=item.count*1-1
|
|
|
|
|
+ return item
|
|
|
}else {
|
|
}else {
|
|
|
- return ele
|
|
|
|
|
|
|
+ return item
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
- this.sumCount();
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ })
|
|
|
|
|
+ this.sumCount()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//结算传值
|
|
//结算传值
|
|
|
- delete=()=>{
|
|
|
|
|
- let {cartList} = this.state;
|
|
|
|
|
- let listLength = cartList.length;
|
|
|
|
|
|
|
+ delete=(delete_userCart_by_id)=>{
|
|
|
|
|
+ let {cartList} = this.state
|
|
|
|
|
|
|
|
alert('', `确定要删除这${this.state.selectedCount}种商品吗?`, [
|
|
alert('', `确定要删除这${this.state.selectedCount}种商品吗?`, [
|
|
|
{ text: '取消', onPress: () => console.log('cancel') },
|
|
{ text: '取消', onPress: () => console.log('cancel') },
|
|
|
{
|
|
{
|
|
|
text: '确定',
|
|
text: '确定',
|
|
|
- onPress: () =>
|
|
|
|
|
- new Promise((resolve) => {
|
|
|
|
|
- for (let i = 0; i < listLength; i++) {
|
|
|
|
|
- if (cartList[i] && cartList[i].checked===true) {
|
|
|
|
|
- cartList.splice(i, 1); // 将使后面的元素依次前移,数组长度减1
|
|
|
|
|
- i--; // 如果不减,将漏掉一个元素
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ onPress: () => {
|
|
|
|
|
+ let deleteList = cartList.filter((item)=> item.checked === true)
|
|
|
|
|
+ let cartList1 = cartList.filter((item)=> item.checked === false)
|
|
|
|
|
+
|
|
|
|
|
+ let deleteIdList = deleteList.map(item => item.id)
|
|
|
|
|
+
|
|
|
|
|
+ delete_userCart_by_id({variables:{id:deleteIdList}},()=>{
|
|
|
|
|
+ Toast.info('删除成功', 1)
|
|
|
|
|
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:cartList
|
|
|
|
|
- });
|
|
|
|
|
- Toast.info('删除成功', 1);
|
|
|
|
|
- this.sumCount();
|
|
|
|
|
- setTimeout(resolve, 1000);
|
|
|
|
|
- }),
|
|
|
|
|
|
|
+ cartList:cartList1,
|
|
|
|
|
+ selectedCount:0
|
|
|
|
|
+ })
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
- ]);
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ ])
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//删除
|
|
//删除
|
|
|
del=(e,i)=> {
|
|
del=(e,i)=> {
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.filter((ele,index)=>{
|
|
|
|
|
|
|
+ cartList:this.state.cartList.filter((item,index)=>{
|
|
|
if(index!==i){
|
|
if(index!==i){
|
|
|
return true
|
|
return true
|
|
|
}else {
|
|
}else {
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
|
|
+ })
|
|
|
setTimeout(()=>{
|
|
setTimeout(()=>{
|
|
|
- this.sumCount();
|
|
|
|
|
|
|
+ this.sumCount()
|
|
|
},1)
|
|
},1)
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 改变选择
|
|
// 改变选择
|
|
|
changeCheckedStatus=(e,i)=>{
|
|
changeCheckedStatus=(e,i)=>{
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.map((ele,index)=>{
|
|
|
|
|
|
|
+ cartList:this.state.cartList.map((item,index)=>{
|
|
|
if(index===i){
|
|
if(index===i){
|
|
|
- ele.checked=!ele.checked
|
|
|
|
|
|
|
+ item.checked=! item.checked
|
|
|
}
|
|
}
|
|
|
- return ele
|
|
|
|
|
|
|
+ return item
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
- let flag = this.state.cartList.every((ele,index)=>{
|
|
|
|
|
- if(ele.checked===false) {
|
|
|
|
|
- return false;
|
|
|
|
|
|
|
+ let flag = this.state.cartList.every((item,index)=>{
|
|
|
|
|
+ if( item.checked===false) {
|
|
|
|
|
+ return false
|
|
|
}else {
|
|
}else {
|
|
|
- return true;
|
|
|
|
|
|
|
+ return true
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
if(flag===true){
|
|
if(flag===true){
|
|
|
- this.setState({isSelectAll:true});
|
|
|
|
|
|
|
+ this.setState({isSelectAll:true})
|
|
|
}else {
|
|
}else {
|
|
|
- this.setState({isSelectAll:false});
|
|
|
|
|
|
|
+ this.setState({isSelectAll:false})
|
|
|
}
|
|
}
|
|
|
- this.sumCount();
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ this.sumCount()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//全选或全不选,判断全选状态
|
|
//全选或全不选,判断全选状态
|
|
|
checkedAll=(e,check)=>{
|
|
checkedAll=(e,check)=>{
|
|
|
- let checked = e.target ? e.target.checked : check;
|
|
|
|
|
|
|
+ let checked = e.target ? e.target.checked : check
|
|
|
|
|
|
|
|
if(checked===true){
|
|
if(checked===true){
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.map((ele,index)=>{
|
|
|
|
|
- ele.checked=true;
|
|
|
|
|
- return ele
|
|
|
|
|
|
|
+ cartList:this.state.cartList.map(( item,index)=>{
|
|
|
|
|
+ item.checked=true
|
|
|
|
|
+ return item
|
|
|
}),
|
|
}),
|
|
|
isSelectAll:true
|
|
isSelectAll:true
|
|
|
- });
|
|
|
|
|
|
|
+ })
|
|
|
}else if(checked===false){
|
|
}else if(checked===false){
|
|
|
this.setState({
|
|
this.setState({
|
|
|
- cartList:this.state.cartList.map((ele,index)=>{
|
|
|
|
|
- ele.checked=false;
|
|
|
|
|
- return ele
|
|
|
|
|
|
|
+ cartList:this.state.cartList.map((item,index)=>{
|
|
|
|
|
+ item.checked=false
|
|
|
|
|
+ return item
|
|
|
}),
|
|
}),
|
|
|
isSelectAll:false
|
|
isSelectAll:false
|
|
|
- });
|
|
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
- this.sumCount();
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ this.sumCount()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//计算总合计
|
|
//计算总合计
|
|
|
sumCount=()=>{
|
|
sumCount=()=>{
|
|
|
- let selectedCount=0;
|
|
|
|
|
- this.state.cartList.forEach((ele,index)=>{
|
|
|
|
|
- if(ele.checked===true){
|
|
|
|
|
- selectedCount+=ele.count;
|
|
|
|
|
|
|
+ let selectedCount=0
|
|
|
|
|
+ this.state.cartList.forEach((item,index)=>{
|
|
|
|
|
+ if(item.checked===true){
|
|
|
|
|
+ selectedCount+=item.count
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ })
|
|
|
this.setState({
|
|
this.setState({
|
|
|
selectedCount
|
|
selectedCount
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
render() {
|
|
render() {
|
|
|
- let {cartList} = this.state;
|
|
|
|
|
- let listLength = cartList.length;
|
|
|
|
|
|
|
+ let {cartList} = this.state
|
|
|
|
|
+ let listLength = cartList.length
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
- <div className="cart-content-wrap">
|
|
|
|
|
- <div className='cart-content'>
|
|
|
|
|
- {
|
|
|
|
|
- this.state.cartList.map((ele,index)=>{
|
|
|
|
|
- return(
|
|
|
|
|
- <div key={index}>
|
|
|
|
|
- <div className="cart-list">
|
|
|
|
|
- <div className="cart-list-checkbox">
|
|
|
|
|
|
|
+ <Mutation mutation={gql(delete_userCart_by_id)}
|
|
|
|
|
+ onCompleted={()=>{this.props.refetch()}}
|
|
|
|
|
+ onError={error=>console.log('error',error)}
|
|
|
|
|
+ >
|
|
|
|
|
+ {(delete_userCart_by_id,{ loading, error }) => (
|
|
|
|
|
+ <div className="cart-content-wrap">
|
|
|
|
|
+ <div className='cart-content'>
|
|
|
|
|
+ {
|
|
|
|
|
+ this.state.cartList.map((item,index)=>{
|
|
|
|
|
+ return(
|
|
|
|
|
+ <div key={index}>
|
|
|
|
|
+ <div className="cart-list">
|
|
|
|
|
+ <div className="cart-list-checkbox">
|
|
|
|
|
+ <Checkbox
|
|
|
|
|
+ style={{marginLeft:15}}
|
|
|
|
|
+ checked={item.checked}
|
|
|
|
|
+ onChange={(e)=>{this.changeCheckedStatus(e,index)}}
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="cart-list-image">
|
|
|
|
|
+ <img src={item.product_id.img || "https://gw.alipayobjects.com/zos/rmsportal/nywPmnTAvTmLusPxHPSu.png"} alt=""/>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="cart-list-intro">
|
|
|
|
|
+ <div>{item.product_id.name}</div>
|
|
|
|
|
+ <div>颜色尺码等</div>
|
|
|
|
|
+ <div>¥ {item.product_id.price}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="cart-list-count">
|
|
|
|
|
+ <div className="selected">
|
|
|
|
|
+ <button
|
|
|
|
|
+ className={classNames({
|
|
|
|
|
+ 'selected_button': true,
|
|
|
|
|
+ 'selected_button-disabled': item.count <= 1
|
|
|
|
|
+ })}
|
|
|
|
|
+ disabled={item.count <= 1}
|
|
|
|
|
+ onClick={(e)=>{this.reduce(e,index)}}
|
|
|
|
|
+ >-</button>
|
|
|
|
|
+ <input className="selected_input" type="text" value={item.count} onChange={(e)=>{this.getInputValue(e,index)}}/>
|
|
|
|
|
+ <button className="selected_button" onClick={(e)=>{this.augment(e,index)}}>+</button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <WhiteSpace size="md" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ )
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ </div>
|
|
|
|
|
+ {
|
|
|
|
|
+ listLength ?
|
|
|
|
|
+ <div className="footer">
|
|
|
|
|
+ <div className="jiesuan">
|
|
|
|
|
+ <div className="jiesuan-checkbox">
|
|
|
<Checkbox
|
|
<Checkbox
|
|
|
|
|
+ checked={this.state.isSelectAll}
|
|
|
|
|
+ onChange={(e)=>{this.checkedAll(e,'')}}
|
|
|
style={{marginLeft:15}}
|
|
style={{marginLeft:15}}
|
|
|
- checked={ele.checked}
|
|
|
|
|
- onChange={(e)=>{this.changeCheckedStatus(e,index)}}
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ />,
|
|
|
|
|
+ <span className="jiesuan-checkbox_label">全选</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div className="cart-list-image">
|
|
|
|
|
- <img src={ele.product_id.img || "https://gw.alipayobjects.com/zos/rmsportal/nywPmnTAvTmLusPxHPSu.png"} alt=""/>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div className="cart-list-intro">
|
|
|
|
|
- <div>{ele.product_id.name}</div>
|
|
|
|
|
- <div>颜色尺码等</div>
|
|
|
|
|
- <div>¥ {ele.product_id.price}</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div className="cart-list-count">
|
|
|
|
|
- <div className="selected">
|
|
|
|
|
- <button
|
|
|
|
|
- className={classNames({
|
|
|
|
|
- 'selected_button': true,
|
|
|
|
|
- 'selected_button-disabled': ele.count <= 1
|
|
|
|
|
- })}
|
|
|
|
|
- disabled={ele.count <= 1}
|
|
|
|
|
- onClick={(e)=>{this.reduce(e,index)}}
|
|
|
|
|
- >-</button>
|
|
|
|
|
- <input className="selected_input" type="text" value={ele.count} onChange={(e)=>{this.getInputValue(e,index)}}/>
|
|
|
|
|
- <button className="selected_button" onClick={(e)=>{this.augment(e,index)}}>+</button>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <div className="jiesuan-total">
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <button className="jiesuan-button" onClick={()=>{this.delete(delete_userCart_by_id)}}>
|
|
|
|
|
+ <span>删除({this.state.selectedCount})</span>
|
|
|
|
|
+ </button>
|
|
|
</div>
|
|
</div>
|
|
|
- <WhiteSpace size="md" />
|
|
|
|
|
- </div>
|
|
|
|
|
- )
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
- </div>
|
|
|
|
|
- {
|
|
|
|
|
- listLength ?
|
|
|
|
|
- <div className="footer">
|
|
|
|
|
- <div className="jiesuan">
|
|
|
|
|
- <div className="jiesuan-checkbox">
|
|
|
|
|
- <Checkbox
|
|
|
|
|
- checked={this.state.isSelectAll}
|
|
|
|
|
- onChange={(e)=>{this.checkedAll(e,'')}}
|
|
|
|
|
- style={{marginLeft:15}}
|
|
|
|
|
- />,
|
|
|
|
|
- <span className="jiesuan-checkbox_label">全选</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div className="jiesuan-total">
|
|
|
|
|
- </div>
|
|
|
|
|
- <button className="jiesuan-button" onClick={()=>{this.delete()}}>
|
|
|
|
|
- <span>删除({this.state.selectedCount})</span>
|
|
|
|
|
- </button>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>:''
|
|
|
|
|
- }
|
|
|
|
|
- </div>
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ </div>:''
|
|
|
|
|
+ }
|
|
|
|
|
+ </div>
|
|
|
|
|
+ )}
|
|
|
|
|
+ </Mutation>
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-export default CartEdit;
|
|
|
|
|
|
|
+export default CartEdit
|