|
@@ -1,223 +0,0 @@
|
|
|
-import { connect, useRequest } from 'umi'
|
|
|
-import { useEffect, useRef, useState } from 'react'
|
|
|
-import { Form, message, Tabs } from 'antd'
|
|
|
-import { FormLayout, FormItem, Input, Select } from '@formily/antd'
|
|
|
-import { getApprovalList, setApproval, setProjectPersonor } from '@/services/api/project'
|
|
|
-import { BaseMenuEnum, SchemaEnum } from '@/pages/Schema/Base'
|
|
|
-import type { SchemaBaseModelState } from '@/pages/Schema/Base/model'
|
|
|
-import type { ConnectProps } from 'umi'
|
|
|
-import ProForm from '@ant-design/pro-form'
|
|
|
-// import TreeNodeSelect from './TreeNodeSelect'
|
|
|
-import type { ModalType } from './ProjectModal'
|
|
|
-import TreeNodeSelect from './TreeNodeSelect'
|
|
|
-import { connectSchema } from '@/utils/schema'
|
|
|
-import { createForm, onFieldMount, onFormReact } from '@formily/core'
|
|
|
-import { createSchemaField, Field, FormProvider } from '@formily/react'
|
|
|
-
|
|
|
-enum FormType {
|
|
|
- UPLOAD_PERM = '1',
|
|
|
- ROLE_PERM = '2'
|
|
|
-}
|
|
|
-
|
|
|
-type ProjectModalProps = ConnectProps & {
|
|
|
- visible: boolean
|
|
|
- type: ModalType
|
|
|
- defaultFormData?: {
|
|
|
- dataID: string
|
|
|
- }
|
|
|
- reload: () => void
|
|
|
- projectSchema: Record<string, any> | null
|
|
|
- pTypeList: { label: string; value: string }[]
|
|
|
-}
|
|
|
-const DetailModal: React.FC<ProjectModalProps> = ({
|
|
|
- visible,
|
|
|
- projectSchema,
|
|
|
- defaultFormData,
|
|
|
- pTypeList,
|
|
|
- reload
|
|
|
-}) => {
|
|
|
- const ref = useRef<FormInstance>(null)
|
|
|
- const ref2 = useRef<FormInstance>(null)
|
|
|
- const { TabPane } = Tabs
|
|
|
- const [state, setState] = useState({
|
|
|
- acountInstitutionList: [],
|
|
|
- approvalList: [],
|
|
|
- accountList: [],
|
|
|
- activeKey: '',
|
|
|
- account: null,
|
|
|
- perm: null
|
|
|
- })
|
|
|
-
|
|
|
- const { run: tryApprovalList } = useRequest(() => getApprovalList(), {
|
|
|
- manual: true,
|
|
|
- onSuccess: result => {
|
|
|
- setState({ ...state, approvalList: result.items })
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- const { run: trySetApproval } = useRequest(setApproval, {
|
|
|
- manual: true,
|
|
|
- onSuccess: () => {
|
|
|
- message.success('提交成功')
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- const { run: trySetProjectPersonor } = useRequest(setProjectPersonor, {
|
|
|
- manual: true,
|
|
|
- onSuccess: () => {
|
|
|
- message.success('提交成功')
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- useEffect(() => {
|
|
|
- if (state.activeKey === '2') {
|
|
|
- const TabFormData = {
|
|
|
- accountID: state.account.reportAccount?.ID,
|
|
|
- approvalID: state.account.approval?.ID
|
|
|
- }
|
|
|
- ref.current?.setFieldsValue({ ...TabFormData })
|
|
|
- }
|
|
|
-
|
|
|
- if (state.activeKey === '3') {
|
|
|
- ref2?.current?.setFieldsValue({ ...state.perm })
|
|
|
- }
|
|
|
- }, [visible, state.activeKey])
|
|
|
-
|
|
|
-<<<<<<< HEAD:src/pages/Project/Management/List/components/Detail.tsx
|
|
|
-=======
|
|
|
- const onMount = async () => {
|
|
|
- const { dataID } = defaultFormData
|
|
|
- const { code = -1, data } = await getProject({ ID: dataID })
|
|
|
- if (code === consts.RET_CODE.SUCCESS) {
|
|
|
- const {
|
|
|
- created: { ID: createdID },
|
|
|
- reportAccount,
|
|
|
- ...currentFormData
|
|
|
- } = { ...data }
|
|
|
-
|
|
|
- setState({
|
|
|
- ...state,
|
|
|
- account: currentFormData,
|
|
|
- perm: { createdID, reportAccount: reportAccount?.map(item => item.ID) || [] }
|
|
|
- })
|
|
|
- const keys = Object.keys(currentFormData)
|
|
|
- keys.forEach(key => {
|
|
|
- if (currentFormData[key] instanceof Object) {
|
|
|
- const targetMap = currentFormData[key]
|
|
|
- delete currentFormData[key]
|
|
|
- currentFormData[`${key}ID`] = targetMap.ID
|
|
|
- }
|
|
|
- })
|
|
|
- form.setValues({ ...currentFormData })
|
|
|
- }
|
|
|
- delay(80).then(() => {
|
|
|
- form.setSchemaByPath('projectTypeID', {
|
|
|
- enum: pTypeList.map(item => item.value),
|
|
|
- enumNames: pTypeList.map(item => item.label)
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
->>>>>>> 994f418... feat: 修复由于编辑者为空的情况引发的报错:src/pages/Project/Management/components/Detail.tsx
|
|
|
- const onChange = key => {
|
|
|
- setState({ ...state, activeKey: key })
|
|
|
- if (key === '2') {
|
|
|
- // if (!state.acountInstitutionList?.length) {
|
|
|
- // tryAcountInstitutionList()
|
|
|
- // }
|
|
|
- if (!state.approvalList?.length) {
|
|
|
- tryApprovalList()
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- const onFinish = async (t, formData) => {
|
|
|
- try {
|
|
|
- if (t === FormType.UPLOAD_PERM) {
|
|
|
- await trySetApproval({ ...formData, ID: defaultFormData.dataID })
|
|
|
- setState({
|
|
|
- ...state,
|
|
|
- account: {
|
|
|
- ...state,
|
|
|
- approval: { ID: formData.approvalID },
|
|
|
- reportAccount: { ID: formData.accountID }
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- await trySetProjectPersonor({ ...formData, ID: defaultFormData.dataID })
|
|
|
- setState({ ...state, perm: { ...formData } })
|
|
|
- }
|
|
|
- reload()
|
|
|
- return true
|
|
|
- } catch (error) {
|
|
|
- console.log(error)
|
|
|
- return false
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return (
|
|
|
- <Tabs onChange={onChange}>
|
|
|
- <TabPane tab="项目信息" key="1">
|
|
|
- <FormProvider form={formInstance}>
|
|
|
- <SchemaField
|
|
|
- schema={connectSchema(SchemaEnum?.[BaseMenuEnum.PROJECT], projectSchema)}
|
|
|
- // scope={{ useAsyncDataSource }}
|
|
|
- />
|
|
|
- <Field name="input" component={[Input, { placeholder: 'Please Input' }]} />
|
|
|
- </FormProvider>
|
|
|
- </TabPane>
|
|
|
- {/* <TabPane tab="上传权限" key="2">
|
|
|
- <ProForm
|
|
|
- formRef={ref}
|
|
|
- submitter={{ resetButtonProps: { style: { display: 'none' } } }}
|
|
|
- onFinish={onFinish}
|
|
|
- >
|
|
|
- <Form.Item label="指定人员" name="accountID">
|
|
|
- <TreeNodeSelect />
|
|
|
- </Form.Item>
|
|
|
- <ProFormSelect
|
|
|
- name="approvalID"
|
|
|
- label={'审批流程'}
|
|
|
- placeholder="请选择审批流程"
|
|
|
- options={state.approvalList.map(item => ({
|
|
|
- label: item.name,
|
|
|
- value: item.ID
|
|
|
- }))}
|
|
|
- />
|
|
|
- </ProForm>
|
|
|
- </TabPane> */}
|
|
|
- <TabPane tab="角色权限" key="3">
|
|
|
- <ProForm formRef={ref2} onFinish={formData => onFinish(FormType.ROLE_PERM, formData)}>
|
|
|
- <Form.Item
|
|
|
- label="创建人:创建项目、管理编辑者、上传项目数据、编制项目、添加批注"
|
|
|
- name="createdID"
|
|
|
- rules={[{ required: true, message: '请选择创建人' }]}
|
|
|
- >
|
|
|
- <TreeNodeSelect params={{ isCreated: 1 }} />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item label="编辑者:编制项目、上传项目数据、添加批注" name="reportAccount">
|
|
|
- <TreeNodeSelect multiple />
|
|
|
- </Form.Item>
|
|
|
- {/* <ProFormDependency name={['createdID']}>
|
|
|
- {({ createdID }) => {
|
|
|
- return (
|
|
|
- <ProFormSelect
|
|
|
- name="reportAccount"
|
|
|
- label="编辑者:编制项目、上传项目数据、添加批注"
|
|
|
- fieldProps={{
|
|
|
- mode: 'tags'
|
|
|
- }}
|
|
|
- options={state.accountList.filter(item => item.value !== createdID)}
|
|
|
- />
|
|
|
- )
|
|
|
- }}
|
|
|
- </ProFormDependency> */}
|
|
|
- </ProForm>
|
|
|
- </TabPane>
|
|
|
- </Tabs>
|
|
|
- )
|
|
|
-}
|
|
|
-
|
|
|
-export default connect(({ schemaBase }: { schemaBase: SchemaBaseModelState }) => ({
|
|
|
- projectSchema: schemaBase.base[BaseMenuEnum.PROJECT]
|
|
|
-}))(DetailModal)
|