diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts
index 3f381754..911db70b 100644
--- a/react-ui/config/proxy.ts
+++ b/react-ui/config/proxy.ts
@@ -16,6 +16,7 @@ export default {
'/api/': {
// 要代理的地址
// target: 'http://172.20.32.181:31205',
+ // target: 'http://172.20.32.98:8082',
target: 'http://172.20.32.150:8082',
// 配置了这个可以从 http 代理到 https
// 依赖 origin 的功能可能需要这个,比如 cookie
diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts
index 224541ce..9dd26c3e 100644
--- a/react-ui/config/routes.ts
+++ b/react-ui/config/routes.ts
@@ -105,6 +105,33 @@ export default [
},
]
},
+ {
+ name: 'dataset',
+ path: '/dataset',
+ routes: [
+ {
+ name: '数据集管理',
+ path: '/dataset/datasetIndex',
+ component: './Dataset/index',
+ },
+ {
+ name: '数据集简介',
+ path: '/dataset/datasetIntro/:id',
+ component: './Dataset/datasetIntro',
+ },
+ {
+ name: '模型管理',
+ path: '/dataset/modelIndex',
+ component: './Model/index',
+
+ },
+ {
+ name: '模型简介',
+ path: '/dataset/modelIntro/:id',
+ component: './Model/modelIntro',
+ },
+ ]
+ },
{
name: 'monitor',
path: '/monitor',
diff --git a/react-ui/public/assets/images/dataset-back.png b/react-ui/public/assets/images/dataset-back.png
new file mode 100644
index 00000000..10604dd9
Binary files /dev/null and b/react-ui/public/assets/images/dataset-back.png differ
diff --git a/react-ui/public/assets/images/dataset/101-hover.png b/react-ui/public/assets/images/dataset/101-hover.png
new file mode 100644
index 00000000..cb72d1cd
Binary files /dev/null and b/react-ui/public/assets/images/dataset/101-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/101.png b/react-ui/public/assets/images/dataset/101.png
new file mode 100644
index 00000000..d1e93c0e
Binary files /dev/null and b/react-ui/public/assets/images/dataset/101.png differ
diff --git a/react-ui/public/assets/images/dataset/102-hover.png b/react-ui/public/assets/images/dataset/102-hover.png
new file mode 100644
index 00000000..2a7d8940
Binary files /dev/null and b/react-ui/public/assets/images/dataset/102-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/102.png b/react-ui/public/assets/images/dataset/102.png
new file mode 100644
index 00000000..13b6f312
Binary files /dev/null and b/react-ui/public/assets/images/dataset/102.png differ
diff --git a/react-ui/public/assets/images/dataset/103-hover.png b/react-ui/public/assets/images/dataset/103-hover.png
new file mode 100644
index 00000000..223f57fd
Binary files /dev/null and b/react-ui/public/assets/images/dataset/103-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/103.png b/react-ui/public/assets/images/dataset/103.png
new file mode 100644
index 00000000..654e3f00
Binary files /dev/null and b/react-ui/public/assets/images/dataset/103.png differ
diff --git a/react-ui/public/assets/images/dataset/104-hover.png b/react-ui/public/assets/images/dataset/104-hover.png
new file mode 100644
index 00000000..1132b52d
Binary files /dev/null and b/react-ui/public/assets/images/dataset/104-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/104.png b/react-ui/public/assets/images/dataset/104.png
new file mode 100644
index 00000000..49efaf49
Binary files /dev/null and b/react-ui/public/assets/images/dataset/104.png differ
diff --git a/react-ui/public/assets/images/dataset/105-hover.png b/react-ui/public/assets/images/dataset/105-hover.png
new file mode 100644
index 00000000..3b671ec9
Binary files /dev/null and b/react-ui/public/assets/images/dataset/105-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/105.png b/react-ui/public/assets/images/dataset/105.png
new file mode 100644
index 00000000..e46f0703
Binary files /dev/null and b/react-ui/public/assets/images/dataset/105.png differ
diff --git a/react-ui/public/assets/images/dataset/201-hover.png b/react-ui/public/assets/images/dataset/201-hover.png
new file mode 100644
index 00000000..ce75d970
Binary files /dev/null and b/react-ui/public/assets/images/dataset/201-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/201.png b/react-ui/public/assets/images/dataset/201.png
new file mode 100644
index 00000000..9c250f5e
Binary files /dev/null and b/react-ui/public/assets/images/dataset/201.png differ
diff --git a/react-ui/public/assets/images/dataset/202-hover.png b/react-ui/public/assets/images/dataset/202-hover.png
new file mode 100644
index 00000000..473fa1ee
Binary files /dev/null and b/react-ui/public/assets/images/dataset/202-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/202.png b/react-ui/public/assets/images/dataset/202.png
new file mode 100644
index 00000000..10bb9a70
Binary files /dev/null and b/react-ui/public/assets/images/dataset/202.png differ
diff --git a/react-ui/public/assets/images/dataset/203-hover.png b/react-ui/public/assets/images/dataset/203-hover.png
new file mode 100644
index 00000000..67f9be74
Binary files /dev/null and b/react-ui/public/assets/images/dataset/203-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/203.png b/react-ui/public/assets/images/dataset/203.png
new file mode 100644
index 00000000..7cd68e50
Binary files /dev/null and b/react-ui/public/assets/images/dataset/203.png differ
diff --git a/react-ui/public/assets/images/dataset/204-hover.png b/react-ui/public/assets/images/dataset/204-hover.png
new file mode 100644
index 00000000..add14532
Binary files /dev/null and b/react-ui/public/assets/images/dataset/204-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/204.png b/react-ui/public/assets/images/dataset/204.png
new file mode 100644
index 00000000..f1b1c7f4
Binary files /dev/null and b/react-ui/public/assets/images/dataset/204.png differ
diff --git a/react-ui/public/assets/images/dataset/205-hover.png b/react-ui/public/assets/images/dataset/205-hover.png
new file mode 100644
index 00000000..1335a72c
Binary files /dev/null and b/react-ui/public/assets/images/dataset/205-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/205.png b/react-ui/public/assets/images/dataset/205.png
new file mode 100644
index 00000000..e4b57231
Binary files /dev/null and b/react-ui/public/assets/images/dataset/205.png differ
diff --git a/react-ui/public/assets/images/dataset/206-hover.png b/react-ui/public/assets/images/dataset/206-hover.png
new file mode 100644
index 00000000..a2d94e8f
Binary files /dev/null and b/react-ui/public/assets/images/dataset/206-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/206.png b/react-ui/public/assets/images/dataset/206.png
new file mode 100644
index 00000000..dadaed7c
Binary files /dev/null and b/react-ui/public/assets/images/dataset/206.png differ
diff --git a/react-ui/public/assets/images/dataset/207-hover.png b/react-ui/public/assets/images/dataset/207-hover.png
new file mode 100644
index 00000000..332e3d2f
Binary files /dev/null and b/react-ui/public/assets/images/dataset/207-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/207.png b/react-ui/public/assets/images/dataset/207.png
new file mode 100644
index 00000000..19c5a5ae
Binary files /dev/null and b/react-ui/public/assets/images/dataset/207.png differ
diff --git a/react-ui/public/assets/images/dataset/208-hover.png b/react-ui/public/assets/images/dataset/208-hover.png
new file mode 100644
index 00000000..f301b63b
Binary files /dev/null and b/react-ui/public/assets/images/dataset/208-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/208.png b/react-ui/public/assets/images/dataset/208.png
new file mode 100644
index 00000000..5ac7b1d6
Binary files /dev/null and b/react-ui/public/assets/images/dataset/208.png differ
diff --git a/react-ui/public/assets/images/dataset/209-hover.png b/react-ui/public/assets/images/dataset/209-hover.png
new file mode 100644
index 00000000..b35d2d69
Binary files /dev/null and b/react-ui/public/assets/images/dataset/209-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/209.png b/react-ui/public/assets/images/dataset/209.png
new file mode 100644
index 00000000..98f224d3
Binary files /dev/null and b/react-ui/public/assets/images/dataset/209.png differ
diff --git a/react-ui/public/assets/images/dataset/210-hover.png b/react-ui/public/assets/images/dataset/210-hover.png
new file mode 100644
index 00000000..ad753acf
Binary files /dev/null and b/react-ui/public/assets/images/dataset/210-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/210.png b/react-ui/public/assets/images/dataset/210.png
new file mode 100644
index 00000000..f96c9bf9
Binary files /dev/null and b/react-ui/public/assets/images/dataset/210.png differ
diff --git a/react-ui/public/assets/images/dataset/211-hover.png b/react-ui/public/assets/images/dataset/211-hover.png
new file mode 100644
index 00000000..c46621ac
Binary files /dev/null and b/react-ui/public/assets/images/dataset/211-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/211.png b/react-ui/public/assets/images/dataset/211.png
new file mode 100644
index 00000000..f1b2860a
Binary files /dev/null and b/react-ui/public/assets/images/dataset/211.png differ
diff --git a/react-ui/public/assets/images/dataset/2115-hover.png b/react-ui/public/assets/images/dataset/2115-hover.png
new file mode 100644
index 00000000..b3bb5fa7
Binary files /dev/null and b/react-ui/public/assets/images/dataset/2115-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/212-hover.png b/react-ui/public/assets/images/dataset/212-hover.png
new file mode 100644
index 00000000..3634e695
Binary files /dev/null and b/react-ui/public/assets/images/dataset/212-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/212.png b/react-ui/public/assets/images/dataset/212.png
new file mode 100644
index 00000000..358d1402
Binary files /dev/null and b/react-ui/public/assets/images/dataset/212.png differ
diff --git a/react-ui/public/assets/images/dataset/213-hover.png b/react-ui/public/assets/images/dataset/213-hover.png
new file mode 100644
index 00000000..267126e2
Binary files /dev/null and b/react-ui/public/assets/images/dataset/213-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/213.png b/react-ui/public/assets/images/dataset/213.png
new file mode 100644
index 00000000..b08dddf3
Binary files /dev/null and b/react-ui/public/assets/images/dataset/213.png differ
diff --git a/react-ui/public/assets/images/dataset/214-hover.png b/react-ui/public/assets/images/dataset/214-hover.png
new file mode 100644
index 00000000..77451aba
Binary files /dev/null and b/react-ui/public/assets/images/dataset/214-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/214.png b/react-ui/public/assets/images/dataset/214.png
new file mode 100644
index 00000000..62107d2a
Binary files /dev/null and b/react-ui/public/assets/images/dataset/214.png differ
diff --git a/react-ui/public/assets/images/dataset/215-hover.png b/react-ui/public/assets/images/dataset/215-hover.png
new file mode 100644
index 00000000..b3bb5fa7
Binary files /dev/null and b/react-ui/public/assets/images/dataset/215-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/215.png b/react-ui/public/assets/images/dataset/215.png
new file mode 100644
index 00000000..7c38ceca
Binary files /dev/null and b/react-ui/public/assets/images/dataset/215.png differ
diff --git a/react-ui/public/assets/images/dataset/216-hover.png b/react-ui/public/assets/images/dataset/216-hover.png
new file mode 100644
index 00000000..1b6c5bd1
Binary files /dev/null and b/react-ui/public/assets/images/dataset/216-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/216.png b/react-ui/public/assets/images/dataset/216.png
new file mode 100644
index 00000000..0a64c541
Binary files /dev/null and b/react-ui/public/assets/images/dataset/216.png differ
diff --git a/react-ui/public/assets/images/dataset/217-hover.png b/react-ui/public/assets/images/dataset/217-hover.png
new file mode 100644
index 00000000..25da4dac
Binary files /dev/null and b/react-ui/public/assets/images/dataset/217-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/217.png b/react-ui/public/assets/images/dataset/217.png
new file mode 100644
index 00000000..13e827b8
Binary files /dev/null and b/react-ui/public/assets/images/dataset/217.png differ
diff --git a/react-ui/public/assets/images/dataset/218-hover.png b/react-ui/public/assets/images/dataset/218-hover.png
new file mode 100644
index 00000000..1ed77e55
Binary files /dev/null and b/react-ui/public/assets/images/dataset/218-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/218.png b/react-ui/public/assets/images/dataset/218.png
new file mode 100644
index 00000000..1dc451c5
Binary files /dev/null and b/react-ui/public/assets/images/dataset/218.png differ
diff --git a/react-ui/public/assets/images/dataset/219-hover.png b/react-ui/public/assets/images/dataset/219-hover.png
new file mode 100644
index 00000000..5f241bed
Binary files /dev/null and b/react-ui/public/assets/images/dataset/219-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/219.png b/react-ui/public/assets/images/dataset/219.png
new file mode 100644
index 00000000..ee13574d
Binary files /dev/null and b/react-ui/public/assets/images/dataset/219.png differ
diff --git a/react-ui/public/assets/images/dataset/220-hover.png b/react-ui/public/assets/images/dataset/220-hover.png
new file mode 100644
index 00000000..510a48aa
Binary files /dev/null and b/react-ui/public/assets/images/dataset/220-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/220.png b/react-ui/public/assets/images/dataset/220.png
new file mode 100644
index 00000000..fd967601
Binary files /dev/null and b/react-ui/public/assets/images/dataset/220.png differ
diff --git a/react-ui/public/assets/images/dataset/221-hover.png b/react-ui/public/assets/images/dataset/221-hover.png
new file mode 100644
index 00000000..5d63f41c
Binary files /dev/null and b/react-ui/public/assets/images/dataset/221-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/221.png b/react-ui/public/assets/images/dataset/221.png
new file mode 100644
index 00000000..4a17dfc0
Binary files /dev/null and b/react-ui/public/assets/images/dataset/221.png differ
diff --git a/react-ui/public/assets/images/dataset/222-hover.png b/react-ui/public/assets/images/dataset/222-hover.png
new file mode 100644
index 00000000..e9a3f6b9
Binary files /dev/null and b/react-ui/public/assets/images/dataset/222-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/222.png b/react-ui/public/assets/images/dataset/222.png
new file mode 100644
index 00000000..dd6fbfbe
Binary files /dev/null and b/react-ui/public/assets/images/dataset/222.png differ
diff --git a/react-ui/public/assets/images/dataset/223-hover.png b/react-ui/public/assets/images/dataset/223-hover.png
new file mode 100644
index 00000000..dff4b183
Binary files /dev/null and b/react-ui/public/assets/images/dataset/223-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/223.png b/react-ui/public/assets/images/dataset/223.png
new file mode 100644
index 00000000..8a83957e
Binary files /dev/null and b/react-ui/public/assets/images/dataset/223.png differ
diff --git a/react-ui/public/assets/images/dataset/224-hover.png b/react-ui/public/assets/images/dataset/224-hover.png
new file mode 100644
index 00000000..18641ec3
Binary files /dev/null and b/react-ui/public/assets/images/dataset/224-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/224.png b/react-ui/public/assets/images/dataset/224.png
new file mode 100644
index 00000000..6adb7430
Binary files /dev/null and b/react-ui/public/assets/images/dataset/224.png differ
diff --git a/react-ui/public/assets/images/dataset/225-hover.png b/react-ui/public/assets/images/dataset/225-hover.png
new file mode 100644
index 00000000..13f0ff47
Binary files /dev/null and b/react-ui/public/assets/images/dataset/225-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/225.png b/react-ui/public/assets/images/dataset/225.png
new file mode 100644
index 00000000..a16ca3e9
Binary files /dev/null and b/react-ui/public/assets/images/dataset/225.png differ
diff --git a/react-ui/public/assets/images/dataset/226-hover.png b/react-ui/public/assets/images/dataset/226-hover.png
new file mode 100644
index 00000000..f1189c3a
Binary files /dev/null and b/react-ui/public/assets/images/dataset/226-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/226.png b/react-ui/public/assets/images/dataset/226.png
new file mode 100644
index 00000000..0c26129c
Binary files /dev/null and b/react-ui/public/assets/images/dataset/226.png differ
diff --git a/react-ui/public/assets/images/dataset/227-hover.png b/react-ui/public/assets/images/dataset/227-hover.png
new file mode 100644
index 00000000..c7dfb095
Binary files /dev/null and b/react-ui/public/assets/images/dataset/227-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/227.png b/react-ui/public/assets/images/dataset/227.png
new file mode 100644
index 00000000..fcfb2b32
Binary files /dev/null and b/react-ui/public/assets/images/dataset/227.png differ
diff --git a/react-ui/public/assets/images/dataset/228-hover.png b/react-ui/public/assets/images/dataset/228-hover.png
new file mode 100644
index 00000000..ad4dcfea
Binary files /dev/null and b/react-ui/public/assets/images/dataset/228-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/228.png b/react-ui/public/assets/images/dataset/228.png
new file mode 100644
index 00000000..ff0dd839
Binary files /dev/null and b/react-ui/public/assets/images/dataset/228.png differ
diff --git a/react-ui/public/assets/images/dataset/229-hover.png b/react-ui/public/assets/images/dataset/229-hover.png
new file mode 100644
index 00000000..da3eb819
Binary files /dev/null and b/react-ui/public/assets/images/dataset/229-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/229.png b/react-ui/public/assets/images/dataset/229.png
new file mode 100644
index 00000000..a9944b63
Binary files /dev/null and b/react-ui/public/assets/images/dataset/229.png differ
diff --git a/react-ui/public/assets/images/dataset/230-hover.png b/react-ui/public/assets/images/dataset/230-hover.png
new file mode 100644
index 00000000..b5ee43a2
Binary files /dev/null and b/react-ui/public/assets/images/dataset/230-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/230.png b/react-ui/public/assets/images/dataset/230.png
new file mode 100644
index 00000000..19615631
Binary files /dev/null and b/react-ui/public/assets/images/dataset/230.png differ
diff --git a/react-ui/public/assets/images/dataset/231-hover.png b/react-ui/public/assets/images/dataset/231-hover.png
new file mode 100644
index 00000000..21b5be81
Binary files /dev/null and b/react-ui/public/assets/images/dataset/231-hover.png differ
diff --git a/react-ui/public/assets/images/dataset/231.png b/react-ui/public/assets/images/dataset/231.png
new file mode 100644
index 00000000..f338c66d
Binary files /dev/null and b/react-ui/public/assets/images/dataset/231.png differ
diff --git a/react-ui/public/assets/images/model/301-hover.png b/react-ui/public/assets/images/model/301-hover.png
new file mode 100644
index 00000000..7e5ec51c
Binary files /dev/null and b/react-ui/public/assets/images/model/301-hover.png differ
diff --git a/react-ui/public/assets/images/model/301.png b/react-ui/public/assets/images/model/301.png
new file mode 100644
index 00000000..25657ea3
Binary files /dev/null and b/react-ui/public/assets/images/model/301.png differ
diff --git a/react-ui/public/assets/images/model/302-hover.png b/react-ui/public/assets/images/model/302-hover.png
new file mode 100644
index 00000000..ba5204b2
Binary files /dev/null and b/react-ui/public/assets/images/model/302-hover.png differ
diff --git a/react-ui/public/assets/images/model/302.png b/react-ui/public/assets/images/model/302.png
new file mode 100644
index 00000000..dbc659df
Binary files /dev/null and b/react-ui/public/assets/images/model/302.png differ
diff --git a/react-ui/public/assets/images/model/303-hover.png b/react-ui/public/assets/images/model/303-hover.png
new file mode 100644
index 00000000..e8397758
Binary files /dev/null and b/react-ui/public/assets/images/model/303-hover.png differ
diff --git a/react-ui/public/assets/images/model/303.png b/react-ui/public/assets/images/model/303.png
new file mode 100644
index 00000000..a5cef19a
Binary files /dev/null and b/react-ui/public/assets/images/model/303.png differ
diff --git a/react-ui/public/assets/images/model/304-hover.png b/react-ui/public/assets/images/model/304-hover.png
new file mode 100644
index 00000000..a33f5bbe
Binary files /dev/null and b/react-ui/public/assets/images/model/304-hover.png differ
diff --git a/react-ui/public/assets/images/model/304.png b/react-ui/public/assets/images/model/304.png
new file mode 100644
index 00000000..ac04f077
Binary files /dev/null and b/react-ui/public/assets/images/model/304.png differ
diff --git a/react-ui/public/assets/images/model/305-hover.png b/react-ui/public/assets/images/model/305-hover.png
new file mode 100644
index 00000000..a2b6d11c
Binary files /dev/null and b/react-ui/public/assets/images/model/305-hover.png differ
diff --git a/react-ui/public/assets/images/model/305.png b/react-ui/public/assets/images/model/305.png
new file mode 100644
index 00000000..d325e9b5
Binary files /dev/null and b/react-ui/public/assets/images/model/305.png differ
diff --git a/react-ui/public/assets/images/model/306-hover.png b/react-ui/public/assets/images/model/306-hover.png
new file mode 100644
index 00000000..40bdb681
Binary files /dev/null and b/react-ui/public/assets/images/model/306-hover.png differ
diff --git a/react-ui/public/assets/images/model/306.png b/react-ui/public/assets/images/model/306.png
new file mode 100644
index 00000000..93294f06
Binary files /dev/null and b/react-ui/public/assets/images/model/306.png differ
diff --git a/react-ui/public/assets/images/model/307-hover.png b/react-ui/public/assets/images/model/307-hover.png
new file mode 100644
index 00000000..fd2cfb13
Binary files /dev/null and b/react-ui/public/assets/images/model/307-hover.png differ
diff --git a/react-ui/public/assets/images/model/307.png b/react-ui/public/assets/images/model/307.png
new file mode 100644
index 00000000..51ebc12a
Binary files /dev/null and b/react-ui/public/assets/images/model/307.png differ
diff --git a/react-ui/public/assets/images/model/401-hover.png b/react-ui/public/assets/images/model/401-hover.png
new file mode 100644
index 00000000..5ba8329e
Binary files /dev/null and b/react-ui/public/assets/images/model/401-hover.png differ
diff --git a/react-ui/public/assets/images/model/401.png b/react-ui/public/assets/images/model/401.png
new file mode 100644
index 00000000..b956b157
Binary files /dev/null and b/react-ui/public/assets/images/model/401.png differ
diff --git a/react-ui/public/assets/images/model/402-hover.png b/react-ui/public/assets/images/model/402-hover.png
new file mode 100644
index 00000000..7c7a1556
Binary files /dev/null and b/react-ui/public/assets/images/model/402-hover.png differ
diff --git a/react-ui/public/assets/images/model/402.png b/react-ui/public/assets/images/model/402.png
new file mode 100644
index 00000000..324e16fc
Binary files /dev/null and b/react-ui/public/assets/images/model/402.png differ
diff --git a/react-ui/public/assets/images/model/403-hover.png b/react-ui/public/assets/images/model/403-hover.png
new file mode 100644
index 00000000..525751e0
Binary files /dev/null and b/react-ui/public/assets/images/model/403-hover.png differ
diff --git a/react-ui/public/assets/images/model/403.png b/react-ui/public/assets/images/model/403.png
new file mode 100644
index 00000000..915a6b7f
Binary files /dev/null and b/react-ui/public/assets/images/model/403.png differ
diff --git a/react-ui/public/assets/images/model/404-hover.png b/react-ui/public/assets/images/model/404-hover.png
new file mode 100644
index 00000000..f953e03a
Binary files /dev/null and b/react-ui/public/assets/images/model/404-hover.png differ
diff --git a/react-ui/public/assets/images/model/404.png b/react-ui/public/assets/images/model/404.png
new file mode 100644
index 00000000..52769661
Binary files /dev/null and b/react-ui/public/assets/images/model/404.png differ
diff --git a/react-ui/public/assets/images/model/405-hover.png b/react-ui/public/assets/images/model/405-hover.png
new file mode 100644
index 00000000..473fa1ee
Binary files /dev/null and b/react-ui/public/assets/images/model/405-hover.png differ
diff --git a/react-ui/public/assets/images/model/405.png b/react-ui/public/assets/images/model/405.png
new file mode 100644
index 00000000..10bb9a70
Binary files /dev/null and b/react-ui/public/assets/images/model/405.png differ
diff --git a/react-ui/public/assets/images/model/406-hover.png b/react-ui/public/assets/images/model/406-hover.png
new file mode 100644
index 00000000..e9948f2b
Binary files /dev/null and b/react-ui/public/assets/images/model/406-hover.png differ
diff --git a/react-ui/public/assets/images/model/406.png b/react-ui/public/assets/images/model/406.png
new file mode 100644
index 00000000..80769f13
Binary files /dev/null and b/react-ui/public/assets/images/model/406.png differ
diff --git a/react-ui/public/assets/images/model/407-hover.png b/react-ui/public/assets/images/model/407-hover.png
new file mode 100644
index 00000000..0193f68a
Binary files /dev/null and b/react-ui/public/assets/images/model/407-hover.png differ
diff --git a/react-ui/public/assets/images/model/407.png b/react-ui/public/assets/images/model/407.png
new file mode 100644
index 00000000..9bd4651d
Binary files /dev/null and b/react-ui/public/assets/images/model/407.png differ
diff --git a/react-ui/public/assets/images/model/408-hover.png b/react-ui/public/assets/images/model/408-hover.png
new file mode 100644
index 00000000..a42c9e59
Binary files /dev/null and b/react-ui/public/assets/images/model/408-hover.png differ
diff --git a/react-ui/public/assets/images/model/408.png b/react-ui/public/assets/images/model/408.png
new file mode 100644
index 00000000..17d23dc6
Binary files /dev/null and b/react-ui/public/assets/images/model/408.png differ
diff --git a/react-ui/public/assets/images/model/409-hover.png b/react-ui/public/assets/images/model/409-hover.png
new file mode 100644
index 00000000..0cb3ff30
Binary files /dev/null and b/react-ui/public/assets/images/model/409-hover.png differ
diff --git a/react-ui/public/assets/images/model/409.png b/react-ui/public/assets/images/model/409.png
new file mode 100644
index 00000000..5f0c3014
Binary files /dev/null and b/react-ui/public/assets/images/model/409.png differ
diff --git a/react-ui/public/assets/images/model/410-hover.png b/react-ui/public/assets/images/model/410-hover.png
new file mode 100644
index 00000000..84da02c1
Binary files /dev/null and b/react-ui/public/assets/images/model/410-hover.png differ
diff --git a/react-ui/public/assets/images/model/410.png b/react-ui/public/assets/images/model/410.png
new file mode 100644
index 00000000..50175005
Binary files /dev/null and b/react-ui/public/assets/images/model/410.png differ
diff --git a/react-ui/public/assets/images/model/411-hover.png b/react-ui/public/assets/images/model/411-hover.png
new file mode 100644
index 00000000..1ed50a25
Binary files /dev/null and b/react-ui/public/assets/images/model/411-hover.png differ
diff --git a/react-ui/public/assets/images/model/411.png b/react-ui/public/assets/images/model/411.png
new file mode 100644
index 00000000..75e1f70c
Binary files /dev/null and b/react-ui/public/assets/images/model/411.png differ
diff --git a/react-ui/public/assets/images/model/412-hover.png b/react-ui/public/assets/images/model/412-hover.png
new file mode 100644
index 00000000..c2811d1a
Binary files /dev/null and b/react-ui/public/assets/images/model/412-hover.png differ
diff --git a/react-ui/public/assets/images/model/412.png b/react-ui/public/assets/images/model/412.png
new file mode 100644
index 00000000..9c393719
Binary files /dev/null and b/react-ui/public/assets/images/model/412.png differ
diff --git a/react-ui/public/assets/images/model/413-hover.png b/react-ui/public/assets/images/model/413-hover.png
new file mode 100644
index 00000000..781784ed
Binary files /dev/null and b/react-ui/public/assets/images/model/413-hover.png differ
diff --git a/react-ui/public/assets/images/model/413.png b/react-ui/public/assets/images/model/413.png
new file mode 100644
index 00000000..1a97d2cb
Binary files /dev/null and b/react-ui/public/assets/images/model/413.png differ
diff --git a/react-ui/public/assets/images/model/414-hover.png b/react-ui/public/assets/images/model/414-hover.png
new file mode 100644
index 00000000..359db025
Binary files /dev/null and b/react-ui/public/assets/images/model/414-hover.png differ
diff --git a/react-ui/public/assets/images/model/414.png b/react-ui/public/assets/images/model/414.png
new file mode 100644
index 00000000..c154cb8f
Binary files /dev/null and b/react-ui/public/assets/images/model/414.png differ
diff --git a/react-ui/public/assets/images/model/415-hover.png b/react-ui/public/assets/images/model/415-hover.png
new file mode 100644
index 00000000..47a5feb2
Binary files /dev/null and b/react-ui/public/assets/images/model/415-hover.png differ
diff --git a/react-ui/public/assets/images/model/415.png b/react-ui/public/assets/images/model/415.png
new file mode 100644
index 00000000..0155b437
Binary files /dev/null and b/react-ui/public/assets/images/model/415.png differ
diff --git a/react-ui/public/assets/images/model/416-hover.png b/react-ui/public/assets/images/model/416-hover.png
new file mode 100644
index 00000000..223f57fd
Binary files /dev/null and b/react-ui/public/assets/images/model/416-hover.png differ
diff --git a/react-ui/public/assets/images/model/416.png b/react-ui/public/assets/images/model/416.png
new file mode 100644
index 00000000..654e3f00
Binary files /dev/null and b/react-ui/public/assets/images/model/416.png differ
diff --git a/react-ui/public/assets/images/model/417-hover.png b/react-ui/public/assets/images/model/417-hover.png
new file mode 100644
index 00000000..bd84640b
Binary files /dev/null and b/react-ui/public/assets/images/model/417-hover.png differ
diff --git a/react-ui/public/assets/images/model/417.png b/react-ui/public/assets/images/model/417.png
new file mode 100644
index 00000000..c4cd1a1e
Binary files /dev/null and b/react-ui/public/assets/images/model/417.png differ
diff --git a/react-ui/public/assets/images/model/418-hover.png b/react-ui/public/assets/images/model/418-hover.png
new file mode 100644
index 00000000..6e731363
Binary files /dev/null and b/react-ui/public/assets/images/model/418-hover.png differ
diff --git a/react-ui/public/assets/images/model/418.png b/react-ui/public/assets/images/model/418.png
new file mode 100644
index 00000000..f17f408e
Binary files /dev/null and b/react-ui/public/assets/images/model/418.png differ
diff --git a/react-ui/public/assets/images/model/419-hover.png b/react-ui/public/assets/images/model/419-hover.png
new file mode 100644
index 00000000..d8eb74ed
Binary files /dev/null and b/react-ui/public/assets/images/model/419-hover.png differ
diff --git a/react-ui/public/assets/images/model/419.png b/react-ui/public/assets/images/model/419.png
new file mode 100644
index 00000000..e63a5e13
Binary files /dev/null and b/react-ui/public/assets/images/model/419.png differ
diff --git a/react-ui/public/assets/images/model/420-hover.png b/react-ui/public/assets/images/model/420-hover.png
new file mode 100644
index 00000000..692e3731
Binary files /dev/null and b/react-ui/public/assets/images/model/420-hover.png differ
diff --git a/react-ui/public/assets/images/model/420.png b/react-ui/public/assets/images/model/420.png
new file mode 100644
index 00000000..e9747894
Binary files /dev/null and b/react-ui/public/assets/images/model/420.png differ
diff --git a/react-ui/public/assets/images/model/421-hover.png b/react-ui/public/assets/images/model/421-hover.png
new file mode 100644
index 00000000..88596858
Binary files /dev/null and b/react-ui/public/assets/images/model/421-hover.png differ
diff --git a/react-ui/public/assets/images/model/421.png b/react-ui/public/assets/images/model/421.png
new file mode 100644
index 00000000..ec5f9da8
Binary files /dev/null and b/react-ui/public/assets/images/model/421.png differ
diff --git a/react-ui/public/assets/images/model/422-hover.png b/react-ui/public/assets/images/model/422-hover.png
new file mode 100644
index 00000000..44f36292
Binary files /dev/null and b/react-ui/public/assets/images/model/422-hover.png differ
diff --git a/react-ui/public/assets/images/model/422.png b/react-ui/public/assets/images/model/422.png
new file mode 100644
index 00000000..5d60e0d1
Binary files /dev/null and b/react-ui/public/assets/images/model/422.png differ
diff --git a/react-ui/public/assets/images/model/423-hover.png b/react-ui/public/assets/images/model/423-hover.png
new file mode 100644
index 00000000..cb160d8d
Binary files /dev/null and b/react-ui/public/assets/images/model/423-hover.png differ
diff --git a/react-ui/public/assets/images/model/423.png b/react-ui/public/assets/images/model/423.png
new file mode 100644
index 00000000..52419ee3
Binary files /dev/null and b/react-ui/public/assets/images/model/423.png differ
diff --git a/react-ui/public/assets/images/sjj-icon-1.png b/react-ui/public/assets/images/sjj-icon-1.png
new file mode 100644
index 00000000..3f2e7d4f
Binary files /dev/null and b/react-ui/public/assets/images/sjj-icon-1.png differ
diff --git a/react-ui/public/assets/images/upload-icon.png b/react-ui/public/assets/images/upload-icon.png
new file mode 100644
index 00000000..74be5489
Binary files /dev/null and b/react-ui/public/assets/images/upload-icon.png differ
diff --git a/react-ui/src/app.tsx b/react-ui/src/app.tsx
index 45eafeeb..de4c7db2 100644
--- a/react-ui/src/app.tsx
+++ b/react-ui/src/app.tsx
@@ -12,7 +12,8 @@ import { getRemoteMenu, getRoutersInfo, getUserInfo, patchRouteWithRemoteMenus,
import { PageEnum } from './enums/pagesEnums';
import '../public/fonts/font.css'
import './global.less'
-
+import axios from 'axios'
+axios.defaults.baseUrl='http://172.20.32.150:8082'
const isDev = process.env.NODE_ENV === 'development';
diff --git a/react-ui/src/global.less b/react-ui/src/global.less
index 4e109ebf..c6d331ea 100644
--- a/react-ui/src/global.less
+++ b/react-ui/src/global.less
@@ -52,8 +52,9 @@ body {
border-radius:0px 20px 20px 0px;
}
.ant-pro-layout .ant-pro-layout-content{
- background-color: #fff;
+ background-color: transparent;
}
+
.ant-pro-global-header-logo img{
height: 21px;
}
@@ -63,6 +64,35 @@ border-radius:0px 20px 20px 0px;
.ant-pro-layout .ant-pro-layout-container{
height: 98vh;
}
+.ant-pagination .ant-pagination-item-active a{
+ background:#1664ff;
+ color: #fff;
+ border-color: #1664ff;
+}
+.ant-pagination .ant-pagination-item-active a:hover{
+ background:rgba(22, 100, 255, 0.8);
+ color: #fff;
+ border-color: rgba(22, 100, 255, 0.8);
+}
+// ::-webkit-scrollbar-button {
+// background: #97a1bd;
+// }
+::-webkit-scrollbar{
+ width:9px;
+ border-radius: 2px;
+}
+::-webkit-scrollbar-thumb{
+ // background-color: #9aa3bc!important;
+ width: 7px;
+ background:rgba(77, 87, 123,0.5)!important;
+
+}
+::-webkit-scrollbar-track{
+ // background-color: #eaf1ff!important;
+ width: 9px;
+ background:rgba(22, 100, 255,0.06)!important;
+
+}
ul,
ol {
list-style: none;
diff --git a/react-ui/src/pages/Dataset/datasetIntro.jsx b/react-ui/src/pages/Dataset/datasetIntro.jsx
new file mode 100644
index 00000000..05b01e31
--- /dev/null
+++ b/react-ui/src/pages/Dataset/datasetIntro.jsx
@@ -0,0 +1,298 @@
+
+import React ,{useEffect,useState,useRef}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,Select,Table,Upload} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, DeleteOutlined,UploadOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getDatasetList,getDatasetById,getDatasetVersionsById,getDatasetVersionIdList,deleteDatasetVersion,addDatasetVersionDetail,exportDataset} from '@/services/dataset/index.js'
+import { useParams } from 'react-router-dom'
+import {downLoadZip} from '@/utils/downloadfile'
+const { Search } = Input;
+import moment from 'moment';
+import { getAccessToken } from '@/access';
+const { TabPane } = Tabs;
+
+const Dataset= React.FC = () => {
+ const props = {
+ action: '/api/mmp/dataset/upload',
+ // headers: {
+ // 'X-Requested-With': null
+ // },
+ headers: {
+ Authorization:getAccessToken(),
+ 'X-Requested-With': null
+
+ },
+ onChange({ file, fileList }) {
+ if (file.status !== 'uploading') {
+ console.log(file, fileList);
+ setFormList(fileList.map(item=>{
+ return {
+ ...form.getFieldsValue(),
+ dataset_id:locationParams.id,
+ file_name:item.response.data[0].fileName,
+ file_size:item.response.data[0].fileSize,
+ url:item.response.data[0].url,
+ }
+ }))
+ }
+ },
+ defaultFileList: [
+ ],
+ };
+ const [form] = Form.useForm();
+ const [formList,setFormList]=useState([])
+ const [dialogTitle, setDialogTitle] = useState('新建版本');
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetDetailObj,setDatasetDetailObj]=useState({
+ });
+ const [version,setVersion]=useState('')
+ const [versionList, setVersionList] = useState([]);
+ const locationParams =useParams () //新版本获取路由参数接口
+ console.log(locationParams);
+ const [wordList, setWordList] = useState([]);
+ const getDatasetByDetail=()=>{
+ getDatasetById(locationParams.id).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetDetailObj(ret.data)
+ }
+ })
+ }
+ const getDatasetVersionList=()=>{
+ getDatasetVersionsById(locationParams.id).then(ret=>{
+ console.log(ret);
+ if(ret.code==200&&ret.data&&ret.data.length>0){
+ setVersionList(ret.data.map(item=>{
+ return {
+ 'label':item,
+ 'value':item
+ }
+ }))
+ }
+ })
+ }
+ useEffect(()=>{
+ getDatasetByDetail()
+ getDatasetVersionList()
+ return ()=>{
+
+ }
+ },[])
+ const showModal = () => {
+ form.resetFields()
+ form.setFieldsValue({name:datasetDetailObj.name})
+
+ setDialogTitle('创建新版本')
+ setIsModalOpen(true);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const handleExport = async () => {
+ const hide = message.loading('正在下载');
+ hide();
+ downLoadZip(`/api/mmp/dataset/downloadAllFiles`,{dataset_id:locationParams.id,version})
+ };
+ const deleteDataset=()=>{
+ Modal.confirm({
+ title: '删除',
+ content: '确定删除数据集版本?',
+ okText: '确认',
+ cancelText: '取消',
+
+ onOk: () => {
+ deleteDatasetVersion({dataset_id:locationParams.id,version}).then(ret=>{
+ if(ret.code==200){
+ message.success('删除成功')
+ getDatasetVersions({version,dataset_id:locationParams.id})
+ }
+ else{
+ message.error(ret.msg)
+ }
+ });
+ },
+ });
+ }
+ const onFinish = (values) => {
+ addDatasetVersionDetail(formList).then(ret=>{
+ console.log(ret);
+ getDatasetVersionList()
+ setIsModalOpen(false);
+ })
+ };
+ const getDatasetVersions=(params)=>{
+ getDatasetVersionIdList(params).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setWordList(ret.data)
+ }
+ })
+ }
+ const handleChange=(value)=>{
+ console.log(value);
+ if(value){
+ getDatasetVersions({version:value,dataset_id:locationParams.id})
+ setVersion(value)
+ }
+ else{
+ setVersion(null)
+ }
+ }
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ const downloadAlone=(e,record)=>{
+ console.log(record);
+ const hide = message.loading('正在下载');
+ hide();
+ downLoadZip(`/api/mmp//dataset/download/${record.id}`)
+ }
+ const columns = [
+ // {
+ // title: '序号',
+ // dataIndex: 'index',
+ // key: 'index',
+ // width: 80,
+ // render(text, record, index) {
+ // return (
+ // {(pageOption.current.page - 1) * 10 + index + 1}
+ // )
+ // }
+ // // render: (text, record, index) => `${((curPage-1)*10)+(index+1)}`,
+ // },
+ {
+ title: '文件名称',
+ dataIndex: 'file_name',
+ key: 'file_name',
+ render: (text,record) => downloadAlone(e,record)}>{text},
+ },
+ {
+ title: '版本号',
+ dataIndex: 'version',
+ key: 'version',
+ },
+ {
+ title: '文件大小',
+ dataIndex: 'file_size',
+ key: 'file_size',
+ },
+ {
+ title: '更新时间',
+ dataIndex: 'update_time',
+ key: 'update_time',
+ render: (text) => {moment(text).format('YYYY-MM-DD HH:mm:ss')},
+ },
+ ];
+ const pageOption = useRef({page: 1,size: 10})
+
+ // 当前页面切换
+ const paginationChange = async (current, size) => {
+ console.log('page', current, size)
+ pageOption.current={
+ page:current,
+ size:size
+ }
+ // getList()
+ }
+ return (
+
+
{datasetDetailObj.name}
+
+
{datasetDetailObj.data_tag||'...'}
+
{datasetDetailObj.data_type}
+ {/*
English
*/}
+
+
+
+
+
+ 简介
+ {datasetDetailObj.description}
+
+
+
+
数据集文件列表
+
+
+ 版本号:
+
+ }>
+ 创建新版本
+
+
+
+ }>
+ 删除
+
+ }>
+ 下载
+
+
+
+
+
+
+
+
+
+
+
{dialogTitle}
+ } open={isModalOpen} className={Styles.modal} okButtonProps={{
+ htmlType: 'submit',
+ form: 'form',
+ }} onCancel={handleCancel}>
+
+
+
+
+
+
+
+
+ }>上传文件
+
+
+
+
+
+ )
+};
+export default Dataset;
\ No newline at end of file
diff --git a/react-ui/src/pages/Dataset/index.jsx b/react-ui/src/pages/Dataset/index.jsx
new file mode 100644
index 00000000..7a8bf2eb
--- /dev/null
+++ b/react-ui/src/pages/Dataset/index.jsx
@@ -0,0 +1,84 @@
+
+import React ,{useEffect,useState}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getDatasetList} from '@/services/dataset/index.js'
+const { Search } = Input;
+import { useNavigate} from 'react-router-dom';
+import moment from 'moment';
+const { TabPane } = Tabs;
+import PublicData from './publicData';
+import PersonalData from './personalData'
+const leftdataList=[1,2,3]
+
+const Dataset= React.FC = () => {
+ const [queryFlow,setQueryFlow]=useState({
+ page:0,
+ size:10,
+ name:null
+ });
+ const navgite=useNavigate();
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetList,setDatasetList]=useState([]);
+ const [total,setTotal]=useState(0);
+ const [form] = Form.useForm();
+ const [dialogTitle, setDialogTitle] = useState('新建数据');
+ const getDatasetlist=()=>{
+ getDatasetList(queryFlow).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetList(ret.data.content)
+ setTotal(ret.data.totalElements)
+ }
+ })
+ }
+
+ const showModal = () => {
+ form.resetFields()
+ setDialogTitle('新建数据集')
+ setIsModalOpen(true);
+ };
+ const handleOk = () => {
+ console.log(1111);
+ setIsModalOpen(false);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const onFinish = (values) => {
+
+ };
+ const routeToIntro=(e,record)=>{
+ e.stopPropagation()
+ navgite({pathname:'/dataset/datasetIntro' });
+}
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ useEffect(()=>{
+
+ getDatasetlist()
+ return ()=>{
+
+ }
+ },[])
+ return ()
+};
+export default Dataset;
\ No newline at end of file
diff --git a/react-ui/src/pages/Dataset/index.less b/react-ui/src/pages/Dataset/index.less
new file mode 100644
index 00000000..a3994d1d
--- /dev/null
+++ b/react-ui/src/pages/Dataset/index.less
@@ -0,0 +1,303 @@
+.datasetTopBox{
+ display: flex;
+ align-items: center;
+ padding-right: 30px;
+ width: 100%;
+ height: 49px;
+ background-size: 100% 100%;
+ background-image: url(/assets/images/pipeline-back.png);
+ padding: 0 30px;
+}
+.datasetIntroTopBox{
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ width: 100%;
+ height: 110px;
+ background-size: 100% 100%;
+ background-image: url(/assets/images/dataset-back.png);
+ margin-bottom: 10px;
+ padding: 25px 30px;
+ .smallTagBox{
+ display: flex;
+ align-items: center;
+ color:#1664ff;
+ font-size:14px;
+ .tagItem{
+ padding: 4px 10px;
+ background: rgba(22, 100, 255, 0.1);
+ border-radius:4px;
+ margin-right: 20px;
+ }
+ }
+}
+.dataListBox{
+ padding: 20px 30px;
+ background:#ffffff;
+ border-radius:10px;
+ box-shadow:0px 2px 12px rgba(180, 182, 191, 0.09);
+ color:#1d1d20;
+ font-size:16px;
+ .dataButtonList{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 32px;
+ margin: 24px 0 30px 0;
+ color:#575757;
+ font-size:16px;
+ }
+}
+.datasetIntroCneterBox{
+ height: 77vh;
+ padding: 20px 30px;
+ background:#ffffff;
+ border-radius:10px;
+ box-shadow:0px 2px 12px rgba(180, 182, 191, 0.09);
+}
+.datasetIntroTitle{
+ color:#1d1d20;
+ font-size:15px;
+ margin: 37px 0 10px 0;
+}
+.datasetIntroText{
+ color:#575757;
+ font-size:14px;
+ margin-bottom: 30px;
+}
+.datasetBox{
+ background:#f9fafb;
+ font-family: 'Alibaba';
+ :global{
+ .ant-tabs-top >.ant-tabs-nav{
+ margin: 0;
+ }
+ .ant-pagination{
+ text-align: right;
+ }
+
+ }
+}
+.datasetAllBox{
+ :global{
+ .ant-tabs-nav .ant-tabs-nav-wrap{
+ margin: -48px 0 0 30px;
+ }
+
+ }
+}
+.plusButton{
+ margin: 0 18px 0 20px;
+ background:rgba(22, 100, 255, 0.06);
+ border:1px solid;
+ border-color:rgba(22, 100, 255, 0.11);
+ border-radius:4px;
+ color:#1d1d20;
+ font-size:14px;
+ font-family: 'Alibaba';
+}
+.plusButton:hover{
+ background:rgba(22, 100, 255, 0.06)!important;
+ border:1px solid!important;
+ border-color:rgba(22, 100, 255, 0.11)!important;
+ color:#1d1d20!important;
+}
+.datasetCneterBox{
+ display: flex;
+ justify-content: space-between;
+ height: 85vh;
+ width: 100%;
+ :global{
+ .ant-btn{
+ color:#1d1d20;
+ font-size:14px;
+ }
+ }
+ .datasetCneterLeftBox{
+ width:340px;
+ height:100%;
+ background:#ffffff;
+ box-shadow:0px 3px 6px rgba(146, 146, 146, 0.09);
+ margin-right: 10px;
+ padding-top: 15px;
+ .custTab{
+ display: flex;
+ border-bottom: 1px solid #e0eaff;
+ height: 32px;
+ .tabItem{
+ width: 52px;
+ height: 100%;
+ text-align: center;
+ color:#808080;
+ font-size:15px;
+ cursor: pointer;
+ }
+ }
+ .leftContentBox{
+ max-height: 80vh;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding: 15px 20px;
+ .itemTitle{
+ color:#1d1d20;
+ font-size:14px;
+ margin-bottom: 15px;
+ }
+ .itemBox{
+ width: 110%;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: start;
+ .messageBox{
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ cursor: pointer;
+ width:92px;
+ height:62px;
+ border:1px solid;
+ border-color:rgba(22, 100, 255, 0.05);
+ border-radius:4px;
+ margin: 0 12px 20px 0;
+ padding: 11px 0px 7px 0px;
+ color:#1d1d20;
+ font-size:12px;
+ .ptIcon{
+ display: block;
+ }
+ .hoverIcon{
+ display: none;
+ }
+ .messageText{
+ width: 65px;
+ text-align: center;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+ .messageBox:hover{
+ background:rgba(22, 100, 255, 0.03);
+ border:1px solid;
+ border-color:#1664ff;
+ .ptIcon{
+ display: none;
+ }
+ .hoverIcon{
+ display: block;
+ }
+ }
+ .active{
+ background:rgba(22, 100, 255, 0.03)!important;
+ border:1px solid!important;
+ border-color:#1664ff!important;
+ .ptIcon{
+ display: none!important;
+ }
+ .hoverIcon{
+ display: block!important;
+ }
+ }
+ }
+ }
+ }
+
+ .datasetCneterRightBox{
+ display: flex;
+ flex-direction: column;
+ padding: 22px 30px 26px 30px;
+ flex: 1;
+ height:100%;
+ background:#ffffff;
+ box-shadow:0px 3px 6px rgba(146, 146, 146, 0.09);
+ .dataSource{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 32px;
+ margin-bottom: 30px;
+ color:rgba(29, 29, 32, 0.8);
+ font-size:15px;
+ }
+ .dataContent{
+ width: 100%;
+ flex: 1;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: flex-start;
+ .dataItem{
+ width: 32%;
+ margin: 0 15px 18px 0;
+ height:66px;
+ position: relative;
+ background:rgba(128, 128, 128, 0.05);
+ border-radius:8px;
+ box-shadow:0px 0px 12px rgba(75, 84, 137, 0.05);
+ cursor: pointer;
+ .itemText{
+ position: absolute;
+ left: 20px;
+ top: 10px;
+ color:#1d1d20;
+ font-size:15px;
+
+ }
+ .itemTime{
+ position: absolute;
+ left: 20px;
+ bottom: 10px;
+ color:#808080;
+ font-size:14px;
+ }
+ .itemIcon{
+ position: absolute;
+ right: 20px;
+ bottom: 10px;
+ color:#808080;
+ font-size:14px;
+ }
+ }
+ }
+ }
+}
+.modal {
+ :global {
+ .ant-modal-content {
+ background:linear-gradient(180deg,#cfdfff 0%,#d4e2ff 9.77%,#ffffff 40%,#ffffff 100%);
+ border-radius:21px;
+ padding: 20px 67px;
+ width: 825px;
+
+ }
+ .ant-modal-header{
+ background-color: transparent;
+ margin: 20px 0;
+ }
+ .ant-input{
+ border-color:#e6e6e6;
+ height: 40px;
+
+ }
+ .ant-form-item .ant-form-item-label >label{
+ color:rgba(29, 29, 32, 0.8);
+ }
+ .ant-modal-footer{
+ margin: 40px 0 30px 0;
+ display: flex;
+ justify-content: center;
+ }
+ .ant-btn{
+ width:110px;
+ height:40px;
+ font-size:18px;
+ background:rgba(22, 100, 255, 0.06);
+ border-radius:10px;
+ border-color: transparent;
+
+ }
+ .ant-btn-primary{
+ background:#1664ff;
+ }
+ }
+}
\ No newline at end of file
diff --git a/react-ui/src/pages/Dataset/personalData.jsx b/react-ui/src/pages/Dataset/personalData.jsx
new file mode 100644
index 00000000..5ee5d3c6
--- /dev/null
+++ b/react-ui/src/pages/Dataset/personalData.jsx
@@ -0,0 +1,342 @@
+
+import React ,{useEffect,useState}from 'react';
+import Styles from './index.less'
+import './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,Select,Upload } from 'antd';
+import { PlusOutlined,PlusCircleOutlined,UploadOutlined , DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getDatasetList,addDatesetAndVesion,getAssetIcon} from '@/services/dataset/index.js'
+import { getDictSelectOption } from "@/services/system/dict";
+const { Search } = Input;
+import { useNavigate} from 'react-router-dom';
+import moment from 'moment';
+import axios from 'axios'
+import { getAccessToken } from '@/access';
+const leftdataList=[1,2,3]
+
+const PublicData= React.FC = () => {
+
+ const props = {
+ action: '/api/mmp/dataset/upload',
+ // headers: {
+ // 'X-Requested-With': null
+ // },
+ headers: {
+ Authorization:getAccessToken(),
+ 'X-Requested-With': null
+
+ },
+ onChange({ file, fileList }) {
+ if (file.status !== 'uploading') {
+ console.log(file, fileList);
+ form.setFieldsValue({dataset_version_vos:fileList.map(item=>item.response.data[0])})
+ }
+ },
+ defaultFileList: [
+ ],
+ };
+ const [queryFlow,setQueryFlow]=useState({
+ page:0,
+ size:10,
+ name:null,
+ available_range:0,
+ });
+ const [iconParams,setIconParams]=useState({
+ name:null,
+ page:0,
+ size:10000
+ })
+ const [activeType,setActiveType]=useState(null)
+ const [activeTag,setActiveTag]=useState(null)
+ const [datasetTypeList,setDatasetTypeList]=useState([])
+ const [datasetDirectionList,setDatasetDirectionList]=useState([])
+ const navgite=useNavigate();
+ const [clusterOptions,setClusterOptions]=useState([])
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetList,setDatasetList]=useState([]);
+ const [total,setTotal]=useState(0);
+ const [form] = Form.useForm();
+ const [dialogTitle, setDialogTitle] = useState('新建数据');
+ const getDatasetlist=(queryFlow)=>{
+ getDatasetList(queryFlow).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetList(ret.data.content)
+ setTotal(ret.data.totalElements)
+ }
+ })
+ }
+
+ const showModal = () => {
+ form.resetFields()
+ setDialogTitle('新建数据集')
+ setIsModalOpen(true);
+ };
+ const getAssetIconList=(params)=>{
+ getAssetIcon(params).then(ret=>{
+ console.log(ret);
+ if(ret.code==200&&ret.data.content&&ret.data.content.length>0){
+ setDatasetTypeList(ret.data.content.filter(item=>item.category_id==1))
+ setDatasetDirectionList(ret.data.content.filter(item=>item.category_id==2))
+ }
+ else{
+ setDatasetTypeList([])
+ setDatasetDirectionList([])
+ }
+ })
+ }
+ const onSearch=(values)=>{
+ console.log(values);
+ getAssetIconList({...iconParams,name:values})
+ }
+ const nameSearch=(values)=>{
+ console.log(values);
+ getDatasetlist({...queryFlow,name:values})
+ }
+ const handleOk = () => {
+ console.log(1111);
+ setIsModalOpen(false);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const chooseDatasetType=(val,item)=>{
+ console.log(val,item);
+ if(item.path==queryFlow.data_type){
+ setActiveType('')
+ setQueryFlow({...queryFlow,data_type:null})
+ getDatasetlist({...queryFlow,data_type:null})
+ }
+ else{
+ setActiveType(item.path)
+ setQueryFlow({...queryFlow,data_type:item.path})
+ getDatasetlist({...queryFlow,data_type:item.path})
+ }
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const chooseDatasetTag=(val,item)=>{
+ console.log(val,item);
+ if(item.path==queryFlow.data_tag){
+ setActiveTag('')
+ setQueryFlow({...queryFlow,data_tag:null})
+ getDatasetlist({...queryFlow,data_tag:null})
+ }
+ else{
+ setActiveTag(item.path)
+ setQueryFlow({...queryFlow,data_tag:item.path})
+ getDatasetlist({...queryFlow,data_tag:item.path})
+ }
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const onFinish = (values) => {
+ addDatesetAndVesion(values).then(ret=>{
+ console.log(ret);
+ setIsModalOpen(false);
+ getDatasetlist(queryFlow)
+ })
+ };
+ const routeToIntro=(e,record)=>{
+ e.stopPropagation()
+ console.log(record);
+ navgite({pathname:`/dataset/datasetIntro/${record.id}` });
+}
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ useEffect(()=>{
+ getDictSelectOption('available_cluster').then((data) => {
+
+ setClusterOptions(data);
+ });
+ getAssetIconList(iconParams)
+ getDatasetlist(queryFlow)
+ return ()=>{
+
+ }
+ },[])
+ return (<>
+
+
+
+
+
+
分类
+
+
+ {datasetTypeList&&datasetTypeList.length>0?datasetTypeList.map(item=>{return
+
{chooseDatasetType(e, item)}} >
+

+

+
{item.name}
+
+
}):''}
+
+
研究方向/应用领域
+
+
+ {datasetDirectionList&&datasetDirectionList.length>0?datasetDirectionList.map(item=>{return
+
{chooseDatasetTag(e, item)}}>
+

+

+
{item.name}
+
+
}):''}
+
+
+
+
+
+
数据总数:{total}个
+
+
+ }>
+ 新建数据集
+
+
+
+
+ {datasetList&&datasetList.length>0?datasetList.map(item=>{return
routeToIntro(e,item)}>
+
{item.name}
+
最近更新: {moment(item.update_time).format('YYYY-MM-DD')}
+
1582
+
}):''}
+ {/*
Demo */}
+
+
+
+
+
+
{dialogTitle}
+ } open={isModalOpen} className={Styles.modal} okButtonProps={{
+ htmlType: 'submit',
+ form: 'form',
+ }} onCancel={handleCancel}>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 仅自己可见
+ 工作空间可见
+
+
+
+
+ }>上传文件
+
+
+
+
+ >)
+};
+export default PublicData;
\ No newline at end of file
diff --git a/react-ui/src/pages/Dataset/publicData.jsx b/react-ui/src/pages/Dataset/publicData.jsx
new file mode 100644
index 00000000..ea783ff9
--- /dev/null
+++ b/react-ui/src/pages/Dataset/publicData.jsx
@@ -0,0 +1,195 @@
+
+import React ,{useEffect,useState}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getDatasetList,getAssetIcon} from '@/services/dataset/index.js'
+const { Search } = Input;
+import { useNavigate} from 'react-router-dom';
+import moment from 'moment';
+const leftdataList=[1,2,3]
+
+const PublicData= React.FC = () => {
+ const [queryFlow,setQueryFlow]=useState({
+ page:0,
+ size:10,
+ name:null,
+ available_range:1
+ });
+ const [iconParams,setIconParams]=useState({
+ name:null,
+ page:0,
+ size:10000
+ })
+ const navgite=useNavigate();
+ const [datasetTypeList,setDatasetTypeList]=useState([])
+ const [datasetDirectionList,setDatasetDirectionList]=useState([])
+ const [activeType,setActiveType]=useState(null)
+ const [activeTag,setActiveTag]=useState(null)
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetList,setDatasetList]=useState([]);
+ const [total,setTotal]=useState(0);
+ const [form] = Form.useForm();
+ const [dialogTitle, setDialogTitle] = useState('新建数据');
+ const getDatasetlist=(queryFlow)=>{
+ getDatasetList(queryFlow).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetList(ret.data.content)
+ setTotal(ret.data.totalElements)
+ }
+ })
+ }
+ const onSearch=(values)=>{
+ console.log(values);
+ getAssetIconList({...iconParams,name:values})
+ }
+ const getAssetIconList=(params)=>{
+ getAssetIcon(params).then(ret=>{
+ console.log(ret);
+ if(ret.code==200&&ret.data.content&&ret.data.content.length>0){
+ setDatasetTypeList(ret.data.content.filter(item=>item.category_id==1))
+ setDatasetDirectionList(ret.data.content.filter(item=>item.category_id==2))
+ }
+ else{
+ setDatasetTypeList([])
+ setDatasetDirectionList([])
+ }
+ })
+ }
+ const nameSearch=(values)=>{
+ console.log(values);
+ getDatasetlist({...queryFlow,name:values})
+ }
+ const showModal = () => {
+ form.resetFields()
+ setDialogTitle('新建数据集')
+ setIsModalOpen(true);
+ };
+ const handleOk = () => {
+ console.log(1111);
+ setIsModalOpen(false);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const chooseDatasetType=(val,item)=>{
+ console.log(val,item);
+ if(item.path==queryFlow.data_type){
+ setActiveType('')
+ setQueryFlow({...queryFlow,data_type:null})
+ getDatasetlist({...queryFlow,data_type:null})
+ }
+ else{
+ setActiveType(item.path)
+ setQueryFlow({...queryFlow,data_type:item.path})
+ getDatasetlist({...queryFlow,data_type:item.path})
+ }
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const chooseDatasetTag=(val,item)=>{
+ console.log(val,item);
+ if(item.path==queryFlow.data_tag){
+ setActiveTag('')
+ setQueryFlow({...queryFlow,data_tag:null})
+ getDatasetlist({...queryFlow,data_tag:null})
+ }
+ else{
+ setActiveTag(item.path)
+ setQueryFlow({...queryFlow,data_tag:item.path})
+ getDatasetlist({...queryFlow,data_tag:item.path})
+ }
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+
+ const routeToIntro=(e,record)=>{
+ e.stopPropagation()
+ console.log(record);
+ navgite({pathname:`/dataset/datasetIntro/${record.id}` });
+ }
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ useEffect(()=>{
+ getAssetIconList(iconParams)
+ getDatasetlist(queryFlow)
+ return ()=>{
+
+ }
+ },[])
+ return (<>
+
+
+
+
+
+
分类
+
+
+ {datasetTypeList&&datasetTypeList.length>0?datasetTypeList.map(item=>{return
+
{chooseDatasetType(e, item)}}>
+

+

+
{item.name}
+
+
}):''}
+
+
研究方向/应用领域
+
+
+ {datasetDirectionList&&datasetDirectionList.length>0?datasetDirectionList.map(item=>{return
+
{chooseDatasetTag(e, item)}}>
+

+

+
{item.name}
+
+
}):''}
+
+
+
+
+
+
+ {datasetList&&datasetList.length>0?datasetList.map(item=>{return
routeToIntro(e,item)}>
+
{item.name}
+
最近更新: {moment(item.update_time).format('YYYY-MM-DD')}
+
1582
+
}):''}
+ {/*
Demo */}
+
+
+
+
+ >)
+};
+export default PublicData;
\ No newline at end of file
diff --git a/react-ui/src/pages/Experiment/experimentText/editPipeline.less b/react-ui/src/pages/Experiment/experimentText/editPipeline.less
index 6838c151..684b377c 100644
--- a/react-ui/src/pages/Experiment/experimentText/editPipeline.less
+++ b/react-ui/src/pages/Experiment/experimentText/editPipeline.less
@@ -13,6 +13,7 @@
font-size:15px;
font-family: 'Alibaba';
padding: 0 20px;
+ margin-bottom: 10px;
}
.centerContainer{
flex: 1;
@@ -41,4 +42,20 @@ align-items: center;
color:rgba(29, 29, 32, 0.8);
font-size:15px;
margin-right: 30px;
+}
+.resultTop{
+ border-bottom: 1px solid #eee;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 10px 0;
+}
+.resultContent{
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+
+ align-items: center;
+ padding: 0 20px 0 0;
+ margin-bottom: 10px;
}
\ No newline at end of file
diff --git a/react-ui/src/pages/Experiment/experimentText/index.jsx b/react-ui/src/pages/Experiment/experimentText/index.jsx
index 354f349c..51b0f21f 100644
--- a/react-ui/src/pages/Experiment/experimentText/index.jsx
+++ b/react-ui/src/pages/Experiment/experimentText/index.jsx
@@ -238,7 +238,6 @@ const ExperimentText = React.FC = () => {
height: graphRef.current.clientHeight||760,
animate: false,
groupByTypes: false,
- fitView:true,
enabledStack: true,
modes: {
default: [
@@ -345,7 +344,7 @@ const ExperimentText = React.FC = () => {
},
},
// linkCenter: true,
- fitView: true,
+ fitView: false,
fitViewPadding: [60, 60, 60, 80],
});
graph.on('dblclick', handlerClick);
diff --git a/react-ui/src/pages/Experiment/experimentText/props.jsx b/react-ui/src/pages/Experiment/experimentText/props.jsx
index 2b2fec99..f322cba9 100644
--- a/react-ui/src/pages/Experiment/experimentText/props.jsx
+++ b/react-ui/src/pages/Experiment/experimentText/props.jsx
@@ -1,13 +1,15 @@
import React, { useState,useImperativeHandle ,forwardRef } from 'react';
-import { Button, Drawer,Form, Input ,Tabs } from 'antd';
+import { Button, Drawer,Form, Input ,Tabs,message } from 'antd';
import Styles from './editPipeline.less'
-import{getQueryByExperimentLog}from '@/services/experiment/index.js'
+import{getQueryByExperimentLog,getNodeResult}from '@/services/experiment/index.js'
import { ProfileOutlined, DatabaseOutlined} from '@ant-design/icons';
+import {downLoadZip} from '@/utils/downloadfile'
import momnet from 'moment'
const { TextArea } = Input;
const Props = forwardRef(({onParentChange}, ref) =>{
const [form] = Form.useForm();
const [stagingItem,setStagingItem]=useState({})
+ const [resultObj,setResultObj]=useState([])
const [messageItem,setMessageItem]=useState('')
const statusObj={
"Running":'运行中',
@@ -29,6 +31,12 @@ const Props = forwardRef(({onParentChange}, ref) =>{
"Skipped":'#8a8a8a',
"Omitted":'#8a8a8ae',
}
+ const exportResult=(e,val)=>{
+
+ const hide = message.loading('正在下载');
+ hide();
+ downLoadZip(`/api/mmp/minioStorage/download`,{path:val})
+ }
const timers=(time)=>{
let timer=new Date(time)
let hours = timer.getHours(); //转换成时
@@ -196,6 +204,38 @@ const Props = forwardRef(({onParentChange}, ref) =>{
):''}
,
},
+ {
+ key: '3',
+ label: '输出结果',
+ children:
+ {resultObj&&resultObj.length>0?resultObj.map(item=>
+
+
+ 文件名称
+ 文件大小
+
+ {item.value&&item.value.length>0?item.value.map(ele=>
+
+ {ele.name}
+ {ele.size}
+
):null}
+
):null}
+
+
,
+ icon:
+ },
];
const [open, setOpen] = useState(false);
const afterOpenChange=()=>{
@@ -249,6 +289,8 @@ const Props = forwardRef(({onParentChange}, ref) =>{
}
getQueryByExperimentLog(params).then(ret=>{
console.log(ret);
+ getNodeResult({id,node_id:e.item.getModel().id}).then(res=>{
+ setResultObj(res.data)
let msg=ret.msg.replace(/\n/g,"")
let newMsg=msg.replace(/\r/g,"")
setMessageItem(newMsg)
@@ -256,6 +298,8 @@ const Props = forwardRef(({onParentChange}, ref) =>{
form.setFieldsValue({...e.item.getModel(),in_parameters:JSON.parse(e.item.getModel().in_parameters),out_parameters:JSON.parse(e.item.getModel().out_parameters),control_strategy:JSON.parse(e.item.getModel().control_strategy)})
setStagingItem({...e.item.getModel(),in_parameters:JSON.parse(e.item.getModel().in_parameters),out_parameters:JSON.parse(e.item.getModel().out_parameters),control_strategy:JSON.parse(e.item.getModel().control_strategy)})
setOpen(true);
+ })
+
})
}
else{
diff --git a/react-ui/src/pages/Experiment/index.less b/react-ui/src/pages/Experiment/index.less
index f1fc5a1f..42a3d6da 100644
--- a/react-ui/src/pages/Experiment/index.less
+++ b/react-ui/src/pages/Experiment/index.less
@@ -45,6 +45,7 @@
padding: 0 65px 0 40px;
}
+
.statusBox{
display: flex;
align-items: center;
@@ -87,11 +88,12 @@
justify-content: center;
}
.ant-btn{
- width:123px;
+ width:110px;
height:40px;
font-size:18px;
background:rgba(22, 100, 255, 0.06);
border-radius:10px;
+ border-color: transparent;
}
.ant-btn-primary{
background:#1664ff;
diff --git a/react-ui/src/pages/Model/index.jsx b/react-ui/src/pages/Model/index.jsx
new file mode 100644
index 00000000..5b93bcec
--- /dev/null
+++ b/react-ui/src/pages/Model/index.jsx
@@ -0,0 +1,83 @@
+
+import React ,{useEffect,useState}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+// import {getModelList} from '@/services/dataset/index.js'
+const { Search } = Input;
+import { useNavigate} from 'react-router-dom';
+import moment from 'moment';
+const { TabPane } = Tabs;
+import PublicData from './publicData';
+import PersonalData from './personalData'
+const leftdataList=[1,2,3]
+
+const Dataset= React.FC = () => {
+ const [queryFlow,setQueryFlow]=useState({
+ page:0,
+ size:10,
+ name:null
+ });
+ const navgite=useNavigate();
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetList,setDatasetList]=useState([]);
+ const [total,setTotal]=useState(0);
+ const [form] = Form.useForm();
+ const [dialogTitle, setDialogTitle] = useState('新建数据');
+ // const getModelLists=()=>{
+ // getModelList(queryFlow).then(ret=>{
+ // console.log(ret);
+ // if(ret.code==200){
+ // setDatasetList(ret.data.content)
+ // setTotal(ret.data.totalElements)
+ // }
+ // })
+ // }
+
+ const showModal = () => {
+ form.resetFields()
+ setDialogTitle('新建数据集')
+ setIsModalOpen(true);
+ };
+ const handleOk = () => {
+ console.log(1111);
+ setIsModalOpen(false);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const onFinish = (values) => {
+
+ };
+ const routeToIntro=(e,record)=>{
+ e.stopPropagation()
+ navgite({pathname:'/dataset/datasetIntro' });
+}
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ useEffect(()=>{
+
+ return ()=>{
+
+ }
+ },[])
+ return ()
+};
+export default Dataset;
\ No newline at end of file
diff --git a/react-ui/src/pages/Model/index.less b/react-ui/src/pages/Model/index.less
new file mode 100644
index 00000000..ff21467e
--- /dev/null
+++ b/react-ui/src/pages/Model/index.less
@@ -0,0 +1,296 @@
+.datasetTopBox{
+ display: flex;
+ align-items: center;
+ padding-right: 30px;
+ width: 100%;
+ height: 49px;
+ background-size: 100% 100%;
+ background-image: url(/assets/images/pipeline-back.png);
+ padding: 0 30px;
+}
+.datasetIntroTopBox{
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ width: 100%;
+ height: 110px;
+ background-size: 100% 100%;
+ background-image: url(/assets/images/dataset-back.png);
+ margin-bottom: 10px;
+ padding: 25px 30px;
+ .smallTagBox{
+ display: flex;
+ align-items: center;
+ color:#1664ff;
+ font-size:14px;
+ .tagItem{
+ padding: 4px 10px;
+ background: rgba(22, 100, 255, 0.1);
+ border-radius:4px;
+ margin-right: 20px;
+ }
+ }
+}
+.dataListBox{
+ padding: 20px 30px;
+ background:#ffffff;
+ border-radius:10px;
+ box-shadow:0px 2px 12px rgba(180, 182, 191, 0.09);
+ color:#1d1d20;
+ font-size:16px;
+ .dataButtonList{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 32px;
+ margin: 24px 0 30px 0;
+ color:#575757;
+ font-size:16px;
+ }
+}
+.datasetIntroCneterBox{
+ height: 77vh;
+ padding: 20px 30px;
+ background:#ffffff;
+ border-radius:10px;
+ box-shadow:0px 2px 12px rgba(180, 182, 191, 0.09);
+}
+.datasetIntroTitle{
+ color:#1d1d20;
+ font-size:15px;
+ margin: 37px 0 10px 0;
+}
+.datasetIntroText{
+ color:#575757;
+ font-size:14px;
+ margin-bottom: 30px;
+}
+.datasetBox{
+ background:#f9fafb;
+ font-family: 'Alibaba';
+ :global{
+ .ant-tabs-top >.ant-tabs-nav{
+ margin: 0;
+ }
+ .ant-pagination{
+ text-align: right;
+ }
+ }
+}
+.datasetAllBox{
+ :global{
+ .ant-tabs-nav .ant-tabs-nav-wrap{
+ margin: -48px 0 0 30px;
+ }
+
+ }
+}
+.plusButton{
+ margin: 0 18px 0 20px;
+ background:rgba(22, 100, 255, 0.06);
+ border:1px solid;
+ border-color:rgba(22, 100, 255, 0.11);
+ border-radius:4px;
+ color:#1d1d20;
+ font-size:14px;
+ font-family: 'Alibaba';
+}
+.plusButton:hover{
+ background:rgba(22, 100, 255, 0.06)!important;
+ border:1px solid!important;
+ border-color:rgba(22, 100, 255, 0.11)!important;
+ color:#1d1d20!important;
+}
+.datasetCneterBox{
+ display: flex;
+ justify-content: space-between;
+ height: 85vh;
+ width: 100%;
+
+ .datasetCneterLeftBox{
+ width:340px;
+ height:100%;
+ background:#ffffff;
+ box-shadow:0px 3px 6px rgba(146, 146, 146, 0.09);
+ margin-right: 10px;
+ padding-top: 15px;
+ .custTab{
+ display: flex;
+ border-bottom: 1px solid #e0eaff;
+ height: 32px;
+ .tabItem{
+ width: 52px;
+ height: 100%;
+ text-align: center;
+ color:#808080;
+ font-size:15px;
+ cursor: pointer;
+ }
+ }
+ .leftContentBox{
+ max-height: 80vh;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding: 15px 20px;
+ .itemTitle{
+ color:#1d1d20;
+ font-size:14px;
+ margin-bottom: 15px;
+ }
+ .itemBox{
+ width: 110%;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: start;
+ .messageBox{
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ cursor: pointer;
+ width:92px;
+ height:62px;
+ border:1px solid;
+ border-color:rgba(22, 100, 255, 0.05);
+ border-radius:4px;
+ margin: 0 12px 20px 0;
+ padding: 11px 0px 7px 0px;
+ color:#1d1d20;
+ font-size:12px;
+ .ptIcon{
+ display: block;
+ }
+ .hoverIcon{
+ display: none;
+ }
+ .messageText{
+ width: 65px;
+ text-align: center;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ transition: all 0.2s;
+ }
+ }
+ .messageBox:hover{
+ background:rgba(22, 100, 255, 0.03);
+ border:1px solid;
+ border-color:#1664ff;
+ .ptIcon{
+ display: none;
+ }
+ .hoverIcon{
+ display: block;
+ }
+ }
+ .active{
+ background:rgba(22, 100, 255, 0.03)!important;
+ border:1px solid!important;
+ border-color:#1664ff!important;
+ .ptIcon{
+ display: none!important;
+ }
+ .hoverIcon{
+ display: block!important;
+ }
+ }
+ }
+ }
+ }
+ .datasetCneterRightBox{
+ display: flex;
+ flex-direction: column;
+ padding: 22px 30px 26px 30px;
+ flex: 1;
+ height:100%;
+ background:#ffffff;
+ box-shadow:0px 3px 6px rgba(146, 146, 146, 0.09);
+ .dataSource{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 32px;
+ margin-bottom: 30px;
+ color:rgba(29, 29, 32, 0.8);
+ font-size:15px;
+ }
+ .dataContent{
+ width: 100%;
+ flex: 1;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: flex-start;
+ .dataItem{
+ width: 32%;
+ margin: 0 15px 18px 0;
+ height:66px;
+ position: relative;
+ background:rgba(128, 128, 128, 0.05);
+ border-radius:8px;
+ box-shadow:0px 0px 12px rgba(75, 84, 137, 0.05);
+ cursor: pointer;
+ .itemText{
+ position: absolute;
+ left: 20px;
+ top: 10px;
+ color:#1d1d20;
+ font-size:15px;
+
+ }
+ .itemTime{
+ position: absolute;
+ left: 20px;
+ bottom: 10px;
+ color:#808080;
+ font-size:14px;
+ }
+ .itemIcon{
+ position: absolute;
+ right: 20px;
+ bottom: 10px;
+ color:#808080;
+ font-size:14px;
+ }
+ }
+ }
+ }
+}
+.modal {
+ :global {
+ .ant-modal-content {
+ background:linear-gradient(180deg,#cfdfff 0%,#d4e2ff 9.77%,#ffffff 40%,#ffffff 100%);
+ border-radius:21px;
+ padding: 20px 67px;
+ width: 825px;
+
+ }
+ .ant-modal-header{
+ background-color: transparent;
+ margin: 20px 0;
+ }
+ .ant-input{
+ border-color:#e6e6e6;
+ height: 40px;
+
+ }
+ .ant-form-item .ant-form-item-label >label{
+ color:rgba(29, 29, 32, 0.8);
+ }
+ .ant-modal-footer{
+ margin: 40px 0 30px 0;
+ display: flex;
+ justify-content: center;
+ }
+ .ant-btn{
+ width:110px;
+ height:40px;
+ font-size:18px;
+ background:rgba(22, 100, 255, 0.06);
+ border-radius:10px;
+ border-color: transparent;
+ }
+ .ant-btn-primary{
+ background:#1664ff;
+ }
+ }
+}
\ No newline at end of file
diff --git a/react-ui/src/pages/Model/modelIntro.jsx b/react-ui/src/pages/Model/modelIntro.jsx
new file mode 100644
index 00000000..2ade9ffb
--- /dev/null
+++ b/react-ui/src/pages/Model/modelIntro.jsx
@@ -0,0 +1,298 @@
+
+import React ,{useEffect,useState,useRef}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,Select,Table,Upload} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, DeleteOutlined,UploadOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getDatasetList,getModelById,getModelVersionsById,getModelVersionIdList,deleteModelVersion,addModelsVersionDetail} from '@/services/dataset/index.js'
+import { useParams } from 'react-router-dom'
+import {downLoadZip} from '@/utils/downloadfile'
+const { Search } = Input;
+import moment from 'moment';
+import { getAccessToken } from '@/access';
+const { TabPane } = Tabs;
+
+const Dataset= React.FC = () => {
+ const props = {
+ action: '/api/mmp/dataset/upload',
+ // headers: {
+ // 'X-Requested-With': null
+ // },
+ headers: {
+ Authorization:getAccessToken(),
+ 'X-Requested-With': null
+
+ },
+ onChange({ file, fileList }) {
+ if (file.status !== 'uploading') {
+ console.log(file, fileList);
+ setFormList(fileList.map(item=>{
+ return {
+ ...form.getFieldsValue(),
+ models_id:locationParams.id,
+ file_name:item.response.data[0].fileName,
+ file_size:item.response.data[0].fileSize,
+ url:item.response.data[0].url,
+ }
+ }))
+ }
+ },
+ defaultFileList: [
+ ],
+ };
+ const [form] = Form.useForm();
+ const [formList,setFormList]=useState([])
+ const [dialogTitle, setDialogTitle] = useState('新建版本');
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetDetailObj,setDatasetDetailObj]=useState({
+ });
+ const [version,setVersion]=useState('')
+ const [versionList, setVersionList] = useState([]);
+ const locationParams =useParams () //新版本获取路由参数接口
+ console.log(locationParams);
+ const [wordList, setWordList] = useState([]);
+ const getModelByDetail=()=>{
+ getModelById(locationParams.id).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetDetailObj(ret.data)
+ }
+ })
+ }
+ const getModelVersionsList=()=>{
+ getModelVersionsById(locationParams.id).then(ret=>{
+ console.log(ret);
+ if(ret.code==200&&ret.data&&ret.data.length>0){
+ setVersionList(ret.data.map(item=>{
+ return {
+ 'label':item,
+ 'value':item
+ }
+ }))
+ }
+ })
+ }
+ useEffect(()=>{
+ getModelByDetail()
+ getModelVersionsList()
+ return ()=>{
+
+ }
+ },[])
+ const showModal = () => {
+ form.resetFields()
+ form.setFieldsValue({name:datasetDetailObj.name})
+
+ setDialogTitle('创建新版本')
+ setIsModalOpen(true);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const deleteDataset=()=>{
+ Modal.confirm({
+ title: '删除',
+ content: '确定删除模型版本?',
+ okText: '确认',
+ cancelText: '取消',
+
+ onOk: () => {
+ deleteModelVersion({models_id:locationParams.id,version}).then(ret=>{
+ if(ret.code==200){
+ message.success('删除成功')
+ getModelVersions({version,models_id:locationParams.id})
+ }
+ else{
+ message.error(ret.msg)
+ }
+ });
+ },
+ });
+ }
+ const onFinish = () => {
+ addModelsVersionDetail(formList).then(ret=>{
+ console.log(ret);
+ getModelVersionsList()
+ setIsModalOpen(false);
+ })
+ };
+ const getModelVersions=(params)=>{
+ getModelVersionIdList(params).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setWordList(ret.data)
+ }
+ })
+ }
+ const handleExport = async () => {
+ const hide = message.loading('正在下载');
+ hide();
+ downLoadZip(`/api/mmp/models/downloadAllFiles`,{models_id:locationParams.id,version})
+ };
+ const downloadAlone=(e,record)=>{
+ console.log(record);
+ const hide = message.loading('正在下载');
+ hide();
+ downLoadZip(`/api/mmp/models/download_model/${record.id}`)
+ }
+ const handleChange=(value)=>{
+ console.log(value);
+ if(value){
+ getModelVersions({version:value,models_id:locationParams.id})
+ setVersion(value)
+ }
+ else{
+ setVersion(null)
+ }
+ }
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ const columns = [
+ // {
+ // title: '序号',
+ // dataIndex: 'index',
+ // key: 'index',
+ // width: 80,
+ // render(text, record, index) {
+ // return (
+ // {(pageOption.current.page - 1) * 10 + index + 1}
+ // )
+ // }
+ // // render: (text, record, index) => `${((curPage-1)*10)+(index+1)}`,
+ // },
+ {
+ title: '文件名称',
+ dataIndex: 'file_name',
+ key: 'file_name',
+ render: (text,record) => downloadAlone(e,record)}>{text},
+ },
+ {
+ title: '版本号',
+ dataIndex: 'version',
+ key: 'version',
+ },
+ {
+ title: '文件大小',
+ dataIndex: 'file_size',
+ key: 'file_size',
+ },
+ {
+ title: '更新时间',
+ dataIndex: 'update_time',
+ key: 'update_time',
+ render: (text) => {moment(text).format('YYYY-MM-DD HH:mm:ss')},
+ },
+ ];
+ const pageOption = useRef({page: 1,size: 10})
+
+ // 当前页面切换
+ const paginationChange = async (current, size) => {
+ console.log('page', current, size)
+ pageOption.current={
+ page:current,
+ size:size
+ }
+ // getList()
+ }
+ return (
+
+
{datasetDetailObj.name}
+
+
{datasetDetailObj.data_tag||'...'}
+
{datasetDetailObj.data_type}
+ {/*
English
*/}
+
+
+
+
+
+ 简介
+ {datasetDetailObj.description}
+
+
+
+
模型列表
+
+
+ 版本号:
+
+ }>
+ 创建新版本
+
+
+
+ }>
+ 删除
+
+ }>
+ 下载
+
+
+
+
+
+
+
+
+
+
+
{dialogTitle}
+ } open={isModalOpen} className={Styles.modal} okButtonProps={{
+ htmlType: 'submit',
+ form: 'form',
+ }} onCancel={handleCancel}>
+
+
+
+
+
+
+
+
+ }>上传文件
+
+
+
+
+
+ )
+};
+export default Dataset;
\ No newline at end of file
diff --git a/react-ui/src/pages/Model/personalData.jsx b/react-ui/src/pages/Model/personalData.jsx
new file mode 100644
index 00000000..cd3891e4
--- /dev/null
+++ b/react-ui/src/pages/Model/personalData.jsx
@@ -0,0 +1,315 @@
+
+import React ,{useEffect,useState}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,Upload,Select} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, UploadOutlined,DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getModelList,addModel,getAssetIcon} from '@/services/dataset/index.js'
+const { Search } = Input;
+import { useNavigate} from 'react-router-dom';
+import moment from 'moment';
+import { getAccessToken } from '@/access';
+
+const leftdataList=[1,2,3]
+
+const PublicData= React.FC = () => {
+ const props = {
+ action: '/api/mmp/dataset/upload',
+ // headers: {
+ // 'X-Requested-With': null
+ // },
+ headers: {
+ Authorization:getAccessToken(),
+ 'X-Requested-With': null
+
+ },
+ onChange({ file, fileList }) {
+ if (file.status !== 'uploading') {
+ console.log(file, fileList);
+ form.setFieldsValue({dataset_version_vos:fileList.map(item=>item.response.data[0])})
+ }
+ },
+ defaultFileList: [
+ ],
+ };
+ const [queryFlow,setQueryFlow]=useState({
+ page:0,
+ size:10,
+ name:null,
+ available_range:0
+ });
+ const navgite=useNavigate();
+ const [iconParams,setIconParams]=useState({
+ name:null,
+ page:0,
+ size:10000
+ })
+ const [activeType,setActiveType]=useState(null)
+ const [activeTag,setActiveTag]=useState(null)
+ const [datasetTypeList,setDatasetTypeList]=useState([])
+ const [datasetDirectionList,setDatasetDirectionList]=useState([])
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetList,setDatasetList]=useState([]);
+ const [total,setTotal]=useState(0);
+ const [form] = Form.useForm();
+ const [dialogTitle, setDialogTitle] = useState('新建模型');
+ const getModelLists=(queryFlow)=>{
+ getModelList(queryFlow).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetList(ret.data.content)
+ setTotal(ret.data.totalElements)
+ }
+ })
+ }
+
+ const showModal = () => {
+ form.resetFields()
+ setDialogTitle('新建模型')
+ setIsModalOpen(true);
+ };
+ const getAssetIconList=(params)=>{
+ getAssetIcon(params).then(ret=>{
+ console.log(ret);
+ if(ret.code==200&&ret.data.content&&ret.data.content.length>0){
+ setDatasetTypeList(ret.data.content.filter(item=>item.category_id==3))
+ setDatasetDirectionList(ret.data.content.filter(item=>item.category_id==4))
+ }
+ else{
+ setDatasetTypeList([])
+ setDatasetDirectionList([])
+ }
+ })
+ }
+ const onSearch=(values)=>{
+ console.log(values);
+ getAssetIconList({...iconParams,name:values})
+ }
+ const nameSearch=(values)=>{
+ console.log(values);
+ getModelLists({...queryFlow,name:values})
+ }
+ const handleOk = () => {
+ console.log(1111);
+ setIsModalOpen(false);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const onFinish = (values) => {
+ addModel(values).then(ret=>{
+ console.log(ret);
+ getModelLists(queryFlow)
+ setIsModalOpen(false);
+ })
+ };
+
+ const chooseModelType=(val,item)=>{
+ console.log(val,item);
+ if(item.path==queryFlow.model_type){
+ setActiveType('')
+ setQueryFlow({...queryFlow,model_type:null})
+ getModelLists({...queryFlow,model_type:null})
+ }
+ else{
+ setActiveType(item.path)
+ setQueryFlow({...queryFlow,model_type:item.path})
+ getModelLists({...queryFlow,model_type:item.path})
+ }
+
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const chooseModelTag=(val,item)=>{
+ if(item.path==queryFlow.model_tag){
+ setActiveTag('')
+ setQueryFlow({...queryFlow,model_tag:null})
+ getModelLists({...queryFlow,model_tag:null})
+ }
+ else{
+ setActiveTag(item.path)
+ setQueryFlow({...queryFlow,model_tag:item.path})
+ getModelLists({...queryFlow,model_tag:item.path})
+ }
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const routeToIntro=(e,record)=>{
+ e.stopPropagation()
+ console.log(record);
+ navgite({pathname:`/dataset/modelIntro/${record.id}` });
+}
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ useEffect(()=>{
+ getAssetIconList(iconParams)
+ getModelLists(queryFlow)
+ return ()=>{
+
+ }
+ },[])
+ return (<>
+
+
+
+
+
+
模型框架
+
+
+ {datasetTypeList&&datasetTypeList.length>0?datasetTypeList.map(item=>{return
+
{chooseModelType(e, item)}}>
+

+

+
{chooseModelTag(e, item)}}>{item.name}
+
+
}):''}
+
+
模型能力
+
+
+ {datasetDirectionList&&datasetDirectionList.length>0?datasetDirectionList.map(item=>{return
+
{chooseModelTag(e, item)}}>
+

+

+
{item.name}
+
+
}):''}
+
+
+
+
+
+
+
数据总数:{total}个
+
+
+ }>
+ 模型注册
+
+
+
+
+ {datasetList&&datasetList.length>0?datasetList.map(item=>{return
routeToIntro(e,item)}>
+
{item.name}
+
最近更新: {moment(item.update_time).format('YYYY-MM-DD')}
+
1582
+
}):''}
+ {/*
Demo */}
+
+
+
+
+
+
{dialogTitle}
+ } open={isModalOpen} className={Styles.modal} okButtonProps={{
+ htmlType: 'submit',
+ form: 'form',
+ }} onCancel={handleCancel}>
+
+
+
+
+
+
+
+
+
+ 仅自己可见
+ 工作空间可见
+
+
+
+
+
+
+
+
+
+
+ }>上传文件
+
+
+
+
+ >)
+};
+export default PublicData;
\ No newline at end of file
diff --git a/react-ui/src/pages/Model/publicData.jsx b/react-ui/src/pages/Model/publicData.jsx
new file mode 100644
index 00000000..68733ce3
--- /dev/null
+++ b/react-ui/src/pages/Model/publicData.jsx
@@ -0,0 +1,271 @@
+
+import React ,{useEffect,useState}from 'react';
+import Styles from './index.less'
+import { Input, Space ,Button,Tabs,Pagination,Modal, Form,message, Radio,} from 'antd';
+import { PlusOutlined,PlusCircleOutlined, DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined ,CopyOutlined} from '@ant-design/icons';
+import {getModelList,getAssetIcon} from '@/services/dataset/index.js'
+const { Search } = Input;
+import { useNavigate} from 'react-router-dom';
+import moment from 'moment';
+const leftdataList=[1,2,3]
+
+const PublicData= React.FC = () => {
+ const [queryFlow,setQueryFlow]=useState({
+ page:0,
+ size:10,
+ name:null,
+ available_range:1
+ });
+ const [iconParams,setIconParams]=useState({
+ name:null,
+ page:0,
+ size:10000
+ })
+ const [activeType,setActiveType]=useState(null)
+ const [activeTag,setActiveTag]=useState(null)
+ const [datasetTypeList,setDatasetTypeList]=useState([])
+ const [datasetDirectionList,setDatasetDirectionList]=useState([])
+ const navgite=useNavigate();
+ const [isModalOpen,setIsModalOpen]=useState(false)
+ const [datasetList,setDatasetList]=useState([]);
+ const [total,setTotal]=useState(0);
+ const [form] = Form.useForm();
+ const [dialogTitle, setDialogTitle] = useState('新建数据');
+ const getModelLists=(queryFlow)=>{
+ getModelList(queryFlow).then(ret=>{
+ console.log(ret);
+ if(ret.code==200){
+ setDatasetList(ret.data.content)
+ setTotal(ret.data.totalElements)
+ }
+ })
+ }
+
+ const showModal = () => {
+ form.resetFields()
+ setDialogTitle('新建数据集')
+ setIsModalOpen(true);
+ };
+ const nameSearch=(values)=>{
+ console.log(values);
+ getModelLists({...queryFlow,name:values})
+ }
+ const getAssetIconList=(params)=>{
+ getAssetIcon(params).then(ret=>{
+ console.log(ret);
+ if(ret.code==200&&ret.data.content&&ret.data.content.length>0){
+ setDatasetTypeList(ret.data.content.filter(item=>item.category_id==3))
+ setDatasetDirectionList(ret.data.content.filter(item=>item.category_id==4))
+ }
+ else{
+ setDatasetTypeList([])
+ setDatasetDirectionList([])
+ }
+ })
+ }
+ const onSearch=(values)=>{
+ console.log(values);
+ getAssetIconList({...iconParams,name:values})
+ }
+ const handleOk = () => {
+ console.log(1111);
+ setIsModalOpen(false);
+ };
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+ const chooseModelType=(val,item)=>{
+ console.log(val,item);
+ if(item.path==queryFlow.model_type){
+ setActiveType('')
+ setQueryFlow({...queryFlow,model_type:null})
+ getModelLists({...queryFlow,model_type:null})
+ }
+ else{
+ setActiveType(item.path)
+ setQueryFlow({...queryFlow,model_type:item.path})
+ getModelLists({...queryFlow,model_type:item.path})
+ }
+
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const chooseModelTag=(val,item)=>{
+ if(item.path==queryFlow.model_tag){
+ setActiveTag('')
+ setQueryFlow({...queryFlow,model_tag:null})
+ getModelLists({...queryFlow,model_tag:null})
+ }
+ else{
+ setActiveTag(item.path)
+ setQueryFlow({...queryFlow,model_tag:item.path})
+ getModelLists({...queryFlow,model_tag:item.path})
+ }
+ // setQueryFlow({...queryFlow,data_type:item.path},()=>{
+ // getDatasetlist()
+ // })
+ };
+ const onFinish = (values) => {
+
+ };
+ const routeToIntro=(e,record)=>{
+ e.stopPropagation()
+ console.log(record);
+ navgite({pathname:`/dataset/modelIntro/${record.id}` });
+ }
+ const onFinishFailed = (errorInfo) => {
+ console.log('Failed:', errorInfo);
+ };
+ useEffect(()=>{
+ getAssetIconList(iconParams)
+ getModelLists(queryFlow)
+ return ()=>{
+
+ }
+ },[])
+ return (<>
+
+
+
+
+
+
模型框架
+
+
+ {datasetTypeList&&datasetTypeList.length>0?datasetTypeList.map(item=>{return
+
{chooseModelType(e, item)}}>
+

+

+
{item.name}
+
+
}):''}
+
+
模型能力
+
+
+ {datasetDirectionList&&datasetDirectionList.length>0?datasetDirectionList.map(item=>{return
+
{chooseModelTag(e, item)}}>
+

+

+
{item.name}
+
+
}):''}
+
+
+
+
+
+
+ {datasetList&&datasetList.length>0?datasetList.map(item=>{return
routeToIntro(e,item)}>
+
{item.name}
+
最近更新: {moment(item.update_time).format('YYYY-MM-DD')}
+
1582
+
}):''}
+ {/*
Demo */}
+
+
+
+
+
+
{dialogTitle}
+ } open={isModalOpen} className={Styles.modal} okButtonProps={{
+ htmlType: 'submit',
+ form: 'form',
+ }} onCancel={handleCancel}>
+
+
+
+
+
+
+
+
+
+
+
+ 仅自己可见
+ 工作空间可见
+
+
+
+
+
+
+
+ >)
+};
+export default PublicData;
\ No newline at end of file
diff --git a/react-ui/src/pages/Pipeline/editPipeline/editPipeline.less b/react-ui/src/pages/Pipeline/editPipeline/editPipeline.less
index 1fd2df8b..284a6b9d 100644
--- a/react-ui/src/pages/Pipeline/editPipeline/editPipeline.less
+++ b/react-ui/src/pages/Pipeline/editPipeline/editPipeline.less
@@ -9,7 +9,7 @@
width: 100%;
height:43px;
background:#f8fbff;
-
+ margin-bottom: 10px;
color:#1d1d20;
font-size:15px;
font-family: 'Alibaba';
diff --git a/react-ui/src/pages/Pipeline/editPipeline/index.jsx b/react-ui/src/pages/Pipeline/editPipeline/index.jsx
index a34d7bdf..2740b419 100644
--- a/react-ui/src/pages/Pipeline/editPipeline/index.jsx
+++ b/react-ui/src/pages/Pipeline/editPipeline/index.jsx
@@ -22,7 +22,8 @@ const editPipeline = React.FC = () => {
return {
display: 'flex',
backgroundColor:'#fff',
- height:'98vh'
+ height:'98vh',
+ position:'relative'
};
});
const rightmenu= useEmotionCss(() => {
@@ -82,6 +83,7 @@ const editPipeline = React.FC = () => {
});
data.nodes[index] = val;
graph.changeData(data)
+ graph.render()
}
const savePipeline=(val)=>{
const data = graph.save();
@@ -134,6 +136,7 @@ const editPipeline = React.FC = () => {
},500)
}
}
+
const processParallelEdgesOnAnchorPoint = (
edges,
offsetDiff = 15,
@@ -316,6 +319,32 @@ const editPipeline = React.FC = () => {
console.log(contextMenu);
},[])
const initGraph=()=>{
+ const fittingString = (str, maxWidth, fontSize) => {
+ const ellipsis = '...';
+ const ellipsisLength = G6.Util.getTextSize(ellipsis, fontSize)[0];
+ let currentWidth = 0;
+ let res = str;
+ const pattern = new RegExp('[\u4E00-\u9FA5]+'); // distinguish the Chinese charactors and letters
+ str.split('').forEach((letter, i) => {
+ if (currentWidth > maxWidth - ellipsisLength) return;
+ if (pattern.test(letter)) {
+ // Chinese charactors
+ currentWidth += fontSize;
+ } else {
+ // get the width of single letter according to the fontSize
+ currentWidth += G6.Util.getLetterWidth(letter, fontSize);
+ }
+ if (currentWidth > maxWidth - ellipsisLength) {
+ res = `${str.substr(0, i)}${ellipsis}`;
+ }
+ });
+ return res;
+ };
+ // 获取文本的长度
+ const getTextSize = (str, maxWidth, fontSize) => {
+ let width = G6.Util.getTextSize(str, fontSize)[0];
+ return width > maxWidth ? maxWidth : width;
+ }
G6.registerNode(
'rect-node',
{
@@ -329,6 +358,22 @@ const editPipeline = React.FC = () => {
]
);
},
+ // draw(cfg, group) {
+
+ // let rect=group.addShape('text', {
+ // attrs: {
+ // text: fittingString(cfg.label, 110, 15),
+ // x: 90 - getTextSize(cfg.label, 110, 15),
+ // y: 0,
+ // fontSize: 10,
+ // textAlign: 'center',
+ // textBaseline: 'middle',
+ // fill:'#000'
+ // },
+ // name: 'text-shape',
+ // });
+ // return rect;
+ // },
afterDraw(cfg, group) {
// console.log(group, cfg, 12312);
const image = group.addShape('image', {
@@ -342,19 +387,21 @@ const editPipeline = React.FC = () => {
},
draggable: true,
});
- // if (cfg.label) {
- // group.addShape('text', {
- // attrs: {
- // x: 0,
- // y: cfg.height / 2 - 5,
- // textAlign: 'center',
- // textBaseline: 'middle',
- // text: cfg.label,
- // fill: '#fff',
- // },
- // draggable: true,
- // });
- // }
+ if (cfg.label) {
+ group.addShape('text', {
+ attrs: {
+ text: fittingString(cfg.label, 70, 10),
+ x: -20,
+ y: 0,
+ fontSize: 10,
+ textAlign: 'left',
+ textBaseline: 'middle',
+ fill:'#000'
+ },
+ name: 'text-shape',
+ draggable: true,
+ });
+ }
const bbox = group.getBBox();
const anchorPoints = this.getAnchorPoints(cfg);
// console.log(anchorPoints);
@@ -457,10 +504,10 @@ const editPipeline = React.FC = () => {
labelCfg: {
style: {
- fill: '#000',
- fontSize: 10,
+ fill: 'transparent',
+ fontSize: 0,
boxShadow:'0px 0px 12px rgba(75, 84, 137, 0.05)',
-
+ overflow:'hidden',
x: -20,
y: 0,
textAlign: 'left',
@@ -472,6 +519,7 @@ const editPipeline = React.FC = () => {
stroke: '#fff',
cursor: 'pointer',
radius:10,
+ overflow:'hidden',
lineWidth:0.5
},
},
@@ -528,7 +576,7 @@ const editPipeline = React.FC = () => {
},
},
// linkCenter: true,
- fitView: true,
+ fitView: false,
fitViewPadding: [60, 60, 60, 80],
});
graph.on('dblclick', (e)=>{
@@ -611,8 +659,8 @@ const editPipeline = React.FC = () => {
- } style={{marginRight:'20px'}} onClick={()=>{savePipeline(false)}}>保存
- } onClick={()=>{savePipeline(true)}}>保存并返回
+ } style={{marginRight:'20px',background:'#1664ff'}} onClick={()=>{savePipeline(false)}}>保存
+ } style={{background:'#1664ff'}} onClick={()=>{savePipeline(true)}}>保存并返回
diff --git a/react-ui/src/pages/Pipeline/editPipeline/modelMenus.jsx b/react-ui/src/pages/Pipeline/editPipeline/modelMenus.jsx
index a72b7857..626e532c 100644
--- a/react-ui/src/pages/Pipeline/editPipeline/modelMenus.jsx
+++ b/react-ui/src/pages/Pipeline/editPipeline/modelMenus.jsx
@@ -34,7 +34,7 @@ const modelMenus = ({onParDragEnd}) => {
onParDragEnd({...data,x:e.clientX,y:e.clientY,label:data.component_label,img:`/assets/images/${data.icon_path}.png`})
}
const { Panel } = Collapse;
- return (
+ return (
.ant-collapse-item >.ant-collapse-header{
background-color: #fff;
diff --git a/react-ui/src/pages/Pipeline/editPipeline/props.jsx b/react-ui/src/pages/Pipeline/editPipeline/props.jsx
index cd243f48..38eea3a0 100644
--- a/react-ui/src/pages/Pipeline/editPipeline/props.jsx
+++ b/react-ui/src/pages/Pipeline/editPipeline/props.jsx
@@ -67,7 +67,7 @@ const Props = forwardRef(({onParentChange}, ref) =>{
}));
return (
<>
-
+