diff --git a/frontend/src/renderer/src/assets/detection/archive.png b/frontend/src/renderer/src/assets/detection/archive.png new file mode 100644 index 00000000..861b0288 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/archive.png differ diff --git a/frontend/src/renderer/src/assets/detection/big.png b/frontend/src/renderer/src/assets/detection/big.png new file mode 100644 index 00000000..6a3ecc96 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/big.png differ diff --git a/frontend/src/renderer/src/assets/detection/calibration.png b/frontend/src/renderer/src/assets/detection/calibration.png new file mode 100644 index 00000000..26073852 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/calibration.png differ diff --git a/frontend/src/renderer/src/assets/detection/close.png b/frontend/src/renderer/src/assets/detection/close.png new file mode 100644 index 00000000..c3c3e4fc Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/close.png differ diff --git a/frontend/src/renderer/src/assets/new/conduct.png b/frontend/src/renderer/src/assets/detection/conduct.png similarity index 100% rename from frontend/src/renderer/src/assets/new/conduct.png rename to frontend/src/renderer/src/assets/detection/conduct.png diff --git a/frontend/src/renderer/src/assets/detection/endvideo.png b/frontend/src/renderer/src/assets/detection/endvideo.png new file mode 100644 index 00000000..bf7c2c1b Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/endvideo.png differ diff --git a/frontend/src/renderer/src/assets/detection/no-image.png b/frontend/src/renderer/src/assets/detection/no-image.png new file mode 100644 index 00000000..e0de2fd1 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/no-image.png differ diff --git a/frontend/src/renderer/src/assets/detection/progress.png b/frontend/src/renderer/src/assets/detection/progress.png new file mode 100644 index 00000000..cbd22a29 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/progress.png differ diff --git a/frontend/src/renderer/src/assets/detection/refresh.png b/frontend/src/renderer/src/assets/detection/refresh.png new file mode 100644 index 00000000..c8fcea37 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/refresh.png differ diff --git a/frontend/src/renderer/src/assets/detection/refresh_active.png b/frontend/src/renderer/src/assets/detection/refresh_active.png new file mode 100644 index 00000000..f09fe23c Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/refresh_active.png differ diff --git a/frontend/src/renderer/src/assets/detection/screenshot.png b/frontend/src/renderer/src/assets/detection/screenshot.png new file mode 100644 index 00000000..47de811f Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/screenshot.png differ diff --git a/frontend/src/renderer/src/assets/detection/settings.png b/frontend/src/renderer/src/assets/detection/settings.png new file mode 100644 index 00000000..afb9ca8f Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/settings.png differ diff --git a/frontend/src/renderer/src/assets/detection/startvideo.png b/frontend/src/renderer/src/assets/detection/startvideo.png new file mode 100644 index 00000000..cdf09298 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/startvideo.png differ diff --git a/frontend/src/renderer/src/assets/detection/title1.png b/frontend/src/renderer/src/assets/detection/title1.png new file mode 100644 index 00000000..ae30e3ec Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/title1.png differ diff --git a/frontend/src/renderer/src/assets/detection/title2.png b/frontend/src/renderer/src/assets/detection/title2.png new file mode 100644 index 00000000..c2700987 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/title2.png differ diff --git a/frontend/src/renderer/src/assets/detection/useravatar.svg b/frontend/src/renderer/src/assets/detection/useravatar.svg new file mode 100644 index 00000000..281eddd4 --- /dev/null +++ b/frontend/src/renderer/src/assets/detection/useravatar.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/detection/useredit.png b/frontend/src/renderer/src/assets/detection/useredit.png new file mode 100644 index 00000000..7a5cec1f Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/useredit.png differ diff --git a/frontend/src/renderer/src/assets/detection/userinfo.png b/frontend/src/renderer/src/assets/detection/userinfo.png new file mode 100644 index 00000000..9ba2b783 Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/userinfo.png differ diff --git a/frontend/src/renderer/src/assets/detection/zero.png b/frontend/src/renderer/src/assets/detection/zero.png new file mode 100644 index 00000000..d2d21f8c Binary files /dev/null and b/frontend/src/renderer/src/assets/detection/zero.png differ diff --git a/frontend/src/renderer/src/assets/new/conduct.svg b/frontend/src/renderer/src/assets/new/conduct.svg deleted file mode 100644 index 657eae97..00000000 --- a/frontend/src/renderer/src/assets/new/conduct.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/new/endvideo.svg b/frontend/src/renderer/src/assets/new/endvideo.svg deleted file mode 100644 index 1285fc14..00000000 --- a/frontend/src/renderer/src/assets/new/endvideo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/new/jietu.svg b/frontend/src/renderer/src/assets/new/jietu.svg deleted file mode 100644 index 3ebb379c..00000000 --- a/frontend/src/renderer/src/assets/new/jietu.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/new/startvideo.svg b/frontend/src/renderer/src/assets/new/startvideo.svg deleted file mode 100644 index 703f1d35..00000000 --- a/frontend/src/renderer/src/assets/new/startvideo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/new/testheader.png b/frontend/src/renderer/src/assets/new/testheader.png deleted file mode 100644 index 5ee897b4..00000000 Binary files a/frontend/src/renderer/src/assets/new/testheader.png and /dev/null differ diff --git a/frontend/src/renderer/src/assets/new/title2.svg b/frontend/src/renderer/src/assets/new/title2.svg deleted file mode 100644 index 9229295a..00000000 --- a/frontend/src/renderer/src/assets/new/title2.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/new/useravatar.svg b/frontend/src/renderer/src/assets/new/useravatar.svg deleted file mode 100644 index b262db65..00000000 --- a/frontend/src/renderer/src/assets/new/useravatar.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/src/renderer/src/views/Detection.vue b/frontend/src/renderer/src/views/Detection.vue index b84f67ab..ee5105c4 100644 --- a/frontend/src/renderer/src/views/Detection.vue +++ b/frontend/src/renderer/src/views/Detection.vue @@ -3,30 +3,31 @@
+
检测中...
+ color: #3BF2C6;" + >检测中...
{{ patientInfo.name }}
-
{{ patientInfo.gender }}
+
{{ patientInfo.gender }}
-
{{ calculateAge(patientInfo.birth_date) }}
- 结束监测 +
{{ calculateAge(patientInfo.birth_date) }}岁
+ 结束检测
- +
- +
- +
- + 录像中: {{ formattedTime }}
@@ -34,10 +35,10 @@
- +
- +
@@ -48,20 +49,26 @@
- +
身体姿态
- +
{{ femtoboltStatus }}
-
- 深度相机视频流 +
+ 深度相机视频流 + +
+ +
连接失败
+
@@ -70,21 +77,19 @@
- +
头部姿态
- +
+ 校准 - - - 清零 - +
+
+ + 清零 +
-
{{ imuStatus }} @@ -96,24 +101,25 @@
-
左侧最大
+
左最大旋转角度
{{ headPoseMaxValues.rotationLeftMax.toFixed(1) }}°
- 倾斜角: - {{ headlist.tilt }}° +
倾斜角
+
{{ headlist.tilt }}°
- 左: + {{ headPoseMaxValues.tiltLeftMax.toFixed(1) }}° + | - 右: + {{ headPoseMaxValues.tiltRightMax.toFixed(1) }}° @@ -124,9 +130,9 @@
旋转角: - {{ headlist.rotation }}° + {{ headlist.rotation }}°
-
+
@@ -134,26 +140,27 @@
-
右侧最大
+
右最大旋转角度
{{ headPoseMaxValues.rotationRightMax.toFixed(1) }}°
- 俯仰角: - {{ headlist.pitch }}° +
俯仰角
+
{{ headlist.pitch }}°
- 俯: + {{ headPoseMaxValues.pitchDownMax.toFixed(1) }}° + | - 仰: - + + {{ headPoseMaxValues.pitchUpMax.toFixed(1) }}° @@ -169,7 +176,7 @@
足部压力
-
{{ pressureStatus }} @@ -205,8 +212,14 @@
左足
右足
-
- +
+ + +
+ +
连接失败
+
@@ -250,17 +263,17 @@
-
- +
{{ patientInfo.name }}
{{ patientInfo.gender }}
-
{{ calculateAge(patientInfo.birth_date) }}
+
{{ calculateAge(patientInfo.birth_date) }}岁
用户ID:{{ patientInfo.id }} @@ -269,8 +282,11 @@
- + +
居住地
@@ -305,7 +321,7 @@
视频
-
@@ -314,13 +330,29 @@
-
- camera1 +
+
+ +
+ camera1 +
+ +
连接失败
+
-
- camera2 +
+
+ +
+ camera2 +
+ +
连接失败
+
@@ -409,15 +441,30 @@
+ + - - + + +
+ + +
+ +
+ + +
@@ -430,14 +477,16 @@ import Header from '@/views/Header.vue' import { useAuthStore } from '../stores/index.js' import * as echarts from 'echarts' import { getBackendUrl, patientAPI } from '../services/api.js' -import noImageSvg from '@/assets/no-image.svg' +import noImageSvg from '@/assets/detection/no-image.png' import DiagnosticMessage from '@/views/DiagnosticMessage.vue' import PatientCreate from '@/views/PatientCreate.vue' import HistoryDashboard from '@/views/PatientProfile.vue' import Model from './model.vue' +import ViewUserInfo from '@/views/ViewUser.vue' +import refresh from '@/assets/detection/refresh.png' +import refresh_active from '@/assets/detection/refresh_active.png' const emit = defineEmits([ 'endChange']); -const asd = ref(0) const props = defineProps({ selectedPatient: { required: false, @@ -445,6 +494,7 @@ const props = defineProps({ default: null } }) +const isViewUser = ref(false) // 查看信息 const isCloseCreat =ref(false) // 是否打开患者信息编辑框 const isoperation = ref(false) // 是否保存数据 const isTip =ref(false) @@ -477,10 +527,10 @@ function closeTipClick(){ const isDiagnosticMessage = ref(false) -const isBig =ref(false) +const isBig1 =ref(false) +const isBig2 =ref(false) const authStore = useAuthStore() const router = useRouter() -const route = useRoute() const isRecording = ref(false) const isConnected = ref(false) const rtspImgSrc = ref('') @@ -495,10 +545,6 @@ const videoImgRef =ref(null) // 视频流图片ref const camera1Ref = ref(null) const camera2Ref = ref(null) const historyDialogVisible = ref(false) -// 录像相关变量 -let mediaRecorder = null -let recordedChunks = [] -let recordingStream = null // 患者信息(从页面获取或通过API获取) const patientInfo = ref({ id: '', @@ -528,16 +574,7 @@ let frameCount = 0 // 后端服务器地址配置 const BACKEND_URL = getBackendUrl() const resDialogVisible = ref(false) -const reshandleClose = () => { - resDialogVisible.value = false -} -const cameraHandleClose = () => { - cameraDialogVisible.value = false -} const dialogVisible = ref(false) -const handleClose = () => { - dialogVisible.value = false -} // 表单引用 const patientFormRef = ref() // 表单数据 @@ -2140,6 +2177,12 @@ function handleEditUserInfo(){ function closePatientProfile(){ historyDialogVisible.value =false } +function closeViewUserInfo(){ + isViewUser.value = false +} +function viewClick(){ + isViewUser.value = true +} @@ -2751,4 +2836,71 @@ function closePatientProfile(){ padding-top: 50px; padding-right: 10px; } +.calibration-zero{ + width: 70px; + height: 28px; + background-color: rgb(69, 91, 123); + display:flex; + align-items:center; + justify-content:center; + border-radius: 4px; + box-shadow: none; + font-family: "Noto Sans SC"; + font-weight: 400; + font-style: normal; + font-size: 14px; + color: rgb(255, 255, 255); + margin-left:10px; + cursor:pointer; +} +.calibration-zero:hover{ + background-color: #14aaff; +} +.noImageSvg-bg{ + display:flex; + justify-content:center; + align-items:center; +} + +.pop-up-camera-container .formreturnCancel{ + width: 80px; + height: 40px; + background: rgba(89, 113, 148, 1); + border: 1px solid rgba(89, 113, 148, 1); + font-family: 'Noto Sans SC'; + font-weight: 400; + font-style: normal; + font-size: 14px; + color: rgba(255, 255, 255, 0.6); +} +.pop-up-camera-container .formreturnCancel:hover{ + background: #14aaff; + color:#ffffff; +} +.pop-up-camera-container .formsaveCancel { + width: 80px; + height: 40px; + background: #0b94d5; + font-family: 'Noto Sans SC'; + font-weight: 400; + font-style: normal; + font-size: 14px; + color: #FFFFFF; +} +.pop-up-camera-container .formsaveCancel:hover{ + background: #5189ff; + color:#ffffff; +} +.big-img{ + position: absolute; + left: 10px; + top: 10px; + width: 30px; + height: 30px; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; +} diff --git a/frontend/src/renderer/src/views/Header.vue b/frontend/src/renderer/src/views/Header.vue index 714b9a7c..8b39bb76 100644 --- a/frontend/src/renderer/src/views/Header.vue +++ b/frontend/src/renderer/src/views/Header.vue @@ -9,10 +9,8 @@
平衡体态检测系统 {{ licenseBadge }} - - - - + +
@@ -171,7 +169,7 @@ licenseType.value = 'trial' showActivateButton.value = true } else { - licenseBadge.value = '已授权' + licenseBadge.value = '已激活' licenseClass.value = 'badge-valid' licenseType.value = 'full' showActivateButton.value = false @@ -273,18 +271,17 @@ \ No newline at end of file diff --git a/frontend/src/renderer/src/views/ViewUser.vue b/frontend/src/renderer/src/views/ViewUser.vue new file mode 100644 index 00000000..feb04c2d --- /dev/null +++ b/frontend/src/renderer/src/views/ViewUser.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/frontend/src/renderer/src/views/model.vue b/frontend/src/renderer/src/views/model.vue index 650c62e4..b7cd51dd 100644 --- a/frontend/src/renderer/src/views/model.vue +++ b/frontend/src/renderer/src/views/model.vue @@ -34,7 +34,6 @@ onMounted(() => { function initThreeJS() { // 创建场景 scene = new THREE.Scene(); - scene.background = new THREE.Color(0x282828); // 稍微提亮背景 let containermodel = document.getElementById('containermodel'); // 创建相机 camera = new THREE.PerspectiveCamera(75, containermodel.offsetWidth / containermodel.offsetHeight, 0.1, 1000); @@ -42,7 +41,9 @@ function initThreeJS() { camera.lookAt(0, 0, 0); // 创建渲染器 - renderer = new THREE.WebGLRenderer({ antialias: true }); + renderer = new THREE.WebGLRenderer({ antialias: true,alpha: true }); + scene.background = null; // 置空场景背景 + renderer.setClearColor(0x000000, 0); // 设置透明度为0(完全透明) renderer.setSize(containermodel.offsetWidth, containermodel.offsetHeight); renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap;