wangxiaoshuang 2024-03-28 14:06:06 +08:00
commit afa835e3b9
15 changed files with 67 additions and 33 deletions

View File

@ -23,8 +23,9 @@
<div style="margin-left:20px;"> <div style="margin-left:20px;">
<el-dropdown class="dropdown-container" trigger="click"> <el-dropdown class="dropdown-container" trigger="click">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
{{ name }} {{ `${name} (${userTypeShortName})` }}
<span v-if="userTypeShortName">({{ userTypeShortName }})</span> <!-- {{ name }}
<span v-if="userTypeShortName"> ({{ userTypeShortName }}) </span> -->
<i class="el-icon-caret-bottom" /> <i class="el-icon-caret-bottom" />
</span> </span>
<el-dropdown-menu slot="dropdown" class="user-dropdown"> <el-dropdown-menu slot="dropdown" class="user-dropdown">

View File

@ -40,8 +40,9 @@
<el-submenu index="4" class="my_info"> <el-submenu index="4" class="my_info">
<span slot="title"> <span slot="title">
<i class="el-icon-s-custom" /> <i class="el-icon-s-custom" />
<span>{{ userName }}</span> {{ `${name} (${userTypeShortName})` }}
<span v="userTypeShortName">({{ userTypeShortName }})</span> <!-- <span>{{ userName }}</span>
<span v="userTypeShortName">({{ userTypeShortName }})</span> -->
</span> </span>
<!-- 账户信息 --> <!-- 账户信息 -->
<el-menu-item v-if="!hasPermi(['role:air'])" index="4-2">{{ $t('trials:trials-myinfo:title:accountInfo') }}</el-menu-item> <el-menu-item v-if="!hasPermi(['role:air'])" index="4-2">{{ $t('trials:trials-myinfo:title:accountInfo') }}</el-menu-item>

View File

@ -81,13 +81,13 @@
@change="(v) => {return isEnableChange(scope.row, v)}" @change="(v) => {return isEnableChange(scope.row, v)}"
:disabled="!hasPermi(['trials:trials-panel:enrolled-reviewers:list:edit'])" :disabled="!hasPermi(['trials:trials-panel:enrolled-reviewers:list:edit'])"
/> />
<span>{{$fd('IsEnable', scope.row.IsEnable)}}</span> <span> {{$fd('IsEnable', scope.row.IsEnable)}}</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-for="ite of TrialReadingCriterionList" v-for="ite of TrialReadingCriterionList"
:key="ite" :key="ite.TrialReadingCriterionName"
:label="ite.TrialReadingCriterionName" :label="ite.TrialReadingCriterionName"
width="360" width="360"
header-align="center" header-align="center"
@ -99,7 +99,7 @@
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span v-for="item of scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}) ? scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).ReadingCategorys : []" :key="item"> <span v-for="item of scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}) ? scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).ReadingCategorys : []" :key="item.TrialReadingCriterionId">
<el-tag v-if="item === 1" type="primary">{{ $fd('ReadingCategory', item) + ' & ' + $fd('ReadingCategory', 2) }}</el-tag> <el-tag v-if="item === 1" type="primary">{{ $fd('ReadingCategory', item) + ' & ' + $fd('ReadingCategory', 2) }}</el-tag>
<!-- <el-tag v-if="item === 2" type="info">{{ $fd('ReadingCategory', item) }}</el-tag>--> <!-- <el-tag v-if="item === 2" type="info">{{ $fd('ReadingCategory', item) }}</el-tag>-->
<el-tag v-if="item === 4" type="danger">{{ $fd('ReadingCategory', item) }}</el-tag> <el-tag v-if="item === 4" type="danger">{{ $fd('ReadingCategory', item) }}</el-tag>
@ -127,8 +127,8 @@
@change="(v) => {return isConsistencyChange(scope.row, ite, v, true)}" @change="(v) => {return isConsistencyChange(scope.row, ite, v, true)}"
:disabled="!hasPermi(['trials:trials-panel:enrolled-reviewers:list:edit'])" :disabled="!hasPermi(['trials:trials-panel:enrolled-reviewers:list:edit'])"
/> />
<span v-if="scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis">{{$fd('YesOrNo', scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis)}}</span> <span v-if="scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis"> {{$fd('YesOrNo', scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis)}}</span>
<span v-else>{{$fd('YesOrNo',false)}}</span> <span v-else> {{$fd('YesOrNo',false)}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column

View File

@ -99,8 +99,8 @@
</div> </div>
<div class="info-instance"> <div class="info-instance">
<div v-if="dicomInfo.location">Location: {{ Number(dicomInfo.location).toFixed(digitPlaces) }}</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>

View File

@ -1878,7 +1878,8 @@ export default {
var oA = document.createElement('a') var oA = document.createElement('a')
var subjectCode = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].subjectCode var subjectCode = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].subjectCode
var taskBlindName = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].stack.taskBlindName var taskBlindName = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].stack.taskBlindName
oA.download = `${subjectCode}_${taskBlindName}`// '' var timestamp = Date.now()
oA.download = `${subjectCode}_${taskBlindName}_${timestamp}`// ''
oA.href = oImg oA.href = oImg
document.body.appendChild(oA) document.body.appendChild(oA)
oA.click() oA.click()

