|
|
@@ -195,6 +195,7 @@ export default {
|
|
|
customTag: '',
|
|
|
showCustomTagInput: false,
|
|
|
photoPath: '',
|
|
|
+ photoUrl: '',
|
|
|
note: '',
|
|
|
submitting: false,
|
|
|
aiAnalyzing: false,
|
|
|
@@ -428,35 +429,57 @@ export default {
|
|
|
},
|
|
|
|
|
|
analyzeEmotion() {
|
|
|
- this.aiAnalyzing = true
|
|
|
- this.aiResult = null
|
|
|
var self = this
|
|
|
- setTimeout(function() {
|
|
|
- self.aiAnalyzing = false
|
|
|
- var baseEmotions = [
|
|
|
- { label: '开心', confidence: 45, color: '#10B981' },
|
|
|
- { label: '平静', confidence: 30, color: '#3B82F6' },
|
|
|
- { label: '惊喜', confidence: 15, color: '#8B5CF6' },
|
|
|
- { label: '疲惫', confidence: 10, color: '#9CA3AF' }
|
|
|
- ]
|
|
|
- // Adjust based on affect valence
|
|
|
- if (self.affectValence <= 4) {
|
|
|
- baseEmotions = [
|
|
|
- { label: '难过', confidence: 55, color: '#6B9BD2' },
|
|
|
- { label: '疲惫', confidence: 25, color: '#9CA3AF' },
|
|
|
- { label: '平静', confidence: 12, color: '#3B82F6' },
|
|
|
- { label: '生气', confidence: 8, color: '#EF4444' }
|
|
|
- ]
|
|
|
- } else if (self.affectValence >= 8) {
|
|
|
- baseEmotions = [
|
|
|
- { label: '开心', confidence: 60, color: '#10B981' },
|
|
|
- { label: '惊喜', confidence: 25, color: '#8B5CF6' },
|
|
|
- { label: '平静', confidence: 10, color: '#3B82F6' },
|
|
|
- { label: '期待', confidence: 5, color: '#F59E0B' }
|
|
|
- ]
|
|
|
+ if (!self.photoPath) {
|
|
|
+ uni.showToast({ title: '请先拍照', icon: 'none' })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ self.aiAnalyzing = true
|
|
|
+ self.aiResult = null
|
|
|
+ uni.uploadFile({
|
|
|
+ url: config.API_BASE_URL + '/api/media/upload',
|
|
|
+ filePath: self.photoPath,
|
|
|
+ name: 'file',
|
|
|
+ success: function(uploadRes) {
|
|
|
+ var photoUrl = ''
|
|
|
+ try {
|
|
|
+ var data = JSON.parse(uploadRes.data)
|
|
|
+ photoUrl = data.data || data.url || ''
|
|
|
+ self.photoUrl = photoUrl
|
|
|
+ } catch (e) {
|
|
|
+ photoUrl = uploadRes.data || ''
|
|
|
+ self.photoUrl = photoUrl
|
|
|
+ }
|
|
|
+ if (!photoUrl) {
|
|
|
+ self.aiAnalyzing = false
|
|
|
+ uni.showToast({ title: '照片上传失败', icon: 'none' })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ uni.request({
|
|
|
+ url: config.API_BASE_URL + '/api/mind/checkin/emotion/recognize',
|
|
|
+ method: 'POST',
|
|
|
+ data: { image_url: photoUrl },
|
|
|
+ header: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + uni.getStorageSync('token') },
|
|
|
+ success: function(res) {
|
|
|
+ self.aiAnalyzing = false
|
|
|
+ if (res.data && res.data.code === 200 && res.data.data && res.data.data.length > 0) {
|
|
|
+ self.aiResult = res.data.data
|
|
|
+ } else {
|
|
|
+ self.aiResult = []
|
|
|
+ uni.showToast({ title: '识别失败,请重试', icon: 'none' })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: function() {
|
|
|
+ self.aiAnalyzing = false
|
|
|
+ uni.showToast({ title: '网络错误', icon: 'none' })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ fail: function() {
|
|
|
+ self.aiAnalyzing = false
|
|
|
+ uni.showToast({ title: '照片上传失败', icon: 'none' })
|
|
|
}
|
|
|
- self.aiResult = baseEmotions
|
|
|
- }, 1200)
|
|
|
+ })
|
|
|
},
|
|
|
|
|
|
applyAiTags() {
|
|
|
@@ -525,7 +548,9 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- if (this.photoPath) {
|
|
|
+ if (this.photoUrl) {
|
|
|
+ doSubmit(this.photoUrl)
|
|
|
+ } else if (this.photoPath) {
|
|
|
uni.uploadFile({
|
|
|
url: config.API_BASE_URL + '/api/media/upload',
|
|
|
filePath: this.photoPath,
|
|
|
@@ -535,6 +560,7 @@ export default {
|
|
|
try {
|
|
|
const data = JSON.parse(uploadRes.data)
|
|
|
photoUrl = data.data || data.url || ''
|
|
|
+ self.photoUrl = photoUrl
|
|
|
} catch (e) {
|
|
|
photoUrl = uploadRes.data
|
|
|
}
|