Merge branch 'main' of http://121.37.111.42:3000/ThbTech/BodyBalanceEvaluation into main
This commit is contained in:
commit
27d4092e66
@ -194492,3 +194492,263 @@ transform: {rot: [0.994135, -0.00252459, 0.00230278, 0.00226079, 0.994134, 0.108
|
||||
[08/06 09:16:02.117816][debug][2648][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 09:16:02.118401][debug][2648][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 09:16:02.118676][info][2648][Context.cpp:84] Context destroyed
|
||||
[08/06 16:03:14.044503][debug][17676][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:03:14.044599][debug][17676][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:03:14.044628][debug][17676][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:03:14.044652][info][17676][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:03:14.044936][info][17676][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:03:14.045171][debug][17676][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:03:14.045184][info][17676][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:03:14.045278][debug][17676][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:03:14.074226][debug][17676][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:03:14.074266][debug][17676][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:03:14.097196][debug][17676][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:03:14.097473][debug][17676][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:03:14.097687][debug][17676][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:03:14.097720][info][17676][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:03:14.097850][debug][17676][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:03:14.097871][debug][17676][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:03:14.097881][debug][17676][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:03:14.097890][debug][17676][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:03:14.098772][debug][17676][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:03:14.099070][info][17676][Context.cpp:84] Context destroyed
|
||||
[08/06 16:06:30.815796][debug][29672][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:06:30.815899][debug][29672][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:06:30.815926][debug][29672][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:06:30.815947][info][29672][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:06:30.816126][info][29672][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:06:30.816393][debug][29672][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:06:30.816414][info][29672][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:06:30.816552][debug][29672][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:06:30.844118][debug][29672][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:06:30.844165][debug][29672][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:06:30.867078][debug][29672][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:06:30.867402][debug][29672][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:06:30.867705][debug][29672][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:06:30.867736][info][29672][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:06:30.867967][debug][29672][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:06:30.868046][debug][29672][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:06:30.868082][debug][29672][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:06:30.868091][debug][29672][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:06:30.868890][debug][29672][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:06:30.869245][info][29672][Context.cpp:84] Context destroyed
|
||||
[08/06 16:08:52.321145][debug][26380][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:08:52.321267][debug][26380][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:08:52.321306][debug][26380][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:08:52.321328][info][26380][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:08:52.321578][info][26380][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:08:52.321776][debug][26380][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:08:52.321793][info][26380][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:08:52.321887][debug][26380][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:08:52.361501][debug][26380][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:08:52.361555][debug][26380][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:08:52.392828][debug][26380][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:08:52.393196][debug][26380][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:08:52.393539][debug][26380][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:08:52.393582][info][26380][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:08:52.393837][debug][26380][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:08:52.393864][debug][26380][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:08:52.393877][debug][26380][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:08:52.393887][debug][26380][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:08:52.398033][debug][26380][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:08:52.398403][info][26380][Context.cpp:84] Context destroyed
|
||||
[08/06 16:10:21.638974][debug][29392][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:10:21.639110][debug][29392][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:10:21.639149][debug][29392][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:10:21.639172][info][29392][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:10:21.639421][info][29392][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:10:21.639616][debug][29392][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:10:21.639637][info][29392][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:10:21.639888][debug][29392][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:10:21.684336][debug][29392][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:10:21.684398][debug][29392][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:10:21.721401][debug][29392][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:10:21.721922][debug][29392][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:10:21.722414][debug][29392][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:10:21.722485][info][29392][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:10:21.722732][debug][29392][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:10:21.722788][debug][29392][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:10:21.722811][debug][29392][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:10:21.722831][debug][29392][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:10:21.726464][debug][29392][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:10:21.726866][info][29392][Context.cpp:84] Context destroyed
|
||||
[08/06 16:10:57.645092][debug][20760][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:10:57.645324][debug][20760][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:10:57.645407][debug][20760][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:10:57.645444][info][20760][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:10:57.645773][info][20760][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:10:57.646061][debug][20760][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:10:57.646083][info][20760][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:10:57.646291][debug][20760][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:10:57.693789][debug][20760][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:10:57.693860][debug][20760][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:10:57.734267][debug][20760][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:10:57.734690][debug][20760][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:10:57.734988][debug][20760][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:10:57.735041][info][20760][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:10:57.735528][debug][20760][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:10:57.735616][debug][20760][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:10:57.735659][debug][20760][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:10:57.735689][debug][20760][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:10:57.741115][debug][20760][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:10:57.741988][info][20760][Context.cpp:84] Context destroyed
|
||||
[08/06 16:12:16.098220][debug][28004][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:12:16.098394][debug][28004][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:12:16.098436][debug][28004][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:12:16.098468][info][28004][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:12:16.098742][info][28004][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:12:16.098886][debug][28004][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:12:16.098901][info][28004][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:12:16.099085][debug][28004][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:12:16.134815][debug][28004][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:12:16.134858][debug][28004][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:12:16.172781][debug][28004][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:12:16.173306][debug][28004][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:12:16.173613][debug][28004][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:12:16.173659][info][28004][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:12:16.173897][debug][28004][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:12:16.173941][debug][28004][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:12:16.173956][debug][28004][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:12:16.173968][debug][28004][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:12:16.175519][debug][28004][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:12:16.176049][info][28004][Context.cpp:84] Context destroyed
|
||||
[08/06 16:13:23.391846][debug][13332][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:13:23.391992][debug][13332][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:13:23.392025][debug][13332][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:13:23.392050][info][13332][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:13:23.392226][info][13332][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:13:23.392496][debug][13332][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:13:23.392526][info][13332][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:13:23.392681][debug][13332][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:13:23.435989][debug][13332][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:13:23.436054][debug][13332][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:13:23.466488][debug][13332][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:13:23.466890][debug][13332][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:13:23.467292][debug][13332][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:13:23.467338][info][13332][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:13:23.467777][debug][13332][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:13:23.467808][debug][13332][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:13:23.467821][debug][13332][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:13:23.467831][debug][13332][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:13:23.474014][debug][13332][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:13:23.474445][info][13332][Context.cpp:84] Context destroyed
|
||||
[08/06 16:15:59.453762][debug][13332][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:15:59.453814][debug][13332][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:15:59.453833][debug][13332][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:15:59.453848][info][13332][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:15:59.453949][info][13332][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:15:59.454063][debug][13332][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:15:59.454074][info][13332][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:15:59.454171][debug][13332][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:15:59.478375][debug][13332][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:15:59.478410][debug][13332][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:15:59.503981][debug][13332][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:15:59.504283][debug][13332][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:15:59.504495][debug][13332][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:15:59.504521][info][13332][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:15:59.504714][debug][13332][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:15:59.504732][debug][13332][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:15:59.504742][debug][13332][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:15:59.504751][debug][13332][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:15:59.505619][debug][13332][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:15:59.506002][info][13332][Context.cpp:84] Context destroyed
|
||||
[08/06 16:16:20.739938][debug][18856][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 16:16:20.740031][debug][18856][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:16:20.740058][debug][18856][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:16:20.740075][info][18856][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:16:20.740333][info][18856][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:16:20.740472][debug][18856][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:16:20.740485][info][18856][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:16:20.740642][debug][18856][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:16:20.768187][debug][18856][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:16:20.768248][debug][18856][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:16:20.791752][debug][18856][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:16:20.792149][debug][18856][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:16:20.792375][debug][18856][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:16:20.792412][info][18856][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:16:20.792631][debug][18856][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:16:20.792653][debug][18856][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:16:20.792664][debug][18856][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:16:20.792673][debug][18856][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:16:20.794234][debug][18856][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:16:20.794542][info][18856][Context.cpp:84] Context destroyed
|
||||
[08/06 18:49:39.320553][debug][7128][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/06 18:49:39.321439][debug][7128][Context.cpp:49] Config file version=1.1
|
||||
[08/06 18:49:39.321794][debug][7128][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 18:49:39.321861][info][7128][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 18:49:39.322297][info][7128][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 18:49:39.322605][debug][7128][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 18:49:39.322653][info][7128][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 18:49:39.324634][debug][7128][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 18:49:39.397789][debug][7128][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 18:49:39.397898][debug][7128][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 18:49:39.480505][debug][7128][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 18:49:39.481199][debug][7128][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 18:49:39.481472][debug][7128][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 18:49:39.481703][info][7128][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 18:49:39.482334][debug][7128][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 18:49:39.482711][debug][7128][Context.cpp:81] Context destroying ...
|
||||
[08/06 18:49:39.482753][debug][7128][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 18:49:39.482846][debug][7128][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 18:49:39.484599][debug][7128][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 18:49:39.485324][info][7128][Context.cpp:84] Context destroyed
|
||||
[08/07 08:37:04.330106][debug][1608][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/07 08:37:04.331001][debug][1608][Context.cpp:49] Config file version=1.1
|
||||
[08/07 08:37:04.331403][debug][1608][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/07 08:37:04.331481][info][1608][Context.cpp:68] Context created with config: default config!
|
||||
[08/07 08:37:04.331980][info][1608][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/07 08:37:04.332345][debug][1608][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/07 08:37:04.332393][info][1608][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/07 08:37:04.332702][debug][1608][MfPal.cpp:110] WmfPal init ...
|
||||
[08/07 08:37:04.392689][debug][1608][MfPal.cpp:117] WmfPal created!
|
||||
[08/07 08:37:04.392788][debug][1608][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/07 08:37:04.434990][debug][1608][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/07 08:37:04.435417][debug][1608][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/07 08:37:04.435774][debug][1608][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/07 08:37:04.436028][info][1608][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/07 08:37:04.436282][debug][1608][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/07 08:37:04.436602][debug][1608][Context.cpp:81] Context destroying ...
|
||||
[08/07 08:37:04.436640][debug][1608][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/07 08:37:04.436974][debug][1608][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/07 08:37:04.438813][debug][1608][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/07 08:37:04.439737][info][1608][Context.cpp:84] Context destroyed
|
||||
[08/07 08:53:58.557016][debug][26392][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/07 08:53:58.557193][debug][26392][Context.cpp:49] Config file version=1.1
|
||||
[08/07 08:53:58.557237][debug][26392][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/07 08:53:58.557265][info][26392][Context.cpp:68] Context created with config: default config!
|
||||
[08/07 08:53:58.557495][info][26392][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/07 08:53:58.557711][debug][26392][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/07 08:53:58.557731][info][26392][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/07 08:53:58.557935][debug][26392][MfPal.cpp:110] WmfPal init ...
|
||||
[08/07 08:53:58.610665][debug][26392][MfPal.cpp:117] WmfPal created!
|
||||
[08/07 08:53:58.610706][debug][26392][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/07 08:53:58.642596][debug][26392][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/07 08:53:58.642997][debug][26392][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/07 08:53:58.643262][debug][26392][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/07 08:53:58.643306][info][26392][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/07 08:53:58.643483][debug][26392][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/07 08:53:58.643513][debug][26392][Context.cpp:81] Context destroying ...
|
||||
[08/07 08:53:58.643527][debug][26392][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/07 08:53:58.643540][debug][26392][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/07 08:53:58.644558][debug][26392][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/07 08:53:58.644986][info][26392][Context.cpp:84] Context destroyed
|
||||
[08/07 09:03:51.600617][debug][5460][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation
|
||||
[08/07 09:03:51.600710][debug][5460][Context.cpp:49] Config file version=1.1
|
||||
[08/07 09:03:51.600737][debug][5460][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/07 09:03:51.600755][info][5460][Context.cpp:68] Context created with config: default config!
|
||||
[08/07 09:03:51.600863][info][5460][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/07 09:03:51.600973][debug][5460][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/07 09:03:51.600985][info][5460][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/07 09:03:51.601138][debug][5460][MfPal.cpp:110] WmfPal init ...
|
||||
[08/07 09:03:51.629206][debug][5460][MfPal.cpp:117] WmfPal created!
|
||||
[08/07 09:03:51.629309][debug][5460][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/07 09:03:51.652743][debug][5460][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/07 09:03:51.653156][debug][5460][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/07 09:03:51.653432][debug][5460][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/07 09:03:51.653463][info][5460][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/07 09:03:51.653658][debug][5460][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/07 09:03:51.653680][debug][5460][Context.cpp:81] Context destroying ...
|
||||
[08/07 09:03:51.653690][debug][5460][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/07 09:03:51.653698][debug][5460][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/07 09:03:51.654355][debug][5460][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/07 09:03:51.654625][info][5460][Context.cpp:84] Context destroyed
|
||||
|
20
backend/Log/OrbbecSDK.log.txt
Normal file
20
backend/Log/OrbbecSDK.log.txt
Normal file
@ -0,0 +1,20 @@
|
||||
[08/06 16:05:29.947597][debug][29212][Context.cpp:30] Context creating, work_dir=D:\Trae_space\BodyBalanceEvaluation\backend
|
||||
[08/06 16:05:29.947770][debug][29212][Context.cpp:49] Config file version=1.1
|
||||
[08/06 16:05:29.947818][debug][29212][FrameBufferManager.cpp:23] Max global frame buffer size updated! size=2048.000MB
|
||||
[08/06 16:05:29.947857][info][29212][Context.cpp:68] Context created with config: default config!
|
||||
[08/06 16:05:29.948048][info][29212][Context.cpp:73] Work directory=D:\Trae_space\BodyBalanceEvaluation\backend, SDK version=v1.10.11-20240724-aeaa107e5
|
||||
[08/06 16:05:29.948256][debug][29212][DeviceManager.cpp:30] DeviceManager init ...
|
||||
[08/06 16:05:29.948529][info][29212][MfPal.cpp:105] createObPal: create WinPal!
|
||||
[08/06 16:05:29.948659][debug][29212][MfPal.cpp:110] WmfPal init ...
|
||||
[08/06 16:05:29.984405][debug][29212][MfPal.cpp:117] WmfPal created!
|
||||
[08/06 16:05:29.984501][debug][29212][DeviceManager.cpp:34] Enable USB Device Enumerator ...
|
||||
[08/06 16:05:30.020645][debug][29212][EnumeratorLibusb.cpp:321] queryDevicesInfo done!
|
||||
[08/06 16:05:30.021037][debug][29212][MfPal.cpp:216] Create WinEventDeviceWatcher!
|
||||
[08/06 16:05:30.021274][debug][29212][UsbDeviceEnumerator.cpp:78] No matched usb device found!
|
||||
[08/06 16:05:30.021308][info][29212][DeviceManager.cpp:15] Current found device(s): (0)
|
||||
[08/06 16:05:30.021507][debug][29212][DeviceManager.cpp:52] DeviceManager construct done!
|
||||
[08/06 16:05:30.021539][debug][29212][Context.cpp:81] Context destroying ...
|
||||
[08/06 16:05:30.021552][debug][29212][DeviceManager.cpp:56] DeviceManager destroy ...
|
||||
[08/06 16:05:30.021562][debug][29212][DeviceManager.cpp:64] DeviceManager Destructors done
|
||||
[08/06 16:05:30.030937][debug][29212][MfPal.cpp:128] WmfPal destroyed!
|
||||
[08/06 16:05:30.031392][info][29212][Context.cpp:84] Context destroyed
|
@ -113,7 +113,8 @@ def init_app():
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f'应用初始化失败: {e}')
|
||||
raise
|
||||
logger.warning('部分功能可能不可用,但服务将继续运行')
|
||||
# 不再抛出异常,让应用继续运行
|
||||
|
||||
# ==================== 基础API ====================
|
||||
|
||||
@ -773,6 +774,68 @@ def get_detection_status(session_id):
|
||||
logger.error(f'获取检测状态失败: {e}')
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
@app.route('/api/detection/<session_id>/save-info', methods=['POST'])
|
||||
def save_session_info(session_id):
|
||||
"""保存会话信息(诊断、处理、建议、状态)"""
|
||||
try:
|
||||
if not db_manager:
|
||||
return jsonify({'success': False, 'error': '数据库管理器未初始化'}), 500
|
||||
|
||||
if not session_id:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': '缺少会话ID'
|
||||
}), 400
|
||||
|
||||
# 获取请求数据
|
||||
data = flask_request.get_json() or {}
|
||||
diagnosis_info = data.get('diagnosis_info')
|
||||
treatment_info = data.get('treatment_info')
|
||||
suggestion_info = data.get('suggestion_info')
|
||||
status = data.get('status')
|
||||
|
||||
# 验证至少提供一个要更新的字段
|
||||
if not any([diagnosis_info, treatment_info, suggestion_info, status]):
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': '至少需要提供一个要更新的字段(diagnosis_info, treatment_info, suggestion_info, status)'
|
||||
}), 400
|
||||
|
||||
# 调用数据库管理器的批量更新方法
|
||||
db_manager.update_session_all_info(
|
||||
session_id=session_id,
|
||||
diagnosis_info=diagnosis_info,
|
||||
treatment_info=treatment_info,
|
||||
suggestion_info=suggestion_info,
|
||||
status=status
|
||||
)
|
||||
|
||||
# 构建更新信息反馈
|
||||
updated_fields = []
|
||||
if diagnosis_info is not None:
|
||||
updated_fields.append('诊断信息')
|
||||
if treatment_info is not None:
|
||||
updated_fields.append('处理信息')
|
||||
if suggestion_info is not None:
|
||||
updated_fields.append('建议信息')
|
||||
if status is not None:
|
||||
updated_fields.append(f'状态({status})')
|
||||
|
||||
logger.info(f'会话信息保存成功: {session_id}, 更新字段: {", ".join(updated_fields)}')
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'message': f'会话信息保存成功,更新字段: {", ".join(updated_fields)}',
|
||||
'data': {
|
||||
'session_id': session_id,
|
||||
'updated_fields': updated_fields
|
||||
}
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f'保存会话信息失败: {e}')
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
@app.route('/api/detection/<session_id>/collect', methods=['POST'])
|
||||
def collect_detection_data(session_id):
|
||||
"""采集检测数据"""
|
||||
|
@ -276,7 +276,7 @@ class DatabaseManager:
|
||||
diagnosis_info TEXT, -- 诊断信息
|
||||
treatment_info TEXT, -- 处理信息
|
||||
suggestion_info TEXT, -- 建议信息
|
||||
status TEXT DEFAULT 'created', -- 会话状态(created/running/completed/failed)
|
||||
status TEXT DEFAULT 'created', -- 会话状态(created/running/diagnosed/completed)
|
||||
created_at TIMESTAMP, -- 记录创建时间
|
||||
FOREIGN KEY (patient_id) REFERENCES patients (id), -- 患者表外键约束
|
||||
FOREIGN KEY (creator_id) REFERENCES users (id) -- 用户表外键约束
|
||||
@ -825,6 +825,69 @@ class DatabaseManager:
|
||||
logger.error(f'更新会话建议信息失败: {e}')
|
||||
raise
|
||||
|
||||
def update_session_all_info(self, session_id: str, diagnosis_info: str = None, treatment_info: str = None, suggestion_info: str = None, status: str = None):
|
||||
"""同时更新会话的诊断信息、处理信息、建议信息和状态"""
|
||||
conn = self.get_connection()
|
||||
cursor = conn.cursor()
|
||||
|
||||
try:
|
||||
# 构建动态SQL语句,只更新非None的字段
|
||||
update_fields = []
|
||||
update_values = []
|
||||
|
||||
if diagnosis_info is not None:
|
||||
update_fields.append('diagnosis_info = ?')
|
||||
update_values.append(diagnosis_info)
|
||||
|
||||
if treatment_info is not None:
|
||||
update_fields.append('treatment_info = ?')
|
||||
update_values.append(treatment_info)
|
||||
|
||||
if suggestion_info is not None:
|
||||
update_fields.append('suggestion_info = ?')
|
||||
update_values.append(suggestion_info)
|
||||
|
||||
if status is not None:
|
||||
update_fields.append('status = ?')
|
||||
update_values.append(status)
|
||||
|
||||
# 如果状态是完成、停止或错误,同时更新结束时间
|
||||
if status in ['completed', 'stopped', 'error']:
|
||||
update_fields.append('end_time = ?')
|
||||
update_values.append(self.get_china_time())
|
||||
|
||||
if not update_fields:
|
||||
logger.warning(f'没有提供要更新的信息: {session_id}')
|
||||
return
|
||||
|
||||
# 添加session_id到参数列表
|
||||
update_values.append(session_id)
|
||||
|
||||
sql = f'''
|
||||
UPDATE detection_sessions SET {', '.join(update_fields)}
|
||||
WHERE id = ?
|
||||
'''
|
||||
|
||||
cursor.execute(sql, update_values)
|
||||
conn.commit()
|
||||
|
||||
updated_info = []
|
||||
if diagnosis_info is not None:
|
||||
updated_info.append('诊断信息')
|
||||
if treatment_info is not None:
|
||||
updated_info.append('处理信息')
|
||||
if suggestion_info is not None:
|
||||
updated_info.append('建议信息')
|
||||
if status is not None:
|
||||
updated_info.append(f'状态({status})')
|
||||
|
||||
logger.info(f'批量更新会话信息成功: {session_id}, 更新字段: {", ".join(updated_info)}')
|
||||
|
||||
except Exception as e:
|
||||
conn.rollback()
|
||||
logger.error(f'批量更新会话信息失败: {e}')
|
||||
raise
|
||||
|
||||
|
||||
|
||||
def get_detection_sessions(self, page: int = 1, size: int = 10, patient_id: str = None) -> List[Dict]:
|
||||
|
@ -66,8 +66,12 @@ class DeviceManager:
|
||||
# 推流状态和线程
|
||||
self.camera_streaming = False
|
||||
self.femtobolt_streaming = False
|
||||
self.imu_streaming = False
|
||||
self.pressure_streaming = False
|
||||
self.camera_streaming_thread = None
|
||||
self.femtobolt_streaming_thread = None
|
||||
self.imu_thread = None
|
||||
self.pressure_thread = None
|
||||
self.streaming_stop_event = threading.Event()
|
||||
|
||||
# 全局帧缓存机制
|
||||
@ -244,17 +248,22 @@ class DeviceManager:
|
||||
self.femtobolt_config.synchronized_images_only = True
|
||||
# 视效范围参数示例,假设SDK支持depth_range_min和depth_range_max
|
||||
|
||||
# 直接尝试启动设备(pykinect_azure库没有设备数量检测API)
|
||||
logger.info('准备启动FemtoBolt设备...')
|
||||
|
||||
# 启动FemtoBolt设备
|
||||
# 启动FemtoBolt设备(直接尝试启动,失败时优雅处理)
|
||||
logger.info('尝试启动FemtoBolt设备...')
|
||||
self.femtobolt_camera = pykinect.start_device(config=self.femtobolt_config)
|
||||
if self.femtobolt_camera:
|
||||
self.device_status['femtobolt'] = True
|
||||
logger.info('✓ FemtoBolt深度相机初始化成功!')
|
||||
else:
|
||||
raise Exception('设备启动返回None')
|
||||
try:
|
||||
self.femtobolt_camera = pykinect.start_device(config=self.femtobolt_config)
|
||||
if self.femtobolt_camera:
|
||||
self.device_status['femtobolt'] = True
|
||||
logger.info('✓ FemtoBolt深度相机初始化成功!')
|
||||
else:
|
||||
logger.warning('FemtoBolt设备启动失败:设备返回None(可能未连接设备)')
|
||||
self.femtobolt_camera = None
|
||||
self.device_status['femtobolt'] = False
|
||||
except BaseException as device_error:
|
||||
logger.warning(f'FemtoBolt设备启动失败: {device_error}')
|
||||
logger.info('这通常表示没有连接FemtoBolt设备,系统将继续运行但不包含深度相机功能')
|
||||
self.femtobolt_camera = None
|
||||
self.device_status['femtobolt'] = False
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f'FemtoBolt深度相机初始化失败: {e}')
|
||||
@ -856,9 +865,7 @@ class DeviceManager:
|
||||
head_pose_data = {
|
||||
'rotation': head_pose['rotation'], # 旋转角:左旋(-), 右旋(+)
|
||||
'tilt': head_pose['tilt'], # 倾斜角:左倾(-), 右倾(+)
|
||||
'pitch': head_pose['pitch'], # 俯仰角:俯角(-), 仰角(+)
|
||||
|
||||
'temperature': imu_data.get('temperature', 25),
|
||||
'pitch': head_pose['pitch'], # 俯仰角:俯角(-), 仰角(+)
|
||||
'timestamp': imu_data['timestamp']
|
||||
}
|
||||
|
||||
@ -904,6 +911,14 @@ class DeviceManager:
|
||||
# 计算总压力
|
||||
total_pressure = left_total + right_total
|
||||
|
||||
# 计算各区域压力百分比
|
||||
left_front_percent = (left_front / total_pressure * 100) if total_pressure > 0 else 0
|
||||
left_rear_percent = (left_rear / total_pressure * 100) if total_pressure > 0 else 0
|
||||
right_front_percent = (right_front / total_pressure * 100) if total_pressure > 0 else 0
|
||||
right_rear_percent = (right_rear / total_pressure * 100) if total_pressure > 0 else 0
|
||||
left_total_percent = (left_total / total_pressure * 100) if total_pressure > 0 else 0
|
||||
right_total_percent = (right_total / total_pressure * 100) if total_pressure > 0 else 0
|
||||
|
||||
# 计算平衡比例(左脚压力占总压力的比例)
|
||||
balance_ratio = left_total / total_pressure if total_pressure > 0 else 0.5
|
||||
|
||||
@ -916,15 +931,15 @@ class DeviceManager:
|
||||
|
||||
# 构建完整的足部压力数据
|
||||
complete_pressure_data = {
|
||||
# 分区压力值
|
||||
# 分区压力百分比
|
||||
'pressure_zones': {
|
||||
'left_front': left_front,
|
||||
'left_rear': left_rear,
|
||||
'right_front': right_front,
|
||||
'right_rear': right_rear,
|
||||
'left_total': left_total,
|
||||
'right_total': right_total,
|
||||
'total_pressure': total_pressure
|
||||
'left_front': round(left_front_percent, 1),
|
||||
'left_rear': round(left_rear_percent, 1),
|
||||
'right_front': round(right_front_percent,1),
|
||||
'right_rear': round(right_rear_percent, 1),
|
||||
'left_total': round(left_total_percent, 1),
|
||||
'right_total': round(right_total_percent, 1),
|
||||
'total_pressure': 100.0 # 总压力百分比始终为100%
|
||||
},
|
||||
# 平衡分析
|
||||
'balance_analysis': {
|
||||
|
BIN
frontend/src/renderer/src/assets/record.png
Normal file
BIN
frontend/src/renderer/src/assets/record.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 941 B |
6
frontend/src/renderer/src/assets/svg/datalist.svg
Normal file
6
frontend/src/renderer/src/assets/svg/datalist.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="18px" height="20px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1758 -448 )">
|
||||
<path d="M 0.922433035714286 0 L 11.0350864955357 0 C 11.2741777312329 0.0265979876876923 11.503892725468 0.118942562722911 11.6756417410714 0.284096575797872 L 17.7181222098214 6.09443567154255 C 17.8972184278233 6.26665022859307 17.9983236115259 6.50361568698034 18 6.75116356382979 L 18 19.0591755319149 C 17.9983258928571 19.5640791223404 17.5860770089286 19.9734042553191 17.0775669642857 20 L 0.922433035714286 20 C 0.413922991071429 19.9734042553191 0.00167410714285714 19.5640791223404 0 19.0591755319149 L 0 0.940824468085106 C 0.00167410714285714 0.435920877659574 0.413922991071429 0.0265957446808511 0.922433035714286 0 Z M 14.4995675223214 15.1944813829787 C 14.4995675223214 14.3338389295213 13.7968610491071 13.6361369680851 12.9300920758929 13.6361369680851 L 5.09087611607143 13.6361369680851 C 4.22406529017857 13.6361369680851 3.52140066964286 14.3338389295213 3.52140066964286 15.1944813829787 C 3.52140066964286 16.0551238364362 4.22406529017857 16.7528257978723 5.09087611607143 16.7528257978723 L 12.9300920758929 16.7528257978723 C 13.7968610491071 16.7528257978723 14.4995675223214 16.0551238364362 14.4995675223214 15.1944813829787 Z M 14.4995675223214 10 C 14.4995675223214 9.13935754654255 13.7968610491071 8.44165558510638 12.9300920758929 8.44165558510638 L 5.09087611607143 8.44165558510638 C 4.22406529017857 8.44165558510638 3.52140066964286 9.13935754654255 3.52140066964286 10 C 3.52140066964286 10.8606424534574 4.22406529017857 11.5583444148936 5.09087611607143 11.5583444148936 L 12.9300920758929 11.5583444148936 C 13.7968610491071 11.5583444148936 14.4995675223214 10.8606424534574 14.4995675223214 10 Z M 9.01046316964286 4.80551861702128 C 9.01046316964286 3.94487616356383 8.30775669642857 3.24717420212766 7.44098772321429 3.24717420212766 L 5.09087611607143 3.24717420212766 C 4.22406529017857 3.24717420212766 3.52140066964286 3.94487616356383 3.52140066964286 4.80551861702128 C 3.52140066964286 5.66616107047872 4.22406529017857 6.36386303191489 5.09087611607143 6.36386303191489 L 7.44098772321429 6.36386303191489 C 8.30775669642857 6.36386303191489 9.01046316964286 5.66616107047872 9.01046316964286 4.80551861702128 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1758 448 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/del.svg
Normal file
6
frontend/src/renderer/src/assets/svg/del.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="18px" height="18px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1758 -474 )">
|
||||
<path d="M 17.9999999999999 4.49999999999989 C 17.9999999999999 3.11928812542294 16.8807118745769 1.99999999999989 15.5 2 L 12.449 1.99999999999989 C 12.2114408432971 0.836202448393578 11.1877958746828 0.000232690439815997 10 0 L 7.99999999999994 0 C 6.81257983768819 0.000707623411813074 5.78948386378374 0.836570347189877 5.55200000000002 2 L 2.5 1.99999999999989 C 1.119288125423 1.99999999999989 0 3.11928812542294 0 4.5 C 0 4.77614237491537 0.223857625084577 5 0.5 5 L 2.5 5 L 2.5 16 C 2.5 17.1045694996616 3.39543050033842 18 4.5 18 L 13.5 18 C 14.6045694996616 18 15.5 17.1045694996616 15.5 16 L 15.5 5 L 17.5 5 C 17.7761423749154 5 18 4.77614237491537 18 4.5 Z M 6.584 2 C 6.79610970339127 1.40006172614665 7.36366998764606 0.999242316362142 8 1 L 10 1 C 10.6355961099298 1.000090495221 11.2021346343182 1.40075423241217 11.414 2 L 6.584 2 Z M 14.5 5 L 14.5 16 C 14.5 16.5522847498308 14.0522847498308 17 13.5 17 L 4.5 17 C 3.94771525016921 17 3.5 16.5522847498308 3.5 16 L 3.5 5 L 14.5 5 Z M 16.914 4 L 15.5 4 L 1.084 4 C 1.29598764058022 3.40040812919494 1.86303690347711 2.99966660064604 2.49900000000002 3 L 15.499 3 C 16.1349630965229 2.99966660064604 16.7020123594198 3.40040812919494 16.914 4 Z M 9 15 C 9.27614237491542 15 9.5 14.7761423749154 9.5 14.5 L 9.5 7.5 C 9.5 7.22385762508463 9.27614237491542 7 9 7 C 8.72385762508458 7 8.5 7.22385762508463 8.5 7.5 L 8.5 14.5 C 8.5 14.7761423749154 8.72385762508458 15 9 15 Z M 6 15 C 6.27614237491542 15 6.5 14.7761423749154 6.5 14.5 L 6.5 7.5 C 6.5 7.22385762508463 6.27614237491542 7 6 7 C 5.72385762508458 7 5.5 7.22385762508463 5.5 7.5 L 5.5 14.5 C 5.5 14.7761423749154 5.72385762508458 15 6 15 Z M 12 15 C 12.2761423749154 15 12.5 14.7761423749154 12.5 14.5 L 12.5 7.5 C 12.5 7.22385762508463 12.2761423749154 7 12 7 C 11.7238576250846 7 11.5 7.22385762508463 11.5 7.5 L 11.5 14.5 C 11.5 14.7761423749154 11.7238576250846 15 12 15 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1758 474 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/edit.svg
Normal file
6
frontend/src/renderer/src/assets/svg/edit.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="32px" height="25px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1741 -10 )">
|
||||
<path d="M 14.9237668161435 18.75 L 15.9282511210762 18.75 L 18.0089686098655 16.6903409090909 L 15.2825112107623 13.9914772727273 L 13.2017937219731 16.0511363636364 L 13.2017937219731 17.0454545454545 L 14.9237668161435 17.0454545454545 L 14.9237668161435 18.75 Z M 23.8026905829596 6.55184659090909 C 24.0059790732437 6.35061553030303 24.0119581464873 6.15530303030303 23.8206278026906 5.96590909090909 C 23.6292974588939 5.77651515151515 23.4319880418535 5.78243371212121 23.2286995515695 5.98366477272727 L 16.9506726457399 12.1981534090909 C 16.7473841554559 12.399384469697 16.7414050822123 12.594696969697 16.932735426009 12.7840909090909 C 17.1240657698057 12.9734848484848 17.321375186846 12.9675662878788 17.52466367713 12.7663352272727 L 23.8026905829596 6.55184659090909 Z M 24.8968609865471 15.9978693181818 C 25.136023916293 16.0925662878788 25.2556053811659 16.2642045454545 25.2556053811659 16.5127840909091 L 25.2556053811659 19.8863636363636 C 25.2556053811659 21.2949810606061 24.7503736920777 22.4994081439394 23.7399103139013 23.4996448863636 C 22.729446935725 24.4998816287879 21.5127055306428 25 20.0896860986547 25 L 5.16591928251121 25 C 3.74289985052317 25 2.52615844544096 24.4998816287879 1.51569506726457 23.4996448863636 C 0.505231689088191 22.4994081439394 0 21.2949810606061 0 19.8863636363636 L 0 5.11363636363637 C 0 3.70501893939394 0.505231689088191 2.50059185606061 1.51569506726457 1.50035511363636 C 2.52615844544096 0.500118371212119 3.74289985052317 0 5.16591928251121 0 L 20.0896860986547 0 C 20.8430493273543 0 21.542600896861 0.147964015151514 22.1883408071749 0.443892045454544 C 22.3677130044843 0.526751893939392 22.47533632287 0.662878787878787 22.5112107623318 0.852272727272727 C 22.5470852017937 1.05350378787879 22.4932735426009 1.22514204545454 22.3497757847534 1.3671875 L 21.4708520179372 2.23721590909091 C 21.3034379671151 2.40293560606061 21.1121076233184 2.45028409090909 20.8968609865471 2.37926136363636 C 20.6218236173393 2.30823863636364 20.3527653213752 2.27272727272727 20.0896860986547 2.27272727272727 L 5.16591928251121 2.27272727272727 C 4.37668161434978 2.27272727272727 3.70104633781764 2.55089962121212 3.1390134529148 3.10724431818182 C 2.57698056801196 3.66358901515151 2.29596412556054 4.33238636363637 2.29596412556054 5.11363636363637 L 2.29596412556054 19.8863636363636 C 2.29596412556054 20.6676136363636 2.57698056801196 21.3364109848485 3.1390134529148 21.8927556818182 C 3.70104633781764 22.4491003787879 4.37668161434978 22.7272727272727 5.16591928251121 22.7272727272727 L 20.0896860986547 22.7272727272727 C 20.8789237668161 22.7272727272727 21.5545590433483 22.4491003787879 22.1165919282511 21.8927556818182 C 22.678624813154 21.3364109848485 22.9596412556054 20.6676136363636 22.9596412556054 19.8863636363636 L 22.9596412556054 17.6491477272727 C 22.9596412556054 17.4952651515151 23.0134529147982 17.3650568181818 23.1210762331839 17.2585227272727 L 24.2690582959641 16.1221590909091 C 24.4484304932735 15.9446022727273 24.6576980568012 15.9031723484848 24.8968609865471 15.9978693181818 Z M 11.4798206278027 15.3409090909091 L 23.5336322869955 3.40909090909091 L 28.6995515695067 8.52272727272727 L 16.6457399103139 20.4545454545455 L 11.4798206278027 20.4545454545455 L 11.4798206278027 15.3409090909091 Z M 32 4.54545454545454 C 32 5.01893939393939 31.8325859491779 5.42140151515151 31.4977578475336 5.75284090909091 L 29.847533632287 7.38636363636363 L 24.6816143497758 2.27272727272727 L 26.3318385650224 0.639204545454544 C 26.6666666666667 0.307765151515149 27.0732436472347 0.142045454545456 27.5515695067265 0.142045454545456 C 28.0298953662182 0.142045454545456 28.4364723467863 0.307765151515149 28.7713004484305 0.639204545454544 L 31.4977578475336 3.33806818181818 C 31.8325859491779 3.66950757575757 32 4.0719696969697 32 4.54545454545454 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1741 10 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/u125.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u125.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -471 -604 )">
|
||||
<path d="M 2.50414235937501 0 C 3.87625279687495 0 4.98789009375002 1.11158993749996 4.98789009375002 2.48291045312499 C 4.98789009375002 3.854964359375 3.87625432812501 4.96656957812502 2.50414235937501 4.96656957812502 C 1.13276376562499 4.96656957812502 0.0210974531249803 3.85494909374995 0.0210974531249803 2.48291045312499 C 0.0210974531249803 1.11158992187495 1.13276378124999 0 2.50414235937501 0 Z M 7.098429984375 0 C 7.78448520312497 0 8.34031149999998 0.555801843750032 8.34031149999998 1.24182956250002 C 8.34031149999998 1.92782671875 7.78448521874998 2.48364384374997 7.098429984375 2.48364384374997 C 6.41237475000003 2.48364384374997 5.85656374999996 1.92784200000006 5.85656374999996 1.24182956250002 C 5.85656374999996 0.555801843750032 6.41237476562503 0 7.098429984375 0 Z M 10.69892884375 0.309903156250016 C 11.38498559375 0.309889406250022 11.940795078125 0.865706515624993 11.940795078125 1.55173271875003 C 11.940795078125 2.23776043750001 11.3849840625001 2.79356228125005 10.69892884375 2.79356228125005 C 10.012873625 2.79356228125005 9.45704732812499 2.23776043750001 9.45704732812499 1.55173271875003 C 9.45704732812499 0.865705000000048 10.012873609375 0.309903156250016 10.69892884375 0.309903156250016 Z M 13.617007296875 1.92420717187497 C 14.30304725 1.92420717187497 14.8588888125 2.48001054687495 14.8588888125 3.16603673437498 C 14.8588888125 3.85206445312497 14.30306253125 4.407866296875 13.617007296875 4.407866296875 C 12.930952078125 4.407866296875 12.3751410625 3.85206445312497 12.3751410625 3.16603673437498 C 12.3751410625 2.480009015625 12.930952078125 1.92420717187497 13.617007296875 1.92420717187497 Z M 6.72520839062497 10.3674653125 C 6.11991084374995 9.57594962500002 3.09343687499995 9.34315098437503 3.88497240624997 6.36335835937496 C 3.88497240624997 6.36335835937496 4.676507953125 4.17506765625001 7.70299567187499 3.80259320312496 C 7.70299567187499 3.80259320312496 12.3751410625 3.47667328124999 13.1797766562499 8.0831213125 C 13.572634578125 10.333981796875 13.4089511562499 15.2096134375 9.79825217187499 15.95164409375 C 8.92667706249995 16.13062159375 6.399274703125 15.90800628125 6.72520839062497 13.626609578125 C 6.84015393749996 12.819808984375 7.59678350000002 11.506691546875 6.72520839062497 10.3674653125 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 471 604 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/u14.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u14.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="20px" height="15px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -20 -68 )">
|
||||
<path d="M 10 14.0353894412879 L 0.120591027462126 7.17959141216856 L 10 0.166593720407192 L 10 14.0353894412879 Z M 10 0.166647165009465 L 10 14.0814642814867 L 10.2509636008523 14.0585337653883 L 0.0753713896780255 7.17985866477272 L 10.2940986328125 0.119930900804931 L 10 0.166647165009465 Z M 10 0.21325651041667 L 0.165810635653429 7.17932415956439 L 10 13.9892611268939 L 10 0.21325651041667 Z M 18.5711613103693 7.92667737926136 C 19.9572551491477 9.55351497395833 19.9710989879262 12.3384774502841 19.9710989879262 12.3384774798769 C 19.9710989879262 12.3384774798769 19.7536599195076 11.1792300840436 19.0377893880208 10.4719651692708 C 18.4886862571023 9.92948999763257 18.1469199514678 9.62353589607008 17.3409308712122 9.45382868726325 C 15.2434029356061 9.01226917613636 5.67015113044505 9.45532531368372 5.67015113044505 9.45532531368372 L 5.67015113044505 5.42532640861742 C 5.67015113044505 5.42532640861742 12.0294419093277 5.32542631392046 14.1168676017992 5.76319078480114 C 14.736312352036 5.89307694128787 15.8322736446496 6.06043232125947 16.5773285097064 6.44191281960227 C 17.3805915897254 6.8532724609375 18.1643450224905 7.44925218986742 18.5711613103693 7.92667737926136 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 20 68 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/u155.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u155.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="11px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1271 -606 )">
|
||||
<path d="M 11.3045078196872 1.90077626379218 L 11.3045078196872 3.21209917087594 C 11.3045078196872 3.26234142785233 11.251753449862 3.35026537756096 11.1462447102117 3.47587102000193 C 11.0407359705612 3.60147666244291 10.9276908923644 3.74969132052331 10.807109475621 3.92051499424303 C 10.6865280588777 4.09133866796276 10.5734829806809 4.2772350187754 10.4679742410303 4.47820404668096 C 10.36246550138 4.67917307458652 10.3097111315546 4.8851663281896 10.3097111315546 5.09618380749043 C 10.3097111315546 5.30720128679127 10.36246550138 5.5106824275457 10.4679742410303 5.70662722975362 C 10.5734829806809 5.90257203196154 10.6865280588777 6.08093204422767 10.807109475621 6.24170726655211 C 10.9276908923644 6.40248248887656 11.0407359705612 6.53562446986405 11.1462447102117 6.64113320951435 C 11.251753449862 6.74664194916477 11.3045078196872 6.81446899608295 11.3045078196872 6.84461435026878 L 11.3045078196872 8.42724544502494 C 11.3045078196872 8.59806911874466 11.2417049984667 8.79150180810382 11.1160993560259 9.00754351310229 C 10.9904937135848 9.22358521810077 10.8347427169581 9.42706635885509 10.6488463661453 9.61798693536537 C 10.4629500153328 9.80890751187565 10.2569567617295 9.96717062135133 10.0308666053359 10.0927762637922 C 9.80477644894199 10.2183819062332 9.5912468567924 10.2811847274537 9.39027782888684 10.2811847274537 L 1.89915731370752 10.2811847274537 C 1.62784912603502 10.2811847274537 1.37914995400183 10.2334545833261 1.15305979760819 10.1379942950709 C 0.926969641214328 10.0425340068159 0.728512726157533 9.90939202582842 0.557689052437809 9.7385683521087 C 0.386865378718085 9.56774467838898 0.25372339773071 9.36677565048342 0.158263109475683 9.13566126839203 C 0.0628028212204299 8.90454688630064 0.0150726770928031 8.65333560141869 0.0150726770928031 8.38202741374619 L 0.0150726770928031 1.88570358669926 C 0.0150726770928031 1.68473455879371 0.0602907083716673 1.47622919234175 0.150726770929168 1.26018748734327 C 0.241162833486669 1.0441457823448 0.369280588776519 0.845688867288118 0.53508003679849 0.664816742173116 C 0.700879484820689 0.483944617058114 0.896824287028494 0.333217846128946 1.12291444342236 0.212636429385611 C 1.349004599816 0.0920550126422768 1.59770377184918 0.0317643042706095 1.86901195952169 0.0317643042706095 L 9.360132474701 0.0317643042706095 C 9.63144066237351 0.0317643042706095 9.88516406010422 0.0794944483981226 10.1213026678934 0.174954736653262 C 10.3574412756823 0.270415024908402 10.5634345292856 0.401044893047015 10.7392824287028 0.5668443410691 C 10.9151303281203 0.732643789091185 11.0532965348052 0.93110070414798 11.153781048758 1.16221508623937 C 11.2542655627108 1.39332946833065 11.3045078196872 1.63951652751496 11.3045078196872 1.90077626379218 Z M 15.9921103955842 1.76512216995593 L 15.9921103955842 1.79526752414176 L 15.9921103955842 8.68348095560452 C 15.9921103955842 8.90454688630064 15.9343318000613 9.10049168850855 15.8187746090157 9.27131536222828 C 15.7032174179699 9.442139035948 15.5298816314014 9.52755087280786 15.29876724931 9.52755087280786 C 15.2183796381478 9.52755087280786 15.1153830113462 9.49740551862203 14.9897773689052 9.43711481025036 C 14.8641717264643 9.3768241018787 14.7385660840232 9.30648494211175 14.6129604415823 9.22609733094953 C 14.4873547991413 9.14570971978731 14.3692854952469 9.06532210862508 14.2587525298989 8.98493449746286 C 14.1482195645508 8.90454688630064 14.0678319533886 8.83923195223133 14.0175896964122 8.78898969525494 C 13.8869598282736 8.67845672990688 13.6885029132168 8.4875361533966 13.422218951242 8.21622796572422 C 13.1559349892671 7.94491977805171 12.8871389144433 7.63844201049574 12.615830726771 7.29679466305629 C 12.3445225390985 6.95514731561684 12.1058718184606 6.60345151678211 11.8998785648573 6.24170726655211 C 11.6938853112542 5.87996301632211 11.5908886844527 5.54836412027794 11.5908886844527 5.2469105784196 C 11.5908886844527 4.94545703656127 11.7014216498007 4.60129757627305 11.9224875804969 4.21443219755486 C 12.143553511193 3.82756681883666 12.4098374731677 3.44823777866497 12.7213394664213 3.07644507703969 C 13.032841459675 2.70465237541441 13.3594161300214 2.3604929151262 13.7010634774608 2.04396669617495 C 14.0427108249003 1.72744047722369 14.3290916896658 1.48878975658579 14.5602060717572 1.32801453426146 C 14.6506421343147 1.26772382588979 14.7737356639068 1.19487255327397 14.9294866605335 1.10946071641411 C 15.0852376571604 1.02404887955424 15.2234038638455 0.981342961124369 15.3439852805889 0.981342961124369 C 15.6152934682614 0.981342961124369 15.7911413676786 1.05670634658895 15.8715289788408 1.20743311751812 C 15.9519165900031 1.35815988844718 15.9921103955842 1.54405623925982 15.9921103955842 1.76512216995593 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1271 606 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/u164.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u164.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1271 -113 )">
|
||||
<path d="M 0 2.30431893168605 C 0.0531561409884489 1.04717607194766 1.14285714026164 0.026578070494196 2.48903653706407 0.026578070494196 L 12.2352159520349 0.026578070494196 C 13.5800664425872 0.026578070494196 14.6710963481105 1.04717607194766 14.6710963481105 2.30431893168605 L 14.6710963481105 13.6956810683139 C 14.6710963481105 14.9528239280523 13.5813953488373 15.9734219295058 12.2352159520349 15.9734219295058 L 2.48903653706407 15.9734219295058 C 1.14418604651155 15.9734219295058 0.0531561409884489 14.9528239280523 0 13.6956810683139 L 0 2.30431893168605 Z M 12.2352159520349 1.16544851017443 L 2.48903653706407 1.16544851017443 C 1.81661128270343 1.16544851017443 1.2717607921511 1.67574751090118 1.2717607921511 2.30431893168605 L 1.2717607921511 13.6956810683139 C 1.2717607921511 14.3242524890989 1.81661128270343 14.8345515079942 2.48903653706407 14.8345514898256 L 12.2352159520349 14.8345514898256 C 12.9076412063955 14.8345514898256 13.4524916969476 14.3242524890989 13.4524916969476 13.6956810683139 L 13.4524916969476 2.30431893168605 C 13.4524916969476 1.67574751090118 12.9076412063955 1.16544849200582 12.2352159520349 1.16544851017443 Z M 2.71107331816233 5.34485049963664 C 2.71107331816233 5.71177420762504 3.00849157682455 6.00924165127614 3.37541527979647 6.00930232558139 C 3.74249176867511 6.0093023346657 4.03997698822059 5.71181711512028 4.03997698822059 5.34485049963664 C 4.03997698822059 4.97788388415299 3.74249176867511 4.68039866460757 3.37552515319135 4.68039866460757 C 3.00849157682455 4.68045934799713 2.71107331816233 4.9779267916482 2.71107331816233 5.34485049963664 Z M 2.71107331816233 8.0026578034157 C 2.71107331816233 8.36958151140411 3.00849157682455 8.66704895505521 3.37541527979647 8.66710962936045 C 3.74249176867511 8.66710963844477 4.03997698822059 8.36962441889935 4.03997698822059 8.0026578034157 C 4.03997698822059 7.63569118793205 3.74249176867511 7.33820596838663 3.37552515319135 7.33820596838663 C 3.00849157682455 7.33826665177619 2.71107331816233 7.63573409542727 2.71107331816233 8.0026578034157 Z M 3.37541527979647 11.3249169513082 C 3.74238189528023 11.3249169513082 4.03986711482571 11.0274317317627 4.03986711482571 10.6604651162791 C 4.03986711482571 10.2934985007954 3.74238189528023 9.99601328125001 3.37541527979647 9.99601328125001 C 3.00844866431294 9.99601328125001 2.71096344476746 10.2934985007954 2.71096344476746 10.6604651162791 C 2.71096344476746 11.0274317317627 3.00844866431294 11.3249169513082 3.37541527979647 11.3249169513082 Z M 4.70431893168598 5.34219269622093 C 4.70431893168598 5.70897011264535 4.95415281613373 6.00664453125 5.2624584665698 6.0066445130814 L 11.1229235828489 6.0066445130814 C 11.431229233285 6.0066445130814 11.6810631177325 5.70897009447674 11.6810631177325 5.34219269622093 C 11.6810631177325 4.97541529796513 11.431229233285 4.67774086119186 11.1229235828489 4.67774086119186 L 5.2624584665698 4.67774086119186 C 4.95415281613373 4.67774086119186 4.70431893168598 4.97541527979652 4.70431893168598 5.34219269622093 Z M 4.70431893168598 8 C 4.70431893168598 8.36677741642441 4.95415281613373 8.66445183502907 5.2624584665698 8.66445183502907 L 11.1229235828489 8.66445183502907 C 11.431229233285 8.66445183502907 11.6810631177325 8.36677741642441 11.6810631177325 8 C 11.6810631177325 7.63322258357559 11.431229233285 7.33554816497093 11.1229235828489 7.33554816497093 L 5.2624584665698 7.33554816497093 C 4.95415281613373 7.33554816497093 4.70431893168598 7.63322258357559 4.70431893168598 8 Z M 4.70431893168598 10.6578073037791 C 4.70431893168598 11.0245847020349 4.95415281613373 11.3222591388081 5.2624584665698 11.3222591388081 L 11.1229235828489 11.3222591388081 C 11.431229233285 11.3222591388081 11.6810631177325 11.0245847202035 11.6810631177325 10.6578073037791 C 11.6810631177325 10.2910298873547 11.431229233285 9.99335546875 11.1229235828489 9.9933554869186 L 5.2624584665698 9.9933554869186 C 4.95415281613373 9.9933554869186 4.70431893168598 10.2910299055233 4.70431893168598 10.6578073037791 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1271 113 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/u58.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u58.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -20 -113 )">
|
||||
<path d="M 6.89803435773482 0.0122503798342564 C 5.95585189917128 0.0122503798342564 5.19135079419891 0.776771805939234 5.19135077693369 1.71893396063535 C 5.19135077693369 2.66121799033149 5.95577063190609 3.42561752417127 6.89803435773482 3.42561752417127 C 7.84031838743095 3.42561752417127 8.60471792127072 2.66121799033149 8.60471792127072 1.71893396063535 C 8.60471792127072 0.77667023480663 7.84023712016574 0.0122503970994501 6.89803435773482 0.0122503798342564 Z M 13.7246264157459 4.8531223756906 C 13.7246467368784 4.38204129834254 13.3423656940608 4.00158869129834 12.8713659012431 4 L 0.924682493093911 4 C 0.453601415745851 4.00158869129834 0.0714016574585514 4.38386971685082 0.0714016574585514 4.8548695269337 C 0.0714016574585514 5.32607249654697 0.453601415745851 5.70827225483426 0.924682493093911 5.70827225483426 L 4.42512284185082 5.70827225483426 C 4.62425759668508 5.74384509668508 4.89447707182322 5.84515961671271 5.03674810082873 6.21496679903315 C 5.20203686118785 6.64342548342542 5.12026605662984 7.40965341850828 5.01714342196132 8.05496217196132 L 4.88381130870167 8.81588770718233 C 4.88381130870167 8.81938200966852 4.88198289019337 8.8229372582873 4.88198289019337 8.82649252417127 L 3.80289274861877 14.9508714951657 C 3.72112194406077 15.4149436464088 4.03048983080112 15.857542058011 4.49456198204419 15.9393941298343 C 4.95845127762431 16.0210836671271 5.39586919889504 15.7117970476519 5.47753843232044 15.2478264675414 L 6.22424295580112 10.9829866022099 L 6.22424295580112 10.9882686809392 C 6.22424295580112 10.9882686809392 6.44645637085637 9.8327101519337 6.88021745511048 9.8327101519337 L 6.9193658667127 9.8327101519337 C 7.36198459944751 9.8327101519337 7.5753606871547 10.9882686809392 7.5753606871547 10.9882686809392 L 7.5753606871547 10.9847134323204 L 8.32196363950277 15.247806163674 C 8.40383601519338 15.7117767265193 8.8428994993094 16.0210633459945 9.3068700621547 15.9393738087017 C 9.77084062500001 15.8575014330111 10.0802085117403 15.4149030041436 9.99671087707182 14.9508511740331 L 8.91579233425415 8.82472505179558 L 8.91579233425415 8.82289663328729 C 8.91579233425415 8.8193413846685 8.91396391574585 8.81578613604972 8.91396391574585 8.81221056629835 L 8.77890495511051 8.05128501381215 C 8.67576201657459 7.40780467886741 8.59401153314917 6.64157674378453 8.75938154350828 6.21309775552486 C 8.90155100138122 5.84341248273481 9.17353794889502 5.74209794544198 9.37090523135359 5.70652510359116 L 12.8713455801105 5.70652510359116 C 13.3424266574586 5.70652510359116 13.7246264157459 5.32422375690608 13.7246264157459 4.8531223756906 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 20 113 )" />
|
||||
</g>
|
||||
</svg>
|
6
frontend/src/renderer/src/assets/svg/u67.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u67.svg
Normal file
File diff suppressed because one or more lines are too long
6
frontend/src/renderer/src/assets/svg/u7.svg
Normal file
6
frontend/src/renderer/src/assets/svg/u7.svg
Normal file
File diff suppressed because one or more lines are too long
BIN
frontend/src/renderer/src/assets/u45.png
Normal file
BIN
frontend/src/renderer/src/assets/u45.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 111 KiB |
@ -16,7 +16,8 @@ api.interceptors.request.use(
|
||||
if (window.electronAPI) {
|
||||
config.baseURL = window.electronAPI.getBackendUrl()
|
||||
} else {
|
||||
config.baseURL = 'http://192.168.1.173:5000'
|
||||
config.baseURL = 'http://192.168.1.58:5000'
|
||||
|
||||
}
|
||||
|
||||
// 添加时间戳防止缓存
|
||||
@ -112,6 +113,11 @@ export const deviceAPI = {
|
||||
return api.post('/api/devices/calibrate')
|
||||
},
|
||||
|
||||
// 校准IMU头部姿态传感器
|
||||
calibrateIMU() {
|
||||
return api.post('/api/devices/calibrate/imu')
|
||||
},
|
||||
|
||||
// 测试设备
|
||||
testDevice() {
|
||||
return api.post('/api/devices/test')
|
||||
@ -594,7 +600,7 @@ export const getBackendUrl = () => {
|
||||
if (window.electronAPI) {
|
||||
return window.electronAPI.getBackendUrl()
|
||||
} else {
|
||||
return 'http://192.168.1.173:5000'
|
||||
return 'http://192.168.1.58:5000'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,14 +34,21 @@
|
||||
</div>
|
||||
<el-table ref="tableRef" :data="filteredPatients" style="width: 100%" border @cell-click="selectPatient"
|
||||
highlight-current-row>
|
||||
<el-table-column prop="name" label="姓名" min-width="60" />
|
||||
<el-table-column prop="id" label="测试者ID" min-width="60" />
|
||||
<el-table-column prop="updated_at" label="最后一次检查时间" min-width="60" />
|
||||
<el-table-column prop="gender" label="性别" min-width="60" />
|
||||
<el-table-column prop="num" label="测试次数" min-width="60" />
|
||||
<el-table-column fixed="right" label="操作" width="80">
|
||||
<el-table-column prop="name" label="姓名" width="150" align="center" />
|
||||
<el-table-column prop="id" label="测试者ID" min-width="120" align="center" />
|
||||
<el-table-column prop="updated_at" label="最后一次检查时间" min-width="100" align="center" />
|
||||
<el-table-column prop="gender" label="性别" width="120" align="center" />
|
||||
<el-table-column prop="num" label="测试次数" width="120" align="center" />
|
||||
<el-table-column prop="status" label="测试状态" align="center">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" size="small" @click="delClick(scope.row.id)">删除</el-button>
|
||||
<span v-if="!scope.row.status" style="font-size: 18px;color:#F59A23;">未处理</span>
|
||||
<span v-else style="font-size: 18px;color:#ffffff;">已处理</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="doctor" label="测试医生" min-width="80" align="center" />
|
||||
<el-table-column fixed="right" label="操作" width="100">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" style="font-size: 18px;" size="small" @click="delClick(scope.row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -253,6 +260,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { patientAPI } from '../services/api.js'
|
||||
import { useAuthStore } from '../stores/index.js'
|
||||
import Header from '@/views/Header.vue'
|
||||
import { color } from 'echarts'
|
||||
const router = useRouter()
|
||||
const authStore = useAuthStore()
|
||||
|
||||
@ -347,6 +355,7 @@ const filteredPatients = computed(() => {
|
||||
if (!searchKeyword.value) {
|
||||
return patients.value
|
||||
}
|
||||
|
||||
return patients.value.filter(patient =>
|
||||
patient.name.toLowerCase().includes(searchKeyword.value.toLowerCase())
|
||||
)
|
||||
@ -759,10 +768,10 @@ function delClick(id) {
|
||||
}
|
||||
|
||||
.section-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
/* display: flex;
|
||||
justify-content: space-between; */
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.section-header h2 {
|
||||
@ -773,6 +782,7 @@ function delClick(id) {
|
||||
|
||||
.search-box {
|
||||
width: 250px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.patient-list {
|
||||
@ -971,18 +981,18 @@ function delClick(id) {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
padding-top: 10px;
|
||||
padding-top: 13px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.basic-info-text {
|
||||
width: 33%;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.basic-info-textcolor {
|
||||
color: rgb(48, 205, 223);
|
||||
color: #30F3FF;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
@ -1075,9 +1085,18 @@ function delClick(id) {
|
||||
border-color: rgba(215, 215, 215, 1);
|
||||
color: #FFFFFF;
|
||||
}
|
||||
:deep(.el-table th .cell){
|
||||
color: #30F3FF ;
|
||||
font-weight: 400;
|
||||
font-size: 18px;
|
||||
}
|
||||
:deep(.el-table--border .el-table__inner-wrapper){
|
||||
border-right: 1px solid #434343;
|
||||
}
|
||||
:deep(.el-table .cell){
|
||||
font-size: 18px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<style>
|
||||
.dashboard-container.dashboard-container-home .el-table {
|
||||
background: transparent !important;
|
||||
@ -1145,7 +1164,7 @@ function delClick(id) {
|
||||
}
|
||||
|
||||
.dashboard-container.dashboard-container-home .el-dialog {
|
||||
background-color: rgba(85, 85, 85, 0.9);
|
||||
background-color: rgba(85, 85, 85, 1);
|
||||
}
|
||||
|
||||
.dashboard-container.dashboard-container-home .el-dialog__title {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
||||
<div class="header">
|
||||
<div class="header-left">
|
||||
<div class="system-logo">
|
||||
<img src="@/assets/svg/logo.svg" alt="Logo" class="logo" />
|
||||
<img src="@/assets/svg/u7.svg" alt="Logo" class="logo" />
|
||||
</div>
|
||||
<div class="system-title">平衡体态检测系统</div>
|
||||
</div>
|
||||
@ -105,13 +105,13 @@
|
||||
|
||||
.header {
|
||||
height: 50px;
|
||||
background: #000000;
|
||||
border-bottom: 1px solid #434343;
|
||||
background: #323232;
|
||||
border-bottom: none;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
/* box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); */
|
||||
}
|
||||
|
||||
.header-left {
|
||||
@ -127,18 +127,21 @@
|
||||
}
|
||||
|
||||
.system-logo {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
border-radius: 4px;
|
||||
background: #136166;
|
||||
background: #0099ff;
|
||||
text-align: center;
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.system-title {
|
||||
font-size: 18px;
|
||||
color: #AAAAAA;
|
||||
margin: 0;
|
||||
font-family: 微软雅黑, sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 22px;
|
||||
color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.header-right {
|
||||
|
@ -364,7 +364,6 @@ const handleSaveAndDetect = async () => {
|
||||
}
|
||||
|
||||
.form-container {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 20px 20px 0px;
|
||||
width: 100%;
|
||||
|
@ -19,143 +19,70 @@
|
||||
{{}}
|
||||
</div> -->
|
||||
<!-- 患者基本信息 -->
|
||||
<div v-if="patient" class="patient-info-card">
|
||||
<div class="card-header">
|
||||
<h2>基本信息</h2>
|
||||
<el-button link @click="editPatient">
|
||||
<el-icon><Edit /></el-icon>
|
||||
编辑
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="info-grid">
|
||||
<div class="info-item">
|
||||
<label>姓名:</label>
|
||||
<span>{{ patient.name }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>性别:</label>
|
||||
<span>{{ patient.gender }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>年龄:</label>
|
||||
<span>{{ patient.age }}岁</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>出生日期:</label>
|
||||
<span>{{ formatDate(patient.birth_date) || '未设置' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>身高:</label>
|
||||
<span>{{ patient.height }}cm</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>体重:</label>
|
||||
<span>{{ patient.weight }}kg</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>鞋码:</label>
|
||||
<span>{{ patient.shoe_size || '未设置' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>联系电话:</label>
|
||||
<span>{{ patient.phone }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>主治医生:</label>
|
||||
<span>{{ patient.doctor || '未设置' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>创建时间:</label>
|
||||
<span>{{ formatDate(patient.createdAt) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 检测记录 -->
|
||||
<div class="detection-records-card">
|
||||
<div class="card-header">
|
||||
<h2>检测记录</h2>
|
||||
<div class="header-actions">
|
||||
<el-input
|
||||
v-model="searchKeyword"
|
||||
placeholder="搜索记录"
|
||||
prefix-icon="Search"
|
||||
clearable
|
||||
style="width: 200px; margin-right: 10px;"
|
||||
/>
|
||||
<el-button type="primary" @click="startDetection">
|
||||
新建检测
|
||||
</el-button>
|
||||
</div>
|
||||
<div v-for="(item, index) in profileInfo" :key="index" class="content-info">
|
||||
<div class="content-left">
|
||||
<el-checkbox v-model="item.checked" label="" />
|
||||
<div class="content-left-text1">{{ index + 1 }}</div>
|
||||
<div class="content-left-text2">2025/04/01 14:35</div>
|
||||
<div class="content-left-text3">初次就诊</div>
|
||||
</div>
|
||||
<div class="content-center">
|
||||
|
||||
<div class="records-list" v-if="filteredRecords.length > 0">
|
||||
<div
|
||||
v-for="record in filteredRecords"
|
||||
:key="record.id"
|
||||
class="record-item"
|
||||
@click="viewRecord(record)"
|
||||
>
|
||||
<div class="record-header">
|
||||
<div class="record-title">
|
||||
<h4>检测记录 #{{ record.id }}</h4>
|
||||
<el-tag :type="getRecordStatusType(record.status)">{{ record.status }}</el-tag>
|
||||
</div>
|
||||
<div class="content-right">
|
||||
<div class="content-right-top">
|
||||
<div class="content-right-top-title">
|
||||
<div class="content-right-top-text">诊断信息:</div>
|
||||
<div style="display: flex;align-items: center;">
|
||||
<div class="content-right-top-text2">未处理</div>
|
||||
<div style="margin-left: 10px;" @click="editClick">
|
||||
<img src="@/assets/svg/edit.svg" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="record-time">{{ formatDate(record.createdAt) }}</div>
|
||||
</div>
|
||||
<div class="record-content">
|
||||
<div class="record-stats">
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">检测时长:</span>
|
||||
<span class="stat-value">{{ formatDuration(record.duration) }}</span>
|
||||
<div class="content-right-top-content">
|
||||
<el-form :model="diagnosticForm" label-width="50px">
|
||||
<el-form-item label="记录">
|
||||
<el-input v-model="diagnosticForm.diagnosis_info" disabled :rows="6" type="textarea"
|
||||
placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="处理">
|
||||
<el-input v-model="diagnosticForm.treatment_info" disabled :rows="6" type="textarea"
|
||||
placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="建议">
|
||||
<el-input v-model="diagnosticForm.suggestion_info" disabled :rows="6" type="textarea"
|
||||
placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-right-bottom">
|
||||
<div class="content-right-bottom-title">
|
||||
<div class="content-right-bottom-text">保存数据列表:</div>
|
||||
</div>
|
||||
<div class="content-right-bottom-content">
|
||||
<div v-for="(item2, index2) in item.list" :key="index2" class="content-right-bottom-content-box">
|
||||
<div class="content-right-bottom-img">截图</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<div @click="patientdetails">
|
||||
<img src="@/assets/svg/datalist.svg" alt="">
|
||||
</div>
|
||||
<div>
|
||||
<img src="@/assets/svg/del.svg" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">截图数量:</span>
|
||||
<span class="stat-value">{{ record.screenshots?.length || 0 }}张</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">检测医生:</span>
|
||||
<span class="stat-value">{{ record.doctor || '未记录' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="record-actions">
|
||||
<el-button link @click.stop="playVideo(record)">
|
||||
<el-icon><VideoPlay /></el-icon>
|
||||
回放视频
|
||||
</el-button>
|
||||
<el-button link @click.stop="viewScreenshots(record)">
|
||||
<el-icon><Picture /></el-icon>
|
||||
查看截图
|
||||
</el-button>
|
||||
<el-button link @click.stop="exportReport(record)">
|
||||
<el-icon><Download /></el-icon>
|
||||
导出报告
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-empty v-else description="暂无检测记录">
|
||||
<el-button type="primary" @click="startDetection">开始首次检测</el-button>
|
||||
</el-empty>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 视频播放对话框 -->
|
||||
<el-dialog
|
||||
v-model="videoDialogVisible"
|
||||
title="检测视频回放"
|
||||
width="80%"
|
||||
:before-close="closeVideoDialog"
|
||||
>
|
||||
<el-dialog v-model="videoDialogVisible" title="检测视频回放" width="80%" :before-close="closeVideoDialog">
|
||||
<div class="video-container" v-if="currentVideo">
|
||||
<video
|
||||
ref="videoPlayerRef"
|
||||
:src="currentVideo.url"
|
||||
controls
|
||||
width="100%"
|
||||
height="400"
|
||||
>
|
||||
<video ref="videoPlayerRef" :src="currentVideo.url" controls width="100%" height="400">
|
||||
您的浏览器不支持视频播放
|
||||
</video>
|
||||
<div class="video-info">
|
||||
@ -167,29 +94,24 @@
|
||||
</el-dialog>
|
||||
|
||||
<!-- 截图查看对话框 -->
|
||||
<el-dialog
|
||||
v-model="screenshotDialogVisible"
|
||||
title="检测截图"
|
||||
width="90%"
|
||||
:before-close="closeScreenshotDialog"
|
||||
>
|
||||
<el-dialog v-model="screenshotDialogVisible" title="检测截图" width="90%" :before-close="closeScreenshotDialog">
|
||||
<div class="screenshot-container" v-if="currentScreenshots.length > 0">
|
||||
<div class="screenshot-grid">
|
||||
<div
|
||||
v-for="(screenshot, index) in currentScreenshots"
|
||||
:key="screenshot.id"
|
||||
class="screenshot-item"
|
||||
@click="previewScreenshotHandler(screenshot, index)"
|
||||
>
|
||||
<div v-for="(screenshot, index) in currentScreenshots" :key="screenshot.id" class="screenshot-item"
|
||||
@click="previewScreenshotHandler(screenshot, index)">
|
||||
<img :src="screenshot.thumbnail" :alt="`截图${index + 1}`" />
|
||||
<div class="screenshot-overlay">
|
||||
<div class="screenshot-time">{{ formatTime(screenshot.timestamp) }}</div>
|
||||
<div class="screenshot-actions">
|
||||
<el-button type="primary" size="small" @click.stop="downloadScreenshot(screenshot)">
|
||||
<el-icon><Download /></el-icon>
|
||||
<el-icon>
|
||||
<Download />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
<el-button type="danger" size="small" @click.stop="deleteScreenshot(screenshot)">
|
||||
<el-icon><Delete /></el-icon>
|
||||
<el-icon>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -200,12 +122,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<!-- 截图预览对话框 -->
|
||||
<el-dialog
|
||||
v-model="previewDialogVisible"
|
||||
title="截图预览"
|
||||
width="70%"
|
||||
:before-close="closePreviewDialog"
|
||||
>
|
||||
<el-dialog v-model="previewDialogVisible" title="截图预览" width="70%" :before-close="closePreviewDialog">
|
||||
<div class="preview-container" v-if="previewScreenshot">
|
||||
<img :src="previewScreenshot.url" alt="截图预览" class="preview-image" />
|
||||
<div class="preview-info">
|
||||
@ -214,16 +131,192 @@
|
||||
<div class="data-display" v-if="previewScreenshot.data">
|
||||
<div class="data-item">
|
||||
<span>头部姿态:</span>
|
||||
<span>Pitch: {{ previewScreenshot.data.pitch }}°, Yaw: {{ previewScreenshot.data.yaw }}°, Roll: {{ previewScreenshot.data.roll }}°</span>
|
||||
<span>Pitch: {{ previewScreenshot.data.pitch }}°, Yaw: {{ previewScreenshot.data.yaw }}°, Roll: {{
|
||||
previewScreenshot.data.roll }}°</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span>足底压力:</span>
|
||||
<span>左足: {{ previewScreenshot.data.leftPressure }}%, 右足: {{ previewScreenshot.data.rightPressure }}%</span>
|
||||
<span>左足: {{ previewScreenshot.data.leftPressure }}%, 右足: {{ previewScreenshot.data.rightPressure
|
||||
}}%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 修改诊断信息 -->
|
||||
<el-dialog v-model="dialogVisible" center title="诊断信息" width="600" :before-close="handleClose">
|
||||
<div>
|
||||
<div class="dialog-title">
|
||||
<div class="dialog-title-item">
|
||||
<div>用户ID:</div>{{ patient.id }}
|
||||
</div>
|
||||
<div class="dialog-title-item">
|
||||
<div>姓名:{{ patient.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<el-form :model="diagnosticForm" label-width="50px">
|
||||
<el-form-item label="记录">
|
||||
<el-input v-model="diagnosticForm.diagnosis_info" :rows="6" type="textarea" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="处理">
|
||||
<el-input v-model="diagnosticForm.treatment_info" :rows="6" type="textarea" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="建议">
|
||||
<el-input v-model="diagnosticForm.suggestion_info" :rows="6" type="textarea" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: flex-end;color: #ffffff;">测试医生:李四</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button @click="handleDiagnosticInfo('diagnosed')">暂存</el-button>
|
||||
<el-button type="primary" @click="handleDiagnosticInfo('completed')">
|
||||
保存
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 数据详情 -->
|
||||
<el-dialog class="detailsDialog" v-model="detailsDialogVisible" top="5vh" title="当前保存数据" width="50%"
|
||||
:before-close="detailshandleClose">
|
||||
<div style="margin: 20px 50px; height: calc(100vh - 200px);overflow: auto;">
|
||||
<div>
|
||||
<div class="patient-detail-box">
|
||||
<div class="detail-header">
|
||||
<div class="module-title">
|
||||
<div class="module-title-text">基础信息</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="basic-info-box">
|
||||
<div class="basic-info-content">
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">测试者ID</div>
|
||||
<div>{{ selectedPatient.id || '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">姓名</div>
|
||||
<div>{{ selectedPatient.name || '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">性别</div>
|
||||
<div>{{ selectedPatient.gender || '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="basic-info-content">
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">出生日期</div>
|
||||
<div>{{ selectedPatient.birth_date ? formatDate(selectedPatient.birth_date) : '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">年龄</div>
|
||||
<div>{{ calculateAge(selectedPatient.birth_date) }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">民族</div>
|
||||
<div>{{ selectedPatient.nationality || '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="basic-info-content">
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">身高cm</div>
|
||||
<div>{{ selectedPatient.height || '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">体重kg</div>
|
||||
<div>{{ selectedPatient.weight || '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">鞋码</div>
|
||||
<div>{{ selectedPatient.shoe_size || '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="basic-info-content">
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">电话号码</div>
|
||||
<div>{{ selectedPatient.phone || '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
<div class="basic-info-textcolor">建档时间</div>
|
||||
<div>{{ selectedPatient.created_at ? formatDate(selectedPatient.created_at) : '-' }}</div>
|
||||
</div>
|
||||
<div class="basic-info-text">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="patient-profile-dialog-box">
|
||||
<div class="detail-header">
|
||||
<div class="module-title">
|
||||
<div class="module-title-text">身体姿态</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
图片
|
||||
</div>
|
||||
</div>
|
||||
<div class="patient-profile-dialog-box" style="height: 230px;">
|
||||
<div class="detail-header">
|
||||
<div class="module-title">
|
||||
<div class="module-title-text">头部姿态</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-head-content">
|
||||
<div style="margin-right: 100px;">
|
||||
<img src="@/assets/u45.png" style="width: 90px;height: 90px;" alt="">
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
最大旋转角:<span class="detail-head-text">左:-55.2°</span>
|
||||
<span class="detail-head-text">右:-55.2°</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">最大倾斜角:<span class="detail-head-text">左:-55.2°</span>
|
||||
<span class="detail-head-text">右:-55.2°</span></div>
|
||||
<div style="margin-top: 15px;">最大俯仰角:<span class="detail-head-text">俯:-55.2°</span>
|
||||
<span class="detail-head-text">仰:-55.2°</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="patient-profile-dialog-box" style="height: 370px;">
|
||||
<div class="detail-header">
|
||||
<div class="module-title">
|
||||
<div class="module-title-text">足底压力</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<div>左前足<span>54%</span></div>
|
||||
<div>右前足<span>54%</span></div>
|
||||
</div>
|
||||
<div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div>左后足<span>54%</span></div>
|
||||
<div>右后足<span>54%</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="patient-profile-dialog-box" style="height: 370px;">
|
||||
<div class="detail-header">
|
||||
<div class="module-title">
|
||||
<div class="module-title-text">视频图片</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
图片
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -254,12 +347,39 @@ const filteredRecords = computed(() => {
|
||||
if (!searchKeyword.value) {
|
||||
return detectionRecords.value
|
||||
}
|
||||
return detectionRecords.value.filter(record =>
|
||||
return detectionRecords.value.filter(record =>
|
||||
record.id.toString().includes(searchKeyword.value) ||
|
||||
record.doctor?.includes(searchKeyword.value) ||
|
||||
formatDate(record.createdAt).includes(searchKeyword.value)
|
||||
)
|
||||
})
|
||||
const profileInfo = ref([{ list: [{}, {}] }, {}])
|
||||
const diagnosticForm = ref({
|
||||
diagnosis_info: '',
|
||||
treatment_info: '',
|
||||
suggestion_info: ''
|
||||
})
|
||||
const dialogVisible = ref(false)
|
||||
const handleClose = () => {
|
||||
dialogVisible.value = false
|
||||
}
|
||||
const detailsDialogVisible = ref(false)
|
||||
const selectedPatient = ref({})
|
||||
const detailshandleClose = () => {
|
||||
detailsDialogVisible.value = false
|
||||
}
|
||||
// 添加计算年龄的方法
|
||||
const calculateAge = (birthDate) => {
|
||||
if (!birthDate) return '-'
|
||||
const today = new Date()
|
||||
const birth = new Date(birthDate)
|
||||
let age = today.getFullYear() - birth.getFullYear()
|
||||
const monthDiff = today.getMonth() - birth.getMonth()
|
||||
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) {
|
||||
age--
|
||||
}
|
||||
return age
|
||||
}
|
||||
|
||||
// 方法
|
||||
const goBack = () => {
|
||||
@ -294,9 +414,9 @@ const viewScreenshots = (record) => {
|
||||
}
|
||||
|
||||
const previewScreenshotHandler = (screenshot, index) => {
|
||||
previewScreenshot.value = screenshot
|
||||
previewDialogVisible.value = true
|
||||
}
|
||||
previewScreenshot.value = screenshot
|
||||
previewDialogVisible.value = true
|
||||
}
|
||||
|
||||
const downloadScreenshot = (screenshot) => {
|
||||
// 下载截图逻辑
|
||||
@ -313,7 +433,7 @@ const deleteScreenshot = async (screenshot) => {
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
|
||||
|
||||
// 删除截图逻辑
|
||||
ElMessage.success('截图已删除')
|
||||
// 重新加载截图列表
|
||||
@ -477,21 +597,236 @@ const loadDetectionRecords = async () => {
|
||||
]
|
||||
}
|
||||
}
|
||||
//修改诊断信息
|
||||
function editClick() {
|
||||
dialogVisible.value = true
|
||||
}
|
||||
//数据详情
|
||||
function patientdetails() {
|
||||
detailsDialogVisible.value = true
|
||||
}
|
||||
async function handleDiagnosticInfo(status) {
|
||||
try {
|
||||
// // 检查是否有活跃的会话ID
|
||||
// if (!patientInfo.value.sessionId) {
|
||||
// throw new Error('缺少会话Id')
|
||||
// }
|
||||
// // 调用后端API采集检测数据
|
||||
// const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/save-info`, {
|
||||
// method: 'POST',
|
||||
// headers: {
|
||||
// 'Content-Type': 'application/json'
|
||||
// },
|
||||
// body: JSON.stringify({
|
||||
// diagnosis_info:diagnosticForm.diagnosis_info,
|
||||
// treatment_info:diagnosticForm.treatment_info,
|
||||
// suggestion_info:diagnosticForm.suggestion_info,
|
||||
// status:status,
|
||||
// session_id:patientInfo.value.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
|
||||
// })
|
||||
// patientInfo.value.sessionId = null
|
||||
// } else {
|
||||
// throw new Error(result.message || '诊断信息失败')
|
||||
// }
|
||||
} catch (error) {
|
||||
// ElMessage.error({
|
||||
// message: errorMessage,
|
||||
// duration: 5000
|
||||
// })
|
||||
// patientInfo.value.sessionId = null
|
||||
} finally {
|
||||
// patientInfo.value.sessionId = null
|
||||
}
|
||||
}
|
||||
// 生命周期
|
||||
onMounted(() => {
|
||||
loadPatientInfo()
|
||||
loadDetectionRecords()
|
||||
// loadDetectionRecords()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.content-info {
|
||||
display: flex;
|
||||
padding: 10px 0px 10px 15px;
|
||||
min-height: 700px;
|
||||
}
|
||||
|
||||
.content-left {
|
||||
width: 87px;
|
||||
min-width: 87px;
|
||||
height: 100%;
|
||||
background: inherit;
|
||||
background-color: rgba(85, 85, 85, 0.6);
|
||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 15px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/* 垂直排列子元素 */
|
||||
justify-content: center;
|
||||
/* 垂直居中 */
|
||||
align-items: center;
|
||||
/* 水平居中 */
|
||||
}
|
||||
|
||||
.content-left-text1 {}
|
||||
|
||||
.content-left-text2 {}
|
||||
|
||||
.content-left-text3 {}
|
||||
|
||||
.content-center {
|
||||
width: calc(100% - 327px);
|
||||
margin: 0px 15px;
|
||||
background-color: rgba(85, 85, 85, 0.6);
|
||||
}
|
||||
|
||||
.content-right {
|
||||
width: 260px;
|
||||
min-width: 260px;
|
||||
height: 100%;
|
||||
/* background-color: rgba(85, 85, 85, 0.6); */
|
||||
}
|
||||
|
||||
.content-right-top {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
background-color: rgba(85, 85, 85, 0.6);
|
||||
}
|
||||
|
||||
.content-right-top-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: #ffffff;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.content-right-top-text {
|
||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.content-right-top-text2 {
|
||||
width: 62px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
background: rgba(230, 162, 60, 0.1);
|
||||
color: #E6A23C;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.content-right-top-content {
|
||||
height: calc(100% - 75px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:deep(.el-textarea__inner) {
|
||||
background: transparent;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
:deep(.el-form-item__label) {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
:deep(.el-textarea.is-disabled .el-textarea__inner) {
|
||||
background: transparent;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.content-right-bottom {
|
||||
margin-top: 10px;
|
||||
width: 100%;
|
||||
height: calc(50% - 10px);
|
||||
background-color: rgba(85, 85, 85, 0.6);
|
||||
}
|
||||
|
||||
.content-right-bottom-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: #ffffff;
|
||||
padding: 15px 15px 0px;
|
||||
}
|
||||
|
||||
.content-right-bottom-text {
|
||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.content-right-bottom-content {
|
||||
height: calc(100% - 75px);
|
||||
overflow: auto;
|
||||
padding: 0px 15px;
|
||||
}
|
||||
|
||||
.content-right-bottom-content-box {
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.content-right-bottom-img {
|
||||
width: 180px;
|
||||
height: 74px;
|
||||
border: 1px solid #434343;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.dialog-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.dialog-title-item {
|
||||
display: flex;
|
||||
width: 200px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
:deep(.el-dialog) {
|
||||
background-color: #1D1b26;
|
||||
}
|
||||
|
||||
:deep(.el-dialog__title) {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.patient-profile-container {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #000000;
|
||||
}
|
||||
|
||||
|
||||
.nav-container {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
@ -516,49 +851,12 @@ onMounted(() => {
|
||||
color: #FFFFFF;
|
||||
font-family: 'Arial Normal', 'Arial', sans-serif;
|
||||
}
|
||||
.header {
|
||||
height: 60px;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #e4e7ed;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.header-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.back-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
color: #606266;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.back-btn:hover {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
color: #2c3e50;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 20px;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.patient-info-card,
|
||||
@ -787,6 +1085,7 @@ onMounted(() => {
|
||||
.data-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.main-dashboard-top {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
@ -809,4 +1108,105 @@ onMounted(() => {
|
||||
color: #FFFFFF;
|
||||
font-family: 'Arial Normal', 'Arial', sans-serif;
|
||||
}
|
||||
|
||||
.patient-detail-box {
|
||||
background: rgb(85, 85, 85);
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.detail-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding-bottom: 15px;
|
||||
/* border-bottom: 1px solid #434343; */
|
||||
}
|
||||
|
||||
.detail-header h3 {
|
||||
margin: 0;
|
||||
color: #2c3e50;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.detail-content {
|
||||
flex: 1;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.module-title {
|
||||
width: 120px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
/* border: 2px solid #ffffff; */
|
||||
background: linear-gradient(to right, rgb(245, 173, 7), rgb(160, 5, 216));
|
||||
border-radius: 20px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.module-title-text {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 116px;
|
||||
background: rgb(85, 85, 85);
|
||||
border-radius: 20px;
|
||||
padding: 0px 25px;
|
||||
}
|
||||
|
||||
.basic-info-box {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-content: center;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.basic-info-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
padding-top: 30px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.basic-info-text {
|
||||
width: 33%;
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.basic-info-textcolor {
|
||||
color: #30F3FF;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
:deep(.detailsDialog.el-dialog) {
|
||||
background-color: rgba(85, 85, 85, 0.9);
|
||||
}
|
||||
|
||||
.patient-profile-dialog-box {
|
||||
background-color: rgba(85, 85, 85, 0.6);
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
height: 550px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.detail-head-content{
|
||||
display: flex;
|
||||
color: #ffffff;
|
||||
padding: 20px;
|
||||
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size:14px;
|
||||
}
|
||||
.detail-head-text{
|
||||
margin: 0px 20px;
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue
Block a user