diff --git a/.svn/pristine/a5/a510475a0912f21efb3b36f41ecdfc3f783e4b6d.svn-base b/.svn/pristine/a5/a510475a0912f21efb3b36f41ecdfc3f783e4b6d.svn-base index 6815c09f..e36d56d5 100644 --- a/.svn/pristine/a5/a510475a0912f21efb3b36f41ecdfc3f783e4b6d.svn-base +++ b/.svn/pristine/a5/a510475a0912f21efb3b36f41ecdfc3f783e4b6d.svn-base @@ -10516,7 +10516,7 @@ class BaseViewer { const pageNumber = this._currentPageNumber, state = this.#scrollModePageState, - viewer = this.viewer; + viewmr = this.viewer; viewer.textContent = ""; state.pages.length = 0; diff --git a/src/api/dictionary.js b/src/api/dictionary.js index 6c432a61..59f880d3 100644 --- a/src/api/dictionary.js +++ b/src/api/dictionary.js @@ -1202,3 +1202,42 @@ export function deleteTrialNormalRecordList(data) { data }) } +// 项目文档-培训记录列表 +export function getTrialTrianingRecordList(data) { + return request({ + url: `/TrialTrianingRecord/getTrialTrianingRecordList`, + method: 'post', + data + }) +} +// 项目文档-培训记录新增/修改 +export function addOrUpdateTrialTrianingRecord(data) { + return request({ + url: `/TrialTrianingRecord/addOrUpdateTrialTrianingRecord`, + method: 'post', + data + }) +} +// 项目文档-培训记录批量新增/修改 +export function batchAddTrialTrianingRecord(data) { + return request({ + url: `/TrialTrianingRecord/batchAddTrialTrianingRecord`, + method: 'post', + data + }) +} +// 项目文档-删除培训记录 +export function deleteTrialTrianingRecord(id) { + return request({ + url: `/TrialTrianingRecord/deleteTrialTrianingRecord/${id}`, + method: 'delete', + }) +} +// 项目文档-培训记录授权 +export function authorizedTrialTrianingRecord(data) { + return request({ + url: `/TrialTrianingRecord/authorizedTrialTrianingRecord`, + method: 'post', + data + }) +} diff --git a/src/api/trials.js b/src/api/trials.js index f9c572d1..3f4b9dff 100644 --- a/src/api/trials.js +++ b/src/api/trials.js @@ -1080,7 +1080,13 @@ export function setSeriesStatus(trialId, subjectVisitId, studyId, seriesId, stat method: 'put' }) } - +export function setNodicomStudyState(params) { + return request({ + url: `/QCOperation/setNodicomStudyState`, + method: 'put', + params + }) +} export function setInstanceStatus(trialId, subjectVisitId, seriesId, instanceId, state) { return request({ url: `/QCOperation/setInstanceState/${trialId}/${subjectVisitId}/${seriesId}/${instanceId}/${state}`, diff --git a/src/components/uploadDicomAndNonedicom/dicomFile.vue b/src/components/uploadDicomAndNonedicom/dicomFile.vue index 64a22362..57361197 100644 --- a/src/components/uploadDicomAndNonedicom/dicomFile.vue +++ b/src/components/uploadDicomAndNonedicom/dicomFile.vue @@ -1308,7 +1308,7 @@ export default { o.imageColumns, o.imageRows ) - let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${v.seriesUid}.png` + let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg` let OSSclient = scope.OSSclient let seriesRes = await OSSclient.put( thumbnailPath, @@ -1421,7 +1421,7 @@ export default { v.instanceList[0].imageColumns, v.instanceList[0].imageRows ) - let thumbnailPath = `/${params.trialId}/Image/${params.trialSiteId}/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.studyUid}/${v.seriesUid}.png` + let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg` let OSSclient = scope.OSSclient try { let seriesRes = await OSSclient.put(thumbnailPath, blob) @@ -1499,8 +1499,8 @@ export default { return new Promise((resolve) => { cornerstone.loadImage(imageId).then(async (image) => { let canvas = document.createElement('canvas') - canvas.width = width - canvas.height = height + canvas.width = (width * 60) / height + canvas.height = 60 if (image) { cornerstone.renderToCanvas(canvas, image) // 将 Canvas 图像对象转换为 PNG 格式 diff --git a/src/components/uploadImage/components/upload-list.vue b/src/components/uploadImage/components/upload-list.vue index 2968add8..95465af2 100644 --- a/src/components/uploadImage/components/upload-list.vue +++ b/src/components/uploadImage/components/upload-list.vue @@ -567,7 +567,7 @@ export default { for (let i = 0; i < arr.length; i++) { let dicom = arr[i]; if (dicom.StudyInstanceUid !== StudyInstanceUid) continue; - let thumbnailPath = `/${dicom.params.TrialId}/TaskImage/${dicom.params.SubjectId}/${dicom.params.VisitTaskId}/${dicom.StudyInstanceUid}/${dicom.SeriesInstanceUid}.png`; + let thumbnailPath = `/${dicom.params.TrialId}/TaskImage/${dicom.params.SubjectId}/${dicom.params.VisitTaskId}/${dicom.StudyInstanceUid}/${dicom.SeriesInstanceUid}.jpg`; if (!studyObj[dicom.StudyId]) { studyObj[dicom.StudyId] = { StudyId: dicom.StudyId, diff --git a/src/utils/parseDicom.js b/src/utils/parseDicom.js index 562630a0..7b84e32d 100644 --- a/src/utils/parseDicom.js +++ b/src/utils/parseDicom.js @@ -189,8 +189,8 @@ const dicomToPng = (imageId, width, height) => { return new Promise((resolve) => { cornerstone.loadImage(imageId).then(async (image) => { let canvas = document.createElement("canvas"); - canvas.width = width; - canvas.height = height; + canvas.width = (width * 60) / height + canvas.height = 60 if (image) { cornerstone.renderToCanvas(canvas, image); // 将 Canvas 图像对象转换为 PNG 格式 diff --git a/src/views/none-dicom-show/index.vue b/src/views/none-dicom-show/index.vue index 8eb0044f..96f9d2e2 100644 --- a/src/views/none-dicom-show/index.vue +++ b/src/views/none-dicom-show/index.vue @@ -9,9 +9,9 @@
{{ study.CodeView }} - {{ - study.StudyName - }} + + {{ study.StudyName }} + {{ study.Modality }} {{ getBodyPart(study.BodyPart) }}
@@ -23,25 +23,48 @@ {{ $t('trials:audit:message:noData') }}
-
-
- {{ `${j + 1}. ${item.FileName}` }} -
- -
+
@@ -70,7 +93,7 @@ + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/trainRecord/form.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/trainRecord/form.vue new file mode 100644 index 00000000..d371e9bf --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/trainRecord/form.vue @@ -0,0 +1,299 @@ + + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/trainRecord/index.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/trainRecord/index.vue new file mode 100644 index 00000000..a2727fd9 --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/trainRecord/index.vue @@ -0,0 +1,948 @@ + + + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/index.vue b/src/views/trials/trials-panel/trial-summary/trial-document/index.vue index 4b8f6e0b..89afb3c3 100644 --- a/src/views/trials/trials-panel/trial-summary/trial-document/index.vue +++ b/src/views/trials/trials-panel/trial-summary/trial-document/index.vue @@ -42,7 +42,6 @@ :rowData="rowData" @getMenu="getMenu" /> - + + + @@ -59,9 +75,11 @@ import BaseContainer from '@/components/BaseContainer' import Menu from './components/menu.vue' import reportDoc from './components/report_doc/index.vue' import fileRecord from './components/fileRecord/index.vue' +import trainRecord from './components/trainRecord/index.vue' +import temp from './components/template/index.vue' export default { name: 'trialDocument', - components: { BaseContainer, Menu, reportDoc, fileRecord }, + components: { BaseContainer, Menu, reportDoc, fileRecord, trainRecord, temp }, data() { return { viewStatus: false, diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue b/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue index f1a86870..4284dc7a 100644 --- a/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue +++ b/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue @@ -34,6 +34,7 @@ height="300" :row-class-name="tableRowClassName" @selection-change="handleSelectionChange" + :default-sort="{ prop: 'UploadedTime', order: 'ascending' }" > @@ -78,6 +84,7 @@ @@ -85,6 +92,7 @@ @@ -92,6 +100,7 @@ @@ -99,11 +108,20 @@ {{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }} + + @@ -44,6 +45,7 @@ :label="$t('trials:uploadedDicoms:table:studyId')" min-width="80" show-overflow-tooltip + sortable >