Skip to content

crudOptions.request

请求相关配置

transformQuery

  • 说明:pageRequest列表请求参数转换,当框架传入的query参数不符合pageRequest参数结构时,可配置此方法进行通用转换
  • 类型:Function({page,form,sort})
  • 参数:page:{pageSize:每页条数,currentPage:当前页码}
  • 参数:form:{查询框获得的参数}
  • 参数:sort:{prop:排序字段key,order:string,升序还是降序,asc:boolean,是否升序}
  • 返回:query:pageRequest所需要的参数
  • 示例:
js
const crudOptions={ 
  request: {
    // pageRequest请求参数转换
    transformQuery: ({ page, form, sort }) => {
      const order = sort == null?{}:{orderProp:sort.prop,orderAsc:sort.asc}
        //改造成你的后端所能接受的参数结构
      return { current: page.currentPage, size: page.pageSize, ...form,...order };
    }
  }
}

transformRes

  • 说明:pageRequest列表请求结果转换,当pageRequest返回的结构与下面“返回”不一致时,可以配置此方法将返回结果转换为本框架所需要的格式
  • 类型:Function(res)
  • 参数:res: pageRequest返回的结果
  • 返回:{records:[]列表数据,currentPage:number当前页码,pageSize:number每页条数,total:number总记录数}
  • 示例:
js
const crudOptions= {
  request: {
    // pageRequest请求结果转换
    transformRes: ({ res }) => {
      //将后端返回的结果,改造成fs所需要的结构
      return { currentPage: res.current, pageSize: res.size, ...res };
    }
  }
}

TIP

你也可以直接在pageRequest()里面做处理也是可以的,不过不太推荐此方式

js
async pageRequest(opts){
   // 转化opts为你后台接口所需要的结构
   //opts ={page,form,sort}
   const ret = await api.request(newOpts)
   // 转化ret 为 fast-crud所需要的结构
   // newRet = {records,currentPage,pageSize,total}
   return newRet;
}

editRequest

  • 说明:编辑对话框,点击保存后发出的保存修改的请求
  • 类型:async Function({ form, row })
  • 示例:
json
{
  request: {
    editRequest:async ({ form, row }) => {
      form.id = row.id;
      return await api.UpdateObj(form);
    };
  }
}

pageRequest

  • 说明:页面数据请求
  • 类型:async Function(query)
  • 参数:query: transformQuery返回的参数,若transformQuery未配置,则为{page,form,sort}
  • 返回:res:{}
  • 示例:
js
const pageRequest = async (query)=>{
    const url = "/your/crud/page/request/url"
    return axios({url,data:query});
};
// 所有demo里面都有的
const crudOptions= {
  request: {
    pageReqest:pageRequest
  }
}

addRequest

  • 说明:添加对话框,点击保存后发出的请求
  • 类型:async Function({ form })
  • 示例:
json
{
  request: {
    addRequest: async ({ form }) => {
      return await api.AddObj(form);
    };
  }
}

delRequest

  • 说明:操作列,点击删除按钮发出的请求
  • 类型:async Function({row})
  • 示例:
json
{
  request: {
    delRequest: async ({ row }) => {
      return await api.DelObj(row.id);
    };
  }
}

infoRequest

  • 说明:详情请求,在add,edit,view对话框打开前,先通过infoRequest获取详情,作为初始表单,如果不配置则以表格数据作为初始值
  • 类型:async Function({mode,row}) : row
  • 示例:
js
const crudOptions = {
  request: {
    infoRequest: async ({ mode, row }) => {
      if(mode === 'edit'){
          //编辑的时候去后台获取最新的详情
          return await api.GetObj(row.id);
      }   
      //其他情况下直接使用表格中的行数据作为初始表单
      return row;
    };
  }
}