import { View } from '@tarojs/components' import React, { useCallback, memo, useEffect, useMemo, useRef, useState, ReactNode } from 'react' import styles from "./index.module.scss" import classnames from "classnames"; import Taro, { usePullDownRefresh, useRouter, useDidShow } from '@tarojs/taro'; import AddressDetailBox from '../orderDetails/components/addressDetailBox' import Remark from '../orderDetails/components//remark' import Popup from '@/components/popup' import { debounce } from '@/common/util' import { mpsaleOrderpreView, mpsaleOrderput, mpsaleOrderaddress } from '@/api/order' import { alert } from '@/common/common' import { formatPriceDiv, formatDateTime, formatWeightDiv } from '@/common/format' export default () => { const router: any = useRouter() useDidShow(() => { getDetail() }) //页面下拉刷新 usePullDownRefresh(() => { getDetail() }) //收货方法,1:自提,2物流 const [receivingStatus, setReceivingStatus] = useState(null) //切换自提或者物流 const { fetchData: selectFetch } = mpsaleOrderaddress() const onReceivingStatus = debounce(async (e, value) => { if (infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5) { alert.error('不允许更改') return false } e.stopPropagation() if (receivingStatus === value) { alert.error('不能选择相同的方式') return false } Taro.showLoading({ title: '请稍等...', mask: true }) const res = await selectFetch({ id: Number(infoObj.id), shipment_mode: value }) if (res.msg === 'success') { Taro.hideLoading() Taro.showToast({ title: '成功', icon: 'success' }) setReceivingStatus(value) } else { Taro.hideLoading() Taro.showToast({ title: res.msg, icon: 'error' }) } }, 300) const { fetchData: infoFetch } = mpsaleOrderpreView() const [infoObj, setInfoObj] = useState({}) //获取订单详情 const getDetail = async () => { let list: any[] = [] router.params?.shopping_cart_product_color_list?.forEach(item => { list.push({ shopping_cart_product_color_id: item.shopping_cart_product_color_id, sale_price: 0 }) }) const query = { purchaser_id: router.params.purchaser_id, sale_mode: router.params.sale_mode, shopping_cart_product_color_list: list } const res = await infoFetch(query) setInfoObj(res.data) setReceivingStatus(res.data.shipment_mode) } //备注操作 const [showDesc, setShowDesc] = useState(false) const { fetchData: remarkFetch } = mpsaleOrderput() const getRemark = useCallback(async (e) => { const res = await remarkFetch({ remark: e, id: Number(router.params.id) }) if (res.msg === 'success') { Taro.showToast({ title: '成功', icon: 'success' }) setShowDesc(false) getDetail() } }, []) const handSelect = (obj) => { Taro.navigateTo({ url: '/pages/addressManager/index?orderId=' + obj.id + '&purchaser_id=' + obj.purchaser_id }) } return ( handSelect(obj)} obj={infoObj} receivingStatus={receivingStatus} onReceivingStatus={(e, value) => onReceivingStatus(e, value)} > {infoObj.purchaser_name} {infoObj.purchaser_phone} {infoObj.total_fabrics} 种面料,{infoObj.total_colors} 个颜色,共 {infoObj.sale_mode === 0 ? infoObj.total_number : infoObj.total_number / 100} {infoObj.sale_mode === 0 ? '条' : 'm'} 合计金额 {formatPriceDiv(infoObj.total_should_collect_money)} `} clickNode={() => setShowDesc(true)}> {infoObj.remark === '' ? '暂无' : infoObj.remark} setShowDesc(false)}> getRemark(e)} defaultValue={infoObj.remark} /> 预估金额: ¥3564.00 3 种面料,3 种颜色,共 3 M 提交订单 ) } //卡片盒子元素 interface Obs { title?: string, modeName?: string, showMode?: boolean, children?: ReactNode, clickNode?: () => void } const DefaultBox = memo((props: Obs) => { const { title = '标题', modeName = '大货', showMode = false, children, clickNode } = props return ( {title} { showMode && clickNode?.()}>{modeName} } {children} ) }) //产品商品元素 interface PropGoods { // item?: { // code?: string | number // } list: any[], obj: { sale_mode?: number | string }, } const GoodsItem = memo((porps: PropGoods) => { const { list = [], obj = {} } = porps return ( <> { list.map((item, index) => { return ( {item.code}# {item.name} { item.product_colors.map((it, inx) => { return ( {it.code}# {it.name} x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} ¥{it.sale_price / 100}/{obj?.sale_mode === 0 ? '条' : 'm'} ¥{formatPriceDiv(it.total_sale_price)} ) }) } ) }) } ) })