开始前先在app.js准备好一些常量数据。
globalData: {
//域名
httpInput:'',
//数据库
databaseInput:'',
//账号
phoneNumber:'',
//密码
passwordNumber:'',
}
第一步:跟utils同目录下创建一个名为requesFn的文件夹,并在文件下创建一个requesFn.js的文件。
const app = getApp();
//登陆后的请求封装
const Request = (Objecct) =>{
return new Promise((resolve, reject) => {
wx.showLoading({
title: '加载中...',
mask: true
})
let args1 = [app.globalData.databaseInput, app.globalData.Uid, app.globalData.passwordNumber]
let args2 = JSON.parse(Objecct.args)
let Args = [...args1,...args2]
wx.request({
url: app.globalData.httpInput + '/jsonrpc',
method: Objecct.method,
data: {
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "object",
"method": "execute_kw",
"args": Args
},
"id": Objecct.id || null,
},
header:{
'content-type': 'application/json'
},
// responseType:options.responseType || "",
timeout:10000,
success (res) {
wx.hideLoading();
if(res.errMsg == "request:ok"){
if(res.data.result){
resolve(res.data);
}else{
reject(res);
}
}else{
reject(res);
};
},
fail (err) {
reject(err);
}
})
})
};
module.exports = {
Request
};
第二步:在文件下创建一个Api.js的文件。也可分模块创建多个文件,分别存放各模块api接口。
const requestFn = require('../requestFn/requestFn');
/**
*
*
* 存放模块外的api
*
*/
const HTTP = {
/**
* 获取用户信息(头像、姓名等)
* @param {String} args - 参数[后端方法,数据表,条件,需要的字段]
*/
getOdooResUser(Uid){
let method = 'POST'
let Uid_ = JSON.stringify(Uid)
let args = JSON.stringify(['res.users', 'search_read', [[['id', '=', Uid_]]], {fields: ["display_name","company_name","image_128"]}])
return requestFn.Request({
method,args
})
},
/**
* 获取已安装的全部app
* @param {String} args - 参数[后端方法,数据表,条件,需要的字段]
*/
getOdooDesktop(){
let method = 'POST'
let args = JSON.stringify(['ir.ui.menu', 'search_read', [[['web_icon', '!=', '']]], {}])
return requestFn.Request({
method,args
})
},
/**
* 分页获取所有的app
* @param {String} args - 参数[后端方法,数据表,条件,需要的字段]
*/
getOdooDesktopApp(){
let method = 'POST'
let args = JSON.stringify(['ir.module.module', 'search_read', [[["application", "=", true]]], {fields: ["icon", "to_buy", "name", "state", "summary", "website", "application", "shortdesc"],limit: 80}])
return requestFn.Request({
method,args
})
},
}
module.exports = HTTP;
第三步:页面调用。
import HTTP from "../../requestFn/Api.js";
//获取用户信息
getResUsers(Uid){
HTTP.getOdooResUser(Uid).then(res => {
console.log(res);
let Data = res.result[0]
this.setData({
res_user:Data
})
})
},
//获取应用程序
getOdooDesktopApp(){
HTTP.getOdooDesktopApp().then(res => {
console.log(res.result)
let Data = res.result
this.setData({
odooDesktopAppList:Data
})
})
},
大功告成!