132 lines
3.5 KiB
Java
132 lines
3.5 KiB
Java
|
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],
|
||
|
name: `TradeCode ${i}`,
|
||
|
title: `一个任务名称 ${i}`,
|
||
|
owner: '曲丽丽',
|
||
|
desc: '这是一段描述',
|
||
|
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),
|
||
|
});
|
||
|
}
|
||
|
|
||
|
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.name) {
|
||
|
dataSource = dataSource.filter(data => data.name.indexOf(params.name) > -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,
|
||
|
},
|
||
|
};
|
||
|
|
||
|
return res.json(result);
|
||
|
}
|
||
|
|
||
|
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, name, desc, key } = body;
|
||
|
|
||
|
switch (method) {
|
||
|
/* eslint no-case-declarations:0 */
|
||
|
case 'delete':
|
||
|
tableListDataSource = tableListDataSource.filter(item => key.indexOf(item.key) === -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],
|
||
|
name: `TradeCode ${i}`,
|
||
|
title: `一个任务名称 ${i}`,
|
||
|
owner: '曲丽丽',
|
||
|
desc,
|
||
|
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;
|
||
|
case 'update':
|
||
|
tableListDataSource = tableListDataSource.map(item => {
|
||
|
if (item.key === key) {
|
||
|
Object.assign(item, { desc, name });
|
||
|
return item;
|
||
|
}
|
||
|
return item;
|
||
|
});
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return getRule(req, res, u);
|
||
|
}
|
||
|
|
||
|
export default {
|
||
|
'GET /api/rule': getRule,
|
||
|
'POST /api/rule': postRule,
|
||
|
};
|