View File

@ -151,6 +151,11 @@ export default {
}) })
}) })
}, },
receiveMsg(event) {
if (event.data.type === 'setReadingState' || event.data.type === 'closeHistoryScreenshot') {
window.close()
}
},
toRight() { toRight() {
if (this.translateX < this.pageSize * this.itemWidth) { if (this.translateX < this.pageSize * this.itemWidth) {
this.translateX = 0 this.translateX = 0

View File

@ -527,7 +527,8 @@ export default {
initAnnotations: [], initAnnotations: [],
activeCanvasWW: null, activeCanvasWW: null,
activeCanvasWC: null, activeCanvasWC: null,
fusion: { visible: false } // fusion: { visible: false }, //
screenshotWindow: null
// initFirstAnnotation:false // initFirstAnnotation:false
} }
}, },
@ -621,8 +622,15 @@ export default {
loading.close() loading.close()
callback(pictureBaseStr) callback(pictureBaseStr)
}) })
FusionEvent.$on('viewHistoryScreenshot', (path) => {
if (this.screenshotWindow) {
this.screenshotWindow.close()
}
const routeData = this.$router.resolve({ path })
this.screenshotWindow = window.open(routeData.href, '_blank')
})
}, },
destroyed() { beforeDestroy() {
cornerstoneTools.destroy() cornerstoneTools.destroy()
eventTarget.reset() eventTarget.reset()
cache.purgeCache() cache.purgeCache()
@ -2127,11 +2135,16 @@ export default {
} else if (event.data.type === 'readingPageStateUpdate') { } else if (event.data.type === 'readingPageStateUpdate') {
this.readingTaskState = event.data.data.readingTaskState this.readingTaskState = event.data.data.readingTaskState
if (this.readingTaskState === 2) { if (this.readingTaskState === 2) {
FusionEvent.$emit('closeHistoryScreenshot')
if (this.screenshotWindow) {
this.screenshotWindow.close()
}
window.close() window.close()
} }
} else if (event.data.type === 'setReadingState') { } else if (event.data.type === 'setReadingState') {
this.readingTaskState = event.data.data.readingTaskState this.readingTaskState = event.data.data.readingTaskState
if (this.readingTaskState === 2) { if (this.readingTaskState === 2) {
FusionEvent.$emit('closeHistoryScreenshot')
window.close() window.close()
} }
} }

View File

@ -417,8 +417,7 @@ export default {
var token = getToken() var token = getToken()
var subjectCode = this.$route.query.subjectCode var subjectCode = this.$route.query.subjectCode
var path = `/historyScreenshot?&subjectCode=${subjectCode}&visitTaskId=${this.visitTaskId}&questionType=${question.QuestionType}&TokenKey=${token}` var path = `/historyScreenshot?&subjectCode=${subjectCode}&visitTaskId=${this.visitTaskId}&questionType=${question.QuestionType}&TokenKey=${token}`
const routeData = this.$router.resolve({ path }) FusionEvent.$emit('viewHistoryScreenshot', path)
window.open(routeData.href, '_blank')
}, },
setMeasuredData(measurement) { setMeasuredData(measurement) {
if (measurement.data.isHandleOutsideImage) { if (measurement.data.isHandleOutsideImage) {

View File

@ -1022,8 +1022,7 @@ export default {
var token = getToken() var token = getToken()
var subjectCode = this.$route.query.subjectCode var subjectCode = this.$route.query.subjectCode
var path = `/historyScreenshot?rowId=${rowId}&subjectCode=${subjectCode}&lesionName=${this.lesionName}&TokenKey=${token}` var path = `/historyScreenshot?rowId=${rowId}&subjectCode=${subjectCode}&lesionName=${this.lesionName}&TokenKey=${token}`
const routeData = this.$router.resolve({ path }) FusionEvent.$emit('viewHistoryScreenshot', path)
window.open(routeData.href, '_blank')
} }
} }
} }

