|
@@ -40,7 +40,7 @@
|
|
|
v-for="em in plutchikEmotions"
|
|
v-for="em in plutchikEmotions"
|
|
|
:key="em.type"
|
|
:key="em.type"
|
|
|
:class="['emotion-btn', selectedEmotionType === em.type ? 'emotion-active' : '']"
|
|
:class="['emotion-btn', selectedEmotionType === em.type ? 'emotion-active' : '']"
|
|
|
- :style="{ borderColor: selectedEmotionType === em.type ? em.color : '#eee' }"
|
|
|
|
|
|
|
+ :style="{ borderColor: selectedEmotionType === em.type ? em.color : emotionNeutralBorder }"
|
|
|
@click="selectedEmotionType = em.type">
|
|
@click="selectedEmotionType = em.type">
|
|
|
<text class="emotion-icon">{{ em.icon }}</text>
|
|
<text class="emotion-icon">{{ em.icon }}</text>
|
|
|
<text class="emotion-label">{{ em.label }}</text>
|
|
<text class="emotion-label">{{ em.label }}</text>
|
|
@@ -53,7 +53,7 @@
|
|
|
<text class="section-title">情绪强度</text>
|
|
<text class="section-title">情绪强度</text>
|
|
|
<view class="slider-row">
|
|
<view class="slider-row">
|
|
|
<text class="slider-label">弱</text>
|
|
<text class="slider-label">弱</text>
|
|
|
- <slider class="custom-slider" min="1" max="10" :value="intensityLevel" @change="onIntensityChange" activeColor="#FF6B9D" block-size="20" />
|
|
|
|
|
|
|
+ <slider class="custom-slider" min="1" max="10" :value="intensityLevel" @change="onIntensityChange" :active-color="emotionSliderIntensity" block-size="20" />
|
|
|
<text class="slider-value">{{ intensityLevel }}</text>
|
|
<text class="slider-value">{{ intensityLevel }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="intensity-hint">{{ intensityHint }}</view>
|
|
<view class="intensity-hint">{{ intensityHint }}</view>
|
|
@@ -64,7 +64,7 @@
|
|
|
<text class="section-title">精力水平</text>
|
|
<text class="section-title">精力水平</text>
|
|
|
<view class="slider-row">
|
|
<view class="slider-row">
|
|
|
<text class="slider-label">低</text>
|
|
<text class="slider-label">低</text>
|
|
|
- <slider class="custom-slider" min="1" max="10" :value="energyLevel" @change="onEnergyChange" activeColor="#10B981" block-size="20" />
|
|
|
|
|
|
|
+ <slider class="custom-slider" min="1" max="10" :value="energyLevel" @change="onEnergyChange" :active-color="emotionSliderEnergy" block-size="20" />
|
|
|
<text class="slider-value">{{ energyLevel }}</text>
|
|
<text class="slider-value">{{ energyLevel }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -74,7 +74,7 @@
|
|
|
<text class="section-title">压力水平</text>
|
|
<text class="section-title">压力水平</text>
|
|
|
<view class="slider-row">
|
|
<view class="slider-row">
|
|
|
<text class="slider-label">无压力</text>
|
|
<text class="slider-label">无压力</text>
|
|
|
- <slider class="custom-slider" min="1" max="10" :value="stressLevel" @change="onStressChange" activeColor="#F59E0B" block-size="20" />
|
|
|
|
|
|
|
+ <slider class="custom-slider" min="1" max="10" :value="stressLevel" @change="onStressChange" :active-color="emotionSliderStress" block-size="20" />
|
|
|
<text class="slider-value">{{ stressLevel }}</text>
|
|
<text class="slider-value">{{ stressLevel }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -213,6 +213,7 @@ export default {
|
|
|
// --- 2D 效价-激活度网格 ---
|
|
// --- 2D 效价-激活度网格 ---
|
|
|
affectValence: 5, // 1-10
|
|
affectValence: 5, // 1-10
|
|
|
affectArousal: 5, // 1-10
|
|
affectArousal: 5, // 1-10
|
|
|
|
|
+ emotionNeutralBorder: BrandColors.hairline2, // 未选中情绪描边
|
|
|
gridWidth: 360, // rpx, 会在 onReady 中动态计算
|
|
gridWidth: 360, // rpx, 会在 onReady 中动态计算
|
|
|
gridHeight: 360,
|
|
gridHeight: 360,
|
|
|
|
|
|
|
@@ -220,6 +221,9 @@ export default {
|
|
|
selectedEmotionType: '',
|
|
selectedEmotionType: '',
|
|
|
|
|
|
|
|
// --- 滑条 ---
|
|
// --- 滑条 ---
|
|
|
|
|
+ emotionSliderIntensity: BrandColors.mind, // 强度滑条主色
|
|
|
|
|
+ emotionSliderEnergy: BrandColors.action, // 精力滑条主色
|
|
|
|
|
+ emotionSliderStress: BrandColors.wealth, // 压力滑条主色
|
|
|
intensityLevel: 5,
|
|
intensityLevel: 5,
|
|
|
energyLevel: 6,
|
|
energyLevel: 6,
|
|
|
stressLevel: 4,
|
|
stressLevel: 4,
|
|
@@ -237,14 +241,14 @@ export default {
|
|
|
aiAnalyzing: false,
|
|
aiAnalyzing: false,
|
|
|
aiResult: null,
|
|
aiResult: null,
|
|
|
aiEmotionColors: {
|
|
aiEmotionColors: {
|
|
|
- '开心': 'BrandColors.success',
|
|
|
|
|
- '平静': '#3B82F6',
|
|
|
|
|
- '惊喜': '#8B5CF6',
|
|
|
|
|
- '难过': '#6B9BD2',
|
|
|
|
|
- '生气': 'BrandColors.danger',
|
|
|
|
|
- '紧张': '#F59E0B',
|
|
|
|
|
- '疲惫': '#9CA3AF',
|
|
|
|
|
- '害怕': '#7C3AED'
|
|
|
|
|
|
|
+ '开心': BrandColors.success,
|
|
|
|
|
+ '平静': BrandColors.infoBlue,
|
|
|
|
|
+ '惊喜': BrandColors.violet,
|
|
|
|
|
+ '难过': BrandColors.emotionSadness,
|
|
|
|
|
+ '生气': BrandColors.danger,
|
|
|
|
|
+ '紧张': BrandColors.wealth,
|
|
|
|
|
+ '疲惫': BrandColors.textGray400,
|
|
|
|
|
+ '害怕': BrandColors.violetDeep'
|
|
|
},
|
|
},
|
|
|
stats: null,
|
|
stats: null,
|
|
|
|
|
|
|
@@ -253,14 +257,14 @@ export default {
|
|
|
|
|
|
|
|
// Plutchik 8 基本情绪
|
|
// Plutchik 8 基本情绪
|
|
|
plutchikEmotions: [
|
|
plutchikEmotions: [
|
|
|
- { type: 'joy', icon: '\uD83D\uDE04', label: '开心', color: '#FFD93D' },
|
|
|
|
|
- { type: 'trust', icon: '\uD83E\uDD1D', label: '信任', color: '#6BCB77' },
|
|
|
|
|
- { type: 'fear', icon: '\uD83D\uDE31', label: '恐惧', color: '#9B59B6' },
|
|
|
|
|
- { type: 'surprise', icon: '\uD83D\uDE32', label: '惊讶', color: '#FF9FF3' },
|
|
|
|
|
- { type: 'sadness', icon: '\uD83D\uDE22', label: '悲伤', color: '#6B9BD2' },
|
|
|
|
|
- { type: 'disgust', icon: '\uD83E\uDD2E', label: '厌恶', color: '#A0A0A0' },
|
|
|
|
|
- { type: 'anger', icon: '\uD83D\uDE21', label: '愤怒', color: '#FF6B6B' },
|
|
|
|
|
- { type: 'anticipation',icon: '\uD83E\uDD29', label: '期待', color: 'BrandColors.body' }
|
|
|
|
|
|
|
+ { type: 'joy', icon: '\uD83D\uDE04', label: '开心', color: BrandColors.emotionJoy },
|
|
|
|
|
+ { type: 'trust', icon: '\uD83E\uDD1D', label: '信任', color: BrandColors.emotionTrust },
|
|
|
|
|
+ { type: 'fear', icon: '\uD83D\uDE31', label: '恐惧', color: BrandColors.emotionFear },
|
|
|
|
|
+ { type: 'surprise', icon: '\uD83D\uDE32', label: '惊讶', color: BrandColors.emotionSurprise },
|
|
|
|
|
+ { type: 'sadness', icon: '\uD83D\uDE22', label: '悲伤', color: BrandColors.emotionSadness },
|
|
|
|
|
+ { type: 'disgust', icon: '\uD83E\uDD2E', label: '厌恶', color: BrandColors.emotionDisgust },
|
|
|
|
|
+ { type: 'anger', icon: '\uD83D\uDE21', label: '愤怒', color: BrandColors.emotionAnger },
|
|
|
|
|
+ { type: 'anticipation',icon: '\uD83E\uDD29', label: '期待', color: BrandColors.body }
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
emotionTags: ['开心', '期待', '平静', '惊喜', '难过', '生气', '紧张', '无聊', '疲惫', '害怕'],
|
|
emotionTags: ['开心', '期待', '平静', '惊喜', '难过', '生气', '紧张', '无聊', '疲惫', '害怕'],
|
|
@@ -574,38 +578,38 @@ export default {
|
|
|
if (valence >= 6 && arousal >= 6) {
|
|
if (valence >= 6 && arousal >= 6) {
|
|
|
// Q1: 高激活 + 积极 → 开心/兴奋/惊喜
|
|
// Q1: 高激活 + 积极 → 开心/兴奋/惊喜
|
|
|
emotionPool = [
|
|
emotionPool = [
|
|
|
- { label: '开心', base: 38, color: 'BrandColors.success' },
|
|
|
|
|
- { label: '兴奋', base: 22, color: '#8B5CF6' },
|
|
|
|
|
- { label: '惊喜', base: 18, color: '#FF9FF3' },
|
|
|
|
|
- { label: '满足', base: 12, color: '#3B82F6' },
|
|
|
|
|
- { label: '期待', base: 10, color: '#F59E0B' }
|
|
|
|
|
|
|
+ { label: '开心', base: 38, color: BrandColors.success },
|
|
|
|
|
+ { label: '兴奋', base: 22, color: BrandColors.violet },
|
|
|
|
|
+ { label: '惊喜', base: 18, color: BrandColors.emotionSurprise },
|
|
|
|
|
+ { label: '满足', base: 12, color: BrandColors.infoBlue },
|
|
|
|
|
+ { label: '期待', base: 10, color: BrandColors.wealth }
|
|
|
]
|
|
]
|
|
|
} else if (valence >= 6 && arousal < 6) {
|
|
} else if (valence >= 6 && arousal < 6) {
|
|
|
// Q2: 低激活 + 积极 → 平静/满足/放松
|
|
// Q2: 低激活 + 积极 → 平静/满足/放松
|
|
|
emotionPool = [
|
|
emotionPool = [
|
|
|
- { label: '平静', base: 32, color: '#3B82F6' },
|
|
|
|
|
- { label: '满足', base: 25, color: 'BrandColors.success' },
|
|
|
|
|
- { label: '放松', base: 20, color: '#6B9BD2' },
|
|
|
|
|
- { label: '开心', base: 15, color: 'BrandColors.success' },
|
|
|
|
|
- { label: '无聊', base: 8, color: '#9CA3AF' }
|
|
|
|
|
|
|
+ { label: '平静', base: 32, color: BrandColors.infoBlue },
|
|
|
|
|
+ { label: '满足', base: 25, color: BrandColors.success },
|
|
|
|
|
+ { label: '放松', base: 20, color: BrandColors.emotionSadness },
|
|
|
|
|
+ { label: '开心', base: 15, color: BrandColors.success },
|
|
|
|
|
+ { label: '无聊', base: 8, color: BrandColors.textGray400 }
|
|
|
]
|
|
]
|
|
|
} else if (valence < 6 && arousal >= 6) {
|
|
} else if (valence < 6 && arousal >= 6) {
|
|
|
// Q3: 高激活 + 消极 → 生气/紧张/恐惧
|
|
// Q3: 高激活 + 消极 → 生气/紧张/恐惧
|
|
|
emotionPool = [
|
|
emotionPool = [
|
|
|
- { label: '紧张', base: 30, color: '#F59E0B' },
|
|
|
|
|
- { label: '生气', base: 25, color: 'BrandColors.danger' },
|
|
|
|
|
- { label: '烦躁', base: 20, color: '#FF6B6B' },
|
|
|
|
|
- { label: '恐惧', base: 15, color: '#7C3AED' },
|
|
|
|
|
- { label: '厌恶', base: 10, color: '#A0A0A0' }
|
|
|
|
|
|
|
+ { label: '紧张', base: 30, color: BrandColors.wealth },
|
|
|
|
|
+ { label: '生气', base: 25, color: BrandColors.danger },
|
|
|
|
|
+ { label: '烦躁', base: 20, color: BrandColors.emotionAnger },
|
|
|
|
|
+ { label: '恐惧', base: 15, color: BrandColors.violetDeep },
|
|
|
|
|
+ { label: '厌恶', base: 10, color: BrandColors.emotionDisgust }
|
|
|
]
|
|
]
|
|
|
} else {
|
|
} else {
|
|
|
// Q4: 低激活 + 消极 → 难过/疲惫/低落
|
|
// Q4: 低激活 + 消极 → 难过/疲惫/低落
|
|
|
emotionPool = [
|
|
emotionPool = [
|
|
|
- { label: '难过', base: 32, color: '#6B9BD2' },
|
|
|
|
|
- { label: '疲惫', base: 28, color: '#9CA3AF' },
|
|
|
|
|
- { label: '低落', base: 20, color: '#6B7280' },
|
|
|
|
|
- { label: '平静', base: 12, color: '#3B82F6' },
|
|
|
|
|
- { label: '无聊', base: 8, color: '#9CA3AF' }
|
|
|
|
|
|
|
+ { label: '难过', base: 32, color: BrandColors.emotionSadness },
|
|
|
|
|
+ { label: '疲惫', base: 28, color: BrandColors.textGray400 },
|
|
|
|
|
+ { label: '低落', base: 20, color: BrandColors.textSlate },
|
|
|
|
|
+ { label: '平静', base: 12, color: BrandColors.infoBlue },
|
|
|
|
|
+ { label: '无聊', base: 8, color: BrandColors.textGray400 }
|
|
|
]
|
|
]
|
|
|
}
|
|
}
|
|
|
|
|
|