Commit e3101834 authored by rocosen's avatar rocosen

Merge branch 'feat-20220801' into 'release'

Feat 20220801

See merge request !47
parents 41c6abca ed810906
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 12</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-12">
<rect id="背景" x="0" y="0" width="16" height="16"></rect>
<g id="项目管理" transform="translate(1.000000, 0.500000)" stroke="#8A9099" stroke-width="1.60714286">
<path d="M9.40680569,0.803571429 L13.1232896,4.61571277 L13.1964286,13.9285714 L1.07142857,14.1964286 L0.803571429,1.07142857 L9.40680569,0.803571429 Z" id="矩形"></path>
<line x1="3.69384615" y1="5.25" x2="8.00153846" y2="5.25" id="路径-2"></line>
<line x1="3.69384615" y1="9.53571429" x2="10.1553846" y2="9.53571429" id="路径-2备份"></line>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 12备份 8</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-12备份-8">
<rect id="背景" x="0" y="0" width="16" height="16"></rect>
<g id="项目管理" transform="translate(1.000000, 0.500000)" stroke="#1370FF" stroke-width="1.60714286">
<path d="M9.40680569,0.803571429 L13.1232896,4.61571277 L13.1964286,13.9285714 L1.07142857,14.1964286 L0.803571429,1.07142857 L9.40680569,0.803571429 Z" id="矩形"></path>
<line x1="3.69384615" y1="5.25" x2="8.00153846" y2="5.25" id="路径-2"></line>
<line x1="3.69384615" y1="9.53571429" x2="10.1553846" y2="9.53571429" id="路径-2备份"></line>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="17px" viewBox="0 0 17 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组">
<rect id="矩形备份-4" x="0" y="0.242640687" width="16" height="16"></rect>
<g id="编组-4备份" transform="translate(1.000000, 0.000000)" stroke="#8A9099" stroke-width="1.5">
<rect id="矩形" x="0.75" y="1.99264069" width="4.5" height="4.5" rx="1"></rect>
<rect id="矩形备份-2" x="0.75" y="9.99264069" width="4.5" height="4.5" rx="1"></rect>
<rect id="矩形备份" transform="translate(10.892641, 4.242641) rotate(-45.000000) translate(-10.892641, -4.242641) " x="8.64264069" y="1.99264069" width="4.5" height="4.5" rx="1"></rect>
<rect id="矩形备份-3" x="8.5" y="9.99264069" width="4.5" height="4.5" rx="1"></rect>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="17px" viewBox="0 0 17 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组备份 3</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组备份-3">
<rect id="矩形备份-4" x="0" y="0.242640687" width="16" height="16"></rect>
<g id="编组-4备份" transform="translate(1.000000, 0.000000)" stroke="#1370FF" stroke-width="1.5">
<rect id="矩形" x="0.75" y="1.99264069" width="4.5" height="4.5" rx="1"></rect>
<rect id="矩形备份-2" x="0.75" y="9.99264069" width="4.5" height="4.5" rx="1"></rect>
<rect id="矩形备份" transform="translate(10.892641, 4.242641) rotate(-45.000000) translate(-10.892641, -4.242641) " x="8.64264069" y="1.99264069" width="4.5" height="4.5" rx="1"></rect>
<rect id="矩形备份-3" x="8.5" y="9.99264069" width="4.5" height="4.5" rx="1"></rect>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 58</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-56">
<rect id="背景" x="0" y="0" width="16" height="16"></rect>
<g id="项目设置" stroke="#8A9099" stroke-width="1.5">
<path d="M5.58808928,0.759546858 C6.24087167,1.18742985 7.27894484,2.03357391 8.0410091,2.03357391 C8.79391996,2.03357391 9.82900874,1.20312298 10.1257116,0.879260616 L10.1257116,0.879260616 L12.4223498,1.92673302 C12.4838159,2.4170648 12.2821914,2.95405099 12.2821914,3.4239819 C12.2821914,4.19023092 12.5792307,4.88335657 13.0540612,5.3859324 C13.5439168,5.90441126 14.2215221,6.22104975 14.9662484,6.22104975 C15.1008851,6.51473263 15.25,7.34188133 15.25,8.00533082 C15.25,8.66737979 15.1010676,9.49361375 15.0943199,9.53058939 C14.2354924,9.80169918 13.5671599,10.1121377 13.083231,10.6039797 C12.5858984,11.1094446 12.2822113,11.8099862 12.2822113,12.5854135 C12.2822113,13.0633674 12.4859773,13.5981268 12.5031644,13.6416351 L12.5031644,13.6416351 L10.5347562,15.1859987 C9.8023742,14.7872629 8.74070743,13.8890234 7.95899092,13.8890234 C7.23777174,13.8890234 6.20467319,14.6831976 5.82852375,15.113358 L5.82852375,15.113358 L3.57620168,14.0817426 C3.50474061,13.6209845 3.71780868,13.0708966 3.71780868,12.5853924 C3.71780868,11.8193033 3.42075488,11.1262121 2.94586849,10.6236497 C2.45602443,10.1052579 1.77845122,9.7886411 1.03377167,9.7886411 C0.897650311,9.48798028 0.75,8.66482749 0.75,8.0053097 C0.75,7.34441337 0.897848614,6.52032512 0.905715983,6.47853298 C1.76432975,6.20788019 2.43260143,5.89750044 2.91648052,5.40589587 C3.4140514,4.90038092 3.71780868,4.19971123 3.71780868,3.42400299 C3.71780868,2.94206588 3.51060559,2.40259827 3.49603335,2.36594194 L3.49603335,2.36594194 Z" id="路径" fill-rule="nonzero"></path>
<circle id="椭圆形备份" cx="8" cy="8" r="2.45"></circle>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 56备份 2</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-56备份">
<rect id="背景" x="0" y="0" width="16" height="16"></rect>
<g id="项目设置" stroke="#1370FF" stroke-width="1.5">
<path d="M5.58808928,0.759546858 C6.24087167,1.18742985 7.27894484,2.03357391 8.0410091,2.03357391 C8.79391996,2.03357391 9.82900874,1.20312298 10.1257116,0.879260616 L10.1257116,0.879260616 L12.4223498,1.92673302 C12.4838159,2.4170648 12.2821914,2.95405099 12.2821914,3.4239819 C12.2821914,4.19023092 12.5792307,4.88335657 13.0540612,5.3859324 C13.5439168,5.90441126 14.2215221,6.22104975 14.9662484,6.22104975 C15.1008851,6.51473263 15.25,7.34188133 15.25,8.00533082 C15.25,8.66737979 15.1010676,9.49361375 15.0943199,9.53058939 C14.2354924,9.80169918 13.5671599,10.1121377 13.083231,10.6039797 C12.5858984,11.1094446 12.2822113,11.8099862 12.2822113,12.5854135 C12.2822113,13.0633674 12.4859773,13.5981268 12.5031644,13.6416351 L12.5031644,13.6416351 L10.5347562,15.1859987 C9.8023742,14.7872629 8.74070743,13.8890234 7.95899092,13.8890234 C7.23777174,13.8890234 6.20467319,14.6831976 5.82852375,15.113358 L5.82852375,15.113358 L3.57620168,14.0817426 C3.50474061,13.6209845 3.71780868,13.0708966 3.71780868,12.5853924 C3.71780868,11.8193033 3.42075488,11.1262121 2.94586849,10.6236497 C2.45602443,10.1052579 1.77845122,9.7886411 1.03377167,9.7886411 C0.897650311,9.48798028 0.75,8.66482749 0.75,8.0053097 C0.75,7.34441337 0.897848614,6.52032512 0.905715983,6.47853298 C1.76432975,6.20788019 2.43260143,5.89750044 2.91648052,5.40589587 C3.4140514,4.90038092 3.71780868,4.19971123 3.71780868,3.42400299 C3.71780868,2.94206588 3.51060559,2.40259827 3.49603335,2.36594194 L3.49603335,2.36594194 Z" id="路径" fill-rule="nonzero"></path>
<circle id="椭圆形备份" cx="8" cy="8" r="2.45"></circle>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 57</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-57">
<rect id="矩形" x="0" y="0" width="16" height="16"></rect>
<g id="工作台" transform="translate(0.500000, 1.500000)" stroke="#8A9099" stroke-width="1.5">
<rect id="矩形" x="0.75" y="0.75" width="13.5" height="8.5" rx="1"></rect>
<line x1="2.5" y1="12" x2="12.5" y2="12" id="路径-3"></line>
<line x1="11.5" y1="6" x2="6.5" y2="6" id="路径-4备份"></line>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 62</title>
<g id="上线UI" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-62">
<rect id="矩形备份-22" x="0" y="0" width="16" height="16"></rect>
<g id="工作台备份" transform="translate(0.500000, 1.500000)" stroke="#1370FF" stroke-width="1.5">
<rect id="矩形" x="0.75" y="0.75" width="13.5" height="8.5" rx="1"></rect>
<line x1="2.5" y1="12" x2="12.5" y2="12" id="路径-3"></line>
<line x1="11.5" y1="6" x2="6.5" y2="6" id="路径-4备份"></line>
</g>
</g>
</g>
</svg>
\ No newline at end of file
/* 修改滚动条样式 */ /* 修改滚动条样式 */
div::-webkit-scrollbar, div::-webkit-scrollbar,
main::-webkit-scrollbar { main::-webkit-scrollbar {
width: 8px; width: 4px;
height: 5px !important; height: 5px !important;
} }
...@@ -15,11 +15,12 @@ main::-webkit-scrollbar-track { ...@@ -15,11 +15,12 @@ main::-webkit-scrollbar-track {
div::-webkit-scrollbar-thumb, div::-webkit-scrollbar-thumb,
main::-webkit-scrollbar-thumb { main::-webkit-scrollbar-thumb {
background-color: #d8d8d8; background-color: #C2C6CC;
-webkit-border-radius: 4px; -webkit-border-radius: 2px;
-moz-border-radius: 4px; -moz-border-radius: 2px;
border-radius: 4px; border-radius: 2px;
height: 5px !important; height: 5px !important;
width: 4px!important;
} }
body, body,
......
/*
* @Author: 吴永生 15770852798@163.com
* @Date: 2022-08-02 11:43:28
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-08-03 14:07:23
* @FilePath: /bkunyun/src/components/BusinessComponents/SearchInput/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import OutlinedInput, { OutlinedInputProps } from "@mui/material/OutlinedInput"; import OutlinedInput, { OutlinedInputProps } from "@mui/material/OutlinedInput";
import { ThemeProvider, createTheme } from "@mui/material/styles"; import { ThemeProvider, createTheme } from "@mui/material/styles";
import SearchIcon from "@mui/icons-material/Search"; import SearchIcon from "@mui/icons-material/Search";
...@@ -30,6 +38,9 @@ const SearchInput = (props: SearchInputProps) => { ...@@ -30,6 +38,9 @@ const SearchInput = (props: SearchInputProps) => {
height: "32px", height: "32px",
fontSize: "14px", fontSize: "14px",
paddingRight: "8px", paddingRight: "8px",
"& .MuiOutlinedInput-notchedOutline": {
borderColor: '#DDE1E6',
},
":hover": { ":hover": {
"& .MuiOutlinedInput-notchedOutline": { "& .MuiOutlinedInput-notchedOutline": {
borderColor: "#1370ff", borderColor: "#1370ff",
......
...@@ -4,29 +4,42 @@ ...@@ -4,29 +4,42 @@
align-items: center; align-items: center;
border: 1px solid #e6e8eb; border: 1px solid #e6e8eb;
border-radius: 4px; border-radius: 4px;
background-color: #e6e8eb; background-color: #F0F2F5;
cursor: pointer; cursor: pointer;
height: 32px; height: 32px;
box-sizing: border-box; box-sizing: border-box;
padding: 2px; padding: 2px;
} }
.radio { .radio {
position: relative;
min-width: 64px;
height: 28px; height: 28px;
box-sizing: border-box; box-sizing: border-box;
font-size: 14px; font-size: 14px;
color: #565c66; color: #565c66;
border-radius: 4px; border-radius: 2px;
line-height: 20px; line-height: 20px;
padding: 3px 18px; padding: 6px 16px;
background-color: #e6e8eb; /* background-color: #e6e8eb; */
flex: 1; flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
white-space: nowrap; white-space: nowrap;
} }
.radio:not(:last-child)::before {
position: absolute;
width: 1px;
height: 16px;
top: 6px;
right: 0;
content: '';
background-color: #D1D6DE;
}
.radioActive { .radioActive {
color: #1370ff; color: #1370ff;
background-color: #fff; background-color: #fff;
border: 1px solid #e6e8eb; box-shadow: 2px 4px 12px 0px rgba(0,27,63,0.06);
} }
/*
* @Author: 吴永生 15770852798@163.com
* @Date: 2022-07-11 11:56:58
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-08-02 17:40:14
* @FilePath: /bkunyun/src/components/CommonComponents/RadioGroupOfButtonStyle/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
// 按钮样式的单选组 // 按钮样式的单选组
import classnames from "classnames"; import classnames from "classnames";
import style from "./index.module.css"; import style from "./index.module.css";
......
import React, { Fragment, ReactNode } from "react"; import React, { Fragment, ReactNode, useMemo } from "react";
import { Snackbar, Alert, Fade, Grow } from "@mui/material"; import { Snackbar, Alert, Fade, Grow } from "@mui/material";
import useMySnackbar from "./useMySnackbar"; import useMySnackbar from "./useMySnackbar";
import snackbarContext from "./snackbarContext"; import snackbarContext from "./snackbarContext";
import { ThemeProvider, createTheme } from "@mui/material/styles";
type MySnackbarProviderProp = { type MySnackbarProviderProp = {
vertical?: "bottom" | "top"; vertical?: "bottom" | "top";
...@@ -42,7 +43,7 @@ const getTransitionComponent = (transition: "grow" | "fade") => { ...@@ -42,7 +43,7 @@ const getTransitionComponent = (transition: "grow" | "fade") => {
const MySnackbarProvider = ({ const MySnackbarProvider = ({
vertical = "top", vertical = "top",
horizontal = "center", horizontal = "center",
autoHideDuration = 5000, autoHideDuration = 890000,
snackerClasses, snackerClasses,
ClickAwayListenerProps, ClickAwayListenerProps,
ContentProps, ContentProps,
...@@ -73,8 +74,44 @@ const MySnackbarProvider = ({ ...@@ -73,8 +74,44 @@ const MySnackbarProvider = ({
info, info,
close, close,
} = useMySnackbar(); } = useMySnackbar();
// .MuiAlert-filledInfo
const getColorStyle = useMemo(()=>{
if(messageInfo.severity === 'success'){
return '#02AB83'
}
if(messageInfo.severity === 'info'){
return '#1370FF'
}
if(messageInfo.severity === 'warning'){
return '#FFB919'
}
if(messageInfo.severity === 'error'){
return '#FF4E4E'
}
},[messageInfo.severity])
const theme = createTheme({
components: {
MuiAlert: {
styleOverrides: {
root: {
color: getColorStyle,
"& .MuiAlert-icon": {
color: getColorStyle
},
}
},
},
},
});
return ( return (
<Fragment> <Fragment>
<ThemeProvider theme={theme}>
<Snackbar <Snackbar
open={open} open={open}
autoHideDuration={autoHideDuration} autoHideDuration={autoHideDuration}
...@@ -108,6 +145,7 @@ const MySnackbarProvider = ({ ...@@ -108,6 +145,7 @@ const MySnackbarProvider = ({
{messageInfo?.content} {messageInfo?.content}
</Alert> </Alert>
</Snackbar> </Snackbar>
</ThemeProvider>
<snackbarContext.Provider value={{ success, error, warning, info }}> <snackbarContext.Provider value={{ success, error, warning, info }}>
{children} {children}
</snackbarContext.Provider> </snackbarContext.Provider>
......
...@@ -84,13 +84,13 @@ const MyDialog: React.FunctionComponent<IDialogProps> = (props) => { ...@@ -84,13 +84,13 @@ const MyDialog: React.FunctionComponent<IDialogProps> = (props) => {
return footerRender ? ( return footerRender ? (
footerRender() footerRender()
) : ( ) : (
<DialogActions style={{ padding: "0 24px 24px 24px" }}> <DialogActions style={{ padding: "0 24px 16px 24px" }}>
{showCancel ? ( {showCancel ? (
<MyButton <MyButton
text={cancelText || "取消"} text={cancelText || "取消"}
onClick={onClose} onClick={onClose}
variant="outlined" variant="outlined"
size="small" // size="small"
color="secondary" color="secondary"
/> />
) : null} ) : null}
...@@ -99,7 +99,7 @@ const MyDialog: React.FunctionComponent<IDialogProps> = (props) => { ...@@ -99,7 +99,7 @@ const MyDialog: React.FunctionComponent<IDialogProps> = (props) => {
text={okText || "确定"} text={okText || "确定"}
onClick={onConfirm} onClick={onConfirm}
variant="contained" variant="contained"
size="small" // size="small"
disabled={disabledConfirm} disabled={disabledConfirm}
isLoadingButton={true} isLoadingButton={true}
loading={loading} loading={loading}
...@@ -136,10 +136,10 @@ const MyDialog: React.FunctionComponent<IDialogProps> = (props) => { ...@@ -136,10 +136,10 @@ const MyDialog: React.FunctionComponent<IDialogProps> = (props) => {
fontWeight: 600, fontWeight: 600,
}} }}
> >
<span>{title}</span> <span style={{fontSize: 16, lineHeight: '24px', color: '#1E2633'}}>{title}</span>
<CloseIcon <CloseIcon
onClick={onClose} onClick={onClose}
style={{ color: "#C2C6CC", cursor: "pointer" }} sx={{ color: "#C2C6CC", cursor: "pointer", ":hover": { background: "#f0f2f5", borderRadius:'2px' } }}
/> />
</div> </div>
</DialogTitle> </DialogTitle>
......
/* /*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com * @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-07-05 14:00:37 * @Date: 2022-07-05 14:00:37
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com * @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-07-21 17:33:59 * @LastEditTime: 2022-08-03 14:05:58
* @FilePath: /bkunyun/src/components/mui/MyInput.tsx * @FilePath: /bkunyun/src/components/mui/MyInput.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
...@@ -67,6 +67,9 @@ const MyInput = (props: MyInputProps) => { ...@@ -67,6 +67,9 @@ const MyInput = (props: MyInputProps) => {
"&.Mui-focused .MuiOutlinedInput-notchedOutline": { "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
borderWidth: "1px", borderWidth: "1px",
}, },
"& .MuiOutlinedInput-notchedOutline": {
borderColor: '#DDE1E6',
},
":hover": { ":hover": {
"& .MuiOutlinedInput-notchedOutline": error "& .MuiOutlinedInput-notchedOutline": error
? {} ? {}
......
...@@ -91,13 +91,12 @@ const MyPopconfirm = (props: IMyPopconfirmProps) => { ...@@ -91,13 +91,12 @@ const MyPopconfirm = (props: IMyPopconfirmProps) => {
<MyButton <MyButton
text={cancelText} text={cancelText}
variant="outlined" variant="outlined"
size="small"
color="inherit" color="inherit"
onClick={handleCancel} onClick={handleCancel}
style={{ marginRight: "12px" }} style={{ marginRight: "12px" }}
/> />
)} )}
<MyButton text={okText} size="small" onClick={handleOk} /> <MyButton text={okText} onClick={handleOk} />
</Box> </Box>
</Popper> </Popper>
); );
......
...@@ -69,7 +69,7 @@ const Tabs = (props: IProps) => { ...@@ -69,7 +69,7 @@ const Tabs = (props: IProps) => {
tabList, tabList,
defaultValue, defaultValue,
allowNullValue = false, allowNullValue = false,
tabPanelSx = { padding: "20px 0 0 0" }, tabPanelSx = { padding: "24px 0 0 0" },
} = props; } = props;
const [value, setValue] = useState( const [value, setValue] = useState(
defaultValue defaultValue
...@@ -88,14 +88,14 @@ const Tabs = (props: IProps) => { ...@@ -88,14 +88,14 @@ const Tabs = (props: IProps) => {
<Box style={{ display: "flex", alignItems: "center" }}> <Box style={{ display: "flex", alignItems: "center" }}>
{item.icon ? ( {item.icon ? (
<img <img
style={{ width: "14px", marginRight: "10px" }} style={{ width: "16px", marginRight: "8px" }}
src={value === item.value ? item.iconed : item.icon} src={value === item.value ? item.iconed : item.icon}
alt="" alt=""
/> />
) : ( ) : (
"" ""
)} )}
<Typography sx={{ fontSize: "14px", fontWeight: "400" }}> <Typography sx={{ fontSize: "14px", lineHeight: "22px", height: "22px", fontWeight: "400" }}>
{item.label} {item.label}
</Typography> </Typography>
</Box> </Box>
......
...@@ -13,10 +13,26 @@ ...@@ -13,10 +13,26 @@
} }
.logo { .logo {
padding: 0px 25px 0px 20px; padding: 0px 16px 0px 20px;
margin-top: -10px; margin-top: -10px;
} }
.uploadIconBox{
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
margin-right: 16px;
}
.uploadIconBox:hover{
background-color: #f0f2f5;
border-radius: 2px;
cursor: pointer;
}
.topRightBox { .topRightBox {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
......
...@@ -5,6 +5,7 @@ import { observer } from "mobx-react-lite"; ...@@ -5,6 +5,7 @@ import { observer } from "mobx-react-lite";
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
import Avatar from "@mui/material/Avatar"; import Avatar from "@mui/material/Avatar";
import { Box, Menu, MenuItem } from "@mui/material"; import { Box, Menu, MenuItem } from "@mui/material";
import classNames from "classnames";
import uploadIcon from "@/assets/img/uploadIcon.svg"; import uploadIcon from "@/assets/img/uploadIcon.svg";
import globalText from "@/utils/globalText_CN"; import globalText from "@/utils/globalText_CN";
...@@ -20,6 +21,7 @@ import { ...@@ -20,6 +21,7 @@ import {
setFileServerEndPointLocalStorage, setFileServerEndPointLocalStorage,
getFiletokenAccordingToId, getFiletokenAccordingToId,
} from "@/views/Project/project"; } from "@/views/Project/project";
import style from "./index.module.css"; import style from "./index.module.css";
const ConsoleLayout = observer(() => { const ConsoleLayout = observer(() => {
...@@ -92,7 +94,7 @@ const ConsoleLayout = observer(() => { ...@@ -92,7 +94,7 @@ const ConsoleLayout = observer(() => {
<MyButton <MyButton
text={globalText.product} text={globalText.product}
variant={"text"} variant={"text"}
style={{ color: "#565C66" }} style={{ color: "#565C66", paddingLeft: '8px' }}
onClick={handleProductClick} onClick={handleProductClick}
dropValue={productOpen} dropValue={productOpen}
drop={true} drop={true}
...@@ -143,12 +145,14 @@ const ConsoleLayout = observer(() => { ...@@ -143,12 +145,14 @@ const ConsoleLayout = observer(() => {
horizontal: "right", horizontal: "right",
}} }}
> >
<div className={classNames(style.uploadIconBox)}>
<img <img
className={style.topRightItem}
src={uploadIcon} src={uploadIcon}
alt="" alt=""
style={{ verticalAlign: "middle" }} style={{ verticalAlign: "middle" }}
/> />
</div>
</MyPopover> </MyPopover>
<Box className={style.topRightItem}> <Box className={style.topRightItem}>
<Box <Box
......
...@@ -27,6 +27,12 @@ ...@@ -27,6 +27,12 @@
.listItem:hover { .listItem:hover {
background-color: #EEF1F5; background-color: #EEF1F5;
} }
.routerIcon{
vertical-align: middle;
margin-right: 12px;
line-height: 22px;
}
.active { .active {
border-left: 3px solid #1370ff; border-left: 3px solid #1370ff;
color: #1370ff; color: #1370ff;
......
/*
* @Author: 吴永生 15770852798@163.com
* @Date: 2022-08-02 11:43:28
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-08-03 19:05:48
* @FilePath: /bkunyun/src/views/MenuLayout/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { Box, List } from "@mui/material"; import { Box, List } from "@mui/material";
import CurrentProject from "../Project/components/CurrentProject"; import CurrentProject from "../Project/components/CurrentProject";
import React from "react"; import React from "react";
...@@ -21,11 +29,27 @@ const MenuLayout = observer(() => { ...@@ -21,11 +29,27 @@ const MenuLayout = observer(() => {
navigate("/home"); navigate("/home");
} }
const routerIcon = (id: string, isSelect: boolean) => {
try {
const result = require(`../../assets/project/${id}${isSelect ? '_BLUE' : ''}.svg`)
return result || ''
} catch (error) {
console.log(error)
}
}
return ( return (
<Box className={style.container}> <Box className={style.container}>
<Box className={style.aside}> <Box className={style.aside}>
<CurrentProject /> {
<List> pathname.indexOf('userCenter') < 0 && <CurrentProject />
}
<List
sx={{
paddingTop: 0,
paddingBottom: 0,
}}
>
{permissionStore.sidebarRouters.map((item, index) => { {permissionStore.sidebarRouters.map((item, index) => {
if (item.show) { if (item.show) {
return ( return (
...@@ -37,7 +61,8 @@ const MenuLayout = observer(() => { ...@@ -37,7 +61,8 @@ const MenuLayout = observer(() => {
})} })}
onClick={() => item.type === "page" && navigate(item.path)} onClick={() => item.type === "page" && navigate(item.path)}
> >
{item.name} <img className={style.routerIcon} src={routerIcon(item.id || '', `/v3${item.path}` === pathname) || undefined} alt='' />
<span style={{ verticalAlign: 'middle' }}>{item.name}</span>
</li> </li>
); );
} }
......
...@@ -60,7 +60,9 @@ const AddFolder = (props: IAddFolderProps) => { ...@@ -60,7 +60,9 @@ const AddFolder = (props: IAddFolderProps) => {
const handleFileNameChange = (e: any) => { const handleFileNameChange = (e: any) => {
const fileName = e.target.value; const fileName = e.target.value;
if (fileName.length <= 30) {
setFileName(fileName); setFileName(fileName);
}
if (!fileName) { if (!fileName) {
setFileNameCheck({ setFileNameCheck({
error: true, error: true,
...@@ -123,7 +125,7 @@ const AddFolder = (props: IAddFolderProps) => { ...@@ -123,7 +125,7 @@ const AddFolder = (props: IAddFolderProps) => {
helperText={fileNameCheck.help} helperText={fileNameCheck.help}
InputProps={{ InputProps={{
endAdornment: ( endAdornment: (
<InputAdornment position="end"> <InputAdornment position="end" style={{ color: fileName.length >= 30 ? "#d32f2f" : "#C2C6CC" }}>
{fileName.length}/30 {fileName.length}/30
</InputAdornment> </InputAdornment>
), ),
......
...@@ -556,7 +556,10 @@ const ProjectData = observer(() => { ...@@ -556,7 +556,10 @@ const ProjectData = observer(() => {
size="small" size="small"
onClick={handleRefresh} onClick={handleRefresh}
disabled={!isPass("PROJECT_DATA_REFRESH", "USER")} disabled={!isPass("PROJECT_DATA_REFRESH", "USER")}
sx={{ marginLeft: "17px" }} sx={{ marginLeft: "17px", width: '32px', height: '32px', ":hover": {
backgroundColor: "#F0F2F5 ",
borderRadius: 2
} }}
> >
<RefreshIcon sx={{ fontSize: "18px" }} /> <RefreshIcon sx={{ fontSize: "18px" }} />
</IconButton> </IconButton>
......
...@@ -36,11 +36,17 @@ ...@@ -36,11 +36,17 @@
} }
.taskName { .taskName {
min-width: 100px;
font-size: 14px; font-size: 14px;
line-height: 22px;
font-weight: 500; font-weight: 500;
cursor: pointer; cursor: pointer;
} }
.taskName:hover{
color: #1370FF;
}
.taskStatus { .taskStatus {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -59,12 +65,13 @@ ...@@ -59,12 +65,13 @@
.taskCreator { .taskCreator {
font-size: 12px; font-size: 12px;
line-height: 20px;
color: #1E2633; color: #1E2633;
margin-top: 5px; margin-top: 4px;
} }
.taskProgress { .taskProgress {
height: 40px; height: 32px;
margin: 12px 0; margin: 12px 0;
} }
......
.basicInformation { .basicInformation {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 28px 24px 0 24px; margin: 24px 24px 0 24px;
padding-bottom: 20px; padding-bottom: 20px;
border-bottom: 1px solid #F0F2F5; border-bottom: 1px solid #F0F2F5;
} }
...@@ -14,12 +14,13 @@ ...@@ -14,12 +14,13 @@
.titleBox { .titleBox {
display: flex; display: flex;
align-items: center; align-items: flex-end;
} }
.projectName { .projectName {
margin-left: 12px; margin-left: 12px;
font-size: 18px; font-size: 18px;
line-height: 26px;
font-weight: 600; font-weight: 600;
} }
...@@ -39,6 +40,8 @@ ...@@ -39,6 +40,8 @@
} }
.otherInformationBoxRight{ .otherInformationBoxRight{
line-height: 22px;
margin-bottom: 4px;
color: #565C66; color: #565C66;
} }
...@@ -51,15 +54,15 @@ ...@@ -51,15 +54,15 @@
.verticalLine { .verticalLine {
height: 32px; height: 32px;
border: 1px solid #EBEDF0; border-right: 1px solid #EBEDF0;
margin-left: 20px; margin-left: 28px;
margin-right: 20px; margin-right: 28px;
} }
.searchBox { .searchBox {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 28px 24px 0 24px; margin: 24px 24px 0 24px;
} }
.searchLineLeft { .searchLineLeft {
......
...@@ -43,6 +43,7 @@ const ProjectOverview = observer(() => { ...@@ -43,6 +43,7 @@ const ProjectOverview = observer(() => {
setTaskList(result.data.content); setTaskList(result.data.content);
}, },
}); });
useEffect(() => { useEffect(() => {
if (currentProjectStore.currentProjectInfo.id) { if (currentProjectStore.currentProjectInfo.id) {
getOverview({ getOverview({
...@@ -69,6 +70,10 @@ const ProjectOverview = observer(() => { ...@@ -69,6 +70,10 @@ const ProjectOverview = observer(() => {
} }
} }
const handleKeyWordChangeBlur=(e:any)=>{
setJobName(e.target.value);
}
const storageUnitFromB = (b: number) => { const storageUnitFromB = (b: number) => {
if (b <= 0) { if (b <= 0) {
return { data: '0.00', unit: 'KB' }; return { data: '0.00', unit: 'KB' };
...@@ -142,6 +147,7 @@ const ProjectOverview = observer(() => { ...@@ -142,6 +147,7 @@ const ProjectOverview = observer(() => {
</div> </div>
<SearchInput <SearchInput
onKeyUp={handleKeyWordChangeKeyUp} onKeyUp={handleKeyWordChangeKeyUp}
onBlur={handleKeyWordChangeBlur}
sx={{ width: 340 }} sx={{ width: 340 }}
/> />
</div> </div>
......
...@@ -349,8 +349,8 @@ const BaseInfo = observer(() => { ...@@ -349,8 +349,8 @@ const BaseInfo = observer(() => {
[style.projectInfoTextarea]: true, [style.projectInfoTextarea]: true,
})} })}
onChange={descChange} onChange={descChange}
placeholder="项目描述限制100字以内" placeholder="项目描述限制300字以内"
maxLength={100} maxLength={300}
></textarea> ></textarea>
{/* <MyInput {/* <MyInput
value={projectInfo.desc} value={projectInfo.desc}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com * @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-05-31 10:18:13 * @Date: 2022-05-31 10:18:13
* @LastEditors: 吴永生 15770852798@163.com * @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-07-28 18:10:42 * @LastEditTime: 2022-08-03 14:29:19
* @FilePath: /bkunyun/src/views/Project/ProjectSetting/index.tsx * @FilePath: /bkunyun/src/views/Project/ProjectSetting/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
...@@ -146,7 +146,7 @@ const AddMember = observer((props: IProps) => { ...@@ -146,7 +146,7 @@ const AddMember = observer((props: IProps) => {
} }
}); });
} else { } else {
Message.warning("请先选择项目成员!"); Message.info("请先选择项目成员!");
} }
}; };
......
...@@ -100,7 +100,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -100,7 +100,7 @@ const ConfigForm = (props: ConfigFormProps) => {
}; };
const checkName = (name: string = "") => { const checkName = (name: string = "") => {
const reg = new RegExp(/^[a-zA-Z0-9\u4e00-\u9fa5-_]{3,30}$/); const reg = new RegExp(/^[a-zA-Z0-9\u4e00-\u9fa5-_]{3,50}$/);
if (!name) { if (!name) {
setNameHelp({ setNameHelp({
error: true, error: true,
...@@ -117,7 +117,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -117,7 +117,7 @@ const ConfigForm = (props: ConfigFormProps) => {
setNameHelp({ setNameHelp({
error: true, error: true,
helperText: helperText:
"请输入正确任务名称(3~30字符,可包含大小写字母、数字、中文、特殊符号“-”、“_”)", "请输入正确任务名称(3~50字符,可包含大小写字母、数字、中文、特殊符号“-”、“_”)",
}); });
return true; return true;
} }
......
...@@ -63,10 +63,9 @@ const ProjectWorkbench = observer(() => { ...@@ -63,10 +63,9 @@ const ProjectWorkbench = observer(() => {
}, [isPass]); }, [isPass]);
return ( return (
<div style={{ padding: 24 }}> <div style={{ padding:'28px 24px 24px' }}>
<div style={{ display: "flex", alignItems: "center" }}> <div style={{ display: "flex", alignItems: "center" }}>
<img src={projectImg} alt="项目logo" /> <span style={{ fontSize: "18px", lineHeight: "26px", fontWeight: "600", color: "#1E2633" }}>工作台</span>
<span style={{ marginLeft: 12 }}>工作台</span>
</div> </div>
<Box sx={{ width: "100%", typography: "body1" }}> <Box sx={{ width: "100%", typography: "body1" }}>
<Tabs <Tabs
......
.headerBox { /* .headerBox { */
margin-bottom: 20px; /* margin-bottom: 20px; */
} /* } */
.tabHeader { .tabHeader {
display: flex; display: flex;
...@@ -17,11 +17,11 @@ ...@@ -17,11 +17,11 @@
border-top: 1px solid #F0F2F5; border-top: 1px solid #F0F2F5;
overflow: hidden; overflow: hidden;
overflow-y: auto; overflow-y: auto;
height: calc(100vh - 290px); height: calc(100vh - 325px);
} }
.tabBox { .tabBox {
padding: 15px 0px 16px 24px; padding: 16px 0px 16px 24px;
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; width: 100%;
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
.tabBoxInfo { .tabBoxInfo {
width: 24%; width: 24%;
min-width: 280px;
} }
.tabBoxDescInfo { .tabBoxDescInfo {
...@@ -43,13 +44,16 @@ ...@@ -43,13 +44,16 @@
.tabBoxTitle { .tabBoxTitle {
font-size: 14px; font-size: 14px;
line-height: 22px;
font-weight: 600; font-weight: 600;
color: #1E2633; color: #1E2633;
margin-bottom: 10px; margin-bottom: 8px;
} }
.tabBoxDesc { .tabBoxDesc {
font-size: 12px; font-size: 12px;
line-height: 20px;
white-space: nowrap;
font-weight: 400; font-weight: 400;
color: #8A9099; color: #8A9099;
} }
...@@ -65,12 +69,15 @@ ...@@ -65,12 +69,15 @@
display: flex; display: flex;
align-items: center; align-items: center;
width: 10%; width: 10%;
min-width: 105px;
white-space: nowrap;
} }
.tabBoxJobStatus { .tabBoxJobStatus {
display: flex; display: flex;
align-items: center; align-items: center;
width: 46%; width: 46%;
min-width: 180px;
} }
.tabBoxStatusText { .tabBoxStatusText {
......
...@@ -38,6 +38,8 @@ import { observer } from "mobx-react-lite"; ...@@ -38,6 +38,8 @@ import { observer } from "mobx-react-lite";
import usePass from "@/hooks/usePass"; import usePass from "@/hooks/usePass";
import MyProgress from "@/components/mui/MyProgress"; import MyProgress from "@/components/mui/MyProgress";
import SearchInput from "@/components/BusinessComponents/SearchInput"; import SearchInput from "@/components/BusinessComponents/SearchInput";
import MyCircularProgress from "@/components/mui/MyCircularProgress";
import moment from "moment";
import styles from "./index.module.css"; import styles from "./index.module.css";
...@@ -67,6 +69,7 @@ const currencies = [ ...@@ -67,6 +69,7 @@ const currencies = [
let timer: string | number | NodeJS.Timeout | null | undefined = null; let timer: string | number | NodeJS.Timeout | null | undefined = null;
const ProjectMembers = observer(() => { const ProjectMembers = observer(() => {
const { currentProjectStore } = useStores(); const { currentProjectStore } = useStores();
const projectId = toJS(currentProjectStore.currentProjectInfo.id); const projectId = toJS(currentProjectStore.currentProjectInfo.id);
const isPass = usePass(); const isPass = usePass();
const [jobName, setJobName] = useState(""); const [jobName, setJobName] = useState("");
...@@ -76,6 +79,7 @@ const ProjectMembers = observer(() => { ...@@ -76,6 +79,7 @@ const ProjectMembers = observer(() => {
const [size, setSize] = useState(10); const [size, setSize] = useState(10);
const [rowsPerPage, setRowsPerPage] = useState(10); const [rowsPerPage, setRowsPerPage] = useState(10);
const [count, setCount] = useState(0); const [count, setCount] = useState(0);
const [loading,setLoading]=useState(false)
/** 简单弹窗 */ /** 简单弹窗 */
const [jobData, setJobData] = useState(""); const [jobData, setJobData] = useState("");
const [openDialog, setOpenDialog] = useState(false); const [openDialog, setOpenDialog] = useState(false);
...@@ -85,6 +89,7 @@ const ProjectMembers = observer(() => { ...@@ -85,6 +89,7 @@ const ProjectMembers = observer(() => {
onSuccess: (result: any) => { onSuccess: (result: any) => {
setJobList(result.data.content); setJobList(result.data.content);
setCount(result.data.totalElements); setCount(result.data.totalElements);
setLoading(false);
timer && clearTimeout(timer as number); timer && clearTimeout(timer as number);
timer = null; timer = null;
timer = setTimeout(() => { timer = setTimeout(() => {
...@@ -121,7 +126,7 @@ const ProjectMembers = observer(() => { ...@@ -121,7 +126,7 @@ const ProjectMembers = observer(() => {
}, },
}); });
// 删除作业 // 中止作业
const { run: cancelWorkflowJobInfo } = useMyRequest(cancelWorkflowJob, { const { run: cancelWorkflowJobInfo } = useMyRequest(cancelWorkflowJob, {
onSuccess: (result: any) => { onSuccess: (result: any) => {
setOpenDialog(false); setOpenDialog(false);
...@@ -346,13 +351,15 @@ const ProjectMembers = observer(() => { ...@@ -346,13 +351,15 @@ const ProjectMembers = observer(() => {
name: jobName, name: jobName,
state: currency === "ALL" ? "" : currency, state: currency === "ALL" ? "" : currency,
}); });
setLoading(true)
}} }}
> >
<img alt="" src={onload} /> <img alt="" src={onload} />
</Box> </Box>
</Box> </Box>
<Box className={styles.body}> <Box className={styles.body} style={{ position: "relative" }}>
<MyCircularProgress loading={loading} />
{jobList.length === 0 && ( {jobList.length === 0 && (
<Box <Box
sx={{ sx={{
...@@ -382,7 +389,7 @@ const ProjectMembers = observer(() => { ...@@ -382,7 +389,7 @@ const ProjectMembers = observer(() => {
className={styles.tabBoxDesc} className={styles.tabBoxDesc}
style={{ marginRight: "24px" }} style={{ marginRight: "24px" }}
> >
创建时间:{item.createTime} 创建时间:{moment(item.createTime).format("YYYY-MM-DD")}
</div> </div>
<div className={styles.tabBoxDesc}> <div className={styles.tabBoxDesc}>
创建人:{item.creator} 创建人:{item.creator}
...@@ -422,7 +429,8 @@ const ProjectMembers = observer(() => { ...@@ -422,7 +429,8 @@ const ProjectMembers = observer(() => {
{item.state === "RUNNING" && {item.state === "RUNNING" &&
isPass("PROJECT_WORKBENCH_JOBS_STOP", "USER") && ( isPass("PROJECT_WORKBENCH_JOBS_STOP", "USER") && (
<Box className={styles.tabBoxJobOperate}> <Box className={styles.tabBoxJobOperate}>
<img {
currentProjectStore.currentProjectInfo.projectRole === "USER" && (item.creator !== JSON.parse(localStorage.getItem("userInfo") || "{}")?.name) ? "" : <img
alt="" alt=""
src={jobStop} src={jobStop}
style={{ cursor: "pointer" }} style={{ cursor: "pointer" }}
...@@ -434,9 +442,9 @@ const ProjectMembers = observer(() => { ...@@ -434,9 +442,9 @@ const ProjectMembers = observer(() => {
setDialogType("stop"); setDialogType("stop");
}} }}
/> />
}
</Box> </Box>
)} )}
{item.state !== "RUNNING" && {item.state !== "RUNNING" &&
isPass("PROJECT_WORKBENCH_JOBS_DELETE", "MANAGER") && ( isPass("PROJECT_WORKBENCH_JOBS_DELETE", "MANAGER") && (
<Box className={styles.tabBoxJobOperate}> <Box className={styles.tabBoxJobOperate}>
......
...@@ -91,7 +91,7 @@ const AddTemplate = (props: IAddTemplateProps) => { ...@@ -91,7 +91,7 @@ const AddTemplate = (props: IAddTemplateProps) => {
// 添加工作流模板-获取模板列表 // 添加工作流模板-获取模板列表
const { run: getAddTemplateList } = useMyRequest(getAddWorkbenchTemplate, { const { run: getAddTemplateList } = useMyRequest(getAddWorkbenchTemplate, {
onSuccess: (result: any) => { onSuccess: (result: any) => {
setAddTemplateList(result.data); setAddTemplateList(result?.data?.content || []);
// setOpenAddTemplate(true); // setOpenAddTemplate(true);
}, },
}); });
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
.templateBlock { .templateBlock {
height: 194px; height: 194px;
background: #ffffff; background: #ffffff;
box-shadow: 0px 3px 10px 0px rgba(0,24,57,0.0400);
border-radius: 4px; border-radius: 4px;
border: 1px solid #ebedf0; border: 1px solid #ebedf0;
padding: 16px 20px; padding: 16px 20px;
......
import { MenuItem } from "@mui/material"; import { MenuItem } from "@mui/material";
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import { useNavigate } from "react-router-dom";
import MyInput from "@/components/mui/MyInput"; import MyInput from "@/components/mui/MyInput";
import MyDialog from "@/components/mui/MyDialog"; import MyDialog from "@/components/mui/MyDialog";
...@@ -29,6 +30,7 @@ type IAddProjectProps = { ...@@ -29,6 +30,7 @@ type IAddProjectProps = {
const AddProject = (props: IAddProjectProps) => { const AddProject = (props: IAddProjectProps) => {
const { addOpen, setAddOpen } = props; const { addOpen, setAddOpen } = props;
const { currentProjectStore } = useStores(); const { currentProjectStore } = useStores();
const navigate = useNavigate();
const message = useMessage(); const message = useMessage();
const [name, setName] = useState(""); const [name, setName] = useState("");
const [nameCheck, setNameCheck] = useState({ const [nameCheck, setNameCheck] = useState({
...@@ -74,6 +76,7 @@ const AddProject = (props: IAddProjectProps) => { ...@@ -74,6 +76,7 @@ const AddProject = (props: IAddProjectProps) => {
project.filetoken = res; project.filetoken = res;
currentProjectStore.changeProject(project); currentProjectStore.changeProject(project);
}); });
navigate(`/product/cadd/projectOverview`)
} }
}, },
onError: () => { onError: () => {
...@@ -134,18 +137,18 @@ const AddProject = (props: IAddProjectProps) => { ...@@ -134,18 +137,18 @@ const AddProject = (props: IAddProjectProps) => {
const handleDescChange = (e: any) => { const handleDescChange = (e: any) => {
const desc = e.target.value; const desc = e.target.value;
setDesc(desc); setDesc(desc.slice(0,300));
if (desc.length > 100) { // if (desc.length > 300) {
setDescCheck({ // setDescCheck({
error: true, // error: true,
help: "格式不正确,必须在100字符以内", // help: "格式不正确,必须在300字符以内",
}); // });
} else { // } else {
setDescCheck({ // setDescCheck({
error: false, // error: false,
help: "", // help: "",
}); // });
} // }
}; };
const handleSubmit = () => { const handleSubmit = () => {
...@@ -211,7 +214,7 @@ const AddProject = (props: IAddProjectProps) => { ...@@ -211,7 +214,7 @@ const AddProject = (props: IAddProjectProps) => {
id="desc" id="desc"
label="项目描述" label="项目描述"
multiline multiline
rows={4} rows={5}
placeholder="请输入项目描述" placeholder="请输入项目描述"
onChange={handleDescChange} onChange={handleDescChange}
helperText={descCheck.help} helperText={descCheck.help}
...@@ -221,10 +224,10 @@ const AddProject = (props: IAddProjectProps) => { ...@@ -221,10 +224,10 @@ const AddProject = (props: IAddProjectProps) => {
position: "absolute", position: "absolute",
bottom: "7px", bottom: "7px",
right: "12px", right: "12px",
color: "rgba(194, 198, 204, 1)", color: desc.length >= 100 ? "#d32f2f" : "#C2C6CC"
}} }}
> >
{desc.length}/100 {desc.length}/300
</span> </span>
</div> </div>
</div> </div>
......
...@@ -7,10 +7,15 @@ ...@@ -7,10 +7,15 @@
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
} }
.currentProject:hover{
background-color: #EEF1F5;
}
.logo { .logo {
width: 32px; width: 32px;
border-radius: 4px; border-radius: 4px;
background-color: #fff; background-color: #fff;
box-shadow: 2px 2px 8px 0px rgba(0,27,67,0.0600);
margin-right: 12px; margin-right: 12px;
display: block; display: block;
} }
...@@ -26,7 +31,7 @@ ...@@ -26,7 +31,7 @@
.projectName { .projectName {
color: #8a9099; color: #8a9099;
line-height: 20px; line-height: 20px;
font-size: 14px; font-size: 12px;
width: 125px; width: 125px;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
......
.reactFlowBox>div:last-child {
display: none;
}
\ No newline at end of file
...@@ -18,6 +18,8 @@ import FlowNode from "./components/FlowNode"; ...@@ -18,6 +18,8 @@ import FlowNode from "./components/FlowNode";
import { getCustomTemplateParameterCheckResult } from "@/views/WorkFlowEdit/util"; import { getCustomTemplateParameterCheckResult } from "@/views/WorkFlowEdit/util";
import { useMessage } from "@/components/MySnackbar"; import { useMessage } from "@/components/MySnackbar";
import styles from './index.module.css'
/* /*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com * @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-22 10:15:22 * @Date: 2022-06-22 10:15:22
...@@ -528,6 +530,7 @@ const Flow = (props: IProps) => { ...@@ -528,6 +530,7 @@ const Flow = (props: IProps) => {
return ( return (
<ReactFlow <ReactFlow
className={styles.reactFlowBox}
nodes={nodes} nodes={nodes}
edges={edges} edges={edges}
fitView={flowType === "default" ? true : false} fitView={flowType === "default" ? true : false}
......
.projectBox { .projectBox {
width: calc(100vw - 220px);
height: calc(100vh - 57px);
background-color: rgba(0, 0, 0, .5);
/* width: 260px;
height: calc(100vh - 57px); */
/* width: 260px;
height: calc(100vh - 57px);
background-color: #fff;
border-right: 1px solid #ebedf0;
display: flex;
flex-direction: column; */
}
.mainBox{
width: 260px; width: 260px;
height: calc(100vh - 57px); height: calc(100vh - 57px);
background-color: #fff; background-color: #fff;
border-right: 1px solid #ebedf0; border-right: 1px solid #ebedf0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-left: 1px solid #DDE1E6;;
} }
.searchBox { .searchBox {
box-sizing: border-box; box-sizing: border-box;
height: 56px; height: 56px;
......
/*
* @Author: 吴永生 15770852798@163.com
* @Date: 2022-08-02 11:43:28
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-08-02 19:36:32
* @FilePath: /bkunyun/src/views/Project/components/ProjectListPopper/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import smallLogo from "@/assets/project/projectIconSmall.svg"; import smallLogo from "@/assets/project/projectIconSmall.svg";
import style from "./index.module.css"; import style from "./index.module.css";
import { InputBase, IconButton } from "@mui/material"; import { InputBase, IconButton } from "@mui/material";
...@@ -33,6 +41,7 @@ const ProjectListPopper = observer((props: any) => { ...@@ -33,6 +41,7 @@ const ProjectListPopper = observer((props: any) => {
return ( return (
<div className={style.projectBox} onClick={handleProjectBox}> <div className={style.projectBox} onClick={handleProjectBox}>
<div className={style.mainBox}>
<div className={style.searchBox}> <div className={style.searchBox}>
<IconButton <IconButton
type="submit" type="submit"
...@@ -90,6 +99,7 @@ const ProjectListPopper = observer((props: any) => { ...@@ -90,6 +99,7 @@ const ProjectListPopper = observer((props: any) => {
})} })}
</div> </div>
</div> </div>
</div>
); );
}); });
......
...@@ -478,7 +478,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -478,7 +478,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
onChange={(e: any) => onChange={(e: any) =>
handleParameterChange(e, parameter.name || "") handleParameterChange(e, parameter.name || "")
} }
placeholder="请输入" placeholder="可输入默认值"
error={parameter.error || false} error={parameter.error || false}
helperText={parameter.helperText} helperText={parameter.helperText}
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment