商城测试版v7

This commit is contained in:
czm 2022-07-25 18:29:18 +08:00
parent 7e12050a94
commit 1dfce28a75
12 changed files with 83 additions and 39 deletions

View File

@ -9,7 +9,8 @@ interface ListParams{
onClick?:()=>any, //点击列表 onClick?:()=>any, //点击列表
placeholder?:string, // 提示文本 placeholder?:string, // 提示文本
children?: any, // 插槽 children?: any, // 插槽
type?: string // 类型1.input,2.textarea,3.select type?: string // 类型1.input,2.textarea,3.select,
primordialType?: 'text'|'number'|'idcard'|'digit'
value?: any, value?: any,
style?: object, //整行样式 style?: object, //整行样式
labelStyle?: object, // label样式 labelStyle?: object, // label样式
@ -31,7 +32,7 @@ const FromList = memo((props:ListParams)=>{
{ {
type=="input"? type=="input"?
<View className="form-list-input"> <View className="form-list-input">
<Input value={value} placeholder-class="phcolor" onInput={props?.onInput} placeholder={props.placeholder} /> <Input value={value} placeholder-class="phcolor" type={props.primordialType||'text'} onInput={props?.onInput} placeholder={props.placeholder} />
{value&& {value&&
<View><Text onClick={()=>props.onInput&&props.onInput({detail: {value: ""}})} className="iconfont icon-qingkong"/></View> <View><Text onClick={()=>props.onInput&&props.onInput({detail: {value: ""}})} className="iconfont icon-qingkong"/></View>
} }

View File

@ -63,13 +63,13 @@ export default memo(({orderInfo, onClick, fixedBottom = true}:Param) => {
return orderInfo?.is_quality_check return orderInfo?.is_quality_check
} }
}, },
// { {
// id: 5, id: 5,
// label: '上传物流', label: '上传物流',
// validatarFunc: (orderInfo) => { validatarFunc: (orderInfo) => {
// return orderInfo?.stage == ReturnStageWaitCheck.value return orderInfo?.stage == ReturnStageWaitCheck.value
// } }
// }, },
{ {
id: 6, id: 6,
label: '取消退款', label: '取消退款',
@ -133,14 +133,14 @@ export default memo(({orderInfo, onClick, fixedBottom = true}:Param) => {
{(orderBtnsShowList.length > 0)&&<View className={classnames(fixedBottom&&styles.submit_order)}> {(orderBtnsShowList.length > 0)&&<View className={classnames(fixedBottom&&styles.submit_order)}>
<View className={styles.btns_list}> <View className={styles.btns_list}>
{(orderBtnsShowList.length > 3)&&<View className={styles.more}> {(orderBtnsShowList.length > 3)&&<View className={styles.more}>
<Text onClick={() => setShowMore(true)}></Text> <Text onClick={() => setShowMore(!showMore)}>{!showMore?'更多':'关闭'}</Text>
{showMore&&<View className={styles.more_con}> {showMore&&<View className={styles.more_con}>
<View className={styles.more_list} style={styleTop}> <View className={styles.more_list} style={styleTop}>
{orderBtnsShowList.map((item, index) => { {orderBtnsShowList.map((item, index) => {
return ((index >= 3) &&<View className={styles.more_item} key={item.id} onClick={() => submitBtns(item.id, index)}>{item.label}</View>) return ((index >= 3) &&<View className={styles.more_item} key={item.id} onClick={() => submitBtns(item.id, index)}>{item.label}</View>)
})} })}
</View> </View>
<View className={styles.more_bg} catchMove onClick={() => setShowMore(false)}></View> {/* <View className={styles.more_bg} catchMove onClick={() => setShowMore(false)}></View> */}
</View>} </View>}
</View>} </View>}

View File

@ -181,9 +181,7 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
} else if (val == 6) { } else if (val == 6) {
receiveOrder() receiveOrder()
} else if(val == 5) { } else if(val == 5) {
if(!orderInfo?.av_return_roll) return alert.none('该订单没有可退条数') applyProduct()
await openSubscriptionMessage({orderId: orderInfo?.orderId, scenes: ApplyGoods.value})
goLink('/pages/applyAfterSales/index',{id:orderInfo?.orderId})
} else if (val == 3) { } else if (val == 3) {
bigApplyRefurn() bigApplyRefurn()
} else if(val == 8) { } else if(val == 8) {
@ -191,7 +189,7 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
} else { } else {
onClick?.(val) onClick?.(val)
} }
}, 600) }, 800)
//大货申请退款 //大货申请退款
const bigApplyRefurn = () => { const bigApplyRefurn = () => {
@ -273,6 +271,13 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
} }
//申请退货
const applyProduct = async () => {
if(!orderInfo?.av_return_roll) return alert.none('该订单没有可退条数')
await openSubscriptionMessage({orderId: orderInfo?.orderId, scenes: ApplyGoods.value})
goLink('/pages/applyAfterSales/index',{id:orderInfo?.orderId})
}
//显示更多按钮 //显示更多按钮
const [showMore, setShowMore] = useState(false) const [showMore, setShowMore] = useState(false)
@ -283,14 +288,14 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
return ( return (
<View className={styles.btns_list}> <View className={styles.btns_list}>
{(orderBtnsShowList.length > 3)&&<View className={styles.more}> {(orderBtnsShowList.length > 3)&&<View className={styles.more}>
<Text onClick={() => setShowMore(true)}></Text> <Text onClick={() => setShowMore(!showMore)}>{!showMore?'更多':'关闭'}</Text>
{showMore&&<View className={styles.more_con}> {showMore&&<View className={styles.more_con}>
<View className={styles.more_list} style={styleTop}> <View className={styles.more_list} style={styleTop}>
{orderBtnsShowList.map((item, index) => { {orderBtnsShowList.map((item, index) => {
return ((index < (orderBtnsShowList.length - 3)) &&<View className={styles.more_item} key={item.id} onClick={() => submitBtns(item.id, index)}>{item.label}</View>) return ((index < (orderBtnsShowList.length - 3)) &&<View className={styles.more_item} key={item.id} onClick={() => submitBtns(item.id, index)}>{item.label}</View>)
})} })}
</View> </View>
<View className={styles.more_bg} catchMove onClick={() => setShowMore(false)}></View> {/* <View className={styles.more_bg} catchMove onClick={() => setShowMore(false)}></View> */}
</View>} </View>}
</View>} </View>}

View File

@ -122,7 +122,7 @@ export default ()=>{
return ( return (
<View className="add-address"> <View className="add-address">
<FromList onInput={(ev:any)=>setFormData({...formData,name:ev.detail.value})} value={formData["name"]} label="联系人" placeholder="请输入收货人姓名"/> <FromList onInput={(ev:any)=>setFormData({...formData,name:ev.detail.value})} value={formData["name"]} label="联系人" placeholder="请输入收货人姓名"/>
<FromList onInput={(ev:any)=>setFormData({...formData,phone:ev.detail.value})} value={formData["phone"]} label="联系方式" placeholder="请输入联系方式"/> <FromList primordialType="number" onInput={(ev:any)=>setFormData({...formData,phone:ev.detail.value})} value={formData["phone"]} label="联系方式" placeholder="请输入联系方式"/>
<FromList value={formData["site"]} onClick={()=>setShowSiteModal(true)} label="收货地址" type="select" placeholder="请选择/省/市/区"/> <FromList value={formData["site"]} onClick={()=>setShowSiteModal(true)} label="收货地址" type="select" placeholder="请选择/省/市/区"/>
<FromList onInput={(ev:any)=>setFormData({...formData,address_detail:ev.detail.value})} value={formData["address_detail"]} label="详细地址" type="textarea" placeholder="请输入详细地址(街道、门牌号等)"/> <FromList onInput={(ev:any)=>setFormData({...formData,address_detail:ev.detail.value})} value={formData["address_detail"]} label="详细地址" type="textarea" placeholder="请输入详细地址(街道、门牌号等)"/>
<View className="add-address-default"> <View className="add-address-default">

View File

@ -20,7 +20,8 @@ type OrderParam = {
total_weight_error_discount: number, //空差优惠 total_weight_error_discount: number, //空差优惠
the_previous_status: number, //取消订单时的订单状态 the_previous_status: number, //取消订单时的订单状态
actual_amount: number, //实付金额 actual_amount: number, //实付金额
wait_pay_amount: number //待付金额 wait_pay_amount: number, //待付金额
refund_amount: number //退款金额
} }
type Param = { type Param = {
@ -90,7 +91,7 @@ export default memo(({order, comfirm = false}:Param) => {
field: 'wait_pay_amount', field: 'wait_pay_amount',
message: '扣除空差后的货款金额', message: '扣除空差后的货款金额',
validatarFunc: (order) => { validatarFunc: (order) => {
return order['wait_pay_amount'] > 0 && order['refund_amount'] <= 0 return order['wait_pay_amount'] > 0
} }
}, },
{ {

View File

@ -95,9 +95,13 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
} }
//账期选择 //账期选择
const accountPeriodRef = useRef<any>(null)
const periodSelectData = (val) => { const periodSelectData = (val) => {
setSubmitData((e) => ({...e, payment_method:val})) setSubmitData((e) => ({...e, payment_method:val}))
} }
const accountPeriodSelect = () => {
accountPeriodRef.current.onSelectEven()
}
//订阅消息 //订阅消息
const {ToPay} = SUBSCRIPTION_MESSAGE_SCENE const {ToPay} = SUBSCRIPTION_MESSAGE_SCENE
@ -201,7 +205,7 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
</View> </View>
<MCheckbox ref={advanceRef} status={submitData.payment_method == PaymentMethodPreDeposit.value} onSelect={() => advanceSelectData(PaymentMethodPreDeposit.value)} onClose={() => advanceSelectData(null)}/> <MCheckbox ref={advanceRef} status={submitData.payment_method == PaymentMethodPreDeposit.value} onSelect={() => advanceSelectData(PaymentMethodPreDeposit.value)} onClose={() => advanceSelectData(null)}/>
</View> </View>
{show_account_payment&&<View className={styles.payment_list_item}> {show_account_payment&&<View className={styles.payment_list_item} onClick={accountPeriodSelect}>
<View className={styles.payment_list_item_left}> <View className={styles.payment_list_item_left}>
<View className={styles.payment_list_item_left_name}> <View className={styles.payment_list_item_left_name}>
<View className={classnames('iconfont icon-xtianzhangqi', styles.miconfont, styles.account_period)}></View> <View className={classnames('iconfont icon-xtianzhangqi', styles.miconfont, styles.account_period)}></View>
@ -209,7 +213,7 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
</View> </View>
{account_peyment} {account_peyment}
</View> </View>
<MCheckbox status={submitData.payment_method == PaymentMethodAccountPeriod.value} onSelect={() => periodSelectData(PaymentMethodAccountPeriod.value)} onClose={() => periodSelectData(null)}/> <MCheckbox ref={accountPeriodRef} status={submitData.payment_method == PaymentMethodAccountPeriod.value} onSelect={() => periodSelectData(PaymentMethodAccountPeriod.value)} onClose={() => periodSelectData(null)}/>
</View>} </View>}
<View className={styles.payment_list_item} onClick={onShowOfflinePay}> <View className={styles.payment_list_item} onClick={onShowOfflinePay}>
<View className={styles.payment_list_item_left}> <View className={styles.payment_list_item_left}>

View File

@ -64,7 +64,7 @@ import styles from './index.module.scss'
} }
} }
Taro.stopPullDownRefresh() Taro.stopPullDownRefresh()
Taro.hideToast() // Taro.hideToast()
} }
//监听获取到的数据 //监听获取到的数据

View File

@ -203,7 +203,7 @@ export default () => {
<OrderStatusList list={statusList} onSelect={changeStatus} defaultId={router?.params.status as number}/> <OrderStatusList list={statusList} onSelect={changeStatus} defaultId={router?.params.status as number}/>
</View> </View>
<View className={styles.order_list}> <View className={styles.order_list}>
<InfiniteScroll statusMore={statusMore} selfonScrollToLower={getScrolltolower} refresherEnabled={false} refresherTriggered={refresherTriggeredStatus} selfOnRefresherRefresh={getRefresherRefresh}> <InfiniteScroll statusMore={statusMore} selfonScrollToLower={getScrolltolower} refresherEnabled={true} refresherTriggered={refresherTriggeredStatus} selfOnRefresherRefresh={getRefresherRefresh}>
{orderData?.list?.map(item => { {orderData?.list?.map(item => {
return <View key={item.id} className={styles.order_item_con}> <Order value={item} onClickBtn={clickOrderBtn}/></View> return <View key={item.id} className={styles.order_item_con}> <Order value={item} onClickBtn={clickOrderBtn}/></View>
})} })}

View File

@ -3,7 +3,6 @@ import { AFTER_ORDER_STATUS, REFUND_STATUS_ORDER } from "@/common/enum";
import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat"; import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat";
import AfterOrderBtns from "@/components/afterOrderBtns"; import AfterOrderBtns from "@/components/afterOrderBtns";
import LabAndImg from "@/components/LabAndImg"; import LabAndImg from "@/components/LabAndImg";
import ApplyRecord from "@/pages/salesAfter/components/applyRecord";
import { useSelector } from "@/reducers/hooks"; import { useSelector } from "@/reducers/hooks";
import { Image, Text, View } from "@tarojs/components" import { Image, Text, View } from "@tarojs/components"
import classnames from "classnames"; import classnames from "classnames";
@ -31,7 +30,10 @@ type Param = {
type: number //2 退货 1 预收退款 3 销售 type: number //2 退货 1 预收退款 3 销售
return_apply_order_id: number //退款申请单 return_apply_order_id: number //退款申请单
refund_amount: number // 退款金额 refund_amount: number // 退款金额
is_quality_check: true|false is_quality_check: true|false,
accessory_url: string[], //物流图片
take_goods_remark: string, //物流备注
}, },
onClickBtn?: (val:{status:number, orderInfo:Param['value']}) => void onClickBtn?: (val:{status:number, orderInfo:Param['value']}) => void
} }
@ -76,6 +78,7 @@ export default memo(({value, onClickBtn}: Param) => {
return [ReturnStageQualityCheckPendingRefund.value, ReturnStageServiceOrderPendingRefund.value].includes(value?.stage)?'待退款':value?.stage_name return [ReturnStageQualityCheckPendingRefund.value, ReturnStageServiceOrderPendingRefund.value].includes(value?.stage)?'待退款':value?.stage_name
}, [value]) }, [value])
return ( return (
<View className={styles.order_item}> <View className={styles.order_item}>
<View className={styles.header} onClick={() => goLink('/pages/salesAfter/index', {id: value?.id})}> <View className={styles.header} onClick={() => goLink('/pages/salesAfter/index', {id: value?.id})}>
@ -132,6 +135,7 @@ export default memo(({value, onClickBtn}: Param) => {
</View> </View>
</View> </View>
<AfterOrderBtns orderInfo={orderInfo} onClick={orderBtnsClick} fixedBottom={false}/> <AfterOrderBtns orderInfo={orderInfo} onClick={orderBtnsClick} fixedBottom={false}/>
</View> </View>
) )
}) })

