From 6ea46c076b5ab31dcd9bc95eb4c5d482102847a7 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 9 Jun 2025 11:18:09 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=83=A8=E4=BD=8D?= =?UTF-8?q?=E3=80=81=E6=A3=80=E6=9F=A5=E6=8A=80=E6=9C=AF=E3=80=81=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=90=8D=E7=A7=B0=E5=B7=B2=E4=BD=BF=E7=94=A8=E7=A6=81?= =?UTF-8?q?=E6=AD=A2=E5=8F=96=E6=B6=88=E3=80=81=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trial-config/components/logicalConfig.vue | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/views/trials/trials-panel/setting/trial-config/components/logicalConfig.vue b/src/views/trials/trials-panel/setting/trial-config/components/logicalConfig.vue index c5256d30..27d480c5 100644 --- a/src/views/trials/trials-panel/setting/trial-config/components/logicalConfig.vue +++ b/src/views/trials/trials-panel/setting/trial-config/components/logicalConfig.vue @@ -352,7 +352,8 @@ --> - + @@ -404,7 +405,8 @@ - + @@ -503,6 +506,8 @@ export default { IsTrialBasicLogicConfirmed: false, TrialObjectNameList: [], TrialObjectNameConfigStr: '', + StudyUseModalityList: [], + StudyUseStudyNameList: [] // ClinicalDataSetNames: [], // ClinicalDataTrialSetIds: [], // ClinicalDataSetNamesStr: '' @@ -709,6 +714,12 @@ export default { }, }, methods: { + selectableStudyName(row) { + return !this.form.StudyUseStudyNameList.includes(row.Name) || !this.form.StudyUseStudyNameList.includes(row.EnName) + }, + selectableModality(row) { + return !this.form.StudyUseModalityList.includes(row.value) + }, selectableBodyPart(row) { return !row.IsStudyUse }, From fa4c00230f9ec27980819b3eb0fb3d9d3feb19b4 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 9 Jun 2025 15:58:52 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/dictionary.js | 31 ++ .../components/fileRecord/index.vue | 374 ++++---------- .../components/historyFileList.vue | 324 ++++++++++++ .../components/report_doc/form.vue | 133 ++--- .../components/report_doc/index.vue | 458 +++++------------ .../components/trainRecord/form.vue | 4 +- .../components/trainRecord/index.vue | 460 +++++------------- 7 files changed, 736 insertions(+), 1048 deletions(-) create mode 100644 src/views/trials/trials-panel/trial-summary/trial-document/components/historyFileList.vue diff --git a/src/api/dictionary.js b/src/api/dictionary.js index 2f074edb..f52a4314 100644 --- a/src/api/dictionary.js +++ b/src/api/dictionary.js @@ -1357,6 +1357,37 @@ export function deleteAttachment(data) { data }) } +// 项目文档-获取历史记录列表 +export function getTrialHistoryRecordFileList(data) { + return request({ + url: `/TrialHistoryRecordFile/getTrialHistoryRecordFileList`, + method: 'post', + data + }) +} +// 项目文档-新增/修改历史记录 +export function addOrUpdateTrialHistoryRecordFile(data) { + return request({ + url: `/TrialHistoryRecordFile/addOrUpdateTrialHistoryRecordFile`, + method: 'post', + data + }) +} +// 项目文档-批量新增历史记录 +export function batchAddTrialHistoryRecordFile(data) { + return request({ + url: `/TrialHistoryRecordFile/batchAddTrialHistoryRecordFile`, + method: 'post', + data + }) +} +// 项目文档-删除历史记录 +export function deleteTrialHistoryRecordFile(id) { + return request({ + url: `/TrialHistoryRecordFile/deleteTrialHistoryRecordFile/${id}`, + method: 'delete', + }) +} // 邮件管理-批量修改邮件 export function batchUpdateEmail(data) { return request({ diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/fileRecord/index.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/fileRecord/index.vue index f0b31b38..74974171 100644 --- a/src/views/trials/trials-panel/trial-summary/trial-document/components/fileRecord/index.vue +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/fileRecord/index.vue @@ -4,52 +4,25 @@ {{ TITLE }} - - - {{ item.label }} + + + {{ item.label }} - - - {{ item.label }} + + + {{ item.label }} - + {{ $t('common:button:edit') }} - + {{ $t('common:button:save') }} @@ -58,32 +31,14 @@ - - + + - + - + - + - + - + - - + + - - + + + - - \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue index 0a5e21e3..5668597c 100644 --- a/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue @@ -1,131 +1,64 @@ - + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue b/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue index 572734d5..e551c524 100644 --- a/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue +++ b/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue @@ -5,45 +5,20 @@ - - + + - + - - - + + + {{ item.VisitName }} @@ -54,50 +29,25 @@ - - + + - + - - + + - + :end-placeholder="$t('trials:loginLog:table:endTime')" value-format="yyyy-MM-dd HH:mm:ss" + @change="handleDatetimeChange" /> @@ -105,234 +55,119 @@ {{ $t('common:button:search') }} - + {{ $t('common:button:reset') }} - + {{ $t('common:button:export') }} - +
-
- {{ $t('trials:uploadDicomList:table:FailedNumber') }}: - {{ lookText.Failed.length }} - {{ $t('trials:uploadDicomList:table:ExistedNumber') }}: - {{ lookText.Existed.length }} - {{ $t('trials:uploadDicomList:table:UploadedNumber') }}: - {{ lookText.Uploaded.length }} + "> + {{ $t('trials:uploadDicomList:table:FailedNumber') }}: + {{ lookText.Failed.length }} + {{ $t('trials:uploadDicomList:table:ExistedNumber') }}: + {{ lookText.Existed.length }} + {{ $t('trials:uploadDicomList:table:UploadedNumber') }}: + {{ lookText.Uploaded.length }}
@@ -379,6 +214,7 @@ import { getStudyUploadMonitor_Export } from '@/api/export' import Pagination from '@/components/Pagination' import BaseContainer from '@/components/BaseContainer' import BaseModel from '@/components/BaseModel' +import { changeURLStatic } from '@/utils/history.js' import axios from 'axios' const searchDataDefault = () => { return { @@ -421,10 +257,26 @@ export default { if (this.$route.query.studyCode) { this.searchData.StudyCode = this.$route.query.studyCode } + if (this.$route.query.siteId) { + this.searchData.TrialSiteId = this.$route.query.siteId + } + if (this.$route.query.subjectCode) { + this.searchData.SubjectInfo = this.$route.query.subjectCode + } + if (this.$route.query.visitNum || this.$route.query.visitNum === 0) { + this.searchData.VisitPlanArray = [Number(this.$route.query.visitNum)] + } this.getList() this.getVisitPlanOptions() + this.clearnUrl() }, methods: { + clearnUrl() { + changeURLStatic('siteId', '') + changeURLStatic('subjectCode', '') + changeURLStatic('visitNum', '') + + }, async handleLook(row) { this.lookVisible = true var htmlUrl = this.OSSclientConfig.basePath + row.RecordPath @@ -482,8 +334,8 @@ export default { }, handleExport() { getStudyUploadMonitor_Export(this.searchData) - .then((res) => {}) - .catch(() => {}) + .then((res) => { }) + .catch(() => { }) }, handleDatetimeChange(val) { if (val) { From 3489d34628f2923c24bd23ad8e6d3cffeb3066cc Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 11 Jun 2025 16:34:46 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=BD=B1=E5=83=8F=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=BD=B1=E5=83=8F=E3=80=81=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trial-summary/image-summary/index.vue | 76 ++++++++++++++++++- .../trial-summary/upload-monitor/index.vue | 2 +- 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/src/views/trials/trials-panel/trial-summary/image-summary/index.vue b/src/views/trials/trials-panel/trial-summary/image-summary/index.vue index f65e1c41..36b2d5f9 100644 --- a/src/views/trials/trials-panel/trial-summary/image-summary/index.vue +++ b/src/views/trials/trials-panel/trial-summary/image-summary/index.vue @@ -61,8 +61,17 @@ - + + + @@ -158,6 +167,7 @@ export default { console.log(err) } }, + // 导出表格 handleExport() { }, // 导出影像或关键图 async handleExportImage(IsKeyImage = false) { @@ -173,7 +183,7 @@ export default { } let res = await getExportSubjectVisitImageList(data) if (res.IsSuccess) { - + this.downLoad(IsKeyImage, res.Result) } } catch (err) { console.log(err) @@ -193,6 +203,64 @@ export default { formatDownloadFile(IsKeyImage = false, row) { let files = [], name = `${this.$route.query.researchProgramNo}.zip`; + if (!IsKeyImage) { + //中心ID/受试者ID/访视名/Study ID_Study Date_Modality/文件 + row.VisitList.forEach(visit => { + if (visit.StudyList && visit.StudyList.length > 0) { + visit.StudyList.forEach(study => { + if (study.SeriesList && study.SeriesList.length > 0) { + study.SeriesList.forEach(serie => { + if (serie.InstancePathList && serie.InstancePathList.length > 0) { + serie.InstancePathList.forEach(instance => { + let instanceArr = instance.Path.split("/") + let fileName = instanceArr[instanceArr.length - 1] + let obj = { + name: `${visit.TrialSiteCode}/${visit.SubjectCode}/${visit.VisitName}/${study.StudyCode}_${study.StudyTime}_${serie.Modality}/${fileName}`, + url: this.OSSclientConfig.basePath + instance.Path, + } + files.push(obj) + }) + } + }) + } + }) + } + if (visit.NoneDicomStudyList && visit.NoneDicomStudyList.length > 0) { + visit.NoneDicomStudyList.forEach(noneDicomStudy => { + if (noneDicomStudy.FileList && noneDicomStudy.FileList.length > 0) { + noneDicomStudy.FileList.forEach(file => { + let obj = { + name: `${visit.TrialSiteCode}/${visit.SubjectCode}/${visit.VisitName}/${noneDicomStudy.StudyCode}_${noneDicomStudy.ImageDate}_${noneDicomStudy.Modality}/${file.FileName}`, + url: this.OSSclientConfig.basePath + file.Path, + } + files.push(obj) + }) + } + }) + } + }) + } else { + //项目研究方案号(评估标准)/中心ID/受试者ID/访视名/阅片人角色-裁判选择标记/文件名 + row.forEach(item => { + ['QuestionMarkPictureList', 'TableQuestionRowPictureList'].forEach(key => { + if (item[key] && item[key].length > 0) { + item[key].forEach(data => { + ['PicturePath', 'otherPicturePath'].forEach(imgKey => { + if (data[imgKey]) { + let arr = data[imgKey].split("/") + let fileName = arr[arr.length - 1] + let obj = { + name: `${item.CriterionName}/${item.TrialSiteCode}/${item.SubjectCode}/${item.VisitName}/${this.$fd('ArmEnum', item.ArmEnum)}_${this.$fd('YesOrNo', item.IsJudgeSelect)}/${fileName}`, + url: this.OSSclientConfig.basePath + data[imgKey], + } + files.push(obj) + } + }) + }) + } + }) + }) + } return { files, name } }, @@ -282,7 +350,7 @@ export default { .size { display: inline-block; - min-width: 50px; + min-width: 100px; } } } diff --git a/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue b/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue index e551c524..661c65a4 100644 --- a/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue +++ b/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue @@ -85,7 +85,7 @@ From 2b891634198d13e285757ddf949a9dce77a89b33 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 11 Jun 2025 16:53:22 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E6=96=87=E4=BB=B6=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=BF=AE=E6=94=B9=E6=96=B9=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/historyFileList.vue | 107 +++++++++++------- 1 file changed, 67 insertions(+), 40 deletions(-) diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/historyFileList.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/historyFileList.vue index dd315365..27cf342a 100644 --- a/src/views/trials/trials-panel/trial-summary/trial-document/components/historyFileList.vue +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/historyFileList.vue @@ -13,10 +13,22 @@ {{ $t('trials:trialDocument:historyFileList:button:addFile') }} + @sort-change="handleSortByColumn" @cell-mouse-enter="handleCellMouseEnter"> + sortable="custom" width="200px"> + + {{ $t('common:button:preview') }} - - {{ $t('common:button:edit') }} - {{ $t('common:button:delete') }} @@ -55,25 +64,6 @@ - - - - - - - - - - - - - {{ $t("common:button:cancel") }} - {{ $t("common:button:save") }} - -