// Module configuration screen — KPI process tree on left, dense form on right. // Form fields mirror the structural pattern in 模块 1.png but with original copy. const moduleSections = [ { title: "估价管理流程", processes: [ { id: "01", code: "01/04", label: "【新增】新报价单", active: true }, { id: "02", code: "02/04", label: "审核报价单->客户确认->二次确认" }, { id: "03", code: "03/04", label: "客户确认->二次确认" }, { id: "04", code: "04/04", label: "报价单->销售订单" }, { id: "05", code: "04/04", label: "报价单->转拼版单" }, { id: "06", code: "04/07", label: "主管审核报价单" }, { id: "07", code: "05/07", label: "业务确认报价单" }, ], }, { title: "订单生产流程", collapsed: true }, { title: "自动拼版流程", collapsed: true }, { title: "销售送货流程", collapsed: true }, { title: "物料采购流程", collapsed: true }, { title: "物料领用流程", collapsed: true }, { title: "发外加工流程", collapsed: true }, { title: "质量管理流程", collapsed: true }, { title: "财务收付款流程", collapsed: true }, ]; const ModuleScreen = () => { const [mode, setMode] = React.useState("view"); // 'view' | 'edit' const [activeProcess] = React.useState("01"); const initial = { displayCategory: "印刷业务", deptEn: "Pricing Personnel", deptCn: "报价员", permissionVisible: true, seq: "1", saveProc: "Sp_Check_sQtt", storageUrl: "/indexPage/quotationPackTl...", showOpt: false, nodes: "-1752556899000998290E", deptId: "", flowId: "20250303094458291296...", uniqueId: "10125124011501607650...", flowEnName: "", flowReqName: "", titleCn: "01/04【新增】新报价单", mobileLogo: "", nameEn: "Quotation Document", nameNotice: "常规产品报价单据", showCategory: "待处理", deptManager: "报价人员", storeProc: "Sp_Calc_sQtt", quickShow: "", addId: "", modType: "quotation/quotation/quotati", calcProc: "Sp_Quotation_CalcDataPac", saveAfterProc: "Sp_beforeSave_sQtt", parent: "1752562484000281572E", }; const [form, setForm] = React.useState(initial); const set = (k, v) => setForm((s) => ({ ...s, [k]: v })); const startEdit = () => setMode("edit"); const save = () => { setMode("view"); }; const cancel = () => { setForm(initial); setMode("view"); }; const disabled = mode === "view"; return (