1、项目安装 dingtalk-jsapi ,命令如下:

npm install dingtalk-jsapi --save

2、在需要的位置引入使用:

import * as dd from 'dingtalk-jsapi'; // 此方式为整体加载,也可按需进行加载

3、在 App.vue 中添加鉴权方法,如下:,

<script>
import * as dd from 'dingtalk-jsapi'
import api from './api/dd'
export default {
  created(){
    this.getAuth()
  },
  watch:{
    $route(to,from){
      // console.log(from.path) // 从哪来
      // console.log(to.path) // 到哪去
      this.getAuth()
    }
  },
  methods: {
    getAuth(){
      let params = {
        url: 'http://10.xx.xx.xx/meal/', // 这个地址要与网站访问地址保持一致
        appTypeEnum: 'MEAL_ORDER'
      }
      api.queryAuthSign(params).then((res) => {
          dd.config({
              agentId: res.data.data.agentId, // 必填,微应用ID
              corpId: res.data.data.corpId,//必填,企业ID
              timeStamp: res.data.data.timeStamp, // 必填,生成签名的时间戳
              nonceStr: res.data.data.nonceStr, // 必填,自定义固定字符串。
              signature: res.data.data.signature, // 必填,签名
              type:0,   //选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
              jsApiList : [
                  'biz.util.uploadAttachment', // 上传附件到钉盘/从钉盘选择文件
                  'biz.cspace.preview', // 图片预览
              ] // 必填,需要使用的jsapi列表,注意:不要带dd。
          });
          dd.error(function (err) {
              alert('dd error: ' + JSON.stringify(err));
              console.log('dd error: ' + JSON.stringify(err));
          })//该方法必须带上,用来捕获鉴权出现的异常信息,否则不方便排查出现的问题
      })
    }
  },
}
</script>

解析:第四步是通过后端提供的一个接口获取需要鉴权的一些参数信息,jsApiList 数组里边是鉴权时候需要调用的接口

4、在需要的页面中使用 jsApi 的方法,如下:

<script>
import api from '../../api/user'
import * as dd from 'dingtalk-jsapi'; // 引入钉钉 JSAPI
export default {
    data() {
        return {
            fileList: [], // 附件列表
            dingId: '', // 钉盘id
        }
    },
    created(){
       
    },
    methods:{
        // 获取钉盘id信息
        getSpaceId(){
            let params = {
                appTypeEnum: 'MEAL_ORDER'
            }
            api.querySpaceId(params).then((res) => {
                this.dingId = res.data.data;
            })
        },
        // 上传至钉盘
        upLoadBtn(){
            let _this = this;
            let corpId = 'dingxxxxxxxxxxx'
            dd.biz.util.uploadAttachment({
                corpId: corpId,
                types: ["photo"],
                image: {"multiple":true,"compress":false,"max":9,"spaceId": this.dingId},
                compress: true,
                multiple: false,
                max: 9,
                isCopy: 0,
                spaceId: this.dingId,
                onSuccess : function(res) {
                    // 调用成功时回调
                    res.data.map((item) => {
                        _this.fileList.push(item);
                    })
                    
                },
                onFail : function(err) {
                    // 调用失败时回调
                    console.log(err)
                }
            });
        },
        // 预览图片
        previewBtn(item){
            let corpId = 'dingxxxxxxxxxxx'
            dd.biz.cspace.preview({
                corpId: corpId,
                spaceId: item.spaceId,
                fileId: item.fileId,
                fileName: item.fileName,
                fileSize: item.fileSize,
                fileType: item.fileType,
                onSuccess : function(res) {
                    console.log(res,'666878');
                },
                onFail : function(err) {
                    console.log(err,'err');
                }
            });
        },
    }
}
</script>

至此,鉴权及钉钉 api 接口使用完成!

Logo

前往低代码交流专区

更多推荐