商城测试版v5

This commit is contained in:
czm 2022-07-11 20:06:35 +08:00
parent 217d6bca43
commit 6f9dd5b838
25 changed files with 507 additions and 88 deletions

View File

@ -110,3 +110,13 @@ export const GetSaleOrderListApi = () => {
method: "get", method: "get",
}) })
} }
/**
*
*/
export const ReturnRecordApi = () => {
return useRequest({
url: `/v1/mall/saleOrder/return`,
method: "get",
})
}

View File

@ -4,14 +4,14 @@
// export const BASE_URL = `http://10.0.0.5:50001/lymarket` // export const BASE_URL = `http://10.0.0.5:50001/lymarket`
// export const BASE_URL = `http://192.168.0.89:40001/lymarket` // export const BASE_URL = `http://192.168.0.89:40001/lymarket`
// export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞 // export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞
export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境 // export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境
// export const BASE_URL = `http://192.168.1.9:40001/lymarket` // 发 // export const BASE_URL = `http://192.168.1.9:40001/lymarket` // 发
// export const BASE_URL = `http://192.168.1.9:50005/lymarket` // 发 // export const BASE_URL = `http://192.168.1.9:50005/lymarket` // 发
// export const BASE_URL = `http://192.168.1.30:50001/lymarket` // 发 // export const BASE_URL = `http://192.168.1.30:50001/lymarket` // 发
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境 // export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境 // export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境
// export const BASE_URL = `http://192.168.1.5:40001/lymarket` // 王霞 // export const BASE_URL = `http://192.168.1.5:40001/lymarket` // 王霞
// export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添 export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添
// export const BASE_URL = `http://192.168.1.42:50001/lymarket` // 杰 // export const BASE_URL = `http://192.168.1.42:50001/lymarket` // 杰
// CDN // CDN

View File

@ -26,14 +26,19 @@ export default memo(({show = false, onClose, onAdd}: ReasonInfoParam) => {
if(show) getFavoriteList() if(show) getFavoriteList()
}, [show]) }, [show])
const onCreate = () => {
onClose?.()
goLink('/pages/collection/index')
}
return ( return (
<Popup show={show} onClose={onClose} showTitle={false} > <Popup show={show} onClose={onClose} showTitle={false} >
<View className={styles.collection_con}> <View className={styles.collection_con}>
<View className={styles.header}> <View className={styles.header}>
<Text className={styles.title}></Text> <Text className={styles.title}></Text>
<View className={styles.miconfont_con} > <View className={styles.miconfont_con} >
<Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text> <Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text>
<Text onClick={() => goLink('/pages/collection/index')}></Text> <Text onClick={onCreate}></Text>
</View> </View>
</View> </View>
<ScrollView scrollY className={styles.scrollView}> <ScrollView scrollY className={styles.scrollView}>

View File

@ -3,8 +3,8 @@ import { memo, useCallback, useEffect, useLayoutEffect, useMemo, useState } from
import {formatKbPrice} from '@/common/common' import {formatKbPrice} from '@/common/common'
import classnames from "classnames"; import classnames from "classnames";
import styles from './index.module.scss' import styles from './index.module.scss'
import AmountShow from "../amountShow";
import Taro from "@tarojs/taro"; import Taro from "@tarojs/taro";
import AmountShow from "../amountShow";
type Param = { type Param = {
style?: Object, style?: Object,

View File

@ -91,11 +91,17 @@ export default memo(({orderInfo, onClick}:Param) => {
value: [SaleOrderStatusBooking.value], //按钮对应: 待接单 value: [SaleOrderStatusBooking.value], //按钮对应: 待接单
label: '退款' label: '退款'
}, },
{
id: 9,
value: [SaleOrderStatusRefund.value], //售后记录按钮:已退款
label: '售后记录'
},
{ {
id: 2, id: 2,
value: [SaleOrderStatusTaking.value, SaleorderstatusWaitingPrePayment.value, SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value], //去付款按钮对应:待付款, 待发货, 待收货, 已收货, 已完成 value: [SaleOrderStatusTaking.value, SaleorderstatusWaitingPrePayment.value, SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value], //去付款按钮对应:待付款, 待发货, 待收货, 已收货, 已完成
label: '去付款' label: '去付款'
}, },
]) ])
//判断是否显示该按钮 //判断是否显示该按钮

View File

