|
|
@@ -4,11 +4,11 @@
|
|
|
<!-- 添加抽屉 -->
|
|
|
<div class="drawer-box">
|
|
|
<el-button
|
|
|
- v-if="!drawerVisible"
|
|
|
- type="primary"
|
|
|
- @click="drawerVisible = true"
|
|
|
- @closed="buttonVisible = false"
|
|
|
- class="toggle-button"
|
|
|
+ v-if="!drawerVisible"
|
|
|
+ type="primary"
|
|
|
+ @click="drawerVisible = true"
|
|
|
+ @closed="buttonVisible = false"
|
|
|
+ class="toggle-button"
|
|
|
>
|
|
|
课程小节
|
|
|
</el-button>
|
|
|
@@ -26,8 +26,8 @@
|
|
|
>
|
|
|
<template v-for="item in menuItems" :key="item.index">
|
|
|
<el-menu-item v-if="!item.children" :index="item.index">{{
|
|
|
- item.title
|
|
|
- }}</el-menu-item>
|
|
|
+ item.title
|
|
|
+ }}</el-menu-item>
|
|
|
<el-sub-menu v-else :index="item.index">
|
|
|
<template #title>
|
|
|
<span>{{ item.title }}</span>
|
|
|
@@ -35,8 +35,8 @@
|
|
|
<el-menu-item-group v-if="item.children">
|
|
|
<template v-for="child in item.children" :key="child.index">
|
|
|
<el-menu-item :index="child.index">{{
|
|
|
- child.title
|
|
|
- }}</el-menu-item>
|
|
|
+ child.title
|
|
|
+ }}</el-menu-item>
|
|
|
</template>
|
|
|
</el-menu-item-group>
|
|
|
</el-sub-menu>
|
|
|
@@ -57,9 +57,9 @@
|
|
|
<div class="inner-box right-box">
|
|
|
<div class="top-right-box">
|
|
|
<el-input
|
|
|
- v-model="SearchInput"
|
|
|
- class="search-input"
|
|
|
- placeholder="搜索"
|
|
|
+ v-model="SearchInput"
|
|
|
+ class="search-input"
|
|
|
+ placeholder="搜索"
|
|
|
>
|
|
|
<template #prefix>
|
|
|
<el-icon class="el-input__icon"><search /></el-icon>
|
|
|
@@ -73,26 +73,29 @@
|
|
|
<div class="small-title">
|
|
|
<span>{{ smallTitle }}</span>
|
|
|
</div>
|
|
|
- <video
|
|
|
- class="full-box-video"
|
|
|
- :src="videoSrc"
|
|
|
- controlsList="nodownload"
|
|
|
- controls
|
|
|
- @timeupdate="handleTimeUpdate"
|
|
|
- ref="videoRef"
|
|
|
- >
|
|
|
- <source :src="videoSrc" type="video/mp4" />
|
|
|
- 您的浏览器不支持视频播放。
|
|
|
- </video>
|
|
|
+ <div class="box-video">
|
|
|
+ <video
|
|
|
+ class="full-box-video"
|
|
|
+ :src="videoSrc"
|
|
|
+ controlsList="nodownload"
|
|
|
+ controls
|
|
|
+ @timeupdate="handleTimeUpdate"
|
|
|
+ ref="videoRef"
|
|
|
+ >
|
|
|
+ <source :src="videoSrc" type="video/mp4" />
|
|
|
+ 您的浏览器不支持视频播放。
|
|
|
+ </video>
|
|
|
+ </div>
|
|
|
+
|
|
|
<!-- 添加切换视频 -->
|
|
|
<div class="video-switch">
|
|
|
<!-- 上一个视频 -->
|
|
|
<div class="caret-left" @click="playPreviousVideo">
|
|
|
- <el-button type="warning" round>上一个</el-button>
|
|
|
+ <el-button type="warning" round>上一节</el-button>
|
|
|
</div>
|
|
|
<!-- 下一个视频 -->
|
|
|
<div class="caret-right" @click="playNextVideo">
|
|
|
- <el-button type="warning" round>下一个</el-button>
|
|
|
+ <el-button type="warning" round>下一节</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -102,83 +105,97 @@
|
|
|
v-show="questionDialogVisible"
|
|
|
class="child-dialog-wrapper"
|
|
|
@click.self="handleCloseQuestionDialog"
|
|
|
- >
|
|
|
- <div class="child-dialog">
|
|
|
- <div class="question-title">
|
|
|
- <span class="question-icon">?</span>
|
|
|
- {{ currentQuestion.title }}
|
|
|
- </div>
|
|
|
- <!-- 选项区域 -->
|
|
|
- <div v-if="currentQuestion.options && currentQuestion.options.length > 0" class="options-container">
|
|
|
+ >
|
|
|
+ <div class="child-dialog">
|
|
|
+ <div class="question-title">
|
|
|
+ <span class="question-icon">?</span>
|
|
|
+ {{ currentQuestion.title }}
|
|
|
+ </div>
|
|
|
+ <!-- 选项区域 -->
|
|
|
<div
|
|
|
+ v-if="currentQuestion.options && currentQuestion.options.length > 0"
|
|
|
+ class="options-container"
|
|
|
+ >
|
|
|
+ <div
|
|
|
v-for="(option, index) in currentQuestion.options"
|
|
|
:key="index"
|
|
|
class="question-option"
|
|
|
- >
|
|
|
- <el-radio v-model="selectedOption" :label="index" :value="option" v-cloak="selectedOption = option">
|
|
|
- <span>{{ option }}</span>
|
|
|
- </el-radio>
|
|
|
+ >
|
|
|
+ <el-radio
|
|
|
+ v-model="selectedOption"
|
|
|
+ :label="index"
|
|
|
+ :value="option"
|
|
|
+ v-cloak="(selectedOption = option)"
|
|
|
+ >
|
|
|
+ <span>{{ option }}</span>
|
|
|
+ </el-radio>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else class="no-options">
|
|
|
+ <!-- 暂无选项-->
|
|
|
+ </div>
|
|
|
+ <!-- 底部按钮 -->
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <!-- <el-button class="child-button cancel" @click="questionDialogVisible = false; showAIDialog = false">取消</el-button>-->
|
|
|
+ <el-button class="child-button confirm" @click="handleSubmitAnswer"
|
|
|
+ >确定</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <!-- 右侧小图标 -->
|
|
|
+ <div class="ai-icon-container" @click="handleAIClick">
|
|
|
+ <img
|
|
|
+ src="@/assets/images/xiaozhi.png"
|
|
|
+ alt="AI对话"
|
|
|
+ class="ai-icon"
|
|
|
+ />
|
|
|
+ <span class="ai-text">AI助手</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div v-else class="no-options">
|
|
|
-<!-- 暂无选项-->
|
|
|
- </div>
|
|
|
- <!-- 底部按钮 -->
|
|
|
- <div class="dialog-footer">
|
|
|
-<!-- <el-button class="child-button cancel" @click="questionDialogVisible = false; showAIDialog = false">取消</el-button>-->
|
|
|
- <el-button class="child-button confirm" @click="handleSubmitAnswer">确定</el-button>
|
|
|
- </div>
|
|
|
- <!-- 右侧小图标 -->
|
|
|
- <div class="ai-icon-container" @click="handleAIClick">
|
|
|
- <img src="@/assets/images/xiaozhi.png" alt="AI对话" class="ai-icon" />
|
|
|
- <span class="ai-text">AI助手</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
</transition>
|
|
|
|
|
|
<!-- AI对话弹框 -->
|
|
|
<div
|
|
|
- v-show="showAIDialog"
|
|
|
- class="ai-dialog-wrapper"
|
|
|
- @click.self="showAIDialog = false"
|
|
|
+ v-show="showAIDialog"
|
|
|
+ class="ai-dialog-wrapper"
|
|
|
+ @click.self="showAIDialog = false"
|
|
|
>
|
|
|
<div class="ai-dialog">
|
|
|
<div class="ai-dialog-header">
|
|
|
<h3>小智智能助手</h3>
|
|
|
- <el-button @click="showAIDialog = false" class="close-btn">×</el-button>
|
|
|
+ <el-button @click="showAIDialog = false" class="close-btn"
|
|
|
+ >×</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
<div class="ai-dialog-content">
|
|
|
<div class="ai-message-history">
|
|
|
<div
|
|
|
- v-for="(message, index) in messageHistory"
|
|
|
- :key="index"
|
|
|
- :class="['message', message.type]"
|
|
|
+ v-for="(message, index) in messageHistory"
|
|
|
+ :key="index"
|
|
|
+ :class="['message', message.type]"
|
|
|
>
|
|
|
<img
|
|
|
- v-if="message.type === 'user'"
|
|
|
- src="@/assets/images/user.png"
|
|
|
- class="avatar user"
|
|
|
- />
|
|
|
- <img
|
|
|
- v-else
|
|
|
- src="@/assets/images/xiaozhi.png"
|
|
|
- class="avatar"
|
|
|
+ v-if="message.type === 'user'"
|
|
|
+ src="@/assets/images/user.png"
|
|
|
+ class="avatar user"
|
|
|
/>
|
|
|
+ <img v-else src="@/assets/images/xiaozhi.png" class="avatar" />
|
|
|
<div class="message-content">
|
|
|
{{ message.content }}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-input
|
|
|
- v-model="userMessage"
|
|
|
- placeholder="输入问题..."
|
|
|
- class="user-input"
|
|
|
- @keyup.enter="sendMessage"
|
|
|
+ v-model="userMessage"
|
|
|
+ placeholder="输入问题..."
|
|
|
+ class="user-input"
|
|
|
+ @keyup.enter="sendMessage"
|
|
|
>
|
|
|
<template #append class="flex flex-wrap items-center mb-4">
|
|
|
-<!-- <el-button @click="sendMessage" class="child-button confirm">发送</el-button>-->
|
|
|
- <el-button @click="sendMessage" size="large" round>发送</el-button>
|
|
|
+ <!-- <el-button @click="sendMessage" class="child-button confirm">发送</el-button>-->
|
|
|
+ <el-button @click="sendMessage" size="large" round
|
|
|
+ >发送</el-button
|
|
|
+ >
|
|
|
</template>
|
|
|
</el-input>
|
|
|
</div>
|
|
|
@@ -190,7 +207,12 @@
|
|
|
<script setup>
|
|
|
import { ref, onMounted } from 'vue'
|
|
|
import { useRouter } from 'vue-router'
|
|
|
-import { ArrowDown, ArrowRightBold, CaretRight,CaretLeft } from '@element-plus/icons-vue'
|
|
|
+import {
|
|
|
+ ArrowDown,
|
|
|
+ ArrowRightBold,
|
|
|
+ CaretRight,
|
|
|
+ CaretLeft
|
|
|
+} from '@element-plus/icons-vue'
|
|
|
import { Search, ArrowLeftBold } from '@element-plus/icons-vue'
|
|
|
import { valueEquals } from 'element-plus'
|
|
|
// 引入视频
|
|
|
@@ -331,7 +353,7 @@ const flattenMenuItems = () => {
|
|
|
}
|
|
|
|
|
|
// 播放下一个视频
|
|
|
-const playNextVideo = () => {
|
|
|
+const playNextVideo = () => {
|
|
|
const allIndices = flattenMenuItems()
|
|
|
const currentIndexInList = allIndices.indexOf(currentIndex.value)
|
|
|
if (currentIndexInList !== -1 && currentIndexInList < allIndices.length - 1) {
|
|
|
@@ -339,7 +361,9 @@ const playNextVideo = () => {
|
|
|
handleSelect(nextIndex)
|
|
|
// 切换视频后自动播放
|
|
|
if (videoRef.value) {
|
|
|
- videoRef.value.addEventListener('loadedmetadata', tryPlayVideo, { once: true })
|
|
|
+ videoRef.value.addEventListener('loadedmetadata', tryPlayVideo, {
|
|
|
+ once: true
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
// 重置
|
|
|
@@ -357,7 +381,9 @@ const playPreviousVideo = () => {
|
|
|
handleSelect(previousIndex)
|
|
|
// 切换视频后自动播放
|
|
|
if (videoRef.value) {
|
|
|
- videoRef.value.addEventListener('loadedmetadata', tryPlayVideo, { once: true })
|
|
|
+ videoRef.value.addEventListener('loadedmetadata', tryPlayVideo, {
|
|
|
+ once: true
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -371,7 +397,6 @@ const tryPlayVideo = () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 视频 ref
|
|
|
const videoRef = ref(null)
|
|
|
// 记录已经暂停过的时间点索引
|
|
|
@@ -399,7 +424,8 @@ const videoPauseTimes = {
|
|
|
title: '视频当中发生了什么事情呢?',
|
|
|
options: [],
|
|
|
aiQuestion: '视频当中发生了什么事情呢',
|
|
|
- aiAnswer: '让我来告诉你吧:泡泡怪篡改了Ai历史数据,导致Ai系统发生崩溃,所以要修正Ai历史抓到泡泡怪!'
|
|
|
+ aiAnswer:
|
|
|
+ '让我来告诉你吧:泡泡怪篡改了Ai历史数据,导致Ai系统发生崩溃,所以要修正Ai历史抓到泡泡怪!'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
@@ -410,7 +436,8 @@ const videoPauseTimes = {
|
|
|
title: '视频当中发生了什么事情呢?',
|
|
|
options: [],
|
|
|
aiQuestion: '视频当中发生了什么事情呢',
|
|
|
- aiAnswer: '让我来告诉你吧:泡泡怪篡改了Ai历史数据,导致Ai系统发生崩溃,所以要修正Ai历史抓到泡泡怪!'
|
|
|
+ aiAnswer:
|
|
|
+ '让我来告诉你吧:泡泡怪篡改了Ai历史数据,导致Ai系统发生崩溃,所以要修正Ai历史抓到泡泡怪!'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
@@ -421,7 +448,8 @@ const videoPauseTimes = {
|
|
|
title: '你觉得deepseek、豆包等大模型可以通过图灵测试吗?为什么?',
|
|
|
options: [],
|
|
|
aiQuestion: '你觉得deepseek、豆包等大模型可以通过图灵测试吗?为什么?',
|
|
|
- aiAnswer: '大模型已缩短与图灵测试的标志距离,尤其在表面对话层面,但因缺乏深层次理解、逻辑一致性与真实认知,仍无法在严格测试中稳定通过。'
|
|
|
+ aiAnswer:
|
|
|
+ '大模型已缩短与图灵测试的标志距离,尤其在表面对话层面,但因缺乏深层次理解、逻辑一致性与真实认知,仍无法在严格测试中稳定通过。'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
@@ -437,10 +465,10 @@ const videoPauseTimes = {
|
|
|
]
|
|
|
},
|
|
|
[video6]: {
|
|
|
- pauseTimes: [5],
|
|
|
+ pauseTimes: [5]
|
|
|
},
|
|
|
[video7]: {
|
|
|
- pauseTimes: [64,91],
|
|
|
+ pauseTimes: [64, 91],
|
|
|
questions: [
|
|
|
{
|
|
|
title: '如果你是聊天机器人,你会怎么回答用户呢?',
|
|
|
@@ -449,11 +477,14 @@ const videoPauseTimes = {
|
|
|
aiAnswer: '发生什么事情了呢?'
|
|
|
},
|
|
|
{
|
|
|
- title: '当我们和聊天机器人对话的内容被人类所查看并回答时,隐私信息是否泄露?',
|
|
|
+ title:
|
|
|
+ '当我们和聊天机器人对话的内容被人类所查看并回答时,隐私信息是否泄露?',
|
|
|
options: [],
|
|
|
- aiQuestion: '当我们和聊天机器人对话的内容被人类所查看并回答时,隐私信息是否泄露?',
|
|
|
- aiAnswer: '与聊天机器人的对话被人类查看时,隐私泄露风险客\n' +
|
|
|
- '观存在,尤其是人类介入或安全漏洞场景下。建议优先选择支持本地'
|
|
|
+ aiQuestion:
|
|
|
+ '当我们和聊天机器人对话的内容被人类所查看并回答时,隐私信息是否泄露?',
|
|
|
+ aiAnswer:
|
|
|
+ '与聊天机器人的对话被人类查看时,隐私泄露风险客\n' +
|
|
|
+ '观存在,尤其是人类介入或安全漏洞场景下。建议优先选择支持本地'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
@@ -463,7 +494,8 @@ const videoPauseTimes = {
|
|
|
{
|
|
|
title: '如果你身体不舒服时找这样的专家检查,那么它开的药你敢喝吗?',
|
|
|
options: [],
|
|
|
- aiQuestion: '如果你身体不舒服时找这样的专家检查,那么它开的药你敢喝吗?',
|
|
|
+ aiQuestion:
|
|
|
+ '如果你身体不舒服时找这样的专家检查,那么它开的药你敢喝吗?',
|
|
|
aiAnswer: '这题没给答案,你自己去查吧!'
|
|
|
}
|
|
|
]
|
|
|
@@ -475,12 +507,13 @@ const videoPauseTimes = {
|
|
|
title: '在生活中,有哪些正在使用的专家系统呢?',
|
|
|
options: [],
|
|
|
aiQuestion: '在生活中,有哪些正在使用的专家系统呢?',
|
|
|
- aiAnswer: '在医疗健康领域有复杂疾病协同决策和Ai医生分身与诊断辅助;在水利交通领域的水利厅专家库系统用于项目验收和抢险督查'
|
|
|
+ aiAnswer:
|
|
|
+ '在医疗健康领域有复杂疾病协同决策和Ai医生分身与诊断辅助;在水利交通领域的水利厅专家库系统用于项目验收和抢险督查'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
[video11]: {
|
|
|
- pauseTimes: [1,90,176],
|
|
|
+ pauseTimes: [1, 90, 176],
|
|
|
questions: [
|
|
|
{
|
|
|
title: '怎么会有爆炸声?泡泡怪在这里吗?',
|
|
|
@@ -498,12 +531,13 @@ const videoPauseTimes = {
|
|
|
title: '为什么AlphaGo要在围棋上攻克真人冠军呢?',
|
|
|
options: [],
|
|
|
aiQuestion: '为什么AlphaGo要在围棋上攻克真人冠军呢?',
|
|
|
- aiAnswer: '围棋是人类智力游戏的巅峰,拥有天文数字级的可能性,每颗棋子价值由全局态势动态决定,所以当前一手可能百步之后才显现价值。AlphaGo战胜人类顶尖选手,它证明了Ai不仅能处理规则明确的事物,更能攻克依赖直觉、策略的“人类专属领域”'
|
|
|
+ aiAnswer:
|
|
|
+ '围棋是人类智力游戏的巅峰,拥有天文数字级的可能性,每颗棋子价值由全局态势动态决定,所以当前一手可能百步之后才显现价值。AlphaGo战胜人类顶尖选手,它证明了Ai不仅能处理规则明确的事物,更能攻克依赖直觉、策略的“人类专属领域”'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
[video12]: {
|
|
|
- pauseTimes: [1],
|
|
|
+ pauseTimes: [1]
|
|
|
},
|
|
|
[video13]: {
|
|
|
pauseTimes: [61],
|
|
|
@@ -518,7 +552,6 @@ const videoPauseTimes = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 处理视频时间更新事件
|
|
|
const handleTimeUpdate = () => {
|
|
|
if (!videoRef.value) return
|
|
|
@@ -592,12 +625,14 @@ const handleAIClick = () => {
|
|
|
}
|
|
|
|
|
|
// 模拟 AI 回复
|
|
|
-const simulateAIResponse = (question) => {
|
|
|
- return new Promise((resolve) => {
|
|
|
+const simulateAIResponse = question => {
|
|
|
+ return new Promise(resolve => {
|
|
|
setTimeout(() => {
|
|
|
const currentVideoInfo = videoPauseTimes[videoSrc.value]
|
|
|
if (currentVideoInfo) {
|
|
|
- const currentQuestionObj = currentVideoInfo.questions.find(q => q.aiQuestion === question)
|
|
|
+ const currentQuestionObj = currentVideoInfo.questions.find(
|
|
|
+ q => q.aiQuestion === question
|
|
|
+ )
|
|
|
if (currentQuestionObj && currentQuestionObj.aiAnswer) {
|
|
|
resolve(currentQuestionObj.aiAnswer)
|
|
|
return
|
|
|
@@ -615,7 +650,6 @@ const handleCloseAIDialog = () => {
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
-
|
|
|
<style scoped lang="scss">
|
|
|
@use 'sass:math';
|
|
|
@use 'sass:color'; // 引入 color 模块
|
|
|
@@ -637,7 +671,7 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
left: 0;
|
|
|
right: 0;
|
|
|
bottom: 0;
|
|
|
- background: linear-gradient(to bottom, #001169, #B4A8E1);
|
|
|
+ background: linear-gradient(to bottom, #001169, #b4a8e1);
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
gap: rpx(0);
|
|
|
@@ -664,9 +698,9 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
.el-menu ::v-deep(.el-sub-menu__title:focus),
|
|
|
.el-menu ::v-deep(.el-sub-menu__title:active) {
|
|
|
background: linear-gradient(
|
|
|
- to bottom,
|
|
|
- #fee78a,
|
|
|
- #ffce1b
|
|
|
+ to bottom,
|
|
|
+ #fee78a,
|
|
|
+ #ffce1b
|
|
|
); /* 设置悬停、聚焦、点击状态下的背景色 */
|
|
|
background-color: transparent;
|
|
|
}
|
|
|
@@ -691,9 +725,9 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
.el-menu ::v-deep(.el-menu-item:focus),
|
|
|
.el-menu ::v-deep(.el-menu-item:active) {
|
|
|
background: linear-gradient(
|
|
|
- to bottom,
|
|
|
- #fee78a,
|
|
|
- #ffce1b
|
|
|
+ to bottom,
|
|
|
+ #fee78a,
|
|
|
+ #ffce1b
|
|
|
); /* 设置悬停、聚焦、点击状态下的背景色 */
|
|
|
}
|
|
|
.drawer-box {
|
|
|
@@ -803,7 +837,7 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
}
|
|
|
.top-right-box {
|
|
|
::v-deep(.el-input__wrapper) {
|
|
|
- background-color: transparent;
|
|
|
+ background-color: rgb(255, 255, 255, 0.5);
|
|
|
border-radius: rpx(12);
|
|
|
color: white;
|
|
|
}
|
|
|
@@ -816,7 +850,7 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
}
|
|
|
// 添加输入框文字颜色样式
|
|
|
::v-deep(.el-input__inner) {
|
|
|
- color: white;
|
|
|
+ color: black;
|
|
|
}
|
|
|
}
|
|
|
// 搜索框
|
|
|
@@ -835,9 +869,13 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
flex-wrap: wrap; // 允许子元素换行;
|
|
|
align-content: center; // 顶部对齐;
|
|
|
cursor: pointer; // 添加鼠标指针样式
|
|
|
+}
|
|
|
+.box-video {
|
|
|
+ width: 100%;
|
|
|
+ height: rpx(300);
|
|
|
video.full-box-video {
|
|
|
- //width: rpx(550);
|
|
|
- height: rpx(300);
|
|
|
+ // width: 100%;
|
|
|
+ height: rpx(280);
|
|
|
margin: 0 auto;
|
|
|
border-radius: rpx(12);
|
|
|
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
|
|
|
@@ -847,19 +885,10 @@ $text-color: #483d8b; // 文本颜色:靛蓝色
|
|
|
}
|
|
|
// 视频进度条样式
|
|
|
video.full-box-video::-webkit-media-controls-timeline {
|
|
|
- background-color: rgba(255, 255, 255,0.3); // 进度条背景颜色,调浅为半透明白色
|
|
|
-}
|
|
|
-video.full-box-video::-webkit-media-controls-current-time-display,
|
|
|
-video.full-box-video::-webkit-media-controls-time-remaining-display {
|
|
|
- color: white; // 时间显示颜色
|
|
|
-}
|
|
|
-video.full-box-video::-webkit-media-controls-progress-bar {
|
|
|
- background-color: rgba(255, 255, 255, 0.5); // 已播放进度颜色,调浅为半透明白色
|
|
|
-}
|
|
|
-video.full-box-video::-webkit-media-controls-thumb {
|
|
|
- background-color: white; // 滑块颜色
|
|
|
+ background-color: rgb(255, 255, 255,0.3); // 进度条背景颜色,调浅为半透明白色
|
|
|
}
|
|
|
|
|
|
+
|
|
|
.small-title {
|
|
|
width: 100%;
|
|
|
margin-top: rpx(-20);
|
|
|
@@ -872,30 +901,28 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
width: 100%;
|
|
|
// height: rpx(50);
|
|
|
display: flex;
|
|
|
- // margin-top: rpx(10);
|
|
|
+ margin-top: rpx(-20);
|
|
|
// background-color: saddlebrown;
|
|
|
}
|
|
|
.caret-right,
|
|
|
-.caret-left{
|
|
|
+.caret-left {
|
|
|
width: rpx(50);
|
|
|
// height: rpx(50);
|
|
|
margin: auto;
|
|
|
display: flex;
|
|
|
// grid: rpx(4);
|
|
|
margin-top: rpx(5);
|
|
|
- margin-bottom: rpx(5);
|
|
|
+ margin-bottom: rpx(15);
|
|
|
}
|
|
|
-.caret-left ::v-deep(.el-button.is-round) ,
|
|
|
+.caret-left ::v-deep(.el-button.is-round),
|
|
|
.caret-right ::v-deep(.el-button.is-round) {
|
|
|
width: rpx(50);
|
|
|
+ height: rpx(15);
|
|
|
color: black;
|
|
|
border-radius: none;
|
|
|
- background: linear-gradient(
|
|
|
- to bottom,
|
|
|
- #fee78a,
|
|
|
- #ffce1b
|
|
|
- ); /* 设置悬停、聚焦、点击状态下的背景色 */
|
|
|
- box-shadow: 0 4px 8px rgba(202, 52, 52, 0.1);
|
|
|
+ border: 1px white solid;
|
|
|
+ background-color: rgb(255, 255, 255, 0.5); // 进度条背景颜色,调浅为半透明白色
|
|
|
+ box-shadow: 0 4px 8px rgba(202, 52, 52, 0.1);
|
|
|
}
|
|
|
|
|
|
// 儿童风格试题弹框样式
|
|
|
@@ -923,20 +950,31 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
.el-dialog {
|
|
|
border: none;
|
|
|
border-radius: rpx(20);
|
|
|
- background: linear-gradient(135deg, $light-color, #d8bfd8); // 柔和的蓝紫色渐变
|
|
|
+ background: linear-gradient(
|
|
|
+ 135deg,
|
|
|
+ $light-color,
|
|
|
+ #d8bfd8
|
|
|
+ ); // 柔和的蓝紫色渐变
|
|
|
// 添加边框边晕效果
|
|
|
- box-shadow: 0 0 20px 5px rgba($primary-color, 0.6), 0 0 40px 10px rgba($primary-color, 0.4), 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
+ box-shadow: 0 0 20px 5px rgba($primary-color, 0.6),
|
|
|
+ 0 0 40px 10px rgba($primary-color, 0.4),
|
|
|
+ 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
overflow: hidden;
|
|
|
|
|
|
// 添加装饰元素
|
|
|
&::before {
|
|
|
- content: "";
|
|
|
+ content: '';
|
|
|
position: absolute;
|
|
|
top: 0;
|
|
|
left: 0;
|
|
|
width: 100%;
|
|
|
height: rpx(10);
|
|
|
- background: linear-gradient(90deg, $primary-color, $secondary-color, $accent-color);
|
|
|
+ background: linear-gradient(
|
|
|
+ 90deg,
|
|
|
+ $primary-color,
|
|
|
+ $secondary-color,
|
|
|
+ $accent-color
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -970,13 +1008,19 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
// 修改半透明背景色
|
|
|
background-color: rgba(255, 255, 255, 0.95);
|
|
|
// 添加边框边晕效果
|
|
|
- box-shadow: 0 0 20px 5px rgba($primary-color, 0.6), 0 0 40px 10px rgba($primary-color, 0.4), 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
+ box-shadow: 0 0 20px 5px rgba($primary-color, 0.6),
|
|
|
+ 0 0 40px 10px rgba($primary-color, 0.4),
|
|
|
+ 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 问题标题样式
|
|
|
.question-title {
|
|
|
- background: linear-gradient(90deg, rgba($primary-color, 0.2), rgba($secondary-color, 0.2));
|
|
|
+ background: linear-gradient(
|
|
|
+ 90deg,
|
|
|
+ rgba($primary-color, 0.2),
|
|
|
+ rgba($secondary-color, 0.2)
|
|
|
+ );
|
|
|
padding: rpx(15);
|
|
|
border-radius: rpx(12);
|
|
|
margin-bottom: rpx(20);
|
|
|
@@ -1063,12 +1107,15 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
&.confirm {
|
|
|
background: linear-gradient(to right, $primary-color, $secondary-color);
|
|
|
border: none;
|
|
|
- border-right: 15px;;
|
|
|
+ border-right: 15px;
|
|
|
color: white;
|
|
|
|
|
|
-
|
|
|
&:hover {
|
|
|
- background: linear-gradient(to right, color.adjust($primary-color, $lightness: -5%), color.adjust($secondary-color, $lightness: -5%));
|
|
|
+ background: linear-gradient(
|
|
|
+ to right,
|
|
|
+ color.adjust($primary-color, $lightness: -5%),
|
|
|
+ color.adjust($secondary-color, $lightness: -5%)
|
|
|
+ );
|
|
|
box-shadow: 0 rpx(3) rpx(10) rgba($primary-color, 0.4);
|
|
|
transform: translateY(-rpx(1));
|
|
|
color: white;
|
|
|
@@ -1230,8 +1277,14 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
.child-dialog {
|
|
|
border: none;
|
|
|
border-radius: rpx(20);
|
|
|
- background: linear-gradient(135deg, $light-color, #d8bfd8); // 柔和的蓝紫色渐变
|
|
|
- box-shadow: 0 0 20px 5px rgba($primary-color, 0.6), 0 0 40px 10px rgba($primary-color, 0.4), 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
+ background: linear-gradient(
|
|
|
+ 135deg,
|
|
|
+ $light-color,
|
|
|
+ #d8bfd8
|
|
|
+ ); // 柔和的蓝紫色渐变
|
|
|
+ box-shadow: 0 0 20px 5px rgba($primary-color, 0.6),
|
|
|
+ 0 0 40px 10px rgba($primary-color, 0.4),
|
|
|
+ 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
overflow: hidden;
|
|
|
padding: rpx(20);
|
|
|
width: 60%;
|
|
|
@@ -1256,7 +1309,9 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
border: none;
|
|
|
border-radius: rpx(20);
|
|
|
background: linear-gradient(135deg, $light-color, #d8bfd8);
|
|
|
- box-shadow: 0 0 20px 5px rgba($primary-color, 0.6), 0 0 40px 10px rgba($primary-color, 0.4), 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
+ box-shadow: 0 0 20px 5px rgba($primary-color, 0.6),
|
|
|
+ 0 0 40px 10px rgba($primary-color, 0.4),
|
|
|
+ 0 0 60px 15px rgba($primary-color, 0.2);
|
|
|
overflow: hidden;
|
|
|
padding: rpx(20);
|
|
|
width: 30%;
|
|
|
@@ -1269,13 +1324,18 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
flex-direction: column;
|
|
|
|
|
|
&::before {
|
|
|
- content: "";
|
|
|
+ content: '';
|
|
|
position: absolute;
|
|
|
top: 0;
|
|
|
left: 0;
|
|
|
width: 100%;
|
|
|
height: rpx(10);
|
|
|
- background: linear-gradient(90deg, $primary-color, $secondary-color, $accent-color);
|
|
|
+ background: linear-gradient(
|
|
|
+ 90deg,
|
|
|
+ $primary-color,
|
|
|
+ $secondary-color,
|
|
|
+ $accent-color
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1314,7 +1374,6 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
max-height: 50vh;
|
|
|
padding: 5px 10px;
|
|
|
|
|
|
-
|
|
|
.message {
|
|
|
display: flex;
|
|
|
align-items: flex-start;
|
|
|
@@ -1331,7 +1390,7 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
margin: 0 rpx(10);
|
|
|
}
|
|
|
|
|
|
- .user{
|
|
|
+ .user {
|
|
|
width: 15px;
|
|
|
height: 15px;
|
|
|
}
|
|
|
@@ -1396,7 +1455,6 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 优化发送按钮样式
|
|
|
.send-button {
|
|
|
//background: linear-gradient(90deg, $primary-color, $secondary-color);
|
|
|
@@ -1407,4 +1465,4 @@ video.full-box-video::-webkit-media-controls-thumb {
|
|
|
//background: linear-gradient(90deg, darken($primary-color, 5%), darken($secondary-color, 5%));
|
|
|
}
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|