跳到主要内容

设备分享

更新时间:2026-01-08 16:06:34

用户之间分享设备

/**
* 生成分享用的二维码(30min有效)
* @public
*
* @param iotIdList - 要分享的设备列表。一次最多20
* @param permissionList - 权限列表
*/
declare function generateShareQrCode(iotIdList: string[], permissionList: RTCXDeviceMgrTypes.ShareDevicePermissionEnum[]): Promise<RTCXDeviceMgrTypes.GenerateShareQrCodeRsp>;


/**
* 设备分享给指定的用户
*
* @param shareDevicesReq - 分享给用户请求参数
* @public
*/
declare function shareDevices(shareDevicesReq: RTCXDeviceMgrTypes.ShareDevicesReq): Promise<RTCXDeviceMgrTypes.ShareDevicesRsp>;

/**
* 发起者取消分享
*
* @param recordIdList - 分享记录列表
* @public
*/
declare function cancelShare(recordIdList: number[]): Promise<void>;

/**
* 被分享者同意或拒绝分享
*
* @param recordIdList - 分享记录列表
* @param agree - 0(表示不同意);1(表示同意)。
* @public
*/
declare function confirmShare(recordIdList: number[], agree: number): Promise<void>;

/**
* 获取分享通知列表
*
* @param getShareNoticeListReq - 分享通知请求参数
* @public
*/
declare function getShareNoticeList(getShareNoticeListReq: RTCXDeviceMgrTypes.GetShareNoticeListReq): Promise<RTCXDeviceMgrTypes.GetShareNoticeListRsp>;

/**
* 批次查询设备分享记录
*
* @param queryShareRecordByBatchReq - 批次分享记录查询
* @public
*/
declare function queryShareRecordByBatch(queryShareRecordByBatchReq: RTCXDeviceMgrTypes.QueryShareRecordByBatchReq): Promise<RTCXDeviceMgrTypes.QueryShareRecordByBatchRsp>;

/**
* 分享权限修改
*
* @param recordId - 分享记录ID
* @param permissionList - 权限列表
* @public
*/
declare function setSharePermission(recordId: number, permissionList: RTCXDeviceMgrTypes.ShareDevicePermissionEnum[]): Promise<void>;

/**
* 查询用户下设备当前被分享用户(初始化和接受状态)
*
* @param getSharedListReq - 请求参数
* @public
*/
declare function getSharedUserList(getSharedListReq: RTCXDeviceMgrTypes.GetSharedUserListReq): Promise<RTCXDeviceMgrTypes.GetSharedUserListRsp>;

/**
* 查询用户下设备的分享数量(初始化和接受状态)
*
* @param getSharedCountReq - 请求参数
* @public
*/
declare function getSharedCountList(getSharedCountReq: RTCXDeviceMgrTypes.GetSharedCountReq): Promise<RTCXDeviceMgrTypes.GetSharedCountRsp>;

export declare namespace RTCXDeviceShareMgr {
export {
generateShareQrCode,
scanBindByShareQrcode,
shareDevices,
cancelShare,
confirmShare,
getShareNoticeList,
queryShareRecordByBatch,
setSharePermission,
getSharedUserList,
getSharedCountList
}
}

生成分享用的二维码

生成的二维码30分钟有效

/**
* 生成分享用的二维码(30min有效)
* @public
*
* @param iotIdList - 要分享的设备列表。一次最多20
* @param permissionList - 权限列表
*/
declare function generateShareQrCode(iotIdList: string[], permissionList: RTCXDeviceMgrTypes.ShareDevicePermissionEnum[]): Promise<RTCXDeviceMgrTypes.GenerateShareQrCodeRsp>;

示例


