钉钉小程序企业内部应用开发总结

1,小程序对应的管理后台开发调试

文档链接:https://ding-doc.dingtalk.com/doc#/kn6zg7/qg4y64

需要微应用前端调试工具,直接在钉钉桌面版是没法调试,并且还需要在稳定性管理中进行人员配置

2,文件上传

文档链接:https://ding-doc.dingtalk.com/doc#/dev/frd69q/l4Xv3

示例代码:

utils/request.js

export function upload(opt) {
  return new Promise((resolve, reject) => {
    dd.uploadFile({
      url: uploadApi,  //uploadApi后端上传文件接口
      filePath: opt.filePath,
      fileType: opt.fileType,
      fileName: opt.name,
      success: (res) => {
        if (res.statusCode == 200) {
          console.log("上传成功")
          resolve(res.data)
        } else {
          console.log("服务器错误")
          reject(res)
        }
      },
      fail: (err) => {
        console.log("请求错误")
        reject(err)
      }
    })
  })
}

页面中:

 //图片上传
  addImg(){
    let _this = this;
    dd.chooseImage({
      count: 1,
      success: (res) => {
          app.$upload({
            apiName:"uploadFile",
            filePath:res.filePaths[0],
			name:"file",
            fileType:"image"
          }).then(res => {
            console.log("上传成功:",res)
          }).catch(_ => {console.log("上传失败:",_)})
      },
    });
  },
  //视频上传
  addVideo(){
    let _this = this;
    dd.chooseVideo({
      sourceType: ['album','camera'],
      maxDuration: 60,
      success: (res) => {
          app.$upload({
            apiName:"uploadFile",
            filePath:res.filePath,
			name:"file",
            fileType:"image"
          }).then(res => {
            console.log("上传成功:",res)
          }).catch(_ => {console.log("上传失败:",_)})
      },
    });
  },

3,视频播放与video标签

video标签暂时未上文档,但是可以用,src属性填写视频源

<video class="video" src="{{videoUrl}}"></video>

若全屏视频播放不正常,可以禁止全屏播放,在css中隐藏全屏按钮:

video::-webkit-media-controls-fullscreen-button{
  display: none;
}

4,登录授权

登录不需要弹出授权,即免登授权;

文档链接:https://ding-doc.dingtalk.com/doc#/dev/wcoaey

调用dd.getAuthCode方法成功后获取用户authCode,传给后端可以获取用户信息和登录sessionId

export function ddLogin(){
  dd.getAuthCode({
      success:function(res){
        http({
          apiName:"ddLogin",
          type:"POST",
          data:{
            code:res.authCode
          }
        }).then(res => {
          dd.setStorageSync({
            key: 'sessionId',
            data: res.data.sessionId
          });
          dd.setStorageSync({
            key: 'userInfo',
            data: res.data.wuserInfo
          });
        }).catch(_ => {
          console.log(_)
        })
      },
      fail:function(err){
      }
  });
}

5,picker-view联动使用注意

picker-view用于多个选择器联动,(单个选择直接使用picker即可),注意联动返回的值是每联数据的index

文档链接:https://ding-doc.dingtalk.com/doc#/dev/picker-view-component

每多一个联动则要多一个picker-view-column标签,在picker-view标签中可使用onChange监听联动结果,返回为一个数组,每个元素对应每联的选中的index,几联就几个值;

需要注意的地方:多联的时候,比如2联,如果当前选择的值是[1,2],滚动第一联之后值会变为[x,2],会默认给第二联选上index为2的值,如果第二联没有这个值就会报错,同理2联以上也是;所以在滚动非最后一联的时候,前面每联变化都要做一个判断:如果值变了,就要把后面每联的值设为0。

3联示例:

  async assignChange(e){
    let _value = e.target.dataset.arr;
    let _arr = e.detail.value;
    let arrVal = await this.dealAssignChange(_value,_arr)
    this.setData({
      [_value]: arrVal
    });
  },
  //
  dealAssignChange(_value,_arr){
    let arr = _arr;
    if(this.data[_value].length  == 2 && this.data[_value][0] != arr[0]){
      arr = [_arr[0],0]
    }
    if(this.data[_value].length  == 3){
      if(this.data[_value][0] != arr[0]){
        arr = [_arr[0],0,0]
      }
      if(this.data[_value][1] != arr[1]){
        arr = [_arr[0],_arr[1],0]
      }
    }
    return arr;
  },

6,textarea会显示在自定义弹窗上面

写一个样式跟textarea一样view标签,用于弹出窗后替换textarea显示内容

7,在一加手机上程序存在一些问题还找不到解决方法

8,苹果手机上传到自己服务器的视频无法播放的问题

苹果手机调用dd.chooseVideo得到的视频是.video格式,上传到服务器后需要更改为.mp4等格式才能在小程序的video标签内播放

9,页面白屏几秒钟后报提示 api: ddExec 暂不支持,请在真机调试

可能原因之一是textare赋值为null,改成空字符串就不会白屏

`uni.chooseImage` 是uni-app框架中用于选择图片的方法,通常在使用过程中不会导致闪退。如果你遇到闪退问题,可能是由于多种原因造成的。以下是一些可能导致闪退的常见原因以及相应的排查建议: 1. **API使用错误**:确保你正确使用了`uni.chooseImage` API,包括它的参数和回调函数。查看uni-app官方文档,核对调用方式是否正确。 2. **环境配置问题**:检查你的开发环境是否配置正确,例如uni-app的版本、编译器或IDE的版本是否支持当前API。 3. **权限问题**:确保你的应用具有访问相册的权限。如果没有权限,尝试在应用的设置中开启对应权限。 4. **系统兼容性问题**:有些功能在不同的操作系统或者不同版本的操作系统中表现可能不同,检查是否有相关的系统兼容性问题。 5. **内存溢出**:检查是否有内存泄漏或过多的内存占用导致应用崩溃。优化代码逻辑和资源管理可能有所帮助。 6. **运行时错误**:可能是由于JavaScript代码逻辑错误或者其他运行时错误导致的应用闪退,使用开发者工具进行调试。 7. **第三方插件或组件冲突**:如果你使用了第三方的插件或组件,检查是否与`uni.chooseImage`存在冲突。 如果上述排查均无法解决问题,可以尝试以下步骤: - 清理项目并重新构建。 - 查看控制台输出的错误信息或日志,这会给出更具体的异常信息。 - 检查是否有其他开发者在社区或论坛中报告了类似的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值