From 063e812448cca757c9ba2dc044d004b6e94815e2 Mon Sep 17 00:00:00 2001 From: mozzie Date: Mon, 28 Aug 2023 17:00:35 +0800 Subject: [PATCH] feat: login --- apps/dmp/src/constant.ts | 2 +- .../Dicom/Upload/DicomUploader/index.tsx | 35 +- .../src/modules/Admin/Dicom/Upload/index.tsx | 109 +- apps/services/dicom/.env.dev | 8 + apps/services/dicom/.env.prod | 0 apps/services/dicom/.eslintrc.js | 25 + apps/services/dicom/.gitignore | 35 + apps/services/dicom/.prettierrc | 4 + apps/services/dicom/README.md | 73 + apps/services/dicom/nest-cli.json | 8 + apps/services/dicom/package.json | 56 + apps/services/dicom/src/app.controller.ts | 27 + apps/services/dicom/src/app.module.ts | 20 + apps/services/dicom/src/app.service.ts | 6 + apps/services/dicom/src/app.util.ts | 21 + apps/services/dicom/src/main.ts | 19 + apps/services/dicom/src/nacos/nacos.module.ts | 8 + .../services/dicom/src/nacos/nacos.service.ts | 108 + apps/services/dicom/tsconfig.build.json | 4 + apps/services/dicom/tsconfig.json | 21 + construct.drawio => cert.drawio | 0 docker-compose.yml | 10 +- orthancOHIF/orthanc.sql | 1 + package.json | 1 + pnpm-lock.yaml | 9788 ++++++++++++----- structures.md | 23 + 26 files changed, 7534 insertions(+), 2878 deletions(-) create mode 100644 apps/services/dicom/.env.dev create mode 100644 apps/services/dicom/.env.prod create mode 100644 apps/services/dicom/.eslintrc.js create mode 100644 apps/services/dicom/.gitignore create mode 100644 apps/services/dicom/.prettierrc create mode 100644 apps/services/dicom/README.md create mode 100644 apps/services/dicom/nest-cli.json create mode 100644 apps/services/dicom/package.json create mode 100644 apps/services/dicom/src/app.controller.ts create mode 100644 apps/services/dicom/src/app.module.ts create mode 100644 apps/services/dicom/src/app.service.ts create mode 100644 apps/services/dicom/src/app.util.ts create mode 100644 apps/services/dicom/src/main.ts create mode 100644 apps/services/dicom/src/nacos/nacos.module.ts create mode 100644 apps/services/dicom/src/nacos/nacos.service.ts create mode 100644 apps/services/dicom/tsconfig.build.json create mode 100644 apps/services/dicom/tsconfig.json rename construct.drawio => cert.drawio (100%) create mode 100644 orthancOHIF/orthanc.sql create mode 100644 structures.md diff --git a/apps/dmp/src/constant.ts b/apps/dmp/src/constant.ts index fcb553d..4ee199e 100644 --- a/apps/dmp/src/constant.ts +++ b/apps/dmp/src/constant.ts @@ -10,7 +10,7 @@ export const AuthFailedReplacePath = "/login"; export const theme: ThemeConfig = { token: { colorPrimary: "#fa541c", - borderRadius: 2, + borderRadius: 5, }, }; diff --git a/apps/dmp/src/modules/Admin/Dicom/Upload/DicomUploader/index.tsx b/apps/dmp/src/modules/Admin/Dicom/Upload/DicomUploader/index.tsx index 6eec41c..39cc2a2 100644 --- a/apps/dmp/src/modules/Admin/Dicom/Upload/DicomUploader/index.tsx +++ b/apps/dmp/src/modules/Admin/Dicom/Upload/DicomUploader/index.tsx @@ -1,5 +1,7 @@ import React, { useRef, useState } from "react"; import { Study, parseDcmFiles } from "./util"; +import { Button } from "antd"; +import { CloudUploadOutlined } from "@ant-design/icons"; declare module "react" { interface InputHTMLAttributes extends HTMLAttributes { @@ -44,17 +46,28 @@ export const useDicomUploader = () => { setIsLoading(false); }; - const UploadInput = () => ( - handleFileChange(e)} - /> - ); + const UploadInput = () => { + return ( + <> + handleFileChange(e)} + /> + + + ); + }; return { UploadInput, fileCalculator, studys, isLoading }; }; diff --git a/apps/dmp/src/modules/Admin/Dicom/Upload/index.tsx b/apps/dmp/src/modules/Admin/Dicom/Upload/index.tsx index b0a2310..e3eb26b 100644 --- a/apps/dmp/src/modules/Admin/Dicom/Upload/index.tsx +++ b/apps/dmp/src/modules/Admin/Dicom/Upload/index.tsx @@ -1,4 +1,4 @@ -import { Button, Col, Row, Space, Spin } from "antd"; +import { Button, Col, Divider, Modal, Row, Select, Space, Spin } from "antd"; import { useDicomUploader } from "./DicomUploader"; import { Series, Study } from "./DicomUploader/util"; import { DicomTable } from "./DicomTable"; @@ -12,11 +12,27 @@ interface DicomUploadProps { children?: JSX.Element; } +/** + * 新窗口打开ohif阅片 + */ +const openOHIFViewer = ( + StudyInstanceUID: string, + SeriesInstanceUID: string +) => { + const target = `http://localhost:3000/viewer/${StudyInstanceUID}?SeriesInstanceUID=${SeriesInstanceUID}`; + window.open(target, "_blank"); +}; + export const DicomUpload = (props: DicomUploadProps) => { const { UploadInput, fileCalculator, studys, isLoading } = useDicomUploader(); - const { dicomDomainService } = useDomain(); + const { dicomDomainService, userDomainService } = useDomain(); const { dcmFileNum, totalFileNum, dcmFileSize } = fileCalculator; const [selectRows, setSelectedRows] = useState([]); + const [isModalOpen, setIsModalOpen] = useState(false); + const [annotators, setAnnotators] = useState([]); + const [selectAnnotatorId, setSelectAnnotatorId] = useState( + "" + ); const onUploadFiles = async (study: Study, series: Series) => { const { SeriesInstanceUID, subs } = series; @@ -25,10 +41,9 @@ export const DicomUpload = (props: DicomUploadProps) => { SeriesInstanceUID, StudyInstanceUID, }); - const dcmExistInPacs = instances.length === subs.length; - if (dcmExistInPacs) { - const target = `http://localhost:3000/viewer/${StudyInstanceUID}?SeriesInstanceUID=${SeriesInstanceUID}`; - window.open(target, "_blank"); + // pacs已存在 + if (instances.length === subs.length) { + openOHIFViewer(StudyInstanceUID, SeriesInstanceUID); } else { let fullfilled = 0; Promise.all( @@ -41,49 +56,79 @@ export const DicomUpload = (props: DicomUploadProps) => { ) ).then((res) => { if (res.length === series.subs.length) { - const target = `http://localhost:3000/viewer/${StudyInstanceUID}?SeriesInstanceUID=${SeriesInstanceUID}`; - window.open(target, "_blank"); + openOHIFViewer(StudyInstanceUID, SeriesInstanceUID); } }); } }; const onClickAssign = () => { + userDomainService.getDmpAnnotators().then((res) => { + console.log(res); + const { data } = res; + setIsModalOpen(true); + setAnnotators(data.map((u) => ({ label: u.username, value: u.id }))); + }); console.log(selectRows); }; + const dcmFileInfo = !!totalFileNum && ( + + 扫描总文件数: {totalFileNum} + + 包含: {dcmFileNum} 个dicom文件 + + dcm文件总体积: {dcmFileSize} + + ); + + const onAssignConfirm = () => { + if (!selectAnnotatorId) return; + console.log(selectAnnotatorId); + setSelectAnnotatorId(0); + setIsModalOpen(false); + }; + return ( -
-
- - +
+ + + - - 文件统计, dicom文件: {dcmFileNum}, 总文件: {totalFileNum}, 大小: - {dcmFileSize} - - - - - - - - - - -
+ + + + + {dcmFileInfo} setSelectedRows(rows)} onUploadFiles={onUploadFiles} /> + setIsModalOpen(false)} + > +