Kaynağa Gözat

refactor: 事项列表详情取消dav的存储

outaozhen 2 yıl önce
ebeveyn
işleme
4894a4a850

+ 10 - 15
src/pages/Business/Matter/components/AddAssemblyModal.tsx

@@ -1,7 +1,6 @@
 import { updateAssembly } from '@/services/api/business'
 import consts from '@/utils/consts'
 import { CodepenSquareFilled, ProfileFilled, SlackSquareFilled } from '@ant-design/icons'
-import { connect } from '@umijs/max'
 import { Button, Card, Checkbox, Col, message, Row } from 'antd'
 import React, { useState } from 'react'
 import { Assembly } from './AssemblyDetail'
@@ -11,9 +10,10 @@ type AddAssemblyProps = {
   defaultData: API.MatterTreeItem
   close: () => void
   refresh: () => void
+  refreshData: () => void
 }
 
-const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refresh, dispatch }) => {
+const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refresh, refreshData }) => {
   const [assemblyList, setAssemblyList] = useState(defaultData?.assembly || [])
 
   const handleAssemblyOnchange = (checked: boolean, checkName: string) => {
@@ -31,10 +31,7 @@ const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refr
     if (code === consts.RET_CODE.SUCCESS) {
       message.success('添加成功')
       close()
-      dispatch({
-        type: 'business/queryMatterDetail',
-        payload: { ID: defaultData?.ID }
-      })
+      refreshData()
       refresh()
     }
   }
@@ -65,7 +62,7 @@ const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refr
         </Col>
         <Col span={8}>
           <Card
-            className={assemblyList.includes(Assembly.DATAPROFILE) ? 'cardBox' : null}
+            className={assemblyList.includes(Assembly.COSTPROFILE) ? 'cardBox' : null}
             title={
               <span>
                 <SlackSquareFilled className="mr-1" style={{ fontSize: '20px', color: '#52C41A' }} />
@@ -74,8 +71,8 @@ const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refr
             }
             extra={
               <Checkbox
-                onChange={e => handleAssemblyOnchange(e.target.checked, Assembly.DATAPROFILE)}
-                checked={assemblyList.includes(Assembly.DATAPROFILE)}
+                onChange={e => handleAssemblyOnchange(e.target.checked, Assembly.COSTPROFILE)}
+                checked={assemblyList.includes(Assembly.COSTPROFILE)}
               />
             }>
             <div className="min-h-70px">自定义审核资料模板,承载业务审批过程中资料及附件业务。</div>
@@ -84,7 +81,7 @@ const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refr
         </Col>
         <Col span={8}>
           <Card
-            className={assemblyList.includes(Assembly.COSTPROFILE) ? 'cardBox' : null}
+            className={assemblyList.includes(Assembly.DATAPROFILE) ? 'cardBox' : null}
             title={
               <span>
                 <CodepenSquareFilled className="mr-1" style={{ fontSize: '20px', color: '#722ED1' }} />
@@ -93,8 +90,8 @@ const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refr
             }
             extra={
               <Checkbox
-                onChange={e => handleAssemblyOnchange(e.target.checked, Assembly.COSTPROFILE)}
-                checked={assemblyList.includes(Assembly.COSTPROFILE)}
+                onChange={e => handleAssemblyOnchange(e.target.checked, Assembly.DATAPROFILE)}
+                checked={assemblyList.includes(Assembly.DATAPROFILE)}
               />
             }>
             <div className="min-h-70px">
@@ -114,6 +111,4 @@ const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refr
   )
 }
 
-export default connect(({ business }: { matterDetail: BusinessModelState }) => ({
-  matterDetail: business.matterDetail
-}))(AddAssemblyModal)
+export default AddAssemblyModal

+ 37 - 19
src/pages/Business/Matter/components/AssemblyDetail.tsx

@@ -1,13 +1,13 @@
 import ProTable from '@ant-design/pro-table'
-import React from 'react'
+import React, { useRef, useState } from 'react'
 import { Button, Tag } from 'antd'
 import { ColumnsType } from 'antd/lib/table'
-import { isNullOrUnDef } from '@/utils/is'
 import styles from './index.less'
 import useModal from '@/components/Modal'
 import AddAssemblyModal from './AddAssemblyModal'
-import { connect } from '@umijs/max'
 import { createUid } from '@/utils/util'
