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 && (
)}
>
);
}