You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

publicData.jsx 10 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. import clock from '@/assets/img/clock.png';
  2. import creatByImg from '@/assets/img/creatBy.png';
  3. import deleteIcon from '@/assets/img/delete-icon.png';
  4. import { deleteDataset, getAssetIcon, getDatasetList } from '@/services/dataset/index.js';
  5. import { modalConfirm } from '@/utils/ui';
  6. import { Form, Input, Pagination } from 'antd';
  7. import moment from 'moment';
  8. import { useEffect, useState } from 'react';
  9. import { useNavigate } from 'react-router-dom';
  10. import Styles from './index.less';
  11. const { Search } = Input;
  12. const leftdataList = [1, 2, 3];
  13. const PublicData = () => {
  14. const [queryFlow, setQueryFlow] = useState({
  15. page: 0,
  16. size: 10,
  17. name: null,
  18. available_range: 1,
  19. });
  20. const [iconParams, setIconParams] = useState({
  21. name: null,
  22. page: 0,
  23. size: 10000,
  24. });
  25. const navgite = useNavigate();
  26. const [datasetTypeList, setDatasetTypeList] = useState([]);
  27. const [datasetDirectionList, setDatasetDirectionList] = useState([]);
  28. const [activeType, setActiveType] = useState(null);
  29. const [activeTag, setActiveTag] = useState(null);
  30. const [isModalOpen, setIsModalOpen] = useState(false);
  31. const [datasetList, setDatasetList] = useState([]);
  32. const [total, setTotal] = useState(0);
  33. const [form] = Form.useForm();
  34. const [dialogTitle, setDialogTitle] = useState('新建数据');
  35. const getDatasetlist = (queryFlow) => {
  36. getDatasetList(queryFlow).then((ret) => {
  37. console.log(ret);
  38. if (ret.code == 200) {
  39. setDatasetList(ret.data.content);
  40. setTotal(ret.data.totalElements);
  41. }
  42. });
  43. };
  44. const onSearch = (values) => {
  45. console.log(values);
  46. getAssetIconList({ ...iconParams, name: values });
  47. };
  48. const getAssetIconList = (params) => {
  49. getAssetIcon(params).then((ret) => {
  50. console.log(ret);
  51. if (ret.code == 200 && ret.data.content && ret.data.content.length > 0) {
  52. setDatasetTypeList(ret.data.content.filter((item) => item.category_id == 1));
  53. setDatasetDirectionList(ret.data.content.filter((item) => item.category_id == 2));
  54. } else {
  55. setDatasetTypeList([]);
  56. setDatasetDirectionList([]);
  57. }
  58. });
  59. };
  60. const nameSearch = (values) => {
  61. console.log(values);
  62. getDatasetlist({ ...queryFlow, name: values });
  63. };
  64. const showModal = () => {
  65. form.resetFields();
  66. setDialogTitle('新建数据集');
  67. setIsModalOpen(true);
  68. };
  69. const handleOk = () => {
  70. console.log(1111);
  71. setIsModalOpen(false);
  72. };
  73. const handleCancel = () => {
  74. setIsModalOpen(false);
  75. };
  76. const chooseDatasetType = (val, item) => {
  77. console.log(val, item);
  78. if (item.path == queryFlow.data_type) {
  79. setActiveType('');
  80. setQueryFlow({ ...queryFlow, data_type: null });
  81. getDatasetlist({ ...queryFlow, data_type: null });
  82. } else {
  83. setActiveType(item.path);
  84. setQueryFlow({ ...queryFlow, data_type: item.path });
  85. getDatasetlist({ ...queryFlow, data_type: item.path });
  86. }
  87. // setQueryFlow({...queryFlow,data_type:item.path},()=>{
  88. // getDatasetlist()
  89. // })
  90. };
  91. const chooseDatasetTag = (val, item) => {
  92. console.log(val, item);
  93. if (item.path == queryFlow.data_tag) {
  94. setActiveTag('');
  95. setQueryFlow({ ...queryFlow, data_tag: null });
  96. getDatasetlist({ ...queryFlow, data_tag: null });
  97. } else {
  98. setActiveTag(item.path);
  99. setQueryFlow({ ...queryFlow, data_tag: item.path });
  100. getDatasetlist({ ...queryFlow, data_tag: item.path });
  101. }
  102. // setQueryFlow({...queryFlow,data_type:item.path},()=>{
  103. // getDatasetlist()
  104. // })
  105. };
  106. const routeToIntro = (e, record) => {
  107. e.stopPropagation();
  108. console.log(record);
  109. navgite({ pathname: `/dataset/datasetIntro/${record.id}` });
  110. };
  111. const onFinishFailed = (errorInfo) => {
  112. console.log('Failed:', errorInfo);
  113. };
  114. const onPageChange = (pageNum, pageSize) => {
  115. console.log(pageNum, pageSize);
  116. setQueryFlow({ ...queryFlow, page: pageNum - 1, size: pageSize });
  117. getDatasetlist({ ...queryFlow, page: pageNum - 1, size: pageSize });
  118. };
  119. useEffect(() => {
  120. getAssetIconList(iconParams);
  121. getDatasetlist(queryFlow);
  122. return () => {};
  123. }, []);
  124. return (
  125. <>
  126. <div className={Styles.datasetCneterBox}>
  127. <div className={Styles.datasetCneterLeftBox}>
  128. <div className={Styles.leftContentBox}>
  129. <Search
  130. placeholder="搜索"
  131. allowClear
  132. onSearch={onSearch}
  133. style={{
  134. width: 300,
  135. marginBottom: '15px',
  136. }}
  137. />
  138. <div className={Styles.itemTitle}>分类</div>
  139. <div className={Styles.itemBox}>
  140. {datasetTypeList && datasetTypeList.length > 0
  141. ? datasetTypeList.map((item) => {
  142. return (
  143. <div>
  144. <div
  145. className={[
  146. Styles.messageBox,
  147. item.path === activeType ? Styles.active : null,
  148. ].join(' ')}
  149. onClick={(e) => {
  150. chooseDatasetType(e, item);
  151. }}
  152. >
  153. <img
  154. className={Styles.ptIcon}
  155. style={{ width: '22px' }}
  156. src={`/assets/images/dataset/${item.path}.png`}
  157. alt=""
  158. />
  159. <img
  160. className={Styles.hoverIcon}
  161. style={{ width: '22px' }}
  162. src={`/assets/images/dataset/${item.path}-hover.png`}
  163. alt=""
  164. />
  165. <span className={Styles.messageText}>{item.name}</span>
  166. </div>
  167. </div>
  168. );
  169. })
  170. : ''}
  171. </div>
  172. <div className={Styles.itemTitle}>研究方向/应用领域</div>
  173. <div className={Styles.itemBox}>
  174. {datasetDirectionList && datasetDirectionList.length > 0
  175. ? datasetDirectionList.map((item) => {
  176. return (
  177. <div>
  178. <div
  179. className={[
  180. Styles.messageBox,
  181. item.path === activeTag ? Styles.active : null,
  182. ].join(' ')}
  183. onClick={(e) => {
  184. chooseDatasetTag(e, item);
  185. }}
  186. >
  187. <img
  188. className={Styles.ptIcon}
  189. style={{ width: '22px' }}
  190. src={`/assets/images/dataset/${item.path}.png`}
  191. alt=""
  192. />
  193. <img
  194. className={Styles.hoverIcon}
  195. style={{ width: '22px' }}
  196. src={`/assets/images/dataset/${item.path}-hover.png`}
  197. alt=""
  198. />
  199. <span className={Styles.messageText}>{item.name}</span>
  200. </div>
  201. </div>
  202. );
  203. })
  204. : ''}
  205. </div>
  206. </div>
  207. </div>
  208. <div className={Styles.datasetCneterRightBox}>
  209. <div className={Styles.dataSource}>
  210. <span>数据总数:{total}个</span>
  211. <div>
  212. <Search
  213. placeholder="按数据名称筛选"
  214. allowClear
  215. onSearch={nameSearch}
  216. style={{
  217. width: 300,
  218. }}
  219. />
  220. </div>
  221. </div>
  222. <div className={Styles.dataContent}>
  223. {datasetList && datasetList.length > 0
  224. ? datasetList.map((item) => {
  225. return (
  226. <div className={Styles.dataItem} onClick={(e) => routeToIntro(e, item)}>
  227. <span className={Styles.itemText}>{item.name}</span>
  228. <img
  229. onClick={(e) => {
  230. e.stopPropagation();
  231. modalConfirm({
  232. title: '确定删除该条数据集实例吗?',
  233. onOk: () => {
  234. deleteDataset(item.id).then((ret) => {
  235. if (ret.code === 200) {
  236. message.success('删除成功');
  237. getModelLists(queryFlow);
  238. } else {
  239. message.error(ret.msg);
  240. }
  241. });
  242. },
  243. });
  244. }}
  245. className={Styles.dropdown}
  246. style={{ width: '17px', marginRight: '6px' }}
  247. src={deleteIcon}
  248. alt=""
  249. />
  250. <div className={Styles.itemDescripition}>{item.description}</div>
  251. <div className={Styles.itemTime}>
  252. <img
  253. style={{ width: '17px', marginRight: '6px' }}
  254. src={creatByImg}
  255. alt=""
  256. />
  257. <span>{item.create_by}</span>
  258. </div>
  259. <div className={Styles.itemIcon}>
  260. <img style={{ width: '12px', marginRight: '5px' }} src={clock} alt="" />
  261. <span>最近更新: {moment(item.update_time).format('YYYY-MM-DD')}</span>
  262. </div>
  263. </div>
  264. );
  265. })
  266. : ''}
  267. {/* <Select.Option value="demo">Demo</Select.Option> */}
  268. </div>
  269. <Pagination
  270. total={total}
  271. showSizeChanger
  272. defaultPageSize={20}
  273. pageSizeOptions={[20, 40, 60, 80, 100]}
  274. showQuickJumper
  275. onChange={onPageChange}
  276. />
  277. </div>
  278. </div>
  279. </>
  280. );
  281. };
  282. export default PublicData;