CRC在影像上传时录入的是英文的部位,但是在Study页面和Reading页面显示的部位却为中文
continuous-integration/drone/push Build is running Details

main
wangxiaoshuang 2026-01-16 10:29:57 +08:00
parent 785ca4ad47
commit 0f845df8dd
1 changed files with 95 additions and 178 deletions

View File

@ -5,18 +5,9 @@
<el-form :inline="true">
<!-- Site -->
<el-form-item :label="$t('trials:studyList:table:site')">
<el-select
v-model="searchData.SiteId"
clearable
filterable
style="width: 150px"
>
<el-option
v-for="item of siteOptions"
:key="item.SiteId"
:label="item.TrialSiteCode"
:value="item.SiteId"
/>
<el-select v-model="searchData.SiteId" clearable filterable style="width: 150px">
<el-option v-for="item of siteOptions" :key="item.SiteId" :label="item.TrialSiteCode"
:value="item.SiteId" />
</el-select>
</el-form-item>
<!-- Subject -->
@ -25,19 +16,9 @@
</el-form-item>
<!-- Visit -->
<el-form-item :label="$t('trials:studyList:table:visit')">
<el-select
v-model="searchData.VisitPlanArray"
clearable
filterable
multiple
collapse-tags
>
<el-option
v-for="(item, index) of visitPlanOptions"
:key="index"
:label="item.VisitName"
:value="item.VisitNum"
>
<el-select v-model="searchData.VisitPlanArray" clearable filterable multiple collapse-tags>
<el-option v-for="(item, index) of visitPlanOptions" :key="index" :label="item.VisitName"
:value="item.VisitNum">
<span style="float: left">{{ item.VisitName }}</span>
</el-option>
<el-option key="Other" label="Out of Plan" value="1.11" />
@ -45,12 +26,7 @@
</el-form-item>
<el-form-item :label="$t('trials:studyList:table:isFromPacs')">
<el-select v-model="searchData.IsFromPACS" clearable>
<el-option
v-for="item of $d.UploadType"
:key="item.id"
:label="item.label"
:value="item.value"
>
<el-option v-for="item of $d.UploadType" :key="item.id" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
@ -60,11 +36,7 @@
{{ $t("common:button:search") }}
</el-button>
<!-- 重置 -->
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
{{ $t("common:button:reset") }}
</el-button>
</el-form-item>
@ -73,42 +45,22 @@
<!-- 检查列表 -->
<template slot="main-container">
<el-table
v-loading="loading"
v-adaptive="{ bottomOffset: 60 }"
:data="list"
stripe
height="100"
@sort-change="handleSortByColumn"
>
<el-table v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="list" stripe height="100"
@sort-change="handleSortByColumn">
<el-table-column type="index" width="40" />
<!-- Study ID -->
<el-table-column
prop="StudyCode"
:label="$t('trials:studyList:table:studyId')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
<el-table-column prop="StudyCode" :label="$t('trials:studyList:table:studyId')" show-overflow-tooltip
sortable="custom" min-width="100" />
<!-- Image Type -->
<el-table-column
prop="IsDicom"
:label="$t('trials:studyList:table:imageType')"
sortable="custom"
min-width="100"
>
<el-table-column prop="IsDicom" :label="$t('trials:studyList:table:imageType')" sortable="custom"
min-width="100">
<template slot-scope="scope">
<el-tag v-if="scope.row.IsDicom" type="primary">DICOM</el-tag>
<el-tag v-else type="danger">Non-DICOM</el-tag>
</template>
</el-table-column>
<el-table-column
prop="StudyTime"
sortable="custom"
min-width="150"
show-overflow-tooltip
>
<el-table-column prop="StudyTime" sortable="custom" min-width="150" show-overflow-tooltip>
<template slot="header">
<el-tooltip placement="top">
<!-- Modality,Body Part Examined,Count,Study Date -->
@ -132,7 +84,7 @@
</div>
<div v-else style="color: #f44336">N/A,</div>
<div v-if="scope.row.Bodypart" style="margin: 0 3px">
{{ scope.row.Bodypart }},
{{ getBodyPart(scope.row.Bodypart, scope.row.BodyPartForEditOther) }},
</div>
<div v-else style="color: #f44336; margin: 0 3px">N/A,</div>
<div v-if="scope.row.StudyTime">
@ -179,21 +131,18 @@
{{ $t('trials:studyList:button:view') }}
</router-link>
</template>
</el-table-column>
</el-table>
<div slot="reference" class="name-wrapper">
<span style="color:#428bca;cursor:pointer;" @click="handleGetseriesList(scope.row)">
{{ `${scope.row.Count}` }}
</span>
</div>
</el-popover>
<el-button
v-else-if="scope.row.Count && !scope.row.IsDicom"
type="text"
@click.native.prevent="handlePreviewNonDicom(scope.row)"
>
{{ scope.row.Count }}
</el-button> -->
</el-table-column>
</el-table>
<div slot="reference" class="name-wrapper">
<span style="color:#428bca;cursor:pointer;" @click="handleGetseriesList(scope.row)">
{{ `${scope.row.Count}` }}
</span>
</div>
</el-popover>
<el-button v-else-if="scope.row.Count && !scope.row.IsDicom" type="text"
@click.native.prevent="handlePreviewNonDicom(scope.row)">
{{ scope.row.Count }}
</el-button> -->
<!-- <span>({{ scope.row.Count }})</span> -->
<!-- <span v-else style="color:#f44336;">N/A</span> -->
</div>
@ -214,8 +163,7 @@
</el-tooltip>
</template>
<template slot-scope="scope">
<span v-if="scope.row.TrialSiteCode"
>{{ scope.row.TrialSiteCode }},
<span v-if="scope.row.TrialSiteCode">{{ scope.row.TrialSiteCode }},
</span>
<span v-else style="color: #f44336">N/A, </span>
<span v-if="scope.row.TrialSiteAliasName">{{
@ -224,12 +172,8 @@
<span v-else style="color: #f44336">N/A</span>
</template>
</el-table-column>
<el-table-column
prop="SubjectCode"
:label="$t('trials:studyList:table:subject')"
sortable="custom"
show-overflow-tooltip
/>
<el-table-column prop="SubjectCode" :label="$t('trials:studyList:table:subject')" sortable="custom"
show-overflow-tooltip />
<el-table-column min-width="90" show-overflow-tooltip>
<template slot="header">
<el-tooltip placement="top">
@ -249,68 +193,34 @@
<span>{{ scope.row.VisitNum }}</span>
</template>
</el-table-column>
<el-table-column
prop="Uploader"
:label="$t('trials:studyList:table:uploader')"
show-overflow-tooltip
sortable="custom"
min-width="80"
/>
<el-table-column
prop="UploadTime"
:label="$t('trials:studyList:table:uploadTime')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<el-table-column
prop="IsFromPACS"
:label="$t('trials:studyList:table:isFromPacs')"
show-overflow-tooltip
sortable="custom"
min-width="120"
>
<el-table-column prop="Uploader" :label="$t('trials:studyList:table:uploader')" show-overflow-tooltip
sortable="custom" min-width="80" />
<el-table-column prop="UploadTime" :label="$t('trials:studyList:table:uploadTime')" show-overflow-tooltip
sortable="custom" min-width="120" />
<el-table-column prop="IsFromPACS" :label="$t('trials:studyList:table:isFromPacs')" show-overflow-tooltip
sortable="custom" min-width="120">
<template slot-scope="scope">
<el-tag :type="scope.row.IsFromPACS ? 'warning' : ''">
{{ $fd("UploadType", scope.row.IsFromPACS) }}
</el-tag>
</template>
</el-table-column>
<el-table-column
:label="$t('common:action:action')"
min-width="100"
fixed="right"
>
<el-table-column :label="$t('common:action:action')" min-width="100" fixed="right">
<template slot-scope="scope">
<!-- 查看 -->
<el-button
:disabled="!scope.row.Count"
circle
:title="$t('trials:studyList:button:view')"
icon="el-icon-view"
@click="handleViewStudy(scope.row)"
/>
<el-button :disabled="!scope.row.Count" circle :title="$t('trials:studyList:button:view')"
icon="el-icon-view" @click="handleViewStudy(scope.row)" />
<!-- 分享检查 -->
<el-button
v-hasPermi="['trials:trials-panel:study:share']"
:disabled="!(scope.row.Count > 0 && scope.row.IsDicom)"
circle
:title="$t('trials:studyList:action:share')"
icon="el-icon-share"
@click="handleShareImage(scope.row)"
/>
<el-button v-hasPermi="['trials:trials-panel:study:share']"
:disabled="!(scope.row.Count > 0 && scope.row.IsDicom)" circle
:title="$t('trials:studyList:action:share')" icon="el-icon-share" @click="handleShareImage(scope.row)" />
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
class="page"
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
@pagination="getList" />
</template>
<base-model :config="share_model">
@ -327,30 +237,17 @@
<el-input v-model="extractionCode" style="width: 100px" readonly />
</div>
<div>
<el-button type="primary" round @click="copyCode"
>复制链接及提取码</el-button
>
<el-button type="primary" round @click="copyCode"></el-button>
</div>
</template>
</base-model>
<!-- 预览非Dicom影像 -->
<el-dialog
v-if="previewNonDicomVisible"
:visible.sync="previewNonDicomVisible"
:title="$t('trials:studyList:dialogTitle:view')"
:fullscreen="true"
append-to-body
custom-class="base-dialog-wrapper"
>
<div
class="base-modal-body"
style="border: 2px solid #ccc; padding: 10px"
>
<NonDicomPreview
v-if="previewNonDicomVisible"
:none-dicom-id="rowData.Id"
/>
<el-dialog v-if="previewNonDicomVisible" :visible.sync="previewNonDicomVisible"
:title="$t('trials:studyList:dialogTitle:view')" :fullscreen="true" append-to-body
custom-class="base-dialog-wrapper">
<div class="base-modal-body" style="border: 2px solid #ccc; padding: 10px">
<NonDicomPreview v-if="previewNonDicomVisible" :none-dicom-id="rowData.Id" />
</div>
</el-dialog>
</BaseContainer>
@ -411,16 +308,36 @@ export default {
trialId: this.$route.query.trialId,
tokenKey: getToken(),
openWindow: null,
bp: [],
BodyPart: {}
};
},
async mounted() {
this.bp = await this.$getBodyPart(this.$route.query.trialId);
this.BodyPart.Bodypart = await this.$getBodyPart(this.$route.query.trialId)
this.getSite();
this.getVisitPlanOptions();
this.getList();
},
methods: {
getBodyPart(bodyPart, other) {
if (!bodyPart && !other) return ''
var separator = ','
if (bodyPart.indexOf('|') > -1) {
separator = '|'
} else if (bodyPart.indexOf(',') > -1) {
separator = ','
} else if (bodyPart.indexOf('') > -1) {
separator = ''
}
var arr = bodyPart.split(separator)
var newArr = arr.map((i) => {
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
})
if (other) {
newArr.push(other)
}
newArr = newArr.filter(Boolean)
return newArr.join(' | ')
},
//
getList() {
this.loading = true;
@ -550,28 +467,28 @@ export default {
this.loading = false;
});
},
getBodyPart(bodyPart) {
if (!bodyPart) return "";
var separator = ",";
if (bodyPart.indexOf("|") > -1) {
separator = "|";
} else if (bodyPart.indexOf(",") > -1) {
separator = ",";
} else if (bodyPart.indexOf("") > -1) {
separator = "";
}
var arr = bodyPart.split(separator);
var newArr = arr.map((i) => {
return this.$fd(
"Bodypart",
i.trim(),
"Code",
{ Bodypart: this.bp },
"Name"
);
});
return newArr.join(" | ");
},
// getBodyPart(bodyPart) {
// if (!bodyPart) return "";
// var separator = ",";
// if (bodyPart.indexOf("|") > -1) {
// separator = "|";
// } else if (bodyPart.indexOf(",") > -1) {
// separator = ",";
// } else if (bodyPart.indexOf("") > -1) {
// separator = "";
// }
// var arr = bodyPart.split(separator);
// var newArr = arr.map((i) => {
// return this.$fd(
// "Bodypart",
// i.trim(),
// "Code",
// { Bodypart: this.bp },
// "Name"
// );
// });
// return newArr.join(" | ");
// },
//
copyCode() {
this.$copyText(`链接: ${this.shareLink} 提取码: ${this.extractionCode}`)