import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'
import { ElMessageBox, ElNotification } from 'element-plus'
import QRCode from 'qrcode'
const list: RTCXDeviceMgrTypes.ShareDevicePermissionEnum[] = [ ... ]
RTCXDeviceShareMgr.generateShareQrCode([iotId], list)
.then((rsp: RTCXDeviceMgrTypes.GenerateShareQrCodeRsp) => {
if (rsp.failList?.length) {
ElNotification.error('获取分享二维码内容失败')
} else {
qrcodeDialogVisible.value = true
nextTick(function () {
const { qrKey, expireTime } = rsp
QRCode.toCanvas(
qrcodeCanvasRef.value,
JSON.stringify({ qrKey, expireTime }),
{
width: 200,
errorCorrectionLevel: 'L',
},
function (error: unknown) {
if (error) {
console.error(error)
ElNotification.error('生成分享二维码图片失败')
}
}
)
})
}
})
.catch((err: unknown) => {
console.error(err)
ElNotification.error('请求分享二维码内容失败')
})
.finally(() => sharedPermissionDialogRef.value?.hidePermissionDialog())

设备分享给指定的用户

/**
* 设备分享给指定的用户
*
* @param shareDevicesReq - 分享给用户请求参数
* @public
*/
declare function shareDevices(shareDevicesReq: RTCXDeviceMgrTypes.ShareDevicesReq): Promise<RTCXDeviceMgrTypes.ShareDevicesRsp>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'
const username = '......'
const iotId = '......'
const accountAttrType = username.includes('@')
? RTCXDeviceMgrTypes.ShareAccountAttrTypeEnum.EMAIL
: RTCXDeviceMgrTypes.ShareAccountAttrTypeEnum.MOBILE
const shareDevicesReq: RTCXDeviceMgrTypes.ShareDevicesReq = {
iotIdList: [iotId],
accountAttr: username,
accountAttrType,
permissionList: list,
}

RTCXDeviceShareMgr.shareDevices(shareDevicesReq)
.then((rsp: RTCXDeviceMgrTypes.ShareDevicesRsp) => {
if (rsp.failList?.length) {
ElNotification.error('分享失败')
return
}
ElNotification.success('分享成功')
getSharedUserList()
sharedPermissionDialogRef.value?.hidePermissionDialog()
})
.catch((err: unknown) => {
console.error(err)
ElNotification.error('分享失败')
})
.finally(() => (shareToUser.value = ''))

发起者取消分享

/**
* 发起者取消分享
*
* @param recordIdList - 分享记录列表
* @public
*/
declare function cancelShare(recordIdList: number[]): Promise<void>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

function onCancelShareClick(item: RTCXDeviceMgrTypes.DeviceSharedUser) {
ElMessageBox.confirm('确定取消分享设备?').then(() => {
RTCXDeviceShareMgr.cancelShare([item.recordId])
.then(() => {
ElNotification.success('取消分享成功')
getSharedUserList()
})
.catch(() => {
ElNotification.success('取消分享失败')
})
})
}

被分享者同意或拒绝分享


/**
* 被分享者同意或拒绝分享
*
* @param recordIdList - 分享记录列表
* @param agree - 0(表示不同意);1(表示同意)。
* @public
*/
declare function confirmShare(recordIdList: number[], agree: number): Promise<void>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

function onConfirmClick(item: RTCXDeviceMgrTypes.GetShareNoticeListRspItem, agree: number) {
const recordId = item.recordId

RTCXDeviceShareMgr.confirmShare([recordId], agree)
.then(() => {
ElNotification.success(agree === 1 ? '接受分享成功' : '拒绝分享成功')
getNoticeList()
})
.catch(() => {
ElNotification.success(agree === 1 ? '接受分享失败' : '拒绝分享失败')
})
}

获取分享通知列表

/**
* 获取分享通知列表
*
* @param getShareNoticeListReq - 分享通知请求参数
* @public
*/
declare function getShareNoticeList(getShareNoticeListReq: RTCXDeviceMgrTypes.GetShareNoticeListReq): Promise<RTCXDeviceMgrTypes.GetShareNoticeListRsp>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

function getNoticeList() {
pageLoading.value = true
const getShareNoticeListReq: RTCXDeviceMgrTypes.GetShareNoticeListReq = {
pageNo: 1,
pageSize: 200,
}
RTCXDeviceShareMgr.getShareNoticeList(getShareNoticeListReq)
.then((rsp: RTCXDeviceMgrTypes.GetShareNoticeListRsp) => {
sharedUserList.value = rsp.data
if (!sharedUserList.value.length) {
ElNotification.info('暂无数据')
}
})
.catch((err: unknown) => {
console.error(err)
ElNotification.error('请求失败')
})
.finally(() => (pageLoading.value = false))
}

