{"ast":null,"code":"import React,{useState,useEffect}from'react';import{Table,Card,Button,Space,Tag,Input,Select,Modal,Form,message,Popconfirm,Descriptions,Row,Col,Rate,Timeline,Divider}from'antd';import{PlusOutlined,EditOutlined,DeleteOutlined,EyeOutlined,SearchOutlined,SwapOutlined}from'@ant-design/icons';import{candidateProjectsAPI}from'../services/api';import{useNavigate}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{TextArea}=Input;const statusColors={pending:'default',reviewing:'blue',approved:'green',rejected:'red',converted:'purple'};const statusTexts={pending:'待审核',reviewing:'审核中',approved:'已通过',rejected:'已拒绝',converted:'已转化'};const CandidateProjects=()=>{const[projects,setProjects]=useState([]);const[loading,setLoading]=useState(false);const[pagination,setPagination]=useState({current:1,pageSize:20,total:0});const[filters,setFilters]=useState({});const{isInvestmentManager}=useAuth();const navigate=useNavigate();const[modalVisible,setModalVisible]=useState(false);const[detailVisible,setDetailVisible]=useState(false);const[editingProject,setEditingProject]=useState(null);const[selectedProject,setSelectedProject]=useState(null);const[form]=Form.useForm();useEffect(()=>{fetchProjects();},[pagination.current,pagination.pageSize,filters]);const fetchProjects=async()=>{setLoading(true);try{const response=await candidateProjectsAPI.getAll({page:pagination.current,limit:pagination.pageSize,...filters});setProjects(response.data.candidate_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 handleDelete=async id=>{try{await candidateProjectsAPI.delete(id);message.success('项目删除成功');fetchProjects();}catch(error){message.error('删除失败');}};const handleConvert=async id=>{try{await candidateProjectsAPI.convert(id);message.success('项目已成功转化为正式项目');fetchProjects();}catch(error){message.error('转化失败');}};const openCreateModal=()=>{setEditingProject(null);form.resetFields();setModalVisible(true);};const openEditModal=project=>{setEditingProject(project);form.setFieldsValue({...project,companyName:project.company_name});setModalVisible(true);};const openDetailModal=project=>{setSelectedProject(project);setDetailVisible(true);};const handleModalOk=async()=>{try{const values=await form.validateFields();if(editingProject){await candidateProjectsAPI.update(editingProject.id,values);message.success('项目更新成功');}else{await candidateProjectsAPI.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)||'操作失败');}};const columns=[{title:'项目名称',dataIndex:'name',key:'name',render:(text,record)=>/*#__PURE__*/_jsx(\"a\",{onClick:()=>openDetailModal(record),children:text})},{title:'公司名称',dataIndex:'company_name',key:'company_name'},{title:'行业',dataIndex:'industry',key:'industry',render:industry=>industry&&/*#__PURE__*/_jsx(Tag,{color:\"blue\",children:industry})},{title:'来源',dataIndex:'source',key:'source'},{title:'状态',dataIndex:'status',key:'status',render:status=>/*#__PURE__*/_jsx(Tag,{color:statusColors[status],children:statusTexts[status]})},{title:'评分',dataIndex:'rating',key:'rating',render:rating=>rating&&/*#__PURE__*/_jsx(Rate,{disabled:true,defaultValue:rating})},{title:'创建人',dataIndex:'created_by_name',key:'created_by_name'},{title:'创建时间',dataIndex:'created_at',key:'created_at',render: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:()=>openDetailModal(record),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\"}),record.status!=='converted'&&/*#__PURE__*/_jsx(Button,{type:\"link\",size:\"small\",icon:/*#__PURE__*/_jsx(SwapOutlined,{}),onClick:()=>handleConvert(record.id),children:\"\\u8F6C\\u5316\"}),/*#__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\"})})]})]})}];return/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"page-header\",children:/*#__PURE__*/_jsx(\"h1\",{children:\"\\u5907\\u9009\\u9879\\u76EE\\u5E93\"})}),/*#__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\\u6216\\u516C\\u53F8\",onSearch:value=>setFilters(prev=>({...prev,search:value})),allowClear:true})}),/*#__PURE__*/_jsx(Col,{span:4,children:/*#__PURE__*/_jsx(Select,{placeholder:\"\\u72B6\\u6001\",allowClear:true,style:{width:'100%'},onChange:value=>setFilters(prev=>({...prev,status:value})),children:Object.entries(statusTexts).map(_ref=>{let[key,text]=_ref;return/*#__PURE__*/_jsx(Option,{value:key,children:text},key);})})}),/*#__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:10,style:{textAlign:'right'},children:isInvestmentManager()&&/*#__PURE__*/_jsx(Button,{type:\"primary\",icon:/*#__PURE__*/_jsx(PlusOutlined,{}),onClick:openCreateModal,children:\"\\u6DFB\\u52A0\\u5907\\u9009\\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:\"companyName\",label:\"\\u516C\\u53F8\\u540D\\u79F0\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u516C\\u53F8\\u540D\\u79F0\"})})})]}),/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:8,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__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"source\",label:\"\\u6765\\u6E90\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u9879\\u76EE\\u6765\\u6E90\"})})}),/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"status\",label:\"\\u72B6\\u6001\",children:/*#__PURE__*/_jsx(Select,{placeholder:\"\\u8BF7\\u9009\\u62E9\\u72B6\\u6001\",children:Object.entries(statusTexts).map(_ref2=>{let[key,text]=_ref2;return/*#__PURE__*/_jsx(Option,{value:key,children:text},key);})})})})]}),/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"contactPerson\",label:\"\\u8054\\u7CFB\\u4EBA\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u8054\\u7CFB\\u4EBA\"})})}),/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"contactPhone\",label:\"\\u8054\\u7CFB\\u7535\\u8BDD\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u8054\\u7CFB\\u7535\\u8BDD\"})})}),/*#__PURE__*/_jsx(Col,{span:8,children:/*#__PURE__*/_jsx(Form.Item,{name:\"contactEmail\",label:\"\\u8054\\u7CFB\\u90AE\\u7BB1\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u8054\\u7CFB\\u90AE\\u7BB1\"})})})]}),/*#__PURE__*/_jsx(Row,{gutter:16,children:/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"rating\",label:\"\\u8BC4\\u5206\",children:/*#__PURE__*/_jsx(Rate,{})})})}),/*#__PURE__*/_jsx(Form.Item,{name:\"description\",label:\"\\u9879\\u76EE\\u63CF\\u8FF0\",children:/*#__PURE__*/_jsx(TextArea,{rows:4,placeholder:\"\\u8BF7\\u8F93\\u5165\\u9879\\u76EE\\u63CF\\u8FF0\"})}),editingProject&&/*#__PURE__*/_jsx(Form.Item,{name:\"reviewNotes\",label:\"\\u5BA1\\u6838\\u5907\\u6CE8\",children:/*#__PURE__*/_jsx(TextArea,{rows:3,placeholder:\"\\u8BF7\\u8F93\\u5165\\u5BA1\\u6838\\u5907\\u6CE8\"})})]})}),/*#__PURE__*/_jsx(Modal,{title:\"\\u9879\\u76EE\\u8BE6\\u60C5\",open:detailVisible,onCancel:()=>setDetailVisible(false),footer:null,width:800,children:selectedProject&&/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(Descriptions,{bordered:true,column:2,children:[/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u9879\\u76EE\\u540D\\u79F0\",span:2,children:selectedProject.name}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u516C\\u53F8\\u540D\\u79F0\",children:selectedProject.company_name||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u884C\\u4E1A\",children:selectedProject.industry?/*#__PURE__*/_jsx(Tag,{color:\"blue\",children:selectedProject.industry}):'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u6765\\u6E90\",children:selectedProject.source||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u72B6\\u6001\",children:/*#__PURE__*/_jsx(Tag,{color:statusColors[selectedProject.status],children:statusTexts[selectedProject.status]})}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u8BC4\\u5206\",children:selectedProject.rating?/*#__PURE__*/_jsx(Rate,{disabled:true,defaultValue:selectedProject.rating}):'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u8054\\u7CFB\\u4EBA\",children:selectedProject.contact_person||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u8054\\u7CFB\\u7535\\u8BDD\",children:selectedProject.contact_phone||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u8054\\u7CFB\\u90AE\\u7BB1\",children:selectedProject.contact_email||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u521B\\u5EFA\\u4EBA\",children:selectedProject.created_by_name||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u5BA1\\u6838\\u4EBA\",children:selectedProject.reviewed_by_name||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u521B\\u5EFA\\u65F6\\u95F4\",children:dayjs(selectedProject.created_at).format('YYYY-MM-DD HH:mm')})]}),selectedProject.description&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Divider,{}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"h4\",{children:\"\\u9879\\u76EE\\u63CF\\u8FF0\"}),/*#__PURE__*/_jsx(\"p\",{children:selectedProject.description})]})]}),selectedProject.review_notes&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Divider,{}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"h4\",{children:\"\\u5BA1\\u6838\\u5907\\u6CE8\"}),/*#__PURE__*/_jsx(\"p\",{children:selectedProject.review_notes})]})]})]})})]});};export default CandidateProjects;","map":{"version":3,"names":["React","useState","useEffect","Table","Card","Button","Space","Tag","Input","Select","Modal","Form","message","Popconfirm","Descriptions","Row","Col","Rate","Timeline","Divider","PlusOutlined","EditOutlined","DeleteOutlined","EyeOutlined","SearchOutlined","SwapOutlined","candidateProjectsAPI","useNavigate","useAuth","dayjs","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Option","Search","TextArea","statusColors","pending","reviewing","approved","rejected","converted","statusTexts","CandidateProjects","projects","setProjects","loading","setLoading","pagination","setPagination","current","pageSize","total","filters","setFilters","isInvestmentManager","navigate","modalVisible","setModalVisible","detailVisible","setDetailVisible","editingProject","setEditingProject","selectedProject","setSelectedProject","form","useForm","fetchProjects","response","getAll","page","limit","data","candidate_projects","prev","_response$data$pagina","error","handleDelete","id","delete","success","handleConvert","convert","openCreateModal","resetFields","openEditModal","project","setFieldsValue","companyName","company_name","openDetailModal","handleModalOk","values","validateFields","update","create","_error$response","_error$response$data","columns","title","dataIndex","key","render","text","record","onClick","children","industry","color","status","rating","disabled","defaultValue","date","format","_","type","size","icon","onConfirm","danger","className","gutter","span","placeholder","onSearch","value","search","allowClear","style","width","onChange","Object","entries","map","_ref","textAlign","dataSource","rowKey","showSizeChanger","showQuickJumper","showTotal","open","onOk","onCancel","layout","Item","name","label","rules","required","_ref2","rows","footer","bordered","column","source","contact_person","contact_phone","contact_email","created_by_name","reviewed_by_name","created_at","description","review_notes"],"sources":["/Users/nili/Documents/trae_projects/client/src/pages/CandidateProjects.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  Rate,\n  Timeline,\n  Divider\n} from 'antd';\nimport {\n  PlusOutlined,\n  EditOutlined,\n  DeleteOutlined,\n  EyeOutlined,\n  SearchOutlined,\n  SwapOutlined\n} from '@ant-design/icons';\nimport { candidateProjectsAPI } from '../services/api';\nimport { useNavigate } from 'react-router-dom';\nimport { useAuth } from '../contexts/AuthContext';\nimport dayjs from 'dayjs';\n\nconst { Option } = Select;\nconst { Search } = Input;\nconst { TextArea } = Input;\n\nconst statusColors = {\n  pending: 'default',\n  reviewing: 'blue',\n  approved: 'green',\n  rejected: 'red',\n  converted: 'purple'\n};\n\nconst statusTexts = {\n  pending: '待审核',\n  reviewing: '审核中',\n  approved: '已通过',\n  rejected: '已拒绝',\n  converted: '已转化'\n};\n\nconst CandidateProjects = () => {\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 { isInvestmentManager } = useAuth();\n  const navigate = useNavigate();\n\n  const [modalVisible, setModalVisible] = useState(false);\n  const [detailVisible, setDetailVisible] = useState(false);\n  const [editingProject, setEditingProject] = useState(null);\n  const [selectedProject, setSelectedProject] = useState(null);\n  const [form] = Form.useForm();\n\n  useEffect(() => {\n    fetchProjects();\n  }, [pagination.current, pagination.pageSize, filters]);\n\n  const fetchProjects = async () => {\n    setLoading(true);\n    try {\n      const response = await candidateProjectsAPI.getAll({\n        page: pagination.current,\n        limit: pagination.pageSize,\n        ...filters\n      });\n      setProjects(response.data.candidate_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 handleDelete = async (id) => {\n    try {\n      await candidateProjectsAPI.delete(id);\n      message.success('项目删除成功');\n      fetchProjects();\n    } catch (error) {\n      message.error('删除失败');\n    }\n  };\n\n  const handleConvert = async (id) => {\n    try {\n      await candidateProjectsAPI.convert(id);\n      message.success('项目已成功转化为正式项目');\n      fetchProjects();\n    } catch (error) {\n      message.error('转化失败');\n    }\n  };\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    });\n    setModalVisible(true);\n  };\n\n  const openDetailModal = (project) => {\n    setSelectedProject(project);\n    setDetailVisible(true);\n  };\n\n  const handleModalOk = async () => {\n    try {\n      const values = await form.validateFields();\n      if (editingProject) {\n        await candidateProjectsAPI.update(editingProject.id, values);\n        message.success('项目更新成功');\n      } else {\n        await candidateProjectsAPI.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  const columns = [\n    {\n      title: '项目名称',\n      dataIndex: 'name',\n      key: 'name',\n      render: (text, record) => (\n        <a onClick={() => openDetailModal(record)}>{text}</a>\n      )\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: 'source',\n      key: 'source'\n    },\n    {\n      title: '状态',\n      dataIndex: 'status',\n      key: 'status',\n      render: (status) => (\n        <Tag color={statusColors[status]}>{statusTexts[status]}</Tag>\n      )\n    },\n    {\n      title: '评分',\n      dataIndex: 'rating',\n      key: 'rating',\n      render: (rating) => rating && <Rate disabled defaultValue={rating} />\n    },\n    {\n      title: '创建人',\n      dataIndex: 'created_by_name',\n      key: 'created_by_name'\n    },\n    {\n      title: '创建时间',\n      dataIndex: 'created_at',\n      key: 'created_at',\n      render: (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={() => openDetailModal(record)}>\n            查看\n          </Button>\n          {isInvestmentManager() && (\n            <>\n              <Button type=\"link\" size=\"small\" icon={<EditOutlined />} onClick={() => openEditModal(record)}>\n                编辑\n              </Button>\n              {record.status !== 'converted' && (\n                <Button type=\"link\" size=\"small\" icon={<SwapOutlined />} onClick={() => handleConvert(record.id)}>\n                  转化\n                </Button>\n              )}\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  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                {Object.entries(statusTexts).map(([key, text]) => (\n                  <Option key={key} value={key}>{text}</Option>\n                ))}\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={10} 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=\"companyName\" label=\"公司名称\">\n                <Input placeholder=\"请输入公司名称\" />\n              </Form.Item>\n            </Col>\n          </Row>\n          <Row gutter={16}>\n            <Col span={8}>\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            <Col span={8}>\n              <Form.Item name=\"source\" label=\"来源\">\n                <Input placeholder=\"请输入项目来源\" />\n              </Form.Item>\n            </Col>\n            <Col span={8}>\n              <Form.Item name=\"status\" label=\"状态\">\n                <Select placeholder=\"请选择状态\">\n                  {Object.entries(statusTexts).map(([key, text]) => (\n                    <Option key={key} value={key}>{text}</Option>\n                  ))}\n                </Select>\n              </Form.Item>\n            </Col>\n          </Row>\n          <Row gutter={16}>\n            <Col span={8}>\n              <Form.Item name=\"contactPerson\" label=\"联系人\">\n                <Input placeholder=\"请输入联系人\" />\n              </Form.Item>\n            </Col>\n            <Col span={8}>\n              <Form.Item name=\"contactPhone\" label=\"联系电话\">\n                <Input placeholder=\"请输入联系电话\" />\n              </Form.Item>\n            </Col>\n            <Col span={8}>\n              <Form.Item name=\"contactEmail\" label=\"联系邮箱\">\n                <Input placeholder=\"请输入联系邮箱\" />\n              </Form.Item>\n            </Col>\n          </Row>\n          <Row gutter={16}>\n            <Col span={12}>\n              <Form.Item name=\"rating\" label=\"评分\">\n                <Rate />\n              </Form.Item>\n            </Col>\n          </Row>\n          <Form.Item name=\"description\" label=\"项目描述\">\n            <TextArea rows={4} placeholder=\"请输入项目描述\" />\n          </Form.Item>\n          {editingProject && (\n            <Form.Item name=\"reviewNotes\" label=\"审核备注\">\n              <TextArea rows={3} placeholder=\"请输入审核备注\" />\n            </Form.Item>\n          )}\n        </Form>\n      </Modal>\n\n      <Modal\n        title=\"项目详情\"\n        open={detailVisible}\n        onCancel={() => setDetailVisible(false)}\n        footer={null}\n        width={800}\n      >\n        {selectedProject && (\n          <div>\n            <Descriptions bordered column={2}>\n              <Descriptions.Item label=\"项目名称\" span={2}>\n                {selectedProject.name}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"公司名称\">\n                {selectedProject.company_name || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"行业\">\n                {selectedProject.industry ? <Tag color=\"blue\">{selectedProject.industry}</Tag> : '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"来源\">\n                {selectedProject.source || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"状态\">\n                <Tag color={statusColors[selectedProject.status]}>\n                  {statusTexts[selectedProject.status]}\n                </Tag>\n              </Descriptions.Item>\n              <Descriptions.Item label=\"评分\">\n                {selectedProject.rating ? <Rate disabled defaultValue={selectedProject.rating} /> : '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"联系人\">\n                {selectedProject.contact_person || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"联系电话\">\n                {selectedProject.contact_phone || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"联系邮箱\">\n                {selectedProject.contact_email || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"创建人\">\n                {selectedProject.created_by_name || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"审核人\">\n                {selectedProject.reviewed_by_name || '-'}\n              </Descriptions.Item>\n              <Descriptions.Item label=\"创建时间\">\n                {dayjs(selectedProject.created_at).format('YYYY-MM-DD HH:mm')}\n              </Descriptions.Item>\n            </Descriptions>\n\n            {selectedProject.description && (\n              <>\n                <Divider />\n                <div>\n                  <h4>项目描述</h4>\n                  <p>{selectedProject.description}</p>\n                </div>\n              </>\n            )}\n\n            {selectedProject.review_notes && (\n              <>\n                <Divider />\n                <div>\n                  <h4>审核备注</h4>\n                  <p>{selectedProject.review_notes}</p>\n                </div>\n              </>\n            )}\n          </div>\n        )}\n      </Modal>\n    </div>\n  );\n};\n\nexport default CandidateProjects;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}