View File

@ -10,8 +10,8 @@ import InfiniteScroll from "@/components/infiniteScroll"
import { dataLoadingStatus, getFilterData } from "@/common/util" import { dataLoadingStatus, getFilterData } from "@/common/util"
import OrderStatusList from "./components/orderStatusList" import OrderStatusList from "./components/orderStatusList"
import { GetSaleOrderListApi, RefundOrderSatausApi } from "@/api/salesAfterOrder" import { GetSaleOrderListApi, RefundOrderSatausApi } from "@/api/salesAfterOrder"
import ReturnLogistics from "./components/returnLogistics"
import ApplyRecord from "../salesAfter/components/applyRecord" import ApplyRecord from "../salesAfter/components/applyRecord"
import ReturnLogistics from "../salesAfter/components/returnLogistics"
export default () => { export default () => {
useLogin() useLogin()
@ -61,7 +61,7 @@ export default () => {
if(orderData.list.length < orderData.total) { if(orderData.list.length < orderData.total) {
pageNum.current.page++ pageNum.current.page++
const size = pageNum.current.size * pageNum.current.page const size = pageNum.current.size * pageNum.current.page
setSearchField({...searchField, size }) setSearchField((e) => ({...e, size }))
} }
}, [orderData]) }, [orderData])
@ -101,18 +101,28 @@ export default () => {
getOrderList() getOrderList()
} else if (status == 8) { } else if (status == 8) {
setApplyRecord(true) setApplyRecord(true)
} else if (status == 5) {
onShowLogistics(() => true)
} }
setCallBackPayOrderInfo(orderInfo) setCallBackPayOrderInfo(orderInfo)
}, [orderData]) }, [orderData])
//物流显示
const [logisticsShow, setLogisticsShow] = useState(false)
const onCloseLogistics = useCallback(() => setLogisticsShow(false), [])
//显示记录 //显示记录
const [applyRecord, setApplyRecord] = useState(false) const [applyRecord, setApplyRecord] = useState(false)
//物流显示
const [logisticsShow, setLogisticsShow] = useState(false)
const onShowLogistics = useCallback((val) => {
setLogisticsShow(true)
}, [])
const onCloseLogistics = useCallback(() => {
setLogisticsShow(false)
}, [])
//物流成功上传
const logisticsSuccess = useCallback(() => {
setLogisticsShow(false)
getOrderList()
}, [orderData])
return ( return (
<View className={styles.order_list_main}> <View className={styles.order_list_main}>
@ -126,9 +136,9 @@ export default () => {
return <View key={item.id} className={styles.order_item_con}> <Order value={item} onClickBtn={clickOrderBtn}/></View> return <View key={item.id} className={styles.order_item_con}> <Order value={item} onClickBtn={clickOrderBtn}/></View>
})} })}
</InfiniteScroll> </InfiniteScroll>
<ReturnLogistics show={logisticsShow} onClose={onCloseLogistics}/>
</View> </View>
<ApplyRecord show={applyRecord} id={callBackOrderInfo?.id} onClose={() => setApplyRecord(false)}/> <ApplyRecord show={applyRecord} id={callBackOrderInfo?.id} onClose={() => setApplyRecord(false)}/>
<ReturnLogistics images={callBackOrderInfo?.accessory_url} descValue={callBackOrderInfo?.take_goods_remark} show={logisticsShow} id={callBackOrderInfo?.return_apply_order_id} onClose={onCloseLogistics} onSubmit={logisticsSuccess}/>
</View> </View>
) )
} }

