{"ast":null,"code":"import React,{useState,useEffect}from'react';import{Table,Card,Button,Space,Tag,Input,Select,Modal,Form,message,Popconfirm,Descriptions,Row,Col,List,Timeline,Progress}from'antd';import{PlusOutlined,EditOutlined,DeleteOutlined,EyeOutlined,SearchOutlined}from'@ant-design/icons';import{projectsAPI,usersAPI,investorsAPI}from'../services/api';import{useNavigate,useParams}from'react-router-dom';import{useAuth}from'../contexts/AuthContext';import dayjs from'dayjs';import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from\"react/jsx-runtime\";const{Option}=Select;const{Search}=Input;const Projects=()=>{const[projects,setProjects]=useState([]);const[loading,setLoading]=useState(false);const[pagination,setPagination]=useState({current:1,pageSize:20,total:0});const[filters,setFilters]=useState({});const[users,setUsers]=useState([]);const{isInvestmentManager}=useAuth();const navigate=useNavigate();useEffect(()=>{fetchProjects();fetchUsers();},[pagination.current,pagination.pageSize,filters]);const fetchProjects=async()=>{setLoading(true);try{const response=await projectsAPI.getAll({page:pagination.current,limit:pagination.pageSize,...filters});setProjects(response.data.projects);setPagination(prev=>{var _response$data$pagina;return{...prev,total:((_response$data$pagina=response.data.pagination)===null||_response$data$pagina===void 0?void 0:_response$data$pagina.total)||0};});}catch(error){message.error('获取项目列表失败');}finally{setLoading(false);}};const fetchUsers=async()=>{try{const response=await usersAPI.getAll({limit:100});setUsers(response.data.users);}catch(error){console.error('获取用户列表失败:',error);}};const getStatusColor=status=>{const colors={draft:'default',active:'green',completed:'blue',pending:'orange',paused:'red'};return colors[status]||'default';};const getStatusText=status=>{const texts={draft:'草稿',active:'进行中',completed:'已完成',pending:'待审批',paused:'已暂停'};return texts[status]||status;};const handleDelete=async id=>{try{await projectsAPI.delete(id);message.success('项目删除成功');fetchProjects();}catch(error){message.error('删除失败');}};const columns=[{title:'项目名称',dataIndex:'name',key:'name',render:(text,record)=>/*#__PURE__*/_jsx(\"a\",{onClick:()=>navigate(`/projects/${record.id}`),children:text})},{title:'项目代码',dataIndex:'code',key:'code'},{title:'公司名称',dataIndex:'company_name',key:'company_name'},{title:'行业',dataIndex:'industry',key:'industry',render:industry=>industry&&/*#__PURE__*/_jsx(Tag,{color:\"blue\",children:industry})},{title:'阶段',dataIndex:'stage',key:'stage',render:stage=>stage&&/*#__PURE__*/_jsx(Tag,{color:\"cyan\",children:stage})},{title:'状态',dataIndex:'status',key:'status',render:status=>/*#__PURE__*/_jsx(Tag,{color:getStatusColor(status),children:getStatusText(status)})},{title:'投资额',dataIndex:'investment_amount',key:'investment_amount',render:amount=>amount?`¥${amount.toLocaleString()}`:'-'},{title:'负责人',dataIndex:'assigned_to_name',key:'assigned_to_name'},{title:'创建时间',dataIndex:'created_at',key:'created_at',render:date=>date?dayjs(date).format('YYYY-MM-DD'):'-'},{title:'操作',key:'actions',render:(_,record)=>/*#__PURE__*/_jsxs(Space,{children:[/*#__PURE__*/_jsx(Button,{type:\"link\",size:\"small\",icon:/*#__PURE__*/_jsx(EyeOutlined,{}),onClick:()=>navigate(`/projects/${record.id}`),children:\"\\u67E5\\u770B\"}),isInvestmentManager()&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Button,{type:\"link\",size:\"small\",icon:/*#__PURE__*/_jsx(EditOutlined,{}),onClick:()=>openEditModal(record),children:\"\\u7F16\\u8F91\"}),/*#__PURE__*/_jsx(Popconfirm,{title:\"\\u786E\\u5B9A\\u8981\\u5220\\u9664\\u8FD9\\u4E2A\\u9879\\u76EE\\u5417?\",onConfirm:()=>handleDelete(record.id),children:/*#__PURE__*/_jsx(Button,{type:\"link\",size:\"small\",danger:true,icon:/*#__PURE__*/_jsx(DeleteOutlined,{}),children:\"\\u5220\\u9664\"})})]})]})}];const[modalVisible,setModalVisible]=useState(false);const[editingProject,setEditingProject]=useState(null);const[form]=Form.useForm();const openCreateModal=()=>{setEditingProject(null);form.resetFields();setModalVisible(true);};const openEditModal=project=>{setEditingProject(project);form.setFieldsValue({...project,companyName:project.company_name,investmentAmount:project.investment_amount,equityRatio:project.equity_ratio,assignedTo:project.assigned_to,tags:project.tags?JSON.parse(project.tags):[]});setModalVisible(true);};const handleModalOk=async()=>{try{const values=await form.validateFields();if(editingProject){await projectsAPI.update(editingProject.id,values);message.success('项目更新成功');}else{await projectsAPI.create(values);message.success('项目创建成功');}setModalVisible(false);fetchProjects();}catch(error){var _error$response,_error$response$data;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)||'操作失败');}};return/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"page-header\",children:/*#__PURE__*/_jsx(\"h1\",{children:\"\\u9879\\u76EE\\u7BA1\\u7406\"})}),/*#__PURE__*/_jsxs(Card,{children:[/*#__PURE__*/_jsx(\"div\",{className:\"filter-bar\",children:/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:6,children:/*#__PURE__*/_jsx(Search,{placeholder:\"\\u641C\\u7D22\\u9879\\u76EE\\u540D\\u79F0\\u3001\\u4EE3\\u7801\\u6216\\u516C\\u53F8\",onSearch:value=>setFilters(prev=>({...prev,search:value})),allowClear:true})}),/*#__PURE__*/_jsx(Col,{span:4,children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u72B6\\u6001\",allowClear:true,style:{width:'100%'},onChange:value=>setFilters(prev=>({...prev,status:value})),children:[/*#__PURE__*/_jsx(Option,{value:\"draft\",children:\"\\u8349\\u7A3F\"}),/*#__PURE__*/_jsx(Option,{value:\"active\",children:\"\\u8FDB\\u884C\\u4E2D\"}),/*#__PURE__*/_jsx(Option,{value:\"completed\",children:\"\\u5DF2\\u5B8C\\u6210\"}),/*#__PURE__*/_jsx(Option,{value:\"pending\",children:\"\\u5F85\\u5BA1\\u6279\"}),/*#__PURE__*/_jsx(Option,{value:\"paused\",children:\"\\u5DF2\\u6682\\u505C\"})]})}),/*#__PURE__*/_jsx(Col,{span:4,children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u884C\\u4E1A\",allowClear:true,style:{width:'100%'},onChange:value=>setFilters(prev=>({...prev,industry:value})),children:[/*#__PURE__*/_jsx(Option,{value:\"\\u4EBA\\u5DE5\\u667A\\u80FD\",children:\"\\u4EBA\\u5DE5\\u667A\\u80FD\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u751F\\u7269\\u533B\\u836F\",children:\"\\u751F\\u7269\\u533B\\u836F\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u65B0\\u80FD\\u6E90\",children:\"\\u65B0\\u80FD\\u6E90\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u534A\\u5BFC\\u4F53\",children:\"\\u534A\\u5BFC\\u4F53\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u4F01\\u4E1A\\u670D\\u52A1\",children:\"\\u4F01\\u4E1A\\u670D\\u52A1\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u6D88\\u8D39\\u5347\\u7EA7\",children:\"\\u6D88\\u8D39\\u5347\\u7EA7\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u5176\\u4ED6\",children:\"\\u5176\\u4ED6\"})]})}),/*#__PURE__*/_jsx(Col,{span:4,children:/*#__PURE__*/_jsx(Select,{placeholder:\"\\u8D1F\\u8D23\\u4EBA\",allowClear:true,style:{width:'100%'},onChange:value=>setFilters(prev=>({...prev,assignedTo:value})),children:users.map(user=>/*#__PURE__*/_jsx(Option,{value:user.id,children:user.full_name},user.id))})}),/*#__PURE__*/_jsx(Col,{span:6,style:{textAlign:'right'},children:isInvestmentManager()&&/*#__PURE__*/_jsx(Button,{type:\"primary\",icon:/*#__PURE__*/_jsx(PlusOutlined,{}),onClick:openCreateModal,children:\"\\u65B0\\u5EFA\\u9879\\u76EE\"})})]})}),/*#__PURE__*/_jsx(Table,{columns:columns,dataSource:projects,rowKey:\"id\",loading:loading,pagination:{...pagination,showSizeChanger:true,showQuickJumper:true,showTotal:total=>`共 ${total} 条`,onChange:(page,pageSize)=>setPagination(prev=>({...prev,current:page,pageSize}))}})]}),/*#__PURE__*/_jsx(Modal,{title:editingProject?'编辑项目':'新建项目',open:modalVisible,onOk:handleModalOk,onCancel:()=>setModalVisible(false),width:800,children:/*#__PURE__*/_jsxs(Form,{form:form,layout:\"vertical\",children:[/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"name\",label:\"\\u9879\\u76EE\\u540D\\u79F0\",rules:[{required:true,message:'请输入项目名称'}],children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u9879\\u76EE\\u540D\\u79F0\"})})}),/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"code\",label:\"\\u9879\\u76EE\\u4EE3\\u7801\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u9879\\u76EE\\u4EE3\\u7801\"})})})]}),/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"companyName\",label:\"\\u516C\\u53F8\\u540D\\u79F0\",rules:[{required:true,message:'请输入公司名称'}],children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u516C\\u53F8\\u540D\\u79F0\"})})}),/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"industry\",label:\"\\u884C\\u4E1A\",children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u8BF7\\u9009\\u62E9\\u884C\\u4E1A\",children:[/*#__PURE__*/_jsx(Option,{value:\"\\u4EBA\\u5DE5\\u667A\\u80FD\",children:\"\\u4EBA\\u5DE5\\u667A\\u80FD\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u751F\\u7269\\u533B\\u836F\",children:\"\\u751F\\u7269\\u533B\\u836F\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u65B0\\u80FD\\u6E90\",children:\"\\u65B0\\u80FD\\u6E90\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u534A\\u5BFC\\u4F53\",children:\"\\u534A\\u5BFC\\u4F53\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u4F01\\u4E1A\\u670D\\u52A1\",children:\"\\u4F01\\u4E1A\\u670D\\u52A1\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u6D88\\u8D39\\u5347\\u7EA7\",children:\"\\u6D88\\u8D39\\u5347\\u7EA7\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u5176\\u4ED6\",children:\"\\u5176\\u4ED6\"})]})})})]}),/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"stage\",label:\"\\u9636\\u6BB5\",children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u8BF7\\u9009\\u62E9\\u9636\\u6BB5\",children:[/*#__PURE__*/_jsx(Option,{value:\"\\u79CD\\u5B50\\u8F6E\",children:\"\\u79CD\\u5B50\\u8F6E\"}),/*#__PURE__*/_jsx(Option,{value:\"\\u5929\\u4F7F\\u8F6E\",children:\"\\u5929\\u4F7F\\u8F6E\"}),/*#__PURE__*/_jsx(Option,{value:\"A\\u8F6E\",children:\"A\\u8F6E\"}),/*#__PURE__*/_jsx(Option,{value:\"B\\u8F6E\",children:\"B\\u8F6E\"}),/*#__PURE__*/_jsx(Option,{value:\"C\\u8F6E\\u53CA\\u4EE5\\u540E\",children:\"C\\u8F6E\\u53CA\\u4EE5\\u540E\"}),/*#__PURE__*/_jsx(Option,{value:\"Pre-IPO\",children:\"Pre-IPO\"})]})})}),/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"status\",label:\"\\u72B6\\u6001\",children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u8BF7\\u9009\\u62E9\\u72B6\\u6001\",defaultValue:\"draft\",children:[/*#__PURE__*/_jsx(Option,{value:\"draft\",children:\"\\u8349\\u7A3F\"}),/*#__PURE__*/_jsx(Option,{value:\"pending\",children:\"\\u5F85\\u5BA1\\u6279\"}),/*#__PURE__*/_jsx(Option,{value:\"active\",children:\"\\u8FDB\\u884C\\u4E2D\"}),/*#__PURE__*/_jsx(Option,{value:\"paused\",children:\"\\u5DF2\\u6682\\u505C\"}),/*#__PURE__*/_jsx(Option,{value:\"completed\",children:\"\\u5DF2\\u5B8C\\u6210\"})]})})})]}),/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"investmentAmount\",label:\"\\u6295\\u8D44\\u989D\",children:/*#__PURE__*/_jsx(Input,{type:\"number\",placeholder:\"\\u8BF7\\u8F93\\u5165\\u6295\\u8D44\\u989D\"})})}),/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"valuation\",label:\"\\u4F30\\u503C\",children:/*#__PURE__*/_jsx(Input,{type:\"number\",placeholder:\"\\u8BF7\\u8F93\\u5165\\u4F30\\u503C\"})})}),/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"equityRatio\",label:\"\\u80A1\\u6743\\u6BD4\\u4F8B(%)\",children:/*#__PURE__*/_jsx(Input,{type:\"number\",placeholder:\"\\u8BF7\\u8F93\\u5165\\u80A1\\u6743\\u6BD4\\u4F8B\"})})})]}),/*#__PURE__*/_jsx(Form.Item,{name:\"assignedTo\",label:\"\\u8D1F\\u8D23\\u4EBA\",children:/*#__PURE__*/_jsx(Select,{placeholder:\"\\u8BF7\\u9009\\u62E9\\u8D1F\\u8D23\\u4EBA\",children:users.map(user=>/*#__PURE__*/_jsx(Option,{value:user.id,children:user.full_name},user.id))})}),/*#__PURE__*/_jsx(Form.Item,{name:\"description\",label:\"\\u9879\\u76EE\\u63CF\\u8FF0\",children:/*#__PURE__*/_jsx(Input.TextArea,{rows:4,placeholder:\"\\u8BF7\\u8F93\\u5165\\u9879\\u76EE\\u63CF\\u8FF0\"})})]})})]});};export default Projects;","map":{"version":3,"names":["React","useState","useEffect","Table","Card","Button","Space","Tag","Input","Select","Modal","Form","message","Popconfirm","Descriptions","Row","Col","List","Timeline","Progress","PlusOutlined","EditOutlined","DeleteOutlined","EyeOutlined","SearchOutlined","projectsAPI","usersAPI","investorsAPI","useNavigate","useParams","useAuth","dayjs","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Option","Search","Projects","projects","setProjects","loading","setLoading","pagination","setPagination","current","pageSize","total","filters","setFilters","users","setUsers","isInvestmentManager","navigate","fetchProjects","fetchUsers","response","getAll","page","limit","data","prev","_response$data$pagina","error","console","getStatusColor","status","colors","draft","active","completed","pending","paused","getStatusText","texts","handleDelete","id","delete","success","columns","title","dataIndex","key","render","text","record","onClick","children","industry","color","stage","amount","toLocaleString","date","format","_","type","size","icon","openEditModal","onConfirm","danger","modalVisible","setModalVisible","editingProject","setEditingProject","form","useForm","openCreateModal","resetFields","project","setFieldsValue","companyName","company_name","investmentAmount","investment_amount","equityRatio","equity_ratio","assignedTo","assigned_to","tags","JSON","parse","handleModalOk","values","validateFields","update","create","_error$response","_error$response$data","className","gutter","span","placeholder","onSearch","value","search","allowClear","style","width","onChange","map","user","full_name","textAlign","dataSource","rowKey","showSizeChanger","showQuickJumper","showTotal","open","onOk","onCancel","layout","Item","name","label","rules","required","defaultValue","TextArea","rows"],"sources":["/Users/nili/Documents/trae_projects/client/src/pages/Projects.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n  Table,\n  Card,\n  Button,\n  Space,\n  Tag,\n  Input,\n  Select,\n  Modal,\n  Form,\n  message,\n  Popconfirm,\n  Descriptions,\n  Row,\n  Col,\n  List,\n  Timeline,\n  Progress\n} from 'antd';\nimport { PlusOutlined, EditOutlined, DeleteOutlined, EyeOutlined, SearchOutlined } from '@ant-design/icons';\nimport { projectsAPI, usersAPI, investorsAPI } from '../services/api';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useAuth } from '../contexts/AuthContext';\nimport dayjs from 'dayjs';\n\nconst { Option } = Select;\nconst { Search } = Input;\n\nconst Projects = () => {\n  const [projects, setProjects] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [pagination, setPagination] = useState({ current: 1, pageSize: 20, total: 0 });\n  const [filters, setFilters] = useState({});\n  const [users, setUsers] = useState([]);\n  const { isInvestmentManager } = useAuth();\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    fetchProjects();\n    fetchUsers();\n  }, [pagination.current, pagination.pageSize, filters]);\n\n  const fetchProjects = async () => {\n    setLoading(true);\n    try {\n      const response = await projectsAPI.getAll({\n        page: pagination.current,\n        limit: pagination.pageSize,\n        ...filters\n      });\n      setProjects(response.data.projects);\n      setPagination(prev => ({\n        ...prev,\n        total: response.data.pagination?.total || 0\n      }));\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 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 handleDelete = async (id) => {\n    try {\n      await projectsAPI.delete(id);\n      message.success('项目删除成功');\n      fetchProjects();\n    } catch (error) {\n      message.error('删除失败');\n    }\n  };\n\n  const columns = [\n    {\n      title: '项目名称',\n      dataIndex: 'name',\n      key: 'name',\n      render: (text, record) => (\n        <a onClick={() => navigate(`/projects/${record.id}`)}>{text}</a>\n      )\n    },\n    {\n      title: '项目代码',\n      dataIndex: 'code',\n      key: 'code'\n    },\n    {\n      title: '公司名称',\n      dataIndex: 'company_name',\n      key: 'company_name'\n    },\n    {\n      title: '行业',\n      dataIndex: 'industry',\n      key: 'industry',\n      render: (industry) => industry && <Tag color=\"blue\">{industry}</Tag>\n    },\n    {\n      title: '阶段',\n      dataIndex: 'stage',\n      key: 'stage',\n      render: (stage) => stage && <Tag color=\"cyan\">{stage}</Tag>\n    },\n    {\n      title: '状态',\n      dataIndex: 'status',\n      key: 'status',\n      render: (status) => <Tag color={getStatusColor(status)}>{getStatusText(status)}</Tag>\n    },\n    {\n      title: '投资额',\n      dataIndex: 'investment_amount',\n      key: 'investment_amount',\n      render: (amount) => amount ? `¥${amount.toLocaleString()}` : '-'\n    },\n    {\n      title: '负责人',\n      dataIndex: 'assigned_to_name',\n      key: 'assigned_to_name'\n    },\n    {\n      title: '创建时间',\n      dataIndex: 'created_at',\n      key: 'created_at',\n      render: (date) => date ? dayjs(date).format('YYYY-MM-DD') : '-'\n    },\n    {\n      title: '操作',\n      key: 'actions',\n      render: (_, record) => (\n        <Space>\n          <Button type=\"link\" size=\"small\" icon={<EyeOutlined />} onClick={() => navigate(`/projects/${record.id}`)}>\n            查看\n          </Button>\n          {isInvestmentManager() && (\n            <>\n              <Button type=\"link\" size=\"small\" icon={<EditOutlined />} onClick={() => openEditModal(record)}>\n                编辑\n              </Button>\n              <Popconfirm title=\"确定要删除这个项目吗?\" onConfirm={() => handleDelete(record.id)}>\n                <Button type=\"link\" size=\"small\" danger icon={<DeleteOutlined />}>\n                  删除\n                </Button>\n              </Popconfirm>\n            </>\n          )}\n        </Space>\n      )\n    }\n  ];\n\n  const [modalVisible, setModalVisible] = useState(false);\n  const [editingProject, setEditingProject] = useState(null);\n  const [form] = Form.useForm();\n\n  const openCreateModal = () => {\n    setEditingProject(null);\n    form.resetFields();\n    setModalVisible(true);\n  };\n\n  const openEditModal = (project) => {\n    setEditingProject(project);\n    form.setFieldsValue({\n      ...project,\n      companyName: project.company_name,\n      investmentAmount: project.investment_amount,\n      equityRatio: project.equity_ratio,\n      assignedTo: project.assigned_to,\n      tags: project.tags ? JSON.parse(project.tags) : []\n    });\n    setModalVisible(true);\n  };\n\n  const handleModalOk = async () => {\n    try {\n      const values = await form.validateFields();\n      if (editingProject) {\n        await projectsAPI.update(editingProject.id, values);\n        message.success('项目更新成功');\n      } else {\n        await projectsAPI.create(values);\n        message.success('项目创建成功');\n      }\n      setModalVisible(false);\n      fetchProjects();\n    } catch (error) {\n      message.error(error.response?.data?.message || '操作失败');\n    }\n  };\n\n  return (\n    <div>\n      <div className=\"page-header\">\n        <h1>项目管理</h1>\n      </div>\n\n      <Card>\n        <div className=\"filter-bar\">\n          <Row gutter={16}>\n            <Col span={6}>\n              <Search\n                placeholder=\"搜索项目名称、代码或公司\"\n                onSearch={(value) => setFilters(prev => ({ ...prev, search: value }))}\n                allowClear\n              />\n            </Col>\n            <Col span={4}>\n              <Select\n                placeholder=\"状态\"\n                allowClear\n                style={{ width: '100%' }}\n                onChange={(value) => setFilters(prev => ({ ...prev, status: value }))}\n              >\n                <Option value=\"draft\">草稿</Option>\n                <Option value=\"active\">进行中</Option>\n                <Option value=\"completed\">已完成</Option>\n                <Option value=\"pending\">待审批</Option>\n                <Option value=\"paused\">已暂停</Option>\n              </Select>\n            </Col>\n            <Col span={4}>\n              <Select\n                placeholder=\"行业\"\n                allowClear\n                style={{ width: '100%' }}\n                onChange={(value) => setFilters(prev => ({ ...prev, industry: value }))}\n              >\n                <Option value=\"人工智能\">人工智能</Option>\n                <Option value=\"生物医药\">生物医药</Option>\n                <Option value=\"新能源\">新能源</Option>\n                <Option value=\"半导体\">半导体</Option>\n                <Option value=\"企业服务\">企业服务</Option>\n                <Option value=\"消费升级\">消费升级</Option>\n                <Option value=\"其他\">其他</Option>\n              </Select>\n            </Col>\n            <Col span={4}>\n              <Select\n                placeholder=\"负责人\"\n                allowClear\n                style={{ width: '100%' }}\n                onChange={(value) => setFilters(prev => ({ ...prev, assignedTo: value }))}\n              >\n                {users.map(user => (\n                  <Option key={user.id} value={user.id}>{user.full_name}</Option>\n                ))}\n              </Select>\n            </Col>\n            <Col span={6} style={{ textAlign: 'right' }}>\n              {isInvestmentManager() && (\n                <Button type=\"primary\" icon={<PlusOutlined />} onClick={openCreateModal}>\n                  新建项目\n                </Button>\n              )}\n            </Col>\n          </Row>\n        </div>\n\n        <Table\n          columns={columns}\n          dataSource={projects}\n          rowKey=\"id\"\n          loading={loading}\n          pagination={{\n            ...pagination,\n            showSizeChanger: true,\n            showQuickJumper: true,\n            showTotal: (total) => `共 ${total} 条`,\n            onChange: (page, pageSize) => setPagination(prev => ({ ...prev, current: page, pageSize }))\n          }}\n        />\n      </Card>\n\n      <Modal\n        title={editingProject ? '编辑项目' : '新建项目'}\n        open={modalVisible}\n        onOk={handleModalOk}\n        onCancel={() => setModalVisible(false)}\n        width={800}\n      >\n        <Form form={form} layout=\"vertical\">\n          <Row gutter={16}>\n            <Col span={12}>\n              <Form.Item name=\"name\" label=\"项目名称\" rules={[{ required: true, message: '请输入项目名称' }]}>\n                <Input placeholder=\"请输入项目名称\" />\n              </Form.Item>\n            </Col>\n            <Col span={12}>\n              <Form.Item name=\"code\" label=\"项目代码\">\n                <Input placeholder=\"请输入项目代码\" />\n              </Form.Item>\n            </Col>\n          </Row>\n          <Row gutter={16}>\n            <Col span={12}>\n              <Form.Item name=\"companyName\" label=\"公司名称\" rules={[{ required: true, message: '请输入公司名称' }]}>\n                <Input placeholder=\"请输入公司名称\" />\n              </Form.Item>\n            </Col>\n            <Col span={12}>\n              <Form.Item name=\"industry\" label=\"行业\">\n                <Select placeholder=\"请选择行业\">\n                  <Option value=\"人工智能\">人工智能</Option>\n                  <Option value=\"生物医药\">生物医药</Option>\n                  <Option value=\"新能源\">新能源</Option>\n                  <Option value=\"半导体\">半导体</Option>\n                  <Option value=\"企业服务\">企业服务</Option>\n                  <Option value=\"消费升级\">消费升级</Option>\n                  <Option value=\"其他\">其他</Option>\n                </Select>\n              </Form.Item>\n            </Col>\n          </Row>\n          <Row gutter={16}>\n            <Col span={12}>\n              <Form.Item name=\"stage\" label=\"阶段\">\n                <Select placeholder=\"请选择阶段\">\n                  <Option value=\"种子轮\">种子轮</Option>\n                  <Option value=\"天使轮\">天使轮</Option>\n                  <Option value=\"A轮\">A轮</Option>\n                  <Option value=\"B轮\">B轮</Option>\n                  <Option value=\"C轮及以后\">C轮及以后</Option>\n                  <Option value=\"Pre-IPO\">Pre-IPO</Option>\n                </Select>\n              </Form.Item>\n            </Col>\n            <Col span={12}>\n              <Form.Item name=\"status\" label=\"状态\">\n                <Select placeholder=\"请选择状态\" defaultValue=\"draft\">\n                  <Option value=\"draft\">草稿</Option>\n                  <Option value=\"pending\">待审批</Option>\n                  <Option value=\"active\">进行中</Option>\n                  <Option value=\"paused\">已暂停</Option>\n                  <Option value=\"completed\">已完成</Option>\n                </Select>\n              </Form.Item>\n            </Col>\n          </Row>\n          <Row gutter={16}>\n            <Col span={8}>\n              <Form.Item name=\"investmentAmount\" label=\"投资额\">\n                <Input type=\"number\" placeholder=\"请输入投资额\" />\n              </Form.Item>\n            </Col>\n            <Col span={8}>\n              <Form.Item name=\"valuation\" label=\"估值\">\n                <Input type=\"number\" placeholder=\"请输入估值\" />\n              </Form.Item>\n            </Col>\n            <Col span={8}>\n              <Form.Item name=\"equityRatio\" label=\"股权比例(%)\">\n                <Input type=\"number\" placeholder=\"请输入股权比例\" />\n              </Form.Item>\n            </Col>\n          </Row>\n          <Form.Item name=\"assignedTo\" label=\"负责人\">\n            <Select placeholder=\"请选择负责人\">\n              {users.map(user => (\n                <Option key={user.id} value={user.id}>{user.full_name}</Option>\n              ))}\n            </Select>\n          </Form.Item>\n          <Form.Item name=\"description\" label=\"项目描述\">\n            <Input.TextArea rows={4} placeholder=\"请输入项目描述\" />\n          </Form.Item>\n        </Form>\n      </Modal>\n    </div>\n  );\n};\n\nexport default Projects;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}