diff --git a/src/api/detect-template.js b/src/api/detect-template.js new file mode 100644 index 0000000..b050535 --- /dev/null +++ b/src/api/detect-template.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +// 获取检测模板日志列表 +export function getDetectTemplateLogs(params) { + return request({ + url: '/detect-video-template/logs', + method: 'get', + params + }) +} + +// 删除检测模板日志 +export function deleteDetectTemplate(id) { + return request({ + url: `/detect-video-template/${id}`, + method: 'delete' + }) +} + +// 检测模板 +export function detectTemplate(data) { + return request({ + url: '/detect-video-template/detect', + method: 'post', + data + }) +} diff --git a/src/router/index.js b/src/router/index.js index 41fe5f7..8681ff5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -235,19 +235,25 @@ export const constantRoutes = [ path: 'face-detect', name: 'FaceDetect', component: () => import('@/views/video/face-detect'), - meta: { title: '头像检测', icon: 'el-icon-user-solid' } + meta: { title: '人像检测列表', icon: 'el-icon-user-solid' } + }, + { + path: 'detect-template', + name: 'DetectTemplate', + component: () => import('@/views/video/detect-template'), + meta: { title: '检测模板列表', icon: 'el-icon-document' } }, { path: 'video-synthesis', name: 'VideoSynthesis', component: () => import('@/views/video/video-synthesis'), - meta: { title: '视频合成', icon: 'el-icon-video-camera-solid' } + meta: { title: '特写视频列表', icon: 'el-icon-video-camera-solid' } }, { path: 'avatar-synthesis', name: 'AvatarSynthesis', component: () => import('@/views/video/avatar-synthesis'), - meta: { title: '头像合成视频', icon: 'el-icon-user-solid' } + meta: { title: '特写视频生成', icon: 'el-icon-user-solid' } } ] }, diff --git a/src/views/video/detect-template.vue b/src/views/video/detect-template.vue new file mode 100644 index 0000000..29d2ed0 --- /dev/null +++ b/src/views/video/detect-template.vue @@ -0,0 +1,900 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 上传并检测 + + + 查询 + 重置 + + + + + + + + + + + + + + + 查看视频 + + - + + + + + + + + + + {{ scope.row.success ? '成功' : '失败' }} + + + + + + + + + + + 查看 + 删除 + + + + + + + + + + + + + + + 请求ID: + {{ currentRecord.requestId }} + + + + + 模板ID: + {{ currentRecord.templateId }} + + + + + + + 状态: + + {{ currentRecord.success ? '成功' : '失败' }} + + + + + + 状态码: + {{ currentRecord.statusCode }} + + + + + + + 视频URL: + + {{ currentRecord.videoUrl }} + + - + + + + + + + 模型: + {{ currentRecord.model }} + + + + + 处理时间: + {{ currentRecord.processingTimeMs }}ms + + + + + + + 所属人: + {{ currentRecord.ownerName }} + + + + + 联系电话: + {{ currentRecord.ownerPhone }} + + + + + + + 头像名称: + {{ currentRecord.avatarName }} + + + + + + + 请求时间: + {{ currentRecord.requestTime }} + + + + + 响应时间: + {{ currentRecord.responseTime }} + + + + + + + 错误信息: + {{ currentRecord.errorMessage }} + + + + + + + 响应数据: + {{ formatResponseData(currentRecord.responseData) }} + + + + + + + + + + + 请求ID: {{ currentFailureRecord && currentFailureRecord.requestId }} + 失败原因: + + {{ failureReason }} + + + + + + + + + + + + 将文件拖到此处,或点击上传 + 只能上传mp4/avi/mov文件,且不超过100MB + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/video/face-detect.vue b/src/views/video/face-detect.vue index 90fa560..d5e742a 100644 --- a/src/views/video/face-detect.vue +++ b/src/views/video/face-detect.vue @@ -23,10 +23,10 @@ - + @@ -68,7 +68,7 @@ 查询 重置 - 头像URL检测 + 图像URL检测 上传并检测 @@ -87,11 +87,11 @@ - - + + - 查看图片 + 查看图像 - @@ -133,26 +133,27 @@ /> - + - + - - + + + @@ -169,10 +170,10 @@ clearable /> - + @@ -210,7 +211,7 @@ @close="handleUploadAvatarDialogClose" > - + - - + + + @@ -246,10 +248,10 @@ clearable /> - + @@ -282,7 +284,7 @@ export default { failureDialogVisible: false, currentFailureRecord: null, failureReason: '', - // 上传头像相关 - 简化版 + // 上传图像相关 - 简化版 uploadAvatarDialogVisible: false, uploadFileList: [], uploadForm: { @@ -318,7 +320,7 @@ export default { // 表单验证规则 detectRules: { imageUrl: [ - { required: true, message: '请输入图片URL', trigger: 'blur' } + { required: true, message: '请输入图像URL', trigger: 'blur' } ] }, // 模型选项 @@ -355,9 +357,9 @@ export default { this.getList() }, methods: { - // 上传头像对话框打开 + // 上传图像对话框打开 handleUploadAvatarDialogOpen() { - console.log('上传头像对话框打开') + console.log('上传图像对话框打开') // 清空上传组件 this.$nextTick(() => { if (this.$refs.avatarUpload) { @@ -366,7 +368,7 @@ export default { }) }, - // 上传头像 + // 上传图像 handleUploadAvatar() { console.log('=== 开始上传并检测流程 ===') this.uploadFileList = [] @@ -397,9 +399,9 @@ export default { }) }, - // 上传头像对话框关闭 + // 上传图像对话框关闭 handleUploadAvatarDialogClose() { - console.log('上传头像对话框关闭 - 重置文件列表') + console.log('上传图像对话框关闭 - 重置文件列表') this.uploadFileList = [] }, @@ -416,7 +418,7 @@ export default { console.log('上传表单验证结果:', valid) if (valid) { if (this.uploadFileList.length === 0) { - this.$message.error('请先选择要上传的图片') + this.$message.error('请先选择要上传的图像') return } @@ -461,7 +463,7 @@ export default { if (uploadResponse && uploadResponse.success) { const imageUrl = uploadResponse.data?.fileUrl || uploadResponse.data?.url || uploadResponse.url - console.log('获取到图片URL:', imageUrl) + console.log('获取到图像URL:', imageUrl) if (imageUrl) { // 调用检测API @@ -475,7 +477,7 @@ export default { console.log('准备调用检测API:', requestData) await this.callDetectAPI(requestData) } else { - this.$message.error('上传成功但未获取到图片URL') + this.$message.error('上传成功但未获取到图像URL') this.uploadLoading = false } } else { @@ -550,7 +552,7 @@ export default { const isImage = /\.(jpg|jpeg|png|gif)$/.test(file.name.toLowerCase()) if (!isImage) { - this.$message.error('只能上传图片格式的文件!') + this.$message.error('只能上传图像格式的文件!') return false } @@ -593,7 +595,7 @@ export default { }) if (isSuccess) { - // 保存返回的图片URL - 多种可能的字段名 + // 保存返回的图像URL - 多种可能的字段名 const imageUrl = response.data?.fileUrl || response.data?.url || response.url || @@ -618,7 +620,7 @@ export default { }) this.callDetectAPI(requestData) } else { - console.log('未找到图片URL,尝试使用文件信息') + console.log('未找到图像URL,尝试使用文件信息') console.log('文件信息:', file) console.log('响应信息:', response) @@ -637,12 +639,12 @@ export default { console.log('使用文件URL进行检测:', requestData) this.callDetectAPI(requestData) } else { - this.$message.error('上传成功,但未返回图片URL') + this.$message.error('上传成功,但未返回图像URL') this.uploadLoading = false } } } else { - this.$message.error(response?.message || '头像上传失败') + this.$message.error(response?.message || '图像上传失败') this.uploadLoading = false } }, @@ -697,7 +699,7 @@ export default { errorMessage = err.statusText } - this.$message.error('头像上传失败: ' + errorMessage) + this.$message.error('图像上传失败: ' + errorMessage) this.uploadLoading = false }, @@ -715,7 +717,7 @@ export default { const allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'] if (!allowedTypes.includes(file.raw?.type || file.type)) { - this.$message.error('只能上传图片文件') + this.$message.error('只能上传图像文件') this.uploadFileList = [] return } @@ -732,7 +734,7 @@ export default { console.log('上传进度 - 事件:', event) }, - // 复制图片URL + // 复制图像URL copyImageUrl() { const input = document.createElement('input') input.value = this.uploadedImageUrl @@ -900,7 +902,7 @@ export default { // 人脸检测 handleDetect() { - console.log('=== 开始头像URL检测流程 ===') + console.log('=== 开始图像URL检测流程 ===') this.detectForm = { imageUrl: '', model: 'liveportrait-detect', @@ -942,7 +944,7 @@ export default { // 提交检测 handleDetectSubmit() { - console.log('头像检测提交开始') + console.log('图像检测提交开始') this.$refs.detectForm.validate(valid => { console.log('表单验证结果:', valid) if (valid) { @@ -954,8 +956,8 @@ export default { ownerPhone: this.detectForm.ownerPhone, avatarName: this.detectForm.avatarName } - console.log('头像检测请求参数:', requestData) - console.log('头像检测参数验证:', { + console.log('图像检测请求参数:', requestData) + console.log('图像检测参数验证:', { hasModel: !!requestData.model, hasOwnerName: !!requestData.ownerName, hasOwnerPhone: !!requestData.ownerPhone, @@ -1092,7 +1094,7 @@ export default { word-break: break-all; } -/* 上传头像样式 */ +/* 上传图像样式 */ .upload-container { padding: 20px; text-align: center; diff --git a/src/views/video/video-synthesis.vue b/src/views/video/video-synthesis.vue index 8baf8c0..29dc8fc 100644 --- a/src/views/video/video-synthesis.vue +++ b/src/views/video/video-synthesis.vue @@ -82,8 +82,8 @@ - + @@ -95,7 +95,6 @@ - @@ -163,6 +162,25 @@ + + + + 视频名称: + {{ currentRecord.videoName || '-' }} + + + + + + + 视频临时URL: + + {{ currentRecord.videoTempUrl }} + + - + + + @@ -174,6 +192,28 @@ + + + + 头像URL: + + {{ currentRecord.imageUrl }} + + - + + + + + + + 音频URL: + + {{ currentRecord.audioUrl }} + + - + + + @@ -364,6 +404,9 @@ export default { taskStatus: 'completed', videoName: '头像合成视频_001', videoUrl: 'http://example.com/videos/synthesized-001.mp4', + videoTempUrl: 'http://temp.example.com/videos/temp-001.mp4', + imageUrl: 'http://example.com/avatars/avatar-001.jpg', + audioUrl: 'http://example.com/audio/audio-001.mp3', videoDuration: 15, videoRatio: '16:9', processingTimeMs: 3500,
请求ID: {{ currentFailureRecord && currentFailureRecord.requestId }}
失败原因:
{{ failureReason }}