-

+
+
-
左:-7.7°
-
右:8.7°
+
左:-7.7°
+
右:8.7°
-
-

+
+
-
左:-10.5°
-
右:11.5°
+
左:-10.5°
+
右:11.5°
-
-
- 历史数据
-
-
-
+
+
+
+ 历史数据..
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
-
+
-
用户ID:
{{patientInfo.sessionId}}
-
+
+
用户ID:
{{ patientInfo.sessionId }}
+
+
+
姓名:{{ patientInfo.name }}
+
-
+
-
+
-
+
测试医生:李四
-
-
-
-
+
+
+
+
@@ -371,6 +363,7 @@ import { io } from 'socket.io-client'
import html2canvas from 'html2canvas'
import Header from '@/views/Header.vue'
import { useAuthStore } from '../stores/index.js'
+import * as echarts from 'echarts';
const authStore = useAuthStore()
const router = useRouter()
const route = useRoute()
@@ -423,8 +416,59 @@ const historyData = ref([
{ id: 2, rotLeft: '-55.8°', rotRight: '56.2°', tiltLeft: '-17.5°', tiltRight: '17.9°', pitchDown: '-21.2°', pitchUp: '12.1°' },
{ id: 1, rotLeft: '-56.1°', rotRight: '55.7°', tiltLeft: '-17.5°', tiltRight: '18.5°', pitchDown: '-22.2°', pitchUp: '11.5°' }
])
-
-function routeTo(path){
+const chartoption = ref({
+ series: [
+ {
+ type: 'gauge',
+ progress: {
+ show: true,
+ width: 18
+ },
+ axisLine: {
+ lineStyle: {
+ width: 18
+ }
+ },
+ axisTick: {
+ show: false
+ },
+ splitLine: {
+ length: 15,
+ lineStyle: {
+ width: 2,
+ color: '#999'
+ }
+ },
+ axisLabel: {
+ distance: 25,
+ color: '#999',
+ fontSize: 20
+ },
+ anchor: {
+ show: true,
+ showAbove: true,
+ size: 25,
+ itemStyle: {
+ borderWidth: 10
+ }
+ },
+ title: {
+ show: false
+ },
+ detail: {
+ valueAnimation: true,
+ fontSize: 80,
+ offsetCenter: [0, '70%']
+ },
+ data: [
+ {
+ value: 70
+ }
+ ]
+ }
+ ]
+})
+function routeTo(path) {
router.push(`/`)
}
@@ -437,14 +481,14 @@ const handleBack = () => {
function connectWebSocket() {
try {
console.log('正在连接到', BACKEND_URL)
-
+
// 创建Socket.IO连接
socket = io(BACKEND_URL, {
transports: ['websocket', 'polling'],
timeout: 10000,
forceNew: true
})
-
+
// 连接成功事件
socket.on('connect', () => {
console.log('✅ WebSocket连接成功!Socket ID:', socket.id)
@@ -452,7 +496,7 @@ function connectWebSocket() {
// 连接成功后自动开始RTSP播放(仅播放视频,不创建会话)
startRtsp()
})
-
+
// 连接失败事件
socket.on('connect_error', (error) => {
console.error('❌ 连接失败:', error.message)
@@ -463,7 +507,7 @@ function connectWebSocket() {
isStart.value = false
}
})
-
+
// 断开连接事件
socket.on('disconnect', (reason) => {
console.log('⚠️ 连接断开:', reason)
@@ -475,28 +519,28 @@ function connectWebSocket() {
isStart.value = false
}
})
-
+
// 监听视频状态事件
socket.on('video_status', (data) => {
console.log('📺 视频状态:', data)
})
-
+
// 监听视频帧数据
socket.on('video_frame', (data) => {
frameCount++
displayFrame(data.image)
})
-
+
// 监听深度相机帧数据
socket.on('depth_camera_frame', (data) => {
displayDepthCameraFrame(data.image)
})
-
+
// 监听错误事件
socket.on('error', (error) => {
console.error('❌ Socket错误:', error)
})
-
+
} catch (error) {
console.error('💥 连接异常:', error.message)
isConnected.value = false
@@ -518,7 +562,7 @@ function disconnectWebSocket() {
function startRtsp() {
if (socket && socket.connected) {
console.log('🚀 发送start_video事件')
-
+
socket.emit('start_video', {}, (ack) => {
if (ack) {
console.log('✅ start_video事件已确认:', ack)
@@ -526,16 +570,16 @@ function startRtsp() {
console.log('⚠️ start_video事件无确认响应')
}
})
-
+
frameCount = 0
-
+
// 设置超时检查
setTimeout(() => {
if (frameCount === 0) {
console.log('⏰ 5秒后仍未收到视频帧,可能存在问题')
}
}, 5000)
-
+
} else {
console.error('❌ WebSocket未连接,无法启动视频流')
}
@@ -592,7 +636,7 @@ function handleStartStopRecording() {
ElMessage.warning('WebSocket未连接,无法操作')
return
}
-
+
if (isRecording.value) {
stopRecording()
} else {
@@ -605,45 +649,45 @@ async function handleDataCollection() {
if (dataCollectionLoading.value) return
try {
dataCollectionLoading.value = true
-
+
// 显示进度提示
ElMessage.info('正在采集检测数据...')
-
+
// 检查是否有活跃的会话ID
if (!patientInfo.value.sessionId) {
throw new Error('请先开始检测再进行数据采集')
}
-
+
// 调用后端API采集检测数据
- const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/collect`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({
+ const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/collect`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
// patient_id: patientInfo.value.id,
// timestamp: Date.now()
- head_pose:{},
- body_pose:{},
- foot_data:{}
- })
- })
-
+ head_pose: {},
+ body_pose: {},
+ foot_data: {}
+ })
+ })
+
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
-
+
const result = await response.json()
-
+
if (result.success) {
// 显示成功消息
ElMessage.success({
message: `检测数据采集成功!数据ID: ${result.dataId}`,
duration: 5000
})
-
+
console.log('✅ 检测数据采集成功:', result)
-
+
// 更新历史数据表格
if (result.data) {
historyData.value.unshift({
@@ -655,20 +699,20 @@ async function handleDataCollection() {
pitchDown: result.data.pitchDown || '-',
pitchUp: result.data.pitchUp || '-'
})
-
+
// 保持最多显示10条记录
if (historyData.value.length > 10) {
historyData.value = historyData.value.slice(0, 10)
}
}
-
+
} else {
throw new Error(result.message || '数据采集失败')
}
-
+
} catch (error) {
console.error('❌ 检测数据采集失败:', error)
-
+
// 根据错误类型显示不同的错误消息
let errorMessage = '检测数据采集失败'
if (error.message.includes('网络连接失败')) {
@@ -678,12 +722,12 @@ async function handleDataCollection() {
} else {
errorMessage = `检测数据采集失败: ${error.message}`
}
-
+
ElMessage.error({
message: errorMessage,
duration: 5000
})
-
+
} finally {
dataCollectionLoading.value = false
}
@@ -692,19 +736,19 @@ async function handleDataCollection() {
// 截图功能(保留原有功能)
async function handleScreenshot() {
if (screenshotLoading.value) return
-
+
try {
screenshotLoading.value = true
-
+
// 显示进度提示
ElMessage.info('正在生成截图...')
-
+
// 获取要截图的DOM元素
const element = document.getElementById('detectare')
if (!element) {
throw new Error('未找到截图区域')
}
-
+
// 使用html2canvas进行截图
const canvas = await html2canvas(element, {
useCORS: true,
@@ -713,40 +757,40 @@ async function handleScreenshot() {
scale: 1,
logging: false
})
-
+
// 将canvas转换为base64
const base64Image = canvas.toDataURL('image/png')
-
+
// 显示保存进度
ElMessage.info('正在保存截图...')
-
+
// 检查是否有活跃的会话ID
if (!patientInfo.value.sessionId) {
throw new Error('请先开始检测再进行截图')
}
-
+
// 调用后端API保存截图
const result = await saveScreenshot({
patientId: patientInfo.value.id,
patientName: patientInfo.value.name,
sessionId: patientInfo.value.sessionId,
imageData: base64Image,
- head_pose:{},
- body_pose:{},
- foot_data:{}
+ head_pose: {},
+ body_pose: {},
+ foot_data: {}
})
-
+
// 显示成功消息和文件路径
ElMessage.success({
message: `截图保存成功!文件路径: ${result.filepath}`,
duration: 5000
})
-
+
console.log('✅ 截图保存成功:', result.filepath)
-
+
} catch (error) {
console.error('❌ 截图失败:', error)
-
+
// 根据错误类型显示不同的错误消息
let errorMessage = '截图失败'
if (error.message.includes('网络连接失败')) {
@@ -758,12 +802,12 @@ async function handleScreenshot() {
} else {
errorMessage = `截图失败: ${error.message}`
}
-
+
ElMessage.error({
message: errorMessage,
duration: 5000
})
-
+
} finally {
screenshotLoading.value = false
}
@@ -778,7 +822,7 @@ function generateSessionId() {
const hour = String(now.getHours()).padStart(2, '0')
const minute = String(now.getMinutes()).padStart(2, '0')
const second = String(now.getSeconds()).padStart(2, '0')
-
+
return `${year}${month}${day}${hour}${minute}${second}`
}
@@ -786,30 +830,30 @@ function generateSessionId() {
async function saveScreenshot(data) {
try {
const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/collect`
- , {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(data)
- })
-
+ , {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(data)
+ })
+
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
-
+
const result = await response.json()
-
+
if (result.success) {
console.log('📸 截图保存成功:', result.filepath)
return result
} else {
throw new Error(result.message || '保存失败')
}
-
+
} catch (error) {
console.error('💥 保存截图API调用失败:', error)
-
+
if (error.name === 'TypeError' && error.message.includes('fetch')) {
throw new Error('网络连接失败,请检查后端服务是否正常运行')
} else if (error.message.includes('HTTP')) {
@@ -832,20 +876,20 @@ async function updateSessionVideoPath(sessionId, videoPath) {
videoPath: videoPath
})
})
-
+
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
-
+
const result = await response.json()
-
+
if (result.success) {
console.log('📹 会话视频路径更新成功:', videoPath)
return result
} else {
throw new Error(result.message || '更新失败')
}
-
+
} catch (error) {
console.error('💥 更新会话视频路径失败:', error)
throw error
@@ -856,26 +900,26 @@ async function updateSessionVideoPath(sessionId, videoPath) {
async function startRecording() {
try {
console.log('🎬 开始录像...')
-
+
// 获取要录制的区域
const targetElement = document.getElementById('detectare')
if (!targetElement) {
throw new Error('未找到录制区域')
}
-
+
// 使用getDisplayMedia API录制屏幕区域
// 注意:由于浏览器限制,我们使用captureStream方式
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
-
+
// 设置canvas尺寸
const rect = targetElement.getBoundingClientRect()
canvas.width = rect.width
canvas.height = rect.height
-
+
// 创建录制流
recordingStream = canvas.captureStream(30) // 30fps
-
+
// 初始化MediaRecorder
// 尝试使用mp4格式,如果不支持则回退到webm
let mimeType = 'video/mp4;codecs=avc1.42E01E,mp4a.40.2'
@@ -885,36 +929,36 @@ async function startRecording() {
} else {
console.log('✅ 使用MP4格式录制')
}
-
+
mediaRecorder = new MediaRecorder(recordingStream, {
mimeType: mimeType
})
-
+
// 保存当前使用的格式
currentMimeType = mimeType
-
+
recordedChunks = []
-
+
mediaRecorder.ondataavailable = (event) => {
if (event.data.size > 0) {
recordedChunks.push(event.data)
}
}
-
- mediaRecorder.onstop = async () => {
- console.log('🎬 录像停止,开始保存...')
- await saveRecording()
- }
-
+
+ // mediaRecorder.onstop = async () => {
+ // console.log('🎬 录像停止,开始保存...')
+ // await saveRecording()
+ // }
+
// 开始录制
mediaRecorder.start(1000) // 每秒收集一次数据
isRecording.value = true
-
+
// 开始定期捕获目标区域
startCapturingArea(targetElement, canvas, ctx)
-
+
console.log('✅ 录像已开始')
-
+
} catch (error) {
console.error('❌ 开始录像失败:', error)
ElMessage.error(`开始录像失败: ${error.message}`)
@@ -925,7 +969,7 @@ async function startRecording() {
function startCapturingArea(element, canvas, ctx) {
const captureFrame = () => {
if (!isRecording.value) return
-
+
// 使用html2canvas捕获元素
html2canvas(element, {
useCORS: true,
@@ -939,19 +983,19 @@ function startCapturingArea(element, canvas, ctx) {
// 将捕获的内容绘制到录制canvas上
ctx.clearRect(0, 0, canvas.width, canvas.height)
ctx.drawImage(capturedCanvas, 0, 0, canvas.width, canvas.height)
-
+
// 继续下一帧
if (isRecording.value) {
- setTimeout(captureFrame, 1000/30) // 30fps
+ setTimeout(captureFrame, 1000 / 30) // 30fps
}
}).catch(error => {
console.error('捕获帧失败:', error)
if (isRecording.value) {
- setTimeout(captureFrame, 1000/30)
+ setTimeout(captureFrame, 1000 / 30)
}
})
}
-
+
captureFrame()
}
@@ -959,14 +1003,14 @@ function startCapturingArea(element, canvas, ctx) {
function stopRecording() {
try {
console.log('🛑 停止录像...')
-
+
if (mediaRecorder && mediaRecorder.state === 'recording') {
// 设置停止事件监听器,在录像停止后自动保存
mediaRecorder.addEventListener('stop', () => {
console.log('📹 录像数据准备完成,开始保存...')
saveRecording()
}, { once: true })
-
+
mediaRecorder.stop()
} else {
// 如果没有正在录制的内容,但有录制数据,直接保存
@@ -979,10 +1023,10 @@ function stopRecording() {
recordingStream.getTracks().forEach(track => track.stop())
recordingStream = null
}
-
+
isRecording.value = false
console.log('✅ 录像已停止')
-
+
} catch (error) {
console.error('❌ 停止录像失败:', error)
ElMessage.error(`停止录像失败: ${error.message}`)
@@ -999,25 +1043,25 @@ async function saveRecording() {
if (!patientInfo.value.id || !patientInfo.value.name || !patientInfo.value.sessionId) {
throw new Error(`缺少必需的患者信息: ID=${patientInfo.value.id}, 姓名=${patientInfo.value.name}, 会话ID=${patientInfo.value.sessionId}`)
}
-
+
console.log('📝 准备保存录像,患者信息:', {
id: patientInfo.value.id,
name: patientInfo.value.name,
sessionId: patientInfo.value.sessionId
})
-
+
// 创建视频blob
const blob = new Blob(recordedChunks, { type: 'video/webm' })
console.log('📹 录像数据大小:', (blob.size / 1024 / 1024).toFixed(2), 'MB')
-
+
// 转换为base64
const reader = new FileReader()
reader.readAsDataURL(blob)
-
+
reader.onload = async () => {
try {
const base64Data = reader.result
-
+
// await fetch(`${BACKEND_URL}/api/recordings/save`
// 调用后端API保存录像
const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/stop`, {
@@ -1033,19 +1077,20 @@ async function saveRecording() {
mimeType: currentMimeType || 'video/webm;codecs=vp9'
})
})
-
+
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
-
+
const result = await response.json()
-
+
if (result.success) {
console.log('🎬 录像保存成功:', result.filepath)
ElMessage.success({
message: `录像保存成功!文件路径: ${result.filepath}`,
duration: 5000
})
+ isRecording.value = false
dialogVisible.value = true
// 更新会话的视频路径
if (patientInfo.value.sessionId) {
@@ -1058,7 +1103,7 @@ async function saveRecording() {
// 清空录制数据,避免重复保存
recordedChunks.length = 0
console.log('🧹 录像数据已清空')
-
+
// 录像保存完成后,清空会话ID,正式结束会话
// patientInfo.value.sessionId = null
console.log('✅ 会话正式结束,会话ID已清空')
@@ -1066,7 +1111,7 @@ async function saveRecording() {
dialogVisible.value = false
throw new Error(result.message || '保存失败')
}
-
+
} catch (error) {
console.error('💥 保存录像失败:', error)
ElMessage.error({
@@ -1079,16 +1124,16 @@ async function saveRecording() {
console.log('⚠️ 录像保存失败,但会话已结束,会话ID已清空')
}
}
-
+
reader.onerror = () => {
console.error('❌ 读取录像数据失败')
ElMessage.error('读取录像数据失败')
}
-
+
} catch (error) {
console.error('❌ 保存录像失败:', error)
ElMessage.error(`保存录像失败: ${error.message}`)
-
+
// 即使保存失败,也要清空会话ID,避免状态混乱
patientInfo.value.sessionId = null
console.log('⚠️ 录像保存失败,但会话已结束,会话ID已清空')
@@ -1103,7 +1148,7 @@ async function handleStartStop() {
ElMessage.warning('WebSocket未连接,无法操作')
return
}
-
+
if (isStart.value) {
// 停止检测
await stopDetection()
@@ -1130,7 +1175,7 @@ async function startDetection() {
body: JSON.stringify({
patient_id: patientInfo.value.id,
// 可以添加其他检测参数
- creator_id:creatorId.value,
+ creator_id: creatorId.value,
// settings: JSON.stringify({
// frequency: 30, // 采样频率
// // 其他设置参数
@@ -1140,24 +1185,24 @@ async function startDetection() {
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
-
+
const result = await response.json()
-
+
if (result.success) {
console.log('✅ 检测开始成功')
-
+
// 保存会话ID和检测开始时间
patientInfo.value.sessionId = result.session_id
patientInfo.value.detectionStartTime = Date.now()
console.log('✅ 检测会话创建成功,会话ID:', patientInfo.value.sessionId)
-
+
isStart.value = true
startRecording()
ElMessage.success('检测已开始')
} else {
throw new Error(result.message || '开始检测失败')
}
-
+
} catch (error) {
console.error('💥 开始检测失败:', error)
ElMessage.error(`开始检测失败: ${error.message}`)
@@ -1169,23 +1214,23 @@ async function startDetection() {
async function stopDetection() {
try {
console.log('🛑 停止检测,会话ID:', patientInfo.value.sessionId)
-
+
// 计算检测持续时间
let duration = 0
if (patientInfo.value.detectionStartTime) {
duration = Math.floor((Date.now() - patientInfo.value.detectionStartTime) / 1000)
}
-
+
// 如果正在录制,停止录制
- // if (isRecording.value) {
- // stopRecording()
- // }
+ if (isRecording.value) {
+ stopRecording()
+ }
saveRecording()
isStart.value = false
-
+
// // 调用后端API停止检测会话
// if (patientInfo.value.sessionId) {
-
+
// const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/stop`, {
// method: 'POST',
// headers: {
@@ -1195,7 +1240,7 @@ async function stopDetection() {
// duration: duration
// })
// })
-
+
// if (response.ok) {
// const result = await response.json()
// if (result.success) {
@@ -1212,9 +1257,9 @@ async function stopDetection() {
// // 清除检测开始时间和会话ID
// patientInfo.value.detectionStartTime = null
// // patientInfo.value.sessionId = null
-
+
// ElMessage.success('检测已停止,视频继续播放')
-
+
} catch (error) {
console.error('❌ 停止检测失败:', error)
ElMessage.error(`停止检测失败: ${error.message}`)
@@ -1236,7 +1281,7 @@ const loadPatientInfo = async () => {
console.warn('未找到患者ID参数')
return
}
-
+
// 调用API获取患者信息
const response = await fetch(`${BACKEND_URL}/api/patients/${patientId}`)
if (response.ok) {
@@ -1274,19 +1319,45 @@ const handleBeforeUnload = () => {
}
}
const creatorId = ref('')
+let headCharts = null;
+const initchart = () => {
+ // 确保 DOM 元素已经渲染
+ nextTick(() => {
+ const chartDom = document.getElementById('headChart1');
+ if (chartDom) {
+ // 如果图表已经存在,先销毁
+ if (headCharts) {
+ headCharts.dispose();
+ }
+ headCharts = echarts.init(chartDom);
+ headCharts.setOption(chartoption.value);
+
+ // 添加窗口大小调整监听器
+ window.addEventListener('resize', () => {
+ if (headCharts) {
+ headCharts.resize();
+ }
+ });
+ } else {
+ console.warn('找不到 ID 为 headChart1 的 DOM 元素');
+ }
+ });
+}
+
onMounted(() => {
// 加载患者信息
loadPatientInfo()
-
+
// 组件挂载时连接WebSocket并自动开始推流
connectWebSocket()
-
+
// 监听页面关闭或刷新事件
window.addEventListener('beforeunload', handleBeforeUnload)
if (authStore.currentUser) {
console.log(authStore.currentUser)
creatorId.value = authStore.currentUser.id
}
+ initchart()
})
onUnmounted(() => {
@@ -1294,22 +1365,22 @@ onUnmounted(() => {
if (isRecording.value) {
stopRecording()
}
-
+
// 停止检测(如果正在检测)
if (isStart.value) {
stopDetection()
}
-
+
// 停止视频播放并断开连接
stopRtsp()
-
+
// 断开WebSocket连接
if (socket) {
socket.disconnect()
socket = null
console.log('组件卸载时主动断开连接')
}
-
+
// 移除页面关闭事件监听
window.removeEventListener('beforeunload', handleBeforeUnload)
})
@@ -1414,7 +1485,7 @@ onUnmounted(() => {
/* 核心内容网格布局 */
.content-grid {
display: flex;
- padding: 10px;
+ padding: 0px 10px;
justify-content: space-between;
height: calc(100vh - 130px);
/* flex: 1;
@@ -1459,14 +1530,16 @@ onUnmounted(() => {
color: #ffffff;
padding: 2px;
}
-.module-title-bg{
+
+.module-title-bg {
display: flex;
align-items: center;
width: 116px;
background: #2C2C2C;
border-radius: 20px;
- padding: 0px 15px ;
+ padding: 0px 15px;
}
+
.header-icon {
width: 24px;
height: 24px;
@@ -1482,7 +1555,7 @@ onUnmounted(() => {
/* 身体姿态模块 */
.body-posture {
/* grid-row: 1 / 3; */
- width:30% ;
+ width: 30%;
}
.posture-container {
@@ -1673,120 +1746,139 @@ onUnmounted(() => {
--el-button-border-color: #A325B0 !important;
}
-.gauge-group-box{
+.gauge-group-box {
display: flex;
align-items: center;
color: #ffffff;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
}
-.gauge-group-box-text1{
+
+.gauge-group-box-text1 {
font-size: 16px;
font-weight: 700;
font-style: normal;
}
-.gauge-group-box-text2{
+
+.gauge-group-box-text2 {
font-size: 24px;
color: #30F3FF;
font-weight: 700;
}
-.gauge-table-title{
- padding: 10px;
+
+.gauge-table-title {
+ padding: 0px 5px;
font-size: 14px;
color: #ffffff;
-
+ writing-mode: vertical-rl;
+ font-weight: 700;
}
+
/* .foot-container-left{
margin-right: 10px;
}
.foot-container-right{
margin-left: 10px;
} */
-.foot-container-content{
+.foot-container-content {
margin: 0px 20px;
-}
-.foot-container-margintop{
+ text-align: center;
+}
+
+.foot-container-margintop {
margin-top: 80px;
}
-.foot-container-marginleft{
- margin-left:40px ;
+
+.foot-container-marginleft {
+ margin-left: 40px;
}
-.foot-container-paddingcolor{
+
+.foot-container-paddingcolor {
padding-left: 10px;
- color: rgb(48,205,223);
+ color: #30F3FF;
}
-.basic-info-content{
+
+.basic-info-content {
display: flex;
justify-content: center;
box-sizing: border-box;
padding-top: 10px;
width: 100%;
}
-.basic-info-text{
+
+.basic-info-text {
width: 33%;
text-align: center;
font-size: 13px;
}
-.basic-info-textcolor{
- color: rgb(48,205,223);
+
+.basic-info-textcolor {
+ color: rgb(48, 205, 223);
padding-bottom: 8px;
}
-.basic-info-box{
+
+.basic-info-box {
display: flex;
flex-wrap: wrap;
align-content: center;
height: 100%;
}
-.dialog-title{
+
+.dialog-title {
display: flex;
- justify-content:space-between ;
+ justify-content: space-between;
margin-bottom: 20px;
color: #ffffff;
}
-.dialog-title-item{
+
+.dialog-title-item {
display: flex;
width: 200px;
color: #ffffff;
}
-:deep(.el-dialog){
+
+:deep(.el-dialog) {
background-color: #1D1b26;
}
-:deep(.el-dialog__title){
+
+:deep(.el-dialog__title) {
color: #ffffff;
}
-:deep(.el-form-item__label){
+
+:deep(.el-form-item__label) {
color: #ffffff;
}
-:deep(.el-textarea__inner){
+
+:deep(.el-textarea__inner) {
background: #1D1b26;
color: #ffffff;
}
+
+:deep(.el-table__header-wrapper) {
+ background: #E7e6e6;
+}
+
+:deep(.dashboard-container .cell) {
+ color: #000000;
+}
+
+:deep(.el-table thead) {
+ color: #000000;
+}
+
+:deep(.el-table thead.is-group th.el-table__cell) {
+ background: #d8d7d7;
+}
+
+:deep(.el-table .el-table__cell) {
+ padding: 4px 0px;
+}
\ No newline at end of file