Skip to content

Commit 5b3f7c4

Browse files
committed
feat: 新增任务列表-批量功能
1 parent 8113b39 commit 5b3f7c4

File tree

5 files changed

+60
-25
lines changed

5 files changed

+60
-25
lines changed

.env.development

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
VITE_BASE_URL = "http://192.168.3.3:8082/"
1+
# 高鹏 本地
2+
# VITE_BASE_URL = "http://192.168.3.3:8082/"
23

3-
# "http://legion-4g.yaklang.com:8080/pre/"
4-
# "http://192.168.3.3/"
4+
# 秦晨凯 本地
5+
VITE_BASE_URL = "http://192.168.3.179:8082/"
6+
7+
# 线上 地址
8+
# "http://legion-4g.yaklang.com:8080/pre/"

src/apis/task/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,15 @@ const postStorageTaskScript = (
180180
data,
181181
);
182182

183+
// 批量删除任务 /api
184+
const deleteScriptTask = (data: {
185+
ids: number[];
186+
}): Promise<ResponseData<boolean>> =>
187+
axios.post<never, ResponseData<boolean>>(
188+
'/task/start/batch-invoking-script-task/delete',
189+
data,
190+
);
191+
183192
export {
184193
getScriptTaskGroup,
185194
postTaskGrounp,
@@ -198,4 +207,5 @@ export {
198207
postEditScriptTask,
199208
getRunScriptTask,
200209
postStorageTaskScript,
210+
deleteScriptTask,
201211
};

src/compoments/WizardTable/index.tsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ const WizardTable = <T extends AnyObject = AnyObject>(
4444
const { runAsync } = useRequest(
4545
async (requests, reset?: boolean, arg?: any) => {
4646
dispatch({ loading: true });
47+
console.log(dataSource, page, 'data');
4748
try {
4849
if (!state.loading) {
4950
const data = await requests(
@@ -276,18 +277,21 @@ const WizardTable = <T extends AnyObject = AnyObject>(
276277
// 删除
277278
.with({ operate: 'delete' }, ({ oldObj }) => {
278279
if (args.operate === 'delete' && oldObj) {
279-
// 查找满足部分匹配条件的对象索引
280-
const index = dataSource?.findIndex((item) =>
281-
Object.entries(oldObj).every(
282-
([key, value]) => item[key] === value,
283-
),
280+
// 过滤掉满足 oldObj 条件的对象
281+
const tragetDataSource = dataSource?.filter((item) =>
282+
Object.entries(oldObj).some(([key, value]) => {
283+
if (Array.isArray(value)) {
284+
// 如果值是数组,检查 item[key] 是否包含在数组中
285+
return !value.includes(item[key]);
286+
} else {
287+
// 如果是其他类型,直接检查是否不匹配
288+
return item[key] !== value;
289+
}
290+
}),
284291
);
285292

286-
// 如果找到符合条件的对象,删除它
287-
if (index !== -1) {
288-
const tragetDataSource = dataSource?.filter(
289-
(_, idx) => idx !== index,
290-
);
293+
if (tragetDataSource?.length !== dataSource?.length) {
294+
// 更新数据源
291295
dispatch({
292296
dataSource: tragetDataSource,
293297
});

src/pages/TaskPageList/TaskPageList.tsx

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { useRef, type FC } from 'react';
2-
import { Button, Radio, Spin } from 'antd';
2+
import { Button, message, Radio, Spin } from 'antd';
33

44
import { WizardTable } from '@/compoments';
5-
import { useRequest, useSafeState } from 'ahooks';
5+
import { useRequest, useSafeState, useUpdateEffect } from 'ahooks';
66
import {
77
getTaskList,
88
getScriptTaskGroup,
99
getAnalysisScript,
10+
deleteScriptTask,
1011
} from '@/apis/task';
1112
import { PlusOutlined } from '@ant-design/icons';
1213

@@ -40,6 +41,24 @@ const TaskPageList: FC = () => {
4041
{},
4142
);
4243

44+
const { loading, run } = useRequest(
45+
async () => {
46+
await deleteScriptTask({
47+
ids: deleteValues?.task_name ?? [],
48+
});
49+
},
50+
{
51+
manual: true,
52+
onSuccess: async () => {
53+
page.localRefrech({
54+
operate: 'delete',
55+
oldObj: { id: deleteValues?.task_name },
56+
});
57+
message.success('删除成功');
58+
},
59+
},
60+
);
61+
4362
// 获取项目组请求
4463
const { loading: taskGrounpLoading, refreshAsync } = useRequest(
4564
getScriptTaskGroup,
@@ -149,6 +168,10 @@ const TaskPageList: FC = () => {
149168
await scriptRun();
150169
};
151170

171+
useUpdateEffect(() => {
172+
page.onLoad({ task_groups: taskGroupKey });
173+
}, [taskGroupKey]);
174+
152175
return (
153176
<div className="flex align-start h-full">
154177
<div
@@ -178,7 +201,6 @@ const TaskPageList: FC = () => {
178201
siderContextList={siderContextList}
179202
setSiderContextList={setSiderContextList}
180203
refreshAsync={refreshAsync}
181-
onload={page.onLoad}
182204
taskGroupKey={taskGroupKey}
183205
setTaskGroupKey={setTaskGroupKey}
184206
/>
@@ -220,12 +242,10 @@ const TaskPageList: FC = () => {
220242
? false
221243
: true
222244
}
223-
onClick={() =>
224-
alert(
225-
'id: ' +
226-
deleteValues?.task_name?.join(),
227-
)
228-
}
245+
onClick={async () => {
246+
run();
247+
}}
248+
loading={loading}
229249
>
230250
批量删除
231251
</Button>

src/pages/TaskPageList/compoment/ListSiderContext.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ interface TListSiderContext {
2222
React.SetStateAction<TListSiderContext['siderContextList']>
2323
>;
2424
refreshAsync: () => Promise<any>;
25-
onload: (agrs: any) => void;
2625
taskGroupKey: string;
2726
setTaskGroupKey: Dispatch<React.SetStateAction<string>>;
2827
}
@@ -33,7 +32,6 @@ const ListSiderContext: FC<TListSiderContext> = ({
3332
siderContextList,
3433
setSiderContextList,
3534
refreshAsync,
36-
onload,
3735
taskGroupKey,
3836
setTaskGroupKey,
3937
}) => {
@@ -202,7 +200,6 @@ const ListSiderContext: FC<TListSiderContext> = ({
202200
className={`${styles['tools-list-item']} ${taskGroupKey === item.name ? styles['tools-list-click'] : null}`}
203201
key={item.name + key}
204202
onClick={() => {
205-
onload({ task_groups: [item.name] });
206203
setTaskGroupKey(item.name);
207204
}}
208205
>

0 commit comments

Comments
 (0)