| 
					
				 | 
			
			
				@@ -1,5 +1,163 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const Staff = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return <div>员工管理</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ProTable from '@ant-design/pro-table' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import type { ProColumnType, ActionType } from '@ant-design/pro-table' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Button } from 'antd' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import consts from '@/utils/consts' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRef, useState, useEffect } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { connect } from 'umi' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import type { ConnectProps } from 'umi' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import type { ProjectModelState } from '../model' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import StaffModal, { ModalType } from './components/StaffModal' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { queryAcountList } from '@/services/api/institution' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import dayjs from 'dayjs' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ListProps = ConnectProps & { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  pTypeList: { label: string; value: string }[] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const CompanyList: React.FC<ListProps> = ({ dispatch, pTypeList }) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const tRef = useRef<ActionType>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  useEffect(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!pTypeList.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dispatch({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type: 'project/queryProjectTypeList' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, []) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const [state, setState] = useState({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    params: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      search: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    visible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    currentModalType: ModalType.ADD, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    defaultFormData: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const { run: tryDelProject } = useRequest(delProject, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   manual: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   onSuccess: () => tRef.current?.reload() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const columns: ProColumnType<API.AccountListItem>[] = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'account', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '账号' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'name', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '名称' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'accountType', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '账号类型' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'institution', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '所属企事业单位', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      renderText: (_, record) => record.institution.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // valueEnum: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'createdTime', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '创建时间', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      renderText: text => dayjs(text).format('YYYY-MM-DD') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'created', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '创建者' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   dataIndex: 'project_type_id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   title: '项目类型', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   filters: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   filterMultiple: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   render: (_, record) => <div>{record.project_type.name}</div>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   valueEnum: pTypeList.reduce((prev, curr) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     const items = { ...prev } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     items[curr.value] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       text: curr.label 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     return items 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   }, {}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'created', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '创建人' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '操作', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataIndex: 'operation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      render: (_, record) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div className="divide-x divide-bg-gray-400 flex flex-row"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            className="pr-2 text-primary cursor-pointer hover:text-hex-967bbd" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              setState({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ...state, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                visible: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                currentModalType: ModalType.UPDATE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                defaultFormData: record 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {/* <Popconfirm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            title="确认删除吗?" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            okText="确认" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cancelText="取消" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onConfirm={() => tryDelProject({ id: record.id })} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div className="pl-2 text-hex-fd3995 cursor-pointer hover:text-hex-e7026e"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <DeleteOutlined /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </Popconfirm> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <ProTable<API.AccountListItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rowKey="ID" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params={state.params} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        actionRef={tRef} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        columns={columns} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        request={async (params, filter, sorter) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const { code = -1, data: { items = [], totle = 0 } = {} } = await queryAcountList({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ...params, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ...filter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ...sorter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data: items, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            success: code === consts.RET_CODE.SUCCESS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            totle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        toolbar={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          search: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onSearch: val => setState({ ...state, params: { ...state.params, search: val } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          actions: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <Button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onClick={() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                setState({ ...state, visible: true, currentModalType: ModalType.ADD }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              新建账号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </Button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        search={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <StaffModal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type={state.currentModalType} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        defaultFormData={state.defaultFormData} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pTypeList={pTypeList} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        visible={state.visible} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reloadTable={() => tRef.current?.reload()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setVisible={(visible: boolean) => setState({ ...state, visible })} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default Staff 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default connect(({ project }: { project: ProjectModelState }) => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  pTypeList: project.projectTypeList.map(item => ({ label: item.name, value: item.ID })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}))(CompanyList) 
			 |