|
@@ -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)
|