{"ast":null,"code":"var _jsxFileName = \"/Users/nili/Documents/trae_projects/client/src/pages/ProjectDetail.js\",\n  _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Card, Descriptions, Tag, Button, Space, Modal, Form, Input, Select, DatePicker, message, Tabs, List, Timeline, Table, Popconfirm, Progress, Row, Col, Upload, Spin, Alert, Collapse } from 'antd';\nimport { ArrowLeftOutlined, EditOutlined, PlusOutlined, CheckOutlined, CloseOutlined, UploadOutlined, FileTextOutlined, DeleteOutlined, DownloadOutlined, AnalyzeOutlined, ReloadOutlined } from '@ant-design/icons';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { projectsAPI, usersAPI, investorsAPI } from '../services/api';\nimport { useAuth } from '../contexts/AuthContext';\nimport dayjs from 'dayjs';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst {\n  Option\n} = Select;\nconst {\n  TextArea\n} = Input;\nconst ProjectDetail = () => {\n  _s();\n  const {\n    id\n  } = useParams();\n  const navigate = useNavigate();\n  const {\n    isInvestmentManager\n  } = useAuth();\n  const [project, setProject] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [users, setUsers] = useState([]);\n  const [investors, setInvestors] = useState([]);\n  const [documents, setDocuments] = useState([]);\n  const [documentsLoading, setDocumentsLoading] = useState(false);\n  const [uploading, setUploading] = useState(false);\n  useEffect(() => {\n    fetchProject();\n    fetchUsers();\n    fetchInvestors();\n    fetchDocuments();\n  }, [id]);\n  const fetchProject = async () => {\n    setLoading(true);\n    try {\n      const response = await projectsAPI.getOne(id);\n      setProject(response.data);\n    } catch (error) {\n      message.error('获取项目详情失败');\n    } finally {\n      setLoading(false);\n    }\n  };\n  const fetchUsers = async () => {\n    try {\n      const response = await usersAPI.getAll({\n        limit: 100\n      });\n      setUsers(response.data.users);\n    } catch (error) {\n      console.error('获取用户列表失败:', error);\n    }\n  };\n  const fetchInvestors = async () => {\n    try {\n      const response = await investorsAPI.getAll({\n        limit: 100\n      });\n      setInvestors(response.data.investors);\n    } catch (error) {\n      console.error('获取投资者列表失败:', error);\n    }\n  };\n  const getStatusColor = status => {\n    const colors = {\n      draft: 'default',\n      active: 'green',\n      completed: 'blue',\n      pending: 'orange',\n      paused: 'red'\n    };\n    return colors[status] || 'default';\n  };\n  const getStatusText = status => {\n    const texts = {\n      draft: '草稿',\n      active: '进行中',\n      completed: '已完成',\n      pending: '待审批',\n      paused: '已暂停'\n    };\n    return texts[status] || status;\n  };\n  const getPriorityColor = priority => {\n    const colors = {\n      high: 'red',\n      medium: 'orange',\n      low: 'blue'\n    };\n    return colors[priority] || 'default';\n  };\n  const [taskModalVisible, setTaskModalVisible] = useState(false);\n  const [milestoneModalVisible, setMilestoneModalVisible] = useState(false);\n  const [updateModalVisible, setUpdateModalVisible] = useState(false);\n  const [investorModalVisible, setInvestorModalVisible] = useState(false);\n  const [taskForm] = Form.useForm();\n  const [milestoneForm] = Form.useForm();\n  const [updateForm] = Form.useForm();\n  const [investorForm] = Form.useForm();\n  const handleAddTask = async () => {\n    try {\n      const values = await taskForm.validateFields();\n      await projectsAPI.addTask(id, {\n        ...values,\n        dueDate: values.dueDate ? values.dueDate.format('YYYY-MM-DD') : null\n      });\n      message.success('任务创建成功');\n      setTaskModalVisible(false);\n      taskForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('创建任务失败');\n    }\n  };\n  const handleUpdateTaskStatus = async (taskId, status) => {\n    try {\n      await projectsAPI.updateTask(id, taskId, {\n        status,\n        completedAt: status === 'completed' ? new Date().toISOString() : null\n      });\n      message.success('任务状态更新成功');\n      fetchProject();\n    } catch (error) {\n      message.error('更新任务失败');\n    }\n  };\n  const handleAddMilestone = async () => {\n    try {\n      const values = await milestoneForm.validateFields();\n      await projectsAPI.addMilestone(id, {\n        ...values,\n        plannedDate: values.plannedDate ? values.plannedDate.format('YYYY-MM-DD') : null\n      });\n      message.success('里程碑创建成功');\n      setMilestoneModalVisible(false);\n      milestoneForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('创建里程碑失败');\n    }\n  };\n  const handleAddUpdate = async () => {\n    try {\n      const values = await updateForm.validateFields();\n      await projectsAPI.addUpdate(id, values);\n      message.success('项目更新创建成功');\n      setUpdateModalVisible(false);\n      updateForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('创建项目更新失败');\n    }\n  };\n  const handleAddInvestor = async () => {\n    try {\n      const values = await investorForm.validateFields();\n      await projectsAPI.addInvestor(id, {\n        ...values,\n        investmentDate: values.investmentDate ? values.investmentDate.format('YYYY-MM-DD') : null\n      });\n      message.success('投资者添加成功');\n      setInvestorModalVisible(false);\n      investorForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('添加投资者失败');\n    }\n  };\n  const handleRemoveInvestor = async investorId => {\n    try {\n      await projectsAPI.removeInvestor(id, investorId);\n      message.success('投资者已移除');\n      fetchProject();\n    } catch (error) {\n      message.error('移除投资者失败');\n    }\n  };\n  const fetchDocuments = async () => {\n    setDocumentsLoading(true);\n    try {\n      const response = await projectsAPI.getDocuments(id);\n      setDocuments(response.data.documents || []);\n    } catch (error) {\n      console.error('获取文档列表失败:', error);\n    } finally {\n      setDocumentsLoading(false);\n    }\n  };\n  const handleUpload = async file => {\n    setUploading(true);\n    try {\n      const response = await projectsAPI.uploadDocument(id, file);\n      message.success('文件上传成功');\n      fetchDocuments();\n      setTimeout(fetchDocuments, 2000);\n    } catch (error) {\n      var _error$response, _error$response$data;\n      message.error(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.message) || '文件上传失败');\n    } finally {\n      setUploading(false);\n    }\n    return false;\n  };\n  const handleDownload = async (docId, fileName) => {\n    try {\n      const response = await projectsAPI.downloadDocument(id, docId);\n      const url = window.URL.createObjectURL(new Blob([response.data]));\n      const link = document.createElement('a');\n      link.href = url;\n      link.setAttribute('download', fileName);\n      document.body.appendChild(link);\n      link.click();\n      link.remove();\n    } catch (error) {\n      message.error('文件下载失败');\n    }\n  };\n  const handleAnalyze = async docId => {\n    try {\n      await projectsAPI.analyzeDocument(id, docId);\n      message.success('文件分析已启动');\n      fetchDocuments();\n      setTimeout(fetchDocuments, 2000);\n    } catch (error) {\n      message.error('文件分析失败');\n    }\n  };\n  const handleDeleteDocument = async docId => {\n    try {\n      await projectsAPI.deleteDocument(id, docId);\n      message.success('文档删除成功');\n      fetchDocuments();\n    } catch (error) {\n      message.error('文档删除失败');\n    }\n  };\n  const getAnalysisStatusTag = status => {\n    const statusMap = {\n      pending: {\n        color: 'default',\n        text: '待分析'\n      },\n      analyzing: {\n        color: 'blue',\n        text: '分析中'\n      },\n      completed: {\n        color: 'green',\n        text: '分析完成'\n      },\n      error: {\n        color: 'red',\n        text: '分析失败'\n      }\n    };\n    const info = statusMap[status] || {\n      color: 'default',\n      text: status\n    };\n    return /*#__PURE__*/_jsxDEV(Tag, {\n      color: info.color,\n      children: info.text\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 288,\n      columnNumber: 12\n    }, this);\n  };\n  const renderAnalysisResult = document => {\n    if (!document.analysis_result) return null;\n    try {\n      var _result$keywords, _result$recommendatio;\n      const result = JSON.parse(document.analysis_result);\n      if (result.error) {\n        return /*#__PURE__*/_jsxDEV(Alert, {\n          type: \"error\",\n          message: \"\\u5206\\u6790\\u5931\\u8D25\",\n          description: result.message\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 296,\n          columnNumber: 16\n        }, this);\n      }\n      return /*#__PURE__*/_jsxDEV(Collapse, {\n        ghost: true,\n        children: /*#__PURE__*/_jsxDEV(Collapse.Panel, {\n          header: \"\\u6587\\u4EF6\\u5206\\u6790\\u62A5\\u544A\",\n          children: [/*#__PURE__*/_jsxDEV(Descriptions, {\n            column: 1,\n            size: \"small\",\n            children: [/*#__PURE__*/_jsxDEV(Descriptions.Item, {\n              label: \"\\u6587\\u4EF6\\u7C7B\\u578B\",\n              children: result.fileType\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 302,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n              label: \"\\u6587\\u4EF6\\u5927\\u5C0F\",\n              children: result.fileSizeFormatted\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 303,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n              label: \"\\u5206\\u6790\\u6458\\u8981\",\n              children: result.summary\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 304,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 301,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n            style: {\n              marginTop: 12\n            },\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"\\u5173\\u952E\\u8BCD\\uFF1A\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 307,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Space, {\n              style: {\n                marginLeft: 8\n              },\n              children: (_result$keywords = result.keywords) === null || _result$keywords === void 0 ? void 0 : _result$keywords.map((kw, i) => /*#__PURE__*/_jsxDEV(Tag, {\n                color: \"blue\",\n                children: kw\n              }, i, false, {\n                fileName: _jsxFileName,\n                lineNumber: 309,\n                columnNumber: 50\n              }, this))\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 308,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 306,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n            style: {\n              marginTop: 12\n            },\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"\\u5EFA\\u8BAE\\uFF1A\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 313,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(\"ul\", {\n              style: {\n                marginTop: 8,\n                paddingLeft: 20\n              },\n              children: (_result$recommendatio = result.recommendations) === null || _result$recommendatio === void 0 ? void 0 : _result$recommendatio.map((rec, i) => /*#__PURE__*/_jsxDEV(\"li\", {\n                children: rec\n              }, i, false, {\n                fileName: _jsxFileName,\n                lineNumber: 315,\n                columnNumber: 58\n              }, this))\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 314,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 312,\n            columnNumber: 13\n          }, this)]\n        }, \"1\", true, {\n          fileName: _jsxFileName,\n          lineNumber: 300,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 299,\n        columnNumber: 9\n      }, this);\n    } catch (e) {\n      return /*#__PURE__*/_jsxDEV(Alert, {\n        type: \"warning\",\n        message: \"\\u65E0\\u6CD5\\u89E3\\u6790\\u5206\\u6790\\u7ED3\\u679C\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 322,\n        columnNumber: 14\n      }, this);\n    }\n  };\n  if (loading) return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: \"\\u52A0\\u8F7D\\u4E2D...\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 326,\n    columnNumber: 23\n  }, this);\n  if (!project) return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: \"\\u9879\\u76EE\\u4E0D\\u5B58\\u5728\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 327,\n    columnNumber: 24\n  }, this);\n  const taskColumns = [{\n    title: '任务标题',\n    dataIndex: 'title',\n    key: 'title'\n  }, {\n    title: '描述',\n    dataIndex: 'description',\n    key: 'description'\n  }, {\n    title: '优先级',\n    dataIndex: 'priority',\n    key: 'priority',\n    render: p => /*#__PURE__*/_jsxDEV(Tag, {\n      color: getPriorityColor(p),\n      children: p === 'high' ? '高' : p === 'medium' ? '中' : '低'\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 336,\n      columnNumber: 22\n    }, this)\n  }, {\n    title: '负责人',\n    dataIndex: 'assigned_to_name',\n    key: 'assigned_to_name'\n  }, {\n    title: '截止日期',\n    dataIndex: 'due_date',\n    key: 'due_date',\n    render: d => d ? dayjs(d).format('YYYY-MM-DD') : '-'\n  }, {\n    title: '状态',\n    dataIndex: 'status',\n    key: 'status',\n    render: (status, record) => /*#__PURE__*/_jsxDEV(Space, {\n      children: [/*#__PURE__*/_jsxDEV(Tag, {\n        color: status === 'completed' ? 'green' : status === 'in_progress' ? 'blue' : 'default',\n        children: status === 'completed' ? '已完成' : status === 'in_progress' ? '进行中' : '待处理'\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 351,\n        columnNumber: 11\n      }, this), isInvestmentManager() && status !== 'completed' && /*#__PURE__*/_jsxDEV(Button, {\n        type: \"text\",\n        size: \"small\",\n        icon: /*#__PURE__*/_jsxDEV(CheckOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 355,\n          columnNumber: 52\n        }, this),\n        onClick: () => handleUpdateTaskStatus(record.id, 'completed')\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 355,\n        columnNumber: 13\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 350,\n      columnNumber: 9\n    }, this)\n  }];\n  const investorColumns = [{\n    title: '投资者',\n    dataIndex: 'investor_name',\n    key: 'investor_name'\n  }, {\n    title: '投资金额',\n    dataIndex: 'investment_amount',\n    key: 'investment_amount',\n    render: a => a ? `¥${a.toLocaleString()}` : '-'\n  }, {\n    title: '股权比例',\n    dataIndex: 'equity_ratio',\n    key: 'equity_ratio',\n    render: r => r ? `${r}%` : '-'\n  }, {\n    title: '投资日期',\n    dataIndex: 'investment_date',\n    key: 'investment_date',\n    render: d => d ? dayjs(d).format('YYYY-MM-DD') : '-'\n  }, {\n    title: '操作',\n    key: 'actions',\n    render: (_, record) => isInvestmentManager() && /*#__PURE__*/_jsxDEV(Popconfirm, {\n      title: \"\\u786E\\u5B9A\\u79FB\\u9664\\u8BE5\\u6295\\u8D44\\u8005?\",\n      onConfirm: () => handleRemoveInvestor(record.investor_id),\n      children: /*#__PURE__*/_jsxDEV(Button, {\n        type: \"text\",\n        danger: true,\n        size: \"small\",\n        children: \"\\u79FB\\u9664\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 387,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 386,\n      columnNumber: 9\n    }, this)\n  }];\n  const tabs = [{\n    key: 'overview',\n    label: '概览',\n    children: /*#__PURE__*/_jsxDEV(_Fragment, {\n      children: [/*#__PURE__*/_jsxDEV(Card, {\n        title: \"\\u57FA\\u672C\\u4FE1\\u606F\",\n        style: {\n          marginBottom: 16\n        },\n        children: [/*#__PURE__*/_jsxDEV(Descriptions, {\n          column: 2,\n          children: [/*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u9879\\u76EE\\u540D\\u79F0\",\n            children: project.project.name\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 401,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u9879\\u76EE\\u4EE3\\u7801\",\n            children: project.project.code || '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 402,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u516C\\u53F8\\u540D\\u79F0\",\n            children: project.project.company_name\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 403,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u884C\\u4E1A\",\n            children: project.project.industry ? /*#__PURE__*/_jsxDEV(Tag, {\n              color: \"blue\",\n              children: project.project.industry\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 404,\n              columnNumber: 73\n            }, this) : '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 404,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u9636\\u6BB5\",\n            children: project.project.stage ? /*#__PURE__*/_jsxDEV(Tag, {\n              color: \"cyan\",\n              children: project.project.stage\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 405,\n              columnNumber: 70\n            }, this) : '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 405,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u72B6\\u6001\",\n            children: /*#__PURE__*/_jsxDEV(Tag, {\n              color: getStatusColor(project.project.status),\n              children: getStatusText(project.project.status)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 406,\n              columnNumber: 45\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 406,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u6295\\u8D44\\u989D\",\n            children: project.project.investment_amount ? `¥${project.project.investment_amount.toLocaleString()}` : '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 407,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u4F30\\u503C\",\n            children: project.project.valuation ? `¥${project.project.valuation.toLocaleString()}` : '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 408,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u80A1\\u6743\\u6BD4\\u4F8B\",\n            children: project.project.equity_ratio ? `${project.project.equity_ratio}%` : '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 409,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u8D1F\\u8D23\\u4EBA\",\n            children: project.project.assigned_to_name || '-'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 410,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u521B\\u5EFA\\u4EBA\",\n            children: project.project.created_by_name\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 411,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n            label: \"\\u521B\\u5EFA\\u65F6\\u95F4\",\n            children: dayjs(project.project.created_at).format('YYYY-MM-DD HH:mm')\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 412,\n            columnNumber: 15\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 400,\n          columnNumber: 13\n        }, this), project.project.description && /*#__PURE__*/_jsxDEV(_Fragment, {\n          children: [/*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 416,\n            columnNumber: 17\n          }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n            children: /*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"\\u9879\\u76EE\\u63CF\\u8FF0:\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 417,\n              columnNumber: 22\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 417,\n            columnNumber: 17\n          }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n            style: {\n              marginTop: 8,\n              color: '#666'\n            },\n            children: project.project.description\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 418,\n            columnNumber: 17\n          }, this)]\n        }, void 0, true)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 399,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(Row, {\n        gutter: 16,\n        children: [/*#__PURE__*/_jsxDEV(Col, {\n          span: 12,\n          children: /*#__PURE__*/_jsxDEV(Card, {\n            title: \"\\u91CC\\u7A0B\\u7891\",\n            extra: isInvestmentManager() && /*#__PURE__*/_jsxDEV(Button, {\n              type: \"link\",\n              size: \"small\",\n              icon: /*#__PURE__*/_jsxDEV(PlusOutlined, {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 425,\n                columnNumber: 104\n              }, this),\n              onClick: () => setMilestoneModalVisible(true),\n              children: \"\\u6DFB\\u52A0\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 425,\n              columnNumber: 65\n            }, this),\n            children: /*#__PURE__*/_jsxDEV(Timeline, {\n              children: project.milestones.map(ms => /*#__PURE__*/_jsxDEV(Timeline.Item, {\n                color: ms.status === 'completed' ? 'green' : ms.status === 'in_progress' ? 'blue' : 'gray',\n                children: [/*#__PURE__*/_jsxDEV(\"div\", {\n                  style: {\n                    fontWeight: 'bold'\n                  },\n                  children: ms.name\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 432,\n                  columnNumber: 23\n                }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n                  style: {\n                    fontSize: 12,\n                    color: '#666'\n                  },\n                  children: [\"\\u8BA1\\u5212: \", ms.planned_date ? dayjs(ms.planned_date).format('YYYY-MM-DD') : '-', ms.actual_date && ` | 实际: ${dayjs(ms.actual_date).format('YYYY-MM-DD')}`]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 433,\n                  columnNumber: 23\n                }, this), ms.description && /*#__PURE__*/_jsxDEV(\"div\", {\n                  style: {\n                    fontSize: 13,\n                    marginTop: 4\n                  },\n                  children: ms.description\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 437,\n                  columnNumber: 42\n                }, this)]\n              }, ms.id, true, {\n                fileName: _jsxFileName,\n                lineNumber: 428,\n                columnNumber: 21\n              }, this))\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 426,\n              columnNumber: 17\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 425,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 424,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(Col, {\n          span: 12,\n          children: /*#__PURE__*/_jsxDEV(Card, {\n            title: \"\\u9879\\u76EE\\u52A8\\u6001\",\n            extra: isInvestmentManager() && /*#__PURE__*/_jsxDEV(Button, {\n              type: \"link\",\n              size: \"small\",\n              icon: /*#__PURE__*/_jsxDEV(PlusOutlined, {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 444,\n                columnNumber: 105\n              }, this),\n              onClick: () => setUpdateModalVisible(true),\n              children: \"\\u6DFB\\u52A0\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 444,\n              columnNumber: 66\n            }, this),\n            children: /*#__PURE__*/_jsxDEV(List, {\n              dataSource: project.updates,\n              renderItem: update => /*#__PURE__*/_jsxDEV(List.Item, {\n                children: /*#__PURE__*/_jsxDEV(List.Item.Meta, {\n                  title: /*#__PURE__*/_jsxDEV(\"span\", {\n                    style: {\n                      fontWeight: 500\n                    },\n                    children: update.title\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 450,\n                    columnNumber: 32\n                  }, this),\n                  description: /*#__PURE__*/_jsxDEV(\"div\", {\n                    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n                      style: {\n                        fontSize: 12,\n                        color: '#999',\n                        marginBottom: 4\n                      },\n                      children: [update.created_by_name, \" \\xB7 \", dayjs(update.created_at).format('YYYY-MM-DD HH:mm')]\n                    }, void 0, true, {\n                      fileName: _jsxFileName,\n                      lineNumber: 453,\n                      columnNumber: 29\n                    }, this), update.content]\n                  }, void 0, true, {\n                    fileName: _jsxFileName,\n                    lineNumber: 452,\n                    columnNumber: 27\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 449,\n                  columnNumber: 23\n                }, this)\n              }, update.id, false, {\n                fileName: _jsxFileName,\n                lineNumber: 448,\n                columnNumber: 21\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 445,\n              columnNumber: 17\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 444,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 443,\n          columnNumber: 13\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 423,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true)\n  }, {\n    key: 'tasks',\n    label: '任务',\n    children: /*#__PURE__*/_jsxDEV(Card, {\n      extra: isInvestmentManager() && /*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        icon: /*#__PURE__*/_jsxDEV(PlusOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 473,\n          columnNumber: 76\n        }, this),\n        onClick: () => setTaskModalVisible(true),\n        children: \"\\u6DFB\\u52A0\\u4EFB\\u52A1\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 473,\n        columnNumber: 47\n      }, this),\n      children: /*#__PURE__*/_jsxDEV(Table, {\n        columns: taskColumns,\n        dataSource: project.tasks,\n        rowKey: \"id\",\n        pagination: false\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 474,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 473,\n      columnNumber: 9\n    }, this)\n  }, {\n    key: 'investors',\n    label: '投资者',\n    children: /*#__PURE__*/_jsxDEV(Card, {\n      extra: isInvestmentManager() && /*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        icon: /*#__PURE__*/_jsxDEV(PlusOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 482,\n          columnNumber: 76\n        }, this),\n        onClick: () => setInvestorModalVisible(true),\n        children: \"\\u6DFB\\u52A0\\u6295\\u8D44\\u8005\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 482,\n        columnNumber: 47\n      }, this),\n      children: /*#__PURE__*/_jsxDEV(Table, {\n        columns: investorColumns,\n        dataSource: project.investors,\n        rowKey: \"id\",\n        pagination: false\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 483,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 482,\n      columnNumber: 9\n    }, this)\n  }, {\n    key: 'documents',\n    label: '文档',\n    children: /*#__PURE__*/_jsxDEV(Card, {\n      title: \"\\u9879\\u76EE\\u6587\\u6863\",\n      extra: isInvestmentManager() && /*#__PURE__*/_jsxDEV(Upload, {\n        beforeUpload: handleUpload,\n        showUploadList: false,\n        accept: \".pdf,.ppt,.pptx,.doc,.docx,.txt\",\n        children: /*#__PURE__*/_jsxDEV(Button, {\n          type: \"primary\",\n          icon: /*#__PURE__*/_jsxDEV(UploadOutlined, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 502,\n            columnNumber: 25\n          }, this),\n          loading: uploading,\n          children: \"\\u4E0A\\u4F20\\u6587\\u6863\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 500,\n          columnNumber: 17\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 495,\n        columnNumber: 15\n      }, this),\n      children: /*#__PURE__*/_jsxDEV(Spin, {\n        spinning: documentsLoading,\n        children: documents.length === 0 ? /*#__PURE__*/_jsxDEV(Alert, {\n          type: \"info\",\n          message: \"\\u6682\\u65E0\\u6587\\u6863\",\n          description: \"\\u60A8\\u53EF\\u4EE5\\u4E0A\\u4F20PDF\\u3001PPT\\u3001Word\\u3001TXT\\u7B49\\u683C\\u5F0F\\u7684\\u9879\\u76EE\\u4ECB\\u7ECD\\u6587\\u6863\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 513,\n          columnNumber: 15\n        }, this) : /*#__PURE__*/_jsxDEV(List, {\n          dataSource: documents,\n          renderItem: doc => /*#__PURE__*/_jsxDEV(List.Item, {\n            actions: [/*#__PURE__*/_jsxDEV(Button, {\n              type: \"link\",\n              size: \"small\",\n              icon: /*#__PURE__*/_jsxDEV(DownloadOutlined, {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 528,\n                columnNumber: 31\n              }, this),\n              onClick: () => handleDownload(doc.id, doc.name),\n              children: \"\\u4E0B\\u8F7D\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 525,\n              columnNumber: 23\n            }, this), /*#__PURE__*/_jsxDEV(Button, {\n              type: \"link\",\n              size: \"small\",\n              icon: /*#__PURE__*/_jsxDEV(AnalyzeOutlined, {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 536,\n                columnNumber: 31\n              }, this),\n              onClick: () => handleAnalyze(doc.id),\n              disabled: doc.analysis_status === 'analyzing',\n              children: doc.analysis_status === 'pending' ? '分析' : '重新分析'\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 533,\n              columnNumber: 23\n            }, this), isInvestmentManager() && /*#__PURE__*/_jsxDEV(Popconfirm, {\n              title: \"\\u786E\\u5B9A\\u8981\\u5220\\u9664\\u8FD9\\u4E2A\\u6587\\u6863\\u5417?\",\n              onConfirm: () => handleDeleteDocument(doc.id),\n              children: /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                size: \"small\",\n                danger: true,\n                icon: /*#__PURE__*/_jsxDEV(DeleteOutlined, {}, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 547,\n                  columnNumber: 73\n                }, this),\n                children: \"\\u5220\\u9664\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 547,\n                columnNumber: 27\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 543,\n              columnNumber: 25\n            }, this)].filter(Boolean),\n            children: [/*#__PURE__*/_jsxDEV(List.Item.Meta, {\n              avatar: /*#__PURE__*/_jsxDEV(FileTextOutlined, {\n                style: {\n                  fontSize: 32,\n                  color: '#1890ff'\n                }\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 555,\n                columnNumber: 31\n              }, this),\n              title: /*#__PURE__*/_jsxDEV(Space, {\n                children: [doc.name, getAnalysisStatusTag(doc.analysis_status)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 557,\n                columnNumber: 25\n              }, this),\n              description: /*#__PURE__*/_jsxDEV(\"div\", {\n                children: [/*#__PURE__*/_jsxDEV(\"span\", {\n                  style: {\n                    marginRight: 16\n                  },\n                  children: [\"\\u4E0A\\u4F20\\u8005\\uFF1A\", doc.uploaded_by_name || '未知']\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 564,\n                  columnNumber: 27\n                }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n                  style: {\n                    marginRight: 16\n                  },\n                  children: [\"\\u5927\\u5C0F\\uFF1A\", (doc.file_size / 1024 / 1024).toFixed(2), \" MB\"]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 567,\n                  columnNumber: 27\n                }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n                  children: [\"\\u4E0A\\u4F20\\u65F6\\u95F4\\uFF1A\", dayjs(doc.created_at).format('YYYY-MM-DD HH:mm')]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 570,\n                  columnNumber: 27\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 563,\n                columnNumber: 25\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 554,\n              columnNumber: 21\n            }, this), renderAnalysisResult(doc)]\n          }, doc.id, true, {\n            fileName: _jsxFileName,\n            lineNumber: 522,\n            columnNumber: 19\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 519,\n          columnNumber: 15\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 511,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 491,\n      columnNumber: 9\n    }, this)\n  }];\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        marginBottom: 16\n      },\n      children: /*#__PURE__*/_jsxDEV(Button, {\n        icon: /*#__PURE__*/_jsxDEV(ArrowLeftOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 590,\n          columnNumber: 23\n        }, this),\n        onClick: () => navigate('/projects'),\n        children: \"\\u8FD4\\u56DE\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 590,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 589,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Card, {\n      title: project.project.name,\n      extra: /*#__PURE__*/_jsxDEV(Space, {\n        children: [/*#__PURE__*/_jsxDEV(Tag, {\n          color: getStatusColor(project.project.status),\n          children: getStatusText(project.project.status)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 597,\n          columnNumber: 13\n        }, this), project.project.industry && /*#__PURE__*/_jsxDEV(Tag, {\n          color: \"blue\",\n          children: project.project.industry\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 598,\n          columnNumber: 42\n        }, this), isInvestmentManager() && /*#__PURE__*/_jsxDEV(Button, {\n          icon: /*#__PURE__*/_jsxDEV(EditOutlined, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 599,\n            columnNumber: 53\n          }, this),\n          children: \"\\u7F16\\u8F91\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 599,\n          columnNumber: 39\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 596,\n        columnNumber: 11\n      }, this),\n      children: /*#__PURE__*/_jsxDEV(Tabs, {\n        items: tabs\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 603,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 593,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"\\u6DFB\\u52A0\\u4EFB\\u52A1\",\n      open: taskModalVisible,\n      onOk: handleAddTask,\n      onCancel: () => setTaskModalVisible(false),\n      children: /*#__PURE__*/_jsxDEV(Form, {\n        form: taskForm,\n        layout: \"vertical\",\n        children: [/*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"title\",\n          label: \"\\u4EFB\\u52A1\\u6807\\u9898\",\n          rules: [{\n            required: true\n          }],\n          children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 609,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 608,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"description\",\n          label: \"\\u63CF\\u8FF0\",\n          children: /*#__PURE__*/_jsxDEV(TextArea, {\n            rows: 3\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 612,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 611,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"priority\",\n          label: \"\\u4F18\\u5148\\u7EA7\",\n          initialValue: \"medium\",\n          children: /*#__PURE__*/_jsxDEV(Select, {\n            children: [/*#__PURE__*/_jsxDEV(Option, {\n              value: \"high\",\n              children: \"\\u9AD8\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 616,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Option, {\n              value: \"medium\",\n              children: \"\\u4E2D\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 617,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Option, {\n              value: \"low\",\n              children: \"\\u4F4E\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 618,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 615,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 614,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"assignedTo\",\n          label: \"\\u8D1F\\u8D23\\u4EBA\",\n          children: /*#__PURE__*/_jsxDEV(Select, {\n            children: users.map(u => /*#__PURE__*/_jsxDEV(Option, {\n              value: u.id,\n              children: u.full_name\n            }, u.id, false, {\n              fileName: _jsxFileName,\n              lineNumber: 623,\n              columnNumber: 31\n            }, this))\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 622,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 621,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"dueDate\",\n          label: \"\\u622A\\u6B62\\u65E5\\u671F\",\n          children: /*#__PURE__*/_jsxDEV(DatePicker, {\n            style: {\n              width: '100%'\n            }\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 627,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 626,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 607,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 606,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"\\u6DFB\\u52A0\\u91CC\\u7A0B\\u7891\",\n      open: milestoneModalVisible,\n      onOk: handleAddMilestone,\n      onCancel: () => setMilestoneModalVisible(false),\n      children: /*#__PURE__*/_jsxDEV(Form, {\n        form: milestoneForm,\n        layout: \"vertical\",\n        children: [/*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"name\",\n          label: \"\\u91CC\\u7A0B\\u7891\\u540D\\u79F0\",\n          rules: [{\n            required: true\n          }],\n          children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 635,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 634,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"description\",\n          label: \"\\u63CF\\u8FF0\",\n          children: /*#__PURE__*/_jsxDEV(TextArea, {\n            rows: 3\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 638,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 637,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"plannedDate\",\n          label: \"\\u8BA1\\u5212\\u65E5\\u671F\",\n          children: /*#__PURE__*/_jsxDEV(DatePicker, {\n            style: {\n              width: '100%'\n            }\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 641,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 640,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 633,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 632,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"\\u6DFB\\u52A0\\u9879\\u76EE\\u66F4\\u65B0\",\n      open: updateModalVisible,\n      onOk: handleAddUpdate,\n      onCancel: () => setUpdateModalVisible(false),\n      children: /*#__PURE__*/_jsxDEV(Form, {\n        form: updateForm,\n        layout: \"vertical\",\n        children: [/*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"title\",\n          label: \"\\u6807\\u9898\",\n          rules: [{\n            required: true\n          }],\n          children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 649,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 648,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"updateType\",\n          label: \"\\u7C7B\\u578B\",\n          initialValue: \"general\",\n          children: /*#__PURE__*/_jsxDEV(Select, {\n            children: [/*#__PURE__*/_jsxDEV(Option, {\n              value: \"general\",\n              children: \"\\u666E\\u901A\\u66F4\\u65B0\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 653,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Option, {\n              value: \"progress\",\n              children: \"\\u8FDB\\u5EA6\\u66F4\\u65B0\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 654,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Option, {\n              value: \"risk\",\n              children: \"\\u98CE\\u9669\\u63D0\\u793A\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 655,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Option, {\n              value: \"milestone\",\n              children: \"\\u91CC\\u7A0B\\u7891\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 656,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 652,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 651,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"content\",\n          label: \"\\u5185\\u5BB9\",\n          children: /*#__PURE__*/_jsxDEV(TextArea, {\n            rows: 5\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 660,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 659,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 647,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 646,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"\\u6DFB\\u52A0\\u6295\\u8D44\\u8005\",\n      open: investorModalVisible,\n      onOk: handleAddInvestor,\n      onCancel: () => setInvestorModalVisible(false),\n      children: /*#__PURE__*/_jsxDEV(Form, {\n        form: investorForm,\n        layout: \"vertical\",\n        children: [/*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"investorId\",\n          label: \"\\u6295\\u8D44\\u8005\",\n          rules: [{\n            required: true\n          }],\n          children: /*#__PURE__*/_jsxDEV(Select, {\n            children: investors.map(i => /*#__PURE__*/_jsxDEV(Option, {\n              value: i.id,\n              children: i.name\n            }, i.id, false, {\n              fileName: _jsxFileName,\n              lineNumber: 669,\n              columnNumber: 35\n            }, this))\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 668,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 667,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"investmentAmount\",\n          label: \"\\u6295\\u8D44\\u91D1\\u989D\",\n          children: /*#__PURE__*/_jsxDEV(Input, {\n            type: \"number\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 673,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 672,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"equityRatio\",\n          label: \"\\u80A1\\u6743\\u6BD4\\u4F8B(%)\",\n          children: /*#__PURE__*/_jsxDEV(Input, {\n            type: \"number\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 676,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 675,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"investmentDate\",\n          label: \"\\u6295\\u8D44\\u65E5\\u671F\",\n          children: /*#__PURE__*/_jsxDEV(DatePicker, {\n            style: {\n              width: '100%'\n            }\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 679,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 678,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n          name: \"notes\",\n          label: \"\\u5907\\u6CE8\",\n          children: /*#__PURE__*/_jsxDEV(TextArea, {\n            rows: 3\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 682,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 681,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 666,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 665,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 588,\n    columnNumber: 5\n  }, this);\n};\n_s(ProjectDetail, \"2y/+IZaZK3Gnk+M4GG+QRALdi9s=\", false, function () {\n  return [useParams, useNavigate, useAuth, Form.useForm, Form.useForm, Form.useForm, Form.useForm];\n});\n_c = ProjectDetail;\nexport default ProjectDetail;\nvar _c;\n$RefreshReg$(_c, \"ProjectDetail\");","map":{"version":3,"names":["React","useState","useEffect","Card","Descriptions","Tag","Button","Space","Modal","Form","Input","Select","DatePicker","message","Tabs","List","Timeline","Table","Popconfirm","Progress","Row","Col","Upload","Spin","Alert","Collapse","ArrowLeftOutlined","EditOutlined","PlusOutlined","CheckOutlined","CloseOutlined","UploadOutlined","FileTextOutlined","DeleteOutlined","DownloadOutlined","AnalyzeOutlined","ReloadOutlined","useParams","useNavigate","projectsAPI","usersAPI","investorsAPI","useAuth","dayjs","jsxDEV","_jsxDEV","Fragment","_Fragment","Option","TextArea","ProjectDetail","_s","id","navigate","isInvestmentManager","project","setProject","loading","setLoading","users","setUsers","investors","setInvestors","documents","setDocuments","documentsLoading","setDocumentsLoading","uploading","setUploading","fetchProject","fetchUsers","fetchInvestors","fetchDocuments","response","getOne","data","error","getAll","limit","console","getStatusColor","status","colors","draft","active","completed","pending","paused","getStatusText","texts","getPriorityColor","priority","high","medium","low","taskModalVisible","setTaskModalVisible","milestoneModalVisible","setMilestoneModalVisible","updateModalVisible","setUpdateModalVisible","investorModalVisible","setInvestorModalVisible","taskForm","useForm","milestoneForm","updateForm","investorForm","handleAddTask","values","validateFields","addTask","dueDate","format","success","resetFields","handleUpdateTaskStatus","taskId","updateTask","completedAt","Date","toISOString","handleAddMilestone","addMilestone","plannedDate","handleAddUpdate","addUpdate","handleAddInvestor","addInvestor","investmentDate","handleRemoveInvestor","investorId","removeInvestor","getDocuments","handleUpload","file","uploadDocument","setTimeout","_error$response","_error$response$data","handleDownload","docId","fileName","downloadDocument","url","window","URL","createObjectURL","Blob","link","document","createElement","href","setAttribute","body","appendChild","click","remove","handleAnalyze","analyzeDocument","handleDeleteDocument","deleteDocument","getAnalysisStatusTag","statusMap","color","text","analyzing","info","children","_jsxFileName","lineNumber","columnNumber","renderAnalysisResult","analysis_result","_result$keywords","_result$recommendatio","result","JSON","parse","type","description","ghost","Panel","header","column","size","Item","label","fileType","fileSizeFormatted","summary","style","marginTop","marginLeft","keywords","map","kw","i","paddingLeft","recommendations","rec","e","taskColumns","title","dataIndex","key","render","p","d","record","icon","onClick","investorColumns","a","toLocaleString","r","_","onConfirm","investor_id","danger","tabs","marginBottom","name","code","company_name","industry","stage","investment_amount","valuation","equity_ratio","assigned_to_name","created_by_name","created_at","gutter","span","extra","milestones","ms","fontWeight","fontSize","planned_date","actual_date","dataSource","updates","renderItem","update","Meta","content","columns","tasks","rowKey","pagination","beforeUpload","showUploadList","accept","spinning","length","doc","actions","disabled","analysis_status","filter","Boolean","avatar","marginRight","uploaded_by_name","file_size","toFixed","items","open","onOk","onCancel","form","layout","rules","required","rows","initialValue","value","u","full_name","width","_c","$RefreshReg$"],"sources":["/Users/nili/Documents/trae_projects/client/src/pages/ProjectDetail.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n  Card,\n  Descriptions,\n  Tag,\n  Button,\n  Space,\n  Modal,\n  Form,\n  Input,\n  Select,\n  DatePicker,\n  message,\n  Tabs,\n  List,\n  Timeline,\n  Table,\n  Popconfirm,\n  Progress,\n  Row,\n  Col,\n  Upload,\n  Spin,\n  Alert,\n  Collapse\n} from 'antd';\nimport {\n  ArrowLeftOutlined,\n  EditOutlined,\n  PlusOutlined,\n  CheckOutlined,\n  CloseOutlined,\n  UploadOutlined,\n  FileTextOutlined,\n  DeleteOutlined,\n  DownloadOutlined,\n  AnalyzeOutlined,\n  ReloadOutlined\n} from '@ant-design/icons';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { projectsAPI, usersAPI, investorsAPI } from '../services/api';\nimport { useAuth } from '../contexts/AuthContext';\nimport dayjs from 'dayjs';\n\nconst { Option } = Select;\nconst { TextArea } = Input;\n\nconst ProjectDetail = () => {\n  const { id } = useParams();\n  const navigate = useNavigate();\n  const { isInvestmentManager } = useAuth();\n  const [project, setProject] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [users, setUsers] = useState([]);\n  const [investors, setInvestors] = useState([]);\n  const [documents, setDocuments] = useState([]);\n  const [documentsLoading, setDocumentsLoading] = useState(false);\n  const [uploading, setUploading] = useState(false);\n\n  useEffect(() => {\n    fetchProject();\n    fetchUsers();\n    fetchInvestors();\n    fetchDocuments();\n  }, [id]);\n\n  const fetchProject = async () => {\n    setLoading(true);\n    try {\n      const response = await projectsAPI.getOne(id);\n      setProject(response.data);\n    } catch (error) {\n      message.error('获取项目详情失败');\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const fetchUsers = async () => {\n    try {\n      const response = await usersAPI.getAll({ limit: 100 });\n      setUsers(response.data.users);\n    } catch (error) {\n      console.error('获取用户列表失败:', error);\n    }\n  };\n\n  const fetchInvestors = async () => {\n    try {\n      const response = await investorsAPI.getAll({ limit: 100 });\n      setInvestors(response.data.investors);\n    } catch (error) {\n      console.error('获取投资者列表失败:', error);\n    }\n  };\n\n  const getStatusColor = (status) => {\n    const colors = {\n      draft: 'default',\n      active: 'green',\n      completed: 'blue',\n      pending: 'orange',\n      paused: 'red'\n    };\n    return colors[status] || 'default';\n  };\n\n  const getStatusText = (status) => {\n    const texts = {\n      draft: '草稿',\n      active: '进行中',\n      completed: '已完成',\n      pending: '待审批',\n      paused: '已暂停'\n    };\n    return texts[status] || status;\n  };\n\n  const getPriorityColor = (priority) => {\n    const colors = { high: 'red', medium: 'orange', low: 'blue' };\n    return colors[priority] || 'default';\n  };\n\n  const [taskModalVisible, setTaskModalVisible] = useState(false);\n  const [milestoneModalVisible, setMilestoneModalVisible] = useState(false);\n  const [updateModalVisible, setUpdateModalVisible] = useState(false);\n  const [investorModalVisible, setInvestorModalVisible] = useState(false);\n  const [taskForm] = Form.useForm();\n  const [milestoneForm] = Form.useForm();\n  const [updateForm] = Form.useForm();\n  const [investorForm] = Form.useForm();\n\n  const handleAddTask = async () => {\n    try {\n      const values = await taskForm.validateFields();\n      await projectsAPI.addTask(id, {\n        ...values,\n        dueDate: values.dueDate ? values.dueDate.format('YYYY-MM-DD') : null\n      });\n      message.success('任务创建成功');\n      setTaskModalVisible(false);\n      taskForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('创建任务失败');\n    }\n  };\n\n  const handleUpdateTaskStatus = async (taskId, status) => {\n    try {\n      await projectsAPI.updateTask(id, taskId, {\n        status,\n        completedAt: status === 'completed' ? new Date().toISOString() : null\n      });\n      message.success('任务状态更新成功');\n      fetchProject();\n    } catch (error) {\n      message.error('更新任务失败');\n    }\n  };\n\n  const handleAddMilestone = async () => {\n    try {\n      const values = await milestoneForm.validateFields();\n      await projectsAPI.addMilestone(id, {\n        ...values,\n        plannedDate: values.plannedDate ? values.plannedDate.format('YYYY-MM-DD') : null\n      });\n      message.success('里程碑创建成功');\n      setMilestoneModalVisible(false);\n      milestoneForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('创建里程碑失败');\n    }\n  };\n\n  const handleAddUpdate = async () => {\n    try {\n      const values = await updateForm.validateFields();\n      await projectsAPI.addUpdate(id, values);\n      message.success('项目更新创建成功');\n      setUpdateModalVisible(false);\n      updateForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('创建项目更新失败');\n    }\n  };\n\n  const handleAddInvestor = async () => {\n    try {\n      const values = await investorForm.validateFields();\n      await projectsAPI.addInvestor(id, {\n        ...values,\n        investmentDate: values.investmentDate ? values.investmentDate.format('YYYY-MM-DD') : null\n      });\n      message.success('投资者添加成功');\n      setInvestorModalVisible(false);\n      investorForm.resetFields();\n      fetchProject();\n    } catch (error) {\n      message.error('添加投资者失败');\n    }\n  };\n\n  const handleRemoveInvestor = async (investorId) => {\n    try {\n      await projectsAPI.removeInvestor(id, investorId);\n      message.success('投资者已移除');\n      fetchProject();\n    } catch (error) {\n      message.error('移除投资者失败');\n    }\n  };\n\n  const fetchDocuments = async () => {\n    setDocumentsLoading(true);\n    try {\n      const response = await projectsAPI.getDocuments(id);\n      setDocuments(response.data.documents || []);\n    } catch (error) {\n      console.error('获取文档列表失败:', error);\n    } finally {\n      setDocumentsLoading(false);\n    }\n  };\n\n  const handleUpload = async (file) => {\n    setUploading(true);\n    try {\n      const response = await projectsAPI.uploadDocument(id, file);\n      message.success('文件上传成功');\n      fetchDocuments();\n      setTimeout(fetchDocuments, 2000);\n    } catch (error) {\n      message.error(error.response?.data?.message || '文件上传失败');\n    } finally {\n      setUploading(false);\n    }\n    return false;\n  };\n\n  const handleDownload = async (docId, fileName) => {\n    try {\n      const response = await projectsAPI.downloadDocument(id, docId);\n      const url = window.URL.createObjectURL(new Blob([response.data]));\n      const link = document.createElement('a');\n      link.href = url;\n      link.setAttribute('download', fileName);\n      document.body.appendChild(link);\n      link.click();\n      link.remove();\n    } catch (error) {\n      message.error('文件下载失败');\n    }\n  };\n\n  const handleAnalyze = async (docId) => {\n    try {\n      await projectsAPI.analyzeDocument(id, docId);\n      message.success('文件分析已启动');\n      fetchDocuments();\n      setTimeout(fetchDocuments, 2000);\n    } catch (error) {\n      message.error('文件分析失败');\n    }\n  };\n\n  const handleDeleteDocument = async (docId) => {\n    try {\n      await projectsAPI.deleteDocument(id, docId);\n      message.success('文档删除成功');\n      fetchDocuments();\n    } catch (error) {\n      message.error('文档删除失败');\n    }\n  };\n\n  const getAnalysisStatusTag = (status) => {\n    const statusMap = {\n      pending: { color: 'default', text: '待分析' },\n      analyzing: { color: 'blue', text: '分析中' },\n      completed: { color: 'green', text: '分析完成' },\n      error: { color: 'red', text: '分析失败' }\n    };\n    const info = statusMap[status] || { color: 'default', text: status };\n    return <Tag color={info.color}>{info.text}</Tag>;\n  };\n\n  const renderAnalysisResult = (document) => {\n    if (!document.analysis_result) return null;\n    try {\n      const result = JSON.parse(document.analysis_result);\n      if (result.error) {\n        return <Alert type=\"error\" message=\"分析失败\" description={result.message} />;\n      }\n      return (\n        <Collapse ghost>\n          <Collapse.Panel header=\"文件分析报告\" key=\"1\">\n            <Descriptions column={1} size=\"small\">\n              <Descriptions.Item label=\"文件类型\">{result.fileType}</Descriptions.Item>\n              <Descriptions.Item label=\"文件大小\">{result.fileSizeFormatted}</Descriptions.Item>\n              <Descriptions.Item label=\"分析摘要\">{result.summary}</Descriptions.Item>\n            </Descriptions>\n            <div style={{ marginTop: 12 }}>\n              <strong>关键词：</strong>\n              <Space style={{ marginLeft: 8 }}>\n                {result.keywords?.map((kw, i) => <Tag key={i} color=\"blue\">{kw}</Tag>)}\n              </Space>\n            </div>\n            <div style={{ marginTop: 12 }}>\n              <strong>建议：</strong>\n              <ul style={{ marginTop: 8, paddingLeft: 20 }}>\n                {result.recommendations?.map((rec, i) => <li key={i}>{rec}</li>)}\n              </ul>\n            </div>\n          </Collapse.Panel>\n        </Collapse>\n      );\n    } catch (e) {\n      return <Alert type=\"warning\" message=\"无法解析分析结果\" />;\n    }\n  };\n\n  if (loading) return <div>加载中...</div>;\n  if (!project) return <div>项目不存在</div>;\n\n  const taskColumns = [\n    { title: '任务标题', dataIndex: 'title', key: 'title' },\n    { title: '描述', dataIndex: 'description', key: 'description' },\n    {\n      title: '优先级',\n      dataIndex: 'priority',\n      key: 'priority',\n      render: (p) => <Tag color={getPriorityColor(p)}>{p === 'high' ? '高' : p === 'medium' ? '中' : '低'}</Tag>\n    },\n    { title: '负责人', dataIndex: 'assigned_to_name', key: 'assigned_to_name' },\n    {\n      title: '截止日期',\n      dataIndex: 'due_date',\n      key: 'due_date',\n      render: (d) => d ? dayjs(d).format('YYYY-MM-DD') : '-'\n    },\n    {\n      title: '状态',\n      dataIndex: 'status',\n      key: 'status',\n      render: (status, record) => (\n        <Space>\n          <Tag color={status === 'completed' ? 'green' : status === 'in_progress' ? 'blue' : 'default'}>\n            {status === 'completed' ? '已完成' : status === 'in_progress' ? '进行中' : '待处理'}\n          </Tag>\n          {isInvestmentManager() && status !== 'completed' && (\n            <Button type=\"text\" size=\"small\" icon={<CheckOutlined />} onClick={() => handleUpdateTaskStatus(record.id, 'completed')} />\n          )}\n        </Space>\n      )\n    }\n  ];\n\n  const investorColumns = [\n    { title: '投资者', dataIndex: 'investor_name', key: 'investor_name' },\n    {\n      title: '投资金额',\n      dataIndex: 'investment_amount',\n      key: 'investment_amount',\n      render: (a) => a ? `¥${a.toLocaleString()}` : '-'\n    },\n    {\n      title: '股权比例',\n      dataIndex: 'equity_ratio',\n      key: 'equity_ratio',\n      render: (r) => r ? `${r}%` : '-'\n    },\n    {\n      title: '投资日期',\n      dataIndex: 'investment_date',\n      key: 'investment_date',\n      render: (d) => d ? dayjs(d).format('YYYY-MM-DD') : '-'\n    },\n    {\n      title: '操作',\n      key: 'actions',\n      render: (_, record) => isInvestmentManager() && (\n        <Popconfirm title=\"确定移除该投资者?\" onConfirm={() => handleRemoveInvestor(record.investor_id)}>\n          <Button type=\"text\" danger size=\"small\">移除</Button>\n        </Popconfirm>\n      )\n    }\n  ];\n\n  const tabs = [\n    {\n      key: 'overview',\n      label: '概览',\n      children: (\n        <>\n          <Card title=\"基本信息\" style={{ marginBottom: 16 }}>\n            <Descriptions column={2}>\n              <Descriptions.Item label=\"项目名称\">{project.project.name}</Descriptions.Item>\n              <Descriptions.Item label=\"项目代码\">{project.project.code || '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"公司名称\">{project.project.company_name}</Descriptions.Item>\n              <Descriptions.Item label=\"行业\">{project.project.industry ? <Tag color=\"blue\">{project.project.industry}</Tag> : '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"阶段\">{project.project.stage ? <Tag color=\"cyan\">{project.project.stage}</Tag> : '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"状态\"><Tag color={getStatusColor(project.project.status)}>{getStatusText(project.project.status)}</Tag></Descriptions.Item>\n              <Descriptions.Item label=\"投资额\">{project.project.investment_amount ? `¥${project.project.investment_amount.toLocaleString()}` : '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"估值\">{project.project.valuation ? `¥${project.project.valuation.toLocaleString()}` : '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"股权比例\">{project.project.equity_ratio ? `${project.project.equity_ratio}%` : '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"负责人\">{project.project.assigned_to_name || '-'}</Descriptions.Item>\n              <Descriptions.Item label=\"创建人\">{project.project.created_by_name}</Descriptions.Item>\n              <Descriptions.Item label=\"创建时间\">{dayjs(project.project.created_at).format('YYYY-MM-DD HH:mm')}</Descriptions.Item>\n            </Descriptions>\n            {project.project.description && (\n              <>\n                <br />\n                <div><strong>项目描述:</strong></div>\n                <div style={{ marginTop: 8, color: '#666' }}>{project.project.description}</div>\n              </>\n            )}\n          </Card>\n\n          <Row gutter={16}>\n            <Col span={12}>\n              <Card title=\"里程碑\" extra={isInvestmentManager() && <Button type=\"link\" size=\"small\" icon={<PlusOutlined />} onClick={() => setMilestoneModalVisible(true)}>添加</Button>}>\n                <Timeline>\n                  {project.milestones.map(ms => (\n                    <Timeline.Item\n                      key={ms.id}\n                      color={ms.status === 'completed' ? 'green' : ms.status === 'in_progress' ? 'blue' : 'gray'}\n                    >\n                      <div style={{ fontWeight: 'bold' }}>{ms.name}</div>\n                      <div style={{ fontSize: 12, color: '#666' }}>\n                        计划: {ms.planned_date ? dayjs(ms.planned_date).format('YYYY-MM-DD') : '-'}\n                        {ms.actual_date && ` | 实际: ${dayjs(ms.actual_date).format('YYYY-MM-DD')}`}\n                      </div>\n                      {ms.description && <div style={{ fontSize: 13, marginTop: 4 }}>{ms.description}</div>}\n                    </Timeline.Item>\n                  ))}\n                </Timeline>\n              </Card>\n            </Col>\n            <Col span={12}>\n              <Card title=\"项目动态\" extra={isInvestmentManager() && <Button type=\"link\" size=\"small\" icon={<PlusOutlined />} onClick={() => setUpdateModalVisible(true)}>添加</Button>}>\n                <List\n                  dataSource={project.updates}\n                  renderItem={update => (\n                    <List.Item key={update.id}>\n                      <List.Item.Meta\n                        title={<span style={{ fontWeight: 500 }}>{update.title}</span>}\n                        description={\n                          <div>\n                            <div style={{ fontSize: 12, color: '#999', marginBottom: 4 }}>\n                              {update.created_by_name} · {dayjs(update.created_at).format('YYYY-MM-DD HH:mm')}\n                            </div>\n                            {update.content}\n                          </div>\n                        }\n                      />\n                    </List.Item>\n                  )}\n                />\n              </Card>\n            </Col>\n          </Row>\n        </>\n      )\n    },\n    {\n      key: 'tasks',\n      label: '任务',\n      children: (\n        <Card extra={isInvestmentManager() && <Button type=\"primary\" icon={<PlusOutlined />} onClick={() => setTaskModalVisible(true)}>添加任务</Button>}>\n          <Table columns={taskColumns} dataSource={project.tasks} rowKey=\"id\" pagination={false} />\n        </Card>\n      )\n    },\n    {\n      key: 'investors',\n      label: '投资者',\n      children: (\n        <Card extra={isInvestmentManager() && <Button type=\"primary\" icon={<PlusOutlined />} onClick={() => setInvestorModalVisible(true)}>添加投资者</Button>}>\n          <Table columns={investorColumns} dataSource={project.investors} rowKey=\"id\" pagination={false} />\n        </Card>\n      )\n    },\n    {\n      key: 'documents',\n      label: '文档',\n      children: (\n        <Card\n          title=\"项目文档\"\n          extra={\n            isInvestmentManager() && (\n              <Upload\n                beforeUpload={handleUpload}\n                showUploadList={false}\n                accept=\".pdf,.ppt,.pptx,.doc,.docx,.txt\"\n              >\n                <Button\n                  type=\"primary\"\n                  icon={<UploadOutlined />}\n                  loading={uploading}\n                >\n                  上传文档\n                </Button>\n              </Upload>\n            )\n          }\n        >\n          <Spin spinning={documentsLoading}>\n            {documents.length === 0 ? (\n              <Alert\n                type=\"info\"\n                message=\"暂无文档\"\n                description=\"您可以上传PDF、PPT、Word、TXT等格式的项目介绍文档\"\n              />\n            ) : (\n              <List\n                dataSource={documents}\n                renderItem={(doc) => (\n                  <List.Item\n                    key={doc.id}\n                    actions={[\n                      <Button\n                        type=\"link\"\n                        size=\"small\"\n                        icon={<DownloadOutlined />}\n                        onClick={() => handleDownload(doc.id, doc.name)}\n                      >\n                        下载\n                      </Button>,\n                      <Button\n                        type=\"link\"\n                        size=\"small\"\n                        icon={<AnalyzeOutlined />}\n                        onClick={() => handleAnalyze(doc.id)}\n                        disabled={doc.analysis_status === 'analyzing'}\n                      >\n                        {doc.analysis_status === 'pending' ? '分析' : '重新分析'}\n                      </Button>,\n                      isInvestmentManager() && (\n                        <Popconfirm\n                          title=\"确定要删除这个文档吗?\"\n                          onConfirm={() => handleDeleteDocument(doc.id)}\n                        >\n                          <Button type=\"link\" size=\"small\" danger icon={<DeleteOutlined />}>\n                            删除\n                          </Button>\n                        </Popconfirm>\n                      )\n                    ].filter(Boolean)}\n                  >\n                    <List.Item.Meta\n                      avatar={<FileTextOutlined style={{ fontSize: 32, color: '#1890ff' }} />}\n                      title={\n                        <Space>\n                          {doc.name}\n                          {getAnalysisStatusTag(doc.analysis_status)}\n                        </Space>\n                      }\n                      description={\n                        <div>\n                          <span style={{ marginRight: 16 }}>\n                            上传者：{doc.uploaded_by_name || '未知'}\n                          </span>\n                          <span style={{ marginRight: 16 }}>\n                            大小：{(doc.file_size / 1024 / 1024).toFixed(2)} MB\n                          </span>\n                          <span>\n                            上传时间：{dayjs(doc.created_at).format('YYYY-MM-DD HH:mm')}\n                          </span>\n                        </div>\n                      }\n                    />\n                    {renderAnalysisResult(doc)}\n                  </List.Item>\n                )}\n              />\n            )}\n          </Spin>\n        </Card>\n      )\n    }\n  ];\n\n  return (\n    <div>\n      <div style={{ marginBottom: 16 }}>\n        <Button icon={<ArrowLeftOutlined />} onClick={() => navigate('/projects')}>返回</Button>\n      </div>\n\n      <Card\n        title={project.project.name}\n        extra={\n          <Space>\n            <Tag color={getStatusColor(project.project.status)}>{getStatusText(project.project.status)}</Tag>\n            {project.project.industry && <Tag color=\"blue\">{project.project.industry}</Tag>}\n            {isInvestmentManager() && <Button icon={<EditOutlined />}>编辑</Button>}\n          </Space>\n        }\n      >\n        <Tabs items={tabs} />\n      </Card>\n\n      <Modal title=\"添加任务\" open={taskModalVisible} onOk={handleAddTask} onCancel={() => setTaskModalVisible(false)}>\n        <Form form={taskForm} layout=\"vertical\">\n          <Form.Item name=\"title\" label=\"任务标题\" rules={[{ required: true }]}>\n            <Input />\n          </Form.Item>\n          <Form.Item name=\"description\" label=\"描述\">\n            <TextArea rows={3} />\n          </Form.Item>\n          <Form.Item name=\"priority\" label=\"优先级\" initialValue=\"medium\">\n            <Select>\n              <Option value=\"high\">高</Option>\n              <Option value=\"medium\">中</Option>\n              <Option value=\"low\">低</Option>\n            </Select>\n          </Form.Item>\n          <Form.Item name=\"assignedTo\" label=\"负责人\">\n            <Select>\n              {users.map(u => <Option key={u.id} value={u.id}>{u.full_name}</Option>)}\n            </Select>\n          </Form.Item>\n          <Form.Item name=\"dueDate\" label=\"截止日期\">\n            <DatePicker style={{ width: '100%' }} />\n          </Form.Item>\n        </Form>\n      </Modal>\n\n      <Modal title=\"添加里程碑\" open={milestoneModalVisible} onOk={handleAddMilestone} onCancel={() => setMilestoneModalVisible(false)}>\n        <Form form={milestoneForm} layout=\"vertical\">\n          <Form.Item name=\"name\" label=\"里程碑名称\" rules={[{ required: true }]}>\n            <Input />\n          </Form.Item>\n          <Form.Item name=\"description\" label=\"描述\">\n            <TextArea rows={3} />\n          </Form.Item>\n          <Form.Item name=\"plannedDate\" label=\"计划日期\">\n            <DatePicker style={{ width: '100%' }} />\n          </Form.Item>\n        </Form>\n      </Modal>\n\n      <Modal title=\"添加项目更新\" open={updateModalVisible} onOk={handleAddUpdate} onCancel={() => setUpdateModalVisible(false)}>\n        <Form form={updateForm} layout=\"vertical\">\n          <Form.Item name=\"title\" label=\"标题\" rules={[{ required: true }]}>\n            <Input />\n          </Form.Item>\n          <Form.Item name=\"updateType\" label=\"类型\" initialValue=\"general\">\n            <Select>\n              <Option value=\"general\">普通更新</Option>\n              <Option value=\"progress\">进度更新</Option>\n              <Option value=\"risk\">风险提示</Option>\n              <Option value=\"milestone\">里程碑</Option>\n            </Select>\n          </Form.Item>\n          <Form.Item name=\"content\" label=\"内容\">\n            <TextArea rows={5} />\n          </Form.Item>\n        </Form>\n      </Modal>\n\n      <Modal title=\"添加投资者\" open={investorModalVisible} onOk={handleAddInvestor} onCancel={() => setInvestorModalVisible(false)}>\n        <Form form={investorForm} layout=\"vertical\">\n          <Form.Item name=\"investorId\" label=\"投资者\" rules={[{ required: true }]}>\n            <Select>\n              {investors.map(i => <Option key={i.id} value={i.id}>{i.name}</Option>)}\n            </Select>\n          </Form.Item>\n          <Form.Item name=\"investmentAmount\" label=\"投资金额\">\n            <Input type=\"number\" />\n          </Form.Item>\n          <Form.Item name=\"equityRatio\" label=\"股权比例(%)\">\n            <Input type=\"number\" />\n          </Form.Item>\n          <Form.Item name=\"investmentDate\" label=\"投资日期\">\n            <DatePicker style={{ width: '100%' }} />\n          </Form.Item>\n          <Form.Item name=\"notes\" label=\"备注\">\n            <TextArea rows={3} />\n          </Form.Item>\n        </Form>\n      </Modal>\n    </div>\n  );\n};\n\nexport default ProjectDetail;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}