商城测试版v6

This commit is contained in:
2022-07-19 21:17:53 +08:00
parent d5a5099e25
commit ff8eb0ce1c
33 changed files with 839 additions and 655 deletions
@@ -0,0 +1,224 @@
import { AFTER_ORDER_STATUS, ORDER_STATUS, REFUND_STATUS } from "@/common/enum"
import { formatHashTag, formatPriceDiv, formatWeightDiv } from "@/common/fotmat"
import EstimatedAmount from "@/components/estimatedAmount"
import LabAndImg from "@/components/LabAndImg"
import { Text, View } from "@tarojs/components"
import { memo, useCallback, useMemo } from "react"
import styles from './index.module.scss'
type OrderParam = {
estimate_amount: number, //预估金额
list: any[],
product_list: any[],
quality_check_pass_product: any[],
sale_mode: number,
sale_mode_name: string,
unit: string,
total_colors: number,
total_fabrics: number,
total_number: number,
stage: number, //订单状态
type: 1|2, //1退货, 2退款
refund_type: number, //退款状态
total_sale_price: number, //销售金额
total_should_collect_money: number, //应收金额
total_weight_error_discount: number, //空差优惠
the_previous_status: number, //取消订单时的订单状态
actual_amount: number //实付金额
quality_check_pass_colors: number, //验布后的颜色总数
quality_check_pass_fabrics: number, //验布后的面料数量
quality_check_pass_number: number, //验布后的总数量
}
type Param = {
order: OrderParam,
comfirm?: boolean //是否是确认订单页面使用
}
export default memo(({order, comfirm = false}:Param) => {
//对应数量
const formatCount = useCallback((item) => {
return order?.sale_mode == 0? item.roll : Number(item.length / 100)
}, [order])
//对应单价
const standardPrice = useCallback(price => {
return formatPriceDiv(price).toLocaleString() + '/' + (order?.sale_mode == 1?'m':'kg')
}, [order])
//数量格式
const numText = useMemo(() => {
if(order) {
if(!order?.quality_check_pass_fabrics&&!order?.quality_check_pass_number&&!order?.quality_check_pass_colors) {
let total_number = order?.sale_mode == 0?order?.total_number:(order?.total_number/100)
return `${order?.total_fabrics}种面料,${order?.total_colors}种颜色,共${total_number}${order?.unit}`
} else {
let total_number = order?.sale_mode == 0?order?.quality_check_pass_number:(order?.quality_check_pass_number/100)
return `${order?.quality_check_pass_fabrics}种面料,${order?.quality_check_pass_colors}种颜色,共${total_number}${order?.unit}`
}
}
}, [order])
//获取面料数组
const list = useMemo(() => {
return order?.quality_check_pass_product?.length > 0?order?.quality_check_pass_product:order?.product_list
}, [order])
//售后单状态枚举
const {
ReturnStageApplying, // 申请中
ReturnStageWaitCheck, // 退货中
ReturnStageChecked, // 待验布
ReturnStageReturned, // 已退款
ReturnStageCancel, // 已取消
ReturnStageQualityCheckPendingRefund, // 已验布
ReturnStageServiceOrderPendingRefund, // 待退款
ReturnStageRejected, // 已拒绝
} = AFTER_ORDER_STATUS
//退款状态枚举
const {
ShouldCollectOrderRefundTypeUnknown,
ShouldCollectOrderRefundTypeAdvanceReceiptRefund,
ShouldCollectOrderRefundTypeReturnForRefund,
ShouldCollectOrderRefundTypeSalesRefund,
} = REFUND_STATUS
//金额列表枚举
const priceList = [
{
id:5,
big_value:[
ReturnStageQualityCheckPendingRefund.value,
ReturnStageServiceOrderPendingRefund.value,
ReturnStageReturned.value,
],
cut_value: [
ReturnStageRejected.value,
ReturnStageApplying.value,
ReturnStageWaitCheck.value,
ReturnStageChecked.value,
ReturnStageQualityCheckPendingRefund.value,
ReturnStageServiceOrderPendingRefund.value,
ReturnStageReturned.value,
ReturnStageCancel.value
],
model_value: [
ReturnStageApplying.value,
ReturnStageWaitCheck.value,
ReturnStageChecked.value,
ReturnStageQualityCheckPendingRefund.value,
ReturnStageServiceOrderPendingRefund.value,
ReturnStageReturned.value,
ReturnStageCancel.value
],
label:'合计金额',
field: 'total_refund_amount',
message: '按原单价*退货重量的金额',
},
{
id:1,
big_value:[ReturnStageReturned.value],
cut_value: [ReturnStageServiceOrderPendingRefund.value, ReturnStageReturned.value],
model_value: [],
label:'扣款金额',
field: 'other_deduction_amount',
message: '本次售后扣款金额'
},
{
id:3,
big_value:[ReturnStageReturned.value],
cut_value: [ReturnStageReturned.value],
model_value: [ReturnStageReturned.value],
label:'退款金额',
field: 'refund_amount',
message: '本次售后应退款金额'
},
{
id:4,
big_value:[ReturnStageReturned.value],
cut_value: [ReturnStageReturned.value],
model_value: [ReturnStageReturned.value],
label:'退款去向',
field: 'refund_flow_name',
message: '本次售后应退款金额'
},
]
//是否显示价格
const showPrice = useCallback((priceInfo) => {
let key = ['big_value', 'model_value', 'cut_value']
if(priceInfo.id == 5) {
return priceInfo[key[order?.sale_mode]].includes(order?.stage)||(order.refund_type == ShouldCollectOrderRefundTypeSalesRefund.value)
} else {
return priceInfo[key[order?.sale_mode]].includes(order?.stage)
}
}, [order])
const priceConDom = useMemo(() => {
if(!order) return
return (
<>
{
priceList.map(item => {
return <>{showPrice(item)&&<EstimatedAmount messageTitle={item.message} key={item.id} number={order[item.field]} numberFormat={item.id == 4?'text': 'number'} title={item.label} />}</>
})
}
</>
)
}, [order])
//整理颜色
const labAndRgbAndUrl = useCallback((item) => {
return {lab:{...item?.lab}, rgb:{...item?.rgb}, texturl_url: item?.texturl_url}
}, [])
//单价显示判断
const sale_price_show = useMemo(() => {
return order?.stage != ReturnStageServiceOrderPendingRefund.value && order?.stage != ReturnStageQualityCheckPendingRefund.value
}, [order])
return (
<View className={styles.kindsList_main}>
<View className={styles.orders_list_con}>
<View className={styles.orders_return_title}>{order?.type == 1?'退货信息':'退款信息'}</View>
{
list?.map(item => {
return <View key={item.product_code} className={styles.order_list}>
<View className={styles.order_list_title}>
<View className={styles.tag}>{order.sale_mode_name}</View>
<View className={styles.title}>{formatHashTag(item.code, item.name)}</View>
<View className={styles.num}>共{item?.product_colors?.length}种</View>
</View>
<View className={styles.order_list_scroll}>
{item?.product_colors?.map(colorItem => {
return <View key={colorItem.id} className={styles.order_list_item}>
<View className={styles.order_list_item_img}>
<LabAndImg value={labAndRgbAndUrl(colorItem)}/>
</View>
<View className={styles.order_list_item_con}>
<View className={styles.order_list_item_des}>
<View className={styles.order_list_item_title}>{colorItem.code + ' ' + colorItem.name}</View>
<View className={styles.order_list_item_price}>
{sale_price_show&&<Text>¥{standardPrice(colorItem.sale_price)}</Text>}
{(order?.stage == ReturnStageReturned.value)&&<Text>总重{formatWeightDiv(colorItem.estimate_weight)}kg</Text>}
</View>
</View>
<View className={styles.order_list_item_count}>
<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>
</View>
</View>
})}
</View>
</View>
})
}
<View className={styles.order_total}><Text>合计</Text><Text>{numText}</Text></View>
<View className={styles.order_estimated_amount}>
{priceConDom}
</View>
</View>
</View>
)
})
@@ -40,10 +40,9 @@
}
.order_list_scroll{
margin-top: 30px;
.order_list_item {
display: flex;
&:nth-child(2) {
&:nth-child(n + 2) {
margin-top: 30px;
}
.order_list_item_img{
@@ -82,7 +81,6 @@
.order_list_item_count{
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-end;
.count_num{
color: $color_main;
@@ -59,7 +59,7 @@ export default memo(({order, comfirm = false}:Param) => {
//获取面料数组
const list = useMemo(() => {
return order?.quality_check_pass_product.length > 0?order?.quality_check_pass_product:order?.product_list
return order?.quality_check_pass_product?.length > 0?order?.quality_check_pass_product:order?.product_list
}, [order])
//售后单状态枚举
@@ -75,82 +75,49 @@ export default memo(({order, comfirm = false}:Param) => {
} = AFTER_ORDER_STATUS
//退款状态枚举
const {
ShouldCollectOrderRefundTypeUnknown,
ShouldCollectOrderRefundTypeAdvanceReceiptRefund,
ShouldCollectOrderRefundTypeReturnForRefund,
ShouldCollectOrderRefundTypeSalesRefund,
} = REFUND_STATUS
// const {
// ShouldCollectOrderRefundTypeUnknown,
// ShouldCollectOrderRefundTypeAdvanceReceiptRefund,
// ShouldCollectOrderRefundTypeReturnForRefund,
// ShouldCollectOrderRefundTypeSalesRefund,
// } = REFUND_STATUS
//金额列表枚举
const priceList = [
{
id:5,
big_value:[
ReturnStageQualityCheckPendingRefund.value,
ReturnStageServiceOrderPendingRefund.value,
ReturnStageReturned.value,
],
cut_value: [ReturnStageRejected.value,
ReturnStageApplying.value,
ReturnStageWaitCheck.value,
ReturnStageChecked.value,
ReturnStageQualityCheckPendingRefund.value,
ReturnStageServiceOrderPendingRefund.value,
ReturnStageReturned.value,
ReturnStageCancel.value
],
model_value: [
ReturnStageApplying.value,
ReturnStageWaitCheck.value,
ReturnStageChecked.value,
ReturnStageQualityCheckPendingRefund.value,
ReturnStageServiceOrderPendingRefund.value,
ReturnStageReturned.value,
ReturnStageCancel.value
],
value: [ReturnStageReturned.value],
label:'合计金额',
field: 'total_refund_amount',
message: '按原单价*退货重量的金额'
message: '按原单价*退货重量的金额',
},
{
id:1,
big_value:[ReturnStageReturned.value],
cut_value: [ReturnStageServiceOrderPendingRefund.value, ReturnStageReturned.value],
model_value: [],
value: [ReturnStageReturned.value],
label:'扣款金额',
field: 'other_deduction_amount',
message: '本次售后扣款金额'
},
{
id:3,
big_value:[ReturnStageReturned.value],
cut_value: [ReturnStageReturned.value],
model_value: [ReturnStageReturned.value],
value: [ReturnStageReturned.value],
label:'退款金额',
field: 'refund_amount',
message: '本次售后应退款金额'
},
{
id:4,
big_value:[ReturnStageReturned.value],
cut_value: [ReturnStageReturned.value],
model_value: [ReturnStageReturned.value],
value: [ReturnStageReturned.value],
label:'退款去向',
field: 'refund_flow_name',
message: '本次售后应退款金额'
message: '本次售后退款金额去向'
},
]
//是否显示价格
const showPrice = useCallback((priceInfo) => {
let key = ['big_value', 'model_value', 'cut_value']
if(priceInfo.id == 5) {
return priceInfo[key[order?.sale_mode]].includes(order?.stage)||(order.refund_type == ShouldCollectOrderRefundTypeSalesRefund.value)
} else {
return priceInfo[key[order?.sale_mode]].includes(order?.stage)
}
return priceInfo.value.includes(order?.stage)
}, [order])
const priceConDom = useMemo(() => {
@@ -159,7 +126,7 @@ export default memo(({order, comfirm = false}:Param) => {
<>
{
priceList.map(item => {
return <>{showPrice(item)&&<EstimatedAmount messageTitle={item.message} key={item.id} number={order[item.field]} title={item.label} />}</>
return <>{showPrice(item)&&<EstimatedAmount messageTitle={item.message} key={item.id} number={order[item.field]} numberFormat={item.id == 4?'text': 'number'} title={item.label} />}</>
})
}
</>
@@ -175,6 +142,11 @@ export default memo(({order, comfirm = false}:Param) => {
const sale_price_show = useMemo(() => {
return order?.stage != ReturnStageServiceOrderPendingRefund.value && order?.stage != ReturnStageQualityCheckPendingRefund.value
}, [order])
//销售价格
const formatPrice = useCallback((colorItem) => {
return (ReturnStageReturned.value == order?.stage) && <View className={styles.count_price}><text>¥</text>{formatPriceDiv(colorItem.estimate_amount, {} , true)}</View>
}, [order])
return (
<View className={styles.kindsList_main}>
@@ -204,7 +176,7 @@ export default memo(({order, comfirm = false}:Param) => {
</View>
<View className={styles.order_list_item_count}>
<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>
{formatPrice(colorItem)}
</View>
</View>
</View>