index.tsx 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-09-15 09:17:28
  4. * @LastEditTime: 2021-10-22 10:53:06
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: /MedicalWisdomCheckSys/src/components/MccsRecordList/index.tsx
  8. */
  9. import React, { useState, useEffect } from 'react'
  10. import { Divider, Timeline, Empty } from 'antd';
  11. import './index.less';
  12. const MccsRecordList: React.FC<MccsRecordList.propsType> = (props) => {
  13. const { title, list = [], actionFunc, actionNode } = props;
  14. const [currentOpen, setCurrentOpen] = useState<[number, number] | []>([]);
  15. const [data, setData] = useState<MccsRecordList.MccsRecordListType>([]);
  16. const historyHandle = (supIndex: number, subIndex: number) => {
  17. if (currentOpen[0] == supIndex && currentOpen[1] == subIndex) {
  18. setCurrentOpen([-1, -1]);
  19. } else {
  20. setCurrentOpen([supIndex, subIndex]);
  21. }
  22. }
  23. const actionHandle = (supIndex: number, subIndex: number, lowerIndex: number) => {
  24. let _data = data;
  25. actionFunc && actionFunc(_data[supIndex].details[subIndex].historyRecords[lowerIndex]); //返回true表示服务器删除成功!
  26. }
  27. useEffect(() => {
  28. if (list) {
  29. setData(list);
  30. }
  31. // setData([
  32. // {
  33. // evaluation: 'C',
  34. // details: [
  35. // {
  36. // name: '张三',
  37. // fileName: '文件名',
  38. // fileUrl: '',
  39. // createTime: '2021-05-02 18:27',
  40. // recordTypeName: '自查',
  41. // historyRecords: [
  42. // {
  43. // versionName: '当前版本',
  44. // name: '麻子',
  45. // time: '2021-05-02 18:27',
  46. // }
  47. // ]
  48. // },
  49. // {
  50. // name: '张三',
  51. // fileName: '文件名',
  52. // fileUrl: '',
  53. // createTime: '2021-05-02 18:27',
  54. // recordTypeName: '自查',
  55. // historyRecords: []
  56. // }
  57. // ]
  58. // },
  59. // {
  60. // evaluation: 'C',
  61. // details: [
  62. // {
  63. // name: '张三',
  64. // fileName: '文件名',
  65. // fileUrl: '',
  66. // createTime: '2021-05-02 18:27',
  67. // recordTypeName: '自查',
  68. // historyRecords: []
  69. // },
  70. // {
  71. // name: '张三',
  72. // fileName: '文件名',
  73. // fileUrl: '',
  74. // createTime: '2021-05-02 18:27',
  75. // recordTypeName: '自查',
  76. // historyRecords: []
  77. // }
  78. // ]
  79. // }
  80. // ])
  81. }, [props]);
  82. return (
  83. <div className='mccsRecordList'>
  84. <div className="mccsRecordListTitle">{title ? title : '标题'}</div>
  85. {
  86. data.length == 0 && (
  87. //空数据
  88. <Empty image={Empty.PRESENTED_IMAGE_SIMPLE}></Empty>
  89. )
  90. }
  91. {
  92. data.length > 0 && (
  93. <div className='container'>
  94. {
  95. data.map((item, index) => {
  96. return (
  97. <div className='list' key={index}>
  98. <div className='listInner'>
  99. <div className={`header ${item.evaluation}`}>{item.evaluation}</div>
  100. <div className='innerWrap'>
  101. {
  102. item.details.map((detailsList, detailListIndex) => {
  103. return (
  104. <div className='item' key={detailListIndex}>
  105. <div className='itemInner'>
  106. <div className='itemHeader'>
  107. {
  108. detailsList.recordTypeName&&<span className='type'>{detailsList.recordTypeName}</span>
  109. }
  110. <div className='recordContent'>
  111. <span className='bolder'>{detailsList.name}</span>
  112. {detailsList.recordTypeName?'上传了台帐':'自评结果为'}
  113. <span className='bolder'>{detailsList.fileName}</span>
  114. </div>
  115. </div>
  116. <div className='time'>
  117. {
  118. detailsList.historyRecords.length > 0 && (
  119. <>
  120. <div className={(currentOpen[0] == index && currentOpen[1] == detailListIndex) ? 'history on' : 'history'} onClick={() => historyHandle(index, detailListIndex)}>历史记录</div>
  121. <Divider type="vertical" />
  122. </>
  123. )
  124. }
  125. <span className='date'>{detailsList.createTime}</span>
  126. </div>
  127. {
  128. actionNode && (
  129. <div className='action'>
  130. {
  131. actionNode(detailsList)
  132. }
  133. </div>
  134. )
  135. }
  136. </div>
  137. {
  138. (currentOpen[0] == index && currentOpen[1] == detailListIndex && detailsList.historyRecords.length > 0) && (
  139. <div className='subListWrap'>
  140. <Timeline pending={false}>
  141. {
  142. item.details[detailListIndex].historyRecords.map((val, i) => {
  143. return (
  144. <React.Fragment key={i}>
  145. {
  146. i == 0 && ( //当前版本
  147. <Timeline.Item dot={<span className='timeLineDot'></span>} >
  148. <div className='timeLineNode on'>
  149. <div className='version'>{val.versionName}</div>
  150. <div className='actionPeople'>{`上传人:${val.name}`}</div>
  151. <div className='time'>{val.time}</div>
  152. <span className='action' onClick={() => actionHandle(index, detailListIndex, i)}></span>
  153. </div>
  154. </Timeline.Item >
  155. )
  156. }
  157. {
  158. i > 0 && (
  159. <Timeline.Item color='gray' >
  160. <div className='timeLineNode'>
  161. <div className='version'>{val.versionName}</div>
  162. <div className='actionPeople'>{`上传人:${val.name}`}</div>
  163. <div className='time'>{val.time}</div>
  164. <span className='action' onClick={() => actionHandle(index, detailListIndex, i)}></span>
  165. </div>
  166. </Timeline.Item >
  167. )
  168. }
  169. </React.Fragment>
  170. )
  171. })
  172. }
  173. </Timeline>
  174. </div>
  175. )
  176. }
  177. </div>
  178. )
  179. })
  180. }
  181. </div>
  182. </div>
  183. </div>
  184. )
  185. })
  186. }
  187. </div>
  188. )
  189. }
  190. </div>
  191. )
  192. }
  193. export default MccsRecordList