From 3192ec7516d11e68cc91e5a81c144cd5e7f8bad9 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 26 Feb 2025 09:24:42 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=8C=89=E9=92=AE=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/user/components/UserInfo.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/system/user/components/UserInfo.vue b/src/views/system/user/components/UserInfo.vue index 64b8dd60..b72783ce 100644 --- a/src/views/system/user/components/UserInfo.vue +++ b/src/views/system/user/components/UserInfo.vue @@ -184,7 +184,7 @@ :disabled="isDisabled" style="margin: 10px 15px" @click="handleSave" - >Save{{ $t('common:button:save') }} Date: Wed, 26 Feb 2025 11:43:12 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E9=94=81=E5=AE=9A=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=82=AE=E7=AE=B1=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.js b/src/main.js index 12bbc267..574da621 100644 --- a/src/main.js +++ b/src/main.js @@ -461,8 +461,8 @@ async function VueInit() { var my_username = zzSessionStorage.getItem('my_username') var my_password = zzSessionStorage.getItem('my_password') let my_userid = zzSessionStorage.getItem('userId') - let my_EMail = zzSessionStorage.getItem('my_EMail') - if (md5(_vm.unlock.my_password) === my_password && my_username === _vm.unlock.my_username) { + let my_EMail = zzSessionStorage.getItem('my_EMail') || '' + if (md5(_vm.unlock.my_password) === my_password && (my_username === _vm.unlock.my_username || my_EMail.toUpperCase() === vm.unlock.my_username.toUpperCase())) { resetReadingRestTime().then(() => { }) const closeLock = (_vm) => { From 00a7e8e609894422399007d99bc605446664d750 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 27 Feb 2025 10:33:57 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E9=83=A8=E5=88=86=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionary/template/file/fileForm.vue | 33 ------------------- .../system/user/components/Retrospect.vue | 2 +- .../components/uploadNonDicomFiles.vue | 1 - 3 files changed, 1 insertion(+), 35 deletions(-) diff --git a/src/views/dictionary/template/file/fileForm.vue b/src/views/dictionary/template/file/fileForm.vue index bbfc6a4a..95086846 100644 --- a/src/views/dictionary/template/file/fileForm.vue +++ b/src/views/dictionary/template/file/fileForm.vue @@ -186,39 +186,6 @@ export default { canel() { this.$emit('close') }, - handleRemoveFile() { - this.form.FileName = null - this.form.Path = null - this.fileList = [] - }, - beforeUpload() { - if (this.fileList.length > 0) { - this.$alert(this.$t('dictionary:bbrowser:msg:message1')) - return - } - }, - handlePreview(row, r2) { - if (row.fullPath) { - window.open(row.fullPath, '_blank') - } - }, - async handleUploadFile(param) { - this.loading = true - var file = await this.fileToBlob(param.file) - const res = await this.OSSclient.put( - `/System/Browser/${param.file.name}`, - file - ) - this.fileList.push({ - name: param.file.name, - path: this.$getObjectName(res.url), - fullPath: this.$getObjectName(res.url), - url: this.$getObjectName(res.url), - }) - this.form.Path = this.$getObjectName(res.url) - this.form.FileName = param.file.name - this.loading = false - }, }, } \ No newline at end of file diff --git a/src/views/system/user/components/Retrospect.vue b/src/views/system/user/components/Retrospect.vue index 43628c0c..71f5eae7 100644 --- a/src/views/system/user/components/Retrospect.vue +++ b/src/views/system/user/components/Retrospect.vue @@ -297,8 +297,8 @@ export default { this.searchData.IdentityUserId = this.userId this.loading = true let res = await getUserJoinedTrialList(this.searchData) + this.loading = false if (res.IsSuccess) { - this.loading = false res.OtherInfo = res.OtherInfo ? res.OtherInfo : {} Object.keys(this.otherInfo).forEach((key) => { this.otherInfo[key] = res.OtherInfo[key] diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue index 8ec06152..51b9a1a0 100644 --- a/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue +++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue @@ -838,7 +838,6 @@ export default { // 扫描待上传文件 beginScanFiles(e) { var files = [...e.target.files] - console.log(files) var sameFiles = [] files.forEach((file) => { var extendName = file.name From 6b331ab6f688fea9743a34eec4a503e2a71f1a5b Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 27 Feb 2025 10:34:06 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/dictionary.js | 62 ++ src/utils/index.js | 78 +- .../trial-document/components/menu.vue | 413 +++++++++ .../components/report_doc/form.vue | 214 +++++ .../components/report_doc/index.vue | 819 ++++++++++++++++++ .../trial-summary/trial-document/index.vue | 133 +++ 6 files changed, 1712 insertions(+), 7 deletions(-) create mode 100644 src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue create mode 100644 src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue create mode 100644 src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue create mode 100644 src/views/trials/trials-panel/trial-summary/trial-document/index.vue diff --git a/src/api/dictionary.js b/src/api/dictionary.js index d0ac4ede..0e7f6382 100644 --- a/src/api/dictionary.js +++ b/src/api/dictionary.js @@ -1092,4 +1092,66 @@ export function deleteSysFileType(id) { url: `/SysFileType/deleteSysFileType/${id}`, method: 'delete' }) +} +// 项目文档-获取项目菜单 +export function getTrialFileTypeData(data) { + return request({ + url: `/TrialFileType/getTrialFileTypeData`, + method: 'post', + data + }) +} +// 项目文档-修改项目菜单启用 +export function setAuthorizedView(data) { + return request({ + url: `/TrialFileType/setAuthorizedView`, + method: 'post', + data + }) +} +// 项目文档-新增/修改项目菜单 +export function addOrUpdateTrialFileType(data) { + return request({ + url: `/TrialFileType/addOrUpdateTrialFileType`, + method: 'post', + data + }) +} +// 项目文档-删除项目菜单 +export function deleteTrialFileType(id) { + return request({ + url: `/TrialFileType/deleteTrialFileType/${id}`, + method: 'delete', + }) +} +// 项目文档-报告/文档列表 +export function getTrialFinalRecordList(data) { + return request({ + url: `/TrialFinalRecord/getTrialFinalRecordList`, + method: 'post', + data + }) +} +// 项目文档-报告/文档授权 +export function authorizedTrialFinalRecord(data) { + return request({ + url: `/TrialFinalRecord/authorizedTrialFinalRecord`, + method: 'post', + data + }) +} +// 项目文档-报告/文档新增/修改 +export function addOrUpdateTrialFinalRecord(data) { + return request({ + url: `/TrialFinalRecord/addOrUpdateTrialFinalRecord`, + method: 'post', + data + }) +} +// 项目文档-删除报告/文档 +export function deleteTrialFinalRecord(id) { + return request({ + url: `/TrialFinalRecord/deleteTrialFinalRecord/${id}`, + method: 'delete', + }) } \ No newline at end of file diff --git a/src/utils/index.js b/src/utils/index.js index 00d9b594..c62d6e22 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -34,7 +34,7 @@ export function parseTime(time, cFormat) { const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { const value = formatObj[key] // Note: getDay() returns 0 on Sunday - if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] } + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } return value.toString().padStart(2, '0') }) return time_str @@ -51,12 +51,76 @@ export function param2Obj(url) { } return JSON.parse( '{"' + - decodeURIComponent(search) - .replace(/"/g, '\\"') - .replace(/&/g, '","') - .replace(/=/g, '":"') - .replace(/\+/g, ' ') + - '"}' + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + .replace(/\+/g, ' ') + + '"}' ) } +export function deepClone(target) { + const map = new WeakMap() + + function isObject(target) { + return (typeof target === 'object' && target) || typeof target === 'function' + } + + function clone(data) { + if (!isObject(data)) { + return data + } + if ([Date, RegExp].includes(data.constructor)) { + return new data.constructor(data) + } + if (typeof data === 'function') { + return new Function('return ' + data.toString())() + } + const exist = map.get(data) + if (exist) { + return exist + } + if (data instanceof Map) { + const result = new Map() + map.set(data, result) + data.forEach((val, key) => { + if (isObject(val)) { + result.set(key, clone(val)) + } else { + result.set(key, val) + } + }) + return result + } + if (data instanceof Set) { + const result = new Set() + map.set(data, result) + data.forEach(val => { + if (isObject(val)) { + result.add(clone(val)) + } else { + result.add(val) + } + }) + return result + } + const keys = Reflect.ownKeys(data) + const allDesc = Object.getOwnPropertyDescriptors(data) + const result = Object.create(Object.getPrototypeOf(data), allDesc) + map.set(data, result) + keys.forEach(key => { + const val = data[key] + if (isObject(val)) { + result[key] = clone(val) + } else { + result[key] = val + } + }) + return result + } + + return clone(target) +} + + diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue new file mode 100644 index 00000000..4d3e69db --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue @@ -0,0 +1,413 @@ + + + \ 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 new file mode 100644 index 00000000..3ecc79f4 --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue @@ -0,0 +1,214 @@ + + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue new file mode 100644 index 00000000..263712d7 --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue @@ -0,0 +1,819 @@ + + + \ 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 new file mode 100644 index 00000000..b98a2d6a --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/index.vue @@ -0,0 +1,133 @@ + + + \ No newline at end of file From 858a65098604c7cef81d6998815b4d2ab187f1da Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 27 Feb 2025 15:13:56 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trial-config/components/logicalConfig.vue | 332 +++++++++++++++++- .../trial-config/components/processConfig.vue | 33 ++ 2 files changed, 364 insertions(+), 1 deletion(-) 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 e7c35e00..a7042f57 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 @@ -103,6 +103,7 @@ + + + + {{ item.label }} + + + + + + + + + +
+ + {{ + showMore + ? $t('trials:logincCfg:button:packUp') + : $t('trials:logincCfg:button:more') + }} +
+
{{ $t('common:button:terminology') }} @@ -748,6 +804,121 @@ :visible.sync="terminologyVisible" :DATA.sync="form.TrialObjectNameList" /> + +
+ + {{ $t('common:button:add') }} + + + + + + + +
+ +
+ + + + + diff --git a/src/views/none-dicom-show/components/preview.vue b/src/views/none-dicom-show/components/preview.vue index 327c2279..7eedf98e 100644 --- a/src/views/none-dicom-show/components/preview.vue +++ b/src/views/none-dicom-show/components/preview.vue @@ -1,6 +1,5 @@ diff --git a/src/views/none-dicom-show/index.vue b/src/views/none-dicom-show/index.vue index 375e8232..08d029a4 100644 --- a/src/views/none-dicom-show/index.vue +++ b/src/views/none-dicom-show/index.vue @@ -177,6 +177,7 @@ export default { }) }, selected(file, studyIndex, fileIndex, isChangeSub = false) { + this.currentFileId = file.Id if (!!~file.FileType.indexOf('pdf')) { this.pdfFile.path = file.Path || file.FullFilePath this.pdfFile.type = 'pdf' @@ -185,11 +186,10 @@ export default { } else { this.showPDF = false } - this.currentFileId = file.Id + this.currentStudyIndex = studyIndex - this.previewImage.imgList = this.studyList[ - studyIndex - ].NoneDicomStudyFileList.filter((item) => !~item.FileType.indexOf('pdf')) + this.previewImage.imgList = + this.studyList[studyIndex].NoneDicomStudyFileList this.currentStudyFileIndex = fileIndex this.previewImage.index = fileIndex this.previewImage.studyCode = this.studyList[studyIndex].CodeView From 8bfaf7241a6fdec91aa39066c1b66059c50d5028 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 28 Feb 2025 09:58:07 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/none-dicom-show/index.vue | 4 +- .../qc-check/components/qualityAssurance.vue | 38 ++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/views/none-dicom-show/index.vue b/src/views/none-dicom-show/index.vue index 08d029a4..a2355602 100644 --- a/src/views/none-dicom-show/index.vue +++ b/src/views/none-dicom-show/index.vue @@ -9,11 +9,11 @@
{{ study.CodeView }} - {{ study.Modality }} - {{ getBodyPart(study.BodyPart) }} {{ study.StudyName }} + {{ study.Modality }} + {{ getBodyPart(study.BodyPart) }}
+ > + + { if (!v.BodyPartForEdit) { isgo = false isgoList.push(v.StudyCode) } + if (this.relationInfo.IsShowStudyName && !v.StudyName) { + hasStudyName = false + hasStudyNameList.push(v.StudyCode) + } }) + if (!hasStudyName) { + // `请补充检查${isgoList.toString()}的检查名称!` + this.$confirm( + this.$t('trials:qcQuality:title:noStudyName').replace( + 'xxx', + hasStudyNameList.join('、 ') + ), + '', + { + showCancelButton: false, + } + ) + return + } if (!isgo) { // `请补充检查${isgoList.toString()}的检查部位!` this.$confirm( From 996b691ef47742ce89ffac95b3a9439a5d198988 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 28 Feb 2025 10:21:52 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E8=AE=BF=E8=A7=86=E4=B8=AD=E9=A2=84?= =?UTF-8?q?=E8=A7=88=EF=BC=8Cdicom=E6=A3=80=E6=9F=A5=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=A3=80=E6=9F=A5=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visit/qc-check/components/dicomFiles.vue | 127 +++++++++--------- 1 file changed, 65 insertions(+), 62 deletions(-) diff --git a/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue b/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue index df0a66d8..295c47f3 100644 --- a/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue +++ b/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue @@ -9,7 +9,7 @@ icon="el-icon-view" @click="handlePreviewAllFiles" > - {{ $t("trials:audit:action:preview") }} + {{ $t('trials:audit:action:preview') }}
--> + + @@ -144,27 +150,24 @@