Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
bkunyun
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
bkunyun
Commits
c054d7f8
Commit
c054d7f8
authored
Aug 05, 2022
by
rocosen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:bug
parent
b08567c0
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
224 additions
and
194 deletions
+224
-194
NoProject.tsx
src/components/BusinessComponents/NoProject/NoProject.tsx
+11
-7
MySwitch.tsx
src/components/mui/MySwitch.tsx
+10
-8
index.tsx
src/views/Project/ProjectSetting/BaseInfo/index.tsx
+14
-14
index.module.css
...workbenchTemplate/components/AddTemplate/index.module.css
+6
-7
index.tsx
...kbench/workbenchTemplate/components/AddTemplate/index.tsx
+174
-157
index.tsx
...iews/Project/ProjectWorkbench/workbenchTemplate/index.tsx
+9
-1
No files found.
src/components/BusinessComponents/NoProject/NoProject.tsx
View file @
c054d7f8
...
...
@@ -12,16 +12,20 @@ import AddIcon from "@mui/icons-material/Add";
import
AddProject
from
"@/views/Project/components/AddProject"
;
import
React
,
{
useState
}
from
"react"
;
import
MyButton
from
"@/components/mui/MyButton"
;
import
{
toJS
}
from
"mobx"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useStores
}
from
"@/store/index"
;
const
NoProject
=
(
)
=>
{
const
NoProject
=
observer
((
props
:
any
)
=>
{
// 新建弹窗显示控制
const
[
addOpen
,
setAddOpen
]
=
useState
(
false
);
const
{
currentProjectStore
}
=
useStores
();
let
projectList
=
toJS
(
currentProjectStore
.
projectList
)
return
(
<
div
className=
{
style
.
noProject
}
>
<
img
src=
{
noData
}
alt=
""
className=
{
style
.
noDataImg
}
/>
<
div
className=
{
style
.
text1
}
>
当前产品暂无项目
</
div
>
<
div
className=
{
style
.
text2
}
>
请先创建项目
</
div
>
<
div
className=
{
style
.
text1
}
>
{
projectList
.
length
>
0
?
"当前未选中任何项目"
:
"当前产品暂无项目"
}
</
div
>
<
div
className=
{
style
.
text2
}
>
{
projectList
.
length
>
0
?
"或创建新项目"
:
"请先创建项目"
}
</
div
>
<
MyButton
text=
'创建项目'
variant=
"contained"
...
...
@@ -30,11 +34,11 @@ const NoProject = () => {
onClick=
{
()
=>
setAddOpen
(
true
)
}
style=
{
{
backgroundColor
:
"#1370ff"
,
color
:
"#fff"
}
}
/>
<
AddProject
addOpen=
{
addOpen
}
setAddOpen=
{
setAddOpen
}
/>
</
div
>
);
};
}
)
;
export
default
NoProject
;
src/components/mui/MySwitch.tsx
View file @
c054d7f8
...
...
@@ -11,7 +11,8 @@ import Switch, { SwitchProps } from "@mui/material/Switch";
import
{
ThemeProvider
,
createTheme
}
from
"@mui/material/styles"
;
interface
IMySwitchProps
extends
SwitchProps
{
value
:
boolean
;
value
?:
boolean
;
defaultChecked
?:
boolean
;
onChange
?:
any
;
disabled
?:
boolean
;
}
...
...
@@ -52,23 +53,24 @@ const theme = createTheme({
});
const
MySwitch
=
(
props
:
IMySwitchProps
)
=>
{
const
{
value
,
onChange
,
disabled
=
false
,
size
,
...
other
}
=
props
;
const
{
value
,
defaultChecked
,
onChange
,
disabled
=
false
,
size
,
...
other
}
=
props
;
return
(
<
ThemeProvider
theme=
{
theme
}
>
<
Switch
checked=
{
value
}
disabled=
{
disabled
}
defaultChecked=
{
defaultChecked
}
onChange=
{
onChange
}
sx=
{
size
===
"medium"
?
{
width
:
44
,
height
:
24
,
}
width
:
44
,
height
:
24
,
}
:
{
width
:
40
,
height
:
22
,
}
width
:
40
,
height
:
22
,
}
}
{
...
other
}
/>
...
...
src/views/Project/ProjectSetting/BaseInfo/index.tsx
View file @
c054d7f8
...
...
@@ -276,20 +276,20 @@ const BaseInfo = observer(() => {
const
projectList
=
await
getProjectList
();
currentProjectStore
.
setProjectList
(
projectList
);
// 项目删完了
if
(
projectList
.
length
===
0
)
{
currentProjectStore
.
changeProject
({});
localStorage
.
setItem
(
"fileServerEndPoint"
,
""
);
setProjectInfo
({});
}
else
{
projectList
[
0
].
filetoken
=
getFiletokenAccordingToId
(
projectList
[
0
].
id
);
currentProjectStore
.
changeProject
(
projectList
[
0
]);
setFileServerEndPointLocalStorage
(
projectList
[
0
].
zoneId
);
getFiletokenAccordingToId
(
projectList
[
0
].
id
).
then
((
res
)
=>
{
projectList
[
0
].
filetoken
=
res
;
currentProjectStore
.
changeProject
(
projectList
[
0
]);
});
setProjectInfo
(
projectList
[
0
]);
}
//
if (projectList.length === 0) {
currentProjectStore
.
changeProject
({});
localStorage
.
setItem
(
"fileServerEndPoint"
,
""
);
setProjectInfo
({});
//
} else {
//
projectList[0].filetoken = getFiletokenAccordingToId(projectList[0].id);
//
currentProjectStore.changeProject(projectList[0]);
//
setFileServerEndPointLocalStorage(projectList[0].zoneId);
//
getFiletokenAccordingToId(projectList[0].id).then((res) => {
//
projectList[0].filetoken = res;
//
currentProjectStore.changeProject(projectList[0]);
//
});
//
setProjectInfo(projectList[0]);
//
}
},
});
...
...
src/views/Project/ProjectWorkbench/workbenchTemplate/components/AddTemplate/index.module.css
View file @
c054d7f8
...
...
@@ -28,10 +28,10 @@
}
.templateLi
{
height
:
1
46
px
;
height
:
1
70
px
;
box-sizing
:
border-box
;
padding
:
16px
20px
;
cursor
:
pointer
;
/* cursor: pointer; */
border
:
1px
solid
rgba
(
235
,
237
,
240
,
1
);
border-radius
:
4px
;
min-width
:
20%
;
...
...
@@ -41,7 +41,7 @@
}
.templateLiCustom
{
height
:
1
94
px
;
height
:
1
70
px
;
}
.templateLiHidden
{
...
...
@@ -49,7 +49,7 @@
}
.addCustomTemplate
{
height
:
1
94
px
;
height
:
1
70
px
;
box-sizing
:
border-box
;
display
:
flex
;
justify-content
:
center
;
...
...
@@ -112,5 +112,5 @@
.templateLiEditBox
{
display
:
flex
;
justify-content
:
flex-end
;
margin-top
:
16px
;
}
\ No newline at end of file
/* margin-top: 16px; */
}
src/views/Project/ProjectWorkbench/workbenchTemplate/components/AddTemplate/index.tsx
View file @
c054d7f8
...
...
@@ -6,6 +6,7 @@ import RadioGroupOfButtonStyle from "@/components/CommonComponents/RadioGroupOfB
import
SearchIcon
from
"@mui/icons-material/Search"
;
import
MyButton
from
"@/components/mui/MyButton"
;
import
OutlinedInput
from
"@mui/material/OutlinedInput"
;
import
MySwitch
from
"@/components/mui/MySwitch"
;
import
FullScreenDrawer
from
"@/components/CommonComponents/FullScreenDrawer"
;
import
Checkbox
from
"@mui/material/Checkbox"
;
import
useMyRequest
from
"@/hooks/useMyRequest"
;
...
...
@@ -17,6 +18,7 @@ import { useMessage } from "@/components/MySnackbar";
import
{
getAddWorkbenchTemplate
,
addWorkbenchTemplate
,
deleteWorkbenchTemplate
,
}
from
"@/api/workbench_api"
;
type
IAddTemplateProps
=
{
...
...
@@ -50,9 +52,6 @@ const AddTemplate = (props: IAddTemplateProps) => {
const
[
templateType
,
setTemplateType
]
=
useState
(
"public"
);
// 滚轮是否到顶,判断是否显示阴影
const
[
isTop
,
setIsTop
]
=
useState
(
true
)
const
handleRadio
=
(
value
:
string
)
=>
{
setTemplateType
(
value
);
};
...
...
@@ -71,25 +70,36 @@ const AddTemplate = (props: IAddTemplateProps) => {
// 项目管理员-添加工作流模板-提交
const
{
run
:
addTemplate
}
=
useMyRequest
(
addWorkbenchTemplate
,
{
onSuccess
:
(
result
:
any
)
=>
{
Message
.
success
(
"添加成功"
);
setSelectTemplateData
([]);
setShowAddTemplate
();
getTemplateInfo
({
projectId
:
projectId
as
string
,
});
//
Message.success("添加成功");
//
setSelectTemplateData([]);
//
setShowAddTemplate();
//
getTemplateInfo({
//
projectId: projectId as string,
//
});
},
});
const
handleAddTemplate
=
()
=>
{
if
(
selectTemplateData
.
length
===
0
)
{
Message
.
error
(
"请选择要添加的模板"
);
}
else
{
addTemplate
({
projectId
:
projectId
as
string
,
workflowSpecIds
:
selectTemplateData
,
});
}
};
// 删除模板
const
{
run
:
delTemplate
}
=
useMyRequest
(
deleteWorkbenchTemplate
,
{
onSuccess
:
(
result
:
any
)
=>
{
// setOpenDialog(false);
// getTemplateInfo({
// projectId: currentProjectStore.currentProjectInfo.id as string,
// title: templateName,
// });
},
});
// const handleAddTemplate = () => {
// if (selectTemplateData.length === 0) {
// Message.error("请选择要添加的模板");
// } else {
// addTemplate({
// projectId: projectId as string,
// workflowSpecIds: selectTemplateData,
// });
// }
// };
// 添加工作流模板-获取模板列表
const
{
run
:
getAddTemplateList
}
=
useMyRequest
(
getAddWorkbenchTemplate
,
{
...
...
@@ -150,6 +160,23 @@ const AddTemplate = (props: IAddTemplateProps) => {
title
,
]);
//模板启用切换
const
templateSwitch
=
(
e
:
any
,
id
:
string
)
=>
{
if
(
e
.
target
.
checked
)
{
let
arr
=
[]
arr
.
push
(
id
)
addTemplate
({
projectId
:
projectId
as
string
,
workflowSpecIds
:
arr
,
});
}
else
{
delTemplate
({
projectId
:
projectId
as
string
,
workflowSpecId
:
id
,
});
}
}
useEffect
(()
=>
{
getAddTemplateListFun
();
},
[
getAddTemplateListFun
]);
...
...
@@ -164,172 +191,162 @@ const AddTemplate = (props: IAddTemplateProps) => {
return
arr
;
},
[
addTemplateList
,
templateType
]);
// 滚动滚轮时监听是否到顶
const
onscroll
=
(
e
:
any
)
=>
{
if
(
e
.
target
.
scrollTop
<=
0
)
{
setIsTop
(
true
)
}
else
{
setIsTop
(
false
)
}
}
return
(
<
FullScreenDrawer
handleClose=
{
setShowAddTemplate
}
>
<
div
className=
{
style
.
content
}
>
<
div
className=
{
classNames
({
[
style
.
headerBox
]:
true
,
[
style
.
headerBoxShadow
]:
!
isTop
,
})
}
<
Typography
sx=
{
{
fontSize
:
"18px"
,
fontWeight
:
"600"
,
color
:
"#1E2633"
}
}
>
<
Typography
sx=
{
{
fontSize
:
"18px"
,
fontWeight
:
"600"
,
color
:
"#1E2633"
}
}
>
添加工作流模版
</
Typography
>
添加工作流模版
</
Typography
>
<
Box
sx=
{
{
display
:
"flex"
,
justifyContent
:
"space-between"
,
alignItems
:
"center"
,
marginBottom
:
"20px"
,
}
}
>
<
OutlinedInput
value=
{
title
}
onChange=
{
(
e
:
any
)
=>
{
setTitle
(
e
.
target
.
value
);
}
}
placeholder=
"输入关键词搜索"
size=
"small"
sx=
{
{
width
:
340
,
height
:
32
,
marginTop
:
"20px"
}
}
endAdornment=
{
<
SearchIcon
style=
{
{
color
:
"#8A9099"
}
}
/>
}
/>
<
Box
sx=
{
{
display
:
"flex"
,
justifyContent
:
"
space-between
"
,
justifyContent
:
"
flex-end
"
,
alignItems
:
"center"
,
paddingBottom
:
"20px"
,
paddingTop
:
"20px"
,
}
}
>
<
OutlinedInput
value=
{
title
}
onChange=
{
(
e
:
any
)
=>
{
setTitle
(
e
.
target
.
value
);
}
}
placeholder=
"输入关键词搜索"
size=
"small"
sx=
{
{
width
:
340
,
height
:
32
}
}
endAdornment=
{
<
SearchIcon
style=
{
{
color
:
"#8A9099"
}
}
/>
}
/>
<
Box
sx=
{
{
display
:
"flex"
,
justifyContent
:
"flex-end"
,
alignItems
:
"center"
,
<
RadioGroupOfButtonStyle
value=
{
templateType
}
radioOptions=
{
radioOptions
}
handleRadio=
{
handleRadio
}
></
RadioGroupOfButtonStyle
>
{
/* <MyButton
onClick={handleAddTemplate}
size={"small"}
style={{
marginLeft: "12px",
}}
text={
"添加模版" +
(selectTemplateData.length === 0
? ""
: `(${selectTemplateData.length})`)
}
/> */
}
</
Box
>
</
Box
>
{
templateType
===
"public"
&&
addTemplateList
.
length
===
0
&&
(
<
Box
sx=
{
{
display
:
"flex"
,
alignItems
:
"center"
,
flexDirection
:
"column"
,
minHeight
:
"calc(100vh - 376px)"
,
justifyContent
:
"center"
,
}
}
>
<
img
alt=
""
src=
{
noData
}
/>
<
Typography
sx=
{
{
fontSize
:
"12px"
,
fontWeight
:
"400"
,
color
:
"#8A9099"
}
}
>
<
RadioGroupOfButtonStyle
value=
{
templateType
}
radioOptions=
{
radioOptions
}
handleRadio=
{
handleRadio
}
></
RadioGroupOfButtonStyle
>
<
MyButton
onClick=
{
handleAddTemplate
}
size=
{
"small"
}
style=
{
{
marginLeft
:
"12px"
,
}
}
text=
{
"添加模版"
+
(
selectTemplateData
.
length
===
0
?
""
:
`(${selectTemplateData.length})`
)
}
/>
</
Box
>
暂无相关模版
</
Typography
>
</
Box
>
</
div
>
<
div
className=
{
style
.
templateBox
}
onScroll=
{
onscroll
}
>
{
templateType
===
"public"
&&
addTemplateList
.
length
===
0
&&
(
<
Box
sx=
{
{
display
:
"flex"
,
alignItems
:
"center"
,
flexDirection
:
"column"
,
minHeight
:
"calc(100vh - 376px)"
,
justifyContent
:
"center"
,
}
}
)
}
<
div
className=
{
style
.
templateList
}
>
{
templateType
!==
"public"
&&
(
<
div
className=
{
classNames
({
[
style
.
templateLi
]:
true
,
[
style
.
addCustomTemplate
]:
true
,
})
}
onClick=
{
handleAddCustomTemplate
}
>
<
img
alt=
""
src=
{
noData
}
/>
<
Typography
sx=
{
{
fontSize
:
"12px"
,
fontWeight
:
"400"
,
color
:
"#8A9099"
}
}
>
暂无相关模版
</
Typography
>
</
Box
>
<
AddIcon
/>
<
span
className=
{
style
.
addCustomTemplateText
}
>
创建自定义模板
</
span
>
</
div
>
)
}
<
div
className=
{
style
.
templateList
}
>
{
templateType
!==
"public"
&&
(
{
addTemplateList
.
map
((
item
:
any
,
index
)
=>
{
return
(
<
div
className=
{
classNames
({
[
style
.
templateLi
]:
true
,
[
style
.
addCustomTemplate
]:
true
,
[
style
.
templateLiCustom
]:
templateType
!==
"public"
,
})
}
onClick=
{
handleAddCustomTemplate
}
key=
{
index
}
onClick=
{
()
=>
{
handleSelectTemplate
(
item
.
id
);
}
}
>
<
AddIcon
/>
<
span
className=
{
style
.
addCustomTemplateText
}
>
创建自定义模板
</
span
>
<
div
className=
{
style
.
templateLiTop
}
>
<
span
className=
{
style
.
templateTitle
}
>
{
item
.
title
}
</
span
>
{
/* <Checkbox
size="small"
sx={{ padding: "0px" }}
checked={selectTemplateData.includes(item.id)}
/> */
}
</
div
>
<
div
className=
{
style
.
templateLiInfo
}
>
<
span
className=
{
style
.
templateLiInfoText
}
style=
{
{
marginRight
:
"24px"
}
}
>
版本:
{
item
.
version
}
</
span
>
<
span
className=
{
style
.
templateLiInfoText
}
>
更新时间:
{
item
.
updatedTime
}
</
span
>
</
div
>
<
div
className=
{
style
.
templateLiDesc
}
>
{
item
.
description
}
</
div
>
<
div
className=
{
style
.
templateLiEditBox
}
>
<
MySwitch
defaultChecked=
{
item
.
favorited
}
onChange=
{
(
e
:
any
)
=>
templateSwitch
(
e
,
item
.
id
)
}
></
MySwitch
>
</
div
>
{
/* {templateType !== "public" && (
<MyButton
onClick={() => handleEditTemplate(item)}
size={"small"}
style={{
height: "32px",
}}
color="inherit"
text="编辑模板"
/>
</div>
)} */
}
</
div
>
)
}
{
addTemplateList
.
map
((
item
:
any
,
index
)
=>
{
);
})
}
{
hiddenBoxArr
.
length
!==
4
&&
hiddenBoxArr
.
map
((
item
,
index
)
=>
{
return
(
<
div
key=
{
`-${index}`
}
className=
{
classNames
({
[
style
.
templateLi
]:
true
,
[
style
.
templateLi
Custom
]:
templateType
!==
"public"
,
[
style
.
templateLi
Hidden
]:
true
,
})
}
key=
{
index
}
onClick=
{
()
=>
{
handleSelectTemplate
(
item
.
id
);
}
}
>
<
div
className=
{
style
.
templateLiTop
}
>
<
span
className=
{
style
.
templateTitle
}
>
{
item
.
title
}
</
span
>
<
Checkbox
size=
"small"
sx=
{
{
padding
:
"0px"
}
}
checked=
{
selectTemplateData
.
includes
(
item
.
id
)
}
/>
</
div
>
<
div
className=
{
style
.
templateLiInfo
}
>
<
span
className=
{
style
.
templateLiInfoText
}
style=
{
{
marginRight
:
"24px"
}
}
>
版本:
{
item
.
version
}
</
span
>
<
span
className=
{
style
.
templateLiInfoText
}
>
更新时间:
{
item
.
updatedTime
}
</
span
>
</
div
>
<
div
className=
{
style
.
templateLiDesc
}
>
{
item
.
description
}
</
div
>
{
templateType
!==
"public"
&&
(
<
div
className=
{
style
.
templateLiEditBox
}
>
<
MyButton
onClick=
{
()
=>
handleEditTemplate
(
item
)
}
size=
{
"small"
}
style=
{
{
height
:
"32px"
,
}
}
color=
"inherit"
text=
"编辑模板"
/>
</
div
>
)
}
</
div
>
/>
);
})
}
{
hiddenBoxArr
.
length
!==
4
&&
hiddenBoxArr
.
map
((
item
,
index
)
=>
{
return
(
<
div
key=
{
`-${index}`
}
className=
{
classNames
({
[
style
.
templateLi
]:
true
,
[
style
.
templateLiHidden
]:
true
,
})
}
/>
);
})
}
</
div
>
</
div
>
</
div
>
{
customTemplateInfo
?.
show
?
(
...
...
src/views/Project/ProjectWorkbench/workbenchTemplate/index.tsx
View file @
c054d7f8
...
...
@@ -182,7 +182,15 @@ const ProjectMembers = observer(() => {
{
showAddTemplate
&&
(
<
AddTemplate
setShowAddTemplate=
{
()
=>
setShowAddTemplate
(
false
)
}
setShowAddTemplate=
{
()
=>
{
setShowAddTemplate
(
false
)
getTemplateInfo
({
projectId
:
projectIdData
as
string
,
title
:
templateName
,
});
}
}
getTemplateInfo=
{
getTemplateInfo
}
productId=
{
productId
as
string
}
projectId=
{
projectIdData
as
string
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment