阅片配置更改及影像上传页面预览规则更改
continuous-integration/drone/push Build is passing Details

uat_us
caiyiling 2024-07-25 09:06:53 +08:00
parent 80c0bfb694
commit a71c6e92dc
9 changed files with 468 additions and 377 deletions

View File

@ -3712,7 +3712,7 @@ export function addOrUpdateTrialSiteDicomAE(param) {
export function deleteTrialSiteDicomAE(id) { export function deleteTrialSiteDicomAE(id) {
return request({ return request({
url: `/TrialSiteDicomAE/deleteTrialSiteDicomAE/${id}`, url: `/TrialSiteDicomAE/deleteTrialSiteDicomAE/${id}`,
method: 'delete', method: 'delete'
}) })
} }
// 获取项目中dicomAE配置 // 获取项目中dicomAE配置
@ -3743,7 +3743,7 @@ export function addOrUpdateDicomAE(data) {
export function testSCPServerConnect(id) { export function testSCPServerConnect(id) {
return request({ return request({
url: `/TrialDicomAE/testSCPServerConnect/${id}`, url: `/TrialDicomAE/testSCPServerConnect/${id}`,
method: 'get', method: 'get'
}) })
} }
// dicomAE配置签名 // dicomAE配置签名

View File

@ -192,7 +192,8 @@ export default {
loading: false, loading: false,
imageList: [], imageList: [],
showSeriesList: [], showSeriesList: [],
currentLoadIns: [] currentLoadIns: [],
isFromCRCUpload: false
} }
}, },
created: function() { created: function() {
@ -207,6 +208,7 @@ export default {
changeURLStatic('TokenKey', '') changeURLStatic('TokenKey', '')
} }
this.studyId = this.$router.currentRoute.query.studyId this.studyId = this.$router.currentRoute.query.studyId
this.isFromCRCUpload = !!this.$router.currentRoute.query.isFromCRCUpload
if (this.type === 'Series') { if (this.type === 'Series') {
// this.initStudy() // this.initStudy()
this.showDelete = parseInt(this.$router.currentRoute.query.showDelete) this.showDelete = parseInt(this.$router.currentRoute.query.showDelete)
@ -231,22 +233,20 @@ export default {
}) })
}, },
methods: { methods: {
loadStudy() { async loadStudy() {
var scope = this const data = await getStudyInfo(this.studyId)
getStudyInfo(scope.studyId).then(data => {
if (data.IsSuccess) { if (data.IsSuccess) {
scope.studyCode = data.Result.StudyCode this.studyCode = data.Result.StudyCode
scope.modality = data.Result.Modalities this.modality = data.Result.Modalities
scope.seriesCount = data.Result.SeriesCount this.seriesCount = data.Result.SeriesCount
scope.description = data.Result.Description this.description = data.Result.Description
var url = `/series/list/${scope.studyId}` const url = `/series/list/${this.studyId}`
scope.getSeriesList(url) this.getSeriesList(url)
} }
})
}, },
getSeriesList(url) { async getSeriesList(url) {
var scope = this try {
getSeriesList(url).then(data => { const data = await getSeriesList(url)
if (data.IsSuccess) { if (data.IsSuccess) {
const { Result } = data const { Result } = data
var seriesList = [] var seriesList = []
@ -255,15 +255,15 @@ export default {
item.InstanceInfoList.forEach(i => { item.InstanceInfoList.forEach(i => {
if (i.NumberOfFrames && i.NumberOfFrames > 1) { if (i.NumberOfFrames && i.NumberOfFrames > 1) {
for (let j = 0; j < i.NumberOfFrames; j++) { for (let j = 0; j < i.NumberOfFrames; j++) {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&seriesIndex=${index}`) imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&seriesIndex=${index}`)
} }
} else { } else {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&seriesIndex=${index}`) imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&seriesIndex=${index}`)
} }
}) })
var subjectVisitId = scope.$router.currentRoute.query.subjectVisitId var subjectVisitId = this.$router.currentRoute.query.subjectVisitId
var studyId = scope.$router.currentRoute.query.studyId var studyId = this.$router.currentRoute.query.studyId
var trialId = scope.$router.currentRoute.query.trialId var trialId = this.$router.currentRoute.query.trialId
seriesList.push({ seriesList.push({
trialId, trialId,
subjectVisitId, subjectVisitId,
@ -278,28 +278,30 @@ export default {
description: item.Description, description: item.Description,
isReading: item.IsReading, isReading: item.IsReading,
isDeleted: item.IsDeleted, isDeleted: item.IsDeleted,
previewImageUrl: item.ImageResizePath ? scope.OSSclientConfig.basePath + item.ImageResizePath : `/api/series/preview/${item.Id}`, previewImageUrl: item.ImageResizePath ? this.OSSclientConfig.basePath + item.ImageResizePath : `/api/series/preview/${item.Id}`,
instanceCount: item.InstanceCount, instanceCount: item.InstanceCount,
prefetchInstanceCount: 0, prefetchInstanceCount: 0,
hasLabel: item.HasLabel, hasLabel: item.HasLabel,
keySeries: item.KeySeries, keySeries: item.KeySeries,
tpCode: scope.tpCode, tpCode: this.tpCode,
loadStatus: false, loadStatus: false,
imageloadedArr: [], imageloadedArr: [],
isExistMutiFrames: item.IsExistMutiFrames isExistMutiFrames: item.IsExistMutiFrames
}) })
}) })
scope.seriesList = seriesList this.seriesList = seriesList
if (scope.seriesList.length > 0) { if (this.seriesList.length > 0) {
this.loadAllImages() this.loadAllImages()
scope.$refs.dicomViewer.loadImageStack(scope.seriesList[0], scope.labels[scope.tpCode]) this.$refs.dicomViewer.loadImageStack(this.seriesList[0], this.labels[this.tpCode])
scope.firstInstanceId = scope.seriesList[0].imageIds[0] this.firstInstanceId = this.seriesList[0].imageIds[0]
} }
} }
}) } catch (e) {
console.log(e)
}
}, },
initSeries() { async initSeries() {
var scope = this try {
this.studyCode = this.$router.currentRoute.query.studyCode this.studyCode = this.$router.currentRoute.query.studyCode
this.modality = this.$router.currentRoute.query.modality this.modality = this.$router.currentRoute.query.modality
this.seriesCount = 1 this.seriesCount = 1
@ -309,7 +311,7 @@ export default {
var subjectVisitId = this.$router.currentRoute.query.subjectVisitId var subjectVisitId = this.$router.currentRoute.query.subjectVisitId
var studyId = this.$router.currentRoute.query.studyId var studyId = this.$router.currentRoute.query.studyId
var trialId = this.$router.currentRoute.query.trialId var trialId = this.$router.currentRoute.query.trialId
getInstanceList(seriesId).then(res => { const res = await getInstanceList(seriesId)
if (!res.Result || (res.Result && res.Result.length === 0)) return if (!res.Result || (res.Result && res.Result.length === 0)) return
var seriesInstanceUid = res.Result[0].SeriesInstanceUid var seriesInstanceUid = res.Result[0].SeriesInstanceUid
var sliceThickness = res.Result[0].SliceThickness var sliceThickness = res.Result[0].SliceThickness
@ -344,7 +346,7 @@ export default {
description: this.description, description: this.description,
isReading, isReading,
isDeleted, isDeleted,
previewImageUrl: res.OtherInfo.ImageResizePath ? scope.OSSclientConfig.basePath + res.OtherInfo.ImageResizePath : res.OtherInfo.ImageResizePath, previewImageUrl: res.OtherInfo.ImageResizePath ? this.OSSclientConfig.basePath + res.OtherInfo.ImageResizePath : res.OtherInfo.ImageResizePath,
instanceCount: res.Result.length, instanceCount: res.Result.length,
prefetchInstanceCount: 0, prefetchInstanceCount: 0,
loadStatus: false, loadStatus: false,
@ -359,7 +361,9 @@ export default {
this.firstInstanceId = this.seriesList[0].imageIds[0] this.firstInstanceId = this.seriesList[0].imageIds[0]
}) })
} }
}) } catch (e) {
console.log(e)
}
}, },
showSeriesImage(e, seriesIndex, series) { showSeriesImage(e, seriesIndex, series) {
// if (seriesIndex === this.currentSeriesIndex) return // if (seriesIndex === this.currentSeriesIndex) return
@ -372,8 +376,31 @@ export default {
this.currentSeriesIndex = seriesIndex this.currentSeriesIndex = seriesIndex
this.$refs.dicomViewer.loadImageStack(this.seriesList[seriesIndex]) this.$refs.dicomViewer.loadImageStack(this.seriesList[seriesIndex])
if (!series.loadStatus) { if (!series.loadStatus) {
series.isLoading = true
var isAddToTakPool = false
if (this.showSeriesList.includes(`0_${seriesIndex}`)) {
isAddToTakPool = true
} else {
this.showSeriesList.push(`0_${seriesIndex}`)
}
if (!isAddToTakPool) {
var priority = parseInt(new Date().getTime())
if (series.isExistMutiFrames) {
series.instanceInfoList.map(image => {
this.imageList.push({ imageId: image.ImageId, seriesId: series.seriesId, studyIndex: 0, seriesIndex: seriesIndex, priority })
})
} else {
series.imageIds.map(imageId => {
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, studyIndex: 0, seriesIndex: seriesIndex, priority })
})
}
if (this.imageList.length > 0) {
this.loopLoad()
}
} else {
requestPoolManager.changePriority(series.seriesId) requestPoolManager.changePriority(series.seriesId)
} }
}
}, },
showMultiFrames(series, seriesIndex, instanceInfo) { showMultiFrames(series, seriesIndex, instanceInfo) {
this.currentSeriesIndex = seriesIndex this.currentSeriesIndex = seriesIndex
@ -403,8 +430,31 @@ export default {
} }
this.$refs.dicomViewer.loadImageStack(seriesInfo) this.$refs.dicomViewer.loadImageStack(seriesInfo)
if (!series.loadStatus) { if (!series.loadStatus) {
var isAddToTakPool = false
if (this.showSeriesList.includes(`0_${seriesIndex}`)) {
isAddToTakPool = true
} else {
this.showSeriesList.push(`0_${seriesIndex}`)
}
if (!isAddToTakPool) {
var priority = parseInt(new Date().getTime())
if (series.isExistMutiFrames) {
series.instanceInfoList.map(image => {
this.imageList.push({ imageId: image.ImageId, seriesId: series.seriesId, studyIndex: 0, seriesIndex: seriesIndex, priority })
})
} else {
series.imageIds.map((imageId) => {
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, studyIndex: 0, seriesIndex: seriesIndex, priority })
})
}
if (this.imageList.length > 0) {
this.loopLoad()
}
} else {
requestPoolManager.changePriority(series.seriesId) requestPoolManager.changePriority(series.seriesId)
} }
}
}, },
initStudy() { initStudy() {
this.studyCode = this.$router.currentRoute.query.studyCode this.studyCode = this.$router.currentRoute.query.studyCode
@ -415,13 +465,6 @@ export default {
const seriesInfo = JSON.parse(this.$router.currentRoute.query.series) const seriesInfo = JSON.parse(this.$router.currentRoute.query.series)
var seriesList = [] var seriesList = []
const imageIds = [] const imageIds = []
// const scope = this
// seriesInfo.InstanceList.forEach(function(item) {
// imageIds.push(`wadouri:/api/instance/content/${item}`)
// })
// seriesInfo.InstanceList.forEach((id) => {
// imageIds.push(`wadouri:http://123.56.94.154:7000/instance/content/${id}`)
// })
seriesInfo.InstancePathList.forEach((path) => { seriesInfo.InstancePathList.forEach((path) => {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`) imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`)
}) })
@ -451,22 +494,25 @@ export default {
} }
} }
}, },
deleteSeries() { async deleteSeries() {
this.loading = true this.loading = true
var subjectVisitId = this.$router.currentRoute.query.subjectVisitId var subjectVisitId = this.$router.currentRoute.query.subjectVisitId
var studyId = this.$router.currentRoute.query.studyId var studyId = this.$router.currentRoute.query.studyId
var seriesId = this.$router.currentRoute.query.seriesId var seriesId = this.$router.currentRoute.query.seriesId
// trialId, subjectVisitId, studyId, seriesId, state try {
setSeriesStatus(this.trialId, subjectVisitId, studyId, seriesId, 5).then(res => { const res = await setSeriesStatus(this.trialId, subjectVisitId, studyId, seriesId, 5)
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location) window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location)
} }
}).catch(() => { this.loading = false }) } catch (e) {
console.log(e)
this.loading = false
}
}, },
changeReadingStatus(callback, data) { async changeReadingStatus(callback, data) {
let statusStr = '' let statusStr = ''
if (callback) { if (callback) {
statusStr = this.$t('trials:audit:label:setSeriesReading') statusStr = this.$t('trials:audit:label:setSeriesReading')
@ -477,24 +523,30 @@ export default {
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading)) message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading))
this.$confirm(message, { const confirm = await this.$confirm(
distinguishCancelAndClose: true, message,
type: 'warning' {
}).then(() => { type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
const state = data.isReading ? 1 : 2 const state = data.isReading ? 1 : 2
this.loading = true this.loading = true
try {
setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state).then(res => { const res = await setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state)
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
data.isReading = !data.isReading data.isReading = !data.isReading
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location) window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location)
} }
}).catch(() => { this.loading = false }) } catch (e) {
}).catch(() => {}) console.log(e)
this.loading = false
}
}, },
changeDeleteStatus(callback, data) { async changeDeleteStatus(callback, data) {
let statusStr = '' let statusStr = ''
if (callback) { if (callback) {
statusStr = this.$t('trials:audit:label:setSeriesDeleted') statusStr = this.$t('trials:audit:label:setSeriesDeleted')
@ -505,25 +557,28 @@ export default {
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted)) message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted))
this.$confirm(message, { const confirm = await this.$confirm(
distinguishCancelAndClose: true, message,
type: 'warning' {
}).then(() => { type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
const state = data.isDeleted ? 5 : 4 const state = data.isDeleted ? 5 : 4
this.loading = true this.loading = true
// var trialId = this.$router.currentRoute.query.trialId try {
// var subjectVisitId = this.$router.currentRoute.query.subjectVisitId const res = await setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state)
// var studyId = this.$router.currentRoute.query.studyId
// var seriesId = this.$router.currentRoute.query.seriesId
setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state).then(res => {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
data.isDeleted = !data.isDeleted data.isDeleted = !data.isDeleted
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location) window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location)
} }
}).catch(() => { this.loading = false }) } catch (e) {
}).catch(() => {}) console.log(e)
this.loading = false
}
}, },
loadAllImages() { loadAllImages() {
const seriesIndex = this.seriesList.findIndex(i => i.loadStatus === false) const seriesIndex = this.seriesList.findIndex(i => i.loadStatus === false)
@ -569,60 +624,6 @@ export default {
this.imageList = [] this.imageList = []
} }
}, },
load(imageId, seriesId, priority = 999) {
return new Promise((resolve, reject) => {
requestPoolManager.loadAndCacheImagePlus(imageId, seriesId, priority).then(res => {
if (!res) return
this.imageLoaded(imageId, res.data.string('x0020000e'))
resolve(res)
}).catch(e => {
reject(e)
})
})
},
imageLoaded(image, seriesUid) {
var seriesIndex = image.seriesIndex
if (seriesIndex < 0) return
if (this.seriesList[seriesIndex].imageloadedArr.indexOf(image.imageId) < 0) {
++this.seriesList[seriesIndex].prefetchInstanceCount
this.seriesList[seriesIndex].imageloadedArr.push(image.imageId)
if (this.seriesList[seriesIndex].prefetchInstanceCount >= this.seriesList[seriesIndex].instanceCount) {
this.seriesList[seriesIndex].prefetchInstanceCount = this.seriesList[seriesIndex].instanceCount
//
this.seriesList[seriesIndex].loadStatus = true
// if (!this.isLoadedAll) {
// this.loadAllImages()
// }
}
}
},
imageLoaded2(imageId, seriesUid) {
var seriesIndex = -1
for (let i = 0; i < this.seriesList.length; ++i) {
if (this.seriesList[i].seriesUid === seriesUid) {
seriesIndex = i
break
}
}
if (seriesIndex < 0) return
const imageIdIndex = this.seriesList[seriesIndex].imageIds.indexOf(imageId)
if (imageIdIndex < 0) return
if (this.seriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) {
++this.seriesList[seriesIndex].prefetchInstanceCount
this.seriesList[seriesIndex].imageloadedArr.push(imageId)
if (this.seriesList[seriesIndex].prefetchInstanceCount >= this.seriesList[seriesIndex].instanceCount) {
this.seriesList[seriesIndex].prefetchInstanceCount = this.seriesList[seriesIndex].instanceCount
//
this.seriesList[seriesIndex].loadStatus = true
// if (!this.isLoadedAll) {
// this.loadAllImages()
// }
}
}
},
datasetsCacheChanged(e) { datasetsCacheChanged(e) {
// const uri = e.detail.uri // const uri = e.detail.uri
const cacheInfo = e.detail.cacheInfo const cacheInfo = e.detail.cacheInfo
@ -681,53 +682,10 @@ export default {
this.seriesList[seriesIndex].prefetchInstanceCount = instanceCount * 100 this.seriesList[seriesIndex].prefetchInstanceCount = instanceCount * 100
// //
this.seriesList[seriesIndex].loadStatus = true this.seriesList[seriesIndex].loadStatus = true
if (!this.isFromCRCUpload) {
this.loadAllImages() this.loadAllImages()
} }
} }
},
cornerstoneImageLoaded(e) {
if (this.firstInstanceId === e.detail.image.imageId && !this.isStartLoad) {
//
this.loadAllImages()
this.isStartLoad = true
// requestPoolManager.executeTask()
}
const uri = e.detail.image.sharedCacheKey
const index = this.cachedImages.findIndex(item => item.uri === uri)
if (index === -1) {
this.cachedImages.push({ uri: uri, timestamp: new Date().getTime() })
} else {
this.cachedImages[index].timestamp = new Date().getTime()
}
// loadedDataSets[uri].dataSet.byteArray.length
// console.log(this.cachedImages.length)
// console.log(cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.getInfo().cacheSizeInBytes)
// const imageId = e.detail.image.imageId
var imageId = e.detail.image.imageId
var seriesUid = e.detail.image.data.string('x0020000e')
var seriesIndex = -1
for (let i = 0; i < this.seriesList.length; ++i) {
if (this.seriesList[i].seriesUid === seriesUid) {
seriesIndex = i
break
}
}
if (seriesIndex < 0) return
const imageIdIndex = this.seriesList[seriesIndex].imageIds.indexOf(imageId)
if (imageIdIndex < 0) return
if (this.seriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) {
++this.seriesList[seriesIndex].prefetchInstanceCount
this.seriesList[seriesIndex].imageloadedArr.push(imageId)
if (this.seriesList[seriesIndex].prefetchInstanceCount >= this.seriesList[seriesIndex].instanceCount) {
this.seriesList[seriesIndex].prefetchInstanceCount = this.seriesList[seriesIndex].instanceCount
//
this.seriesList[seriesIndex].loadStatus = true
// if (!this.isLoadedAll) {
// this.loadAllImages()
// }
}
} }
} }
} }

