import { ScrollView, Text, View } from "@tarojs/components"; import { Button, Input, Popup, SafeArea } from "@nutui/nutui-react-taro"; import dayjs from "dayjs"; import { formatCurrency } from "@/utils/format"; import { useState } from "react"; export default function BasicInfoSection(props: { purchaseOrderVO: BusinessAPI.PurchaseOrderVO; onChange?: (purchaseOrderVO: BusinessAPI.PurchaseOrderVO) => void; readOnly?: boolean; }) { const { purchaseOrderVO, onChange, readOnly } = props; const { orderVehicle } = purchaseOrderVO; // 弹窗可见状态 const [visiblePopup, setVisiblePopup] = useState({ basicInfo: false, // 基础信息弹窗 }); // 编辑值的状态(用于弹窗中的临时编辑) const [editValues, setEditValues] = useState({ vehicleNo: orderVehicle?.vehicleNo || "", origin: orderVehicle?.origin || "", destination: orderVehicle?.destination || "", deliveryTime: orderVehicle?.deliveryTime || "", plate: orderVehicle?.plate || "", phone: orderVehicle?.phone || "", priceType: orderVehicle?.priceType || "MAIN_FREIGHT", price: orderVehicle?.price || 0, openStrawCurtain: orderVehicle?.openStrawCurtain || false, strawCurtainPrice: orderVehicle?.strawCurtainPrice || 0, }); // 打开基础信息弹窗 const openBasicInfoPopup = () => { if (readOnly) return; setEditValues({ vehicleNo: orderVehicle?.vehicleNo || "", origin: orderVehicle?.origin || "", destination: orderVehicle?.destination || "", deliveryTime: orderVehicle?.deliveryTime || "", plate: orderVehicle?.plate || "", phone: orderVehicle?.phone || "", priceType: orderVehicle?.priceType || "MAIN_FREIGHT", price: orderVehicle?.price || 0, openStrawCurtain: orderVehicle?.openStrawCurtain || false, strawCurtainPrice: orderVehicle?.strawCurtainPrice || 0, }); setVisiblePopup((prev) => ({ ...prev, basicInfo: true })); }; // 保存基础信息 const saveBasicInfo = () => { if (onChange) { const updatedOrder = { ...purchaseOrderVO, orderVehicle: { ...orderVehicle, ...editValues, deliveryTime: editValues.deliveryTime, price: Number(editValues.price), strawCurtainPrice: Number(editValues.strawCurtainPrice), }, }; onChange(updatedOrder); } setVisiblePopup((prev) => ({ ...prev, basicInfo: false })); }; return ( <> {/* 基础信息编辑弹窗 */} setVisiblePopup((prev) => ({ ...prev, basicInfo: false })) } onOverlayClick={() => { setVisiblePopup((prev) => ({ ...prev, basicInfo: false })); }} lockScroll > 本车次号 { setEditValues((prev) => ({ ...prev, vehicleNo: value, })); }} /> 发货地 { setEditValues((prev) => ({ ...prev, origin: value, })); }} /> 收货地 { setEditValues((prev) => ({ ...prev, destination: value, })); }} /> 发货日期 { setEditValues((prev) => ({ ...prev, deliveryTime: value, })); }} /> 车牌号 { setEditValues((prev) => ({ ...prev, plate: value, })); }} /> 联系电话 { setEditValues((prev) => ({ ...prev, phone: value, })); }} /> 运费类型 { setEditValues((prev) => ({ ...prev, priceType: "MAIN_FREIGHT", })); }} > 主运费 { setEditValues((prev) => ({ ...prev, priceType: "SHORT_TRANSPORT", })); }} > 短驳费 运费(元) { setEditValues((prev) => ({ ...prev, price: parseFloat(value) || 0, })); }} /> 草帘费 { setEditValues((prev) => ({ ...prev, openStrawCurtain: true, })); }} > 开启 { setEditValues((prev) => ({ ...prev, openStrawCurtain: false, })); }} > 关闭 {editValues.openStrawCurtain && ( <> 草帘费金额(元) { setEditValues((prev) => ({ ...prev, strawCurtainPrice: parseFloat(value) || 0, })); }} /> )} 本车次号 {orderVehicle?.vehicleNo || "请填写"} 发货地 {orderVehicle?.origin || "请填写"} 收货地 {orderVehicle?.destination || "请填写"} 发货日期 {orderVehicle?.deliveryTime ? dayjs(orderVehicle.deliveryTime).format("YYYY年MM月DD日") : "请填写"} 车牌号 {orderVehicle?.plate || "请填写"} 联系电话 {orderVehicle?.phone || "请填写"} 运费类型 {orderVehicle?.priceType === "MAIN_FREIGHT" ? "主运费" : orderVehicle?.priceType === "SHORT_TRANSPORT" ? "短驳费" : "请选择"} 运费(元) {formatCurrency(orderVehicle?.price || 0)} {purchaseOrderVO.orderDealer && ( {purchaseOrderVO.orderDealer.freightCostFlag ? "计入成本" : "不计入成本"} )} 草帘费 {orderVehicle?.openStrawCurtain ? "开启" : "关闭"} {orderVehicle?.openStrawCurtain && ( 草帘费金额(元) {formatCurrency(orderVehicle?.strawCurtainPrice || 0)} {purchaseOrderVO.orderDealer && ( {purchaseOrderVO.orderDealer.strawMatCostFlag ? "计入成本" : "不计入成本"} )} )} {!readOnly && ( )} ); }