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,
 | 
						|
};
 |