Ant Design Pro 使用点点滴滴


阿里粑粑开源的管理框架Ant Design Pro使用记录之mock。

简书地址

1、有用的Mock

antd pro在本地开发环境下start时就提供了mock环境了,在根目录的mock里可以定义自己需要mock的方法和出入参数,非常的方便。

2019-06-03补充:
在我的尝试之前推荐下json-server,我下面没有使用,但是在别的地方用过,确实还是很方便的。

接下来介绍下我怎么之前怎么用的:

import Mock from 'mockjs';

const { Random } = Mock;

const userListLength = Random.integer(10, 100);
const userList = [];
// 生成表格mock数据
for (let i = 0; i < userListLength; i += 1) &#123;
  userList.push(&#123;
    id: i,
    love: Math.random(0, 1) > 0.5,
    taxNo: Random.integer(4e14, 5e14),
    taxtype: i % 3 === 0 ? 'small' : i % 2 === 0 ? 'personal' : 'normal',
    name: `深圳市丝悦化妆品有限公司$&#123;i + 1&#125;`,
    no: i % 2 === 0 ? `B$&#123;i&#125;` : `T$&#123;i&#125;`,
    taxZone: Math.random(0, 1) > 0.5 ? '广东' : '深圳',
    key: Math.random(0, 1) > 0.5,
    sysVerify: Math.random(0, 1) > 0.5,
    taxManager: 'lane',
    accountManager: 'lane',
    date: Random.datetime('yyyy-MM-dd HH:mm:ss'),
  &#125;)
&#125;

export default &#123;
  [`POST /api/biz/md/bizMdClient/search`](req, res, u, b) &#123; // 分页查询处理
    const body = (b && b.body) || req.body;
    const &#123; skip, limit &#125; = body;
    const start = skip * limit; // 数据开始索引
    const end = start + (limit * 1); // 数据结束索引
    const dataSource = userList.slice(start, end); // 要返回的数据
    const result = &#123;
      code: 200,
      data: dataSource,
      // 分页信息
      pageinfo: &#123;
        "total": userList.length,
        "pageindex": skip,
        "pagesize": limit,
      &#125;
    &#125;;
    if (res && res.json) &#123;
      res.json(result);
    &#125; else &#123;
      return result;
    &#125;
  &#125;,
  [`POST /api/biz/md/bizMdClient/love`](req, res) &#123;
    const &#123; client &#125; = req.body
    for (let i = 0, length = userList.length; i < length; i += 1) &#123;
      if (client.id === userList[i].id) &#123;
        userList[i].love = !userList[i].love;
        break;
      &#125;
    &#125;
    res.send(&#123; code: 200 &#125;).end()
  &#125;,
  [`POST /api/biz/md/bizMdClient/queryFilterOptions`](req, res) &#123;
    const dataSource = [
      &#123;
        title: '全部',
      &#125;,
      &#123;
        title: '一般',
      &#125;,
      &#123;
        title: '小规模',
      &#125;,
      &#123;
        title: '税务待分配',
      &#125;,
      &#123;
        title: '账务待分配',
      &#125;,
      &#123;
        title: '我的关注',
      &#125;,
    ];
    const result = &#123;
      code: 200,
      data: dataSource,
    &#125;;
    if (res && res.json) &#123;
      res.json(result);
    &#125; else &#123;
      return result;
    &#125;
  &#125;
&#125;

上面的mock是基于本地npm start 时启动的mock服务说的,但是代码撸完了,总要在服务器上提供服务,不能再本地自己玩吧,也就是说npm build后,生成的dist的目录的文件要在服务器上跑的,一般是用nginx作为服务器。测试mock就没有了,这时候怎么办,有两种办法解决,其实就算是本地我个人也比较推荐下面这种方式。
将一个json格式的文本复制到比如test.json中,内容如下:

&#123;
    "list": [
        &#123;
            "callNo": "11101",
            "desc": "20ml",
            "name": "1号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 1,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "11102",
            "desc": "20ml",
            "name": "2号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 2,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "11103",
            "desc": "30ml",
            "name": "3号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 3,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "11104",
            "desc": "30ml",
            "name": "4号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 4,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "11105",
            "desc": "40ml",
            "name": "5号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 5,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "11106",
            "desc": "40ml",
            "name": "6号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 6,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "111017",
            "desc": "60ml",
            "name": "7号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 7,
            "fenZhen": "是"
        &#125;,
        &#123;
            "callNo": "11108",
            "desc": "60ml",
            "name": "8号脱敏针",
            "updatedAt": "2019-04-12T14:00:00.000Z",
            "pingHao": 8,
            "fenZhen": "是"
        &#125;
    ],
    "pagination": &#123;
        "total": 8,
        "pageSize": 10,
        "current": 1
    &#125;
&#125;

然后把这个文件上传到任何一个有网就可以下载的服务器上,比如七牛啊,百度啊,什么的提供存储的地方,比如我的

models里还是一样的调用services的js文件里提供的接口

    *fetchTuoMinZhen(&#123; payload &#125;, &#123; call, put &#125;) &#123;
      const response = yield call(queryTuoMinZhen, payload);
      yield put(&#123;
        type: 'save',
        payload: response,
      &#125;);
    &#125;,

重点来了,本来services里的接口是这样的:

export async function queryTuoMinZhen(params) &#123;
  return request(`/api/tuominzhen?$&#123;stringify(params)&#125;`);
&#125;

也安装mock-server专门提供服务,具体可以google试试。

2、在table的行render时常用的操作

1、时间格式化,指定时区

 &#123;

​      title: '更新时间',

​      dataIndex: 'updateTime',

​      sorter: true,

​      render: val => <span>&#123;moment(val).utc().format('YYYY-MM-DD HH:mm:ss')&#125;</span>,&#125;,

2、显示图片
3、长文本使用省略号
4、可折叠table
5、显示总条数
6、表头支持筛选和排序

3、修改antd默认的样式

在自定义的class中加入:global关键字的样式:


怎么修改antd默认样式及遇到的问题

推荐网站

Ant Design Pro总结篇
经典 – Ant Design Pro 学习笔记
package.json配置文件


评论
  目录