釘釘小程序官方文檔:文檔 - 釘釘開放平臺
吐槽一下,當時文檔很不友好(2019年年底前),還會出現打不開的情況,可能現在會好一些吧???
踩過很多坑,邊調研邊開發模式,技術棧uni-App+TS,以下主要是類型聲明,直接拿來就用,其他小程序相通。
在typings目錄下新增dd.d.ts文件:
declare namespace DDModule {
export class DD {
// 釘釘企業id
corpId: string
/**
* 獲取釘釘免登碼
*
*/
getAuthCode(options: GetAuthCodeOptions): void;
/**
* 壓縮圖片
*
*/
compressImage(options: CompressImageOptions): void;
/**
* 保存在線、本地臨時或者永久地址圖片到手機相冊。
*
*/
saveImage(options: SaveImageOptions): void;
/**
* 提示框
*
*/
alert(options: AlertOptions): void
/**
* 確認框
*
*/
confirm(options: ConfirmOptions): void
/**
* 調用釘釘掃碼
*
*/
scan(options: scanOptions): void
/**
* 選人與部門
*
*/
complexChoose(options: ComplexOptions): void
/**
* 選取部門
*
*/
chooseDepartments(options: ChooseDepartmentsOptions): void
/**
* 選取手機通信錄
*
*/
choosePhonebook(options: ChoosePhoneBookOptions): void
/**
* 獲取全局唯一錄音管理器
*
*/
getRecorderManager(): RecordManager
/**
* 獲取全局背景音頻管理
*
*/
getBackgroundAudioManager(): BackgroundAudioManager
/**
* 上傳文件
*
*/
uploadFile(options: UploadOptions): void
/**
* 獲取網絡狀態
*
*/
ge.NETworkType(option: GetNetworkOptions): void
/**
* 選取圖片
*
*/
chooseImage(options: DDChooseImageOptions): void
/**
* 選取視頻
*
*/
chooseVideo(options: DDChooseVideoOptions): void
/**
* 圖片預覽
*
*/
previewImage(options: DDPreviewImageOptions): void
/**
* 弱提示
*
*/
showToast(options: ShowToastOptions): void
// 移除緩存
removeStorage(param: { key: string | number }): void
}
interface ShowToastOptions {
content?: string,
type?: string
duration?: number,
success?(param?: any): void,
fail?(e: any): void,
complete?(): void,
}
interface GetAuthCodeOptions {
success(param: { authCode: string }): void
fail?(param: any): void
}
interface CompressImageOptions {
/**
* 要壓縮的圖片地址數組
*/
filePaths: string[],
/**
* 壓縮級別,支持 0 ~ 4 的整數 4為網絡自適應,其他是越高越清晰
*/
compressLevel?: 0 | 1 | 2 | 3 | 4,
/**
* 成功回調
*/
success?(param?: FilePaths): void,
/**
* 失敗回調
*/
fail?(e: any): void,
/**
* 無論成功或者失敗回調
*/
complete?(): void,
}
interface FilePaths {
filePaths?: string[]
}
interface SaveImageOptions {
/**
* 圖片地址
*/
url: string,
/**
* 成功回調
*/
success?(param?: any): void,
/**
* 失敗回調
*/
fail?(e: any): void,
/**
* 無論成功或者失敗回調
*/
complete?(): void,
}
interface AlertOptions {
/**
* 標題
*/
title?: string
/**
* 內容
*/
content?: string
/**
* 按鈕名字
*/
buttonText?: string
/**
* 成功回調
*/
success?(param?: any): void,
/**
* 失敗回調
*/
fail?(param?: any): void,
/**
* 無論成功或者失敗回調
*/
complete?(param?: any): void,
}
interface ConfirmOptions {
/**
* 標題
*/
title: string
/**
* 內容
*/
content: string
/**
* 確認按鈕名字
*/
confirmButtonText?: string
/**
* 取消按鈕名字
*/
cancelButtonText?: string
/**
* 成功回調 確認為true 取消為fail
*/
success?(flag: boolean): void,
/**
* 失敗回調
*/
fail?(param?: any): void,
/**
* 無論成功或者失敗回調
*/
complete?(param?: any): void,
}
interface scanOptions {
/**
* qr 二維碼 bar 條形碼
*/
type?: 'qr' | 'bar'
/**
* 成功回調
*/
success?(param?: any): void,
/**
* 失敗回調
*/
fail?(param?: any): void,
/**
* 無論成功或者失敗回調
*/
complete?(param?: any): void,
}
interface ComplexOptions {
/**
* 標題
*/
title?: string,
/**
* 是否多選
*/
multiple?: boolean,
/**
* 超過限定人數返回提示
*/
limitTips?: string,
/**
* 最大可選人數
*/
maxUsers?: number,
/**
* 已選用戶,值為userId列表
*/
pickedUsers?: string[],
/**
* 已選部門
*/
pickedDepartments?: string[]
/**
* 不可選用戶,值為userId列表
*/
disabledUsers?: string[],
/**
* 不可選部門
*/
disabledDepartments?: string[],
/**
* 必選用戶(不可取消選中狀態),值為userId列表
*/
requiredUsers?: string[],
/**
* 必選部門(不可取消選中狀態
*/
requiredDepartments?: string[],
/**
* 選人權限,目前只有GLOBAL這個參數)
*/
permissionType?: 'GLOBAL',
/**
* true:返回人員信息
* false:返回人員和部門信息
*/
responseUserOnly?: boolean,
/**
* 僅支持0和-1兩個值:0表示從企業最上層開始,-1表示從自己部門開始
*/
startWithDepartmentId?: 0 | -1
/**
* 成功回調
*/
success?(param: {
selectedCount?: number,
users?: any,
departments?: any
}): void
/**
* 失敗回調
*/
fail?(e: any): void
}
interface ChooseDepartmentsOptions {
/**
* 標題
*/
title?: string,
/**
* 是否多選
*/
multiple?: boolean,
/**
* 超過限定人數返回提示
*/
limitTips?: string,
/**
* 最大可選部門
*/
maxDepartments?: number,
/**
* 已選部門
*/
pickedDepartments?: string[]
/**
* 不可選部門
*/
disabledDepartments?: string[],
/**
* 必選部門(不可取消選中狀態
*/
requiredDepartments?: string[],
/**
* 選人權限,目前只有GLOBAL這個參數)
*/
permissionType?: 'GLOBAL',
/**
* 成功回調
*/
success?(param: {
selectedCount?: number,
users?: any,
departments?: any
}): void
/**
* 失敗回調
*/
fail?(e: any): void
}
interface ChoosePhoneBookOptions {
/**
* 是否多選
*/
multiple?: boolean
/**
* 人數限制,當multiple為true才生效,可選范圍1-1500
*/
maxUsers?: number
/**
* 超過人數限制的提示語可以用這個字段自定義
*/
limitTips?: string
/**
* 如果你需要修改選人頁面的title,可以在這里賦值
*/
title?: string
/**
* 成功回調
*/
success?(param: {
name?: string,
avatar?: any,
mobile?: any
}): void
/**
* 失敗回調
*/
fail?(e: any): void
}
interface RecordManager {
start(param?: { duration?: number }): void, // 開始
stop(): void, // 結束
onstart(): void, // 監聽開始
onstop(res: { tempFilePath: string }): void, // 監聽結束
onerror(res: { errorCode?: 20001 | 13 | 2 | 5, errorMessage?: string }): void, // 監聽報錯 錯誤碼 20001 正在錄音,13 保存失敗,2參數錯誤,5沒有讀寫權限
}
interface BackgroundAudioManager {
src?: string,// 音頻地址
title?: string, // 音頻標題
coverImgUrl?: string, // 音頻封面
paused?: boolean, // 是否暫停
duration?: number, // 音頻長度
currentTime?: number, // 音頻當前播放的時間
play(): void // 播放
pause(): void // 暫停
stop(): void // 停止
seek(position: number): void // 跳轉指定位置,以秒為單位
onPlay(): void, // 監聽開始
onPause(): void, // 監聽暫停
onStop(): void, // 監聽停止
onEnded(): void, // 監聽結束
onTimeUpdate(): void, // 監聽時間變化
onError(): void, // 監聽報錯
}
}
interface UploadOptions {
url: string // 上傳的路徑
filePath: string // 本地文件的虛擬地址
fileName: string // 對應的key
fileType: 'image' | 'audio' | 'video'
header?: Object
formData?: Object
success?(param: any): void
fail?(e: any): void
complete?(): void,
}
interface GetNetworkOptions {
success?(param: {
networkAvailable?: boolean,
networkType?: 'UNKNOWN' | 'NOTREACHABLE' | 'wifi' | '3G' | '2G' | '4G' | 'WWAN',
}): void
fail?(e: any): void,
complete?(e: any): void,
}
interface DDChooseVideoOptions {
sourceType?: string[], // 視頻來源 可選值 album camera
maxDuration?: number, // 視頻長度
covered?: boolean,
success?(param: {
filePath: string,
duration?: number,
size?: number,
height?: number,
width?: number,
coverPath?: string,
}): void
fail?(e: any): void
complete?(): void,
}
interface DDChooseImageOptions {
count?: number // 最大可選數量
sourceType?: string[] // 圖片來源 可選值 album camera
success?(param: {
filePaths: string[], // 所選圖片本地占位符數組
}): void
fail?(e: any): void
complete?(): void,
}
interface DDPreviewImageOptions {
urls: string[],
current?: number,
success?(e: any): void,
fail?(e: any): void,
complete?(): void,
}
然后在index.d.ts文件,其他.d.ts類型文件亦可
declare const dd: DDModule.DD