123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- import { MockRequest, MockStatusError } from '@delon/mock';
- import { deepCopy } from '@delon/util';
- import { Random } from 'mockjs';
- import { genMp } from './utils';
- interface FileItem {
- id?: number;
- parent_id?: number;
- type?: 'folder' | 'file';
- title?: string;
- mp?: string;
- ext?: string;
- size?: number;
- width?: number;
- height?: number;
- created?: Date;
- }
- let point = 1;
- let DATA: FileItem[] = [];
- DATA = DATA.concat(...genFolds(0, 3), ...genFiles(1, 6), ...genFiles(2, 3), ...genFiles(0, 1, 'zip'), ...genFiles(0, 10));
- function genFolds(parent_id: number, count: number): FileItem[] {
- return new Array(count).fill({}).map(() => {
- return {
- id: point++,
- parent_id,
- type: 'folder',
- ext: 'folder',
- title: Random.ctitle(3, 5),
- created: new Date()
- } as FileItem;
- });
- }
- function genFiles(parent_id: number, count: number, ext: string = 'png'): FileItem[] {
- return new Array(count).fill({}).map(() => {
- return {
- id: point++,
- parent_id,
- type: 'file',
- title: `${Random.ctitle(3, 5)}.${ext}`,
- mp: genMp(),
- is_img: ext === 'png',
- ext,
- size: Random.natural(10, 10000),
- width: Random.natural(100, 1000),
- height: Random.natural(100, 1000),
- created: new Date()
- } as FileItem;
- });
- }
- function get(params: any): any {
- let ret = deepCopy(DATA) as FileItem[];
- const parent_id = +(params.parent_id || '0');
- ret = ret.filter(data => data.parent_id === parent_id);
- if (params.type) {
- ret = ret.filter(data => data.type!.indexOf(params.type) > -1);
- }
- if (params.q) {
- ret = ret.filter(data => data.title!.indexOf(params.q) > -1);
- }
- return ret;
- }
- function getIdx(id: number): number {
- id = +id;
- const idx = DATA.findIndex(w => w.id === id);
- if (idx === -1) {
- throw new MockStatusError(404);
- }
- return idx;
- }
- export const FILES = {
- '/file/folder': () => deepCopy(DATA).filter((w: any) => w.type === 'folder'),
- '/file': (req: MockRequest) => {
- const pi = +(req.queryString.pi || 1);
- const ps = +(req.queryString.ps || 10);
- const data = get(req.queryString);
- return {
- total: data.length,
- list: data.slice((pi - 1) * ps, pi * ps)
- };
- },
- 'POST /file': (req: MockRequest) => {
- const file = req.body.get('file') as File;
- const parent_id = +req.body.get('parent_id');
- const item = Object.assign(genFiles(req.body.parent_id, 1)[0], {
- parent_id,
- title: file.name,
- size: file.size
- });
- DATA.push(item);
- return { msg: 'ok', item };
- },
- '/file/:id': (req: MockRequest) => {
- const idx = getIdx(req.params.id || 0);
- const item = { ...DATA[idx], ...req.body };
- return item;
- },
- 'POST /file/rename': (req: MockRequest) => {
- const idx = getIdx(req.body.id || 0);
- DATA[idx].title = req.body.title;
- return { msg: 'ok', item: DATA[idx] };
- },
- 'POST /file/move': (req: MockRequest) => {
- const idx = getIdx(req.body.id || 0);
- DATA[idx].parent_id = req.body.moveId;
- return { msg: 'ok', item: DATA[idx] };
- },
- 'POST /file/copy/:id': (req: MockRequest) => {
- const idx = getIdx(req.params.id || 0);
- const item = { ...DATA[idx], id: point++ };
- item.title += ' - Copy';
- DATA.push(item);
- return { msg: 'ok', item };
- },
- 'DELETE /file/:id': (req: MockRequest) => {
- const idx = getIdx(req.params.id || 0);
- DATA.splice(idx, 1);
- return { msg: 'ok' };
- }
- };
|