diff --git a/.env.usa b/.env.usa index 99a61943..58c8454a 100644 --- a/.env.usa +++ b/.env.usa @@ -2,7 +2,7 @@ ENV = 'usa' NODE_ENV = 'usa' # base public path -VUE_APP_BASE_PATH = 'https://ei-code-prod.s3.amazonaws.com/2024-07-17/' +VUE_APP_BASE_PATH = 'https://ei-code-prod.s3.amazonaws.com/2024-07-30/' # 是否开启登陆限制 true:是 false:否 VUE_APP_LOGIN_FOR_PERMISSION = true diff --git a/.env.usa_prod b/.env.usa_prod index 47554665..17a23e09 100644 --- a/.env.usa_prod +++ b/.env.usa_prod @@ -2,7 +2,7 @@ ENV = 'usa' NODE_ENV = 'usa' # base public path -VUE_APP_BASE_PATH = 'https://ei-med-s3-code.s3.amazonaws.com/2024-07-17/' +VUE_APP_BASE_PATH = 'https://ei-med-s3-code.s3.amazonaws.com/2024-07-30/' # 是否开启登陆限制 true:是 false:否 VUE_APP_LOGIN_FOR_PERMISSION = true diff --git a/src/components/Dicom/DicomCanvas.vue b/src/components/Dicom/DicomCanvas.vue index 3f693524..a7ce70cc 100644 --- a/src/components/Dicom/DicomCanvas.vue +++ b/src/components/Dicom/DicomCanvas.vue @@ -212,8 +212,10 @@ export default { this.toolState.clipPlaying = false const element = this.$refs.canvas cornerstone.enable(element) + cornerstoneTools.stopClip(this.canvas) + this.toolState.clipPlaying = false this.loading = true - + cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex]) .then(image => { this.loading = false @@ -871,7 +873,10 @@ export default { synchronizer.remove(this.$refs.canvas) this.setAllToolsPassive() }, - onContextmenu(event) { + onContextmenu(e) { + e.stopImmediatePropagation() + e.stopPropagation() + e.preventDefault() // const colormapsList = cornerstone.colors.getColormapsList() // const colorItems = [] // colorItems.push({ @@ -1058,7 +1063,7 @@ export default { // zIndex: 3, // minWidth: 100 // }) - return false + // return false }, getToolSate() { const toolROITypes = [ diff --git a/src/components/MFA/index.vue b/src/components/MFA/index.vue index ff5f2b7d..fd8771a3 100644 --- a/src/components/MFA/index.vue +++ b/src/components/MFA/index.vue @@ -91,21 +91,21 @@ export default { Code: [ { required: true, - message: this.$t("common:ruleMessage:specify"), + message: this.$t("mfa:ruleMessage:specify"), trigger: "blur", }, ], EMail: [ { required: true, - message: this.$t("common:ruleMessage:specify"), + message: this.$t("mfa:ruleMessage:specify"), trigger: "blur", }, ], username: [ { required: true, - message: this.$t("common:ruleMessage:specify"), + message: this.$t("mfa:ruleMessage:specify"), trigger: "blur", }, ], diff --git a/src/main.js b/src/main.js index c465103b..348580b8 100644 --- a/src/main.js +++ b/src/main.js @@ -134,7 +134,8 @@ Vue.prototype.$validatePassword = (rule, value, callback) => { /* eslint-disable */ var reg1 = eval(process.env.VUE_APP_PASSWORD_FOR_PERMISSION) ? new RegExp(`${process.env.VUE_APP_PASSWORD_FOR_REGULAR}`) : /.*/g; //密码必须是8位以上、必须含有字母、数字、特殊符号 if (!reg1.test(value)) { - callback(lang === 'zh' ? new Error("密码必须包含:1)8 – 32 个字符;2)至少1个数字;3) 至少1个大写字母;4)至少1个小写字母;5)至少1个特殊字符 (~!-@#$%^&*_+?)") : new Error('Passwords must have: 1) 8 - 32 characters; 2) At least 1 number; 3) At least 1 uppercase letter; 4) At least 1 lowercase letter; 5) At least 1 special character (~!-@#$%^&*_+?) ')) + callback( + new Error(_vm.$t('env:regExp:formatPassword'))) } else { callback(); } @@ -313,7 +314,7 @@ async function VueInit() { if (_vm.$store.state.user.userId !== zzSessionStorage.getItem('userId')) { window.location.href = `/login` zzSessionStorage.removeItem('lastWorkbench') - _vm.$alert(lang === 'en' ? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', { + _vm.$alert(_vm.$t("env:sso:tip"), { type: 'warning', }) } @@ -386,7 +387,10 @@ async function VueInit() { zzSessionStorage.removeItem('isLock') router.push("/login") }).then(() => { - _vm.$alert(lang === 'zh' ? '由于您长时间未操作,为保护您的数据安全已强制将您下线,如果需要继续操作请重新登录!' : 'No operation for a long time non-operation, you have been forced logout to protect data security. If continue to operate, please login again!', { + // _vm.$alert(lang === 'zh' ? '由于您长时间未操作,为保护您的数据安全已强制将您下线,如果需要继续操作请重新登陆!' : 'No operation for a long time non-operation, you have been forced logout to protect data security. If continue to operate, please login again!', { + // type: 'warning', + // }) + _vm.$alert(_vm.$t("env:loginOut"), { type: 'warning', }) }) @@ -410,17 +414,17 @@ async function VueInit() { isOpen = true zzSessionStorage.setItem('isLock', 'true') _vm.$msgbox({ - title: lang === 'zh' ? '已锁定' : 'Locked', - confirmButtonText: lang === 'zh' ? '解锁' : 'Unlock', + title: _vm.$t("env:lock:msgBox:title"), + confirmButtonText: _vm.$t("env:lock:msgBox:confirmButtonText"), showClose: false, beforeClose: (action, instance, done) => { if (action === 'confirm') { if (!_vm.unlock.my_username) { - _vm.$alert(lang === 'zh' ? '请输入您的用户名解锁' : 'Please enter your user name to unlock.') + _vm.$alert(_vm.$t("env:lock:msgBox:iupUser")) return } if (!_vm.unlock.my_password) { - _vm.$alert(lang === 'zh' ? '请输入您的密码解锁' : 'Please enter the correct password to unlock.') + _vm.$alert(_vm.$t("env:lock:msgBox:inpPassword")) return } var my_username = zzSessionStorage.getItem('my_username') @@ -431,7 +435,7 @@ async function VueInit() { resetReadingRestTime().then(() => { }) const closeLock = (_vm) => { - _vm.$message.success(lang === 'zh' ? '解锁成功,请继续操作' : 'Unlocked successfully. Please continue operation.') + _vm.$message.success(_vm.$t("env:lock:msgBox:lockSuccess")) _vm.unlock = { my_username: null, my_password: null @@ -453,7 +457,7 @@ async function VueInit() { Vue.prototype.$MFA({ status: "lock", UserId: my_userid, - EMail: my_EMail, + EMail: res.Result, username: my_username, callBack: () => { closeLock(_vm) @@ -466,7 +470,7 @@ async function VueInit() { } else { // console.log(111) - _vm.$message.error(lang === 'zh' ? '请输入正确用户名密码' : 'Please enter the correct password.') + _vm.$message.error(_vm.$t('env:lock:msgBox:userFail')) } } }, @@ -475,7 +479,7 @@ async function VueInit() { props: { labelWidth: "80px" } }, [ h('el-form-item', { - props: { label: lang === 'zh' ? '用户名' : 'Username' }, + props: { label: _vm.$t("env:lock:msgBox:form:username") }, }, [ h('input', { props: { @@ -497,7 +501,7 @@ async function VueInit() { }) ]), h('el-form-item', { - props: { label: lang === 'zh' ? '密码' : 'Password' }, + props: { label: _vm.$t("env:lock:msgBox:form:Password") }, }, [ h('input', { props: { diff --git a/src/views/dicom-show/dicom-study.vue b/src/views/dicom-show/dicom-study.vue index 248c436c..60d212aa 100644 --- a/src/views/dicom-show/dicom-study.vue +++ b/src/views/dicom-show/dicom-study.vue @@ -56,28 +56,20 @@ trigger="hover" popper-class="instance_frame_wrapper" > -
- -
-
{{ instance.InstanceNumber }}
-
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
-
+
+
+
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
+
@@ -155,7 +147,8 @@ import store from '@/store' import { changeURLStatic } from '@/utils/history.js' cornerstoneWADOImageLoader.external.dicomParser = dicomParser cornerstoneWADOImageLoader.external.cornerstone = cornerstone -const maximumSizeInBytes = 1024 * 1024 * 1024 * 6 // 1 GB +const maximumSizeInBytes = 1024 * 1024 * 1024 * 6 +cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes) export default { components: { 'dicom-viewer': dicomViewer @@ -668,7 +661,7 @@ export default { const seriesIndex = params.seriesIndex var prefetchInstanceCount = this.seriesList[seriesIndex].prefetchInstanceCount var instanceCount = this.seriesList[seriesIndex].instanceCount - if (this.seriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) { + if (this.seriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0 && this.seriesList[seriesIndex].imageloadedArr.length < this.seriesList[seriesIndex].instanceCount) { const i = this.currentLoadIns.findIndex(i => i.imageId === imageId) if (i > -1) { prefetchInstanceCount = prefetchInstanceCount - this.currentLoadIns[i].percentComplete + percentComplete @@ -851,6 +844,18 @@ export default { border: 1px solid #2c2c2c; padding: 5px; } +.frame_list{ + max-height: 500px; + overflow-y: auto; +} +.instance_frame_wrapper ::-webkit-scrollbar { + width: 7px; + height: 7px; +} +.instance_frame_wrapper ::-webkit-scrollbar-thumb { + border-radius: 10px; + background: #d0d0d0; +} .frame_content{ height: 50px; padding: 5px; diff --git a/src/views/dicom-show/dicom-visit.vue b/src/views/dicom-show/dicom-visit.vue index 64d28128..51c0a7c1 100644 --- a/src/views/dicom-show/dicom-visit.vue +++ b/src/views/dicom-show/dicom-visit.vue @@ -200,28 +200,20 @@ trigger="hover" popper-class="instance_frame_wrapper" > -
- -
-
{{ instance.InstanceNumber }}
-
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
-
+
+
+
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
+
@@ -275,7 +267,8 @@ import { changeURLStatic } from '@/utils/history.js' // import * as cornerstoneTools from 'cornerstone-tools' cornerstoneWADOImageLoader.external.dicomParser = dicomParser cornerstoneWADOImageLoader.external.cornerstone = cornerstone -const maximumSizeInBytes = 1024 * 1024 * 1024 * 6 // 1 GB +const maximumSizeInBytes = 1024 * 1024 * 1024 * 6 +cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes) export default { name: 'DicomsOfVisit', components: { @@ -745,19 +738,24 @@ export default { for (const [key, value] of searchParams.entries()) { params[key] = value } - const studyIndex = params.idx.split('|')[0] - const seriesIndex = params.idx.split('|')[1] - var series = !params.isRelation ? this.studyList[studyIndex].SeriesList[seriesIndex] : null - if (!series) return - var prefetchInstanceCount = series.prefetchInstanceCount - var instanceCount = series.instanceCount - if (series.imageloadedArr.indexOf(imageId) < 0) { - const i = this.currentLoadIns.findIndex(i => i.imageId === imageId) - if (i > -1) { - prefetchInstanceCount = prefetchInstanceCount - this.currentLoadIns[i].percentComplete + percentComplete - this.currentLoadIns[i].percentComplete = percentComplete - if (percentComplete === 100) { - this.currentLoadIns.splice(i, 1) + if (this.visitTaskId === params.visitTaskId) { + const studyIndex = params.idx.split('|')[0] + const seriesIndex = params.idx.split('|')[1] + var prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount + var instanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount + if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0 && this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.length < this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount) { + const i = this.currentLoadIns.findIndex(i => i.imageId === imageId) + if (i > -1) { + prefetchInstanceCount = prefetchInstanceCount - this.currentLoadIns[i].percentComplete + percentComplete + this.currentLoadIns[i].percentComplete = percentComplete + if (percentComplete === 100) { + this.currentLoadIns.splice(i, 1) + } + } else { + if (percentComplete !== 100) { + this.currentLoadIns.push({ imageId, percentComplete }) + } + prefetchInstanceCount = prefetchInstanceCount + percentComplete } } else { if (percentComplete !== 100) { @@ -962,6 +960,18 @@ export default { border: 1px solid #2c2c2c; padding: 5px; } +.frame_list{ + max-height: 500px; + overflow-y: auto; +} +.instance_frame_wrapper ::-webkit-scrollbar { + width: 7px; + height: 7px; +} +.instance_frame_wrapper ::-webkit-scrollbar-thumb { + border-radius: 10px; + background: #d0d0d0; +} .frame_content{ height: 50px; padding: 5px; diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue index 1a9050ac..32f89d49 100644 --- a/src/views/trials/trials-layout/components/trialsNavbar.vue +++ b/src/views/trials/trials-layout/components/trialsNavbar.vue @@ -158,7 +158,7 @@ export default { this.logout(); break; case "4-4": - this.go("/system"); + this.go("/dashboard/list"); break; case "1": this.go("/trials/trials-workbench"); diff --git a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue index 8ef8db80..5c07ee5e 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue @@ -39,7 +39,7 @@ class="title" > {{ item.QuestionName }} - (请重新评估) + {{ $t("trials:reading:dicom:IRecist:reevaluate") }}
{{ item.QuestionName }} diff --git a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue index 957f09d2..d0d42098 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue @@ -67,28 +67,20 @@ trigger="hover" popper-class="instance_frame_wrapper" > -
+
-
{{ instance.InstanceNumber }}
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
@@ -629,7 +621,12 @@ export default { this.studyIndex = studyIndex this.seriesIndex = seriesIndex this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData +<<<<<<< HEAD var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex] +======= + // var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex] + var dicomStatck = Object.assign({},this.studyList[studyIndex].SeriesList[seriesIndex]) +>>>>>>> uat dicomStatck.imageIdIndex = 0 this.$emit('loadImageStack', dicomStatck) if (!series.loadStatus && series.modality !== 'SR') { @@ -680,11 +677,16 @@ export default { } } else { imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}&visitTaskId=${this.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${idx}`) +<<<<<<< HEAD } +======= + } +>>>>>>> uat this.studyIndex = studyIndex this.seriesIndex = seriesIndex this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData - var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex] + // var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex] + var dicomStatck = Object.assign({},this.studyList[studyIndex].SeriesList[seriesIndex]) dicomStatck.imageIds = imageIds dicomStatck.imageIdIndex = 0 this.$emit('loadImageStack', dicomStatck) @@ -1020,6 +1022,18 @@ export default { border: 1px solid #2c2c2c; padding: 5px; } +.frame_list{ + max-height: 500px; + overflow-y: auto; +} +.instance_frame_wrapper ::-webkit-scrollbar { + width: 7px; + height: 7px; +} +.instance_frame_wrapper ::-webkit-scrollbar-thumb { + border-radius: 10px; + background: #d0d0d0; +} .frame_content{ height: 50px; padding: 5px; diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue index 8b28216d..6d0f7af5 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue @@ -889,8 +889,7 @@ export default { cornerstoneTools.setToolPassiveForElement(element, data.MeasureData.type, { mouseButtonMask: 1 }) } - - if (this.stack.instanceId.includes(data.InstanceId) && ((this.stack.isExistMutiFrames && data.MeasureData.frame === this.stack.frame && data.MeasureData) || (!this.stack.isExistMutiFrames && data.MeasureData))) { + if (this.stack.instanceId.includes(data.InstanceId) && ((this.stack.isExistMutiFrames && (data.MeasureData.frame === this.stack.frame) && data.MeasureData) || (!this.stack.isExistMutiFrames && data.MeasureData))) { // console.log('renderMeasuredData', this.stack.frame,data.MeasureData.frame,this.stack.isExistMutiFrames) const toolState = ToolStateManager.getImageIdToolState(e.detail.image.imageId, data.MeasureData.type) if (toolState && toolState.data.length > 0) { @@ -1246,7 +1245,6 @@ export default { // console.log('onImageLoaded') }, onImageRendered(e) { - // console.log('onImageRendered') this.stack.imageRendered = true // const { element } = e.detail var imageId = e.detail.image.imageId diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue index 1afeecca..411bca95 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue @@ -67,28 +67,30 @@ trigger="hover" popper-class="instance_frame_wrapper" > -
- -
-
{{ instance.InstanceNumber }}
-
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
-
+
+
+ +
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
+
@@ -600,8 +602,9 @@ export default { this.studyIndex = studyIndex this.seriesIndex = seriesIndex this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData - // var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex] - var dicomStatck = Object.assign({},this.studyList[studyIndex].SeriesList[seriesIndex]) + var dicomStatck = Object.assign({},this.studyList[studyIndex].SeriesList[seriesIndex]) + + dicomStatck.imageIdIndex = 0 this.$emit('loadImageStack', dicomStatck) if (!series.loadStatus && series.modality !== 'SR') { this.loopLoadStatus = -1 @@ -644,6 +647,10 @@ export default { showMultiFrames(studyIndex, series, seriesIndex, instanceInfo) { this.currentSeriesIndex = seriesIndex var idx = this.visitTaskIdx + this.studyIndex = studyIndex + this.seriesIndex = seriesIndex + this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData + var dicomStatck = Object.assign({},this.studyList[studyIndex].SeriesList[seriesIndex]) const imageIds = [] if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) { for (let j = 0; j < instanceInfo.NumberOfFrames; j++) { @@ -652,11 +659,6 @@ export default { } else { imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}&visitTaskId=${this.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${idx}`) } - this.studyIndex = studyIndex - this.seriesIndex = seriesIndex - this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData - // var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex] - var dicomStatck = Object.assign({},this.studyList[studyIndex].SeriesList[seriesIndex]) dicomStatck.imageIds = imageIds dicomStatck.imageIdIndex = 0 this.$emit('loadImageStack', dicomStatck) @@ -954,6 +956,18 @@ export default { border: 1px solid #2c2c2c; padding: 5px; } +.frame_list{ + max-height: 500px; + overflow-y: auto; +} +.instance_frame_wrapper ::-webkit-scrollbar { + width: 7px; + height: 7px; +} +.instance_frame_wrapper ::-webkit-scrollbar-thumb { + border-radius: 10px; + background: #d0d0d0; +} .frame_content{ height: 50px; padding: 5px; 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 69cc0dd1..3044746d 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 @@ -703,7 +703,8 @@ {{ errMessage }} diff --git a/src/views/trials/trials-panel/trial-summary/login-log/index.vue b/src/views/trials/trials-panel/trial-summary/login-log/index.vue index 68db8cc2..4888773d 100644 --- a/src/views/trials/trials-panel/trial-summary/login-log/index.vue +++ b/src/views/trials/trials-panel/trial-summary/login-log/index.vue @@ -128,13 +128,13 @@ show-overflow-tooltip sortable="custom" /> - + /> -->