diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/util/w6sMedia.js b/zdxt-web-client/zdxt-efcode-enterprise-app/src/util/w6sMedia.js index 9e75baf9..ec5d2e83 100644 --- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/util/w6sMedia.js +++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/util/w6sMedia.js @@ -77,27 +77,40 @@ export const takePhotoWithWaterMark = async ({ await ensureW6sAuth() console.log('[w6sMedia] 鉴权完成, 准备调起拍照') return new Promise((resolve, reject) => { - w6s.image.takePhotoAndAddWaterMark({ - content, - fontSize, - color, - markDisable: false, - timeEnable, - locationEnable, - success: (res) => { + w6s.image.takePicture({ + editable: false, + success: function (res) { console.log('[w6sMedia] takePhotoAndAddWaterMark success 原始返回:', res) console.log('[w6sMedia] 返回字段 imageURL:', res?.imageURL, 'key:', res?.key, 'imageInfo:', res?.imageInfo) resolve(res) }, - fail: (err) => { - console.error('[w6sMedia] takePhotoAndAddWaterMark fail:', err) + fail: function (err) { + console.error('[w6sMedia] takePhotoAndAddWaterMark fail:', err) reject(err) - }, - }) + }, + }); + + // w6s.image.takePhotoAndAddWaterMark({ + // content, + // fontSize, + // color, + // markDisable: false, + // timeEnable, + // locationEnable, + // success: (res) => { + // console.log('[w6sMedia] takePhotoAndAddWaterMark success 原始返回:', res) + // console.log('[w6sMedia] 返回字段 imageURL:', res?.imageURL, 'key:', res?.key, 'imageInfo:', res?.imageInfo) + // resolve(res) + // }, + // fail: (err) => { + // console.error('[w6sMedia] takePhotoAndAddWaterMark fail:', err) + // reject(err) + // }, + // }) }) } -// 录制视频 +// 录制视频(使用 Cordova 原生 Media Capture API) export const startVideoRecorder = async ({ duration = 60, quality = 1, // 0 高清 / 1 一般 / 2 流畅 @@ -108,20 +121,33 @@ export const startVideoRecorder = async ({ await ensureW6sAuth() console.log('[w6sMedia] 录制前鉴权完成, 准备调起录制') return new Promise((resolve, reject) => { - w6s.video.startVideoRecoder({ - duration, - quality, - front, - sync_system_album: syncSystemAlbum, - success: (res) => { - console.log('[w6sMedia] startVideoRecoder success 原始返回:', res) - resolve(res) + if (!navigator?.device?.capture?.captureVideo) { + console.error('[w6sMedia] navigator.device.capture.captureVideo 不可用') + reject(new Error('当前环境不支持视频录制')) + return + } + navigator.device.capture.captureVideo( + (mediaFiles) => { + console.log('[w6sMedia] captureVideo success, mediaFiles:', mediaFiles) + if (mediaFiles && mediaFiles.length > 0) { + const file = mediaFiles[0] + console.log('[w6sMedia] 视频文件: fullPath=', file.fullPath, 'name=', file.name, 'size=', file.size, 'type=', file.type) + resolve({ + video_path: file.fullPath, + name: file.name, + size: file.size, + type: file.type || 'video/mp4', + }) + } else { + reject(new Error('录制未生成视频文件')) + } }, - fail: (err) => { - console.error('[w6sMedia] startVideoRecoder fail:', err) - reject(err) + (error) => { + console.error('[w6sMedia] captureVideo fail:', error, 'code:', error?.code, 'message:', error?.message) + reject(error) }, - }) + { limit: 1, duration } + ) }) } diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue index a9122ccd..24797592 100644 --- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue +++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue @@ -430,17 +430,18 @@ const onTakePhoto = async (item) => { // 录制视频 const onRecordVideo = async (item) => { + console.log('[NosDetail] onRecordVideo 开始, item:', item) try { const res = await startVideoRecorder({ duration: 60, quality: 1 }) - const info = res.info || res + console.log('[NosDetail] 录制返回 res:', res, 'video_path:', res?.video_path) await pushSdkFileToFileList(item, { - localPath: info.video_path, + localPath: res.video_path, fileName: `video-${Date.now()}.mp4`, - mimeType: 'video/mp4', + mimeType: res.type || 'video/mp4', isImage: false, }) } catch (err) { - console.error('w6s 录制失败', err) + console.error('[NosDetail] w6s 录制失败:', err) showToast('录制失败或已取消') } }