{"ast":null,"code":"import React,{useState,useEffect}from'react';import{Table,Card,Button,Space,Tag,Input,Select,Modal,Form,message,Popconfirm,Row,Col}from'antd';import{PlusOutlined,EditOutlined,DeleteOutlined,LockOutlined}from'@ant-design/icons';import{usersAPI}from'../services/api';import{useAuth}from'../contexts/AuthContext';import dayjs from'dayjs';import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";const{Option}=Select;const Users=()=>{const[users,setUsers]=useState([]);const[loading,setLoading]=useState(false);const[pagination,setPagination]=useState({current:1,pageSize:20,total:0});const[filters,setFilters]=useState({});const{user:currentUser}=useAuth();useEffect(()=>{fetchUsers();},[pagination.current,pagination.pageSize,filters]);const fetchUsers=async()=>{setLoading(true);try{const response=await usersAPI.getAll({page:pagination.current,limit:pagination.pageSize,...filters});setUsers(response.data.users);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 usersAPI.delete(id);message.success('用户删除成功');fetchUsers();}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 getRoleColor=role=>{const colors={admin:'red',investment_manager:'blue',analyst:'purple',user:'default'};return colors[role]||'default';};const getRoleText=role=>{const texts={admin:'超级管理员',investment_manager:'投资经理',analyst:'分析师',user:'普通用户'};return texts[role]||role;};const columns=[{title:'用户名',dataIndex:'username',key:'username'},{title:'姓名',dataIndex:'full_name',key:'full_name'},{title:'邮箱',dataIndex:'email',key:'email'},{title:'电话',dataIndex:'phone',key:'phone'},{title:'部门',dataIndex:'department',key:'department'},{title:'角色',dataIndex:'role',key:'role',render:role=>/*#__PURE__*/_jsx(Tag,{color:getRoleColor(role),children:getRoleText(role)})},{title:'状态',dataIndex:'is_active',key:'is_active',render:active=>/*#__PURE__*/_jsx(Tag,{color:active?'green':'red',children:active?'启用':'禁用'})},{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(EditOutlined,{}),onClick:()=>openEditModal(record),children:\"\\u7F16\\u8F91\"}),record.id!==(currentUser===null||currentUser===void 0?void 0:currentUser.id)&&/*#__PURE__*/_jsx(Popconfirm,{title:\"\\u786E\\u5B9A\\u8981\\u5220\\u9664\\u8FD9\\u4E2A\\u7528\\u6237\\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[editingUser,setEditingUser]=useState(null);const[form]=Form.useForm();const openCreateModal=()=>{setEditingUser(null);form.resetFields();setModalVisible(true);};const openEditModal=user=>{setEditingUser(user);form.setFieldsValue({...user,fullName:user.full_name,isActive:user.is_active===1});setModalVisible(true);};const handleModalOk=async()=>{try{const values=await form.validateFields();if(editingUser){await usersAPI.update(editingUser.id,values);message.success('用户更新成功');}else{await usersAPI.create(values);message.success('用户创建成功');}setModalVisible(false);fetchUsers();}catch(error){var _error$response2,_error$response2$data;message.error(((_error$response2=error.response)===null||_error$response2===void 0?void 0:(_error$response2$data=_error$response2.data)===null||_error$response2$data===void 0?void 0:_error$response2$data.message)||'操作失败');}};return/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"page-header\",children:/*#__PURE__*/_jsx(\"h1\",{children:\"\\u7528\\u6237\\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(Input,{placeholder:\"\\u641C\\u7D22\\u7528\\u6237\\u540D\\u3001\\u59D3\\u540D\\u6216\\u90AE\\u7BB1\",onPressEnter:e=>setFilters(prev=>({...prev,search:e.target.value})),allowClear:true})}),/*#__PURE__*/_jsx(Col,{span:4,children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u89D2\\u8272\",allowClear:true,style:{width:'100%'},onChange:value=>setFilters(prev=>({...prev,role:value})),children:[/*#__PURE__*/_jsx(Option,{value:\"admin\",children:\"\\u8D85\\u7EA7\\u7BA1\\u7406\\u5458\"}),/*#__PURE__*/_jsx(Option,{value:\"investment_manager\",children:\"\\u6295\\u8D44\\u7ECF\\u7406\"}),/*#__PURE__*/_jsx(Option,{value:\"analyst\",children:\"\\u5206\\u6790\\u5E08\"}),/*#__PURE__*/_jsx(Option,{value:\"user\",children:\"\\u666E\\u901A\\u7528\\u6237\"})]})}),/*#__PURE__*/_jsx(Col,{span:14,style:{textAlign:'right'},children:/*#__PURE__*/_jsx(Button,{type:\"primary\",icon:/*#__PURE__*/_jsx(PlusOutlined,{}),onClick:openCreateModal,children:\"\\u65B0\\u5EFA\\u7528\\u6237\"})})]})}),/*#__PURE__*/_jsx(Table,{columns:columns,dataSource:users,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:editingUser?'编辑用户':'新建用户',open:modalVisible,onOk:handleModalOk,onCancel:()=>setModalVisible(false),width:600,children:/*#__PURE__*/_jsxs(Form,{form:form,layout:\"vertical\",children:[!editingUser&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Form.Item,{name:\"username\",label:\"\\u7528\\u6237\\u540D\",rules:[{required:true,message:'请输入用户名'}],children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u7528\\u6237\\u540D\"})}),/*#__PURE__*/_jsx(Form.Item,{name:\"password\",label:\"\\u5BC6\\u7801\",rules:[{required:true,message:'请输入密码'}],children:/*#__PURE__*/_jsx(Input.Password,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u5BC6\\u7801\"})})]}),/*#__PURE__*/_jsx(Form.Item,{name:\"fullName\",label:\"\\u59D3\\u540D\",rules:[{required:true,message:'请输入姓名'}],children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u59D3\\u540D\"})}),/*#__PURE__*/_jsx(Form.Item,{name:\"email\",label:\"\\u90AE\\u7BB1\",rules:[{required:true,type:'email',message:'请输入有效的邮箱'}],children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u90AE\\u7BB1\"})}),/*#__PURE__*/_jsxs(Row,{gutter:16,children:[/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"phone\",label:\"\\u7535\\u8BDD\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u7535\\u8BDD\"})})}),/*#__PURE__*/_jsx(Col,{span:12,children:/*#__PURE__*/_jsx(Form.Item,{name:\"department\",label:\"\\u90E8\\u95E8\",children:/*#__PURE__*/_jsx(Input,{placeholder:\"\\u8BF7\\u8F93\\u5165\\u90E8\\u95E8\"})})})]}),/*#__PURE__*/_jsx(Form.Item,{name:\"role\",label:\"\\u89D2\\u8272\",rules:[{required:true,message:'请选择角色'}],initialValue:\"user\",children:/*#__PURE__*/_jsxs(Select,{placeholder:\"\\u8BF7\\u9009\\u62E9\\u89D2\\u8272\",children:[/*#__PURE__*/_jsx(Option,{value:\"admin\",children:\"\\u8D85\\u7EA7\\u7BA1\\u7406\\u5458\"}),/*#__PURE__*/_jsx(Option,{value:\"investment_manager\",children:\"\\u6295\\u8D44\\u7ECF\\u7406\"}),/*#__PURE__*/_jsx(Option,{value:\"analyst\",children:\"\\u5206\\u6790\\u5E08\"}),/*#__PURE__*/_jsx(Option,{value:\"user\",children:\"\\u666E\\u901A\\u7528\\u6237\"})]})}),editingUser&&/*#__PURE__*/_jsx(Form.Item,{name:\"isActive\",label:\"\\u72B6\\u6001\",valuePropName:\"checked\",children:/*#__PURE__*/_jsxs(Select,{children:[/*#__PURE__*/_jsx(Option,{value:true,children:\"\\u542F\\u7528\"}),/*#__PURE__*/_jsx(Option,{value:false,children:\"\\u7981\\u7528\"})]})})]})})]});};export default Users;","map":{"version":3,"names":["React","useState","useEffect","Table","Card","Button","Space","Tag","Input","Select","Modal","Form","message","Popconfirm","Row","Col","PlusOutlined","EditOutlined","DeleteOutlined","LockOutlined","usersAPI","useAuth","dayjs","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Option","Users","users","setUsers","loading","setLoading","pagination","setPagination","current","pageSize","total","filters","setFilters","user","currentUser","fetchUsers","response","getAll","page","limit","data","prev","_response$data$pagina","error","handleDelete","id","delete","success","_error$response","_error$response$data","getRoleColor","role","colors","admin","investment_manager","analyst","getRoleText","texts","columns","title","dataIndex","key","render","color","children","active","date","format","_","record","type","size","icon","onClick","openEditModal","onConfirm","danger","modalVisible","setModalVisible","editingUser","setEditingUser","form","useForm","openCreateModal","resetFields","setFieldsValue","fullName","full_name","isActive","is_active","handleModalOk","values","validateFields","update","create","_error$response2","_error$response2$data","className","gutter","span","placeholder","onPressEnter","e","search","target","value","allowClear","style","width","onChange","textAlign","dataSource","rowKey","showSizeChanger","showQuickJumper","showTotal","open","onOk","onCancel","layout","Item","name","label","rules","required","Password","initialValue","valuePropName"],"sources":["/Users/nili/Documents/trae_projects/client/src/pages/Users.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Table, Card, Button, Space, Tag, Input, Select, Modal, Form, message, Popconfirm, Row, Col } from 'antd';\nimport { PlusOutlined, EditOutlined, DeleteOutlined, LockOutlined } from '@ant-design/icons';\nimport { usersAPI } from '../services/api';\nimport { useAuth } from '../contexts/AuthContext';\nimport dayjs from 'dayjs';\n\nconst { Option } = Select;\n\nconst Users = () => {\n  const [users, setUsers] = 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 { user: currentUser } = useAuth();\n\n  useEffect(() => {\n    fetchUsers();\n  }, [pagination.current, pagination.pageSize, filters]);\n\n  const fetchUsers = async () => {\n    setLoading(true);\n    try {\n      const response = await usersAPI.getAll({\n        page: pagination.current,\n        limit: pagination.pageSize,\n        ...filters\n      });\n      setUsers(response.data.users);\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 usersAPI.delete(id);\n      message.success('用户删除成功');\n      fetchUsers();\n    } catch (error) {\n      message.error(error.response?.data?.message || '删除失败');\n    }\n  };\n\n  const getRoleColor = (role) => {\n    const colors = { admin: 'red', investment_manager: 'blue', analyst: 'purple', user: 'default' };\n    return colors[role] || 'default';\n  };\n\n  const getRoleText = (role) => {\n    const texts = { admin: '超级管理员', investment_manager: '投资经理', analyst: '分析师', user: '普通用户' };\n    return texts[role] || role;\n  };\n\n  const columns = [\n    {\n      title: '用户名',\n      dataIndex: 'username',\n      key: 'username'\n    },\n    {\n      title: '姓名',\n      dataIndex: 'full_name',\n      key: 'full_name'\n    },\n    {\n      title: '邮箱',\n      dataIndex: 'email',\n      key: 'email'\n    },\n    {\n      title: '电话',\n      dataIndex: 'phone',\n      key: 'phone'\n    },\n    {\n      title: '部门',\n      dataIndex: 'department',\n      key: 'department'\n    },\n    {\n      title: '角色',\n      dataIndex: 'role',\n      key: 'role',\n      render: (role) => <Tag color={getRoleColor(role)}>{getRoleText(role)}</Tag>\n    },\n    {\n      title: '状态',\n      dataIndex: 'is_active',\n      key: 'is_active',\n      render: (active) => <Tag color={active ? 'green' : 'red'}>{active ? '启用' : '禁用'}</Tag>\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={<EditOutlined />} onClick={() => openEditModal(record)}>\n            编辑\n          </Button>\n          {record.id !== currentUser?.id && (\n            <Popconfirm title=\"确定要删除这个用户吗?\" onConfirm={() => handleDelete(record.id)}>\n              <Button type=\"link\" size=\"small\" danger icon={<DeleteOutlined />}>\n                删除\n              </Button>\n            </Popconfirm>\n          )}\n        </Space>\n      )\n    }\n  ];\n\n  const [modalVisible, setModalVisible] = useState(false);\n  const [editingUser, setEditingUser] = useState(null);\n  const [form] = Form.useForm();\n\n  const openCreateModal = () => {\n    setEditingUser(null);\n    form.resetFields();\n    setModalVisible(true);\n  };\n\n  const openEditModal = (user) => {\n    setEditingUser(user);\n    form.setFieldsValue({\n      ...user,\n      fullName: user.full_name,\n      isActive: user.is_active === 1\n    });\n    setModalVisible(true);\n  };\n\n  const handleModalOk = async () => {\n    try {\n      const values = await form.validateFields();\n      if (editingUser) {\n        await usersAPI.update(editingUser.id, values);\n        message.success('用户更新成功');\n      } else {\n        await usersAPI.create(values);\n        message.success('用户创建成功');\n      }\n      setModalVisible(false);\n      fetchUsers();\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              <Input\n                placeholder=\"搜索用户名、姓名或邮箱\"\n                onPressEnter={(e) => setFilters(prev => ({ ...prev, search: e.target.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, role: value }))}\n              >\n                <Option value=\"admin\">超级管理员</Option>\n                <Option value=\"investment_manager\">投资经理</Option>\n                <Option value=\"analyst\">分析师</Option>\n                <Option value=\"user\">普通用户</Option>\n              </Select>\n            </Col>\n            <Col span={14} style={{ textAlign: 'right' }}>\n              <Button type=\"primary\" icon={<PlusOutlined />} onClick={openCreateModal}>\n                新建用户\n              </Button>\n            </Col>\n          </Row>\n        </div>\n\n        <Table\n          columns={columns}\n          dataSource={users}\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={editingUser ? '编辑用户' : '新建用户'}\n        open={modalVisible}\n        onOk={handleModalOk}\n        onCancel={() => setModalVisible(false)}\n        width={600}\n      >\n        <Form form={form} layout=\"vertical\">\n          {!editingUser && (\n            <>\n              <Form.Item name=\"username\" label=\"用户名\" rules={[{ required: true, message: '请输入用户名' }]}>\n                <Input placeholder=\"请输入用户名\" />\n              </Form.Item>\n              <Form.Item name=\"password\" label=\"密码\" rules={[{ required: true, message: '请输入密码' }]}>\n                <Input.Password placeholder=\"请输入密码\" />\n              </Form.Item>\n            </>\n          )}\n          <Form.Item name=\"fullName\" label=\"姓名\" rules={[{ required: true, message: '请输入姓名' }]}>\n            <Input placeholder=\"请输入姓名\" />\n          </Form.Item>\n          <Form.Item name=\"email\" label=\"邮箱\" rules={[{ required: true, type: 'email', message: '请输入有效的邮箱' }]}>\n            <Input placeholder=\"请输入邮箱\" />\n          </Form.Item>\n          <Row gutter={16}>\n            <Col span={12}>\n              <Form.Item name=\"phone\" label=\"电话\">\n                <Input placeholder=\"请输入电话\" />\n              </Form.Item>\n            </Col>\n            <Col span={12}>\n              <Form.Item name=\"department\" label=\"部门\">\n                <Input placeholder=\"请输入部门\" />\n              </Form.Item>\n            </Col>\n          </Row>\n          <Form.Item name=\"role\" label=\"角色\" rules={[{ required: true, message: '请选择角色' }]} initialValue=\"user\">\n            <Select placeholder=\"请选择角色\">\n              <Option value=\"admin\">超级管理员</Option>\n              <Option value=\"investment_manager\">投资经理</Option>\n              <Option value=\"analyst\">分析师</Option>\n              <Option value=\"user\">普通用户</Option>\n            </Select>\n          </Form.Item>\n          {editingUser && (\n            <Form.Item name=\"isActive\" label=\"状态\" valuePropName=\"checked\">\n              <Select>\n                <Option value={true}>启用</Option>\n                <Option value={false}>禁用</Option>\n              </Select>\n            </Form.Item>\n          )}\n        </Form>\n      </Modal>\n    </div>\n  );\n};\n\nexport default Users;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}