From 33d5e5a6e547704002975413a30031f083b17f7e Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Fri, 9 Jan 2026 18:13:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8C=89=E9=92=AE=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E8=A7=86=E9=A2=91=E5=88=A4=E6=96=AD=E6=9C=89?= =?UTF-8?q?=E5=87=A0=E4=B8=AA,=E8=AF=8A=E6=96=AD=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=88=A0=E9=99=A4bug=EF=BC=8C=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=98=BE=E7=A4=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tivation_request_W10-F5AC32003C0A160B.json | 15 + frontend/src/renderer/src/assets/close.png | Bin 0 -> 246 bytes frontend/src/renderer/src/assets/home/add.png | Bin 172 -> 200 bytes .../src/views/AloneReportComparison.vue | 16 +- frontend/src/renderer/src/views/Dashboard.vue | 40 +- frontend/src/renderer/src/views/Detection.vue | 661 ++++++++++++++++-- .../renderer/src/views/DiagnosticMessage.vue | 61 +- .../src/renderer/src/views/GenerateReport.vue | 16 +- frontend/src/renderer/src/views/Header.vue | 7 +- .../src/renderer/src/views/ImageDetails.vue | 6 +- .../src/views/ImageDetailsCompare.vue | 41 +- frontend/src/renderer/src/views/License.vue | 6 +- .../src/renderer/src/views/PatientCreate.vue | 2 +- .../src/renderer/src/views/PatientProfile.vue | 46 +- .../renderer/src/views/PatientProfile2.vue | 9 - .../renderer/src/views/PopUpOnlyReport.vue | 8 +- .../src/renderer/src/views/PopUpReport.vue | 16 +- .../renderer/src/views/ReportComparison.vue | 32 +- 18 files changed, 816 insertions(+), 166 deletions(-) create mode 100644 backend/activation_request_W10-F5AC32003C0A160B.json create mode 100644 frontend/src/renderer/src/assets/close.png diff --git a/backend/activation_request_W10-F5AC32003C0A160B.json b/backend/activation_request_W10-F5AC32003C0A160B.json new file mode 100644 index 00000000..1a1a650a --- /dev/null +++ b/backend/activation_request_W10-F5AC32003C0A160B.json @@ -0,0 +1,15 @@ +{ + "product": "BodyBalanceEvaluation", + "version": "1.5.0", + "machine_id": "W10-F5AC32003C0A160B", + "platform": "Windows", + "request_time": "2026-01-09T02:40:10.695573+00:00", + "hardware_info": { + "system": "Windows", + "machine": "AMD64", + "processor": "Intel64 Family 6 Model 165 Stepping 3, GenuineIntel", + "node": "PS2020LTDYIFOO" + }, + "company_name": "北京天宏博科技有限公司", + "contact_info": "thb@163.com" +} \ No newline at end of file diff --git a/frontend/src/renderer/src/assets/close.png b/frontend/src/renderer/src/assets/close.png new file mode 100644 index 0000000000000000000000000000000000000000..ad547e161830d76ecab10e62ed0b01528a161fb3 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!V7I4>V~9p@>qJLB2Ll1u+sDqv95mFqbNEnG zbc9v!(j&SjK4e=NEjsLd%;fRkWk-br-_M!t%)z{ia}U?rp6*`^FL?J?38!9Z%Sycv zp{QD(dE|-HGMyI}*6XYY2;*Cs9rk1Q_k9Pd9!_K|+tc4@WPhY}+T|C8%T1DsHhti# oJ$XpE<#@*<`yY-|Iy0;o7yP;r?zEY)4d^TePgg&ebxsLQ06lwNx&QzG literal 0 HcmV?d00001 diff --git a/frontend/src/renderer/src/assets/home/add.png b/frontend/src/renderer/src/assets/home/add.png index 6646b70807df7df00c7b8ab2a32c84dd3788a1c5..cd072539ebe8cc00d0dc5056e14e2faaaa613eb5 100644 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWHz=tfz}(h=qUh0oH$ie_!W2GI?PP&jFUD8yUG3 zt~DAMGTQZ492B^8;>Z90|Jf9_wSSt}$T(#m!_tWdMb#Fl6>7AL9AI8*$Y{X#z1d(& qH=~oCO|{#S9F5M?jcysy3fAP%zHZ z#W6%{HCoE5)u{5;uc@IyCtMoRqy=1Uwz)DV(~#|RT)ABO=@2M SU%~^liNVv=&t;ucLK6U)AwHP^ diff --git a/frontend/src/renderer/src/views/AloneReportComparison.vue b/frontend/src/renderer/src/views/AloneReportComparison.vue index 6ab6fa83..0da727aa 100644 --- a/frontend/src/renderer/src/views/AloneReportComparison.vue +++ b/frontend/src/renderer/src/views/AloneReportComparison.vue @@ -110,13 +110,13 @@ -
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
@@ -183,13 +183,13 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
diff --git a/frontend/src/renderer/src/views/Dashboard.vue b/frontend/src/renderer/src/views/Dashboard.vue index fce98236..28b89398 100644 --- a/frontend/src/renderer/src/views/Dashboard.vue +++ b/frontend/src/renderer/src/views/Dashboard.vue @@ -10,8 +10,8 @@
@@ -189,7 +189,7 @@
-
+
@@ -222,9 +222,9 @@ :class="(pressureStatus === '已连接' && footImgSrc)?'':'noImageSvg-bg'"> -
- -
连接失败
+
+ +
连接已断开!
@@ -257,8 +257,9 @@
- -
+ +
@@ -287,16 +288,16 @@
-
+
- -
-
居住地
-
- {{ patientInfo.residence ==''||patientInfo.residence ==null ?'—':patientInfo.residence}} + @click="viewClick(true)"> +
+
电话
+
+ + {{ patientInfo.phone ==''||patientInfo.phone ==null ?'—':patientInfo.phone}} +
@@ -305,7 +306,7 @@ {{ patientInfo.height ==''||patientInfo.height ==null ?'—':patientInfo.height}}cm
-
+
体重
{{ patientInfo.weight ==''||patientInfo.weight ==null ?'—':patientInfo.weight}}kg @@ -318,9 +319,72 @@
+
+ +
+
出生日期
+
+ + {{ formatDate(patientInfo.birth_date) }} + +
+
+
+
身高
+
+ {{ patientInfo.height ==''||patientInfo.height ==null ?'—':patientInfo.height}}cm +
+
+
+
体重
+
+ {{ patientInfo.weight ==''||patientInfo.weight ==null ?'—':patientInfo.weight}}kg +
+
+
+
鞋码
+
+ {{ patientInfo.shoe_size ==''||patientInfo.shoe_size ==null ?'—':patientInfo.shoe_size}}码
+
+
+
电话
+
+ {{ patientInfo.phone ==''||patientInfo.phone ==null ?'—':patientInfo.phone}} +
+
+
+
民族
+
+ {{ patientInfo.nationality ==''||patientInfo.nationality ==null ?'—':patientInfo.nationality}}
+
+
+
身份证号
+
+ {{ patientInfo.idcode ==''||patientInfo.idcode ==null ?'—':patientInfo.idcode}} +
+
+
+
职业
+
+ {{ patientInfo.occupation ==''||patientInfo.occupation ==null ?'—':patientInfo.occupation}}
+
+
+
居住地
+
+ {{ patientInfo.residence ==''||patientInfo.residence ==null ?'—':patientInfo.residence}}
+
+
+
邮箱
+
+ {{ patientInfo.email ==''||patientInfo.email ==null ?'—':patientInfo.email}}
+
+ +
-
+
@@ -335,7 +399,7 @@
-
+
@@ -343,9 +407,9 @@
camera1 -
- -
连接失败
+
+ +
连接已断开!
@@ -355,9 +419,282 @@
camera2 -
- -
连接失败
+
+ +
连接已断开!
+
+
+
+
+ + + + +
+
+
+ +
患者信息
+
+
+
+
+
+ + +
+ +
+
+
+
{{ patientInfo.name }}
+
{{ patientInfo.gender }}
+
+
{{ calculateAge(patientInfo.birth_date) }}岁
+
+
+ ID:{{ patientInfo.id }} +
+
+ +
+
+
+
出生日期
+
+ + {{ formatDate(patientInfo.birth_date) }} + +
+
+
+
身高
+
+ {{ patientInfo.height ==''||patientInfo.height ==null ?'—':patientInfo.height}}cm +
+
+
+
体重
+
+ {{ patientInfo.weight ==''||patientInfo.weight ==null ?'—':patientInfo.weight}}kg +
+
+
+
鞋码
+
+ {{ patientInfo.shoe_size ==''||patientInfo.shoe_size ==null ?'—':patientInfo.shoe_size}}码
+
+
+
电话
+
+ {{ patientInfo.phone ==''||patientInfo.phone ==null ?'—':patientInfo.phone}} +
+
+
+
民族
+
+ {{ patientInfo.nationality ==''||patientInfo.nationality ==null ?'—':patientInfo.nationality}}
+
+
+
身份证号
+
+ {{ patientInfo.idcode ==''||patientInfo.idcode ==null ?'—':patientInfo.idcode}} +
+
+
+
职业
+
+ {{ patientInfo.occupation ==''||patientInfo.occupation ==null ?'—':patientInfo.occupation}}
+
+
+
居住地
+
+ {{ patientInfo.residence ==''||patientInfo.residence ==null ?'—':patientInfo.residence}}
+
+
+
邮箱
+
+ {{ patientInfo.email ==''||patientInfo.email ==null ?'—':patientInfo.email}}
+
+ +
+
+
+
+
+
+ +
视频
+
+
+ +
+ {{ cameraStatus }} +
+
+
+
+
+
+ +
+ camera1 +
+ +
连接已断开!
+
+
+
+
+ +
+ camera2 +
+ +
连接已断开!
+
+
+
+
+
+ +
+
+
+ +
患者信息
+
+
+
+
+
+ + +
+ +
+
+
+
{{ patientInfo.name }}
+
{{ patientInfo.gender }}
+
+
{{ calculateAge(patientInfo.birth_date) }}岁
+
+
+ ID:{{ patientInfo.id }} +
+
+ +
+
+
+
出生日期
+
+ + {{ formatDate(patientInfo.birth_date) }} + +
+
+
+
身高
+
+ {{ patientInfo.height ==''||patientInfo.height ==null ?'—':patientInfo.height}}cm +
+
+
+
体重
+
+ {{ patientInfo.weight ==''||patientInfo.weight ==null ?'—':patientInfo.weight}}kg +
+
+
+
鞋码
+
+ {{ patientInfo.shoe_size ==''||patientInfo.shoe_size ==null ?'—':patientInfo.shoe_size}}码
+
+
+
电话
+
+ {{ patientInfo.phone ==''||patientInfo.phone ==null ?'—':patientInfo.phone}} +
+
+
+
民族
+
+ {{ patientInfo.nationality ==''||patientInfo.nationality ==null ?'—':patientInfo.nationality}}
+
+
+
身份证号
+
+ {{ patientInfo.idcode ==''||patientInfo.idcode ==null ?'—':patientInfo.idcode}} +
+
+
+
职业
+
+ {{ patientInfo.occupation ==''||patientInfo.occupation ==null ?'—':patientInfo.occupation}}
+
+
+
居住地
+
+ {{ patientInfo.residence ==''||patientInfo.residence ==null ?'—':patientInfo.residence}}
+
+
+
邮箱
+
+ {{ patientInfo.email ==''||patientInfo.email ==null ?'—':patientInfo.email}}
+
+ +
+
+
+
+
+
+ +
视频
+
+
+ +
+ {{ cameraStatus }} +
+
+
+
+
+
+ +
+ camera1 +
+ +
连接已断开!
+
+
+
+
+ +
+ camera2 +
+ +
连接已断开!
@@ -372,9 +709,11 @@
提示
-
本次检测未截图或录像操作,不予存档记录!
+
本次检测未截图或录像操作,不予存档记录!
+
本次检测未截图操作,存档记录不可生成报告!
- 确定 + 确定 + 确定
@@ -393,7 +732,7 @@
相机参数设置
- +
@@ -407,12 +746,14 @@
+ +
-
+
足部相机
-
+
相机上
@@ -423,8 +764,9 @@ 5号
+
-
+
相机下
@@ -435,6 +777,19 @@ 5号
+ +
+
+
+
遥控器
+
+
+
串口号
+ + + + +
退出 @@ -498,16 +853,21 @@ const props = defineProps({ required: false, type: Object, default: null - } + }, }) +const remotePortData =ref([]) // 遥控器串口数据 +const videoNum = ref(2) // 视频数量 +const videoTop = ref(1) // 视频位置 +const isExpand = ref(false) // 是否展开 const isViewUser = ref(false) // 查看信息 const isCloseCreat =ref(false) // 是否打开患者信息编辑框 const isoperation = ref(false) // 是否保存数据 +const isVideoOperation = ref(false) // 是否录制视频 const isTip =ref(false) const isStartVideo = ref(false) function startVideoClick() { startRecord() - isoperation.value = true + isVideoOperation.value = true isStartVideo.value = true } function stopVideoClick() { @@ -562,7 +922,6 @@ const screenshotLoading = ref(false) const cameraDialogVisible =ref(false) // 设置相机参数弹框 const contenGridRef =ref(null) // 实时检查整体box const wholeBodyRef = ref(null) // 身体姿态ref -const videoImgRef =ref(null) // 视频流图片ref const camera1Ref = ref(null) const camera2Ref = ref(null) const historyDialogVisible = ref(false) @@ -654,6 +1013,10 @@ const cameraForm = ref({ // 相机参数 }, imu:{ port: '', // IMU串口号 + }, + remote:{ + port: '', // IMU串口号 + enabled: false } }) const calculatedAge = ref(null) @@ -891,7 +1254,10 @@ function cameraUpdate() { // 相机设置数据更新弹框 }, imu:{ port: '', // IMU串口号 - } + }, + remote:{ + port: '', // IMU串口号 + } } // 加载相机参数信息 getDevicesInit() @@ -1598,7 +1964,6 @@ async function handleDiagnosticInfo(status) { // 保存检测数据 async function saveDetectionData() { - console.log(tempInfo.value) if (screenshotLoading.value) return let titile_height = 24 try { @@ -1734,15 +2099,15 @@ async function sendDetectionData(data) { } // 处理开始/停止按钮点击 -async function handleStartStop() { - if (isRecording.value) { - // 停止录制视频 - await stopRecord() - } else { - // 开始录制视频 - await startRecord() - } -} +// async function handleStartStop() { +// if (isRecording.value) { +// // 停止录制视频 +// await stopRecord() +// } else { +// // 开始录制视频 +// await startRecord() +// } +// } // 开始检测 async function startDetection() { try { @@ -1995,7 +2360,10 @@ const getDevicesInit = async () => { } onMounted(() => { - + for(let i = 0; i < 20; i++){ + let port = "COM" + (i + 1) + remotePortData.value.push(port) + } if (authStore.currentUser) { console.log(authStore.currentUser) creatorId.value = authStore.currentUser.id @@ -2084,6 +2452,10 @@ const startRecord = async () => { // 开始录屏 } let screen_location = contenGridRef.value.getBoundingClientRect() let femtobolt_location = wholeBodyRef.value.getBoundingClientRect() + + + + let camera1_location = camera1Ref.value?.getBoundingClientRect() let camera2_location = camera2Ref.value?.getBoundingClientRect() let titile_height = 24 @@ -2199,8 +2571,8 @@ function refreshClick(type) { async function closeDiagnosticMessage(e){ isDiagnosticMessage.value = false - if(e == '退出'){ - emit('endChange',false) + if(e == '关闭'){ + isTip.value = false } if (e === true || (typeof e === 'object' && e)){ try { @@ -2262,8 +2634,8 @@ function closePatientProfile(){ function closeViewUserInfo(){ isViewUser.value = false } -function viewClick(){ - isViewUser.value = true +function viewClick(e){ + isExpand.value = e } @@ -2313,6 +2685,11 @@ function viewClick(){ margin-left: 10px; cursor: pointer; } +.icon-box:hover{ + /* background-color: #14AAFF; */ + background-color: rgb(20 170 255 / 30%); + border: 1px solid rgb(20 170 255 / 50%); +} .startvideo-box{ width: 130px; display: flex; @@ -2523,13 +2900,36 @@ function viewClick(){ } .body-userinfo-box{ + position: relative; + z-index: 10; width: 100%; - height: 348px ; + height: 346px; /* background: linear-gradient(135deg, rgba(42, 54, 73, 1) 0%, rgba(42, 54, 73, 1) 0%, rgba(34, 43, 56, 1) 100%, rgba(34, 43, 56, 1) 100%); */ background: linear-gradient(135deg, #1a1e2a 0%, #222b38 100%); border: 1px solid #262d40; border-radius: 4px; } +.body-userinfo-expandbox{ + height: 638px ; +} +.body-userinfo-box1{ + width: 100%; + height: 534px ; + /* background: linear-gradient(135deg, rgba(42, 54, 73, 1) 0%, rgba(42, 54, 73, 1) 0%, rgba(34, 43, 56, 1) 100%, rgba(34, 43, 56, 1) 100%); */ + background: linear-gradient(135deg, #1a1e2a 0%, #222b38 100%); + border: 1px solid #262d40; + border-radius: 4px; +} +.body-userinfo-box3{ + width: 100%; + height: 100% ; + /* background: linear-gradient(135deg, rgba(42, 54, 73, 1) 0%, rgba(42, 54, 73, 1) 0%, rgba(34, 43, 56, 1) 100%, rgba(34, 43, 56, 1) 100%); */ + background: linear-gradient(135deg, #1a1e2a 0%, #222b38 100%); + border: 1px solid #262d40; + border-radius: 4px; +} + + .body-video-box{ width: 100%; height: calc(100% - 348px - 14px) ; @@ -2539,6 +2939,14 @@ function viewClick(){ border-radius: 4px; margin-top: 15px; } +.body-video-box1{ + width: 100%; + height: calc(100% - 534px - 14px) ; + background: linear-gradient(135deg, #1a1e2a 0%, #222b38 100%); + border: 1px solid #262d40; + border-radius: 4px; + margin-top: 15px; +} .body-userinfo-content{ width: 100%; height: calc(100% - 50px); @@ -2564,7 +2972,85 @@ function viewClick(){ border-radius: 8px; display: flex; flex-wrap: wrap; - align-content: space-around; + align-content: start; + border-width: 0px 1px 1px; + border-right-style: solid; + border-bottom-style: solid; + border-left-style: solid; + border-right-color: rgb(55, 65, 81); + border-bottom-color: rgb(55, 65, 81); + border-left-color: rgb(55, 65, 81); + border-top-style: initial; + border-top-color: initial; + border-radius: 0px 0px 8px 8px; + box-shadow: none; + font-family: "Noto Sans SC"; + font-weight: 400; + font-style: normal; +} + + +.body-userinfo-content-bottom0{ + padding:10px; + padding-top: 20px; + position: relative; + width: calc(100%); + height: calc(100% - 116px); + border-radius: 8px; + display: flex; + flex-wrap: wrap; + align-content: start; + border-width: 0px 1px 1px; + border-right-style: solid; + border-bottom-style: solid; + border-left-style: solid; + border-right-color: rgb(55, 65, 81); + border-bottom-color: rgb(55, 65, 81); + border-left-color: rgb(55, 65, 81); + border-top-style: initial; + border-top-color: initial; + border-radius: 0px 0px 8px 8px; + box-shadow: none; + font-family: "Noto Sans SC"; + font-weight: 400; + font-style: normal; +} +.body-userinfo-content-bottom1{ + padding:10px; + padding-top: 10px; + position: relative; + width: calc(100%); + height: calc(100% - 116px); + border-radius: 8px; + display: flex; + flex-wrap: wrap; + align-content: start; + border-width: 0px 1px 1px; + border-right-style: solid; + border-bottom-style: solid; + border-left-style: solid; + border-right-color: rgb(55, 65, 81); + border-bottom-color: rgb(55, 65, 81); + border-left-color: rgb(55, 65, 81); + border-top-style: initial; + border-top-color: initial; + border-radius: 0px 0px 8px 8px; + box-shadow: none; + font-family: "Noto Sans SC"; + font-weight: 400; + font-style: normal; +} + +.body-userinfo-content-bottom2{ + padding:10px; + padding-top: 20px; + position: relative; + width: calc(100%); + height: calc(100% - 116px); + border-radius: 8px; + display: flex; + flex-wrap: wrap; + align-content: start; border-width: 0px 1px 1px; border-right-style: solid; border-bottom-style: solid; @@ -2583,11 +3069,45 @@ function viewClick(){ .userinfo-disyplay1{ display: flex; width: calc(64%); + padding-top: 20px; } .userinfo-disyplay2{ display: flex; width: calc(36%); + padding-top: 20px; } +.userinfo-disyplaypadding1{ + width: calc(64%); + padding-bottom: 15px; +} +.padding10{ + padding-bottom: 5px; +} +.userinfo-disyplaypadding2{ + width: calc(36%); + padding-bottom: 15px; +} +.userinfo-disyplaypadding3{ + width: calc(100%); + padding-bottom: 15px; +} + +.userinfo-disyplaypadding4{ + /* display: flex; */ + width: calc(64%); + padding-bottom: 5px; +} +.userinfo-disyplaypadding5{ + /* display: flex; */ + width: calc(36%); + padding-bottom: 5px; +} +.userinfo-disyplaypadding6{ + /* display: flex; */ + width: calc(100%); + padding-bottom: 5px; +} + .useravatar-box{ width: 80px; height: 80px; @@ -2668,11 +3188,17 @@ function viewClick(){ width: 100%; height: calc(50% - 7px); } + .body-video-imgbox2{ position: relative; width: 100%; height: calc(50% - 8px); } +.body-video-imgbox3{ + position: relative; + width: 100%; + height: calc(100%); +} .patientInfotop1{ font-weight: 700; font-style: normal; @@ -2723,8 +3249,8 @@ function viewClick(){ /* background: linear-gradient(135deg, rgba(53, 67, 90, 1) 0%, rgba(53, 67, 90, 1) 0%, rgba(62, 79, 105, 1) 99%, rgba(62, 79, 105, 1) 100%); */ } .pop-up-camera-container{ - width: 608px; - height:495px; + width: 668px; + height:540px; position: absolute; top: 0; right: 0; @@ -2947,7 +3473,7 @@ function viewClick(){ cursor:pointer; } .calibration-zero:hover{ - background-color: #5189ff; + background-color: #14AAFF; } .noImageSvg-bg{ display:flex; @@ -2981,7 +3507,7 @@ function viewClick(){ color: #FFFFFF; } .pop-up-camera-container .formsaveCancel:hover{ - background: #5189ff; + background: #14AAFF; color:#ffffff; } .big-img{ @@ -2996,4 +3522,25 @@ function viewClick(){ justify-content: center; cursor: pointer; } + + + \ No newline at end of file diff --git a/frontend/src/renderer/src/views/DiagnosticMessage.vue b/frontend/src/renderer/src/views/DiagnosticMessage.vue index 82509bd0..5749de3f 100644 --- a/frontend/src/renderer/src/views/DiagnosticMessage.vue +++ b/frontend/src/renderer/src/views/DiagnosticMessage.vue @@ -4,7 +4,7 @@
诊断信息
- +
@@ -77,7 +77,7 @@ style="cursor: pointer;margin-left: 10px;"> -
@@ -132,6 +132,11 @@ const props = defineProps({ type: Object, default: {} }, + isVideoOperation:{ + required: false, + type: Boolean, + default: false + }, }) const diagnosticForm = ref({ @@ -222,7 +227,57 @@ onMounted(() => { onMounted(loadCommonItems) const handleCancel = async (type) => { - emit('closeDiagnosticMessage',type) + if(type == '关闭'){ + emit('closeDiagnosticMessage', '关闭') + return + } + try { + // 检查是否有活跃的会话ID + if (!props.selectedPatient.sessionId) { + throw new Error('缺少会话Id') + } + // 调用后端API采集检测数据 + const response = await fetch(`${BACKEND_URL}/api/detection/${props.selectedPatient.sessionId}/save-info`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + diagnosis_info: "", + treatment_info: "", + suggestion_info: "", + status: 'completed', + session_id: props.selectedPatient.sessionId, + }) + }) + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + + const result = await response.json() + if (result.success) { + // 显示成功消息 + // ElMessage.success({ + // message: status + '诊断信息成功', + // duration: 5000 + // }) + emit('closeDiagnosticMessage', { + diagnosis_info: "", + treatment_info: "", + remark_info: "" + }) + } else { + throw new Error(result.message || '诊断信息失败') + } + } catch (error) { + ElMessage.error({ + message: error?.message || '诊断信息失败', + duration: 5000 + }) + + } finally { + + } } async function handleDiagnosticInfo(status) { try { diff --git a/frontend/src/renderer/src/views/GenerateReport.vue b/frontend/src/renderer/src/views/GenerateReport.vue index c7997592..d8a15ceb 100644 --- a/frontend/src/renderer/src/views/GenerateReport.vue +++ b/frontend/src/renderer/src/views/GenerateReport.vue @@ -109,12 +109,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
@@ -176,12 +176,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
diff --git a/frontend/src/renderer/src/views/Header.vue b/frontend/src/renderer/src/views/Header.vue index e8bed449..7a2a177b 100644 --- a/frontend/src/renderer/src/views/Header.vue +++ b/frontend/src/renderer/src/views/Header.vue @@ -321,7 +321,7 @@ function userConfirm(){ background: linear-gradient(135deg, rgba(69, 91, 123, 1) 0%, rgba(69, 91, 123, 1) 0%, rgba(55, 65, 81, 1) 100%, rgba(55, 65, 81, 1) 100%); font-weight: 400; font-style: normal; - color: rgb(255, 255, 255); + color: rgba(255, 255, 255,0.8); font-size:14px; text-align: center; } @@ -329,11 +329,12 @@ function userConfirm(){ .badge-valid { text-align: center; - background-color: rgba(59, 242, 198, 1); + background: linear-gradient(135deg, rgba(69, 91, 123, 1) 0%, rgba(69, 91, 123, 1) 0%, rgba(55, 65, 81, 1) 100%, rgba(55, 65, 81, 1) 100%); + color: rgba(255, 255, 255, 0.8); font-weight:400; font-style:normal; font-size:14px; - color:#191D28; + } .activate-btn { width: 76px; diff --git a/frontend/src/renderer/src/views/ImageDetails.vue b/frontend/src/renderer/src/views/ImageDetails.vue index 560ba0b3..8efe86ca 100644 --- a/frontend/src/renderer/src/views/ImageDetails.vue +++ b/frontend/src/renderer/src/views/ImageDetails.vue @@ -56,7 +56,8 @@
-
+
+
-
-
{{ ImageDetailsInfoLeft.id }}视频1
- -
{{ ImageDetailsInfoLeft.id }}视频2
- +
+ +
+
{{ ImageDetailsInfoLeft.id }}视频1
+ +
+
+
+
{{ ImageDetailsInfoLeft.id }}视频2
+ +
+
-
-
{{ ImageDetailsInfoRight.id }}视频1
- -
{{ ImageDetailsInfoRight.id }}视频2
- +
+
{{ ImageDetailsInfoRight.id }}视频1
+ +
+
+
+
{{ ImageDetailsInfoRight.id }}视频2
+ +
+
diff --git a/frontend/src/renderer/src/views/License.vue b/frontend/src/renderer/src/views/License.vue index 01aea201..9c69421b 100644 --- a/frontend/src/renderer/src/views/License.vue +++ b/frontend/src/renderer/src/views/License.vue @@ -341,8 +341,6 @@ const activatePackage = async () => { } .tab-content .formsaveCancel:hover{ - /* background: #5189ff; - border: 1px solid #5189ff; */ background:#14aaff; border:1px solid #14aaff; @@ -403,7 +401,7 @@ const activatePackage = async () => { color: #fff; } .activatePackage:hover{ - background: #5189ff; - border-color: #5189ff; + background: #14AAFF; + border-color: #14AAFF; } \ No newline at end of file diff --git a/frontend/src/renderer/src/views/PatientCreate.vue b/frontend/src/renderer/src/views/PatientCreate.vue index b872cd80..4d8531ba 100644 --- a/frontend/src/renderer/src/views/PatientCreate.vue +++ b/frontend/src/renderer/src/views/PatientCreate.vue @@ -4,7 +4,7 @@
{{ patienttitle }}
- +
diff --git a/frontend/src/renderer/src/views/PatientProfile.vue b/frontend/src/renderer/src/views/PatientProfile.vue index 417c9609..938d2c59 100644 --- a/frontend/src/renderer/src/views/PatientProfile.vue +++ b/frontend/src/renderer/src/views/PatientProfile.vue @@ -88,11 +88,14 @@ -->
- @@ -136,8 +139,12 @@
测试医生:{{ selectedRecord.creator_name }}
就诊时间:{{ selectedRecord.start_time }}
档案ID:{{ selectedRecord.id }}
-
正在检测
- +
已完成检查
+
已诊断处理
+
已生成报告
@@ -154,7 +161,7 @@ @click="viewCompareImg"> - 查看 + 对比 -
@@ -398,7 +405,7 @@ import ImageDetails from '@/views/ImageDetails.vue' import ViewPDF from '@/views/viewPDF.vue' import ReportComparison from '@/views/ReportComparison.vue' import AloneReportComparison from '@/views/AloneReportComparison.vue' - +const recordDataRef = ref(null) const formatDate = (date) => { const d = new Date(date) const y = d.getFullYear() @@ -617,6 +624,10 @@ const sessionsInit = async () => { recordData.value = response.data.sessions if (recordData.value && recordData.value.length > 0) { const first = recordData.value[0] + if( first != null){ + recordDataRef.value?.setCurrentRow(recordData.value[0], true); // 第二个参数为 true 表示选中 + } + selectedRecord.value = first sessionsId.value = first.id profileInfo.value = { @@ -724,14 +735,6 @@ function deletePDF(id) { } function deleteClick(row){ - // 检查状态是否为 checking - // if (row.status === 'checking') { - // ElMessage.warning({ - // message: '平衡体态检查中,不能删除!', - // duration: 3000 - // }); - // return; - // } deleteId.value = row.id delType.value = 'listone' tipValue.value = '确定删除此检测记录吗?' @@ -1138,9 +1141,9 @@ historyAPI.VideoDelById(ids).then((response)=>{ width: 98px; height: 40px; background: inherit; - background-color: rgba(55, 65, 81, 1); + background-color: rgba(55, 65, 81, 1) !important; border-radius: 4px; - box-shadow: 0 0 0 rgba(55, 65, 81, 1); + box-shadow: 0 0 0 rgba(55, 65, 81, 1) ; border-color: rgba(55, 65, 81, 1); font-weight: 400; font-style: normal; @@ -1161,7 +1164,9 @@ historyAPI.VideoDelById(ids).then((response)=>{ color: #fff; cursor: pointer; } - +.patientprofile-selectedbutotn:hover{ + background-color: #14AAFF; +} diff --git a/frontend/src/renderer/src/views/PatientProfile2.vue b/frontend/src/renderer/src/views/PatientProfile2.vue index a48099d9..f0de3df0 100644 --- a/frontend/src/renderer/src/views/PatientProfile2.vue +++ b/frontend/src/renderer/src/views/PatientProfile2.vue @@ -900,15 +900,6 @@ const deleteClick = async (row,row2) => { const sessionsDelById = async (row) => { - // 检查状态是否为 checking - if (row.status === 'checking') { - ElMessage.warning({ - message: '平衡体态检查中,不能删除!', - duration: 3000 - }); - return; - } - ElMessageBox.confirm( '确定义删除此条数据?', '提示', diff --git a/frontend/src/renderer/src/views/PopUpOnlyReport.vue b/frontend/src/renderer/src/views/PopUpOnlyReport.vue index a986b4d3..f9a1d0ca 100644 --- a/frontend/src/renderer/src/views/PopUpOnlyReport.vue +++ b/frontend/src/renderer/src/views/PopUpOnlyReport.vue @@ -105,12 +105,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
diff --git a/frontend/src/renderer/src/views/PopUpReport.vue b/frontend/src/renderer/src/views/PopUpReport.vue index a1a596b6..190ce8ee 100644 --- a/frontend/src/renderer/src/views/PopUpReport.vue +++ b/frontend/src/renderer/src/views/PopUpReport.vue @@ -106,12 +106,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
@@ -171,12 +171,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
diff --git a/frontend/src/renderer/src/views/ReportComparison.vue b/frontend/src/renderer/src/views/ReportComparison.vue index f7f43057..079858b3 100644 --- a/frontend/src/renderer/src/views/ReportComparison.vue +++ b/frontend/src/renderer/src/views/ReportComparison.vue @@ -113,12 +113,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
@@ -180,12 +180,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
@@ -257,12 +257,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+
@@ -324,12 +324,12 @@
-
视频1图片
-
+
视频1图片
+
-
视频2图片
-
+
视频2图片
+