feat: localmpr viewer

This commit is contained in:
mozzie 2024-09-09 21:58:49 +08:00
parent 3077c78c76
commit 6df7442b9b
6 changed files with 210 additions and 184 deletions

View File

@ -9,3 +9,8 @@
pnpm config set virtual-store-dir-max-length 70
## 待解决
- dicom导入后本地appData建立一个拷贝区域复制dicom原片满足二次导出防止原片的路径修改、移动硬盘被拔电源

View File

@ -72,6 +72,10 @@ function createWindow() {
python_process = spawn(path.join(process.env.VITE_PUBLIC!, "main.exe"));
}
} else {
if (platform !== "macos") {
python_process = spawn(path.join(process.env.VITE_PUBLIC!, "main.exe"));
}
win.loadFile(path.join(RENDERER_DIST, "index.html")).then(() => {
if (process.argv.length >= 2) {
const folderPath = process.argv[2];

View File

@ -7,6 +7,7 @@ import { useEffect } from "react";
import { Models } from "./pages/Models";
import { Tools } from "./pages/Tools";
import { Datasource } from "./pages/Datasource";
import { Viewer } from "./pages/Viewer";
function App() {
const theme = document.querySelector("html")!.getAttribute("theme") as
@ -33,6 +34,7 @@ function App() {
<Route path="datasource" element={<Datasource />} />
<Route path="tools" element={<Tools />} />
<Route path="setting" element={<Setting />} />
<Route path="viewer" element={<Viewer />} />
</Route>
</Routes>
</Router>

View File

@ -90,7 +90,7 @@ export const MenuBar = () => {
toast({
variant: "default",
title: "完成",
description: `本次操作共导入${structDicom.length}组序列数据,耗时:${(
description: `导入${structDicom.length}组序列数据,耗时:${(
scanDuration / 1000
).toFixed(2)} s`,
action: (

View File

@ -71,7 +71,22 @@ const columnsAlias: { [K in keyof Partial<Series> as string]: string } = {
AcquisitionDate: "采集日期",
};
export const columns: ColumnDef<Series>[] = [
interface SeriesTableProps {
data: Series[];
}
export function SeriesTable(props: SeriesTableProps) {
const [sorting, setSorting] = useState<SortingState>([]);
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({
SeriesInstanceUID: false,
updateTime: false,
createTime: false,
});
const [rowSelection, setRowSelection] = useState({});
const navigate = useNavigate();
const columns: ColumnDef<Series>[] = [
{
id: "select",
header: ({ table }) => (
@ -223,7 +238,7 @@ export const columns: ColumnDef<Series>[] = [
header: "操作",
enableHiding: false,
cell: ({ row }) => {
const payment = row.original;
const dicom = row.original;
return (
<DropdownMenu>
@ -234,36 +249,19 @@ export const columns: ColumnDef<Series>[] = [
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuLabel></DropdownMenuLabel>
<DropdownMenuItem
onClick={() => navigator.clipboard.writeText(payment.id)}
>
Copy payment ID
</DropdownMenuItem>
onClick={() => handle2Viewer(dicom)}
></DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>View customer</DropdownMenuItem>
<DropdownMenuItem>View payment details</DropdownMenuItem>
<DropdownMenuItem></DropdownMenuItem>
<DropdownMenuItem></DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
},
},
];
interface SeriesTableProps {
data: Series[];
}
export function SeriesTable(props: SeriesTableProps) {
const [sorting, setSorting] = useState<SortingState>([]);
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({
SeriesInstanceUID: false,
updateTime: false,
createTime: false,
});
const [rowSelection, setRowSelection] = useState({});
const navigate = useNavigate();
];
const table = useReactTable({
data: props.data,
@ -295,6 +293,11 @@ export function SeriesTable(props: SeriesTableProps) {
navigate("/", { state: { selectDicoms } });
};
const handle2Viewer = (dicom) => {
const { SeriesInstanceUID } = dicom
navigate(`/viewer?SeriesInstanceUID=${SeriesInstanceUID}`)
}
return (
<div className="w-full h-full flex flex-col">
<div className="flex-shrink-0 flex items-center p-4">

View File

@ -0,0 +1,12 @@
import { useLocation } from "react-router-dom"
export const Viewer = () => {
const location = useLocation()
const queryParams = new URLSearchParams(location.search);
const SeriesInstanceUID = queryParams.get('SeriesInstanceUID'); // 获取URL参数
return <div>
{SeriesInstanceUID}
<p>dicom的mpr方案</p>
</div>
}