mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-23 06:46:09 +08:00
修复脚本管理删除
This commit is contained in:
parent
dfc706e16d
commit
ba43882c0b
|
@ -1,5 +1,15 @@
|
|||
import { useState, useEffect, useCallback, Key, useRef } from 'react';
|
||||
import { TreeSelect, Tree, Input, Empty, Button, message, Modal, Tooltip, Typography } from 'antd';
|
||||
import {
|
||||
TreeSelect,
|
||||
Tree,
|
||||
Input,
|
||||
Empty,
|
||||
Button,
|
||||
message,
|
||||
Modal,
|
||||
Tooltip,
|
||||
Typography,
|
||||
} from 'antd';
|
||||
import config from '@/utils/config';
|
||||
import { PageContainer } from '@ant-design/pro-layout';
|
||||
import Editor from '@monaco-editor/react';
|
||||
|
@ -45,9 +55,8 @@ function getFilterData(keyword: string, data: any) {
|
|||
|
||||
const Log = () => {
|
||||
const { headerStyle, isPhone, theme } = useOutletContext<SharedContext>();
|
||||
const [title, setTitle] = useState('请选择日志文件');
|
||||
const [value, setValue] = useState('请选择日志文件');
|
||||
const [select, setSelect] = useState<any>();
|
||||
const [select, setSelect] = useState<string>('');
|
||||
const [data, setData] = useState<any[]>([]);
|
||||
const [filterData, setFilterData] = useState<any[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
@ -81,18 +90,18 @@ const Log = () => {
|
|||
};
|
||||
|
||||
const onSelect = (value: any, node: any) => {
|
||||
setCurrentNode(node);
|
||||
setSelect(value);
|
||||
|
||||
if (node.key === select || !value) {
|
||||
return;
|
||||
}
|
||||
setCurrentNode(node);
|
||||
setSelect(value);
|
||||
setTitle(node.key);
|
||||
|
||||
if (node.type === 'directory') {
|
||||
setValue('请选择日志文件');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
setValue('加载中...');
|
||||
getLog(node);
|
||||
};
|
||||
|
@ -131,7 +140,8 @@ const Log = () => {
|
|||
<Text style={{ wordBreak: 'break-all' }} type="warning">
|
||||
{select}
|
||||
</Text>
|
||||
文件{currentNode.type === 'directory' ? '夹下所以日志':''},删除后不可恢复
|
||||
文件{currentNode.type === 'directory' ? '夹下所以日志' : ''}
|
||||
,删除后不可恢复
|
||||
</>
|
||||
),
|
||||
onOk() {
|
||||
|
@ -140,7 +150,7 @@ const Log = () => {
|
|||
data: {
|
||||
filename: currentNode.title,
|
||||
path: currentNode.parent || '',
|
||||
type: currentNode.type
|
||||
type: currentNode.type,
|
||||
},
|
||||
})
|
||||
.then(({ code }) => {
|
||||
|
@ -148,7 +158,10 @@ const Log = () => {
|
|||
message.success(`删除成功`);
|
||||
let newData = [...data];
|
||||
if (currentNode.parent) {
|
||||
newData = depthFirstSearch(newData, (c) => c.key === currentNode.key);
|
||||
newData = depthFirstSearch(
|
||||
newData,
|
||||
(c) => c.key === currentNode.key,
|
||||
);
|
||||
} else {
|
||||
const index = newData.findIndex(
|
||||
(x) => x.key === currentNode.key,
|
||||
|
@ -158,6 +171,7 @@ const Log = () => {
|
|||
}
|
||||
}
|
||||
setData(newData);
|
||||
initState();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -167,6 +181,12 @@ const Log = () => {
|
|||
});
|
||||
};
|
||||
|
||||
const initState = () => {
|
||||
setSelect('');
|
||||
setCurrentNode(null);
|
||||
setValue('请选择脚本文件');
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const word = searchValue || '';
|
||||
const { tree } = getFilterData(word.toLocaleLowerCase(), data);
|
||||
|
@ -183,30 +203,32 @@ const Log = () => {
|
|||
return (
|
||||
<PageContainer
|
||||
className="ql-container-wrapper log-wrapper"
|
||||
title={title}
|
||||
title={select}
|
||||
loading={loading}
|
||||
extra={
|
||||
isPhone ? [
|
||||
<TreeSelect
|
||||
className="log-select"
|
||||
value={select}
|
||||
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
||||
treeData={data}
|
||||
placeholder="请选择日志"
|
||||
fieldNames={{ value: 'key', label: 'title' }}
|
||||
showSearch
|
||||
onSelect={onSelect}
|
||||
/>,
|
||||
] : [
|
||||
<Tooltip title="删除">
|
||||
<Button
|
||||
type="primary"
|
||||
disabled={!select}
|
||||
onClick={deleteFile}
|
||||
icon={<DeleteOutlined />}
|
||||
/>
|
||||
</Tooltip>,
|
||||
]
|
||||
isPhone
|
||||
? [
|
||||
<TreeSelect
|
||||
className="log-select"
|
||||
value={select}
|
||||
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
||||
treeData={data}
|
||||
placeholder="请选择日志"
|
||||
fieldNames={{ value: 'key', label: 'title' }}
|
||||
showSearch
|
||||
onSelect={onSelect}
|
||||
/>,
|
||||
]
|
||||
: [
|
||||
<Tooltip title="删除">
|
||||
<Button
|
||||
type="primary"
|
||||
disabled={!select}
|
||||
onClick={deleteFile}
|
||||
icon={<DeleteOutlined />}
|
||||
/>
|
||||
</Tooltip>,
|
||||
]
|
||||
}
|
||||
header={{
|
||||
style: headerStyle,
|
||||
|
@ -282,7 +304,7 @@ const Log = () => {
|
|||
onBeforeChange={(editor, data, value) => {
|
||||
setValue(value);
|
||||
}}
|
||||
onChange={(editor, data, value) => { }}
|
||||
onChange={(editor, data, value) => {}}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
@ -78,9 +78,8 @@ const LangMap: any = {
|
|||
const Script = () => {
|
||||
const { headerStyle, isPhone, theme, socketMessage } =
|
||||
useOutletContext<SharedContext>();
|
||||
const [title, setTitle] = useState('请选择脚本文件');
|
||||
const [value, setValue] = useState('请选择脚本文件');
|
||||
const [select, setSelect] = useState<any>();
|
||||
const [select, setSelect] = useState<string>('');
|
||||
const [data, setData] = useState<any[]>([]);
|
||||
const [filterData, setFilterData] = useState<any[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
@ -136,12 +135,13 @@ const Script = () => {
|
|||
};
|
||||
|
||||
const onSelect = (value: any, node: any) => {
|
||||
setSelect(node.key);
|
||||
setCurrentNode(node);
|
||||
|
||||
if (node.key === select || !value) {
|
||||
return;
|
||||
}
|
||||
setSelect(node.key);
|
||||
setTitle(node.key);
|
||||
setCurrentNode(node);
|
||||
|
||||
if (node.type === 'directory') {
|
||||
setValue('请选择脚本文件');
|
||||
return;
|
||||
|
@ -266,7 +266,8 @@ const Script = () => {
|
|||
<Text style={{ wordBreak: 'break-all' }} type="warning">
|
||||
{select}
|
||||
</Text>
|
||||
文件{currentNode.type === 'directory' ? '夹及其子文件':''},删除后不可恢复
|
||||
文件{currentNode.type === 'directory' ? '夹及其子文件' : ''}
|
||||
,删除后不可恢复
|
||||
</>
|
||||
),
|
||||
onOk() {
|
||||
|
@ -275,7 +276,7 @@ const Script = () => {
|
|||
data: {
|
||||
filename: currentNode.title,
|
||||
path: currentNode.parent || '',
|
||||
type: currentNode.type
|
||||
type: currentNode.type,
|
||||
},
|
||||
})
|
||||
.then(({ code }) => {
|
||||
|
@ -283,7 +284,10 @@ const Script = () => {
|
|||
message.success(`删除成功`);
|
||||
let newData = [...data];
|
||||
if (currentNode.parent) {
|
||||
newData = depthFirstSearch(newData, (c) => c.key === currentNode.key);
|
||||
newData = depthFirstSearch(
|
||||
newData,
|
||||
(c) => c.key === currentNode.key,
|
||||
);
|
||||
} else {
|
||||
const index = newData.findIndex(
|
||||
(x) => x.key === currentNode.key,
|
||||
|
@ -293,6 +297,7 @@ const Script = () => {
|
|||
}
|
||||
}
|
||||
setData(newData);
|
||||
initState();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -356,6 +361,12 @@ const Script = () => {
|
|||
});
|
||||
};
|
||||
|
||||
const initState = () => {
|
||||
setSelect('');
|
||||
setCurrentNode(null);
|
||||
setValue('请选择脚本文件');
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const word = searchValue || '';
|
||||
const { tree } = getFilterData(word.toLocaleLowerCase(), data);
|
||||
|
@ -436,7 +447,7 @@ const Script = () => {
|
|||
return (
|
||||
<PageContainer
|
||||
className="ql-container-wrapper log-wrapper"
|
||||
title={title}
|
||||
title={select}
|
||||
loading={loading}
|
||||
extra={
|
||||
isPhone
|
||||
|
|
Loading…
Reference in New Issue
Block a user