【微信小程序 | odoo】微信小程序对odoo外部api的接口封装。正常小程序开发也可以模仿此格式去写。

开始前先在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
      })
    })
  },

大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值