@@ -5,16 +5,18 @@ import Iconfont from '@/components/Iconfont';
55import StateIndicator from '@/components/StateIndicator' ;
66import { Spin , Popover } from 'antd' ;
77import { StatusType } from '@/constants' ;
8- import { IManageResultData } from '@/typings' ;
8+ import { IManageResultData , IResultConfig } from '@/typings' ;
99import i18n from '@/i18n' ;
10- import { v4 as uuidv4 } from 'uuid' ;
1110import TableBox from './TableBox' ;
1211import EmptyImg from '@/assets/img/empty.svg' ;
1312import styles from './index.less' ;
1413
1514interface IProps {
1615 className ?: string ;
1716 manageResultDataList ?: IManageResultData [ ] ;
17+ resultConfig : IResultConfig [ ] ;
18+ onExecute : ( sql : string , config : IResultConfig , index : number ) => void ;
19+ onTabEdit : ( type : 'add' | 'remove' , value ?: number | string ) => void ;
1820 isLoading ?: boolean ;
1921}
2022
@@ -26,7 +28,7 @@ const handleTabs = (result: IManageResultData[]) => {
2628 return ( result || [ ] ) . map ( ( item , index ) => {
2729 return {
2830 label : (
29- < Popover content = { item . sql } >
31+ < Popover content = { item . originalSql } >
3032 < Iconfont
3133 key = { index }
3234 className = { classnames ( styles [ item . success ? 'successIcon' : 'failIcon' ] , styles . statusIcon ) }
@@ -40,56 +42,44 @@ const handleTabs = (result: IManageResultData[]) => {
4042 } ) ;
4143} ;
4244
43- export default memo < IProps > ( function SearchResult ( { className , manageResultDataList = [ ] , isLoading } ) {
44- const [ isUnfold , setIsUnfold ] = useState ( true ) ;
45+ export default memo < IProps > ( function SearchResult ( props ) {
46+ const { className , manageResultDataList = [ ] , isLoading , onExecute } = props ;
4547 const [ currentTab , setCurrentTab ] = useState < string | number | undefined > ( ) ;
4648 const [ resultDataList , setResultDataList ] = useState < IManageResultData [ ] > ( [ ] ) ;
49+ const [ resultConfig , setResultConfig ] = useState < IResultConfig [ ] > ( [ ] ) ;
4750 const [ tabs , setTabs ] = useState < IOption [ ] > ( [ ] ) ;
4851
52+ useEffect ( ( ) => {
53+ setResultConfig ( props . resultConfig ) ;
54+ } , [ props . resultConfig ] ) ;
55+
4956 useEffect ( ( ) => {
5057 if ( ! manageResultDataList . length ) {
5158 return ;
5259 }
53- const newManageResultDataList = manageResultDataList . map ( ( t ) => {
54- return {
55- ...t ,
56- uuid : uuidv4 ( ) ,
57- } ;
58- } ) ;
59- setCurrentTab ( newManageResultDataList [ 0 ] . uuid ) ;
60- setResultDataList ( newManageResultDataList ) ;
61- setTabs ( handleTabs ( newManageResultDataList ) ) ;
60+
61+ // debugger;
62+ if ( ! currentTab || ! manageResultDataList . find ( ( d ) => d . uuid === currentTab ) ) {
63+ setCurrentTab ( manageResultDataList [ 0 ] . uuid ) ;
64+ }
65+
66+ setResultDataList ( manageResultDataList ) ;
67+ setTabs ( handleTabs ( manageResultDataList ) ) ;
6268 } , [ manageResultDataList ] ) ;
6369
6470 function onChange ( uuid : string | number ) {
6571 setCurrentTab ( uuid ) ;
6672 }
6773
68- const renderStatus = ( text : string ) => {
69- return (
70- < div className = { styles . tableStatus } >
71- < i className = { classnames ( styles . dot , { [ styles . successDot ] : text == StatusType . SUCCESS } ) } > </ i >
72- { text == StatusType . SUCCESS ? '成功' : '失败' }
73- </ div >
74- ) ;
75- } ;
76-
7774 function onEdit ( type : 'add' | 'remove' , value ?: number | string ) {
78- if ( type === 'remove' ) {
79- const dataList = resultDataList . filter ( ( t ) => t . uuid !== value ) ;
80- setResultDataList ( dataList ) ;
81- if ( currentTab === value ) {
82- setCurrentTab ( dataList [ 0 ] ?. uuid ) ;
83- }
84- }
75+ props . onTabEdit && props . onTabEdit ( type , value ) ;
8576 }
8677
8778 const renderEmpty = ( ) => {
8879 return (
8980 < div className = { styles . noData } >
90- { /* {i18n('common.text.noData')} */ }
91- { /* <Iconfont style={{ fontSize: '64px' }} code="" /> */ }
9281 < img src = { EmptyImg } />
82+ < p > { i18n ( 'common.text.noData' ) } </ p >
9383 </ div >
9484 ) ;
9585 } ;
@@ -108,7 +98,10 @@ export default memo<IProps>(function SearchResult({ className, manageResultDataL
10898 < TableBox
10999 className = { classnames ( { [ styles . cursorTableBox ] : item . uuid === currentTab } ) }
110100 data = { item }
111- // isLoading={isLoading}
101+ config = { resultConfig ?. [ index ] }
102+ onConfigChange = { function ( config : IResultConfig ) {
103+ onExecute && onExecute ( item . originalSql , config , index ) ;
104+ } }
112105 />
113106 </ Fragment >
114107 ) ;
@@ -124,7 +117,7 @@ export default memo<IProps>(function SearchResult({ className, manageResultDataL
124117 ) ;
125118 }
126119 } ) ;
127- } , [ currentTab ] ) ;
120+ } , [ currentTab , resultDataList , resultConfig ] ) ;
128121
129122 return (
130123 < div className = { classnames ( className , styles . box ) } >
0 commit comments