Merge branch 'uat'
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
# Conflicts: # src/components/Dicom/DicomCanvas.vue # src/main.js # src/views/dicom-show/dicom-study.vue # src/views/dicom-show/dicom-visit.vue # src/views/login/index.vue # src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue # src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue # src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vueuat_us
commit
c3955dc017
2
.env.usa
2
.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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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",
|
||||
},
|
||||
],
|
||||
|
|
28
src/main.js
28
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: {
|
||||
|
|
|
@ -56,28 +56,20 @@
|
|||
trigger="hover"
|
||||
popper-class="instance_frame_wrapper"
|
||||
>
|
||||
<div
|
||||
v-for="(instance, idx) in item.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<item.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click="showMultiFrames(item, index, instance)"
|
||||
>
|
||||
<!-- <div>
|
||||
<img
|
||||
class="image-preview"
|
||||
:src="series.previewImageUrl"
|
||||
crossorigin="anonymous"
|
||||
alt=""
|
||||
style="width: 40px;height:40px;"
|
||||
fit="fill"
|
||||
>
|
||||
</div> -->
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
<div class="frame_list">
|
||||
<div
|
||||
v-for="(instance, idx) in item.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<item.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click="showMultiFrames(item, index, instance)"
|
||||
>
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
|
||||
</el-popover>
|
||||
|
@ -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;
|
||||
|
|
|
@ -200,28 +200,20 @@
|
|||
trigger="hover"
|
||||
popper-class="instance_frame_wrapper"
|
||||
>
|
||||
<div
|
||||
v-for="(instance, idx) in seriesItem.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<seriesItem.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click="showMultiFrames(studyIndex,seriesItem, index, instance)"
|
||||
>
|
||||
<!-- <div>
|
||||
<img
|
||||
class="image-preview"
|
||||
:src="series.previewImageUrl"
|
||||
crossorigin="anonymous"
|
||||
alt=""
|
||||
style="width: 40px;height:40px;"
|
||||
fit="fill"
|
||||
>
|
||||
</div> -->
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
<div class="frame_list">
|
||||
<div
|
||||
v-for="(instance, idx) in seriesItem.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<seriesItem.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click="showMultiFrames(studyIndex,seriesItem, index, instance)"
|
||||
>
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
|
||||
</el-popover>
|
||||
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
class="title"
|
||||
>
|
||||
{{ item.QuestionName }}
|
||||
<span v-if="isFirstChangeTask && item.TableQuestions.Answers.length > 0" style="color:red;font-size: 12px;">(请重新评估)</span>
|
||||
<span v-if="isFirstChangeTask && item.TableQuestions.Answers.length > 0" style="color:red;font-size: 12px;">{{ $t("trials:reading:dicom:IRecist:reevaluate") }}</span>
|
||||
</div>
|
||||
<div v-else class="title">
|
||||
{{ item.QuestionName }}
|
||||
|
|
|
@ -67,28 +67,20 @@
|
|||
trigger="hover"
|
||||
popper-class="instance_frame_wrapper"
|
||||
>
|
||||
<div
|
||||
<div class="frame_list">
|
||||
<div
|
||||
v-for="(instance, idx) in series.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<series.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click.stop="showMultiFrames(index,series, i, instance)"
|
||||
>
|
||||
<!-- <div>
|
||||
<img
|
||||
class="image-preview"
|
||||
:src="series.previewImageUrl"
|
||||
crossorigin="anonymous"
|
||||
alt=""
|
||||
style="width: 40px;height:40px;"
|
||||
fit="fill"
|
||||
>
|
||||
</div> -->
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;color: #ffeb3b;" />
|
||||
</el-popover>
|
||||
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -67,28 +67,30 @@
|
|||
trigger="hover"
|
||||
popper-class="instance_frame_wrapper"
|
||||
>
|
||||
<div
|
||||
v-for="(instance, idx) in series.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<series.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click.stop="showMultiFrames(index,series, i, instance)"
|
||||
>
|
||||
<!-- <div>
|
||||
<img
|
||||
class="image-preview"
|
||||
:src="series.previewImageUrl"
|
||||
crossorigin="anonymous"
|
||||
alt=""
|
||||
style="width: 40px;height:40px;"
|
||||
fit="fill"
|
||||
>
|
||||
</div> -->
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
<div class="frame_list">
|
||||
<div
|
||||
v-for="(instance, idx) in series.instanceInfoList"
|
||||
:key="instance.Id"
|
||||
class="frame_content"
|
||||
:style="{'margin-bottom':idx<series.instanceInfoList.length-1? '5px':'0px'}"
|
||||
@click.stop="showMultiFrames(index,series, i, instance)"
|
||||
>
|
||||
<!-- <div>
|
||||
<img
|
||||
class="image-preview"
|
||||
:src="series.previewImageUrl"
|
||||
crossorigin="anonymous"
|
||||
alt=""
|
||||
style="width: 40px;height:40px;"
|
||||
fit="fill"
|
||||
>
|
||||
</div> -->
|
||||
<div>
|
||||
<div>{{ instance.InstanceNumber }}</div>
|
||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;color: #ffeb3b;" />
|
||||
</el-popover>
|
||||
|
@ -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;
|
||||
|
|
|
@ -703,7 +703,8 @@
|
|||
<el-input
|
||||
v-model="addBodyPartForm.bodyPartStr"
|
||||
clearable
|
||||
:maxlength="50"
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
@focus="errMessage = null"
|
||||
></el-input>
|
||||
<span class="errTip" v-if="errMessage">{{ errMessage }}</span>
|
||||
|
|
|
@ -128,13 +128,13 @@
|
|||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
:label="$t('trials:loginLog:table:IPRegion')"
|
||||
prop="IPRegion"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
/> -->
|
||||
<el-table-column
|
||||
v-if="!isMine"
|
||||
:label="$t('trials:loginLog:table:incorrectUserName')"
|
||||
|
|
Loading…
Reference in New Issue