{"ast":null,"code":"import React,{useState,useEffect}from'react';import{Card,Descriptions,Button,Tag,Table,message}from'antd';import{ArrowLeftOutlined}from'@ant-design/icons';import{useParams,useNavigate}from'react-router-dom';import{investorsAPI}from'../services/api';import dayjs from'dayjs';import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";const InvestorDetail=()=>{const{id}=useParams();const navigate=useNavigate();const[investor,setInvestor]=useState(null);const[loading,setLoading]=useState(true);useEffect(()=>{fetchInvestor();},[id]);const fetchInvestor=async()=>{setLoading(true);try{const response=await investorsAPI.getOne(id);setInvestor(response.data);}catch(error){message.error('获取投资者详情失败');}finally{setLoading(false);}};if(loading)return/*#__PURE__*/_jsx(\"div\",{children:\"\\u52A0\\u8F7D\\u4E2D...\"});if(!investor)return/*#__PURE__*/_jsx(\"div\",{children:\"\\u6295\\u8D44\\u8005\\u4E0D\\u5B58\\u5728\"});const getTypeColor=type=>{const colors={individual:'blue',institutional:'purple',government:'orange'};return colors[type]||'default';};const getTypeText=type=>{const texts={individual:'个人',institutional:'机构',government:'政府'};return texts[type]||type;};const getRiskColor=level=>{const colors={low:'green',medium:'orange',high:'red'};return colors[level]||'default';};const getRiskText=level=>{const texts={low:'低风险',medium:'中风险',high:'高风险'};return texts[level]||level;};const investmentColumns=[{title:'项目名称',dataIndex:'project_name',key:'project_name'},{title:'项目代码',dataIndex:'project_code',key:'project_code'},{title:'投资金额',dataIndex:'investment_amount',key:'investment_amount',render:a=>a?`¥${a.toLocaleString()}`:'-'},{title:'股权比例',dataIndex:'equity_ratio',key:'equity_ratio',render:r=>r?`${r}%`:'-'},{title:'投资日期',dataIndex:'investment_date',key:'investment_date',render:d=>d?dayjs(d).format('YYYY-MM-DD'):'-'}];return/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{marginBottom:16},children:/*#__PURE__*/_jsx(Button,{icon:/*#__PURE__*/_jsx(ArrowLeftOutlined,{}),onClick:()=>navigate('/investors'),children:\"\\u8FD4\\u56DE\"})}),/*#__PURE__*/_jsxs(Card,{title:investor.investor.name,children:[/*#__PURE__*/_jsxs(Descriptions,{column:2,style:{marginBottom:24},children:[/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u6295\\u8D44\\u8005\\u540D\\u79F0\",children:investor.investor.name}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u7C7B\\u578B\",children:/*#__PURE__*/_jsx(Tag,{color:getTypeColor(investor.investor.type),children:getTypeText(investor.investor.type)})}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u516C\\u53F8\",children:investor.investor.company||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u8054\\u7CFB\\u4EBA\",children:investor.investor.contact_person||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u90AE\\u7BB1\",children:investor.investor.email||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u7535\\u8BDD\",children:investor.investor.phone||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u5730\\u5740\",children:investor.investor.address||'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u7D2F\\u8BA1\\u6295\\u8D44\",children:investor.investor.total_investment?`¥${investor.investor.total_investment.toLocaleString()}`:'-'}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u98CE\\u9669\\u7B49\\u7EA7\",children:/*#__PURE__*/_jsx(Tag,{color:getRiskColor(investor.investor.risk_level),children:getRiskText(investor.investor.risk_level)})}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u521B\\u5EFA\\u4EBA\",children:investor.investor.created_by_name}),/*#__PURE__*/_jsx(Descriptions.Item,{label:\"\\u521B\\u5EFA\\u65F6\\u95F4\",span:2,children:dayjs(investor.investor.created_at).format('YYYY-MM-DD HH:mm')})]}),investor.investor.notes&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"h4\",{style:{marginBottom:8},children:\"\\u5907\\u6CE8\"}),/*#__PURE__*/_jsx(\"p\",{style:{color:'#666',marginBottom:24},children:investor.investor.notes})]}),/*#__PURE__*/_jsx(\"h4\",{style:{marginBottom:16},children:\"\\u6295\\u8D44\\u8BB0\\u5F55\"}),/*#__PURE__*/_jsx(Table,{columns:investmentColumns,dataSource:investor.investments,rowKey:\"id\",pagination:false,size:\"small\"})]})]});};export default InvestorDetail;","map":{"version":3,"names":["React","useState","useEffect","Card","Descriptions","Button","Tag","Table","message","ArrowLeftOutlined","useParams","useNavigate","investorsAPI","dayjs","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","InvestorDetail","id","navigate","investor","setInvestor","loading","setLoading","fetchInvestor","response","getOne","data","error","children","getTypeColor","type","colors","individual","institutional","government","getTypeText","texts","getRiskColor","level","low","medium","high","getRiskText","investmentColumns","title","dataIndex","key","render","a","toLocaleString","r","d","format","style","marginBottom","icon","onClick","name","column","Item","label","color","company","contact_person","email","phone","address","total_investment","risk_level","created_by_name","span","created_at","notes","columns","dataSource","investments","rowKey","pagination","size"],"sources":["/Users/nili/Documents/trae_projects/client/src/pages/InvestorDetail.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Card, Descriptions, Button, Tag, Table, message } from 'antd';\nimport { ArrowLeftOutlined } from '@ant-design/icons';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { investorsAPI } from '../services/api';\nimport dayjs from 'dayjs';\n\nconst InvestorDetail = () => {\n  const { id } = useParams();\n  const navigate = useNavigate();\n  const [investor, setInvestor] = useState(null);\n  const [loading, setLoading] = useState(true);\n\n  useEffect(() => {\n    fetchInvestor();\n  }, [id]);\n\n  const fetchInvestor = async () => {\n    setLoading(true);\n    try {\n      const response = await investorsAPI.getOne(id);\n      setInvestor(response.data);\n    } catch (error) {\n      message.error('获取投资者详情失败');\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  if (loading) return <div>加载中...</div>;\n  if (!investor) return <div>投资者不存在</div>;\n\n  const getTypeColor = (type) => {\n    const colors = { individual: 'blue', institutional: 'purple', government: 'orange' };\n    return colors[type] || 'default';\n  };\n\n  const getTypeText = (type) => {\n    const texts = { individual: '个人', institutional: '机构', government: '政府' };\n    return texts[type] || type;\n  };\n\n  const getRiskColor = (level) => {\n    const colors = { low: 'green', medium: 'orange', high: 'red' };\n    return colors[level] || 'default';\n  };\n\n  const getRiskText = (level) => {\n    const texts = { low: '低风险', medium: '中风险', high: '高风险' };\n    return texts[level] || level;\n  };\n\n  const investmentColumns = [\n    { title: '项目名称', dataIndex: 'project_name', key: 'project_name' },\n    { title: '项目代码', dataIndex: 'project_code', key: 'project_code' },\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\n  return (\n    <div>\n      <div style={{ marginBottom: 16 }}>\n        <Button icon={<ArrowLeftOutlined />} onClick={() => navigate('/investors')}>返回</Button>\n      </div>\n\n      <Card title={investor.investor.name}>\n        <Descriptions column={2} style={{ marginBottom: 24 }}>\n          <Descriptions.Item label=\"投资者名称\">{investor.investor.name}</Descriptions.Item>\n          <Descriptions.Item label=\"类型\">\n            <Tag color={getTypeColor(investor.investor.type)}>{getTypeText(investor.investor.type)}</Tag>\n          </Descriptions.Item>\n          <Descriptions.Item label=\"公司\">{investor.investor.company || '-'}</Descriptions.Item>\n          <Descriptions.Item label=\"联系人\">{investor.investor.contact_person || '-'}</Descriptions.Item>\n          <Descriptions.Item label=\"邮箱\">{investor.investor.email || '-'}</Descriptions.Item>\n          <Descriptions.Item label=\"电话\">{investor.investor.phone || '-'}</Descriptions.Item>\n          <Descriptions.Item label=\"地址\">{investor.investor.address || '-'}</Descriptions.Item>\n          <Descriptions.Item label=\"累计投资\">{investor.investor.total_investment ? `¥${investor.investor.total_investment.toLocaleString()}` : '-'}</Descriptions.Item>\n          <Descriptions.Item label=\"风险等级\">\n            <Tag color={getRiskColor(investor.investor.risk_level)}>{getRiskText(investor.investor.risk_level)}</Tag>\n          </Descriptions.Item>\n          <Descriptions.Item label=\"创建人\">{investor.investor.created_by_name}</Descriptions.Item>\n          <Descriptions.Item label=\"创建时间\" span={2}>{dayjs(investor.investor.created_at).format('YYYY-MM-DD HH:mm')}</Descriptions.Item>\n        </Descriptions>\n\n        {investor.investor.notes && (\n          <>\n            <h4 style={{ marginBottom: 8 }}>备注</h4>\n            <p style={{ color: '#666', marginBottom: 24 }}>{investor.investor.notes}</p>\n          </>\n        )}\n\n        <h4 style={{ marginBottom: 16 }}>投资记录</h4>\n        <Table\n          columns={investmentColumns}\n          dataSource={investor.investments}\n          rowKey=\"id\"\n          pagination={false}\n          size=\"small\"\n        />\n      </Card>\n    </div>\n  );\n};\n\nexport default InvestorDetail;\n"],"mappings":"AAAA,MAAO,CAAAA,KAAK,EAAIC,QAAQ,CAAEC,SAAS,KAAQ,OAAO,CAClD,OAASC,IAAI,CAAEC,YAAY,CAAEC,MAAM,CAAEC,GAAG,CAAEC,KAAK,CAAEC,OAAO,KAAQ,MAAM,CACtE,OAASC,iBAAiB,KAAQ,mBAAmB,CACrD,OAASC,SAAS,CAAEC,WAAW,KAAQ,kBAAkB,CACzD,OAASC,YAAY,KAAQ,iBAAiB,CAC9C,MAAO,CAAAC,KAAK,KAAM,OAAO,CAAC,OAAAC,GAAA,IAAAC,IAAA,CAAAC,IAAA,IAAAC,KAAA,CAAAC,QAAA,IAAAC,SAAA,yBAE1B,KAAM,CAAAC,cAAc,CAAGA,CAAA,GAAM,CAC3B,KAAM,CAAEC,EAAG,CAAC,CAAGX,SAAS,CAAC,CAAC,CAC1B,KAAM,CAAAY,QAAQ,CAAGX,WAAW,CAAC,CAAC,CAC9B,KAAM,CAACY,QAAQ,CAAEC,WAAW,CAAC,CAAGvB,QAAQ,CAAC,IAAI,CAAC,CAC9C,KAAM,CAACwB,OAAO,CAAEC,UAAU,CAAC,CAAGzB,QAAQ,CAAC,IAAI,CAAC,CAE5CC,SAAS,CAAC,IAAM,CACdyB,aAAa,CAAC,CAAC,CACjB,CAAC,CAAE,CAACN,EAAE,CAAC,CAAC,CAER,KAAM,CAAAM,aAAa,CAAG,KAAAA,CAAA,GAAY,CAChCD,UAAU,CAAC,IAAI,CAAC,CAChB,GAAI,CACF,KAAM,CAAAE,QAAQ,CAAG,KAAM,CAAAhB,YAAY,CAACiB,MAAM,CAACR,EAAE,CAAC,CAC9CG,WAAW,CAACI,QAAQ,CAACE,IAAI,CAAC,CAC5B,CAAE,MAAOC,KAAK,CAAE,CACdvB,OAAO,CAACuB,KAAK,CAAC,WAAW,CAAC,CAC5B,CAAC,OAAS,CACRL,UAAU,CAAC,KAAK,CAAC,CACnB,CACF,CAAC,CAED,GAAID,OAAO,CAAE,mBAAOV,IAAA,QAAAiB,QAAA,CAAK,uBAAM,CAAK,CAAC,CACrC,GAAI,CAACT,QAAQ,CAAE,mBAAOR,IAAA,QAAAiB,QAAA,CAAK,sCAAM,CAAK,CAAC,CAEvC,KAAM,CAAAC,YAAY,CAAIC,IAAI,EAAK,CAC7B,KAAM,CAAAC,MAAM,CAAG,CAAEC,UAAU,CAAE,MAAM,CAAEC,aAAa,CAAE,QAAQ,CAAEC,UAAU,CAAE,QAAS,CAAC,CACpF,MAAO,CAAAH,MAAM,CAACD,IAAI,CAAC,EAAI,SAAS,CAClC,CAAC,CAED,KAAM,CAAAK,WAAW,CAAIL,IAAI,EAAK,CAC5B,KAAM,CAAAM,KAAK,CAAG,CAAEJ,UAAU,CAAE,IAAI,CAAEC,aAAa,CAAE,IAAI,CAAEC,UAAU,CAAE,IAAK,CAAC,CACzE,MAAO,CAAAE,KAAK,CAACN,IAAI,CAAC,EAAIA,IAAI,CAC5B,CAAC,CAED,KAAM,CAAAO,YAAY,CAAIC,KAAK,EAAK,CAC9B,KAAM,CAAAP,MAAM,CAAG,CAAEQ,GAAG,CAAE,OAAO,CAAEC,MAAM,CAAE,QAAQ,CAAEC,IAAI,CAAE,KAAM,CAAC,CAC9D,MAAO,CAAAV,MAAM,CAACO,KAAK,CAAC,EAAI,SAAS,CACnC,CAAC,CAED,KAAM,CAAAI,WAAW,CAAIJ,KAAK,EAAK,CAC7B,KAAM,CAAAF,KAAK,CAAG,CAAEG,GAAG,CAAE,KAAK,CAAEC,MAAM,CAAE,KAAK,CAAEC,IAAI,CAAE,KAAM,CAAC,CACxD,MAAO,CAAAL,KAAK,CAACE,KAAK,CAAC,EAAIA,KAAK,CAC9B,CAAC,CAED,KAAM,CAAAK,iBAAiB,CAAG,CACxB,CAAEC,KAAK,CAAE,MAAM,CAAEC,SAAS,CAAE,cAAc,CAAEC,GAAG,CAAE,cAAe,CAAC,CACjE,CAAEF,KAAK,CAAE,MAAM,CAAEC,SAAS,CAAE,cAAc,CAAEC,GAAG,CAAE,cAAe,CAAC,CACjE,CACEF,KAAK,CAAE,MAAM,CACbC,SAAS,CAAE,mBAAmB,CAC9BC,GAAG,CAAE,mBAAmB,CACxBC,MAAM,CAAGC,CAAC,EAAKA,CAAC,CAAG,IAAIA,CAAC,CAACC,cAAc,CAAC,CAAC,EAAE,CAAG,GAChD,CAAC,CACD,CACEL,KAAK,CAAE,MAAM,CACbC,SAAS,CAAE,cAAc,CACzBC,GAAG,CAAE,cAAc,CACnBC,MAAM,CAAGG,CAAC,EAAKA,CAAC,CAAG,GAAGA,CAAC,GAAG,CAAG,GAC/B,CAAC,CACD,CACEN,KAAK,CAAE,MAAM,CACbC,SAAS,CAAE,iBAAiB,CAC5BC,GAAG,CAAE,iBAAiB,CACtBC,MAAM,CAAGI,CAAC,EAAKA,CAAC,CAAG1C,KAAK,CAAC0C,CAAC,CAAC,CAACC,MAAM,CAAC,YAAY,CAAC,CAAG,GACrD,CAAC,CACF,CAED,mBACEvC,KAAA,QAAAe,QAAA,eACEjB,IAAA,QAAK0C,KAAK,CAAE,CAAEC,YAAY,CAAE,EAAG,CAAE,CAAA1B,QAAA,cAC/BjB,IAAA,CAACV,MAAM,EAACsD,IAAI,cAAE5C,IAAA,CAACN,iBAAiB,GAAE,CAAE,CAACmD,OAAO,CAAEA,CAAA,GAAMtC,QAAQ,CAAC,YAAY,CAAE,CAAAU,QAAA,CAAC,cAAE,CAAQ,CAAC,CACpF,CAAC,cAENf,KAAA,CAACd,IAAI,EAAC6C,KAAK,CAAEzB,QAAQ,CAACA,QAAQ,CAACsC,IAAK,CAAA7B,QAAA,eAClCf,KAAA,CAACb,YAAY,EAAC0D,MAAM,CAAE,CAAE,CAACL,KAAK,CAAE,CAAEC,YAAY,CAAE,EAAG,CAAE,CAAA1B,QAAA,eACnDjB,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,gCAAO,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAACsC,IAAI,CAAoB,CAAC,cAC7E9C,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,cAAI,CAAAhC,QAAA,cAC3BjB,IAAA,CAACT,GAAG,EAAC2D,KAAK,CAAEhC,YAAY,CAACV,QAAQ,CAACA,QAAQ,CAACW,IAAI,CAAE,CAAAF,QAAA,CAAEO,WAAW,CAAChB,QAAQ,CAACA,QAAQ,CAACW,IAAI,CAAC,CAAM,CAAC,CAC5E,CAAC,cACpBnB,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,cAAI,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAAC2C,OAAO,EAAI,GAAG,CAAoB,CAAC,cACpFnD,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,oBAAK,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAAC4C,cAAc,EAAI,GAAG,CAAoB,CAAC,cAC5FpD,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,cAAI,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAAC6C,KAAK,EAAI,GAAG,CAAoB,CAAC,cAClFrD,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,cAAI,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAAC8C,KAAK,EAAI,GAAG,CAAoB,CAAC,cAClFtD,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,cAAI,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAAC+C,OAAO,EAAI,GAAG,CAAoB,CAAC,cACpFvD,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,0BAAM,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAACgD,gBAAgB,CAAG,IAAIhD,QAAQ,CAACA,QAAQ,CAACgD,gBAAgB,CAAClB,cAAc,CAAC,CAAC,EAAE,CAAG,GAAG,CAAoB,CAAC,cAC1JtC,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,0BAAM,CAAAhC,QAAA,cAC7BjB,IAAA,CAACT,GAAG,EAAC2D,KAAK,CAAExB,YAAY,CAAClB,QAAQ,CAACA,QAAQ,CAACiD,UAAU,CAAE,CAAAxC,QAAA,CAAEc,WAAW,CAACvB,QAAQ,CAACA,QAAQ,CAACiD,UAAU,CAAC,CAAM,CAAC,CACxF,CAAC,cACpBzD,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,oBAAK,CAAAhC,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAACkD,eAAe,CAAoB,CAAC,cACtF1D,IAAA,CAACX,YAAY,CAAC2D,IAAI,EAACC,KAAK,CAAC,0BAAM,CAACU,IAAI,CAAE,CAAE,CAAA1C,QAAA,CAAEnB,KAAK,CAACU,QAAQ,CAACA,QAAQ,CAACoD,UAAU,CAAC,CAACnB,MAAM,CAAC,kBAAkB,CAAC,CAAoB,CAAC,EACjH,CAAC,CAEdjC,QAAQ,CAACA,QAAQ,CAACqD,KAAK,eACtB3D,KAAA,CAAAE,SAAA,EAAAa,QAAA,eACEjB,IAAA,OAAI0C,KAAK,CAAE,CAAEC,YAAY,CAAE,CAAE,CAAE,CAAA1B,QAAA,CAAC,cAAE,CAAI,CAAC,cACvCjB,IAAA,MAAG0C,KAAK,CAAE,CAAEQ,KAAK,CAAE,MAAM,CAAEP,YAAY,CAAE,EAAG,CAAE,CAAA1B,QAAA,CAAET,QAAQ,CAACA,QAAQ,CAACqD,KAAK,CAAI,CAAC,EAC5E,CACH,cAED7D,IAAA,OAAI0C,KAAK,CAAE,CAAEC,YAAY,CAAE,EAAG,CAAE,CAAA1B,QAAA,CAAC,0BAAI,CAAI,CAAC,cAC1CjB,IAAA,CAACR,KAAK,EACJsE,OAAO,CAAE9B,iBAAkB,CAC3B+B,UAAU,CAAEvD,QAAQ,CAACwD,WAAY,CACjCC,MAAM,CAAC,IAAI,CACXC,UAAU,CAAE,KAAM,CAClBC,IAAI,CAAC,OAAO,CACb,CAAC,EACE,CAAC,EACJ,CAAC,CAEV,CAAC,CAED,cAAe,CAAA9D,cAAc","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}