소스 검색

fix: 修复缓存无法清除的问题

lanjianrong 4 년 전
부모
커밋
9659d75ad1

+ 1 - 1
src/components/Navigation/index.tsx

@@ -117,7 +117,7 @@ function LoginHandler(props: { targetRoute: RouteModel, ErrorPage: any }): any {
                     noCache ?
                         <targetRoute.component {...props} routeConfig={targetRoute.childRoutes}></targetRoute.component> :
                         (
-                            <KeepAlive name={`${path}`}>
+                            <KeepAlive name={path} id={path}>
                                 <targetRoute.component {...props} routeConfig={targetRoute.childRoutes}></targetRoute.component>
                             </KeepAlive>
                         )

+ 17 - 10
src/pages/Contract/Content/Income/components/TableContent/index.tsx

@@ -155,12 +155,12 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
       width: '15%',
       // eslint-disable-next-line react/display-name
       render: (text: string, row: iIncomeTree) => {
-        // if (row.isEdit) {
-        //   return <Input value={row.serial} addonBefore={row.attribution} size="small"></Input>
-        // } else {
-        //   return <span>{row.code}</span>
-        // }
-        return <span>{row.code}</span>
+        if (row.isEdit) {
+          return <Input value={row.serial} addonBefore={row.attribution} size="small" style={{ width: 30 }}></Input>
+        } else {
+          return <span>{row.code}</span>
+        }
+        // return <span>{row.code}</span>
       }
     },
     {
@@ -168,7 +168,7 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
       dataIndex: 'name',
       render: (text:any, record: iIncomeTree) => {
         if (record.isEdit) {
-          return <Input value={record.name} size="small" type="text" ref={inputEl} onPressEnter={() => newLabelHandler('name', { id: record.parentId, bidsectionId: record.bidsectionId })} onBlur={() => newLabelHandler('name', { id: record.parentId, bidsectionId: record.bidsectionId })}></Input>
+          return <Input defaultValue={record.name} size="small" type="text" ref={inputEl} onPressEnter={() => newLabelHandler('name', { id: record.parentId, bidsectionId: record.bidsectionId })} onBlur={() => newLabelHandler('name', { id: record.parentId, bidsectionId: record.bidsectionId })}></Input>
         } else {
           return <span>{text}</span>
         }
@@ -211,7 +211,13 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
       ...sectionTemplate,
       loading: true
     })
-    if (!sectionTemplate.template) return message.error('请选择项目节模板!')
+    if (!sectionTemplate.template) {
+      setSectionTemplate({
+        ...sectionTemplate,
+        loading: false
+      })
+      return message.error('请选择项目节模板!')
+    }
     const { code = -1 } = await apiSetTemplate(sectionTemplate.template, tenderStore.bidsectionId)
     if (code === consts.RET_CODE.SUCCESS) {
       await initHandler()
@@ -235,8 +241,9 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
   const onClickRow  = (record: iIncomeTree) => {
     return {
       onClick() {
-        console.log(record.id)
-
+        setRow(record)
+      },
+      onDoubleClick() {
         rowClickHandler(record.id, record.bidsectionId, record.isEdit)
       }
     }

+ 1 - 0
src/pages/Contract/Content/Income/index.tsx

@@ -11,6 +11,7 @@ import React, { useState } from 'react'
 import { apiResfulContractTree } from './api'
 import ContractModal from './components/Modal'
 import TableContent from './components/TableContent'
+
 export default function Income() {
   const [ modalObj, setModalObj ] = useState<iModalBooleanProps>({
     type: '',

+ 4 - 2
src/pages/Contract/List/index.tsx

@@ -16,6 +16,8 @@ import './index.scss'
 const List: React.FC<RouteComponentProps> = (props) => {
   const { clear } = useAliveController()
   useEffect(() => {
+    // 清除所有的缓存页面
+    clear()
     getTree()
   }, [])
   const [ tree, setTree ] = useState({
@@ -47,11 +49,11 @@ const List: React.FC<RouteComponentProps> = (props) => {
   }
 
   const linkHandler = (id: string, name: string) => {
+    // dropScope(/^\/console\/contract\//)
+    // console.log(getCachingNodes())
     tenderStore.saveBidsectionId(id)
     tenderStore.saveName(name)
     props.history.push('/console/contract/content/summary')
-    // 清除所有的缓存页面
-    clear()
   }
 
   const columns:ColumnsType<ContractTree> = [

+ 3 - 12
src/store/mobx/contract/index.ts

@@ -51,8 +51,7 @@ class Contract {
 
   // 行点击
   @action rowChange(id: string) {
-    const colseTree = nodeUnCheck(this.tree)
-    const newTree = nodeCheck(id, colseTree)
+    const newTree = nodeCheck(id, this.tree)
     this.tree = newTree
   }
   @computed get showTable() {
@@ -62,6 +61,7 @@ class Contract {
 
 function lookupNode(id: string, tree: iIncomeTree[]) {
   return tree.map((item:iIncomeTree) => {
+    item.isEdit = false
     if (item.id === id) {
       if (Array.isArray(item.children)) {
         item.children.push({ ...initData[0], isEdit: true, code: item.code + `-${item.children.length + 1 }`, parentId: item.id, bidsectionId: item.bidsectionId })
@@ -79,6 +79,7 @@ function lookupNode(id: string, tree: iIncomeTree[]) {
 // 项目节被选中更改isEdit的值
 function nodeCheck(id: string, tree: iIncomeTree[]) {
   return tree.map((item: iIncomeTree) => {
+    item.isEdit = false
     if (item.id === id) {
       item.isEdit = true
 
@@ -89,14 +90,4 @@ function nodeCheck(id: string, tree: iIncomeTree[]) {
   })
 }
 
-function nodeUnCheck(tree: iIncomeTree[]) {
-  return tree.map((item: iIncomeTree) => {
-    if (item.isEdit) {
-      item.isEdit = false
-    } else if(Array.isArray(item.children)) {
-      item.children = nodeUnCheck(item.children)
-    }
-    return item
-  })
-}
 export default new Contract()