You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.4 KiB
138 lines
3.4 KiB
import { parse } from 'url';
|
|
|
|
// mock tableListDataSource
|
|
let tableListDataSource = [];
|
|
for (let i = 0; i < 46; i += 1) {
|
|
tableListDataSource.push({
|
|
key: i,
|
|
disabled: i % 6 === 0,
|
|
href: 'https://ant.design',
|
|
avatar: [
|
|
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
|
|
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
|
|
][i % 2],
|
|
no: `TradeCode ${i}`,
|
|
title: `一个任务名称 ${i}`,
|
|
owner: '曲丽丽',
|
|
description: '这是一段描述',
|
|
callNo: Math.floor(Math.random() * 1000),
|
|
status: Math.floor(Math.random() * 10) % 4,
|
|
updatedAt: new Date(`2017-07-${Math.floor(i / 2) + 1}`),
|
|
createdAt: new Date(`2017-07-${Math.floor(i / 2) + 1}`),
|
|
progress: Math.ceil(Math.random() * 100),
|
|
});
|
|
}
|
|
|
|
export function getRule(req, res, u) {
|
|
let url = u;
|
|
if (!url || Object.prototype.toString.call(url) !== '[object String]') {
|
|
url = req.url; // eslint-disable-line
|
|
}
|
|
|
|
const params = parse(url, true).query;
|
|
|
|
let dataSource = [...tableListDataSource];
|
|
|
|
if (params.sorter) {
|
|
const s = params.sorter.split('_');
|
|
dataSource = dataSource.sort((prev, next) => {
|
|
if (s[1] === 'descend') {
|
|
return next[s[0]] - prev[s[0]];
|
|
}
|
|
return prev[s[0]] - next[s[0]];
|
|
});
|
|
}
|
|
|
|
if (params.status) {
|
|
const status = params.status.split(',');
|
|
let filterDataSource = [];
|
|
status.forEach(s => {
|
|
filterDataSource = filterDataSource.concat(
|
|
[...dataSource].filter(data => parseInt(data.status, 10) === parseInt(s[0], 10))
|
|
);
|
|
});
|
|
dataSource = filterDataSource;
|
|
}
|
|
|
|
if (params.no) {
|
|
dataSource = dataSource.filter(data => data.no.indexOf(params.no) > -1);
|
|
}
|
|
|
|
let pageSize = 10;
|
|
if (params.pageSize) {
|
|
pageSize = params.pageSize * 1;
|
|
}
|
|
|
|
const result = {
|
|
list: dataSource,
|
|
pagination: {
|
|
total: dataSource.length,
|
|
pageSize,
|
|
current: parseInt(params.currentPage, 10) || 1,
|
|
},
|
|
};
|
|
|
|
if (res && res.json) {
|
|
res.json(result);
|
|
} else {
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export function postRule(req, res, u, b) {
|
|
let url = u;
|
|
if (!url || Object.prototype.toString.call(url) !== '[object String]') {
|
|
url = req.url; // eslint-disable-line
|
|
}
|
|
|
|
const body = (b && b.body) || req.body;
|
|
const { method, no, description } = body;
|
|
|
|
switch (method) {
|
|
/* eslint no-case-declarations:0 */
|
|
case 'delete':
|
|
tableListDataSource = tableListDataSource.filter(item => no.indexOf(item.no) === -1);
|
|
break;
|
|
case 'post':
|
|
const i = Math.ceil(Math.random() * 10000);
|
|
tableListDataSource.unshift({
|
|
key: i,
|
|
href: 'https://ant.design',
|
|
avatar: [
|
|
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
|
|
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
|
|
][i % 2],
|
|
no: `TradeCode ${i}`,
|
|
title: `一个任务名称 ${i}`,
|
|
owner: '曲丽丽',
|
|
description,
|
|
callNo: Math.floor(Math.random() * 1000),
|
|
status: Math.floor(Math.random() * 10) % 2,
|
|
updatedAt: new Date(),
|
|
createdAt: new Date(),
|
|
progress: Math.ceil(Math.random() * 100),
|
|
});
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
const result = {
|
|
list: tableListDataSource,
|
|
pagination: {
|
|
total: tableListDataSource.length,
|
|
},
|
|
};
|
|
|
|
if (res && res.json) {
|
|
res.json(result);
|
|
} else {
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export default {
|
|
getRule,
|
|
postRule,
|
|
};
|