1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  | import React, { useState, useRef, useEffect } from 'react'; 
 |  import { Spin, Descriptions, Button } from 'antd'; 
 |  import { FormattedMessage, useIntl, useModel } from '@umijs/max'; 
 |  import { LoadingOutlined } from '@ant-design/icons'; 
 |  import { createStyles } from 'antd-style'; 
 |  import * as Utils from '../../utils' 
 |  import Http from '@/utils/http'; 
 |  import ShelfThree from './shelfThree' 
 |    
 |  const useStyles = createStyles(({ token, css }) => { 
 |      return { 
 |          infoBox: { 
 |              height: '100%', 
 |              display: 'flex', 
 |              gap: '0px', 
 |          }, 
 |          threeInfo: { 
 |              height: '100%', 
 |              width: '50%', 
 |          }, 
 |          threeContainer: { 
 |              zIndex: 99, 
 |              width: '100%', 
 |              height: '688.88px', 
 |          }, 
 |          tableInfo: { 
 |              height: '100%', 
 |              width: '50%', 
 |              padding: '0 10px 0 15px' 
 |          } 
 |      } 
 |  }) 
 |    
 |  let shelfThree; 
 |    
 |  const ShelfView = (props) => { 
 |      const intl = useIntl(); 
 |      const { styles } = useStyles(); 
 |      const refContainer = useRef(); 
 |      const [loading, setLoading] = React.useState(false); 
 |    
 |      const startThree = () => { 
 |          shelfThree = new ShelfThree(refContainer.current); 
 |          shelfThree.startup(); 
 |      } 
 |    
 |      const endThree = () => { 
 |          if (shelfThree) { 
 |              shelfThree.destroy(); 
 |              shelfThree = null; 
 |          } 
 |      } 
 |    
 |      useEffect(() => { 
 |          setLoading(true); 
 |          endThree(); 
 |          setTimeout(() => { 
 |              setLoading(false); 
 |              startThree(); 
 |          }, 300) 
 |    
 |          return endThree; 
 |      }, [props.data.uuid]); 
 |    
 |      return ( 
 |          <> 
 |              <div className={styles.infoBox}> 
 |                  <div className={styles.threeInfo}> 
 |                      <Spin 
 |                          spinning={loading} 
 |                          indicator={<LoadingOutlined spin />} 
 |                          size={'large'} 
 |                      > 
 |                          <div ref={refContainer} className={styles.threeContainer}></div> 
 |                      </Spin> 
 |                  </div> 
 |                  <div className={styles.tableInfo}> 
 |                      <Descriptions 
 |                          bordered 
 |                          layout="vertical" 
 |                          column={1} 
 |                          items={ 
 |                              [ 
 |                                  { 
 |                                      key: '1', 
 |                                      label: 'Product', 
 |                                      children: 'Cloud Database', 
 |                                  }, 
 |                                  { 
 |                                      key: '2', 
 |                                      label: 'Billing Mode', 
 |                                      children: 'Prepaid', 
 |                                  }, 
 |                                  { 
 |                                      key: '3', 
 |                                      label: 'Automatic Renewal', 
 |                                      children: <Button> submit</Button>, 
 |                                  }, 
 |                              ] 
 |                          } 
 |                      /> 
 |                  </div> 
 |              </div> 
 |    
 |          </> 
 |      ) 
 |  } 
 |    
 |  export default ShelfView; 
 |  
  |