阅片检查列表结构更改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
6d01361917
commit
f767451a4e
|
@ -20,8 +20,8 @@ const hangingAgreement = [
|
||||||
]
|
]
|
||||||
const getDefaultState = () => {
|
const getDefaultState = () => {
|
||||||
return {
|
return {
|
||||||
// visitTaskList: [],
|
visitTaskList: [],
|
||||||
visitTaskList: sessionStorage.getItem('visitTaskList') ? JSON.parse(sessionStorage.getItem('visitTaskList')) : [],
|
// visitTaskList: sessionStorage.getItem('visitTaskList') ? JSON.parse(sessionStorage.getItem('visitTaskList')) : [],
|
||||||
organList: [],
|
organList: [],
|
||||||
seriesStack: [],
|
seriesStack: [],
|
||||||
activeHangingAgreement: hangingAgreement[0],
|
activeHangingAgreement: hangingAgreement[0],
|
||||||
|
@ -166,7 +166,7 @@ const actions = {
|
||||||
item.IsInit = false
|
item.IsInit = false
|
||||||
})
|
})
|
||||||
state.visitTaskList = res.Result
|
state.visitTaskList = res.Result
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
const currentTaskIdx = res.Result.findIndex(item => item.IsCurrentTask)
|
const currentTaskIdx = res.Result.findIndex(item => item.IsCurrentTask)
|
||||||
if (currentTaskIdx > -1) {
|
if (currentTaskIdx > -1) {
|
||||||
state.currentTaskId = res.Result[currentTaskIdx].VisitTaskId
|
state.currentTaskId = res.Result[currentTaskIdx].VisitTaskId
|
||||||
|
@ -178,7 +178,7 @@ const actions = {
|
||||||
},
|
},
|
||||||
resetVisitTasks({ state }) {
|
resetVisitTasks({ state }) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
sessionStorage.setItem('visitTaskList', '')
|
// sessionStorage.setItem('visitTaskList', '')
|
||||||
state.visitTaskList = []
|
state.visitTaskList = []
|
||||||
state.currentTaskId = ''
|
state.currentTaskId = ''
|
||||||
state.activeSeries = {}
|
state.activeSeries = {}
|
||||||
|
@ -209,14 +209,25 @@ const actions = {
|
||||||
var seriesList = []
|
var seriesList = []
|
||||||
study.SeriesList.forEach((series, index) => {
|
study.SeriesList.forEach((series, index) => {
|
||||||
const imageIds = []
|
const imageIds = []
|
||||||
|
const instanceList = []
|
||||||
series.InstancePathList.forEach((path) => {
|
// series.InstancePathList.forEach((path) => {
|
||||||
|
// imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
|
||||||
|
// })
|
||||||
|
series.InstanceInfoList.forEach(instance => {
|
||||||
|
if (instance.NumberOfFrames && instance.NumberOfFrames > 1) {
|
||||||
|
for (let i = 0; i < instance.NumberOfFrames; i++) {
|
||||||
|
const path = `${instance.Path}?frame=${i}&instanceId=${instance.Id}`
|
||||||
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}`)
|
||||||
|
}
|
||||||
|
instanceList.push(instance.Id)
|
||||||
})
|
})
|
||||||
seriesList.push({
|
seriesList.push({
|
||||||
isDicom: study.IsDicom,
|
isDicom: study.IsDicom,
|
||||||
imageIds: imageIds,
|
imageIds: imageIds,
|
||||||
instanceList: series.InstanceList,
|
instanceList: instanceList,
|
||||||
seriesId: series.Id,
|
seriesId: series.Id,
|
||||||
imageIdIndex: 0,
|
imageIdIndex: 0,
|
||||||
seriesUid: series.SeriesInstanceUid,
|
seriesUid: series.SeriesInstanceUid,
|
||||||
|
@ -287,7 +298,7 @@ const actions = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
})
|
})
|
||||||
|
@ -303,7 +314,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -322,7 +333,7 @@ const actions = {
|
||||||
state.visitTaskList[index].Questions = res.Result
|
state.visitTaskList[index].Questions = res.Result
|
||||||
state.visitTaskList[index].questionsInit = true
|
state.visitTaskList[index].questionsInit = true
|
||||||
state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList
|
state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
}
|
}
|
||||||
|
@ -340,7 +351,7 @@ const actions = {
|
||||||
state.visitTaskList[index].Questions = res.Result
|
state.visitTaskList[index].Questions = res.Result
|
||||||
state.visitTaskList[index].questionsInit = true
|
state.visitTaskList[index].questionsInit = true
|
||||||
state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList
|
state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
})
|
})
|
||||||
|
@ -359,7 +370,7 @@ const actions = {
|
||||||
var list = getQuestions(res.Result.SinglePage)
|
var list = getQuestions(res.Result.SinglePage)
|
||||||
state.visitTaskList[index].ReadingQuestions = list
|
state.visitTaskList[index].ReadingQuestions = list
|
||||||
state.visitTaskList[index].readingQuestionsInit = true
|
state.visitTaskList[index].readingQuestionsInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
}
|
}
|
||||||
|
@ -376,7 +387,7 @@ const actions = {
|
||||||
var list = getQuestions(res.Result.SinglePage)
|
var list = getQuestions(res.Result.SinglePage)
|
||||||
state.visitTaskList[index].ReadingQuestions = list
|
state.visitTaskList[index].ReadingQuestions = list
|
||||||
state.visitTaskList[index].readingQuestionsInit = true
|
state.visitTaskList[index].readingQuestionsInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
})
|
})
|
||||||
|
@ -387,7 +398,7 @@ const actions = {
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
state.visitTaskList[index].ReadingQuestions = obj.questions
|
state.visitTaskList[index].ReadingQuestions = obj.questions
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -399,7 +410,7 @@ const actions = {
|
||||||
questions = findQuestionAndAddLesion(questions, obj)
|
questions = findQuestionAndAddLesion(questions, obj)
|
||||||
state.visitTaskList[index].ReadingQuestions = questions
|
state.visitTaskList[index].ReadingQuestions = questions
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -411,7 +422,7 @@ const actions = {
|
||||||
questions = findQuestionAndUpdateLesion(questions, obj)
|
questions = findQuestionAndUpdateLesion(questions, obj)
|
||||||
state.visitTaskList[index].ReadingQuestions = questions
|
state.visitTaskList[index].ReadingQuestions = questions
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -423,7 +434,7 @@ const actions = {
|
||||||
questions = findQuestionAndRemoveLesion(questions, obj)
|
questions = findQuestionAndRemoveLesion(questions, obj)
|
||||||
state.visitTaskList[index].ReadingQuestions = questions
|
state.visitTaskList[index].ReadingQuestions = questions
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -444,7 +455,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
state.visitTaskList[index].MeasureData = arr
|
state.visitTaskList[index].MeasureData = arr
|
||||||
state.visitTaskList[index].measureDataInit = true
|
state.visitTaskList[index].measureDataInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
}
|
}
|
||||||
|
@ -471,7 +482,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
state.visitTaskList[index].MeasureData = arr
|
state.visitTaskList[index].MeasureData = arr
|
||||||
state.visitTaskList[index].measureDataInit = true
|
state.visitTaskList[index].measureDataInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
}
|
}
|
||||||
|
@ -511,7 +522,7 @@ const actions = {
|
||||||
await deleteCustomTag(obj.questionInfo.Id)
|
await deleteCustomTag(obj.questionInfo.Id)
|
||||||
state.visitTaskList[index].MeasureData = measureData
|
state.visitTaskList[index].MeasureData = measureData
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -529,7 +540,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
state.visitTaskList[index].MeasureData = arr
|
state.visitTaskList[index].MeasureData = arr
|
||||||
state.visitTaskList[index].measureDataInit = true
|
state.visitTaskList[index].measureDataInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
})
|
})
|
||||||
|
@ -548,7 +559,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
state.visitTaskList[index].MeasureData = arr
|
state.visitTaskList[index].MeasureData = arr
|
||||||
state.visitTaskList[index].measureDataInit = true
|
state.visitTaskList[index].measureDataInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
})
|
})
|
||||||
|
@ -580,7 +591,7 @@ const actions = {
|
||||||
state.visitTaskList[index].MeasureData.push(obj.data)
|
state.visitTaskList[index].MeasureData.push(obj.data)
|
||||||
console.log('新增标记成功')
|
console.log('新增标记成功')
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
console.log(state.visitTaskList)
|
console.log(state.visitTaskList)
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
|
@ -602,7 +613,7 @@ const actions = {
|
||||||
state.visitTaskList[index].MeasureData.push(obj.data)
|
state.visitTaskList[index].MeasureData.push(obj.data)
|
||||||
console.log('新增标记成功')
|
console.log('新增标记成功')
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -622,7 +633,7 @@ const actions = {
|
||||||
}
|
}
|
||||||
state.visitTaskList[index].MeasureData = measureData
|
state.visitTaskList[index].MeasureData = measureData
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -641,7 +652,7 @@ const actions = {
|
||||||
Id: obj.Id
|
Id: obj.Id
|
||||||
})
|
})
|
||||||
console.log('新增标记成功')
|
console.log('新增标记成功')
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id)
|
var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id)
|
||||||
|
@ -657,7 +668,7 @@ const actions = {
|
||||||
state.visitTaskList[index].MeasureData.push(obj.MeasureData.data)
|
state.visitTaskList[index].MeasureData.push(obj.MeasureData.data)
|
||||||
console.log('新增标记成功')
|
console.log('新增标记成功')
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -702,7 +713,7 @@ const actions = {
|
||||||
|
|
||||||
// state.visitTaskList[index].MeasureData = measureData
|
// state.visitTaskList[index].MeasureData = measureData
|
||||||
// }
|
// }
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -715,7 +726,7 @@ const actions = {
|
||||||
measureData[idx].MeasureData.data.status = obj.status
|
measureData[idx].MeasureData.data.status = obj.status
|
||||||
state.visitTaskList[index].MeasureData = measureData
|
state.visitTaskList[index].MeasureData = measureData
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -726,8 +737,6 @@ const actions = {
|
||||||
resolve()
|
resolve()
|
||||||
} else {
|
} else {
|
||||||
var studyList = []
|
var studyList = []
|
||||||
// getVisitStudyList
|
|
||||||
// getReadingVisitStudyList
|
|
||||||
getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
|
getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
|
||||||
res.Result.forEach((study, studyIndex) => {
|
res.Result.forEach((study, studyIndex) => {
|
||||||
const data = {}
|
const data = {}
|
||||||
|
@ -743,19 +752,30 @@ const actions = {
|
||||||
var seriesList = []
|
var seriesList = []
|
||||||
study.SeriesList.forEach((series, seriesIndex) => {
|
study.SeriesList.forEach((series, seriesIndex) => {
|
||||||
const imageIds = []
|
const imageIds = []
|
||||||
try {
|
const instanceList = []
|
||||||
// if (~window.location.href.indexOf('3c210000-3e2c-0016-4247-08dabf28e96b')) {
|
// try {
|
||||||
series.InstancePathList.forEach((path) => {
|
// series.InstancePathList.forEach((path) => {
|
||||||
// var path = id.split('/')[id.split('/').length - 1]
|
// imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
|
||||||
|
// })
|
||||||
|
// } catch (e) {
|
||||||
|
// console.log(e)
|
||||||
|
// }
|
||||||
|
series.InstanceInfoList.forEach(instance => {
|
||||||
|
if (instance.NumberOfFrames && instance.NumberOfFrames > 1) {
|
||||||
|
for (let i = 0; i < instance.NumberOfFrames; i++) {
|
||||||
|
const path = `${instance.Path}?frame=${i}&instanceId=${instance.Id}`
|
||||||
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
|
||||||
})
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e)
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}`)
|
||||||
|
}
|
||||||
|
instanceList.push(instance.Id)
|
||||||
|
})
|
||||||
seriesList.push({
|
seriesList.push({
|
||||||
isDicom: study.IsDicom,
|
isDicom: study.IsDicom,
|
||||||
imageIds: imageIds,
|
imageIds: imageIds,
|
||||||
instanceList: series.InstanceList,
|
instanceInfoList: series.InstanceInfoList,
|
||||||
|
instanceList: instanceList,
|
||||||
seriesId: series.Id,
|
seriesId: series.Id,
|
||||||
imageIdIndex: 0,
|
imageIdIndex: 0,
|
||||||
seriesUid: series.SeriesInstanceUid,
|
seriesUid: series.SeriesInstanceUid,
|
||||||
|
@ -782,7 +802,8 @@ const actions = {
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
isBeMark: series.IsBeMark,
|
isBeMark: series.IsBeMark,
|
||||||
ww: series.WindowWidth,
|
ww: series.WindowWidth,
|
||||||
wc: series.WindowCenter
|
wc: series.WindowCenter,
|
||||||
|
isExistMutiFrames: series.IsExistMutiFrames
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
data.SeriesList = seriesList
|
data.SeriesList = seriesList
|
||||||
|
@ -790,7 +811,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
state.visitTaskList[index].StudyList = studyList
|
state.visitTaskList[index].StudyList = studyList
|
||||||
state.visitTaskList[index].studyListInit = true
|
state.visitTaskList[index].studyListInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
}
|
}
|
||||||
|
@ -823,7 +844,7 @@ const actions = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.visitTaskList[index].StudyList = studyList
|
state.visitTaskList[index].StudyList = studyList
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
} else {
|
} else {
|
||||||
// console.log(obj)
|
// console.log(obj)
|
||||||
}
|
}
|
||||||
|
@ -843,7 +864,7 @@ const actions = {
|
||||||
studyList[obj.studyIndex].SeriesList[obj.seriesIndex].loadStatus = true
|
studyList[obj.studyIndex].SeriesList[obj.seriesIndex].loadStatus = true
|
||||||
}
|
}
|
||||||
state.visitTaskList[obj.visitTaskindex].StudyList = studyList
|
state.visitTaskList[obj.visitTaskindex].StudyList = studyList
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
}
|
}
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
|
@ -851,7 +872,7 @@ const actions = {
|
||||||
setStatus({ state }, obj) {
|
setStatus({ state }, obj) {
|
||||||
var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
|
var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
|
||||||
state.visitTaskList[index].IsInit = true
|
state.visitTaskList[index].IsInit = true
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
},
|
},
|
||||||
setActiveSeries({ state }, series) {
|
setActiveSeries({ state }, series) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
@ -896,7 +917,7 @@ const actions = {
|
||||||
state.visitTaskList[index].QuestionMarkInfoList.push(obj.data)
|
state.visitTaskList[index].QuestionMarkInfoList.push(obj.data)
|
||||||
console.log('新增标记成功')
|
console.log('新增标记成功')
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -912,7 +933,7 @@ const actions = {
|
||||||
}
|
}
|
||||||
state.visitTaskList[index].QuestionMarkInfoList = measureData
|
state.visitTaskList[index].QuestionMarkInfoList = measureData
|
||||||
}
|
}
|
||||||
sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -754,14 +754,10 @@ export default {
|
||||||
getToolStateInfo(e) {
|
getToolStateInfo(e) {
|
||||||
const { element, currentPoints, image, viewport } = e.detail
|
const { element, currentPoints, image, viewport } = e.detail
|
||||||
var imageId = image.imageId
|
var imageId = image.imageId
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
for (var m = 0; m < this.measuredTools.length; m++) {
|
for (var m = 0; m < this.measuredTools.length; m++) {
|
||||||
var toolType = this.measuredTools[m]
|
var toolType = this.measuredTools[m]
|
||||||
|
@ -924,11 +920,8 @@ export default {
|
||||||
if (this.readingTaskState >= 2) return
|
if (this.readingTaskState >= 2) return
|
||||||
var element = cornerstone.getEnabledElement(this.canvas)
|
var element = cornerstone.getEnabledElement(this.canvas)
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
if (instanceId.includes('?frame=')) {
|
var instanceId = imageInfo.instanceId
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId && i.IsCurrentTask && i.ReadingTaskState < 2)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId && i.IsCurrentTask && i.ReadingTaskState < 2)
|
||||||
if (idx === -1) return
|
if (idx === -1) return
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
|
@ -991,15 +984,10 @@ export default {
|
||||||
mouseClick(e) {
|
mouseClick(e) {
|
||||||
const { element, currentPoints, image, viewport } = e.detail
|
const { element, currentPoints, image, viewport } = e.detail
|
||||||
var imageId = image.imageId
|
var imageId = image.imageId
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
|
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
for (let t = 0; t < this.measuredTools.length; t++) {
|
for (let t = 0; t < this.measuredTools.length; t++) {
|
||||||
var toolType = this.measuredTools[t]
|
var toolType = this.measuredTools[t]
|
||||||
|
@ -1095,14 +1083,10 @@ export default {
|
||||||
this.minVistNum = this.visitTaskList[0].VisitTaskNum
|
this.minVistNum = this.visitTaskList[0].VisitTaskNum
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
const imageId = this.stack.imageIds[this.stack.currentImageIdIndex]
|
const imageId = this.stack.imageIds[this.stack.currentImageIdIndex]
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
this.stack.instanceId = instanceId
|
this.stack.instanceId = instanceId
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
ToolStateManager.clearImageIdToolState(dicomSeries.imageIds)
|
ToolStateManager.clearImageIdToolState(dicomSeries.imageIds)
|
||||||
|
@ -1126,15 +1110,18 @@ export default {
|
||||||
// }
|
// }
|
||||||
// resolve()
|
// resolve()
|
||||||
// })
|
// })
|
||||||
|
this.loading = true
|
||||||
cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex])
|
cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex])
|
||||||
.then(async image => {
|
.then(async image => {
|
||||||
await scope.onFirstImageLoaded(image)
|
await scope.onFirstImageLoaded(image)
|
||||||
|
scope.loading = false
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (error.error && error.error.message) {
|
if (error.error && error.error.message) {
|
||||||
this.$alert(error.error.message)
|
this.$alert(error.error.message)
|
||||||
}
|
}
|
||||||
|
scope.loading = false
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -1208,14 +1195,10 @@ export default {
|
||||||
|
|
||||||
this.stack.firstImageLoading = false
|
this.stack.firstImageLoading = false
|
||||||
this.toolState.dicomInfoVisible = true
|
this.toolState.dicomInfoVisible = true
|
||||||
var instanceId = image.imageId.split('/')[image.imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(image.imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
this.stack.instanceId = instanceId
|
this.stack.instanceId = instanceId
|
||||||
this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
|
this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
|
||||||
this.resetWwwc()
|
this.resetWwwc()
|
||||||
|
@ -1281,14 +1264,10 @@ export default {
|
||||||
this.stack.imageRendered = true
|
this.stack.imageRendered = true
|
||||||
// const { element } = e.detail
|
// const { element } = e.detail
|
||||||
var imageId = e.detail.image.imageId
|
var imageId = e.detail.image.imageId
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
if (this.imageId !== instanceId) {
|
if (this.imageId !== instanceId) {
|
||||||
this.getOrientationMarker(e.detail.element)
|
this.getOrientationMarker(e.detail.element)
|
||||||
// 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值
|
// 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值
|
||||||
|
@ -1344,14 +1323,10 @@ export default {
|
||||||
this.activeTool = 1
|
this.activeTool = 1
|
||||||
this.activeToolName = ''
|
this.activeToolName = ''
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') {
|
if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') {
|
||||||
const measureData = {}
|
const measureData = {}
|
||||||
measureData.studyId = this.stack.studyId
|
measureData.studyId = this.stack.studyId
|
||||||
|
@ -1468,14 +1443,10 @@ export default {
|
||||||
var element = cornerstone.getEnabledElement(this.canvas)
|
var element = cornerstone.getEnabledElement(this.canvas)
|
||||||
var viewport = element.viewport
|
var viewport = element.viewport
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
|
|
||||||
var uuid = measurementData.uuid
|
var uuid = measurementData.uuid
|
||||||
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
|
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
|
||||||
|
@ -1533,11 +1504,8 @@ export default {
|
||||||
// 判断有没有标记 获取第一个标记
|
// 判断有没有标记 获取第一个标记
|
||||||
var element = cornerstone.getEnabledElement(this.canvas)
|
var element = cornerstone.getEnabledElement(this.canvas)
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
if (instanceId.includes('?frame=')) {
|
var instanceId = imageInfo.instanceId
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
var idx = this.measureData.findIndex(item => item.InstanceId === instanceId)
|
var idx = this.measureData.findIndex(item => item.InstanceId === instanceId)
|
||||||
var measureData = null
|
var measureData = null
|
||||||
if (idx > -1) {
|
if (idx > -1) {
|
||||||
|
@ -1952,6 +1920,14 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getInstanceInfo(imageId) {
|
||||||
|
const params = {}
|
||||||
|
const searchParams = new URLSearchParams(imageId.split('?')[1])
|
||||||
|
for (const [key, value] of searchParams.entries()) {
|
||||||
|
params[key] = value
|
||||||
|
}
|
||||||
|
return params
|
||||||
|
},
|
||||||
preventDefault(e) {
|
preventDefault(e) {
|
||||||
e.stopImmediatePropagation()
|
e.stopImmediatePropagation()
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
|
|
|
@ -292,6 +292,51 @@
|
||||||
<div class="text">{{ $t('trials:lugano:button:fusion') }}</div>
|
<div class="text">{{ $t('trials:lugano:button:fusion') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
<div class="tool-frame">
|
||||||
|
<!-- 第一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:firstframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(-99999)">
|
||||||
|
<svg-icon icon-class="firstframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 上一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:previousframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(-1)">
|
||||||
|
<svg-icon icon-class="previousframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 播放/暂停 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="clipPlaying?$t('trials:dicom-show:play'):$t('trials:dicom-show:stop')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="toggleClipPlay">
|
||||||
|
<svg-icon :icon-class="clipPlaying?'stop':'play'" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 下一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:nextframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(1)">
|
||||||
|
<svg-icon icon-class="nextframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 最后一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:lastframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(99999)">
|
||||||
|
<svg-icon icon-class="lastframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:speed')" placement="bottom">
|
||||||
|
<select class="select-wrapper" :disabled="clipPlaying" @change="setDicomCanvasfps($event)">
|
||||||
|
<!-- 默认值 -->
|
||||||
|
<option :value="5">{{ $t('trials:dicom-show:default') }}</option>
|
||||||
|
<option :value="5">5</option>
|
||||||
|
<option :value="10">10</option>
|
||||||
|
<option :value="15">15</option>
|
||||||
|
<option :value="20">20</option>
|
||||||
|
<option :value="25">25</option>
|
||||||
|
<option :value="30">30</option>
|
||||||
|
</select>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
|
||||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:reset')" placement="bottom">
|
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:reset')" placement="bottom">
|
||||||
<div class="tool-wrapper">
|
<div class="tool-wrapper">
|
||||||
|
@ -789,7 +834,8 @@ export default {
|
||||||
digitPlaces: 2,
|
digitPlaces: 2,
|
||||||
activeCanvasWW: null,
|
activeCanvasWW: null,
|
||||||
activeCanvasWC: null,
|
activeCanvasWC: null,
|
||||||
activeTaskInfo: {}
|
activeTaskInfo: {},
|
||||||
|
clipPlaying: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -844,6 +890,16 @@ export default {
|
||||||
imageQualityIssues: {
|
imageQualityIssues: {
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler(v) {}
|
handler(v) {}
|
||||||
|
},
|
||||||
|
currentDicomCanvasIndex: {
|
||||||
|
immediate: true,
|
||||||
|
handler(v) {
|
||||||
|
if (this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`] && this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0]) {
|
||||||
|
this.clipPlaying = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].toolState.clipPlaying
|
||||||
|
} else {
|
||||||
|
this.clipPlaying = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -1870,6 +1926,18 @@ export default {
|
||||||
}
|
}
|
||||||
this.activeTool = toolName
|
this.activeTool = toolName
|
||||||
},
|
},
|
||||||
|
// 切换帧
|
||||||
|
scrollPage(i) {
|
||||||
|
this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].scrollPage(i)
|
||||||
|
},
|
||||||
|
// 播放/暂停
|
||||||
|
toggleClipPlay() {
|
||||||
|
this.clipPlaying = !this.clipPlaying
|
||||||
|
this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].toggleClipPlay()
|
||||||
|
},
|
||||||
|
setDicomCanvasfps(event) {
|
||||||
|
this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].setFps(event.target.value)
|
||||||
|
},
|
||||||
// 添加标记
|
// 添加标记
|
||||||
setMeasureData(data) {
|
setMeasureData(data) {
|
||||||
this.$refs['measurementList'].setMeasuredData(data)
|
this.$refs['measurementList'].setMeasuredData(data)
|
||||||
|
@ -2129,7 +2197,7 @@ export default {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-right: 30px;
|
margin-right: 20px;
|
||||||
.icon{
|
.icon{
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid #404040;
|
border: 1px solid #404040;
|
||||||
|
@ -2148,6 +2216,39 @@ export default {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.tool-frame{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
margin-right: 20px;
|
||||||
|
border: 1px solid #404040;
|
||||||
|
.icon{
|
||||||
|
padding: 5px;
|
||||||
|
border-right: 1px solid #404040;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
.svg-icon{
|
||||||
|
font-size:20px;
|
||||||
|
color:#ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.select-wrapper{
|
||||||
|
width: 60px;
|
||||||
|
background-color: black;
|
||||||
|
color: #ddd;
|
||||||
|
border: none;
|
||||||
|
font-size: 13px;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.text{
|
||||||
|
position: relative;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 5px;
|
||||||
|
color: #d0d0d0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
.tool_active{
|
.tool_active{
|
||||||
background-color: #607d8b;
|
background-color: #607d8b;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,42 @@
|
||||||
/>
|
/>
|
||||||
<div class="image-desc">
|
<div class="image-desc">
|
||||||
<div class="flex-div">
|
<div class="flex-div">
|
||||||
|
<div style="display: flex;justify-content: space-between;width:100%;">
|
||||||
<div v-if="!study.IsCriticalSequence">#{{ series.seriesNumber }} </div>
|
<div v-if="!study.IsCriticalSequence">#{{ series.seriesNumber }} </div>
|
||||||
|
<div v-if="series.isExistMutiFrames && series.instanceCount > 1">
|
||||||
|
<el-popover
|
||||||
|
placement="right"
|
||||||
|
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>
|
||||||
|
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-if="series.isDicom && series.prefetchInstanceCount<series.instanceCount && series.modality!== 'SR'">
|
<div v-if="series.isDicom && series.prefetchInstanceCount<series.instanceCount && series.modality!== 'SR'">
|
||||||
<!-- 下载 -->
|
<!-- 下载 -->
|
||||||
<el-tooltip v-if="!series.isLoading" class="item" effect="dark" :content="$t('trials:reading:button:download')" placement="bottom">
|
<el-tooltip v-if="!series.isLoading" class="item" effect="dark" :content="$t('trials:reading:button:download')" placement="bottom">
|
||||||
|
@ -367,6 +402,7 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
async getInitSeries() {
|
async getInitSeries() {
|
||||||
|
console.log('getInitSeries')
|
||||||
var seriesList = []
|
var seriesList = []
|
||||||
var isReadingTaskViewInOrder = parseInt(this.$router.currentRoute.query.isReadingTaskViewInOrder)
|
var isReadingTaskViewInOrder = parseInt(this.$router.currentRoute.query.isReadingTaskViewInOrder)
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
|
@ -647,6 +683,48 @@ export default {
|
||||||
|
|
||||||
store.dispatch('reading/setActiveSeries', series)
|
store.dispatch('reading/setActiveSeries', series)
|
||||||
},
|
},
|
||||||
|
showMultiFrames(studyIndex, series, seriesIndex, instanceInfo) {
|
||||||
|
this.currentSeriesIndex = seriesIndex
|
||||||
|
const imageIds = []
|
||||||
|
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) {
|
||||||
|
for (let j = 0; j < instanceInfo.NumberOfFrames; j++) {
|
||||||
|
const path = `${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}`
|
||||||
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}`)
|
||||||
|
}
|
||||||
|
this.studyIndex = studyIndex
|
||||||
|
this.seriesIndex = seriesIndex
|
||||||
|
this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData
|
||||||
|
var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex]
|
||||||
|
dicomStatck.imageIds = imageIds
|
||||||
|
dicomStatck.imageIdIndex = 0
|
||||||
|
console.log(dicomStatck)
|
||||||
|
this.$emit('loadImageStack', dicomStatck)
|
||||||
|
this.loopLoadStatus = -1
|
||||||
|
series.isLoading = true
|
||||||
|
var isAddToTakPool = false
|
||||||
|
if (this.showSeriesList.includes(`${studyIndex}_${seriesIndex}`)) {
|
||||||
|
isAddToTakPool = true
|
||||||
|
} else {
|
||||||
|
this.showSeriesList.push(`${studyIndex}_${seriesIndex}`)
|
||||||
|
}
|
||||||
|
if (!isAddToTakPool) {
|
||||||
|
var priority = parseInt(new Date().getTime())
|
||||||
|
series.imageIds.map((imageId) => {
|
||||||
|
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, studyIndex: studyIndex, seriesIndex: seriesIndex, visitTaskId: series.visitTaskId, priority })
|
||||||
|
})
|
||||||
|
if (this.imageList.length > 0) {
|
||||||
|
this.loopLoadStatus = 0
|
||||||
|
this.loopLoad()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
requestPoolManager.changePriority(series.seriesId)
|
||||||
|
}
|
||||||
|
|
||||||
|
DicomEvent.$emit('loadMeasurementList', { visitTaskId: this.visitTaskId, taskBlindName: this.taskBlindName })
|
||||||
|
},
|
||||||
setSeriesActive(obj) {
|
setSeriesActive(obj) {
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
if (idx === -1) return
|
if (idx === -1) return
|
||||||
|
@ -936,6 +1014,7 @@ export default {
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/deep/.el-collapse{
|
/deep/.el-collapse{
|
||||||
|
@ -986,5 +1065,29 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.instance_frame_wrapper{
|
||||||
|
min-width: 120px;
|
||||||
|
background-color: #2c2c2c;
|
||||||
|
border: 1px solid #2c2c2c;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.frame_content{
|
||||||
|
height: 50px;
|
||||||
|
padding: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
color: #ddd;
|
||||||
|
font-size: 12px;
|
||||||
|
border: 1px solid #404040;
|
||||||
|
}
|
||||||
|
.frame_content:hover {
|
||||||
|
/* font-weight: bold; */
|
||||||
|
/* box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); */
|
||||||
|
cursor: pointer;
|
||||||
|
/* color: #428bca; */
|
||||||
|
border-color: #213a54 !important;
|
||||||
|
background-color: #213a54;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -99,8 +99,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-instance">
|
<div class="info-instance">
|
||||||
<div v-show="dicomInfo.location">Location: {{ dicomInfo.location }}</div>
|
<div v-if="dicomInfo.location">Location: {{ `${Number(dicomInfo.location).toFixed(digitPlaces)} mm` }}</div>
|
||||||
<div v-show="dicomInfo.thick">Slice Thickness: {{ dicomInfo.thick }}mm</div>
|
<div v-show="dicomInfo.thick">Slice Thickness: {{ `${dicomInfo.thick} mm` }}</div>
|
||||||
<div v-show="dicomInfo.wwwc">WW/WL: {{ dicomInfo.wwwc }}</div>
|
<div v-show="dicomInfo.wwwc">WW/WL: {{ dicomInfo.wwwc }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -220,7 +220,8 @@ export default {
|
||||||
visitTaskId: '',
|
visitTaskId: '',
|
||||||
taskBlindName: '',
|
taskBlindName: '',
|
||||||
frame: null,
|
frame: null,
|
||||||
imageRendered: false
|
imageRendered: false,
|
||||||
|
isExistsClinicalData: false
|
||||||
// preventCache: true
|
// preventCache: true
|
||||||
},
|
},
|
||||||
dicomInfo: {
|
dicomInfo: {
|
||||||
|
@ -330,6 +331,7 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
console.log(cornerstoneTools)
|
||||||
this.subjectCode = this.$router.currentRoute.query.subjectCode
|
this.subjectCode = this.$router.currentRoute.query.subjectCode
|
||||||
document.addEventListener('mouseup', () => {
|
document.addEventListener('mouseup', () => {
|
||||||
this.sliderMouseup()
|
this.sliderMouseup()
|
||||||
|
@ -373,10 +375,10 @@ export default {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// this.canvas.addEventListener(
|
this.canvas.addEventListener(
|
||||||
// 'cornerstonetoolsmeasurementremoved',
|
'cornerstonetoolsmeasurementremoved',
|
||||||
// this.onMeasurementremoved
|
this.onMeasurementremoved
|
||||||
// )
|
)
|
||||||
// EVENTS.MOUSE_UP
|
// EVENTS.MOUSE_UP
|
||||||
this.canvas.addEventListener('cornerstonetoolsmouseup', this.mouseUp)
|
this.canvas.addEventListener('cornerstonetoolsmouseup', this.mouseUp)
|
||||||
this.canvas.addEventListener('cornerstonetoolsmousedown', this.mouseDown)
|
this.canvas.addEventListener('cornerstonetoolsmousedown', this.mouseDown)
|
||||||
|
@ -477,7 +479,6 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
goViewer(e) {
|
goViewer(e) {
|
||||||
console.log('goViewer')
|
|
||||||
console.log(this.$refs['sliderBox'].clientHeight)
|
console.log(this.$refs['sliderBox'].clientHeight)
|
||||||
var height = e.offsetY * 100 / this.$refs['sliderBox'].clientHeight
|
var height = e.offsetY * 100 / this.$refs['sliderBox'].clientHeight
|
||||||
this.height = height
|
this.height = height
|
||||||
|
@ -566,6 +567,7 @@ export default {
|
||||||
showCancelButton: false,
|
showCancelButton: false,
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
||||||
}).catch(() => {})
|
}).catch(() => {})
|
||||||
e.stopImmediatePropagation()
|
e.stopImmediatePropagation()
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
|
@ -651,7 +653,7 @@ export default {
|
||||||
if (PX < 0) return
|
if (PX < 0) return
|
||||||
if (PX > boxHeight) return
|
if (PX > boxHeight) return
|
||||||
var height = PX * 100 / boxHeight
|
var height = PX * 100 / boxHeight
|
||||||
var index = Math.trunc(this.stack.imageIds.length * this.height / 100)
|
var index = Math.trunc(this.stack.imageIds.length * height / 100)
|
||||||
index = index > this.stack.imageIds.length ? this.stack.imageIds.length : index < 0 ? 0 : index
|
index = index > this.stack.imageIds.length ? this.stack.imageIds.length : index < 0 ? 0 : index
|
||||||
// if (!cornerstone.imageCache.getImageLoadObject(this.stack.imageIds[index])) return
|
// if (!cornerstone.imageCache.getImageLoadObject(this.stack.imageIds[index])) return
|
||||||
this.height = height
|
this.height = height
|
||||||
|
@ -663,6 +665,7 @@ export default {
|
||||||
this.sliderInfo.isMove = false
|
this.sliderInfo.isMove = false
|
||||||
},
|
},
|
||||||
getMeasureData() {
|
getMeasureData() {
|
||||||
|
console.log('getMeasureData')
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
|
@ -736,14 +739,10 @@ export default {
|
||||||
getToolStateInfo(e) {
|
getToolStateInfo(e) {
|
||||||
const { element, currentPoints, image, viewport } = e.detail
|
const { element, currentPoints, image, viewport } = e.detail
|
||||||
var imageId = image.imageId
|
var imageId = image.imageId
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
for (var m = 0; m < this.measuredTools.length; m++) {
|
for (var m = 0; m < this.measuredTools.length; m++) {
|
||||||
var toolType = this.measuredTools[m]
|
var toolType = this.measuredTools[m]
|
||||||
|
@ -771,6 +770,7 @@ export default {
|
||||||
measureData.data = toolState.data[i]
|
measureData.data = toolState.data[i]
|
||||||
measureData.type = toolType
|
measureData.type = toolType
|
||||||
measureData.thick = this.dicomInfo.thick
|
measureData.thick = this.dicomInfo.thick
|
||||||
|
measureData.location = this.dicomInfo.location
|
||||||
var uuid = toolState.data[i].uuid
|
var uuid = toolState.data[i].uuid
|
||||||
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
|
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
|
||||||
if (idx > -1) {
|
if (idx > -1) {
|
||||||
|
@ -866,6 +866,7 @@ export default {
|
||||||
renderMeasuredData(e) {
|
renderMeasuredData(e) {
|
||||||
this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0
|
this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
|
||||||
|
if (idx === -1) return
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
const { element } = e.detail
|
const { element } = e.detail
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
|
@ -904,11 +905,8 @@ export default {
|
||||||
if (this.readingTaskState >= 2) return
|
if (this.readingTaskState >= 2) return
|
||||||
var element = cornerstone.getEnabledElement(this.canvas)
|
var element = cornerstone.getEnabledElement(this.canvas)
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
if (instanceId.includes('?frame=')) {
|
var instanceId = imageInfo.instanceId
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId && i.IsCurrentTask && i.ReadingTaskState < 2)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId && i.IsCurrentTask && i.ReadingTaskState < 2)
|
||||||
if (idx === -1) return
|
if (idx === -1) return
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
|
@ -968,18 +966,13 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async mouseClick(e) {
|
mouseClick(e) {
|
||||||
const { element, currentPoints, image, viewport } = e.detail
|
const { element, currentPoints, image, viewport } = e.detail
|
||||||
var imageId = image.imageId
|
var imageId = image.imageId
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
|
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
for (let t = 0; t < this.measuredTools.length; t++) {
|
for (let t = 0; t < this.measuredTools.length; t++) {
|
||||||
var toolType = this.measuredTools[t]
|
var toolType = this.measuredTools[t]
|
||||||
|
@ -1010,6 +1003,7 @@ export default {
|
||||||
measureData.data = toolState.data[i]
|
measureData.data = toolState.data[i]
|
||||||
measureData.type = toolType
|
measureData.type = toolType
|
||||||
measureData.thick = this.dicomInfo.thick
|
measureData.thick = this.dicomInfo.thick
|
||||||
|
measureData.location = this.dicomInfo.location
|
||||||
measureData.ww = Math.round(viewport.voi.windowWidth)
|
measureData.ww = Math.round(viewport.voi.windowWidth)
|
||||||
measureData.wc = Math.round(viewport.voi.windowCenter)
|
measureData.wc = Math.round(viewport.voi.windowCenter)
|
||||||
measureData.data.active = false
|
measureData.data.active = false
|
||||||
|
@ -1049,6 +1043,7 @@ export default {
|
||||||
this.stack.seriesIndex = dicomSeries.seriesIndex
|
this.stack.seriesIndex = dicomSeries.seriesIndex
|
||||||
this.stack.sliceThickness = dicomSeries.sliceThickness
|
this.stack.sliceThickness = dicomSeries.sliceThickness
|
||||||
this.stack.instanceCount = dicomSeries.instanceCount
|
this.stack.instanceCount = dicomSeries.instanceCount
|
||||||
|
this.stack.isExistsClinicalData = dicomSeries.isExistsClinicalData
|
||||||
// this.measuredData = dicomSeries.measuredData
|
// this.measuredData = dicomSeries.measuredData
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === dicomSeries.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === dicomSeries.visitTaskId)
|
||||||
this.stack.visitTaskNum = this.visitTaskList[idx].VisitTaskNum
|
this.stack.visitTaskNum = this.visitTaskList[idx].VisitTaskNum
|
||||||
|
@ -1058,18 +1053,15 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.disabledMarks = []
|
this.disabledMarks = []
|
||||||
}
|
}
|
||||||
|
|
||||||
this.maxVistNum = this.visitTaskList[this.visitTaskList.length - 1].VisitTaskNum
|
this.maxVistNum = this.visitTaskList[this.visitTaskList.length - 1].VisitTaskNum
|
||||||
this.minVistNum = this.visitTaskList[0].VisitTaskNum
|
this.minVistNum = this.visitTaskList[0].VisitTaskNum
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
const imageId = this.stack.imageIds[this.stack.currentImageIdIndex]
|
const imageId = this.stack.imageIds[this.stack.currentImageIdIndex]
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
this.stack.instanceId = instanceId
|
this.stack.instanceId = instanceId
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
ToolStateManager.clearImageIdToolState(dicomSeries.imageIds)
|
ToolStateManager.clearImageIdToolState(dicomSeries.imageIds)
|
||||||
|
@ -1093,22 +1085,25 @@ export default {
|
||||||
// }
|
// }
|
||||||
// resolve()
|
// resolve()
|
||||||
// })
|
// })
|
||||||
|
this.loading = true
|
||||||
cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex])
|
cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex])
|
||||||
.then(image => {
|
.then(async image => {
|
||||||
scope.onFirstImageLoaded(image)
|
await scope.onFirstImageLoaded(image)
|
||||||
|
scope.loading = false
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (error.error && error.error.message) {
|
if (error.error && error.error.message) {
|
||||||
this.$alert(error.error.message)
|
this.$alert(error.error.message)
|
||||||
}
|
}
|
||||||
|
scope.loading = false
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
onFirstImageLoaded(image) {
|
onFirstImageLoaded(image) {
|
||||||
console.log('onFirstImageLoaded')
|
console.log('onFirstImageLoaded')
|
||||||
|
return new Promise(async resolve => {
|
||||||
const element = this.$refs.canvas
|
const element = this.$refs.canvas
|
||||||
var viewport = cornerstone.getDefaultViewportForImage(this.canvas, image)
|
var viewport = cornerstone.getDefaultViewportForImage(this.canvas, image)
|
||||||
cornerstone.displayImage(this.canvas, image, viewport)
|
cornerstone.displayImage(this.canvas, image, viewport)
|
||||||
|
@ -1175,17 +1170,15 @@ export default {
|
||||||
|
|
||||||
this.stack.firstImageLoading = false
|
this.stack.firstImageLoading = false
|
||||||
this.toolState.dicomInfoVisible = true
|
this.toolState.dicomInfoVisible = true
|
||||||
var instanceId = image.imageId.split('/')[image.imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(image.imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
this.stack.instanceId = instanceId
|
this.stack.instanceId = instanceId
|
||||||
this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
|
this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
|
||||||
this.resetWwwc()
|
this.resetWwwc()
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
onNewImage(e) {
|
onNewImage(e) {
|
||||||
console.log('cornerstonenewimage')
|
console.log('cornerstonenewimage')
|
||||||
|
@ -1246,14 +1239,10 @@ export default {
|
||||||
this.stack.imageRendered = true
|
this.stack.imageRendered = true
|
||||||
// const { element } = e.detail
|
// const { element } = e.detail
|
||||||
var imageId = e.detail.image.imageId
|
var imageId = e.detail.image.imageId
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
if (this.imageId !== instanceId) {
|
if (this.imageId !== instanceId) {
|
||||||
this.getOrientationMarker(e.detail.element)
|
this.getOrientationMarker(e.detail.element)
|
||||||
// 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值
|
// 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值
|
||||||
|
@ -1290,20 +1279,11 @@ export default {
|
||||||
if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {
|
if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const row = getOrientationString(imagePlane.rowCosines)
|
const row = getOrientationString(imagePlane.rowCosines)
|
||||||
const column = getOrientationString(imagePlane.columnCosines)
|
const column = getOrientationString(imagePlane.columnCosines)
|
||||||
const oppositeRow = invertOrientationString(row)
|
const oppositeRow = invertOrientationString(row)
|
||||||
const oppositeColumn = invertOrientationString(column)
|
const oppositeColumn = invertOrientationString(column)
|
||||||
const markers = {
|
|
||||||
top: oppositeColumn,
|
|
||||||
bottom: column,
|
|
||||||
left: oppositeRow,
|
|
||||||
right: row
|
|
||||||
}
|
|
||||||
if (!markers) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.orientationMarkers = [oppositeColumn, row, column, oppositeRow]
|
this.orientationMarkers = [oppositeColumn, row, column, oppositeRow]
|
||||||
this.originalMarkers = [oppositeColumn, row, column, oppositeRow]
|
this.originalMarkers = [oppositeColumn, row, column, oppositeRow]
|
||||||
this.setMarkers()
|
this.setMarkers()
|
||||||
|
@ -1318,14 +1298,10 @@ export default {
|
||||||
this.activeTool = 1
|
this.activeTool = 1
|
||||||
this.activeToolName = ''
|
this.activeToolName = ''
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') {
|
if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') {
|
||||||
const measureData = {}
|
const measureData = {}
|
||||||
measureData.studyId = this.stack.studyId
|
measureData.studyId = this.stack.studyId
|
||||||
|
@ -1335,6 +1311,7 @@ export default {
|
||||||
measureData.data = e.detail.measurementData
|
measureData.data = e.detail.measurementData
|
||||||
measureData.type = e.detail.toolName
|
measureData.type = e.detail.toolName
|
||||||
measureData.thick = this.dicomInfo.thick
|
measureData.thick = this.dicomInfo.thick
|
||||||
|
measureData.location = this.dicomInfo.location
|
||||||
measureData.ww = Math.round(viewport.voi.windowWidth)
|
measureData.ww = Math.round(viewport.voi.windowWidth)
|
||||||
measureData.wc = Math.round(viewport.voi.windowCenter)
|
measureData.wc = Math.round(viewport.voi.windowCenter)
|
||||||
|
|
||||||
|
@ -1351,6 +1328,7 @@ export default {
|
||||||
measureData.data = e.detail.measurementData
|
measureData.data = e.detail.measurementData
|
||||||
measureData.type = e.detail.toolName
|
measureData.type = e.detail.toolName
|
||||||
measureData.thick = this.dicomInfo.thick
|
measureData.thick = this.dicomInfo.thick
|
||||||
|
measureData.location = this.dicomInfo.location
|
||||||
measureData.ww = Math.round(viewport.voi.windowWidth)
|
measureData.ww = Math.round(viewport.voi.windowWidth)
|
||||||
measureData.wc = Math.round(viewport.voi.windowCenter)
|
measureData.wc = Math.round(viewport.voi.windowCenter)
|
||||||
const canvas = this.canvas.querySelector('canvas')
|
const canvas = this.canvas.querySelector('canvas')
|
||||||
|
@ -1430,7 +1408,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onMeasurementremoved(e) {
|
onMeasurementremoved(e) {
|
||||||
|
console.log('================移除病灶=================', e)
|
||||||
},
|
},
|
||||||
onMeasurementmodified(e) {
|
onMeasurementmodified(e) {
|
||||||
// 移动
|
// 移动
|
||||||
|
@ -1440,14 +1418,10 @@ export default {
|
||||||
var element = cornerstone.getEnabledElement(this.canvas)
|
var element = cornerstone.getEnabledElement(this.canvas)
|
||||||
var viewport = element.viewport
|
var viewport = element.viewport
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
var frame = null
|
var instanceId = imageInfo.instanceId
|
||||||
if (instanceId.includes('?frame=')) {
|
var frame = imageInfo.frame
|
||||||
frame = instanceId.split('?frame=')[1]
|
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
|
|
||||||
var uuid = measurementData.uuid
|
var uuid = measurementData.uuid
|
||||||
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
|
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
|
||||||
|
@ -1465,6 +1439,7 @@ export default {
|
||||||
measureData.data = measurementData
|
measureData.data = measurementData
|
||||||
measureData.type = toolType
|
measureData.type = toolType
|
||||||
measureData.thick = this.dicomInfo.thick
|
measureData.thick = this.dicomInfo.thick
|
||||||
|
measureData.location = this.dicomInfo.location
|
||||||
measureData.ww = Math.round(viewport.voi.windowWidth)
|
measureData.ww = Math.round(viewport.voi.windowWidth)
|
||||||
measureData.wc = Math.round(viewport.voi.windowCenter)
|
measureData.wc = Math.round(viewport.voi.windowCenter)
|
||||||
measureData.data.active = false
|
measureData.data.active = false
|
||||||
|
@ -1504,11 +1479,8 @@ export default {
|
||||||
// 判断有没有标记 获取第一个标记
|
// 判断有没有标记 获取第一个标记
|
||||||
var element = cornerstone.getEnabledElement(this.canvas)
|
var element = cornerstone.getEnabledElement(this.canvas)
|
||||||
var { imageId } = element.image
|
var { imageId } = element.image
|
||||||
var instanceId = imageId.split('/')[imageId.split('/').length - 1]
|
const imageInfo = this.getInstanceInfo(imageId)
|
||||||
if (instanceId.includes('?frame=')) {
|
var instanceId = imageInfo.instanceId
|
||||||
instanceId = instanceId.split('?frame=')[0]
|
|
||||||
}
|
|
||||||
instanceId = instanceId.split('.')[0]
|
|
||||||
var idx = this.measureData.findIndex(item => item.InstanceId === instanceId)
|
var idx = this.measureData.findIndex(item => item.InstanceId === instanceId)
|
||||||
var measureData = null
|
var measureData = null
|
||||||
if (idx > -1) {
|
if (idx > -1) {
|
||||||
|
@ -1923,6 +1895,14 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getInstanceInfo(imageId) {
|
||||||
|
const params = {}
|
||||||
|
const searchParams = new URLSearchParams(imageId.split('?')[1])
|
||||||
|
for (const [key, value] of searchParams.entries()) {
|
||||||
|
params[key] = value
|
||||||
|
}
|
||||||
|
return params
|
||||||
|
},
|
||||||
preventDefault(e) {
|
preventDefault(e) {
|
||||||
e.stopImmediatePropagation()
|
e.stopImmediatePropagation()
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
|
|
|
@ -280,6 +280,51 @@
|
||||||
<div class="text">{{ tool.text }}</div>
|
<div class="text">{{ tool.text }}</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tool-frame">
|
||||||
|
<!-- 第一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:firstframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(-99999)">
|
||||||
|
<svg-icon icon-class="firstframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 上一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:previousframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(-1)">
|
||||||
|
<svg-icon icon-class="previousframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 播放/暂停 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="clipPlaying?$t('trials:dicom-show:play'):$t('trials:dicom-show:stop')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="toggleClipPlay">
|
||||||
|
<svg-icon :icon-class="clipPlaying?'stop':'play'" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 下一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:nextframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(1)">
|
||||||
|
<svg-icon icon-class="nextframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<!-- 最后一帧 -->
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:lastframe')" placement="bottom">
|
||||||
|
<div class="icon" @click.prevent="scrollPage(99999)">
|
||||||
|
<svg-icon icon-class="lastframe" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicom-show:speed')" placement="bottom">
|
||||||
|
<select class="select-wrapper" @change="setDicomCanvasfps($event)" :disabled="clipPlaying">
|
||||||
|
<!-- 默认值 -->
|
||||||
|
<option :value="5">{{ $t('trials:dicom-show:default') }}</option>
|
||||||
|
<option :value="5">5</option>
|
||||||
|
<option :value="10">10</option>
|
||||||
|
<option :value="15">15</option>
|
||||||
|
<option :value="20">20</option>
|
||||||
|
<option :value="25">25</option>
|
||||||
|
<option :value="30">30</option>
|
||||||
|
</select>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
<el-tooltip class="item" effect="dark" :content="`${$t('trials:dicom-show:Eraser')}`" placement="bottom">
|
<el-tooltip class="item" effect="dark" :content="`${$t('trials:dicom-show:Eraser')}`" placement="bottom">
|
||||||
<div class="tool-wrapper">
|
<div class="tool-wrapper">
|
||||||
<div
|
<div
|
||||||
|
@ -552,7 +597,8 @@ export default {
|
||||||
activeName: '1',
|
activeName: '1',
|
||||||
customWwcTpl: [],
|
customWwcTpl: [],
|
||||||
isFullscreen: false,
|
isFullscreen: false,
|
||||||
manualsDialog: { visible: false }
|
manualsDialog: { visible: false },
|
||||||
|
clipPlaying: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -571,6 +617,16 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
currentDicomCanvasIndex: {
|
||||||
|
immediate: true,
|
||||||
|
handler(v) {
|
||||||
|
if (this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`] && this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0]) {
|
||||||
|
this.clipPlaying = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].toolState.clipPlaying
|
||||||
|
} else {
|
||||||
|
this.clipPlaying = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -1423,6 +1479,18 @@ export default {
|
||||||
}
|
}
|
||||||
this.activeTool = toolName
|
this.activeTool = toolName
|
||||||
},
|
},
|
||||||
|
// 切换帧
|
||||||
|
scrollPage(i) {
|
||||||
|
this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].scrollPage(i)
|
||||||
|
},
|
||||||
|
// 播放/暂停
|
||||||
|
toggleClipPlay() {
|
||||||
|
this.clipPlaying = !this.clipPlaying
|
||||||
|
this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].toggleClipPlay()
|
||||||
|
},
|
||||||
|
setDicomCanvasfps(event) {
|
||||||
|
this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].setFps(event.target.value)
|
||||||
|
},
|
||||||
// 添加标记
|
// 添加标记
|
||||||
setMeasureData(data) {
|
setMeasureData(data) {
|
||||||
this.$refs['measurementList'].setMeasuredData(data)
|
this.$refs['measurementList'].setMeasuredData(data)
|
||||||
|
@ -1555,7 +1623,7 @@ export default {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-right: 30px;
|
margin-right: 20px;
|
||||||
.icon{
|
.icon{
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid #404040;
|
border: 1px solid #404040;
|
||||||
|
@ -1574,6 +1642,39 @@ export default {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.tool-frame{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
margin-right: 20px;
|
||||||
|
border: 1px solid #404040;
|
||||||
|
.icon{
|
||||||
|
padding: 5px;
|
||||||
|
border-right: 1px solid #404040;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
.svg-icon{
|
||||||
|
font-size:20px;
|
||||||
|
color:#ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.select-wrapper{
|
||||||
|
width: 60px;
|
||||||
|
background-color: black;
|
||||||
|
color: #ddd;
|
||||||
|
border: none;
|
||||||
|
font-size: 13px;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.text{
|
||||||
|
position: relative;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 5px;
|
||||||
|
color: #d0d0d0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
.tool_active{
|
.tool_active{
|
||||||
background-color: #607d8b;
|
background-color: #607d8b;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,42 @@
|
||||||
/>
|
/>
|
||||||
<div class="image-desc">
|
<div class="image-desc">
|
||||||
<div class="flex-div">
|
<div class="flex-div">
|
||||||
|
<div style="display: flex;justify-content: space-between;width:100%;">
|
||||||
<div v-if="!study.IsCriticalSequence">#{{ series.seriesNumber }} </div>
|
<div v-if="!study.IsCriticalSequence">#{{ series.seriesNumber }} </div>
|
||||||
|
<div v-if="series.isExistMutiFrames && series.instanceCount > 1">
|
||||||
|
<el-popover
|
||||||
|
placement="right"
|
||||||
|
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>
|
||||||
|
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-if="series.isDicom && series.prefetchInstanceCount<series.instanceCount && series.modality!== 'SR'">
|
<div v-if="series.isDicom && series.prefetchInstanceCount<series.instanceCount && series.modality!== 'SR'">
|
||||||
<!-- 下载 -->
|
<!-- 下载 -->
|
||||||
<el-tooltip v-if="!series.isLoading" class="item" effect="dark" :content="$t('trials:reading:button:download')" placement="bottom">
|
<el-tooltip v-if="!series.isLoading" class="item" effect="dark" :content="$t('trials:reading:button:download')" placement="bottom">
|
||||||
|
@ -638,6 +673,48 @@ export default {
|
||||||
|
|
||||||
store.dispatch('reading/setActiveSeries', series)
|
store.dispatch('reading/setActiveSeries', series)
|
||||||
},
|
},
|
||||||
|
showMultiFrames(studyIndex, series, seriesIndex, instanceInfo) {
|
||||||
|
this.currentSeriesIndex = seriesIndex
|
||||||
|
const imageIds = []
|
||||||
|
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) {
|
||||||
|
for (let j = 0; j < instanceInfo.NumberOfFrames; j++) {
|
||||||
|
const path = `${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}`
|
||||||
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}`)
|
||||||
|
}
|
||||||
|
this.studyIndex = studyIndex
|
||||||
|
this.seriesIndex = seriesIndex
|
||||||
|
this.studyList[studyIndex].SeriesList[seriesIndex].measureData = this.measureData
|
||||||
|
var dicomStatck = this.studyList[studyIndex].SeriesList[seriesIndex]
|
||||||
|
dicomStatck.imageIds = imageIds
|
||||||
|
dicomStatck.imageIdIndex = 0
|
||||||
|
console.log(dicomStatck)
|
||||||
|
this.$emit('loadImageStack', dicomStatck)
|
||||||
|
this.loopLoadStatus = -1
|
||||||
|
series.isLoading = true
|
||||||
|
var isAddToTakPool = false
|
||||||
|
if (this.showSeriesList.includes(`${studyIndex}_${seriesIndex}`)) {
|
||||||
|
isAddToTakPool = true
|
||||||
|
} else {
|
||||||
|
this.showSeriesList.push(`${studyIndex}_${seriesIndex}`)
|
||||||
|
}
|
||||||
|
if (!isAddToTakPool) {
|
||||||
|
var priority = parseInt(new Date().getTime())
|
||||||
|
series.imageIds.map((imageId) => {
|
||||||
|
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, studyIndex: studyIndex, seriesIndex: seriesIndex, visitTaskId: series.visitTaskId, priority })
|
||||||
|
})
|
||||||
|
if (this.imageList.length > 0) {
|
||||||
|
this.loopLoadStatus = 0
|
||||||
|
this.loopLoad()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
requestPoolManager.changePriority(series.seriesId)
|
||||||
|
}
|
||||||
|
|
||||||
|
DicomEvent.$emit('loadMeasurementList', { visitTaskId: this.visitTaskId, taskBlindName: this.taskBlindName })
|
||||||
|
},
|
||||||
setSeriesActive(obj) {
|
setSeriesActive(obj) {
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
if (idx === -1) return
|
if (idx === -1) return
|
||||||
|
@ -977,3 +1054,28 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
<style>
|
||||||
|
.instance_frame_wrapper{
|
||||||
|
min-width: 120px;
|
||||||
|
background-color: #2c2c2c;
|
||||||
|
border: 1px solid #2c2c2c;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.frame_content{
|
||||||
|
height: 50px;
|
||||||
|
padding: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
color: #ddd;
|
||||||
|
font-size: 12px;
|
||||||
|
border: 1px solid #404040;
|
||||||
|
}
|
||||||
|
.frame_content:hover {
|
||||||
|
/* font-weight: bold; */
|
||||||
|
/* box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); */
|
||||||
|
cursor: pointer;
|
||||||
|
/* color: #428bca; */
|
||||||
|
border-color: #213a54 !important;
|
||||||
|
background-color: #213a54;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue