import React, { useMemo, useRef, useState } from "react";
// --- Utility helpers ---
const skuCatalog = [
{ key: "paws", en: "Chicken paws/feet", zh: "鸡爪" },
{ key: "wing_tips", en: "Wing tips", zh: "翅尖" },
{ key: "wing_mids", en: "Wing mids (drummettes/flats)", zh: "翅中" },
{ key: "leg_quarters", en: "Leg quarters", zh: "鸡腿四分体" },
{ key: "drumsticks", en: "Drumsticks", zh: "琵琶腿/小腿" },
{ key: "boneless_thigh", en: "Boneless thigh / MDM", zh: "去骨鸡腿肉/机械分离肉" },
{ key: "gizzards", en: "Gizzards", zh: "鸡胗" },
{ key: "hearts", en: "Hearts", zh: "鸡心" },
{ key: "livers", en: "Livers", zh: "鸡肝" },
{ key: "whole_birds", en: "Whole birds", zh: "整鸡" },
{ key: "other", en: "Other (specify in Notes)", zh: "其他(请在备注中说明)" },
];
const formatOptions = [
"IQF / 分块速冻",
"Block-frozen / 整块冷冻",
];
const brandOptions = [
"US Brand / 美国品牌",
"Private Label / 贴牌",
"Either / 均可",
];
const incoterms = [
"FOB / 离岸价",
"CFR / 成本加运费",
"CIF / 到岸价",
];
const portOptions = [
"Shenzhen/Yantian 深圳/盐田",
"Xiamen 厦门",
"Shanghai 上海",
"Qingdao 青岛",
"Tianjin 天津",
"Ningbo 宁波",
"Guangzhou/Nansha 广州/南沙",
];
const packagingWeights = [
"10 kg",
"15 kg",
"18 kg",
"20 kg",
"25 kg",
"30 lb (13.6 kg)",
];
const paymentTerms = [
"L/C at sight 即期信用证",
"D/P 付款交单",
"T/T 电汇",
"D/A 承兑交单",
"30% T/T deposit + 70% against B/L 预付30%电汇+凭提单付70%",
];
const endUseOptions = [
"Further processing / 深加工",
"Foodservice / 餐饮服务",
"Retail / 零售",
];
const certOptions = [
"Halal / 清真",
"Kosher / 犹太",
"None / 无",
"Other (specify) / 其他(说明)",
];
const regionPrefs = [
"Southeast / 美国东南部",
"Midwest / 美国中西部",
"Arkansas / 阿肯色",
"Georgia / 乔治亚",
"No preference / 无偏好",
];
function Section({ title, subtitle, children }) {
return (
);
}
function Label({ children, required }) {
return (
);
}
function Input({ ...props }) {
return (
);
}
function Select({ options, placeholder, multiple, value, onChange }) {
return (
);
}
function Textarea(props) {
return (
);
}
export default function ExportQuestionnaire() {
const [form, setForm] = useState({
skus: [],
sizeSpecs: "",
endUse: "",
brand: "",
gacc: "",
certs: [],
certsOther: "",
format: "",
packagingWeight: "",
targetPorts: [],
incoterm: "",
monthlyVolume: "",
startDate: "",
payment: "",
priceRangeCIF: "",
competitors: "",
regionPref: "",
sustainability: "",
generalNotes: "",
});
const jsonPreview = useMemo(() => JSON.stringify(form, null, 2), [form]);
const downloadRef = useRef(null);
const toggleSet = (key, value) => {
setForm((prev) => {
const set = new Set(prev[key]);
set.has(value) ? set.delete(value) : set.add(value);
return { ...prev, [key]: Array.from(set) };
});
};
const onSubmit = (e) => {
e.preventDefault();
// Basic required field checks
const required = [
["skus", form.skus.length > 0],
["endUse", !!form.endUse],
["brand", !!form.brand],
["format", !!form.format],
["incoterm", !!form.incoterm],
["payment", !!form.payment],
];
const missing = required.filter(([, ok]) => !ok).map(([k]) => k);
if (missing.length) {
alert(
`Please complete required fields: ${missing.join(", ")}.\n请填写必填项:${missing.join(", ")}`
);
return;
}
alert("Thanks! Your responses are collected below in the JSON preview.\n感谢填写!JSON 预览中已汇总您的答案。");
};
const copyJSON = async () => {
await navigator.clipboard.writeText(jsonPreview);
alert("JSON copied to clipboard. 已复制到剪贴板。");
};
const downloadCSV = () => {
const flat = {
skus: form.skus.join("; "),
sizeSpecs: form.sizeSpecs,
endUse: form.endUse,
brand: form.brand,
gacc: form.gacc,
certs: form.certs.join("; ") + (form.certsOther ? `; Other:${form.certsOther}` : ""),
format: form.format,
packagingWeight: form.packagingWeight,
targetPorts: form.targetPorts.join("; "),
incoterm: form.incoterm,
monthlyVolume: form.monthlyVolume,
startDate: form.startDate,
payment: form.payment,
priceRangeCIF: form.priceRangeCIF,
competitors: form.competitors,
regionPref: form.regionPref,
sustainability: form.sustainability,
generalNotes: form.generalNotes,
};
const headers = Object.keys(flat);
const csv = [headers.join(","), headers.map((h) => `"${String(flat[h]).replaceAll('"', '""')}"`).join(",")].join("\n");
const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "us-china-poultry-questionnaire.csv";
a.click();
URL.revokeObjectURL(url);
};
return (
{/* JSON Preview */}
);
}
{title}
{subtitle}
{children}
US→China Poultry Export Questionnaire / 美对华家禽出口问卷
Fill in the form below. 必填项标记为 * 。
Response Preview / 回答预览 (JSON)
{jsonPreview}