View File

@ -296,7 +296,8 @@ export default {
activeNames: [], activeNames: [],
relationActiveName: [], relationActiveName: [],
showSeriesList: [], showSeriesList: [],
currentLoadIns: [] currentLoadIns: [],
isFromCRCUpload: false
} }
}, },
mounted() { mounted() {
@ -312,6 +313,7 @@ export default {
this.visitInfo = this.$router.currentRoute.query.visitInfo this.visitInfo = this.$router.currentRoute.query.visitInfo
this.isReading = this.$router.currentRoute.query.isReading ? this.$router.currentRoute.query.isReading * 1 : 0 this.isReading = this.$router.currentRoute.query.isReading ? this.$router.currentRoute.query.isReading * 1 : 0
this.showDelete = parseInt(this.$router.currentRoute.query.showDelete) this.showDelete = parseInt(this.$router.currentRoute.query.showDelete)
this.isFromCRCUpload = !!this.$router.currentRoute.query.isFromCRCUpload
// cornerstone.events.addEventListener('cornerstoneimageloaded', this.cornerstoneImageLoaded) // cornerstone.events.addEventListener('cornerstoneimageloaded', this.cornerstoneImageLoaded)
this.getStudiesInfo() this.getStudiesInfo()
cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress) cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
@ -329,10 +331,12 @@ export default {
}, },
methods: { methods: {
// 访 // 访
getStudiesInfo() { async getStudiesInfo() {
this.studyList = [] this.studyList = []
getVisitStudyList(this.trialId, this.subjectVisitId, this.isReading).then(res => { try {
res.Result.forEach((study,studyIndex) => { const res = await getVisitStudyList(this.trialId, this.subjectVisitId, this.isReading)
if (res.IsSuccess) {
res.Result.forEach((study, studyIndex) => {
const data = {} const data = {}
data.StudyId = study.StudyId data.StudyId = study.StudyId
data.StudyCode = study.StudyCode data.StudyCode = study.StudyCode
@ -342,7 +346,7 @@ export default {
data.InstanceCount = study.InstanceCount data.InstanceCount = study.InstanceCount
data.PreviewImageCount = 0 data.PreviewImageCount = 0
var seriesList = [] var seriesList = []
study.SeriesList.forEach((series,seriesIndex) => { study.SeriesList.forEach((series, seriesIndex) => {
const imageIds = [] const imageIds = []
series.InstanceInfoList.forEach(i => { series.InstanceInfoList.forEach(i => {
if (i.NumberOfFrames && i.NumberOfFrames > 1) { if (i.NumberOfFrames && i.NumberOfFrames > 1) {
@ -385,9 +389,34 @@ export default {
instanceId = instanceId.split('.')[0] instanceId = instanceId.split('.')[0]
this.firstInstanceId = instanceId this.firstInstanceId = instanceId
this.activeNames = [this.studyList[0].StudyId] this.activeNames = [this.studyList[0].StudyId]
this.loadAllImages() this.loadImages(this.studyList[0].SeriesList[0], 0)
}
}
} catch (e) {
console.log(e)
}
},
loadImages(series, seriesIndex) {
var priority = parseInt(new Date().getTime())
for (let i = 0; i < series.imageIds.length; i++) {
const imageId = series.imageIds[i]
if (series.isExistMutiFrames) {
const params = this.getInstanceInfo(imageId)
if (params.frame && params.frame > 0) {
continue
}
}
var p = null
if (this.firstInstanceId === imageId) {
p = priority * 100
} else {
p = priority - 1
}
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, seriesIndex: seriesIndex, priority: p })
}
if (this.imageList.length > 0) {
this.loopLoad()
} }
})
}, },
showSeriesImage(e, studyIndex, seriesIndex, series) { showSeriesImage(e, studyIndex, seriesIndex, series) {
const element = e.currentTarget const element = e.currentTarget
@ -398,11 +427,37 @@ export default {
element.classList.add('viewerSideActive') element.classList.add('viewerSideActive')
this.currentSeriesIndex = seriesIndex this.currentSeriesIndex = seriesIndex
this.$refs.dicomViewer.loadImageStack(this.studyList[studyIndex].SeriesList[seriesIndex]) this.$refs.dicomViewer.loadImageStack(this.studyList[studyIndex].SeriesList[seriesIndex])
// if (!series.loadStatus) {
// requestPoolManager.changePriority(series.seriesId)
// }
if (!series.loadStatus) { if (!series.loadStatus) {
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())
if (series.isExistMutiFrames) {
series.instanceInfoList.map(image => {
this.imageList.push({ imageId: image.ImageId, seriesId: series.seriesId, studyIndex: studyIndex, seriesIndex: seriesIndex, priority })
})
} else {
series.imageIds.map(imageId => {
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, studyIndex: studyIndex, seriesIndex: seriesIndex, priority })
})
}
if (this.imageList.length > 0) {
this.loopLoad()
}
} else {
requestPoolManager.changePriority(series.seriesId) requestPoolManager.changePriority(series.seriesId)
} }
}
}, },
showMultiFrames(studyIndex,series, seriesIndex, instanceInfo) { showMultiFrames(studyIndex, series, seriesIndex, instanceInfo) {
this.currentSeriesIndex = seriesIndex this.currentSeriesIndex = seriesIndex
const imageIds = [] const imageIds = []
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) { if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) {
@ -430,10 +485,33 @@ export default {
} }
this.$refs.dicomViewer.loadImageStack(seriesInfo) this.$refs.dicomViewer.loadImageStack(seriesInfo)
if (!series.loadStatus) { if (!series.loadStatus) {
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())
if (series.isExistMutiFrames) {
series.instanceInfoList.map(image => {
this.imageList.push({ imageId: image.ImageId, seriesId: series.seriesId, studyIndex: studyIndex, seriesIndex: seriesIndex, priority })
})
} else {
series.imageIds.map((imageId) => {
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, studyIndex: studyIndex, seriesIndex: seriesIndex, priority })
})
}
if (this.imageList.length > 0) {
this.loopLoad()
}
} else {
requestPoolManager.changePriority(series.seriesId) requestPoolManager.changePriority(series.seriesId)
} }
}
}, },
changeReadingStatus(callback, data) { async changeReadingStatus(callback, data) {
let statusStr = '' let statusStr = ''
if (callback) { if (callback) {
statusStr = this.$t('trials:audit:label:setSeriesReading') statusStr = this.$t('trials:audit:label:setSeriesReading')
@ -444,24 +522,29 @@ export default {
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading)) message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading))
this.$confirm(message, { const confirm = await this.$confirm(
distinguishCancelAndClose: true, message,
type: 'warning' {
}).then(() => { type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
const state = data.isReading ? 1 : 2 const state = data.isReading ? 1 : 2
this.loading = true this.loading = true
try {
setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state).then(res => { const res = await setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state)
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
data.isReading = !data.isReading data.isReading = !data.isReading
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location) window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location)
} }
}).catch(() => { this.loading = false }) } catch (e) {
}).catch(() => {}) this.loading = false
}
}, },
changeDeleteStatus(callback, data) { async changeDeleteStatus(callback, data) {
let statusStr = '' let statusStr = ''
if (callback) { if (callback) {
statusStr = this.$t('trials:audit:label:setSeriesDeleted') statusStr = this.$t('trials:audit:label:setSeriesDeleted')
@ -472,24 +555,31 @@ export default {
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted)) message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted))
this.$confirm(message, { const confirm = await this.$confirm(
distinguishCancelAndClose: true, message,
type: 'warning' {
}).then(() => { type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
const state = data.isDeleted ? 5 : 4 const state = data.isDeleted ? 5 : 4
this.loading = true this.loading = true
setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state).then(res => { try {
const res = await setSeriesStatus(data.trialId, data.subjectVisitId, data.studyId, data.seriesId, state)
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
data.isDeleted = !data.isDeleted data.isDeleted = !data.isDeleted
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location) window.opener.postMessage({ type: 'refreshSeriesList', data: '' }, window.location)
} }
}).catch(() => { this.loading = false }) } catch (e) {
}).catch(() => {}) this.loading = false
}
}, },
// Tab // Tab
handleTabClick(tab, event) { async handleTabClick(tab, event) {
if (tab.name === 'relation-study' && this.relationStudyList.length <= 0) { if (tab.name === 'relation-study' && this.relationStudyList.length <= 0) {
const loading = this.$loading({ const loading = this.$loading({
target: document.querySelector('.pane-relation-wrapper'), target: document.querySelector('.pane-relation-wrapper'),
@ -499,11 +589,13 @@ export default {
background: 'rgb(49 49 49 / 50%)', background: 'rgb(49 49 49 / 50%)',
spinner: 'el-icon-loading' spinner: 'el-icon-loading'
}) })
getAllRelationStudyList(this.subjectVisitId).then(res => { try {
const res = await getAllRelationStudyList(this.subjectVisitId)
loading.close() loading.close()
this.relationStudyList = res.Result this.relationStudyList = res.Result
console.log(this.relationStudyList) } catch (e) {
}).catch(() => { loading.close() }) loading.close()
}
} }
}, },
handelRelationActiveChange(v) { handelRelationActiveChange(v) {
@ -515,7 +607,7 @@ export default {
} }
}, },
// //
getRelationSeriesByStudy(studyId, index) { async getRelationSeriesByStudy(studyId, index) {
console.log('getRelationSeriesByStudy') console.log('getRelationSeriesByStudy')
if (this.relationStudyList[index].seriesCount) { if (this.relationStudyList[index].seriesCount) {
this.relationStudyList[index].showSeries = !this.relationStudyList[index].showSeries this.relationStudyList[index].showSeries = !this.relationStudyList[index].showSeries
@ -530,20 +622,21 @@ export default {
background: 'rgb(49 49 49 / 50%)', background: 'rgb(49 49 49 / 50%)',
spinner: 'el-icon-loading' spinner: 'el-icon-loading'
}) })
getSeriesList(`/series/list/${studyId}`).then(data => { try {
const data = await getSeriesList(`/series/list/${studyId}`)
loading.close() loading.close()
if (data.Result != null && data.Result.length > 0) { if (data.Result != null && data.Result.length > 0) {
var seriesList = [] var seriesList = []
const res = data.Result const res = data.Result
res.forEach((item,seriesIndex)=> { res.forEach((item, seriesIndex) => {
const imageIds = [] const imageIds = []
item.InstanceInfoList.forEach(i => { item.InstanceInfoList.forEach(i => {
if (i.NumberOfFrames && i.NumberOfFrames > 1) { if (i.NumberOfFrames && i.NumberOfFrames > 1) {
for (let j = 0; j < i.NumberOfFrames; j++) { for (let j = 0; j < i.NumberOfFrames; j++) {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&idx=${index}|${seriesIndex}`) imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`)
} }
} else { } else {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&idx=${index}|${seriesIndex}`) imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`)
} }
}) })
seriesList.push({ seriesList.push({
@ -568,10 +661,11 @@ export default {
scope.relationStudyList[index].seriesCount = seriesList.length scope.relationStudyList[index].seriesCount = seriesList.length
scope.relationStudyList[index].seriesList = seriesList scope.relationStudyList[index].seriesList = seriesList
scope.relationStudyList[index].showSeries = true scope.relationStudyList[index].showSeries = true
console.log(scope.relationStudyList)
scope.$forceUpdate() scope.$forceUpdate()
} }
}).catch(() => { loading.close() }) } catch (e) {
loading.close()
}
} }
}, },
showRelationSeriesImage(e, series, index) { showRelationSeriesImage(e, series, index) {
@ -635,26 +729,6 @@ export default {
this.imageList = [] this.imageList = []
} }
}, },
// load(imageId, priority = 999) {
// return new Promise((resolve, reject) => {
// const imageTask = this.buildImageRequestTask(imageId, { priority })
// requestPoolManager.addTaskIntoPool(imageTask).then((res) => {
// resolve(res)
// }).catch(e => {
// reject(e)
// console.log(e)
// })
// })
// },
buildImageRequestTask(imageId, config = {}) {
return {
key: imageId,
...config,
execute: () => {
return cornerstone.loadAndCacheImage(imageId)
}
}
},
datasetsCacheChanged(e) { datasetsCacheChanged(e) {
const cacheInfo = e.detail.cacheInfo const cacheInfo = e.detail.cacheInfo
const cacheSizeInBytes = cacheInfo.cacheSizeInBytes const cacheSizeInBytes = cacheInfo.cacheSizeInBytes
@ -662,22 +736,7 @@ export default {
// //
} }
}, },
imageLoaded(image, seriesUid) { cornerstoneimageloadprogress(e) {
var studyIndex = image.studyIndex
var seriesIndex = image.seriesIndex
if (seriesIndex < 0 || studyIndex < 0) return
if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(image.imageId) < 0) {
++this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount
this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.push(image.imageId)
if (this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount >= this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount) {
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount
//
this.studyList[studyIndex].SeriesList[seriesIndex].loadStatus = true
}
}
},
cornerstoneimageloadprogress(e){
const imageId = e.detail.imageId const imageId = e.detail.imageId
const percentComplete = e.detail.percentComplete const percentComplete = e.detail.percentComplete
const params = {} const params = {}
@ -685,12 +744,13 @@ export default {
for (const [key, value] of searchParams.entries()) { for (const [key, value] of searchParams.entries()) {
params[key] = value params[key] = value
} }
if (this.visitTaskId === params.visitTaskId) {
const studyIndex = params.idx.split('|')[0] const studyIndex = params.idx.split('|')[0]
const seriesIndex = params.idx.split('|')[1] const seriesIndex = params.idx.split('|')[1]
var prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount var series = !params.isRelation ? this.studyList[studyIndex].SeriesList[seriesIndex] : null
var instanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount if (!series) return
if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) { var prefetchInstanceCount = series.prefetchInstanceCount
var instanceCount = series.instanceCount
if (series.imageloadedArr.indexOf(imageId) < 0) {
const i = this.currentLoadIns.findIndex(i => i.imageId === imageId) const i = this.currentLoadIns.findIndex(i => i.imageId === imageId)
if (i > -1) { if (i > -1) {
prefetchInstanceCount = prefetchInstanceCount - this.currentLoadIns[i].percentComplete + percentComplete prefetchInstanceCount = prefetchInstanceCount - this.currentLoadIns[i].percentComplete + percentComplete
@ -704,15 +764,16 @@ export default {
} }
prefetchInstanceCount = prefetchInstanceCount + percentComplete prefetchInstanceCount = prefetchInstanceCount + percentComplete
} }
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = prefetchInstanceCount series.prefetchInstanceCount = prefetchInstanceCount
if (percentComplete >= 100) { if (percentComplete >= 100) {
this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.push(imageId) series.imageloadedArr.push(imageId)
} }
} }
if (prefetchInstanceCount >= instanceCount * 100) { if (prefetchInstanceCount >= instanceCount * 100) {
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = instanceCount * 100 series.prefetchInstanceCount = instanceCount * 100
// //
this.studyList[studyIndex].SeriesList[seriesIndex].loadStatus = true series.loadStatus = true
if (!this.isFromCRCUpload) {
this.loadAllImages() this.loadAllImages()
} }
} }
@ -784,7 +845,7 @@ export default {
white-space: normal; white-space: normal;
} }
.viewerContainer .viewerLeftSidePanel { .viewerContainer .viewerLeftSidePanel {
width: 215px; width: 220px;
background-color: #323232; background-color: #323232;
box-sizing: border-box; box-sizing: border-box;
margin: 0; margin: 0;
@ -821,7 +882,7 @@ export default {
} }
.viewerContainer .viewerLeftSidePanel .viewernavigatorwrapper { .viewerContainer .viewerLeftSidePanel .viewernavigatorwrapper {
display: flex; display: flex;
width: 200px; width: 220px;
/* height: 84px; */ /* height: 84px; */
padding: 1px 2px 1px 2px; padding: 1px 2px 1px 2px;
margin: 2px 0 1px 1px; margin: 2px 0 1px 1px;

View File

@ -179,12 +179,19 @@
{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500`, trigger: ['blur', 'change'] } { max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500`, trigger: ['blur', 'change'] }
]" ]"
> >
<div style="position: relative;">
<div style="position: absolute;left: 0;top: 30px;color: #606266;font-size: 13px;">
{{ remark }}
</div>
<el-input <el-input
v-model="adForm.judgeResultRemark" v-model="adForm.judgeResultRemark"
type="textarea" type="textarea"
:autosize="{ minRows: 4, maxRows: 6}" :autosize="{ minRows: 4, maxRows: 6}"
:disabled="adInfo.ReadingTaskState >= 2" :disabled="adInfo.ReadingTaskState >= 2"
style="margin-top:25px"
/> />
</div>
</el-form-item> </el-form-item>
<!-- 截图说明 --> <!-- 截图说明 -->
<el-form-item <el-form-item
@ -388,7 +395,8 @@ export default {
criterionType: null, criterionType: null,
openWindow: null, openWindow: null,
isFixed: false, isFixed: false,
images: [] images: [],
remark: ''
} }
}, },
// watch: { // watch: {
@ -450,7 +458,6 @@ export default {
this.adInfo = res.Result this.adInfo = res.Result
this.adForm.judgeResultTaskId = res.Result.JudgeResultTaskId this.adForm.judgeResultTaskId = res.Result.JudgeResultTaskId
this.adForm.judgeResultRemark = res.Result.JudgeResultRemark
this.fileList = [] this.fileList = []
if (res.Result.JudgeResultImagePathList) { if (res.Result.JudgeResultImagePathList) {
res.Result.JudgeResultImagePathList.map(url => { res.Result.JudgeResultImagePathList.map(url => {
@ -459,6 +466,19 @@ export default {
this.adForm.judgeResultImagePathList = res.Result.JudgeResultImagePathList this.adForm.judgeResultImagePathList = res.Result.JudgeResultImagePathList
} }
this.visitTaskArmList = res.Result.VisitTaskArmList this.visitTaskArmList = res.Result.VisitTaskArmList
var i = this.visitTaskArmList.findIndex(i => i.VisitTaskId === this.adForm.judgeResultTaskId)
if (i > -1) {
// R1
this.judgeResultArmEnum = this.visitTaskArmList[i].ArmEnum
var msg = ''
if (this.judgeResultArmEnum === 1) {
msg = this.$t('trials:adReview:title:msg1')
} else if (this.judgeResultArmEnum === 2) {
msg = this.$t('trials:adReview:title:msg3')
}
this.remark = msg
this.adForm.judgeResultRemark = res.Result.JudgeResultRemark
}
} }
this.loading = false this.loading = false
} catch (e) { } catch (e) {
@ -489,9 +509,12 @@ export default {
msg = this.$t('trials:adReview:title:msg3') msg = this.$t('trials:adReview:title:msg3')
} }
// this.adForm.judgeResultRemark = `${this.$fd('ArmEnum', this.judgeResultArmEnum)}` // this.adForm.judgeResultRemark = `${this.$fd('ArmEnum', this.judgeResultArmEnum)}`
this.adForm.judgeResultRemark = msg this.remark = msg
this.adForm.judgeResultRemark = ''
} else { } else {
this.judgeResultArmEnum = '' this.judgeResultArmEnum = ''
this.remark = ''
this.adForm.judgeResultRemark = ''
} }
}, },
previewCD() { previewCD() {

View File

@ -102,7 +102,9 @@
</div> </div>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="{color: ((scope.row.isLymphNodes === 1 && scope.row.QuestionMark === 1) || (scope.row.isLymphNodes === 0 && scope.row.QuestionMark === 0)) && (scope.row.LesionType === 0 || scope.row.LesionType === 5) || (scope.row.QuestionMark === 12) ? '#f66' : '#fff'}"> <span :style="{color: ((scope.row.isLymphNodes === 1 && scope.row.QuestionMark === 1) || (scope.row.isLymphNodes === 0 && scope.row.QuestionMark === 0)) && (scope.row.LesionType === 0 || scope.row.LesionType === 5) || (scope.row.QuestionMark === 12) ? '#f66' : '#fff'}" :class="scope.row.HighlightAnswerList.includes(scope.row.Answers[task.VisitTaskId]) ? 'colorOfRed' : ''">
<!-- {{scope.row.Answers[task.VisitTaskId]}} -->
<template v-if="scope.row.HighlightAnswerList"><span>11</span></template>
<template v-if="task.VisitTaskId === visitTaskId && readingTaskState < 2 && [13,14,15,42].includes(scope.row.QuestionType)"> <template v-if="task.VisitTaskId === visitTaskId && readingTaskState < 2 && [13,14,15,42].includes(scope.row.QuestionType)">
<!-- 是否存在疾病基线时可修改 --> <!-- 是否存在疾病基线时可修改 -->
<template v-if="task.IsBaseLine && scope.row.QuestionType=== 15"> <template v-if="task.IsBaseLine && scope.row.QuestionType=== 15">
@ -918,4 +920,7 @@ export default {
/deep/ .el-switch__label.is-active{ /deep/ .el-switch__label.is-active{
color: #428bca; color: #428bca;
} }
.colorOfRed{
color: #f66;
}
</style> </style>

View File

@ -588,6 +588,27 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 高亮标记值 -->
<el-form-item v-if="(form.Type === 'select' || form.Type === 'radio') && isFromSystem" :label="$t('trials:readingUnit:qsList:title:highlightAnswers')" prop="HighlightAnswerList">
<el-select v-model="form.HighlightAnswerList" clearable multiple>
<template v-if="form.TypeValue">
<el-option
v-for="item of form.TypeValue.split('|')"
:key="item"
:label="item"
:value="item"
/>
</template>
<template v-else-if="form.DictionaryCode">
<el-option
v-for="item of $d[form.DictionaryCode]"
:key="item.id"
:label="item.label"
:value="item.value.toString()"
/>
</template>
</el-select>
</el-form-item>
<!-- 序号 --> <!-- 序号 -->
<el-form-item :label="$t('trials:readingUnit:qsList:title:order')" prop="ShowOrder"> <el-form-item :label="$t('trials:readingUnit:qsList:title:order')" prop="ShowOrder">
<el-input-number <el-input-number
@ -782,7 +803,8 @@ export default {
GroupId: null, GroupId: null,
ClassifyQuestionId: null, ClassifyQuestionId: null,
ClassifyAlgorithms: null, ClassifyAlgorithms: null,
LimitShow: 0 LimitShow: 0,
HighlightAnswerList: []
// IsEnable: true // IsEnable: true
}, },
rules: { rules: {

View File

@ -426,6 +426,27 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 高亮标记值 -->
<el-form-item v-if="(form.Type === 'select' || form.Type === 'radio') && isFromSystem" :label="$t('trials:readingUnit:qsList:title:highlightAnswers')" prop="HighlightAnswerList">
<el-select v-model="form.HighlightAnswerList" clearable multiple>
<template v-if="form.TypeValue">
<el-option
v-for="item of form.TypeValue.split('|')"
:key="item"
:label="item"
:value="item"
/>
</template>
<template v-else-if="form.DictionaryCode">
<el-option
v-for="item of $d[form.DictionaryCode]"
:key="item.id"
:label="item.label"
:value="item.value.toString()"
/>
</template>
</el-select>
</el-form-item>
<el-form-item :label="$t('trials:readingUnit:qsList:title:order')" prop="ShowOrder"> <el-form-item :label="$t('trials:readingUnit:qsList:title:order')" prop="ShowOrder">
<el-input-number <el-input-number
v-model="form.ShowOrder" v-model="form.ShowOrder"
@ -544,7 +565,8 @@ export default {
Unit: null, Unit: null,
LimitEdit: 0, LimitEdit: 0,
DefaultValue: null, DefaultValue: null,
IsCopy: false IsCopy: false,
HighlightAnswerList: []
// IsEnable: true // IsEnable: true
}, },
rules: { rules: {

View File

@ -435,7 +435,7 @@ export default {
handlePreviewAllFiles() { handlePreviewAllFiles() {
var tokenKey = getToken(); var tokenKey = getToken();
const routeData = this.$router.resolve({ const routeData = this.$router.resolve({
path: `/showvisitdicoms?trialId=${this.data.TrialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&TokenKey=${tokenKey}`, path: `/showvisitdicoms?trialId=${this.data.TrialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&isFromCRCUpload=1&TokenKey=${tokenKey}`,
}); });
var newWindow = window.open(routeData.href, "_blank"); var newWindow = window.open(routeData.href, "_blank");
this.$emit("setOpenWindow", newWindow); this.$emit("setOpenWindow", newWindow);
@ -444,7 +444,7 @@ export default {
handleViewStudy(row) { handleViewStudy(row) {
var token = getToken(); var token = getToken();
const routeData = this.$router.resolve({ const routeData = this.$router.resolve({
path: `/showdicom?studyId=${row.StudyId}&TokenKey=${token}&type=Study`, path: `/showdicom?studyId=${row.StudyId}&isFromCRCUpload=1&TokenKey=${token}&type=Study`,
}); });
var newWindow = window.open(routeData.href, "_blank"); var newWindow = window.open(routeData.href, "_blank");
this.$emit("setOpenWindow", newWindow); this.$emit("setOpenWindow", newWindow);

View File

@ -997,11 +997,11 @@ export default {
var token = getToken(); var token = getToken();
if (this.$route.path === "/trials/trials-panel/visit/crc-question") { if (this.$route.path === "/trials/trials-panel/visit/crc-question") {
var routeData = this.$router.resolve({ var routeData = this.$router.resolve({
path: `/showvisitdicoms?trialId=${this.trialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.SubjectVisitId}&TokenKey=${token}`, path: `/showvisitdicoms?trialId=${this.trialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.SubjectVisitId}&isFromCRCUpload=1&TokenKey=${token}`,
}); });
} else { } else {
var routeData = this.$router.resolve({ var routeData = this.$router.resolve({
path: `/showvisitdicoms?trialId=${this.trialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&TokenKey=${token}`, path: `/showvisitdicoms?trialId=${this.trialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&isFromCRCUpload=1&TokenKey=${token}`,
}); });
} }
window.open(routeData.href, "_blank"); window.open(routeData.href, "_blank");