查询设备分享记录

/**
* 批次查询设备分享记录
*
* @param queryShareRecordByBatchReq - 批次分享记录查询
* @public
*/
declare function queryShareRecordByBatch(queryShareRecordByBatchReq: RTCXDeviceMgrTypes.QueryShareRecordByBatchReq): Promise<RTCXDeviceMgrTypes.QueryShareRecordByBatchRsp>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

//获取分享通知列表接口返回列表项
const item:GetShareNoticeListRspItem = ...
const params: RTCXDeviceMgrTypes.QueryShareRecordByBatchReq = {
batchId: item.batchId,
pageNo: 1,
pageSize: 100,
}
RTCXDeviceShareMgr.queryShareRecordByBatch(params)
.then((rsp: RTCXDeviceMgrTypes.QueryShareRecordByBatchRsp) => {
console.error(rsp)
})
.catch((err: unknown) => {
console.error(err)
ElNotification.error('请求失败')
})

分享权限修改

仅当分享记录状态为初始化或接受状态时可操作

/**
* 分享权限修改
*
* @param recordId - 分享记录ID
* @param permissionList - 权限列表
* @public
*/
declare function setSharePermission(recordId: number, permissionList: RTCXDeviceMgrTypes.ShareDevicePermissionEnum[]): Promise<void>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

function onSharedPermissionDialogConfirm(list: RTCXDeviceMgrTypes.ShareDevicePermissionEnum[]) {
const recordId = ... //分享记录ID
RTCXDeviceShareMgr.setSharePermission(recordId, list)
.then(() => {
ElNotification.success('修改权限成功')
getNoticeList()
sharedPermissionDialogRef.value?.hidePermissionDialog()
})
.catch(() => {
ElNotification.success('修改权限失败')
})
}

查询用户下设备当前被分享用户

仅当分享记录为初始化和接受状态的用户会返回


/**
* 查询用户下设备当前被分享用户(初始化和接受状态)
*
* @param getSharedListReq - 请求参数
* @public
*/
declare function getSharedUserList(getSharedListReq: RTCXDeviceMgrTypes.GetSharedUserListReq): Promise<RTCXDeviceMgrTypes.GetSharedUserListRsp>;

示例


import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

const iotId = ""
function getSharedUserList() {
const getSharedListReq: RTCXDeviceMgrTypes.GetSharedUserListReq = {
iotId: iotId,
pageNo: 1,
pageSize: 200,
}
RTCXDeviceShareMgr.getSharedUserList(getSharedListReq)
.then((rsp: RTCXDeviceMgrTypes.GetSharedUserListRsp) => {
sharedUserList.value = rsp.items
if (!sharedUserList.value.length) {
ElNotification.info('暂无数据')
}
})
.catch((err: unknown) => {
console.error(err)
ElNotification.error('请求失败')
})
}

查询用户下设备的分享数量

仅返回初始化和接受状态记录的数量,限制最大分享次数

/**
* 查询用户下设备的分享数量(初始化和接受状态)
*
* @param getSharedCountReq - 请求参数
* @public
*/
declare function getSharedCountList(getSharedCountReq: RTCXDeviceMgrTypes.GetSharedCountReq): Promise<RTCXDeviceMgrTypes.GetSharedCountRsp>;

示例

import { RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from '@rtcx/websdk'

const maxShareCount = ref(0)

function getSharedCountList() {
const req: RTCXDeviceMgrTypes.GetSharedCountReq = {
pageNo: 1,
pageSize: 200,
iotId,
}
RTCXDeviceShareMgr.getSharedCountList(req)
.then((rsp: RTCXDeviceMgrTypes.GetSharedCountRsp) => {
maxShareCount.value = rsp.maxShareCount
})
.catch((err: unknown) => {
console.error(err)
ElNotification.error('请求失败')
})
}