+import { queryMatterDetail } from '@/services/api/business'
+import consts from '@/utils/consts'
 
 export enum Assembly {
   FORM = 'form', // 表单
@@ -25,10 +25,20 @@ type AssemblyDetailProps = {
   record?: API.MatterTreeItem
   refresh?: () => void
 }
+interface IState {
+  matterDetail: API.MatterTreeItem
+}
 
-const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ refresh, matterDetail }) => {
+const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ refresh, record }) => {
+  const [state, setState] = useState<IState>({
+    matterDetail: []
+  })
   const [modal, ModalDOM] = useModal()
-
+  const tRef = useRef()
+  // 刷新
+  const refreshData = () => {
+    tRef.current.reload()
+  }
   const columns: ColumnsType<API.AssemblyItem> = [
     {
       title: '组件名称',
@@ -65,17 +75,22 @@ const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ refresh, matterDetail }
       <ProTable
         search={false}
         rowKey="ID"
+        actionRef={tRef}
+        params={{ ID: record?.ID }}
         columns={columns}
-        dataSource={
-          !isNullOrUnDef(matterDetail?.assembly)
-            ? matterDetail?.assembly.map(item => ({
-                ID: createUid(),
-                name: item,
-                type: item,
-                title: item
-              }))
-            : null
-        }
+        request={async params => {
+          const { data = {}, code = -1 } = await queryMatterDetail(params)
+          setState({ ...state, matterDetail: data })
+          return {
+            data: data?.assembly.map(item => ({
+              ID: createUid(),
+              name: item,
+              type: item,
+              title: item
+            })),
+            success: code === consts.RET_CODE.SUCCESS
+          }
+        }}
         className="absolute"
         pagination={false}
         toolBarRender={false}
@@ -90,7 +105,12 @@ const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ refresh, matterDetail }
             width: 1000,
             wrapClassName: 'modalTableBox',
             children: (
-              <AddAssemblyModal defaultData={matterDetail} refresh={refresh} close={() => modal.close()} />
+              <AddAssemblyModal
+                defaultData={state.matterDetail}
+                refreshData={refreshData}
+                refresh={refresh}
+                close={() => modal.close()}
+              />
             ),
             footer: null
           })
@@ -102,6 +122,4 @@ const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ refresh, matterDetail }
   )
 }
 
-export default connect(({ business }: { matterDetail: BusinessModelState }) => ({
-  matterDetail: business.matterDetail
-}))(AssemblyDetail)
+export default AssemblyDetail

+ 4 - 12
src/pages/Business/Matter/index.tsx

@@ -8,17 +8,15 @@ import useDrawer from '@/components/Drawer'
 import LeftMenu from '../RuleCode/components/LeftMenu'
 import AssemblyDetail, { assemblyToMap } from './components/AssemblyDetail'
 import { MatterType, useRowScript } from './hooks/useRowScript'
-import { connect } from '@umijs/max'
 
 interface IState {
   subjectParams: {
     gatherID?: Nullable<string>
     businessType?: Nullable<string>
   }
-  expandTreeIds: string[]
 }
 
-const Matter: React.FC = ({ dispatch }) => {
+const Matter: React.FC = () => {
   const [drawer, DrawerDom] = useDrawer()
   const contentHeight = document.body.clientHeight - 122
   const [modal, ModalDOM] = useModal()
@@ -41,15 +39,11 @@ const Matter: React.FC = ({ dispatch }) => {
     }
   })
 
-  const openDrawer = record => {
-    dispatch({
-      type: 'business/queryMatterDetail',
-      payload: { ID: record?.ID }
-    })
+  const openDrawer = async record => {
     drawer.open({
       title: '组件配置',
       closeIcon: null,
-      children: <AssemblyDetail assemblyList={state.assemblyList} refresh={refresh} />
+      children: <AssemblyDetail record={record} refresh={refresh} />
     })
   }
 
@@ -171,6 +165,4 @@ const Matter: React.FC = ({ dispatch }) => {
   )
 }
 
-export default connect(({ business }: { matterDetail: BusinessModelState }) => ({
-  matterDetail: business.matterDetail
-}))(Matter)
+export default Matter

+ 1 - 14
src/pages/Business/model.ts

@@ -1,4 +1,4 @@
-import { queryConditionSchema, queryExecutorList, queryMatterDetail } from '@/services/api/business'
+import { queryConditionSchema, queryExecutorList } from '@/services/api/business'
 import { queryInstitutionList } from '@/services/api/institution'
 import { querySubjectList } from '@/services/api/subject'
 import consts from '@/utils/consts'
@@ -7,7 +7,6 @@ import type { Effect, Reducer } from '@umijs/max'
 export interface BusinessModelState {
   institutionList: API.InstitutionList[]
   subjectList: API.SubjectParams[]
-  matterDetail: API.MatterTreeItem[]
   processMap: {
     [key: string]: API.ExecutorItem[]
   }
@@ -29,7 +28,6 @@ export interface BusinessModelType {
     queryInstitution: Effect
     querySubject: Effect
     queryExecutor: Effect
-    queryMatterDetail: Effect
   }
   reducers: {
     save: Reducer<BusinessModelState>
@@ -70,17 +68,6 @@ const BusinessModel: BusinessModelType = {
         })
       }
     },
-    *queryMatterDetail({ payload }, { call, put }) {
-      const response = yield call(queryMatterDetail, payload)
-      if (response?.code === consts.RET_CODE.SUCCESS) {
-        yield put({
-          type: 'save',
-          payload: {
-            matterDetail: response.data
-          }
-        })
-      }
-    },
     *queryExecutor({ payload }, { call, put }) {
       const response = yield call(queryExecutorList, payload)
       if (response?.code === consts.RET_CODE.SUCCESS) {