修复定时任务状态筛选

This commit is contained in:
whyour 2022-09-07 11:30:11 +08:00
parent bd28682769
commit dc27856441
2 changed files with 43 additions and 14 deletions

View File

@ -217,6 +217,22 @@ export default class CronService {
} }
} }
private formatFilterQuery(query: any, filterQuery: any) {
if (filterQuery) {
if (!query[Op.and]) {
query[Op.and] = [];
}
const filterKeys: any = Object.keys(filterQuery);
for (const key of filterKeys) {
let q: any = {};
if (filterKeys[key]) {
q[key] = filterKeys[key];
}
query[Op.and].push(q);
}
}
}
private formatViewSort(order: string[][], viewQuery: any) { private formatViewSort(order: string[][], viewQuery: any) {
if (viewQuery.sorts && viewQuery.sorts.length > 0) { if (viewQuery.sorts && viewQuery.sorts.length > 0) {
for (const { property, type } of viewQuery.sorts) { for (const { property, type } of viewQuery.sorts) {
@ -229,16 +245,16 @@ export default class CronService {
searchValue: string; searchValue: string;
page: string; page: string;
size: string; size: string;
sortField: string; sorter: string;
sortType: string; filters: string;
queryString: string; queryString: string;
}): Promise<{ data: Crontab[]; total: number }> { }): Promise<{ data: Crontab[]; total: number }> {
const searchText = params?.searchValue; const searchText = params?.searchValue;
const page = Number(params?.page || '0'); const page = Number(params?.page || '0');
const size = Number(params?.size || '0'); const size = Number(params?.size || '0');
const sortField = params?.sortField || '';
const sortType = params?.sortType || '';
const viewQuery = JSON.parse(params?.queryString || '{}'); const viewQuery = JSON.parse(params?.queryString || '{}');
const filterQuery = JSON.parse(params?.filters || '{}');
const sorterQuery = JSON.parse(params?.sorter || '{}');
let query: any = {}; let query: any = {};
let order = [ let order = [
@ -250,10 +266,14 @@ export default class CronService {
this.formatViewQuery(query, viewQuery); this.formatViewQuery(query, viewQuery);
this.formatSearchText(query, searchText); this.formatSearchText(query, searchText);
this.formatFilterQuery(query, filterQuery);
this.formatViewSort(order, viewQuery); this.formatViewSort(order, viewQuery);
if (sortType && sortField) { if (sorterQuery) {
order.unshift([sortField, sortType]); const { field, type } = sorterQuery;
if (field && type) {
order.unshift([field, type]);
}
} }
let condition: any = { let condition: any = {
where: query, where: query,

View File

@ -181,6 +181,8 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
{ {
title: '最后运行时间', title: '最后运行时间',
align: 'center' as const, align: 'center' as const,
dataIndex: 'last_execution_time',
key: 'last_execution_time',
width: 150, width: 150,
sorter: { sorter: {
compare: (a: any, b: any) => { compare: (a: any, b: any) => {
@ -210,6 +212,8 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
title: '最后运行时长', title: '最后运行时长',
align: 'center' as const, align: 'center' as const,
width: 120, width: 120,
dataIndex: 'last_running_time',
key: 'last_running_time',
sorter: { sorter: {
compare: (a: any, b: any) => { compare: (a: any, b: any) => {
return a.last_running_time - b.last_running_time; return a.last_running_time - b.last_running_time;
@ -366,6 +370,7 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
page: number; page: number;
size: number; size: number;
sorter: any; sorter: any;
filters: any;
}>({} as any); }>({} as any);
const [viewConf, setViewConf] = useState<any>(); const [viewConf, setViewConf] = useState<any>();
const [tableScrollHeight, setTableScrollHeight] = useState<number>(); const [tableScrollHeight, setTableScrollHeight] = useState<number>();
@ -388,9 +393,13 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
cmd[1] = cmd[1].replace('/ql/data/scripts/', ''); cmd[1] = cmd[1].replace('/ql/data/scripts/', '');
} }
let [p, s] = cmd[1].split('/'); let p: string, s: string;
if (!s) { let index = cmd[1].lastIndexOf('/');
s = p; if (index >= 0) {
s = cmd[1].slice(index + 1);
p = cmd[1].slice(0, index);
} else {
s = cmd[1];
p = ''; p = '';
} }
history.push(`/script?p=${p}&s=${s}`); history.push(`/script?p=${p}&s=${s}`);
@ -401,11 +410,10 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
const getCrons = () => { const getCrons = () => {
setLoading(true); setLoading(true);
const { page, size, sorter } = pageConf; const { page, size, sorter, filters } = pageConf;
let url = `${config.apiPrefix}crons?searchValue=${searchText}&page=${page}&size=${size}`; let url = `${config.apiPrefix}crons?searchValue=${searchText}&page=${page}&size=${size}&filters=${JSON.stringify(filters)}`;
if (sorter && sorter.field) { if (sorter && sorter.field) {
url += `&sortField=${sorter.field}&sortType=${sorter.order === 'ascend' ? 'ASC' : 'DESC' url += `&sorter=${JSON.stringify({ field: sorter.field, type: sorter.order === 'ascend' ? 'ASC' : 'DESC' })}`;
}`;
} }
if (viewConf) { if (viewConf) {
url += `&queryString=${JSON.stringify({ url += `&queryString=${JSON.stringify({
@ -820,7 +828,7 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
sorter: SorterResult<any> | SorterResult<any>[], sorter: SorterResult<any> | SorterResult<any>[],
) => { ) => {
const { current, pageSize } = pagination; const { current, pageSize } = pagination;
setPageConf({ page: current as number, size: pageSize as number, sorter }); setPageConf({ page: current as number, size: pageSize as number, sorter, filters });
localStorage.setItem('pageSize', String(pageSize)); localStorage.setItem('pageSize', String(pageSize));
}; };
@ -857,6 +865,7 @@ const Crontab = ({ headerStyle, isPhone, theme }: any) => {
page: 1, page: 1,
size: parseInt(localStorage.getItem('pageSize') || '20'), size: parseInt(localStorage.getItem('pageSize') || '20'),
sorter: {}, sorter: {},
filters: {}
}); });
setTimeout(() => { setTimeout(() => {
setTableScrollHeight(getTableScroll()); setTableScrollHeight(getTableScroll());