From 61b720fff4bf57ea6aaadb8dca9161813078d1d7 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Thu, 11 Dec 2025 16:18:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=8F=8C=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=AF=B9=E6=AF=94=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Log/OrbbecSDK.log.txt | Bin 22147 -> 25575 bytes backend/main.py | 2 +- .../src/renderer/src/assets/archive/close.png | Bin 387 -> 0 bytes .../renderer/src/assets/archive/close2.png | Bin 324 -> 0 bytes .../renderer/src/assets/archive/download.png | Bin 0 -> 348 bytes .../src/renderer/src/views/PatientProfile.vue | 25 +- .../renderer/src/views/PopUpOnlyReport.vue | 3 +- .../src/renderer/src/views/PopUpReport.vue | 42 +- .../src/views/ReportComparison - 副本.vue | 731 ++++++++++++++++++ .../renderer/src/views/ReportComparison.vue | 490 ++++++++---- 10 files changed, 1129 insertions(+), 164 deletions(-) delete mode 100644 frontend/src/renderer/src/assets/archive/close.png delete mode 100644 frontend/src/renderer/src/assets/archive/close2.png create mode 100644 frontend/src/renderer/src/assets/archive/download.png create mode 100644 frontend/src/renderer/src/views/ReportComparison - 副本.vue diff --git a/backend/Log/OrbbecSDK.log.txt b/backend/Log/OrbbecSDK.log.txt index cdf03d3a13bb79c275635ca9f451c5c11a80f3b3..cfac73c77b44c2f8c3c5bbf2339f6effaf82747a 100644 GIT binary patch delta 1439 zcmaKs-D(s;5QPbbhzK!@M2XoXE3BIp&1R~9s;4Ii2_Yy%&?`Y=z=%JnU{Fvm4dfB} z1$+S^Pau2erSS!nz4A4znd#}C>VVht^{G>*PtWnUslPv_PL3bBlWWsGfF8&~Vj<-y zLkUvv?>&F|`&OA83o(c=h6X^Z+ zC!yExULMx7-FS9qIq@eAFy!ZaKXtdvMU|!#t&QBIGw+Ue``y;o3OR#r>%zc& z-JM}0Xx#5Bt1HZ&v07$lhdsSNio-}oa2<4C&gFd1Qb)9f9Na*jsMY#RqGPee z5+%kWi)+%^;Fhg6KuDU;>E@7KGGWp(4Baoe&Y~tpai)s8cdwsfn)ju`9$p?M3!*{p z4Bh6;aET>uO(xrgaFf;BwQ+5WEE~~REF0tZ1FOt`8Xe9URLPmx=m=SvK-B2Ps(gXT zfv&M`G+6h2_HMVf9{`Ia5`gQM25FnSOi%!{hq^zVtG>&Pq5zS4_g!9)g@=^RG4_;< zWpg)uu7R+vM@>XIsP3^RFv~@}o;q0Sv2Rxc0p#)7mynyY$W}s7imi0i+2$b;VZwi* zvT}!;ML@wMO0%KC!3wHayV@@`IPrqIy;HR{^*4nuK42eBY;QA8pox#69!Kr<&%A-? Om6KF+{glplWAG2;Acq|Q delta 9 QcmaEUoUwT=LlQC<;KorNHcR18o3U{}3=-!ZoWD+tv=w}E)90EFs zpU0ttNa<&2gis3o0E!9u66$Ey4p%Pi8K2koEk};``z818pVs}uBmA$3Tm)z4jMhv5 zU_P6ymJ36R;B2*A%x9BYAvhZj`hoA6SR^0#-f+-Y&6KvSbe)A^FYvuE?4|4MR8=^? z+3rT;>Hcu653)ZTN8{;cyF90QB}wsE1QkX>;jxZg3s|TIbPH zug!}R09?mL_-2K)ygWa-jtu~LQATlciT^Q+KUaf79>jI*yeRXcbR8Q{ov!#k|0qtP zIKlIxE6(rFBy|Mg<^EL*!Fdx4G07ipAtpR-p|ovr&bnO-=Vhrs;5E(O-aq8#S2_h} hS9w)hb92CdRi9qm1n#4B)vW*k002ovPDHLkV1lzWsa*g7 diff --git a/frontend/src/renderer/src/assets/archive/close2.png b/frontend/src/renderer/src/assets/archive/close2.png deleted file mode 100644 index 87d3f8ead11472eaa7adbb74c32633009b0edf85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmV-K0lWT*P)z`TG6p&3kA%*KXN6 zb?$1Mni&`vuHC%%1yw&>=j7R|(4519%z?Oe)yCZn3=DZ`;S3B6uiw7Ir4vOnvOnSa z|NQxjOD7`0Fhl6|+joEd{AFQbe);M>R-I6rafR*LEqha`)Oi&n{IP4s6)U*(qi9Zw@;`a*3R+4))^Dt@vFG3^xFDl7p)8395Xh3lQZoQs W51B8A7D|!;0000Px$7D+@wR9Hvtmdg#oFc3s%I)NIX6yS=u(FLRnZip*T3e-S4S>ni%g7H7Ha&b

3@2*44{BUM{Oac&*quKz;OYTOd0*D64&XXOeghiwRR0pa9WgHNZ6@Vvz8_Bb4 z$i%c^*QqLg4`4&`ZRWDh0S)ldiyIe22tbRUbe?rIfF3ei0CyjR55N%Lk$l*k^iDz% z@j|!&V#WJ09=b$)5H^4m@hAY_ahL$9;?V#uh%rEpcoKjOqPq}>3U5a5&VoxWLR)}Q z6Xud6@ni=EH3vkpcs79LII_ei0cePY{v~Te?dufu|*T u80WPCd`B^~(bm|BFhJMaaZ!mlCl=0oWK0000 + :selectedPatient="selectedPatient" @closeReportComparison="isReportComparison = false"/> @@ -421,6 +421,8 @@ const handleSubmit = (item) => { const sessionsId = ref('') function selectRecord(data){ selectedRecord.value = data + checkboxVideo.value = [] + checkboxGroup.value = [] sessionsById(data.id) sessionsId.value = data.id profileInfo.value = { @@ -696,6 +698,27 @@ function viewPatientProfile() { //对比报告 if (selectedData.value.length !== 2) { return } + if (selectedData.value[0].data_ids == null) { + ElMessage.error({ + message: '对比报告不能为空', + duration: 5000 + }) + return + } + if (selectedData.value[1].data_ids == null) { + ElMessage.error({ + message: '对比报告不能为空', + duration: 5000 + }) + return + } + if (selectedData.value[0].data_ids.split(',').length !== selectedData.value[1].data_ids.split(',').length) { + ElMessage.error({ + message: '请选择相同类型报告对比', + duration: 5000 + }) + } + isReportComparison.value = true } diff --git a/frontend/src/renderer/src/views/PopUpOnlyReport.vue b/frontend/src/renderer/src/views/PopUpOnlyReport.vue index a7b3256e..c89a4ad1 100644 --- a/frontend/src/renderer/src/views/PopUpOnlyReport.vue +++ b/frontend/src/renderer/src/views/PopUpOnlyReport.vue @@ -232,7 +232,8 @@ const generatePDF = async () => { // 使用检测ID作为文件名 const filename = `${props.detectionInfo.id || 'report'}.pdf` form.append('file', blob, filename) - + form.append('data_ids', rawData.value.id) + // 如果有detectionInfo.id,则上传到后端 if (props.detectionInfo.id) { const res = await fetch(`${BACKEND_URL}/api/reports/${props.detectionInfo.id}/upload`, { diff --git a/frontend/src/renderer/src/views/PopUpReport.vue b/frontend/src/renderer/src/views/PopUpReport.vue index b040518b..fd613c50 100644 --- a/frontend/src/renderer/src/views/PopUpReport.vue +++ b/frontend/src/renderer/src/views/PopUpReport.vue @@ -54,21 +54,20 @@

整体数据
-
- -
-
身体姿态
-
- +
+
身体姿态
+
头部姿态
-
+
-
+
左: {{headPoseMaxValuesLeft.rotationLeftMax}}° @@ -80,7 +79,7 @@ {{headPoseMaxValuesLeft.pitchDownMax}}°
-
+
右: {{headPoseMaxValuesLeft.rotationRightMax}}°
@@ -96,7 +95,7 @@
足底压力
-
+
@@ -120,21 +119,19 @@
整体数据
-
+
身体姿态
-
- -
+
头部姿态
-
+
-
+
左: {{headPoseMaxValuesRight.rotationLeftMax}}° @@ -146,7 +143,7 @@ {{headPoseMaxValuesRight.pitchDownMax}}°
-
+
右: {{headPoseMaxValuesRight.rotationRightMax}}°
@@ -162,7 +159,7 @@
足底压力
-
+
@@ -190,9 +187,6 @@
检测医生:{{ detectionInfo.creator_name }}
- - -
@@ -301,6 +295,7 @@ const generatePDF = async () => { // 使用检测ID作为文件名 const filename = `${props.detectionInfo.id || 'report'}.pdf` form.append('file', blob, filename) + form.append('data_ids', rawData.value.id + ',' + calibrationData.value.id) // 如果有detectionInfo.id,则上传到后端 if (props.detectionInfo.id) { @@ -684,7 +679,7 @@ function getFormattedTime() { } } -.PopUpOnlyReport-footer{ +.PopUpReport-footer{ margin-top: 40px; padding-top: 40px; border-top: 1px solid #333; @@ -694,4 +689,5 @@ function getFormattedTime() { color: rgb(40, 40, 40); font-size: 18px; } + diff --git a/frontend/src/renderer/src/views/ReportComparison - 副本.vue b/frontend/src/renderer/src/views/ReportComparison - 副本.vue new file mode 100644 index 00000000..14caf7f6 --- /dev/null +++ b/frontend/src/renderer/src/views/ReportComparison - 副本.vue @@ -0,0 +1,731 @@ + + + + + + + diff --git a/frontend/src/renderer/src/views/ReportComparison.vue b/frontend/src/renderer/src/views/ReportComparison.vue index 589c8259..039e7d53 100644 --- a/frontend/src/renderer/src/views/ReportComparison.vue +++ b/frontend/src/renderer/src/views/ReportComparison.vue @@ -1,11 +1,17 @@ From 1a842b93e0c912a3b27e1c89657b0424ed9d9b5e Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Thu, 11 Dec 2025 16:57:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=95=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=AF=B9=E6=AF=94=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...n - 副本.vue => AloneReportComparison.vue} | 358 +++++++++--------- .../src/renderer/src/views/PatientProfile.vue | 13 +- 2 files changed, 183 insertions(+), 188 deletions(-) rename frontend/src/renderer/src/views/{ReportComparison - 副本.vue => AloneReportComparison.vue} (57%) diff --git a/frontend/src/renderer/src/views/ReportComparison - 副本.vue b/frontend/src/renderer/src/views/AloneReportComparison.vue similarity index 57% rename from frontend/src/renderer/src/views/ReportComparison - 副本.vue rename to frontend/src/renderer/src/views/AloneReportComparison.vue index 14caf7f6..e015a77b 100644 --- a/frontend/src/renderer/src/views/ReportComparison - 副本.vue +++ b/frontend/src/renderer/src/views/AloneReportComparison.vue @@ -1,54 +1,57 @@ @@ -206,7 +216,7 @@ import { ref, onMounted, onUnmounted } from 'vue' import { historyAPI,getBackendUrl } from '@/services/api.js' import { ElMessage } from 'element-plus' -const emit = defineEmits([ 'closeReportComparison' ]); +const emit = defineEmits([ 'closeAloneReportComparison' ]); const props = defineProps({ selectedPatient: { required: false, @@ -261,24 +271,6 @@ const calculateAge = (birthDate) => { // 获取年龄 onMounted(() => { sessionsByIdLeft(props.selectedData[0].id) sessionsByIdRight(props.selectedData[1].id) - // imageList.value = props.detectionInfo.data - // for (let i = 0; i < imageList.value.length; i++) { - // if(imageList.value[i].id == props.selectIds[0]){ - // rawOneDatavalue = imageList.value[i] - // if(imageList.value[i].head_pose !=null){ - // headPoseMaxValuesLeft.value = JSON.parse(imageList.value[i].head_pose).headPoseMaxValues - // } - // } - // if(imageList.value[i].id == props.selectIds[1]){ - // calibrationOneData.value = imageList.value[i] - // if(imageList.value[i].head_pose !=null){ - // headPoseMaxValuesRight.value = JSON.parse(imageList.value[i].head_pose).headPoseMaxValues - // } - // } - // } - // setTimeout(() => { - // generatePDF() - // }, 500); }) const leftInfo = ref({}) const rightInfo = ref({}) @@ -289,16 +281,12 @@ const sessionsByIdLeft = async (session_id) => { if (response.success) { // 回填会话诊断信息到左侧表单 leftInfo.value = response.data - response.data.data.forEach(element => { - if(element.id == props.selectedData[0].data_ids.split(",")[0]){ rawOneData.value = element - } - }); - response.data.data.forEach(element => { - if(element.id == props.selectedData[0].data_ids.split(",")[1]){ - calibrationOneData.value = element + if(element.head_pose !=null){ + headPoseMaxValuesLeft.value = JSON.parse(element.head_pose).headPoseMaxValues + } } }); } @@ -316,13 +304,12 @@ const sessionsByIdRight = async (session_id) => { response.data.data.forEach(element => { if(element.id == props.selectedData[1].data_ids.split(",")[0]){ rawTwoData.value = element + if(element.head_pose !=null){ + headPoseMaxValuesRight.value = JSON.parse(element.head_pose).headPoseMaxValues + } } }); - response.data.data.forEach(element => { - if(element.id == props.selectedData[1].data_ids.split(",")[1]){ - calibrationTwoData.value = element - } - }); + } } catch (error) { @@ -358,7 +345,7 @@ const generatePDF = async () => { const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url - a.download = filename + a.download = '对比报告' document.body.appendChild(a) a.click() document.body.removeChild(a) @@ -381,12 +368,12 @@ function getFormattedTime() { return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } function handleCancel(){ - emit('closeReportComparison',false) + emit('closeAloneReportComparison',false) }