pacs直连、检查查询条件新增
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
9b6f8717c3
commit
90e33e1b97
|
@ -3810,4 +3810,12 @@ export function submitVisitStudyBinding(data) {
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 获取pacs检查技术
|
||||||
|
export function getDicomModalityList(params) {
|
||||||
|
return request({
|
||||||
|
url: `/Patient/getDicomModalityList`,
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
v-model="searchData.SiteId"
|
v-model="searchData.SiteId"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
style="width:150px"
|
style="width: 150px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item of siteOptions"
|
v-for="item of siteOptions"
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- Subject -->
|
<!-- Subject -->
|
||||||
<el-form-item :label="$t('trials:studyList:table:subject')">
|
<el-form-item :label="$t('trials:studyList:table:subject')">
|
||||||
<el-input v-model="searchData.SubjectInfo" style="width:140px" />
|
<el-input v-model="searchData.SubjectInfo" style="width: 140px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- Visit -->
|
<!-- Visit -->
|
||||||
<el-form-item :label="$t('trials:studyList:table:visit')">
|
<el-form-item :label="$t('trials:studyList:table:visit')">
|
||||||
|
@ -40,32 +40,42 @@
|
||||||
>
|
>
|
||||||
<span style="float: left">{{ item.VisitName }}</span>
|
<span style="float: left">{{ item.VisitName }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
|
<el-option key="Other" label="Out of Plan" value="1.11" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="$t('trials:studyList:table:isFromPacs')">
|
||||||
|
<el-select v-model="searchData.IsFromPACS" clearable>
|
||||||
<el-option
|
<el-option
|
||||||
key="Other"
|
v-for="item of $d.UploadType"
|
||||||
label="Out of Plan"
|
:key="item.id"
|
||||||
value="1.11"
|
:label="item.label"
|
||||||
/>
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</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") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 重置 -->
|
<!-- 重置 -->
|
||||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
<el-button
|
||||||
{{ $t('common:button:reset') }}
|
type="primary"
|
||||||
|
icon="el-icon-refresh-left"
|
||||||
|
@click="handleReset"
|
||||||
|
>
|
||||||
|
{{ $t("common:button:reset") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 检查列表 -->
|
<!-- 检查列表 -->
|
||||||
<template slot="main-container">
|
<template slot="main-container">
|
||||||
<el-table
|
<el-table
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
v-adaptive="{bottomOffset:60}"
|
v-adaptive="{ bottomOffset: 60 }"
|
||||||
:data="list"
|
:data="list"
|
||||||
stripe
|
stripe
|
||||||
height="100"
|
height="100"
|
||||||
|
@ -104,19 +114,31 @@
|
||||||
<!-- Modality,Body Part Examined,Count,Study Date -->
|
<!-- Modality,Body Part Examined,Count,Study Date -->
|
||||||
<!-- Study Info -->
|
<!-- Study Info -->
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
{{ `${$t('trials:studyList:table:modality')}, ${$t('trials:studyList:table:bodyPart')}, ${$t('trials:studyList:table:studyDate')}, ${$t('trials:studyList:table:count')}` }}
|
{{
|
||||||
|
`${$t("trials:studyList:table:modality")}, ${$t(
|
||||||
|
"trials:studyList:table:bodyPart"
|
||||||
|
)}, ${$t("trials:studyList:table:studyDate")}, ${$t(
|
||||||
|
"trials:studyList:table:count"
|
||||||
|
)}`
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ $t('trials:studyList:table:studyInfo') }}</span>
|
<span>{{ $t("trials:studyList:table:studyInfo") }}</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<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">
|
||||||
<div v-else style="color:#f44336;">N/A, </div>
|
{{ scope.row.Modalities }}({{ scope.row.Count }}),
|
||||||
<div v-if="scope.row.Bodypart" style="margin:0 3px;">{{ scope.row.Bodypart }}, </div>
|
</div>
|
||||||
<div v-else style="color:#f44336;margin:0 3px;">N/A, </div>
|
<div v-else style="color: #f44336">N/A,</div>
|
||||||
<div v-if="scope.row.StudyTime">{{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }} </div>
|
<div v-if="scope.row.Bodypart" style="margin: 0 3px">
|
||||||
<div v-else style="color:#f44336;">N/A </div>
|
{{ scope.row.Bodypart }},
|
||||||
|
</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-else style="color: #f44336">N/A</div>
|
||||||
<div>
|
<div>
|
||||||
<!-- <el-popover v-if="scope.row.Count && scope.row.IsDicom" trigger="click" placement="bottom">
|
<!-- <el-popover v-if="scope.row.Count && scope.row.IsDicom" trigger="click" placement="bottom">
|
||||||
<el-table v-loading="seriesLoading" :data="seriesList" height="200" size="small" class="seriesListOfStudy">
|
<el-table v-loading="seriesLoading" :data="seriesList" height="200" size="small" class="seriesListOfStudy">
|
||||||
|
@ -174,29 +196,32 @@
|
||||||
</el-button> -->
|
</el-button> -->
|
||||||
<!-- <span>({{ scope.row.Count }})</span> -->
|
<!-- <span>({{ scope.row.Count }})</span> -->
|
||||||
<!-- <span v-else style="color:#f44336;">N/A</span> -->
|
<!-- <span v-else style="color:#f44336;">N/A</span> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column min-width="120" show-overflow-tooltip>
|
||||||
min-width="120"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot="header">
|
<template slot="header">
|
||||||
<el-tooltip placement="top">
|
<el-tooltip placement="top">
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
{{ `${$t('trials:studyList:table:siteId')}, ${$t('trials:studyList:table:siteName')}` }}
|
{{
|
||||||
|
`${$t("trials:studyList:table:siteId")}, ${$t(
|
||||||
|
"trials:studyList:table:siteName"
|
||||||
|
)}`
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ $t('trials:studyList:table:site') }}</span>
|
<span>{{ $t("trials:studyList:table:site") }}</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.TrialSiteCode">{{ scope.row.TrialSiteCode }}, </span>
|
<span v-if="scope.row.TrialSiteCode"
|
||||||
<span v-else style="color:#f44336;">N/A, </span>
|
>{{ scope.row.TrialSiteCode }},
|
||||||
<span v-if="scope.row.TrialSiteAliasName">{{ scope.row.TrialSiteAliasName }}</span>
|
</span>
|
||||||
<span v-else style="color:#f44336;">N/A</span>
|
<span v-else style="color: #f44336">N/A, </span>
|
||||||
|
<span v-if="scope.row.TrialSiteAliasName">{{
|
||||||
|
scope.row.TrialSiteAliasName
|
||||||
|
}}</span>
|
||||||
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
@ -205,21 +230,22 @@
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column min-width="90" show-overflow-tooltip>
|
||||||
min-width="90"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot="header">
|
<template slot="header">
|
||||||
<el-tooltip placement="top">
|
<el-tooltip placement="top">
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
{{ `${$t('trials:studyList:table:visitName')}, ${$t('trials:studyList:table:visitNum')}` }}<br>
|
{{
|
||||||
|
`${$t("trials:studyList:table:visitName")}, ${$t(
|
||||||
|
"trials:studyList:table:visitNum"
|
||||||
|
)}`
|
||||||
|
}}<br />
|
||||||
</div>
|
</div>
|
||||||
<span>{{ $t('trials:studyList:table:visit') }}</span>
|
<span>{{ $t("trials:studyList:table:visit") }}</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.VisitName">{{ scope.row.VisitName }}, </span>
|
<span v-if="scope.row.VisitName">{{ scope.row.VisitName }}, </span>
|
||||||
<span v-else style="color:#f44336;">N/A, </span>
|
<span v-else style="color: #f44336">N/A, </span>
|
||||||
<span>{{ scope.row.VisitNum }}</span>
|
<span>{{ scope.row.VisitNum }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -237,8 +263,24 @@
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
/>
|
/>
|
||||||
|
<el-table-column
|
||||||
<el-table-column :label="$t('common:action:action')" min-width="100" fixed="right">
|
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"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 查看 -->
|
<!-- 查看 -->
|
||||||
<el-button
|
<el-button
|
||||||
|
@ -262,23 +304,32 @@
|
||||||
</el-table>
|
</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>
|
</template>
|
||||||
|
|
||||||
<base-model :config="share_model">
|
<base-model :config="share_model">
|
||||||
<template slot="dialog-body">
|
<template slot="dialog-body">
|
||||||
<div>
|
<div>
|
||||||
<i style="color:#428bca;" class="el-icon-success" />
|
<i style="color: #428bca" class="el-icon-success" />
|
||||||
<span>成功创建分享链接</span>
|
<span>成功创建分享链接</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin:10px 0;">
|
<div style="margin: 10px 0">
|
||||||
链接:<el-input v-model="shareLink" readonly style="width:420px;" />
|
链接:<el-input v-model="shareLink" readonly style="width: 420px" />
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:20px;">
|
<div style="margin-bottom: 20px">
|
||||||
提取码: <el-input v-model="extractionCode" style="width:100px;" readonly />
|
提取码:
|
||||||
|
<el-input v-model="extractionCode" style="width: 100px" readonly />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" round @click="copyCode">复制链接及提取码</el-button>
|
<el-button type="primary" round @click="copyCode"
|
||||||
|
>复制链接及提取码</el-button
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</base-model>
|
</base-model>
|
||||||
|
@ -292,11 +343,16 @@
|
||||||
append-to-body
|
append-to-body
|
||||||
custom-class="base-dialog-wrapper"
|
custom-class="base-dialog-wrapper"
|
||||||
>
|
>
|
||||||
<div class="base-modal-body" style="border:2px solid #ccc;padding: 10px">
|
<div
|
||||||
<NonDicomPreview v-if="previewNonDicomVisible" :none-dicom-id="rowData.Id" />
|
class="base-modal-body"
|
||||||
|
style="border: 2px solid #ccc; padding: 10px"
|
||||||
|
>
|
||||||
|
<NonDicomPreview
|
||||||
|
v-if="previewNonDicomVisible"
|
||||||
|
:none-dicom-id="rowData.Id"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
</BaseContainer>
|
</BaseContainer>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
@ -305,28 +361,28 @@ import {
|
||||||
getTrialSiteSelect,
|
getTrialSiteSelect,
|
||||||
getSeriesList,
|
getSeriesList,
|
||||||
getTrialVisitStageSelect,
|
getTrialVisitStageSelect,
|
||||||
getNoneDicomStudyFileList
|
getNoneDicomStudyFileList,
|
||||||
|
} from "@/api/trials";
|
||||||
} from '@/api/trials'
|
import { createImageShare } from "@/api/share";
|
||||||
import { createImageShare } from '@/api/share'
|
import BaseContainer from "@/components/BaseContainer";
|
||||||
import BaseContainer from '@/components/BaseContainer'
|
import Pagination from "@/components/Pagination";
|
||||||
import Pagination from '@/components/Pagination'
|
import BaseModel from "@/components/BaseModel";
|
||||||
import BaseModel from '@/components/BaseModel'
|
import NonDicomPreview from "./components/nonDicomPreview";
|
||||||
import NonDicomPreview from './components/nonDicomPreview'
|
import moment from "moment";
|
||||||
import moment from 'moment'
|
import { getToken } from "@/utils/auth";
|
||||||
import { getToken } from '@/utils/auth'
|
|
||||||
const searchDataDefault = () => {
|
const searchDataDefault = () => {
|
||||||
return {
|
return {
|
||||||
SubjectInfo: '',
|
SubjectInfo: "",
|
||||||
VisitPlanArray: [],
|
VisitPlanArray: [],
|
||||||
Status: '',
|
IsFromPACS: null,
|
||||||
SiteId: '',
|
Status: "",
|
||||||
|
SiteId: "",
|
||||||
PageIndex: 1,
|
PageIndex: 1,
|
||||||
PageSize: 20
|
PageSize: 20,
|
||||||
}
|
};
|
||||||
}
|
};
|
||||||
export default {
|
export default {
|
||||||
name: 'StudyList',
|
name: "StudyList",
|
||||||
components: { BaseContainer, Pagination, BaseModel, NonDicomPreview },
|
components: { BaseContainer, Pagination, BaseModel, NonDicomPreview },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -339,195 +395,217 @@ export default {
|
||||||
seriesList: [],
|
seriesList: [],
|
||||||
nonDicomfilesList: [],
|
nonDicomfilesList: [],
|
||||||
rowData: {},
|
rowData: {},
|
||||||
userTypeEnumInt: zzSessionStorage.getItem('userTypeEnumInt') * 1,
|
userTypeEnumInt: zzSessionStorage.getItem("userTypeEnumInt") * 1,
|
||||||
share_model: { visible: false, title: '影像分享', showClose: true, width: '500px' },
|
share_model: {
|
||||||
shareLink: '',
|
visible: false,
|
||||||
extractionCode: '',
|
title: "影像分享",
|
||||||
|
showClose: true,
|
||||||
|
width: "500px",
|
||||||
|
},
|
||||||
|
shareLink: "",
|
||||||
|
extractionCode: "",
|
||||||
moment,
|
moment,
|
||||||
filesLoading: '',
|
filesLoading: "",
|
||||||
seriesLoading: '',
|
seriesLoading: "",
|
||||||
previewNonDicomVisible: false,
|
previewNonDicomVisible: false,
|
||||||
trialId: this.$route.query.trialId,
|
trialId: this.$route.query.trialId,
|
||||||
tokenKey: getToken(),
|
tokenKey: getToken(),
|
||||||
openWindow: null,
|
openWindow: null,
|
||||||
bp: []
|
bp: [],
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
this.bp = await this.$getBodyPart(this.$route.query.trialId)
|
this.bp = await this.$getBodyPart(this.$route.query.trialId);
|
||||||
this.getSite()
|
this.getSite();
|
||||||
this.getVisitPlanOptions()
|
this.getVisitPlanOptions();
|
||||||
this.getList()
|
this.getList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 获取检查列表数据
|
// 获取检查列表数据
|
||||||
getList() {
|
getList() {
|
||||||
this.loading = true
|
this.loading = true;
|
||||||
this.searchData.TrialId = this.trialId
|
this.searchData.TrialId = this.trialId;
|
||||||
getDicomAndNoneDicomStudyList(this.searchData)
|
getDicomAndNoneDicomStudyList(this.searchData)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
this.loading = false
|
this.loading = false;
|
||||||
this.list = res.Result.CurrentPageData
|
this.list = res.Result.CurrentPageData;
|
||||||
this.total = res.Result.TotalCount
|
this.total = res.Result.TotalCount;
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
this.loading = false
|
this.loading = false;
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 获取某个Dicom检查下的序列信息
|
// 获取某个Dicom检查下的序列信息
|
||||||
handleGetseriesList(row) {
|
handleGetseriesList(row) {
|
||||||
this.seriesLoading = true
|
this.seriesLoading = true;
|
||||||
this.seriesList = []
|
this.seriesList = [];
|
||||||
getSeriesList(row.Id).then((res) => {
|
getSeriesList(row.Id)
|
||||||
this.seriesLoading = false
|
.then((res) => {
|
||||||
this.seriesList = res.Result
|
this.seriesLoading = false;
|
||||||
}).catch(() => {
|
this.seriesList = res.Result;
|
||||||
this.seriesLoading = false
|
})
|
||||||
})
|
.catch(() => {
|
||||||
|
this.seriesLoading = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 获取某个非Dicom检查下的文件
|
// 获取某个非Dicom检查下的文件
|
||||||
handleGetFilesList(id) {
|
handleGetFilesList(id) {
|
||||||
this.filesLoading = true
|
this.filesLoading = true;
|
||||||
getNoneDicomStudyFileList(id).then(res => {
|
getNoneDicomStudyFileList(id)
|
||||||
this.nonDicomfilesList = res.Result
|
.then((res) => {
|
||||||
this.filesLoading = false
|
this.nonDicomfilesList = res.Result;
|
||||||
}).catch(() => { this.filesLoading = false })
|
this.filesLoading = false;
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.filesLoading = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 预览当前检查下的影像
|
// 预览当前检查下的影像
|
||||||
handleViewStudy(row) {
|
handleViewStudy(row) {
|
||||||
if (this.openWindow) {
|
if (this.openWindow) {
|
||||||
this.openWindow.close()
|
this.openWindow.close();
|
||||||
}
|
}
|
||||||
if (row.IsDicom) {
|
if (row.IsDicom) {
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showdicom?studyId=${row.Id}&TokenKey=${this.tokenKey}&type=Study`
|
path: `/showdicom?studyId=${row.Id}&TokenKey=${this.tokenKey}&type=Study`,
|
||||||
})
|
});
|
||||||
this.openWindow = window.open(routeData.href, '_blank')
|
this.openWindow = window.open(routeData.href, "_blank");
|
||||||
} else {
|
} else {
|
||||||
// this.rowData = { ...row }
|
// this.rowData = { ...row }
|
||||||
// this.previewNonDicomVisible = true
|
// this.previewNonDicomVisible = true
|
||||||
let trialId = this.$route.query.trialId
|
let trialId = this.$route.query.trialId;
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${row.SubjectVisitId}&studyId=${row.Id}&TokenKey=${this.tokenKey}`
|
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${row.SubjectVisitId}&studyId=${row.Id}&TokenKey=${this.tokenKey}`,
|
||||||
})
|
});
|
||||||
this.openWindow = window.open(routeData.href, '_blank')
|
this.openWindow = window.open(routeData.href, "_blank");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handlePreviewNonDicom(row) {
|
handlePreviewNonDicom(row) {
|
||||||
if (this.openWindow) {
|
if (this.openWindow) {
|
||||||
this.openWindow.close()
|
this.openWindow.close();
|
||||||
}
|
}
|
||||||
let trialId = this.$route.query.trialId
|
let trialId = this.$route.query.trialId;
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${row.SubjectVisitId}&studyId=${row.Id}&TokenKey=${this.tokenKey}`
|
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${row.SubjectVisitId}&studyId=${row.Id}&TokenKey=${this.tokenKey}`,
|
||||||
})
|
});
|
||||||
this.openWindow = window.open(routeData.href, '_blank')
|
this.openWindow = window.open(routeData.href, "_blank");
|
||||||
},
|
},
|
||||||
// 预览
|
// 预览
|
||||||
handlePreview(row) {
|
handlePreview(row) {
|
||||||
if (this.openWindow) {
|
if (this.openWindow) {
|
||||||
this.openWindow.close()
|
this.openWindow.close();
|
||||||
}
|
}
|
||||||
this.openWindow = window.open(row.FullFilePath, '_blank')
|
this.openWindow = window.open(row.FullFilePath, "_blank");
|
||||||
},
|
},
|
||||||
// 格式化状态码
|
// 格式化状态码
|
||||||
studyStatusFormatter(StudyStatus) {
|
studyStatusFormatter(StudyStatus) {
|
||||||
if (StudyStatus === 5) return 'Uploaded'
|
if (StudyStatus === 5) return "Uploaded";
|
||||||
else if (StudyStatus === 1) return 'Uploading'
|
else if (StudyStatus === 1) return "Uploading";
|
||||||
else if (StudyStatus === 7) return 'QA Requested'
|
else if (StudyStatus === 7) return "QA Requested";
|
||||||
else if (StudyStatus === 10) return 'In QA'
|
else if (StudyStatus === 10) return "In QA";
|
||||||
else if (StudyStatus === 25) return 'QA-Passed'
|
else if (StudyStatus === 25) return "QA-Passed";
|
||||||
else if (StudyStatus === 26) return 'QA-Failed'
|
else if (StudyStatus === 26) return "QA-Failed";
|
||||||
else if (StudyStatus === 28) return 'Anonymizing'
|
else if (StudyStatus === 28) return "Anonymizing";
|
||||||
else if (StudyStatus === 30) return 'Anonymized'
|
else if (StudyStatus === 30) return "Anonymized";
|
||||||
else if (StudyStatus === 32) return 'Anonymizing Failed'
|
else if (StudyStatus === 32) return "Anonymizing Failed";
|
||||||
else if (StudyStatus === 34) return 'Forwarding'
|
else if (StudyStatus === 34) return "Forwarding";
|
||||||
else if (StudyStatus === 36) return 'Forwarded'
|
else if (StudyStatus === 36) return "Forwarded";
|
||||||
else if (StudyStatus === 38) return 'Forwarding Failed'
|
else if (StudyStatus === 38) return "Forwarding Failed";
|
||||||
else return ''
|
else return "";
|
||||||
},
|
},
|
||||||
// 获取site下拉框数据
|
// 获取site下拉框数据
|
||||||
getSite() {
|
getSite() {
|
||||||
getTrialSiteSelect(this.trialId).then((res) => {
|
getTrialSiteSelect(this.trialId).then((res) => {
|
||||||
this.siteOptions = res.Result
|
this.siteOptions = res.Result;
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 获取visit下拉框数据
|
// 获取visit下拉框数据
|
||||||
getVisitPlanOptions() {
|
getVisitPlanOptions() {
|
||||||
getTrialVisitStageSelect(this.trialId)
|
getTrialVisitStageSelect(this.trialId).then((res) => {
|
||||||
.then((res) => {
|
this.visitPlanOptions = res.Result;
|
||||||
this.visitPlanOptions = res.Result
|
});
|
||||||
})
|
|
||||||
},
|
},
|
||||||
// 分享影像链接
|
// 分享影像链接
|
||||||
handleShareImage(row) {
|
handleShareImage(row) {
|
||||||
this.shareLink = ''
|
this.shareLink = "";
|
||||||
this.extractionCode = ''
|
this.extractionCode = "";
|
||||||
const params = {
|
const params = {
|
||||||
TrialId: row.TrialId,
|
TrialId: row.TrialId,
|
||||||
SiteId: row.SiteId,
|
SiteId: row.SiteId,
|
||||||
SubjectId: row.SubjectId,
|
SubjectId: row.SubjectId,
|
||||||
StudyId: row.Id
|
StudyId: row.Id,
|
||||||
}
|
};
|
||||||
this.loading = true
|
this.loading = true;
|
||||||
createImageShare(params).then((res) => {
|
createImageShare(params)
|
||||||
this.loading = false
|
.then((res) => {
|
||||||
if (res.IsSuccess) {
|
this.loading = false;
|
||||||
// this.shareLink = `${window.location.origin}${window.location.pathname}#/imagesShare?id=${res.Result.ResourceId}`
|
if (res.IsSuccess) {
|
||||||
this.shareLink = `${window.location.origin}/imagesShare?id=${res.Result.ResourceId}`
|
// this.shareLink = `${window.location.origin}${window.location.pathname}#/imagesShare?id=${res.Result.ResourceId}`
|
||||||
this.extractionCode = res.Result.Password
|
this.shareLink = `${window.location.origin}/imagesShare?id=${res.Result.ResourceId}`;
|
||||||
this.share_model.visible = true
|
this.extractionCode = res.Result.Password;
|
||||||
}
|
this.share_model.visible = true;
|
||||||
}).catch(() => { this.loading = false })
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
getBodyPart(bodyPart) {
|
getBodyPart(bodyPart) {
|
||||||
if (!bodyPart) return ''
|
if (!bodyPart) return "";
|
||||||
var separator = ','
|
var separator = ",";
|
||||||
if (bodyPart.indexOf('|') > -1) {
|
if (bodyPart.indexOf("|") > -1) {
|
||||||
separator = '|'
|
separator = "|";
|
||||||
} else if (bodyPart.indexOf(',') > -1) {
|
} else if (bodyPart.indexOf(",") > -1) {
|
||||||
separator = ','
|
separator = ",";
|
||||||
} else if (bodyPart.indexOf(',') > -1) {
|
} else if (bodyPart.indexOf(",") > -1) {
|
||||||
separator = ','
|
separator = ",";
|
||||||
}
|
}
|
||||||
var arr = bodyPart.split(separator)
|
var arr = bodyPart.split(separator);
|
||||||
var newArr = arr.map(i => {
|
var newArr = arr.map((i) => {
|
||||||
return this.$fd('Bodypart', i.trim(), 'Code', { Bodypart: this.bp }, 'Name')
|
return this.$fd(
|
||||||
})
|
"Bodypart",
|
||||||
return newArr.join(' | ')
|
i.trim(),
|
||||||
|
"Code",
|
||||||
|
{ Bodypart: this.bp },
|
||||||
|
"Name"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return newArr.join(" | ");
|
||||||
},
|
},
|
||||||
// 复制
|
// 复制
|
||||||
copyCode() {
|
copyCode() {
|
||||||
this.$copyText(`链接: ${this.shareLink} 提取码: ${this.extractionCode}`).then(
|
this.$copyText(`链接: ${this.shareLink} 提取码: ${this.extractionCode}`)
|
||||||
res => {
|
.then((res) => {
|
||||||
this.$message.success('复制成功')
|
this.$message.success("复制成功");
|
||||||
}
|
})
|
||||||
).catch(() => { this.$alert('复制失败') })
|
.catch(() => {
|
||||||
|
this.$alert("复制失败");
|
||||||
|
});
|
||||||
},
|
},
|
||||||
onCopyError() {
|
onCopyError() {
|
||||||
this.$alert('复制失败')
|
this.$alert("复制失败");
|
||||||
},
|
},
|
||||||
// 查询
|
// 查询
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
this.searchData.PageIndex = 1
|
this.searchData.PageIndex = 1;
|
||||||
this.getList()
|
this.getList();
|
||||||
},
|
},
|
||||||
// 重置
|
// 重置
|
||||||
handleReset() {
|
handleReset() {
|
||||||
this.searchData = searchDataDefault()
|
this.searchData = searchDataDefault();
|
||||||
this.getList()
|
this.getList();
|
||||||
},
|
},
|
||||||
// 排序
|
// 排序
|
||||||
handleSortByColumn(column) {
|
handleSortByColumn(column) {
|
||||||
if (column.order === 'ascending') {
|
if (column.order === "ascending") {
|
||||||
this.searchData.Asc = true
|
this.searchData.Asc = true;
|
||||||
} else {
|
} else {
|
||||||
this.searchData.Asc = false
|
this.searchData.Asc = false;
|
||||||
}
|
}
|
||||||
this.searchData.SortField = column.prop
|
this.searchData.SortField = column.prop;
|
||||||
this.searchData.PageIndex = 1
|
this.searchData.PageIndex = 1;
|
||||||
this.getList()
|
this.getList();
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -26,12 +26,15 @@
|
||||||
"
|
"
|
||||||
prop="CalledAE"
|
prop="CalledAE"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-select v-model="searchData.Modalities" clearable>
|
||||||
v-model="searchData.Modalities"
|
<el-option
|
||||||
size="small"
|
v-for="item of DicomModalityList"
|
||||||
clearable
|
:key="item"
|
||||||
style="width: 150px"
|
:label="item"
|
||||||
/>
|
:value="item"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!--检查日期-->
|
<!--检查日期-->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
@ -225,6 +228,7 @@
|
||||||
import {
|
import {
|
||||||
getVisitPatientStudyFilterList,
|
getVisitPatientStudyFilterList,
|
||||||
submitVisitStudyBinding,
|
submitVisitStudyBinding,
|
||||||
|
getDicomModalityList,
|
||||||
} from "@/api/trials";
|
} from "@/api/trials";
|
||||||
import BaseContainer from "@/components/BaseContainer";
|
import BaseContainer from "@/components/BaseContainer";
|
||||||
import Pagination from "@/components/Pagination";
|
import Pagination from "@/components/Pagination";
|
||||||
|
@ -262,12 +266,28 @@ export default {
|
||||||
loading: false,
|
loading: false,
|
||||||
datetimerange: [],
|
datetimerange: [],
|
||||||
tableSelectData: [],
|
tableSelectData: [],
|
||||||
|
DicomModalityList: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
created() {
|
||||||
this.getList();
|
this.getList();
|
||||||
|
this.getDicomModalityList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 获取检查技术列表
|
||||||
|
async getDicomModalityList() {
|
||||||
|
try {
|
||||||
|
let params = {
|
||||||
|
TrialId: this.$route.query.trialId,
|
||||||
|
};
|
||||||
|
let res = await getDicomModalityList(params);
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.DicomModalityList = res.Result;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
handleAddList() {
|
handleAddList() {
|
||||||
if (this.tableSelectData.length < 0)
|
if (this.tableSelectData.length < 0)
|
||||||
return this.$message.warning(
|
return this.$message.warning(
|
||||||
|
|
Loading…
Reference in New Issue