Browse Source

feat: 项目详情更改为接口获取数据并修改相关逻辑

lanjianrong 3 năm trước cách đây
mục cha
commit
98e3f3793d

+ 3 - 1
src/pages/Institutions/Staff/components/StaffDetail.tsx

@@ -132,6 +132,8 @@ const StaffDrawer: React.FC<StaffModalProps> = ({
           account.institutionID = data.institution.name
           account.organizationalStructureID = data.organizationalStructure.name
         }
+        console.log(account)
+
         form.setValues({
           ...account
         })
@@ -159,7 +161,7 @@ const StaffDrawer: React.FC<StaffModalProps> = ({
         })
       }
       form.setSchemaByPath('organizationalStructureID', {
-        hidden: hiddenOrganization
+        disabled: institutionDisable
       })
       form.setSchemaByPath('password', {
         hidden: hiddenOrganization

+ 32 - 20
src/pages/Project/Management/components/Detail.tsx

@@ -1,7 +1,7 @@
 import { connect, useRequest } from 'umi'
 import { useEffect, useRef, useState } from 'react'
 import { message, Tabs, Form } from 'antd'
-import { getApprovalList, setApproval } from '@/services/api/project'
+import { getApprovalList, getProject, setApproval } from '@/services/api/project'
 import { delay } from '@/utils/util'
 import FormRender, { useForm } from 'form-render'
 import { BaseMenuEnum } from '@/pages/Schema/Base'
@@ -11,14 +11,14 @@ import type { ProjectModelState } from '../../model'
 import ProForm, { ProFormSelect } from '@ant-design/pro-form'
 import TreeNodeSelect from './TreeNodeSelect'
 import { ModalType } from '@/utils/enum'
+import consts from '@/utils/consts'
 
 type ProjectModalProps = ConnectProps & {
   visible: boolean
   onVisibleChange: (visible: boolean) => void
   type: ModalType
   defaultFormData?: {
-    ID: string
-    name: string
+    dataID: string
   }
   reload: () => void
   schema?: Record<string, any> | null
@@ -39,7 +39,8 @@ const DetailModal: React.FC<ProjectModalProps> = ({
   const [state, setState] = useState({
     acountInstitutionList: [],
     approvalList: [],
-    activeKey: ''
+    activeKey: '',
+    account: null
   })
 
   const { run: tryApprovalList } = useRequest(() => getApprovalList(), {
@@ -67,25 +68,29 @@ const DetailModal: React.FC<ProjectModalProps> = ({
     }
     if (state.activeKey === '2') {
       const TabFormData = {
-        accountID: defaultFormData.reportAccount?.ID,
-        approvalID: defaultFormData.approval?.ID
+        accountID: state.account.reportAccount?.ID,
+        approvalID: state.account.approval?.ID
       }
       ref.current?.setFieldsValue({ ...TabFormData })
     }
   }, [visible, state.activeKey])
 
-  const onMount = () => {
-    const currentFormData = { ...defaultFormData }
-    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
-      }
-    })
-    // console.log(currentFormData)
-    form.setValues({ ...currentFormData })
+  const onMount = async () => {
+    const { dataID } = defaultFormData
+    const { code = -1, data } = await getProject({ ID: dataID })
+    if (code === consts.RET_CODE.SUCCESS) {
+      const currentFormData = { ...data }
+      setState({ ...state, account: data })
+      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),
@@ -108,8 +113,15 @@ const DetailModal: React.FC<ProjectModalProps> = ({
 
   const onFinish = async formData => {
     try {
-      await trySetApproval({ ...formData, ID: defaultFormData.ID })
-      onVisibleChange(false)
+      await trySetApproval({ ...formData, ID: defaultFormData.dataID })
+      setState({
+        ...state,
+        account: {
+          ...state,
+          approval: { ID: formData.approvalID },
+          reportAccount: { ID: formData.accountID }
+        }
+      })
       reload()
       return true
     } catch (error) {

+ 2 - 10
src/pages/Project/Management/index.tsx

@@ -67,12 +67,7 @@ const List: React.FC<ListProps> = ({ schema, dispatch, pTypeList }) => {
               visible: true,
               currentModalType: ModalType.PREVIEW,
               defaultFormData: {
-                ...record
-                // ID: record.ID,
-                // name: record.name,
-                // projectTypeID: record.projectType.ID,
-                // reportAccountID: record.reportAccount.ID,
-                // approvalID: record.approval.ID
+                dataID: record.ID
               }
             })
           }}>
@@ -129,10 +124,7 @@ const List: React.FC<ListProps> = ({ schema, dispatch, pTypeList }) => {
                 visible: true,
                 currentModalType: ModalType.UPDATE,
                 defaultFormData: {
-                  ...record
-                  // ID: record.ID,
-                  // name: record.name,
-                  // projectTypeID: record.projectType.ID
+                  dataID: record.ID
                 }
               })
             }}>

+ 9 - 1
src/services/api/project.ts

@@ -17,6 +17,14 @@ export async function getProjectTypeList() {
   })
 }
 
+/** 项目详情 GET /api/project/detail */
+export async function getProject(params: API.ProjectDelParams) {
+  return request('/project/detail', {
+    method: 'GET',
+    params
+  })
+}
+
 /** 删除项目 POST /api/project/delete */
 export async function delProject(params: API.ProjectDelParams) {
   return request('/project/delete', {
@@ -32,7 +40,7 @@ export async function updateProject(params: API.ProjectUpdateParams) {
     data: params
   })
 }
-/** 更新项目 POST /api/project/update */
+/** 新增项目 POST /api/project/add */
 export async function addProject(params: API.ProjectAddParams) {
   return request('/project/add', {
     method: 'POST',