@ -1,8 +1,8 @@
.searchInput_main{ .searchInput_main{
display: flex; display: flex;
align-items: center;
min-height: 62px; min-height: 62px;
align-items: center;
border-bottom: 1px solid #F0F0F0; border-bottom: 1px solid #F0F0F0;
.searchInput_title { .searchInput_title {
min-width: 145px; min-width: 145px;
@ -26,6 +26,9 @@
.searchInput_con{ .searchInput_con{
flex:1; flex:1;
width: 100%; width: 100%;
display: flex;
width: 100%;
align-items: center;
input{ input{
font-size: 26px; font-size: 26px;
} }

View File

@ -12,7 +12,7 @@ type Params = {
changeOnInput?: (string) => void, changeOnInput?: (string) => void,
clickOnInput?: () => void, clickOnInput?: () => void,
children?: ReactNode children?: ReactNode
height?: number, height?: string,
titleStyle?: Object, titleStyle?: Object,
styleObj?: Object styleObj?: Object
@ -28,7 +28,7 @@ export default memo((props: Params) => {
showBorder = true, showBorder = true,
changeOnInput, changeOnInput,
clickOnInput, clickOnInput,
height = 80, height = '80rpx',
titleStyle = {} titleStyle = {}
} = props } = props
@ -39,11 +39,11 @@ export default memo((props: Params) => {
return {} return {}
}, [showBorder]) }, [showBorder])
return ( return (
<View className={styles.searchInput_main} style={{height: height + 'rpx', ...stylen,}}> <View className={styles.searchInput_main} style={{height: height, ...stylen}}>
{showTitle&&<View className={styles.searchInput_title} style={titleStyle}>{title}</View>} {showTitle&&<View className={styles.searchInput_title} style={titleStyle}>{title}</View>}
<View className={styles.searchInput_con}> <View className={styles.searchInput_con}>
{!props.children&&<Input disabled={disabled} placeholder={placeholder} onClick={() => clickOnInput?.()} onInput={(e) => changeOnInput?.(e.detail.value)}/> {!props.children&&<Input disabled={disabled} placeholder={placeholder} onClick={() => clickOnInput?.()} onInput={(e) => changeOnInput?.(e.detail.value)}/>
||<View>{props.children}</View> ||<>{props.children}</>
} }
</View> </View>
{showIcon&&<View className={`iconfont icon-jiantou ${styles.icon_more_self}`}></View>} {showIcon&&<View className={`iconfont icon-jiantou ${styles.icon_more_self}`}></View>}

View File

@ -58,6 +58,9 @@
.miconfont{ .miconfont{
font-size: 30px; font-size: 30px;
} }
.selected{
color: #000;
}
} }
.upload_image{ .upload_image{
flex:1; flex:1;

View File

@ -212,21 +212,21 @@ export default () => {
<View className={styles.returnSaleInput_item}> <View className={styles.returnSaleInput_item}>
<View className={styles.title}>退</View> <View className={styles.title}>退</View>
<View className={styles.select} onClick={() => onShowReason(returnStatus.return_reason)}> <View className={styles.select} onClick={() => onShowReason(returnStatus.return_reason)}>
<Text>{returnObj[returnStatus.return_reason]?.name||'请选择'}</Text> <Text className={returnObj[returnStatus.return_reason]&&styles.selected}>{returnObj[returnStatus.return_reason]?.name||'请选择'}</Text>
<Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text> <Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text>
</View> </View>
</View> </View>
<View className={styles.returnSaleInput_item}> <View className={styles.returnSaleInput_item}>
<View className={styles.title}></View> <View className={styles.title}></View>
<View className={styles.select} onClick={() => onShowReason(returnStatus.goods_status)}> <View className={styles.select} onClick={() => onShowReason(returnStatus.goods_status)}>
<Text>{returnObj[returnStatus.goods_status]?.name||'请选择'}</Text> <Text className={returnObj[returnStatus.goods_status]&&styles.selected}>{returnObj[returnStatus.goods_status]?.name||'请选择'}</Text>
<Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text> <Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text>
</View> </View>
</View> </View>
<View className={styles.returnSaleInput_item}> <View className={styles.returnSaleInput_item}>
<View className={styles.title}>退</View> <View className={styles.title}>退</View>
<View className={styles.select} onClick={() => onShowReason(returnStatus.return_explain)}> <View className={styles.select} onClick={() => onShowReason(returnStatus.return_explain)}>
<Text>{returnObj[returnStatus.return_explain]?.name||'请选择'}</Text> <Text className={returnObj[returnStatus.return_explain]&&styles.selected}>{returnObj[returnStatus.return_explain]?.name||'请选择'}</Text>
<Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text> <Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text>
</View> </View>
</View> </View>

View File

@ -69,7 +69,6 @@ export default memo(({order, comfirm = false}:Param) => {
label:'预估金额', label:'预估金额',
field: 'estimate_amount', field: 'estimate_amount',
message: '预估金额按生产商定义的标准匹重计算,仅供参考。详细交易金额以出单为准!', message: '预估金额按生产商定义的标准匹重计算,仅供参考。详细交易金额以出单为准!',
messageShow: false,
}, },
{ {
id:2, id:2,
@ -77,7 +76,6 @@ export default memo(({order, comfirm = false}:Param) => {
label:'合计金额', label:'合计金额',
field: 'total_sale_price', field: 'total_sale_price',
message: '包含空差的货款金额', message: '包含空差的货款金额',
messageShow: false,
}, },
{ {
id:3, id:3,
@ -85,7 +83,6 @@ export default memo(({order, comfirm = false}:Param) => {
label:'空差优惠', label:'空差优惠',
field: 'total_weight_error_discount', field: 'total_weight_error_discount',
message: '扣除空差金额', message: '扣除空差金额',
messageShow: false,
}, },
{ {
id:4, id:4,
@ -93,7 +90,6 @@ export default memo(({order, comfirm = false}:Param) => {
label:'应付金额', label:'应付金额',
field: 'total_should_collect_money', field: 'total_should_collect_money',
message: '扣除空差后的货款金额', message: '扣除空差后的货款金额',
messageShow: false,
}, },
{ {
id:5, id:5,
@ -101,14 +97,13 @@ export default memo(({order, comfirm = false}:Param) => {
label:'实付金额', label:'实付金额',
field: 'actual_amount', field: 'actual_amount',
message: '本单实付总金额', message: '本单实付总金额',
messageShow: false,
} }
] ]
//订单流程是否显示价格 //订单流程是否显示价格
const showPrice = (item) => { const showPrice = (item) => {
if (item.id == 2) { if (item.id == 2) {
//合计金额 (剪板特殊情况) //合计金额 (剪板特殊情况)
return (item.value.includes(order.status)|| order.sale_mode == 1) return (item.value.includes(order.status)|| order.sale_mode == 1)
} else if (item.id == 3) { } else if (item.id == 3) {
//空差优惠只有大货才有 //空差优惠只有大货才有
@ -126,7 +121,7 @@ export default memo(({order, comfirm = false}:Param) => {
<> <>
{ {
priceList.map(item => { priceList.map(item => {
return <>{showPrice(item)&&<EstimatedAmount messageShow={item.messageShow} key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} messageTitle={item.message} />}</> return <>{showPrice(item)&&<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} messageTitle={item.message} />}</>
}) })
} }
</> </>
@ -140,11 +135,17 @@ export default memo(({order, comfirm = false}:Param) => {
return<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} /> return<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} />
}, [order]) }, [order])
//金额展示 //确认金额展示
const showPriceConDom = useMemo(() => { const showPriceConDom = useMemo(() => {
return comfirm?comfirmPriceConDom:priceConDom return comfirm?comfirmPriceConDom:priceConDom
}, [order]) }, [order])
//颜色金额小计
const colorPrice = useCallback((item) => {
let res = item.total_sale_price||item.estimate_amount
return formatPriceDiv(res).toLocaleString('en', {minimumFractionDigits: 2})
},[order])
//散剪大约重量 //散剪大约重量
const aboutWeight = useCallback((weight) => { const aboutWeight = useCallback((weight) => {
@ -187,7 +188,7 @@ export default memo(({order, comfirm = false}:Param) => {
</View> </View>
<View className={styles.order_list_item_count}> <View className={styles.order_list_item_count}>
<View className={styles.count_num}>×{formatCount(colorItem)}<text>{order.unit}</text></View> <View className={styles.count_num}>×{formatCount(colorItem)}<text>{order.unit}</text></View>
<View className={styles.count_price}><text>¥</text>{formatPriceDiv(colorItem.estimate_amount).toLocaleString()}</View> <View className={styles.count_price}><text>¥</text>{colorPrice(colorItem)}</View>
</View> </View>
</View> </View>
</View> </View>

View File

@ -0,0 +1,160 @@
.returnRecord_main{
height: 70vh;
.order_item{
background-color: #fff;
border-radius: 20px;
padding: 20px;
box-sizing: border-box;
.header{
display: flex;
align-items: center;
.user{
display: flex;
align-items: center;
.name {
color: #000;
font-weight: 700;
margin-left: 15px;
font-size: $font_size;
width: 100px;
@include common_ellipsis();
}
image{
width: 70px;
height: 70px;
border-radius: 50%;
}
}
.order_con {
padding-left: 15px;
width: 100%;
.name {
color: #000;
font-weight: 700;
font-size: $font_size;
}
.order_num {
flex: 1;
font-size: $font_size_medium;
color: $color_font_one;
padding-right: 10px;
display: flex;
justify-content: flex-start;
align-items: center;
.order_num_con{
flex:1;
}
.miconfont {
font-size: 20px;
}
}
}
.tag{
font-size: $font_size_min;
padding: 5px 15px;
background-color: $color_main;
color: #fff;
border-radius: 0px 20px 0px 20px;
}
}
.product_title{
display: flex;
align-items: center;
padding: 35px 0;
.product_tag{
background-color: #CDE5FF;
font-size: $font_size_min;
padding: 5px 10px;
color: $color_main;
border-radius: 6px;
}
.product_name{
flex:1;
font-size: $font_size;
font-weight: 700;
padding: 0 20px;
@include common_ellipsis()
}
.product_status{
font-size: $font_size;
color: $color_main;
}
}
.product_list{
display: flex;
.image{
width: 126px;
height: 126px;
border-radius: 20px ;
position: relative;
image{
width: 100%;
height: 100%;
border-radius: 20px ;
}
.color_num {
background: rgba(0,0,0, 0.5);
border-radius: 36px 0px 20px 0px;
font-size: $font_size_min;
color: #fff;
position: absolute;
right:0;
bottom:0;
padding: 5px 10px 5px 15px;
box-sizing: border-box;
}
}
.color_list{
flex:1;
padding-left: 30px;
.color_item{
display: flex;
justify-content: space-between;
font-size: $font_size_min;
color: $color_font_three;
align-items: center;
margin-bottom: 20px;
.color_title{
font-weight: 700;
font-size: $font_size;
color: #000;
}
.color_more{
color: $color_font_three;
}
}
}
}
.color_count_num{
font-size: $font_size_min;
color: $color_font_two;
background-color: #F6F6F6;
border-radius: 10px;
padding: 10px 22px;
margin-top: 20px;
}
.order_number{
display: flex;
background-color: #F6F6F6;
padding: 20px;
margin: 20px 0;
align-items: center;
font-size: $font_size_medium;
border-radius: 10px;
text{
&:nth-child(1) {
font-weight: 700;
color: $color_font_three;
border-right: 2px solid #CCCCCC;
padding-right: 20px;
}
&:nth-child(2) {
padding-left: 20px;
color: $color_font_one;
}
}
}
}
}

View File

@ -0,0 +1,160 @@
import { GetSaleOrderListApi, ReturnRecordApi } from "@/api/salesAfterOrder";
import { goLink } from "@/common/common";
import { formatHashTag, formatPriceDiv } from "@/common/fotmat";
import { dataLoadingStatus, getFilterData } from "@/common/util";
import InfiniteScroll from "@/components/infiniteScroll";
import LabAndImg from "@/components/LabAndImg";
import Popup from "@/components/popup";
import OrderStatusTag from "@/pages/salesAfterList/components/orderStatusTag";
import { useSelector } from "@/reducers/hooks";
import { Image, Text, View } from "@tarojs/components";
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
import classnames from "classnames";
import styles from './index.module.scss'
import { REFUND_STATUS_ORDER } from "@/common/enum";
type Param = {
show?: true|false,
onClose?: () => void,
onSubmit?: () => void,
id?: number
}
export default memo(({show, onClose, onSubmit, id}:Param) => {
//搜索参数
const searchField = useRef({
page : 1,
size : 10,
saleOrderID: 0
})
useEffect(() => {
if(show && id) {
searchField.current.saleOrderID = id
getOrderList()
}
}, [show, id])
const userInfo = useSelector(state => state.userInfo)
//获取订单列表
const {fetchData: listFetchData, state:orderState} = ReturnRecordApi()
const [orderData, setOrderData] = useState<{list:any[], total:number}>({list:[], total:0})
const getOrderList = async () => {
console.log('ida::', id)
let res = await listFetchData(getFilterData(searchField.current))
setOrderData({list: res.data.list, total: res.data.total})
}
//整理颜色
const labAndRgbAndUrl = useCallback((item) => {
return {lab:{...item?.lab}, rgb:{...item?.rgb}, texturl_url: item?.texturl_url}
}, [orderData])
const {
ReturnApplyOrderTypeReturnForRefund, // 退货退款
} = REFUND_STATUS_ORDER
//对应单价
const standardPrice = useCallback((price, sale_mode) => {
return formatPriceDiv(price).toLocaleString() + '/' + (sale_mode == 1?'m':'kg')
}, [orderData])
//对应数量
const formatCount = useCallback((item, sale_mode) => {
return sale_mode == 0? item.roll : Number(item.length / 100)
}, [orderData])
//上拉加载数据
const pageNum = useRef({size: searchField.current.size, page: searchField.current.page})
const getScrolltolower = () => {
if(orderData.list.length < orderData.total) {
pageNum.current.page++
const size = pageNum.current.size * pageNum.current.page
searchField.current.size = size
}
}
//监听滚动
const [scrollStatus, setScrollStatus] = useState(false)
const onscroll = useCallback((e) => {
if(e.detail.scrollTop > 20) {
setScrollStatus(true)
} else {
setScrollStatus(false)
}
},[])
//数据加载状态
const statusMore = useMemo(() => {
return dataLoadingStatus({list:orderData.list, total: orderData.total, status: orderState.loading})
}, [orderData, orderState])
return (
<>
<Popup show={show} title="售后记录" onClose={onClose}>
<View className={styles.returnRecord_main}>
<InfiniteScroll
selfonScrollToLower={getScrolltolower}
selfOnScroll={onscroll}
statusMore={statusMore}
>
<View className={styles.returnRecord_con}>
{orderData?.list?.map(item => <View key={item.id} className={styles.order_item}>
<View className={styles.header} onClick={() => goLink('/pages/salesAfter/index', {id: item?.id})}>
<View className={styles.user}>
<Image src={`${userInfo?.adminUserInfo?.avatar_url}`}/>
</View>
<View className={styles.order_con}>
<Text className={styles.name}>{userInfo?.adminUserInfo?.user_name}</Text>
<View className={styles.order_num}>
<View className={styles.order_num_con}>
<Text className={styles.order_no}>{item?.return_order_no}</Text>
<Text className={classnames(styles.miconfont, 'iconfont, icon-a-moreback')}></Text>
</View>
<OrderStatusTag status={item?.type}/>
</View>
</View>
</View>
<View className={styles.product_con} onClick={() => goLink('/pages/salesAfter/index', {id: item?.id})}>
<View className={styles.product_title}>
<View className={styles.product_tag}>{item?.sale_mode_name}</View>
<View className={styles.product_name}>{formatHashTag(item?.product_list?.[0].code, item?.product_list?.[0].name)}</View>
<View className={styles.product_status}>{item?.stage_name}</View>
</View>
<View className={styles.product_list}>
<View className={styles.image}>
<LabAndImg value={labAndRgbAndUrl(item)}/>
<View className={styles.color_num}>{item?.product_list?.[0].product_colors?.[0].code}</View>
</View>
<View className={styles.color_list}>
{item?.product_list?.[0].product_colors?.map((itemColor, index) => {
return (
(index <= 1)&&<View className={styles.color_item}>
<View className={styles.color_title}>{formatHashTag(itemColor.code, itemColor.name)}</View>
<View className={styles.color_price}>{standardPrice(itemColor.sale_price, item.sale_mode)}</View>
<View className={styles.color_num}>×{formatCount(itemColor, itemColor.sale_mode)}</View>
</View>
)
})
}
<View className={styles.color_item}>
<View className={styles.color_more}></View>
<View className={styles.color_more}></View>
<View className={styles.color_more}></View>
</View>
</View>
</View>
<View className={styles.color_count_num}>{`${item?.total_fabrics}种面料,${item?.total_colors}种颜色,共${item?.total_number}`}</View>
<View className={styles.order_number}>
<Text>{item?.type == ReturnApplyOrderTypeReturnForRefund.value?'已申请退货':'已申请退款'}</Text>
<Text>{item?.order_no}</Text>
</View>
</View>
</View>)}
</View>
</InfiniteScroll>
</View>
</Popup>
</>
)
})

View File

@ -108,6 +108,7 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
width: 100%;
.order_num_btn{ .order_num_btn{
font-size: $font_size_medium; font-size: $font_size_medium;
padding: 5px 10px; padding: 5px 10px;

View File

@ -26,6 +26,7 @@ import KindList from "./components/kindList";
import OrderState from "./components/orderState"; import OrderState from "./components/orderState";
import Payment from "./components/payment"; import Payment from "./components/payment";
import Remark from "./components/remark"; import Remark from "./components/remark";
import ReturnRecord from "./components/returnRecord";
import styles from './index.module.scss' import styles from './index.module.scss'
export default () => { export default () => {
@ -180,8 +181,7 @@ import styles from './index.module.scss'
//获取底部按钮点击, 获取按钮状态 //获取底部按钮点击, 获取按钮状态
const orderStateClick = useCallback((val) => { const orderStateClick = useCallback((val) => {
if(val == 1 || val == 6) { if(val == 1 || val == 6 || val == 8) {
//取消订单
getSaleOrderPreView() getSaleOrderPreView()
}else if(val == 2) { }else if(val == 2) {
//待付款 //待付款
@ -193,6 +193,9 @@ import styles from './index.module.scss'
} else if(val == 7) { } else if(val == 7) {
//再购 //再购
addShopCart() addShopCart()
} else if(val == 9) {
//售后记录
onReturnRecordShow()
} }
}, [orderDetail]) }, [orderDetail])
@ -286,6 +289,15 @@ import styles from './index.module.scss'
} }
//显示售后记录
const [returnRecordShow, setReturnRecordShow] = useState(false)
const onReturnRecordShow = useCallback(() => {
setReturnRecordShow(true)
}, [])
const closeReturnRecord = useCallback(() => {
setReturnRecordShow(false)
}, [])
return ( return (
<View className={styles.order_main}> <View className={styles.order_main}>
{(orderDetail?.status != SaleorderstatusWaitingPrePayment.value)&&<OrderState orderInfo={orderDetail}/>|| {(orderDetail?.status != SaleorderstatusWaitingPrePayment.value)&&<OrderState orderInfo={orderDetail}/>||
@ -296,16 +308,16 @@ import styles from './index.module.scss'
<KindList order={formatPreViewOrderMemo}/> <KindList order={formatPreViewOrderMemo}/>
<View className={styles.order_info} > <View className={styles.order_info} >
<View className={styles.order_info_title}></View> <View className={styles.order_info_title}></View>
<SearchInput showBorder={false} title='单号' height={50}> <SearchInput showBorder={false} title='单号' height='50rpx'>
<View className={styles.order_num}> <View className={styles.order_num}>
<Text>{orderDetail?.order_no}</Text> <Text>{orderDetail?.order_no}</Text>
<View className={styles.order_num_btn} onClick={() => clipboardData()}></View> <View className={styles.order_num_btn} onClick={() => clipboardData()}></View>
</View> </View>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='下单时间' height={50}> <SearchInput showBorder={false} title='下单时间' height='50rpx'>
<Text>{formatDateTime(orderDetail?.create_time)}</Text> <Text>{formatDateTime(orderDetail?.create_time)}</Text>
</SearchInput> </SearchInput>
{(orderDetail?.payment_time)&&<SearchInput showBorder={false} title='付款时间' height={50}> {(orderDetail?.payment_time)&&<SearchInput showBorder={false} title='付款时间' height='50rpx'>
<Text>{formatDateTime(orderDetail?.payment_time)}</Text> <Text>{formatDateTime(orderDetail?.payment_time)}</Text>
</SearchInput>} </SearchInput>}
</View> </View>
@ -327,6 +339,7 @@ import styles from './index.module.scss'
<Payment onSubmitSuccess={onPaySuccess} show={payMentShow} onClose={closePayShow} orderInfo={orderDetail} /> <Payment onSubmitSuccess={onPaySuccess} show={payMentShow} onClose={closePayShow} orderInfo={orderDetail} />
<ApplyRefund show={refundShow} onClose={applyRefundClose} orderId={orderDetail?.id}/> <ApplyRefund show={refundShow} onClose={applyRefundClose} orderId={orderDetail?.id}/>
<ShopCart show={showCart} onClose={() => setShowCart(false)}/> <ShopCart show={showCart} onClose={() => setShowCart(false)}/>
<ReturnRecord show={returnRecordShow} onClose={closeReturnRecord} id={orderDetail?.id}/>
<View className="common_safe_area_y"></View> <View className="common_safe_area_y"></View>
</View> </View>
) )

View File

@ -1,4 +1,5 @@
import { goLink } from "@/common/common"; import { goLink } from "@/common/common";
import { ORDER_STATUS } from "@/common/enum";
import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat"; import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat";
import LabAndImg from "@/components/LabAndImg"; import LabAndImg from "@/components/LabAndImg";
import OrderBtns from "@/components/orderBtns"; import OrderBtns from "@/components/orderBtns";
@ -51,6 +52,13 @@ export default memo(({value, onClickBtn}: Param) => {
onClickBtn?.({status, orderInfo:value}) onClickBtn?.({status, orderInfo:value})
}, [value]) }, [value])
let {SaleOrderStatusTaking} = ORDER_STATUS
//订单状态
// const orderStatus = useCallback((item) => {
// return item.status == SaleOrderStatusTaking.value?'装车中':item.status_name
// }, [value])
//按钮所需数据 //按钮所需数据
const orderInfo = useMemo(() => { const orderInfo = useMemo(() => {
return { return {
@ -68,6 +76,7 @@ export default memo(({value, onClickBtn}: Param) => {
return `${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}${value?.sale_mode == 0? '条':'米'}` return `${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}${value?.sale_mode == 0? '条':'米'}`
}, [value]) }, [value])
return ( return (
<View className={styles.order_item}> <View className={styles.order_item}>
<View className={styles.header} onClick={() => goLink('/pages/order/index', {id: value?.id})}> <View className={styles.header} onClick={() => goLink('/pages/order/index', {id: value?.id})}>

View File

@ -15,6 +15,7 @@ import ShopCart from "@/components/shopCart"
import { alert } from "@/common/common" import { alert } from "@/common/common"
import { useRouter } from "@tarojs/runtime" import { useRouter } from "@tarojs/runtime"
import ApplyRefund from "../order/components/applyRefund" import ApplyRefund from "../order/components/applyRefund"
import ReturnRecord from "../order/components/returnRecord"
export default () => { export default () => {
const {checkLogin} = useLogin() const {checkLogin} = useLogin()
@ -107,7 +108,7 @@ export default () => {
//监听点击的按钮 //监听点击的按钮
const clickOrderBtn = useCallback(({status, orderInfo}) => { const clickOrderBtn = useCallback(({status, orderInfo}) => {
setCallBackPayOrderInfo(() => orderInfo) setCallBackPayOrderInfo(() => orderInfo)
if(status == 1 || status == 6) { if(status == 1 || status == 6 || status == 8) {
getOrderList() getOrderList()
} else if(status == 2) { } else if(status == 2) {
//去支付 //去支付
@ -119,6 +120,8 @@ export default () => {
} else if (status == 7) { } else if (status == 7) {
//购买 //购买
addShopCart(orderInfo) addShopCart(orderInfo)
} else if (status == 9) {
onReturnRecordShow()
} }
}, [orderData]) }, [orderData])
@ -178,6 +181,15 @@ export default () => {
setRefundShow(false) setRefundShow(false)
}, []) }, [])
//显示售后记录
const [returnRecordShow, setReturnRecordShow] = useState(false)
const onReturnRecordShow = useCallback(() => {
setReturnRecordShow(true)
}, [])
const closeReturnRecord = useCallback(() => {
setReturnRecordShow(false)
}, [])
return ( return (
<View className={styles.order_list_main}> <View className={styles.order_list_main}>
@ -194,6 +206,7 @@ export default () => {
</View> </View>
<ApplyRefund show={refundShow} onClose={applyRefundClose} orderId={callBackOrderInfo?.id}/> <ApplyRefund show={refundShow} onClose={applyRefundClose} orderId={callBackOrderInfo?.id}/>
<ShopCart show={showCart} onClose={() => setShowCart(false)}/> <ShopCart show={showCart} onClose={() => setShowCart(false)}/>
<ReturnRecord show={returnRecordShow} onClose={closeReturnRecord} id={callBackOrderInfo?.id}/>
<Payment onSubmitSuccess={onPaySuccess} show={payMentShow} onClose={closePayShow} orderInfo={callBackOrderInfo}/> <Payment onSubmitSuccess={onPaySuccess} show={payMentShow} onClose={closePayShow} orderInfo={callBackOrderInfo}/>
</View> </View>
) )

View File

@ -1,9 +1,11 @@
.apply_record_scroll{
height: 70vh;
}
.apply_record_main{ .apply_record_main{
margin-top: 20px; margin-top: 20px;
padding: 0 30px; padding: 0 30px;
height: 70vh;
.apply_record_scroll{
height: 100%;
}
.kind_number{ .kind_number{
width: 100%; width: 100%;
padding: 20px; padding: 20px;

View File

@ -4,6 +4,7 @@ import LabAndImg from "@/components/LabAndImg";
import Popup from "@/components/popup"; import Popup from "@/components/popup";
import { ScrollView, Text, View } from "@tarojs/components"; import { ScrollView, Text, View } from "@tarojs/components";
import { memo, useCallback, useEffect, useMemo, useState } from "react"; import { memo, useCallback, useEffect, useMemo, useState } from "react";
import Taro from "@tarojs/taro";
import styles from './index.module.scss' import styles from './index.module.scss'
type Param = { type Param = {
@ -15,10 +16,12 @@ type Param = {
export default memo(({show, onClose, onSubmit, id}:Param) => { export default memo(({show, onClose, onSubmit, id}:Param) => {
useEffect(() => { useEffect(() => {
if(show && id) getSaleOrderPreView() if(show && id) getSaleOrderPreView()
if(!show) setFormatDetailOrder(() => null)
}, [show, id]) }, [show, id])
//获取订单详情 //获取订单详情
const [orderDetail, setOrderDetail] = useState<any>() //获取到的原始数据 const [orderDetail, setOrderDetail] = useState<any>(null) //获取到的原始数据
const {fetchData: saleOrderOrderDetailData} = SaleOrderOrderDetailApi() const {fetchData: saleOrderOrderDetailData} = SaleOrderOrderDetailApi()
const getSaleOrderPreView = async () => { const getSaleOrderPreView = async () => {
if(id) { if(id) {
@ -77,7 +80,8 @@ export default memo(({show, onClose, onSubmit, id}:Param) => {
return ( return (
<> <>
<Popup show={show} title="申请记录" onClose={onClose}> <Popup show={show} title="申请记录" onClose={onClose}>
{formatDetailOrder&&<View className={styles.apply_record_main}> <View className={styles.apply_record_main}>
{formatDetailOrder&&<>
<View className={styles.kind_number}><Text>{numText}</Text></View> <View className={styles.kind_number}><Text>{numText}</Text></View>
<ScrollView scrollY className={styles.apply_record_scroll}> <ScrollView scrollY className={styles.apply_record_scroll}>
<View className={styles.orders_list_con}> <View className={styles.orders_list_con}>
@ -120,7 +124,8 @@ export default memo(({show, onClose, onSubmit, id}:Param) => {
</View> </View>
</View> </View>
</ScrollView> </ScrollView>
</View>} </>}
</View>
</Popup> </Popup>
</> </>
) )

View File

@ -112,6 +112,7 @@
} }
.order_num{ .order_num{
display: flex; display: flex;
width: 100%;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.order_num_btn{ .order_num_btn{
@ -124,6 +125,7 @@
} }
text{ text{
font-size: $font_size; font-size: $font_size;
word-break: break-all;
} }
} }

View File

@ -157,33 +157,33 @@ import styles from './index.module.scss'
return ( return (
<View className={styles.order_info} > <View className={styles.order_info} >
<View className={styles.order_info_title}></View> <View className={styles.order_info_title}></View>
<SearchInput showBorder={false} title='售后单号' height={50}> <SearchInput showBorder={false} title='售后单号' height='50rpx'>
<View className={styles.order_num}> <View className={styles.order_num}>
<Text>{orderInfo?.return_order_no}</Text> <Text>{orderInfo?.return_order_no}</Text>
<View className={styles.order_num_btn} onClick={() => clipboardData(orderInfo?.return_order_no)}></View> <View className={styles.order_num_btn} onClick={() => clipboardData(orderInfo?.return_order_no)}></View>
</View> </View>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='订单号' height={50}> <SearchInput showBorder={false} title='订单号' height='50rpx'>
<View className={styles.order_num}> <View className={styles.order_num}>
<Text>{orderInfo?.order_no}</Text> <Text>{orderInfo?.order_no}</Text>
<View className={styles.order_num_btn} onClick={() => clipboardData(orderInfo?.order_no)}></View> <View className={styles.order_num_btn} onClick={() => clipboardData(orderInfo?.order_no)}></View>
</View> </View>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='退货原因' height={50}> <SearchInput showBorder={false} title='退货原因' height='50rpx'>
<Text>{orderInfo?.return_reason_name}</Text> <Text>{orderInfo?.return_reason_name}</Text>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='退货说明' height={50}> <SearchInput showBorder={false} title='退货说明' height='50rpx'>
<Text>{orderInfo?.return_explain_name}</Text> <Text>{orderInfo?.return_explain_name}</Text>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='其它说明' height={50}> <SearchInput showBorder={false} title='货物状况' height='50rpx'>
<Text>{orderInfo?.reason_describe}</Text>
</SearchInput>
<SearchInput showBorder={false} title='货物状况' height={50}>
<Text>{orderInfo?.goods_status_name}</Text> <Text>{orderInfo?.goods_status_name}</Text>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='申请时间' height={50}> <SearchInput showBorder={false} title='申请时间' height='50rpx'>
<Text>{formatDateTime(orderInfo?.apply_time)}</Text> <Text>{formatDateTime(orderInfo?.apply_time)}</Text>
</SearchInput> </SearchInput>
<SearchInput showBorder={false} title='其它说明' height='auto'>
<Text>{orderInfo?.reason_describe}</Text>
</SearchInput>
</View> </View>
) )
}) })

View File

@ -3,6 +3,7 @@ import { 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";
@ -68,6 +69,8 @@ export default memo(({value, onClickBtn}: Param) => {
ReturnApplyOrderTypeReturnForRefund, // 退货退款 ReturnApplyOrderTypeReturnForRefund, // 退货退款
} = REFUND_STATUS_ORDER } = REFUND_STATUS_ORDER
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})}>

View File

@ -12,6 +12,7 @@ import OrderStatusList from "./components/orderStatusList"
import { AFTER_ORDER_STATUS } from "@/common/enum" import { AFTER_ORDER_STATUS } from "@/common/enum"
import { GetSaleOrderListApi, RefundOrderSatausApi } from "@/api/salesAfterOrder" import { GetSaleOrderListApi, RefundOrderSatausApi } from "@/api/salesAfterOrder"
import ReturnLogistics from "./components/returnLogistics" import ReturnLogistics from "./components/returnLogistics"
import ApplyRecord from "../salesAfter/components/applyRecord"
export default () => { export default () => {
useLogin() useLogin()
@ -93,16 +94,23 @@ export default () => {
} }
//监听点击的按钮 //监听点击的按钮
const [callBackOrderInfo, setCallBackPayOrderInfo] = useState<any>()
const clickOrderBtn = useCallback(({status, orderInfo}) => { const clickOrderBtn = useCallback(({status, orderInfo}) => {
if(status == 1 || status == 6) { if(status == 1 || status == 6) {
getOrderList() getOrderList()
} else if (status == 8) {
setApplyRecord(true)
} }
setCallBackPayOrderInfo(orderInfo)
}, [orderData]) }, [orderData])
//物流显示 //物流显示
const [logisticsShow, setLogisticsShow] = useState(false) const [logisticsShow, setLogisticsShow] = useState(false)
const onCloseLogistics = useCallback(() => setLogisticsShow(false), []) const onCloseLogistics = useCallback(() => setLogisticsShow(false), [])
//显示记录
const [applyRecord, setApplyRecord] = useState(false)
return ( return (
<View className={styles.order_list_main}> <View className={styles.order_list_main}>
<View className={styles.title}> <View className={styles.title}>
@ -117,6 +125,7 @@ export default () => {
</InfiniteScroll> </InfiniteScroll>
<ReturnLogistics show={logisticsShow} onClose={onCloseLogistics}/> <ReturnLogistics show={logisticsShow} onClose={onCloseLogistics}/>
</View> </View>
<ApplyRecord show={applyRecord} id={callBackOrderInfo?.id} onClose={() => setApplyRecord(false)}/>
</View> </View>
) )
} }

View File

@ -33,7 +33,7 @@
.text_ss{ .text_ss{
position: relative; position: relative;
.miconfont{ .miconfont{
font-size: 20px; font-size: 30px;
margin-left: 5px; margin-left: 5px;
} }
&::before{ &::before{

View File

@ -29,7 +29,8 @@ export default () => {
width: '', width: '',
weight_density: '', weight_density: '',
product_kind_id: '', product_kind_id: '',
component: '' component: '',
abstract_sort_key: ''
}) })
//获取面料列表 //获取面料列表
@ -116,6 +117,19 @@ export default () => {
setSelectList([...data]) setSelectList([...data])
} }
//排序
const [sortStatus, setSortStatus] = useState<{comprehensive:'none'|'top'|'bottom', collection:'none'|'top'|'bottom'}>({
comprehensive: 'none',
collection: 'none'
})
const changeSort = (val) => {
if(val == 1) {
} else {
}
}
return ( return (
<View className={styles.main}> <View className={styles.main}>
<View className={styles.search}> <View className={styles.search}>
@ -123,13 +137,13 @@ export default () => {
</View> </View>
<View className={styles.filter}> <View className={styles.filter}>
<View className={styles.filter_all}> <View className={styles.filter_all}>
<View className={styles.text_zh}> <View className={styles.text_zh} onClick={() => changeSort(1)}>
<Text></Text> <Text></Text>
<SortBtn status="top"/> <SortBtn status={sortStatus.comprehensive}/>
</View> </View>
<View className={styles.text_sc}> <View className={styles.text_sc} onClick={() => changeSort(2)}>
<Text></Text> <Text></Text>
<SortBtn status="top"/> <SortBtn status="none"/>
</View> </View>
<View className={styles.text_ss} onClick={() => goLink('/pages/searchList/hightSearchList')}> <View className={styles.text_ss} onClick={() => goLink('/pages/searchList/hightSearchList')}>
<Text></Text> <Text></Text>

View File

@ -325,7 +325,7 @@ 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-daohang", url: "/pages/addressManager/index" }, { text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index" },
{ text: "我的收藏", icon: "icon-shoucang" }, { text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/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" }] { 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']}`}>