View File

@ -138,6 +138,20 @@
border-bottom: 2px solid #dddddd; border-bottom: 2px solid #dddddd;
padding: 0 5px 15px; padding: 0 5px 15px;
box-sizing: border-box; box-sizing: border-box;
.card_main_title_order{
flex:1
}
.order_more{
display: flex;
justify-content: flex-end;
align-items: center;
font-size: 26px;
color: #707070;
text{
width: auto;
}
}
} }
.card-main-title text { .card-main-title text {

View File

@ -225,8 +225,8 @@ const Header = memo((props: any) => {
</View> </View>
<View className={styles['card-main']}> <View className={styles['card-main']}>
<View className={styles['card-main-title']}> <View className={styles['card-main-title']}>
<View></View> <View className={styles.card_main_title_order}></View>
<Text onClick={() => goLink('/pages/orderList/index')}></Text> <View className={styles.order_more} onClick={() => goLink('/pages/orderList/index')}><Text className="iconfont icon-a-moreback"></Text></View>
</View> </View>
<View className={styles['card-main-title-content']}> <View className={styles['card-main-title-content']}>
{ {
@ -314,9 +314,14 @@ const Assets = (props: any) => {
// 功能 // 功能
const Main = memo(() => { const Main = memo(() => {
let menu = [{ text: "地址管理", icon: "icon-daohang", url: "/pages/addressManager/index" }, { text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index" }, let menu = [
{ text: "我的收藏", icon: "icon-shoucang", url: "/pages/collection/index" }, { text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/index" }, { text: "地址管理", icon: "icon-daohang", url: "/pages/addressManager/index" },
{ text: "分享推广", icon: "icon-fenxiang" }, { text: "团队邀请", icon: "icon-yaoqingtuandui" }] { text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index" },
{ text: "我的收藏", icon: "icon-shoucang", url: "/pages/collection/index" },
{ text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/index" },
// { text: "分享推广", icon: "icon-fenxiang" },
// { text: "团队邀请", icon: "icon-yaoqingtuandui" }
]
return ( return (
<View className={`${styles.crad} ${styles['card-main']} ${styles['card-feature']}`}> <View className={`${styles.crad} ${styles['card-main']} ${styles['card-feature']}`}>
<View className={styles['card-main-list-content']}> <View className={styles['card-main-list-content']}>