123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- import { PageContainer } from '@ant-design/pro-layout'
- import { useState, useEffect, useRef } from 'react'
- import ProTable from '@ant-design/pro-table'
- import type { ActionType } from '@ant-design/pro-table'
- import { ModalForm } from '@ant-design/pro-form'
- import type { ProFormInstance } from '@ant-design/pro-form'
- import type { ProFormColumnsType } from '@ant-design/pro-form'
- import { DeleteOutlined } from '@ant-design/icons'
- import { queryAcountList } from '@/services/api/institution'
- import consts from '@/utils/consts'
- import { Button, Form, message, Table } from 'antd'
- import { saveCreator } from '@/services/api/user'
- import { useRequest } from 'umi'
- import { getProjectList } from '@/services/api/project'
- import TreeNodeSelect from '../Management/List/components/TreeNodeSelect'
- enum CreatedModalType {
- ADD = '1',
- DEL = '2'
- }
- const Created = () => {
- const tRef = useRef<ActionType>(null)
- const mRef = useRef<ProFormInstance>(null)
- const [state, setState] = useState({
- dataID: null,
- modalType: CreatedModalType.ADD,
- options: [],
- projectList: [],
- modalVisible: false
- })
- const { run: tryQueryProjectList } = useRequest(
- createdID => getProjectList({ current: 1, pageSize: 21300, createdID }),
- {
- manual: true,
- onSuccess: ({ items }) => {
- setState({ ...state, projectList: items })
- }
- }
- )
- useEffect(() => {
- if (state.dataID && state.modalType === CreatedModalType.DEL) {
- tryQueryProjectList(state.dataID)
- }
- }, [state.dataID, state.modalType])
- const columns: ProFormColumnsType<AccountListItem>[] = [
- {
- dataIndex: 'account',
- title: '账号',
- width: 116,
- align: 'center',
- onHeaderCell: () => ({ style: { textAlign: 'center' } })
- },
- {
- dataIndex: 'name',
- title: '名称',
- width: 86,
- align: 'center',
- onHeaderCell: () => ({ style: { textAlign: 'center' } })
- },
- {
- dataIndex: 'institutionID',
- title: '企事业单位',
- width: 286,
- onHeaderCell: () => ({ style: { textAlign: 'center' } }),
- renderText: (_, record) => record?.institution?.name
- },
- {
- dataIndex: 'organizationalStructureID',
- title: '组织架构',
- width: 146,
- align: 'center',
- onHeaderCell: () => ({ style: { textAlign: 'center' } }),
- renderText: (_, record) => record?.organizationalStructure?.name
- },
- {
- dataIndex: 'opreate',
- title: '操作',
- width: 61,
- align: 'center',
- onHeaderCell: () => ({ style: { textAlign: 'center' } }),
- render: (_, record) => (
- <div
- className="text-hex-fd3995 cursor-pointer hover:text-hex-e7026e"
- onClick={() =>
- setState({
- ...state,
- dataID: record.ID,
- modalType: CreatedModalType.DEL,
- modalVisible: true
- })
- }>
- <DeleteOutlined />
- </div>
- )
- }
- ]
- const { run: trySaveCreator } = useRequest(saveCreator, {
- manual: true,
- onSuccess: () => {
- tRef?.current?.reload()
- return message.success('操作成功')
- }
- })
- const onFinish = async formData => {
- try {
- if (state.modalType === CreatedModalType.ADD) {
- await trySaveCreator({ ...formData, isCreated: 1 })
- } else {
- await trySaveCreator({ ID: state.dataID, isCreated: 0 })
- }
- tRef?.current?.reload()
- mRef?.current?.resetFields()
- setState({ ...state, modalVisible: false })
- return true
- } catch (error) {
- return false
- }
- }
- return (
- <PageContainer title={false}>
- <ProTable
- rowKey="ID"
- actionRef={tRef}
- columns={columns}
- search={false}
- toolbar={{
- actions: [
- <Button
- type="primary"
- onClick={() =>
- setState({ ...state, modalVisible: true, modalType: CreatedModalType.ADD })
- }>
- 添加创建人
- </Button>
- ]
- }}
- scroll={{ y: document.body.clientHeight - 313 }}
- request={async (params, filter, sort) => {
- const {
- code = -1,
- data: { items, total }
- } = await queryAcountList({ ...params, ...filter, ...sort, isCreated: 1 })
- return {
- success: code === consts.RET_CODE.SUCCESS,
- data: items,
- total
- }
- }}
- />
- <ModalForm
- title={state.modalType === CreatedModalType.ADD ? '添加创建人' : '移除创建人'}
- onFinish={onFinish}
- formRef={mRef}
- submitter={{
- submitButtonProps: {
- danger: state.modalType === CreatedModalType.ADD ? false : true
- }
- }}
- isKeyPressSubmit
- visible={state.modalVisible}
- onVisibleChange={visible => setState({ ...state, modalVisible: visible })}>
- {state.modalType === CreatedModalType.ADD ? (
- <>
- {/* <p className="mb-4">创建人可在前台创建项目、上传项目数据、编制项目等</p> */}
- <Form.Item
- name="ID"
- label="创建人可在前台创建项目、上传项目数据、编制项目等"
- rules={[{ required: true, message: '请选择创建人' }]}>
- <TreeNodeSelect params={{ isCreated: 0 }} />
- </Form.Item>
- {/* <ProFormSelect
- name="ID"
- request={async () => {
- const {
- code = -1,
- data: { items }
- } = await queryAcountInstitutionList({
- current: 1,
- pageSize: 21400,
- isCreated: '0'
- })
- return code === consts.RET_CODE.SUCCESS
- ? items.map(item => ({
- label: `${item.name} - ${item?.institution?.name}`,
- value: item.ID
- }))
- : []
- }}
- /> */}
- </>
- ) : (
- <>
- <p className="text-red-500">
- 当前创建人已经管理以下项目,移除后,这些项目对应创建人也将被移除。
- </p>
- <div className="mt-7">
- <Table
- rowKey="ID"
- columns={[
- // {
- // dataIndex: 'sort',
- // title: '序号',
- // render: (_, __, idx) => idx + 1,
- // width: '10%'
- // },
- { dataIndex: 'name', title: '项目名称' }
- ]}
- size="small"
- scroll={{ y: 250 }}
- dataSource={state.projectList}
- pagination={false}
- />
- </div>
- </>
- )}
- </ModalForm>
- </PageContainer>
- )
- }
- export default Created
|