View File

@ -225,9 +225,6 @@ export default {
this.rotateBarMousemove(e) this.rotateBarMousemove(e)
} }
}) })
},
destroyed() {
}, },
methods: { methods: {
handleVolumeNewImage(e) { handleVolumeNewImage(e) {

View File

@ -727,7 +727,7 @@ export default {
methods: { methods: {
handleConfirmModality() { handleConfirmModality() {
this.form.ModalityList = Object.assign([], this.selectedList.map(v => v.value)) this.form.ModalityList = Object.assign([], this.selectedList.map(v => v.value))
this.form.ModalityListStr = this.form.ModalityList.toString().replaceAll(',', '|') this.form.ModalityListStr = this.form.ModalityList.toString().replaceAll(',', ' | ')
this.modalityListVisible = false this.modalityListVisible = false
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
@ -781,7 +781,7 @@ export default {
var bodyPartTypes = this.form.BodyPartTypeList.map(i => { var bodyPartTypes = this.form.BodyPartTypeList.map(i => {
return this.$fd('Bodypart', i) return this.$fd('Bodypart', i)
}) })
this.form.BodyPartTypes = bodyPartTypes.toString().replaceAll(',', '|') this.form.BodyPartTypes = bodyPartTypes.toString().replaceAll(',', ' | ')
this.bodyPartListVisible = false this.bodyPartListVisible = false
}, },
// //
@ -791,7 +791,7 @@ export default {
this.loading = true this.loading = true
// //
var params = Object.assign({}, this.form) var params = Object.assign({}, this.form)
params.BodyPartTypes = this.form.BodyPartTypeList.toString().replaceAll(',', '|') params.BodyPartTypes = this.form.BodyPartTypeList.toString().replaceAll(',', ' | ')
configTrialBasicInfo(params).then(res => { configTrialBasicInfo(params).then(res => {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
@ -842,7 +842,7 @@ export default {
this.btnLoading = true this.btnLoading = true
// //
var params = Object.assign({}, this.form) var params = Object.assign({}, this.form)
params.BodyPartTypes = this.form.BodyPartTypeList.toString().replaceAll(',', '|') params.BodyPartTypes = this.form.BodyPartTypeList.toString().replaceAll(',', ' | ')
configTrialBasicInfo(params).then(res => { configTrialBasicInfo(params).then(res => {
this.btnLoading = false this.btnLoading = false
if (res.IsSuccess) { if (res.IsSuccess) {
@ -865,7 +865,7 @@ export default {
signConfirm(signInfo) { signConfirm(signInfo) {
this.loading = true this.loading = true
var obj = Object.assign({}, this.form) var obj = Object.assign({}, this.form)
obj.BodyPartTypes = this.form.BodyPartTypeList.toString().replaceAll(',', '|') obj.BodyPartTypes = this.form.BodyPartTypeList.toString().replaceAll(',', ' | ')
const params = { const params = {
data: obj, data: obj,
signInfo: signInfo signInfo: signInfo
@ -978,12 +978,12 @@ export default {
this.form[k] = res[k] this.form[k] = res[k]
} }
} }
this.form.ModalityListStr = this.form.ModalityList.toString().replaceAll(',', '|') this.form.ModalityListStr = this.form.ModalityList.toString().replaceAll(',', ' | ')
this.form.BodyPartTypeList = this.form.BodyPartTypes.split('|') this.form.BodyPartTypeList = this.form.BodyPartTypes.split(' | ')
var bodyPartTypes = this.form.BodyPartTypeList.map(i => { var bodyPartTypes = this.form.BodyPartTypeList.map(i => {
return this.$fd('Bodypart', i) return this.$fd('Bodypart', i)
}) })
this.form.BodyPartTypes = bodyPartTypes.toString().replaceAll(',', '|') this.form.BodyPartTypes = bodyPartTypes.toString().replaceAll(',', ' | ')
// this.form.ClinicalDataSetNamesStr = this.form.ClinicalDataSetNames.join(', ') // this.form.ClinicalDataSetNamesStr = this.form.ClinicalDataSetNames.join(', ')
this.initialForm = { ...this.form } this.initialForm = { ...this.form }
this.loading = false this.loading = false
@ -1104,5 +1104,8 @@ export default {
.fontColor{ .fontColor{
color: red; color: red;
} }
::v-deep .el-table__header-wrapper .el-checkbox {
display: none !important;
}
} }
</style> </style>

View File

@ -661,7 +661,7 @@
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.TrialCriterionNameList.toString() }} {{ scope.row.TrialCriterionNameList.join(', ') }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 模板名称 --> <!-- 模板名称 -->

View File

@ -113,7 +113,7 @@
<div style="display: flex;align-items: center"> <div style="display: flex;align-items: center">
<div v-if="scope.row.Modalities">{{ scope.row.Modalities }}({{ scope.row.Count }}), </div> <div v-if="scope.row.Modalities">{{ scope.row.Modalities }}({{ scope.row.Count }}), </div>
<div v-else style="color:#f44336;">N/A, </div> <div v-else style="color:#f44336;">N/A, </div>
<div v-if="scope.row.Bodypart" style="margin:0 3px;">{{ getBodyPart(scope.row.Bodypart) }}, </div> <div v-if="scope.row.Bodypart" style="margin:0 3px;">{{ scope.row.Bodypart }}, </div>
<div v-else style="color:#f44336;margin:0 3px;">N/A, </div> <div v-else style="color:#f44336;margin:0 3px;">N/A, </div>
<div v-if="scope.row.StudyTime">{{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }} </div> <div v-if="scope.row.StudyTime">{{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }} </div>
<div v-else style="color:#f44336;">N/A </div> <div v-else style="color:#f44336;">N/A </div>

View File

@ -54,6 +54,17 @@
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:readingPeriod:table:completeClinicalData')">
<el-select v-model="searchData.CompleteClinicalData" clearable style="width:120px">
<el-option
v-for="item of $d.CompleteClinicalDataEnum"
:key="item.value"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleSearch"> <el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t('common:button:search') }} {{ $t('common:button:search') }}
@ -173,7 +184,10 @@
<div v-if="otherInfo.ExistClinicalData" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px"> <div v-if="otherInfo.ExistClinicalData" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
<div style="display: flex;justify-content: space-between;width: 100%"> <div style="display: flex;justify-content: space-between;width: 100%">
<!-- 临床资料 --> <!-- 临床资料 -->
<div> <div>
<el-tooltip v-if="scope.row.Data[i-1].CompleteClinicalData!==1" class="item" effect="dark" :content="$t('trials:readingPeriod:table:clinicalDataNotComplete')" placement="bottom">
<i class="el-icon-warning" style="color:red" />
</el-tooltip>
{{ $t('trials:readingPeriod:table:clinicalInfo2') }} {{ $t('trials:readingPeriod:table:clinicalInfo2') }}
</div> </div>
<el-link type="danger" v-if="(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsSubjectClinicalData && scope.row.Data[i-1].IsBaseLine) ||(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsVisitClinicalData) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsReadingClinicalData && scope.row.Data[i-1].ModuleType === 3) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsOncologyReadClinicalData && scope.row.Data[i-1].ModuleType === 5)" @click="handleView(scope.row,scope.row.Data[i-1])"> <el-link type="danger" v-if="(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsSubjectClinicalData && scope.row.Data[i-1].IsBaseLine) ||(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsVisitClinicalData) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsReadingClinicalData && scope.row.Data[i-1].ModuleType === 3) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsOncologyReadClinicalData && scope.row.Data[i-1].ModuleType === 5)" @click="handleView(scope.row,scope.row.Data[i-1])">
@ -355,6 +369,7 @@ const searchDataDefault = () => {
ModuleType: null, ModuleType: null,
ReadingStatus: null, ReadingStatus: null,
Name: '', Name: '',
CompleteClinicalData: '',
PageIndex: 1, PageIndex: 1,
PageSize: 20 PageSize: 20
} }

View File

@ -237,7 +237,7 @@
<span v-else>{{ $t('trials:crcUpload:label:noneDicom') }}: {{ scope.row.NoneDicomStudyCount }}</span> <span v-else>{{ $t('trials:crcUpload:label:noneDicom') }}: {{ scope.row.NoneDicomStudyCount }}</span>
</div> </div>
<span> <span>
{{ scope.row.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0?[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount,scope.row.IsHaveClinicalData?'w/':'w/o'].join(','):[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount].join(', ') }} {{ scope.row.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0?[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount,scope.row.IsHaveClinicalData?'w/':'w/o'].join(', '):[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount].join(', ') }}
</span> </span>
</el-tooltip> </el-tooltip>
</template> </template>