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.

selectDataset.vue 35 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123
  1. <template>
  2. <div
  3. class="inline required field"
  4. :class="{ unite: benchmarkNew, min_title: benchmarkNew }"
  5. >
  6. <label v-if="benchmarkNew" style="font-weight: normal">数据集</label>
  7. <label v-else>数据集</label>
  8. <span v-if="benchmarkNew">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
  9. <input
  10. v-if="benchmarkNew"
  11. type="text"
  12. name="image"
  13. :value="imageAddress"
  14. style="width: 48.5%"
  15. placeholder="选择镜像或输入镜像地址"
  16. />
  17. <input
  18. v-else
  19. type="text"
  20. name="image"
  21. :value="imageAddress"
  22. placeholder="选择镜像或输入镜像地址"
  23. />
  24. <el-button
  25. type="text"
  26. @click="openDataset"
  27. icon="el-icon-plus"
  28. style="color: #0366d6"
  29. >选择数据集
  30. </el-button>
  31. <el-dialog title="选择数据集" :visible.sync="dialogVisible" width="50%">
  32. <div
  33. class="ui icon input"
  34. style="
  35. z-index: 9999;
  36. position: absolute;
  37. right: 28%;
  38. height: 30px;
  39. top: 6px;
  40. "
  41. >
  42. <i
  43. class="search icon"
  44. style="cursor: pointer; pointer-events: auto"
  45. ></i>
  46. <input
  47. type="text"
  48. placeholder="搜镜像Tag/描述/标签..."
  49. v-model="search"
  50. />
  51. </div>
  52. <el-row>
  53. <el-col
  54. :span="18"
  55. style="
  56. padding-right: 1rem;
  57. border-right: 1px solid #f5f5f6;
  58. position: relative;
  59. "
  60. >
  61. <el-tabs v-model="activeName" @tab-click="handleClick">
  62. <!-- 当前项目的数据集 -->
  63. <el-tab-pane label="本项目" name="first" v-loading="loadingCurrent">
  64. <el-row>
  65. <el-tree
  66. :data="currentDatasetList"
  67. ref="currentTree"
  68. highlight-current
  69. show-checkbox
  70. node-key="id"
  71. :default-expanded-keys="initCurrentTreeNode"
  72. :props="defaultProps"
  73. :index="20"
  74. accordion
  75. @check="onCheck"
  76. >
  77. <span slot-scope="{ node, data }" class="slot-wrap">
  78. <span v-if="data.parent" class="custom-tree-node">
  79. <el-tooltip v-if="data.Description">
  80. <div slot="content" class="multiple-wrap">
  81. {{ data.Description }}
  82. </div>
  83. <span class="dataset-title dataset-nowrap"
  84. >{{ node.label }}
  85. </span>
  86. </el-tooltip>
  87. <span v-else class="dataset-title dataset-nowrap"
  88. >{{ node.label }}
  89. </span>
  90. <a
  91. :href="'/'+data.Repo.OwnerName+'/'+data.Repo.Alias +'/datasets'"
  92. target="_blank"
  93. class="dataset-repolink dataset-nowrap"
  94. :title="data.Repo.OwnerName+'/'+data.Repo.Alias"
  95. >{{data.Repo.OwnerName}}/{{data.Repo.Alias}}</a
  96. >
  97. </span>
  98. <span v-else>{{ node.label }}</span>
  99. </span>
  100. </el-tree>
  101. <div></div>
  102. </el-row>
  103. <div
  104. class="ui container"
  105. style="margin-top: 25px; text-align: center"
  106. >
  107. <el-pagination
  108. background
  109. @current-change="currentChangePage"
  110. :current-page="initCurrentPage"
  111. :page-size="5"
  112. layout="total, prev, pager, next"
  113. :total="totalNumCurrent"
  114. >
  115. </el-pagination>
  116. </div>
  117. </el-tab-pane>
  118. <!-- 我上传的数据集 -->
  119. <el-tab-pane label="我上传的" name="second" v-loading="loadingMy">
  120. <el-row>
  121. <el-tree
  122. :data="myDatasetList"
  123. ref="myTree"
  124. highlight-current
  125. show-checkbox
  126. node-key="id"
  127. :default-expanded-keys="initMyTreeNode"
  128. :props="defaultProps"
  129. :index="20"
  130. accordion
  131. @check="onCheck"
  132. >
  133. <span slot-scope="{ node, data }" class="slot-wrap">
  134. <span v-if="data.parent" class="custom-tree-node">
  135. <el-tooltip v-if="data.Description">
  136. <div slot="content" class="multiple-wrap">
  137. {{ data.Description }}
  138. </div>
  139. <span class="dataset-title dataset-nowrap"
  140. >{{ node.label }}
  141. </span>
  142. </el-tooltip>
  143. <span v-else class="dataset-title dataset-nowrap"
  144. >{{ node.label }}
  145. </span>
  146. <a
  147. :href="'/'+data.Repo.OwnerName+'/'+data.Repo.Alias +'/datasets'"
  148. target="_blank"
  149. class="dataset-repolink dataset-nowrap"
  150. :title="data.Repo.OwnerName+'/'+data.Repo.Alias"
  151. >{{data.Repo.OwnerName}}/{{data.Repo.Alias}} </a
  152. >
  153. </span>
  154. <span v-else>{{ node.label }}</span>
  155. </span>
  156. </el-tree>
  157. <div></div>
  158. </el-row>
  159. <div
  160. class="ui container"
  161. style="margin-top: 25px; text-align: center"
  162. >
  163. <el-pagination
  164. background
  165. @current-change="myChangePage"
  166. :current-page="initMyPage"
  167. :page-size="5"
  168. layout="total, prev, pager, next"
  169. :total="totalNumMy"
  170. >
  171. </el-pagination>
  172. </div>
  173. </el-tab-pane>
  174. <!-- 公开的数据集 -->
  175. <el-tab-pane
  176. label="公开数据集"
  177. name="third"
  178. v-loading="loadingPublic"
  179. >
  180. <el-row>
  181. <el-tree
  182. :data="publicDatasetList"
  183. ref="publicTree"
  184. highlight-current
  185. show-checkbox
  186. node-key="id"
  187. :default-expanded-keys="initPublicTreeNode"
  188. :props="defaultProps"
  189. :index="20"
  190. accordion
  191. @check="onCheck"
  192. >
  193. <span slot-scope="{ node, data }" class="slot-wrap">
  194. <span v-if="data.parent" class="custom-tree-node">
  195. <el-tooltip v-if="data.Description">
  196. <div slot="content" class="multiple-wrap">
  197. {{ data.Description }}
  198. </div>
  199. <span class="dataset-title dataset-nowrap"
  200. >{{ node.label }}
  201. </span>
  202. </el-tooltip>
  203. <span v-else class="dataset-title dataset-nowrap"
  204. >{{ node.label }}
  205. </span>
  206. <a
  207. :href="'/'+data.Repo.OwnerName+'/'+data.Repo.Alias +'/datasets'"
  208. target="_blank"
  209. class="dataset-repolink dataset-nowrap"
  210. :title="data.Repo.OwnerName+'/'+data.Repo.Alias"
  211. >{{data.Repo.OwnerName}}/{{data.Repo.Alias}}</a
  212. >
  213. </span>
  214. <span v-else>{{ node.label }}</span>
  215. </span>
  216. </el-tree>
  217. <div></div>
  218. </el-row>
  219. <div
  220. class="ui container"
  221. style="margin-top: 25px; text-align: center"
  222. >
  223. <el-pagination
  224. background
  225. @current-change="publicChangePage"
  226. :current-page="initPublicPage"
  227. :page-size="5"
  228. layout="total, prev, pager, next"
  229. :total="totalNumPublic"
  230. >
  231. </el-pagination>
  232. </div>
  233. </el-tab-pane>
  234. <!-- 我点赞的数据集 -->
  235. <el-tab-pane
  236. label="我点赞的"
  237. name="four"
  238. v-loading="loadingFavorite"
  239. >
  240. <el-row>
  241. <el-tree
  242. :data="MyFavoriteDatasetList"
  243. ref="favoriteTree"
  244. highlight-current
  245. show-checkbox
  246. node-key="id"
  247. :default-expanded-keys="initFavoriteTreeNode"
  248. :props="defaultProps"
  249. :index="20"
  250. accordion
  251. @check="onCheck"
  252. >
  253. <span slot-scope="{ node, data }" class="slot-wrap">
  254. <span v-if="data.parent" class="custom-tree-node">
  255. <el-tooltip v-if="data.Description">
  256. <div slot="content" class="multiple-wrap">
  257. {{ data.Description }}
  258. </div>
  259. <span class="dataset-title dataset-nowrap"
  260. >{{ node.label }}
  261. </span>
  262. </el-tooltip>
  263. <span v-else class="dataset-title dataset-nowrap"
  264. >{{ node.label }}
  265. </span>
  266. <a
  267. :href="'/'+data.Repo.OwnerName+'/'+data.Repo.Alias +'/datasets'"
  268. target="_blank"
  269. class="dataset-repolink dataset-nowrap"
  270. :title="data.Repo.OwnerName+'/'+data.Repo.Alias"
  271. >{{data.Repo.OwnerName}}/{{data.Repo.Alias}}</a
  272. >
  273. </span>
  274. <span v-else>{{ node.label }}</span>
  275. </span>
  276. </el-tree>
  277. <div></div>
  278. </el-row>
  279. <div
  280. class="ui container"
  281. style="margin-top: 25px; text-align: center"
  282. >
  283. <el-pagination
  284. background
  285. @current-change="favoriteChangePage"
  286. :current-page="initFavoritePage"
  287. :page-size="5"
  288. layout="total, prev, pager, next"
  289. :total="totalNumFavorite"
  290. >
  291. </el-pagination>
  292. </div>
  293. </el-tab-pane>
  294. </el-tabs>
  295. </el-col>
  296. <el-col
  297. :span="6"
  298. style="
  299. display: flex;
  300. flex-direction: column;
  301. height: 100%;
  302. right: 0;
  303. position: absolute;
  304. padding: 0 1.5rem;
  305. "
  306. >
  307. <div
  308. style="
  309. font-size: 14px;
  310. height: 20px;
  311. text-align: left;
  312. color: #0066ff;
  313. "
  314. >
  315. 已选择数据集
  316. </div>
  317. <div style="flex: 1; margin-top: 1.5rem">
  318. <el-checkbox-group v-model="checkList">
  319. <el-checkbox
  320. v-for="(item, index) in selectDatasetArray"
  321. :key="index"
  322. :label="item.label"
  323. :title="item.label"
  324. @change="(checked) => changeCheckbox(checked, item)"
  325. ></el-checkbox>
  326. </el-checkbox-group>
  327. </div>
  328. <div>
  329. <el-button>aaaa</el-button>
  330. </div>
  331. </el-col>
  332. </el-row>
  333. </el-dialog>
  334. </div>
  335. </template>
  336. <script>
  337. const { _AppSubUrl, _StaticUrlPrefix, csrf } = window.config;
  338. export default {
  339. components: {},
  340. data() {
  341. return {
  342. data: [
  343. {
  344. id: 1,
  345. label:
  346. "一级 1asdasdasdddddddddddddddddddddddddddddddddddddddddddddddzxccccccasdzxczxcasdasd",
  347. disabled: true,
  348. desc: "asdasjhdashdjkasssssssssssssdasasdasdasdxzczxczcxasdasdddddddddddddddddddddddddddddddddxzczxcsadddddddddddddddddddddddddddddddddzxcccccccasdasdxczzzasdasczxcasdaszxcsadazxc",
  349. children: [
  350. {
  351. id: 4,
  352. label: "二级 1-1",
  353. },
  354. {
  355. id: 9,
  356. label: "三级 1-1-1",
  357. },
  358. {
  359. id: 10,
  360. label: "三级 1-1-2",
  361. },
  362. {
  363. id: 11,
  364. label: "三级 1-1-3",
  365. },
  366. {
  367. id: 12,
  368. label: "二级 1-1",
  369. },
  370. {
  371. id: 13,
  372. label: "三级 1-1-1",
  373. },
  374. {
  375. id: 14,
  376. label: "三级 1-1-2",
  377. },
  378. {
  379. id: 15,
  380. label: "三级 1-1-3",
  381. },
  382. {
  383. id: 16,
  384. label: "三级 1-1-1",
  385. },
  386. {
  387. id: 17,
  388. label: "三级 1-1-2",
  389. },
  390. {
  391. id: 18,
  392. label: "三级 1-1-3",
  393. },
  394. ],
  395. },
  396. {
  397. id: 2,
  398. label: "一级 2",
  399. disabled: true,
  400. desc: "",
  401. children: [
  402. {
  403. id: 5,
  404. label: "二级 2-1",
  405. },
  406. {
  407. id: 6,
  408. label: "二级 2-2",
  409. },
  410. ],
  411. },
  412. {
  413. id: 3,
  414. label: "一级 3",
  415. disabled: true,
  416. desc: "",
  417. children: [
  418. {
  419. id: 7,
  420. label: "二级 3-1",
  421. },
  422. {
  423. id: 8,
  424. label: "二级 3-2",
  425. },
  426. ],
  427. },
  428. ],
  429. data1: [
  430. {
  431. id: 21,
  432. label:
  433. "一级 1asdasdasdddddddddddddddddddddddddddddddddddddddddddddddzxccccccasdzxczxcasdasd",
  434. disabled: true,
  435. desc: "asdasjhdashdjkasssssssssssssdasasdasdasdxzczxczcxasdasdddddddddddddddddddddddddddddddddxzczxcsadddddddddddddddddddddddddddddddddzxcccccccasdasdxczzzasdasczxcasdaszxcsadazxc",
  436. children: [
  437. {
  438. id: 24,
  439. label: "二级 1-1",
  440. },
  441. {
  442. id: 29,
  443. label: "三级 1-1-1-1",
  444. },
  445. {
  446. id: 30,
  447. label: "三级 1-1-2-2",
  448. },
  449. {
  450. id: 31,
  451. label: "三级 1-1-3-3",
  452. },
  453. {
  454. id: 32,
  455. label: "二级 1-1-1",
  456. },
  457. {
  458. id: 33,
  459. label: "三级 1-1-1-1",
  460. },
  461. {
  462. id: 34,
  463. label: "三级 1-1-2-2",
  464. },
  465. {
  466. id: 35,
  467. label: "三级 1-1-3",
  468. },
  469. {
  470. id: 36,
  471. label: "三级 1-1-1",
  472. },
  473. {
  474. id: 37,
  475. label: "三级 1-1-2",
  476. },
  477. {
  478. id: 38,
  479. label: "三级 1-1-3",
  480. },
  481. ],
  482. },
  483. {
  484. id: 40,
  485. label: "一级 2",
  486. disabled: true,
  487. desc: "",
  488. children: [
  489. {
  490. id: 45,
  491. label: "二级 2-1",
  492. },
  493. {
  494. id: 46,
  495. label: "二级 2-2",
  496. },
  497. ],
  498. },
  499. {
  500. id: 50,
  501. label: "一级 3",
  502. disabled: true,
  503. desc: "",
  504. children: [
  505. {
  506. id: 51,
  507. label: "二级 3-1",
  508. },
  509. {
  510. id: 52,
  511. label: "二级 3-2",
  512. },
  513. ],
  514. },
  515. ],
  516. defaultProps: {
  517. children: "Attachments",
  518. label: "label",
  519. },
  520. dialogVisible: false,
  521. benchmarkNew: false,
  522. imageAddress: "",
  523. activeName: "first",
  524. search: "",
  525. type: 0,
  526. repoLink: "",
  527. selectDatasetArray: [],
  528. checkList: [],
  529. checkList1: [],
  530. saveStutusCheck:[],
  531. //当前项目数据集页面配置的初始化
  532. initCurrentPage: 1,
  533. totalNumCurrent: 0,
  534. paramsCurrent: { page: 1, q: "" },
  535. currentDatasetList: [],
  536. loadingCurrent: false,
  537. initCurrentTreeNode: [],
  538. //我上传的数据集页面配置的初始化
  539. initMyPage: 1,
  540. totalNumMy: 0,
  541. paramsMy: { page: 1, q: "" },
  542. myDatasetList: [],
  543. loadingMy: false,
  544. initMyTreeNode: [],
  545. //公开的数据集页面配置的初始化
  546. initPublicPage: 1,
  547. totalNumPublic: 0,
  548. paramsPublics: { page: 1, q: "" },
  549. publicDatasetList: [],
  550. loadingPublic: false,
  551. initPublicTreeNode: [],
  552. //我点赞的数据集页面配置的初始化
  553. initFavoritePage: 1,
  554. totalNumFavorite: 0,
  555. MyFavoriteDatasetList: [],
  556. paramsFavorite: { page: 1, q: "" },
  557. loadingFavorite: false,
  558. initFavoriteTreeNode: [],
  559. };
  560. },
  561. methods: {
  562. openDataset() {
  563. this.dialogVisible = true;
  564. this.getCurrentRepoDataset();
  565. },
  566. handleClick(tab, event) {
  567. this.search = "";
  568. if (tab.name == "first") {
  569. // this.paramsPublic.q = "";
  570. this.getCurrentRepoDataset();
  571. }
  572. if (tab.name == "second") {
  573. this.getMyUploadDataset();
  574. }
  575. if (tab.name == "third") {
  576. this.getPublicDataset();
  577. }
  578. if (tab.name == "four") {
  579. this.getMyFavoriteDataset();
  580. }
  581. },
  582. // checkChange(data, checked, indeterminate) {
  583. // console.log("------------checkChange----------");
  584. // console.log("-----data,", data, checked, indeterminate);
  585. // if (checked) {
  586. // console.log("--------------start Array", this.selectDatasetArray);
  587. // let flag = this.selectDatasetArray.some(
  588. // (item) => item.label === data.label
  589. // );
  590. // if (flag) {
  591. // this.$refs.currentTree.setChecked(data.id, false);
  592. // this.$message.warning("不能选择相同名称的数据文件");
  593. // } else if (this.selectDatasetArray.length === 5) {
  594. // this.$refs.currentTree.setChecked(data.id, false);
  595. // this.$message.error("最多不超过五个文件");
  596. // } else {
  597. // this.selectDatasetArray.push(data);
  598. // }
  599. // } else {
  600. // const index = this.selectDatasetArray.findIndex(
  601. // (item) => item.id === data.id
  602. // );
  603. // console.log("---------", index);
  604. // if (index !== -1) {
  605. // this.selectDatasetArray.splice(index, 1);
  606. // }
  607. // }
  608. // console.log("--------------end Array", this.selectDatasetArray);
  609. // },
  610. onCheck(data, checkedInfo) {
  611. console.log("--ref------", this.$refs[data.ref]);
  612. console.log("---------oncheck-----", data, checkedInfo);
  613. console.log("start array", this.selectDatasetArray);
  614. if (
  615. this.selectDatasetArray.length === 0 ||
  616. this.selectDatasetArray.every((item) => item.id !== data.id)
  617. ) {
  618. console.log("111111111111");
  619. if (this.selectDatasetArray.some((item) => item.label === data.label)) {
  620. this.$refs[data.ref].setChecked(data.id, false, false);
  621. this.$message.warning("不能选择相同名称的数据文件");
  622. } else if (this.selectDatasetArray.length === 5) {
  623. this.$refs[data.ref].setChecked(data.id, false, false);
  624. this.$message.error("最多不超过五个文件");
  625. } else {
  626. console.log("push");
  627. this.selectDatasetArray.push(data);
  628. }
  629. } else {
  630. console.log("55555555555");
  631. let index = this.selectDatasetArray.findIndex((item) => {
  632. console.log(item.id, data.id);
  633. return item.id === data.id;
  634. });
  635. console.log("index", index);
  636. this.selectDatasetArray.splice(index, 1);
  637. console.log(this.selectDatasetArray);
  638. }
  639. this.checkList = this.selectDatasetArray.map((item) => {
  640. return item.label;
  641. });
  642. this.checkList1 = this.selectDatasetArray.map((item) => {
  643. return item.id;
  644. });
  645. console.log()
  646. this.saveStutusCheck = this.selectDatasetArray.reduce((pre,cur)=>{
  647. let checkedKeys={}
  648. checkedKeys.treeRef = cur.ref
  649. checkedKeys.id=cur.id
  650. checkedKeys.page = cur.page
  651. pre.push(checkedKeys)
  652. return pre
  653. },[])
  654. console.log("this.saveStutusCheck",this.saveStutusCheck)
  655. console.log(this.selectDatasetArray, this.checkList);
  656. },
  657. // onMyCheck(data, checkedInfo) {
  658. // console.log("---------oncheck-----", data, checkedInfo);
  659. // console.log("start array", this.selectDatasetArray);
  660. // if (
  661. // this.selectDatasetArray.length === 0 ||
  662. // this.selectDatasetArray.every((item) => item.id !== data.id)
  663. // ) {
  664. // console.log("111111111111");
  665. // if (this.selectDatasetArray.some((item) => item.label === data.label)) {
  666. // this.$refs.myTree.setChecked(data.id, false, false);
  667. // this.$message.warning("不能选择相同名称的数据文件");
  668. // } else if (this.selectDatasetArray.length === 5) {
  669. // this.$refs.myTree.setChecked(data.id, false, false);
  670. // this.$message.error("最多不超过五个文件");
  671. // } else {
  672. // console.log("push");
  673. // this.selectDatasetArray.push(data);
  674. // }
  675. // } else {
  676. // console.log("55555555555");
  677. // let index = this.selectDatasetArray.findIndex((item) => {
  678. // console.log(item.id, data.id);
  679. // return item.id === data.id;
  680. // });
  681. // console.log("index", index);
  682. // this.selectDatasetArray.splice(index, 1);
  683. // console.log(this.selectDatasetArray);
  684. // }
  685. // this.checkList = this.selectDatasetArray.map((item) => {
  686. // return item.label;
  687. // });
  688. // console.log(this.selectDatasetArray, this.checkList);
  689. // },
  690. //已选择数据集checkbox group 勾选事件
  691. changeCheckbox(checked, data) {
  692. console.log(checked, data);
  693. // if (this.data[0].children.some((item) => item.id === data.id)) {
  694. // console.log("----is data-----------");
  695. // this.$refs.currentTree.setChecked(data.id, false, false);
  696. // } else if (this.data1[0].children.some((item) => item.id === data.id)) {
  697. // console.log("----is data1-----------");
  698. // this.$refs.myTree.setChecked(data.id, false, false);
  699. // }
  700. switch(data.ref){
  701. case "currentTree":
  702. {
  703. this.$refs.currentTree.setChecked(data.id, false, false);
  704. let index = this.saveStutusCheck.findIndex((item) => {
  705. return item.id === data.id;
  706. });
  707. index!==-1&&this.saveStutusCheck.splice(index, 1);
  708. }
  709. case "myTree":
  710. {
  711. this.$refs.myTree.setChecked(data.id, false, false);
  712. let index = this.saveStutusCheck.findIndex((item) => {
  713. return item.id === data.id;
  714. });
  715. index!==-1&&this.saveStutusCheck.splice(index, 1);
  716. }
  717. case "publicTree":
  718. {
  719. this.$refs.publicTree.setChecked(data.id, false, false);
  720. let index = this.saveStutusCheck.findIndex((item) => {
  721. return item.id === data.id;
  722. });
  723. index!==-1&&this.saveStutusCheck.splice(index, 1);
  724. }
  725. case "favoriteTree":
  726. {
  727. this.$refs.myTree.setChecked(data.id, false, false);
  728. let index = this.saveStutusCheck.findIndex((item) => {
  729. return item.id === data.id;
  730. });
  731. index!==-1&&this.saveStutusCheck.splice(index, 1);
  732. }
  733. default:
  734. }
  735. let index = this.selectDatasetArray.findIndex((item) => {
  736. console.log(item.id, data.id);
  737. return item.id === data.id;
  738. });
  739. console.log("index", index);
  740. this.selectDatasetArray.splice(index, 1);
  741. console.log(this.selectDatasetArray);
  742. },
  743. tableHeaderStyle({ row, column, rowIndex, columnIndex }) {
  744. if (rowIndex === 0) {
  745. return "background:#f5f5f6;color:#606266";
  746. }
  747. },
  748. currentChangePage(val) {
  749. this.paramsCurrent.page = val;
  750. this.getCurrentRepoDataset();
  751. },
  752. myChangePage(val) {
  753. this.paramsMy.page = val;
  754. this.getMyUploadDataset();
  755. },
  756. publicChangePage(val) {
  757. this.paramsPublics.page = val;
  758. this.getPublicDataset();
  759. },
  760. favoriteChangePage(val) {
  761. console.log(val);
  762. this.paramsFavorite.page = val;
  763. this.getMyFavoriteDataset();
  764. },
  765. getCurrentRepoDataset() {
  766. this.loadingCurrent = true;
  767. let url = this.repoLink + "/datasets/current_repo_m";
  768. this.paramsCurrent.type = this.type;
  769. this.$axios
  770. .get(url, {
  771. params: this.paramsCurrent,
  772. })
  773. .then((res) => {
  774. this.loadingCurrent = false;
  775. console.log(res);
  776. let data = JSON.parse(res.data.data);
  777. console.log(data);
  778. this.currentDatasetList = this.transformeTreeData(
  779. data,
  780. "currentTree",
  781. this.paramsCurrent.page
  782. );
  783. this.initCurrentTreeNode = [this.currentDatasetList[0].id];
  784. console.log("this.initCurrentTreeNode", this.initCurrentTreeNode);
  785. this.totalNumCurrent = parseInt(res.data.count);
  786. console.log(this.selectDatasetArray);
  787. console.log("this.currentDatasetList:", this.currentDatasetList);
  788. let setCheckedKeysList=this.saveStutusCheck.reduce((pre,cur)=>{
  789. if(cur.treeRef==='currentTree' && cur.page===this.paramsCurrent.page){
  790. pre.push(cur.id)
  791. }
  792. return pre
  793. },[])
  794. console.log("setCheckedKeysList",setCheckedKeysList)
  795. this.$refs.currentTree.setCheckedKeys(setCheckedKeysList);
  796. })
  797. .catch(function (error) {
  798. this.loadingCurrent = false;
  799. console.log(error);
  800. });
  801. },
  802. getMyUploadDataset() {
  803. this.loadingMy = true;
  804. let url = this.repoLink + "/datasets/my_datasets_m";
  805. this.paramsMy.type = this.type;
  806. this.$axios
  807. .get(url, {
  808. params: this.paramsMy,
  809. })
  810. .then((res) => {
  811. this.loadingMy = false;
  812. console.log(res);
  813. let data = JSON.parse(res.data.data);
  814. console.log(data);
  815. this.myDatasetList = this.transformeTreeData(data, "myTree",this.paramsMy.page);
  816. this.initMyTreeNode = [this.myDatasetList[0].id];
  817. this.totalNumMy = parseInt(res.data.count);
  818. console.log("this.myDatasetList:", this.myDatasetList);
  819. console.log("this.aveStutusCheck:", this.saveStutusCheck)
  820. let setCheckedKeysList=this.saveStutusCheck.reduce((pre,cur)=>{
  821. if(cur.treeRef==='myTree' && cur.page===this.paramsMy.page){
  822. pre.push(cur.id)
  823. }
  824. return pre
  825. },[])
  826. console.log("setCheckedKeysList",setCheckedKeysList)
  827. this.$refs.myTree.setCheckedKeys(setCheckedKeysList);
  828. })
  829. .catch(function (error) {
  830. console.log(error);
  831. });
  832. },
  833. getPublicDataset() {
  834. this.loadingPublic = true;
  835. let url = this.repoLink + "/datasets/public_datasets_m";
  836. this.paramsPublics.type = this.type;
  837. this.$axios
  838. .get(url, {
  839. params: this.paramsPublics,
  840. })
  841. .then((res) => {
  842. this.loadingPublic = false;
  843. console.log(res);
  844. let data = JSON.parse(res.data.data);
  845. console.log(data);
  846. this.publicDatasetList = this.transformeTreeData(data, "publicTree",this.paramsPublics.page);
  847. this.initPublicTreeNode = [this.publicDatasetList[0].id];
  848. this.totalNumPublic = parseInt(res.data.count);
  849. console.log("this.publicDatasetList:", this.publicDatasetList);
  850. let setCheckedKeysList=this.saveStutusCheck.reduce((pre,cur)=>{
  851. if(cur.treeRef==='publicTree' && cur.page===this.paramsPublics.page){
  852. pre.push(cur.id)
  853. }
  854. return pre
  855. },[])
  856. console.log("setCheckedKeysList",setCheckedKeysList)
  857. this.$refs.publicTree.setCheckedKeys(setCheckedKeysList);
  858. })
  859. .catch(function (error) {
  860. this.loadingPublic = false;
  861. console.log(error);
  862. });
  863. },
  864. getMyFavoriteDataset() {
  865. this.loadingFavorite = true;
  866. let url = this.repoLink + "/datasets/my_favorite_m";
  867. this.paramsFavorite.type = this.type;
  868. this.$axios
  869. .get(url, {
  870. params: this.paramsFavorite,
  871. })
  872. .then((res) => {
  873. this.loadingFavorite = false;
  874. console.log(res);
  875. let data = JSON.parse(res.data.data);
  876. console.log(data);
  877. this.MyFavoriteDatasetList = this.transformeTreeData(
  878. data,
  879. "favoriteTree",
  880. this.paramsFavorite.page
  881. );
  882. this.initFavoriteTreeNode = [this.MyFavoriteDatasetList[0].id];
  883. this.totalNumFavorite = parseInt(res.data.count);
  884. console.log(
  885. "this.MyFavoriteDatasetList:",
  886. this.MyFavoriteDatasetList
  887. );
  888. let setCheckedKeysList=this.saveStutusCheck.reduce((pre,cur)=>{
  889. if(cur.treeRef==='favoriteTree' && cur.page===this.paramsFavorite.page){
  890. pre.push(cur.id)
  891. }
  892. return pre
  893. },[])
  894. console.log("setCheckedKeysList",setCheckedKeysList)
  895. this.$refs.favoriteTree.setCheckedKeys(setCheckedKeysList);
  896. })
  897. .catch(function (error) {
  898. this.loadingFavorite = false;
  899. console.log(error);
  900. });
  901. },
  902. transformeTreeData(data, ref,page) {
  903. return data.reduce((preParent, curParent) => {
  904. curParent.id = `paraent-${curParent.ID}`;
  905. curParent.disabled = true;
  906. curParent.parent = true;
  907. curParent.label = curParent.Title;
  908. let childrenData = curParent.Attachments.reduce(
  909. (preChild, curchild) => {
  910. curchild.id = `chilrden-${ref}-${curchild.ID}`;
  911. curchild.ref = ref;
  912. curchild.page = page
  913. if (curchild.DecompressState !== 1) {
  914. curchild.disabled = true;
  915. }
  916. curchild.label = curchild.Name;
  917. preChild.push(curchild);
  918. return preChild;
  919. },
  920. []
  921. );
  922. preParent.push(curParent);
  923. return preParent;
  924. }, []);
  925. },
  926. searchName() {
  927. if (this.activeName == "first") {
  928. this.paramsPublic.q = this.search;
  929. this.paramsPublic.page = 1;
  930. this.getImageListPublic();
  931. }
  932. if (this.activeName == "second") {
  933. this.paramsCustom.q = this.search;
  934. this.paramsCustom.page = 1;
  935. this.getImageListCustom();
  936. }
  937. if (this.activeName == "third") {
  938. this.paramsStar.q = this.search;
  939. this.paramsStar.page = 1;
  940. this.getImageListStar();
  941. }
  942. },
  943. selectImages(place) {
  944. this.imageAddress = place;
  945. this.dialogVisible = false;
  946. },
  947. },
  948. watch: {
  949. search(val) {
  950. if (this.activeName == "first") {
  951. this.paramsPublic.q = val;
  952. this.getCurrentRepoDataset();
  953. }
  954. if (this.activeName == "second") {
  955. this.paramsCustom.q = val;
  956. this.getMyUploadDataset();
  957. }
  958. if (this.activeName == "third") {
  959. this.paramsStar.q = val;
  960. this.getPublicDataset();
  961. }
  962. if (this.activeName == "four") {
  963. this.paramsStar.q = val;
  964. this.getMyFavoriteDataset();
  965. }
  966. },
  967. },
  968. mounted() {
  969. this.type = $(".cloudbrain-type").data("cloudbrain-type");
  970. this.repoLink = $(".cloudbrain-type").data("repo-link");
  971. console.log(this.type, this.repoLink);
  972. if (
  973. location.href.indexOf("benchmark") !== -1 ||
  974. location.href.indexOf("train-job") !== -1
  975. ) {
  976. this.benchmarkNew = true;
  977. }
  978. },
  979. created() {},
  980. };
  981. </script>
  982. <style scoped>
  983. .header-wrapper {
  984. background-color: #f5f5f6;
  985. padding-top: 15px;
  986. }
  987. .image_text {
  988. padding: 25px 0 55px 0;
  989. }
  990. #header {
  991. position: relative;
  992. top: -40px;
  993. }
  994. #success {
  995. background-color: #5bb973;
  996. color: white;
  997. }
  998. .text-over {
  999. overflow: hidden;
  1000. text-overflow: ellipsis;
  1001. vertical-align: middle;
  1002. white-space: nowrap;
  1003. }
  1004. .image_title {
  1005. display: inline-block;
  1006. width: 80%;
  1007. cursor: default;
  1008. color: rgb(66, 98, 144);
  1009. }
  1010. .image_desc {
  1011. -webkit-line-clamp: 2;
  1012. -webkit-box-orient: vertical;
  1013. display: -webkit-box;
  1014. text-overflow: ellipsis;
  1015. overflow: hidden;
  1016. }
  1017. .heart-stroke {
  1018. stroke: #666;
  1019. stroke-width: 2;
  1020. fill: #fff;
  1021. }
  1022. .stars_active {
  1023. fill: #fa8c16 !important;
  1024. stroke: #fa8c16 !important;
  1025. }
  1026. /deep/ .el-dialog__body {
  1027. position: relative;
  1028. }
  1029. .el-tree {
  1030. max-height: 400px;
  1031. overflow-y: auto;
  1032. overflow-x: hidden;
  1033. position: relative;
  1034. cursor: default;
  1035. background: #fff;
  1036. color: #606266;
  1037. font-family: SourceHanSansSC-medium;
  1038. }
  1039. .custom-tree-node {
  1040. display: flex;
  1041. align-items: center;
  1042. justify-content: space-between;
  1043. }
  1044. .custom-tree-node .dataset-title {
  1045. font-size: 14px;
  1046. color: #101010;
  1047. font-weight: 600;
  1048. flex: 1;
  1049. }
  1050. .custom-tree-node .dataset-repolink {
  1051. flex: 1;
  1052. text-align: right;
  1053. }
  1054. .el-tree /deep/ .el-tree-node__content {
  1055. height: 40px;
  1056. background-color: #f5f5f6;
  1057. }
  1058. .el-tree /deep/ .el-tree-node__children .el-tree-node__content {
  1059. height: 30px;
  1060. background-color: #fff;
  1061. line-height: 20px;
  1062. font-size: 12px;
  1063. }
  1064. /deep/ .el-checkbox-group .el-checkbox{
  1065. max-width: 100%;
  1066. }
  1067. /deep/ .el-checkbox-group .el-checkbox .el-checkbox__label{
  1068. max-width:100%;
  1069. overflow: hidden;
  1070. vertical-align: middle;
  1071. text-overflow: ellipsis;
  1072. }
  1073. .dataset-nowrap {
  1074. overflow: hidden;
  1075. text-overflow: ellipsis;
  1076. }
  1077. .slot-wrap {
  1078. flex: 1;
  1079. padding-right: 2rem;
  1080. max-width: 93%;
  1081. }
  1082. .multiple-wrap {
  1083. -webkit-line-clamp: 3;
  1084. -webkit-box-orient: vertical;
  1085. display: -webkit-box;
  1086. max-width: 400px;
  1087. overflow: hidden;
  1088. }
  1089. @media screen and (min-width: 1200px) and (max-width: 1400px) {
  1090. .multiple-wrap {
  1091. max-width: 200px;
  1092. }
  1093. }
  1094. </style>