临床试验影像库中的患者影像可以查询新增检查,并可以从PACS拉取到影像库
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
7254622c6d
commit
836d2ffc22
|
@ -188,4 +188,11 @@ export function cMoveVerify(data) {
|
|||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取参加项目
|
||||
export function getUserJoinedTrialPatientList() {
|
||||
return request({
|
||||
url: '/Patient/getUserJoinedTrialPatientList',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
|
@ -1,59 +1,25 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig"
|
||||
>
|
||||
<span slot="title">
|
||||
<div>
|
||||
<span class="title">
|
||||
{{ $t('trials:inspection:title:pullImage') }}
|
||||
<span>{{ tip }}</span>
|
||||
</span>
|
||||
<div class="search">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- pacsDicomAEId -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:pacsDicomAEId')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.PacsDicomAEId"
|
||||
style="width: 140px"
|
||||
@change="pacsDicomAEIdChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of AElist"
|
||||
:key="index.Id"
|
||||
:label="item.CalledAE"
|
||||
:value="item.Id"
|
||||
>
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:pacsDicomAEId')">
|
||||
<el-select v-model="searchData.PacsDicomAEId" style="width: 140px" @change="pacsDicomAEIdChange">
|
||||
<el-option v-for="(item, index) of AElist" :key="index.Id" :label="item.CalledAE" :value="item.Id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- patientID -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:patientID')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.PatientID"
|
||||
clearable
|
||||
style="width: 100px"
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientID')">
|
||||
<el-input v-model="searchData.PatientID" clearable style="width: 100px" :maxlength="400"></el-input>
|
||||
</el-form-item>
|
||||
<!-- patientName -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:patientName')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.PatientName"
|
||||
clearable
|
||||
style="width: 100px"
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientName')">
|
||||
<el-input v-model="searchData.PatientName" clearable style="width: 100px" :maxlength="400"></el-input>
|
||||
</el-form-item>
|
||||
<!-- patientSex -->
|
||||
<!-- <el-form-item
|
||||
|
@ -112,38 +78,16 @@
|
|||
></el-input>
|
||||
</el-form-item> -->
|
||||
<!-- modalitiesInStudy -->
|
||||
<el-form-item
|
||||
:label="$t('trials:inspection:pullImage:search:modalitiesInStudy')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.ModalitiesInStudyList"
|
||||
placeholder=""
|
||||
clearable
|
||||
multiple
|
||||
collapse-tags
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in ModalityList"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
<el-form-item :label="$t('trials:inspection:pullImage:search:modalitiesInStudy')">
|
||||
<el-select v-model="searchData.ModalitiesInStudyList" placeholder="" clearable multiple collapse-tags
|
||||
style="width: 140px">
|
||||
<el-option v-for="item in ModalityList" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- studyDate -->
|
||||
<el-form-item
|
||||
:label="$t('trials:inspection:pullImage:search:studyDate')"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="StudyDate"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyyMMdd"
|
||||
:picker-options="pickerOptions"
|
||||
>
|
||||
<el-form-item :label="$t('trials:inspection:pullImage:search:studyDate')">
|
||||
<el-date-picker v-model="StudyDate" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||
end-placeholder="结束日期" value-format="yyyyMMdd" :picker-options="pickerOptions">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- studyTime -->
|
||||
|
@ -200,97 +144,52 @@
|
|||
{{ $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-button
|
||||
type="primary"
|
||||
:disabled="!multipleSelection || multipleSelection.length <= 0"
|
||||
@click="pullImage()"
|
||||
>
|
||||
<el-button type="primary" :disabled="!multipleSelection || multipleSelection.length <= 0"
|
||||
@click="pullImage()">
|
||||
{{ $t('trials:inspection:button:pull') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--检查列表-->
|
||||
<el-table
|
||||
ref="viewStudyList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="PageList"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table ref="viewStudyList" v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="PageList" stripe
|
||||
height="100" @sort-change="handleSortByColumn" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column type="index" width="50">
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
style="
|
||||
<span style="
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
"
|
||||
>
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="dark"
|
||||
:content="$t('trials:inspection:pullImage:tip:has')"
|
||||
placement="top"
|
||||
style="margin-right: 3px"
|
||||
>
|
||||
<i
|
||||
v-if="scope.row.IsStudyExist"
|
||||
class="el-icon-success icon-i"
|
||||
></i>
|
||||
">
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:inspection:pullImage:tip:has')" placement="top"
|
||||
style="margin-right: 3px">
|
||||
<i v-if="scope.row.IsStudyExist" class="el-icon-success icon-i"></i>
|
||||
</el-tooltip>
|
||||
<span>{{ scope.$index + 1 }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--patientID-->
|
||||
<el-table-column
|
||||
prop="PatientID"
|
||||
:label="$t('trials:inspection:pullImage:table:patientID')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="PatientID" :label="$t('trials:inspection:pullImage:table:patientID')" show-overflow-tooltip
|
||||
min-width="120" sortable="custom" />
|
||||
<!--patientName-->
|
||||
<el-table-column
|
||||
prop="PatientName"
|
||||
:label="$t('trials:inspection:pullImage:table:patientName')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="PatientName" :label="$t('trials:inspection:pullImage:table:patientName')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--patientSex-->
|
||||
<el-table-column
|
||||
prop="PatientSex"
|
||||
:label="$t('trials:inspection:pullImage:table:patientSex')"
|
||||
show-overflow-tooltip
|
||||
min-width="80"
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="PatientSex" :label="$t('trials:inspection:pullImage:table:patientSex')"
|
||||
show-overflow-tooltip min-width="80" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ $fd('Sex', scope.row.PatientSex) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--patientBirthDate-->
|
||||
<el-table-column
|
||||
prop="PatientBirthDate"
|
||||
:label="$t('trials:inspection:pullImage:table:patientBirthDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="PatientBirthDate" :label="$t('trials:inspection:pullImage:table:patientBirthDate')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyID-->
|
||||
<!-- <el-table-column
|
||||
prop="StudyID"
|
||||
|
@ -299,37 +198,17 @@
|
|||
min-width="120"
|
||||
/> -->
|
||||
<!--AccessionNumber-->
|
||||
<el-table-column
|
||||
prop="AccessionNumber"
|
||||
:label="$t('trials:inspection:pullImage:table:AccessionNumber')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="AccessionNumber" :label="$t('trials:inspection:pullImage:table:AccessionNumber')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--modalitiesInStudy-->
|
||||
<el-table-column
|
||||
prop="ModalitiesInStudy"
|
||||
:label="$t('trials:inspection:pullImage:table:modalitiesInStudy')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="ModalitiesInStudy" :label="$t('trials:inspection:pullImage:table:modalitiesInStudy')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyDate-->
|
||||
<el-table-column
|
||||
prop="StudyDate"
|
||||
:label="$t('trials:inspection:pullImage:table:studyDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="StudyDate" :label="$t('trials:inspection:pullImage:table:studyDate')" show-overflow-tooltip
|
||||
min-width="120" sortable="custom" />
|
||||
<!--studyTime-->
|
||||
<el-table-column
|
||||
prop="StudyTime"
|
||||
:label="$t('trials:inspection:pullImage:table:studyTime')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="StudyTime" :label="$t('trials:inspection:pullImage:table:studyTime')" show-overflow-tooltip
|
||||
min-width="120" sortable="custom" />
|
||||
<!--bodyPartExamined-->
|
||||
<!-- <el-table-column
|
||||
prop="BodyPartExamined"
|
||||
|
@ -339,47 +218,26 @@
|
|||
sortable="custom"
|
||||
/> -->
|
||||
<!--studyDescription-->
|
||||
<el-table-column
|
||||
prop="StudyDescription"
|
||||
:label="$t('trials:inspection:pullImage:table:studyDescription')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="StudyDescription" :label="$t('trials:inspection:pullImage:table:studyDescription')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyInstanceUID-->
|
||||
<el-table-column
|
||||
prop="StudyInstanceUID"
|
||||
:label="$t('trials:inspection:pullImage:table:studyInstanceUID')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="StudyInstanceUID" :label="$t('trials:inspection:pullImage:table:studyInstanceUID')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
|
||||
<!--操作-->
|
||||
<el-table-column :label="$t('common:action:action')" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-refresh"
|
||||
class="refreshBtn"
|
||||
:title="$t('trials:inspection:button:pull')"
|
||||
@click.stop="pullImage(scope.row)"
|
||||
/>
|
||||
<el-button circle icon="el-icon-refresh" class="refreshBtn" :title="$t('trials:inspection:button:pull')"
|
||||
@click.stop="pullImage(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="PageIndex"
|
||||
:limit.sync="PageSize"
|
||||
@pagination="paging"
|
||||
/>
|
||||
</el-dialog>
|
||||
<pagination class="page" :total="total" :page.sync="PageIndex" :limit.sync="PageSize" @pagination="paging" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import {
|
||||
getCFindStudyList,
|
||||
|
@ -406,13 +264,9 @@ const defaultSearchData = () => {
|
|||
}
|
||||
}
|
||||
export default {
|
||||
name: 'pushRecordList',
|
||||
name: 'byPatient',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
visible: {
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
calledAeList: {
|
||||
required: true,
|
||||
default: () => {
|
||||
|
@ -435,11 +289,6 @@ export default {
|
|||
MaxStudyCount: null,
|
||||
PatientBirthDate: [],
|
||||
StudyDate: [],
|
||||
// StudyTime: [
|
||||
// new Date(2016, 9, 10, 0, 0, 0),
|
||||
// new Date(2016, 9, 10, 23, 59, 59),
|
||||
// ],
|
||||
// StudyTime: [new Date(new Date().getTime() - 10800000), new Date()],
|
||||
// 可加入项目列表
|
||||
loading: false,
|
||||
list: [],
|
||||
|
@ -724,10 +573,6 @@ export default {
|
|||
}
|
||||
this.paging()
|
||||
},
|
||||
beforeCloseStudyDig() {
|
||||
this.$setOpenWindow()
|
||||
this.$emit('update:visible', false)
|
||||
},
|
||||
// 拉取pacs数据
|
||||
async pullImage(row) {
|
||||
try {
|
||||
|
@ -794,9 +639,11 @@ export default {
|
|||
color: #67c23a;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.refreshBtn {
|
||||
// transform: rotate(0);
|
||||
transition: 0.5s;
|
||||
|
||||
&:hover {
|
||||
transform: rotate(180deg);
|
||||
transition: 0.5s;
|
|
@ -0,0 +1,689 @@
|
|||
<template>
|
||||
<div>
|
||||
<span class="title">
|
||||
{{ $t('trials:inspection:title:pullImage') }}
|
||||
<span>{{ tip }}</span>
|
||||
</span>
|
||||
<div class="search">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- TrialId -->
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:TrialId')">
|
||||
<el-select v-model="searchData.TrialId" style="width: 140px" @change="searchData.PatientID = null">
|
||||
<el-option v-for="(item, index) of trialList" :key="index.TrialId" :label="item.ExperimentName"
|
||||
:value="item.TrialId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- pacsDicomAEId -->
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:pacsDicomAEId')">
|
||||
<el-select v-model="searchData.PacsDicomAEId" style="width: 140px" @change="pacsDicomAEIdChange">
|
||||
<el-option v-for="(item, index) of AElist" :key="index.Id" :label="item.CalledAE"
|
||||
:value="item.Id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- patientID -->
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientID')">
|
||||
<el-select v-model="searchData.PatientID" style="width: 140px">
|
||||
<el-option v-for="(item, index) of patientList" :key="index.PatientIdStr"
|
||||
:label="item.PatientName" :value="item.PatientIdStr">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- patientName -->
|
||||
<!-- <el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientName')">
|
||||
<el-input v-model="searchData.PatientName" clearable style="width: 100px"
|
||||
:maxlength="400"></el-input>
|
||||
</el-form-item> -->
|
||||
<!-- patientSex -->
|
||||
<!-- <el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:patientSex')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.PatientSex"
|
||||
clearable
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.Sex"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<!-- patientBirthDate -->
|
||||
<!-- <el-form-item
|
||||
:label="$t('trials:inspection:pullImage:search:patientBirthDate')"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="PatientBirthDate"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyyMMDD"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item> -->
|
||||
<!-- studyID -->
|
||||
<!-- <el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:studyID')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.StudyID"
|
||||
clearable
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
</el-form-item> -->
|
||||
<!-- AccessionNumber -->
|
||||
<!-- <el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:AccessionNumber')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.AccessionNumber"
|
||||
clearable
|
||||
style="width: 100px"
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
</el-form-item> -->
|
||||
<!-- modalitiesInStudy -->
|
||||
<el-form-item :label="$t('trials:inspection:pullImage:search:modalitiesInStudy')">
|
||||
<el-select v-model="searchData.ModalitiesInStudyList" placeholder="" clearable multiple
|
||||
collapse-tags style="width: 140px">
|
||||
<el-option v-for="item in ModalityList" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- studyDate -->
|
||||
<el-form-item :label="$t('trials:inspection:pullImage:search:studyDate')">
|
||||
<el-date-picker v-model="StudyDate" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||
end-placeholder="结束日期" value-format="yyyyMMdd" :picker-options="pickerOptions">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- studyTime -->
|
||||
<!-- <el-form-item
|
||||
:label="$t('trials:inspection:pullImage:search:studyTime')"
|
||||
>
|
||||
<el-time-picker
|
||||
is-range
|
||||
arrow-control
|
||||
v-model="StudyTime"
|
||||
range-separator="至"
|
||||
start-placeholder="开始时间"
|
||||
end-placeholder="结束时间"
|
||||
placeholder="选择时间范围"
|
||||
>
|
||||
</el-time-picker>
|
||||
</el-form-item> -->
|
||||
<!-- bodyPartExamined -->
|
||||
<!-- <el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:bodyPartExamined')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.BodyPartExamined"
|
||||
clearable
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
</el-form-item> -->
|
||||
<!-- studyDescription -->
|
||||
<!-- <el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:studyDescription')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.StudyDescription"
|
||||
clearable
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
</el-form-item> -->
|
||||
<!-- studyInstanceUID -->
|
||||
<!-- <el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:pullImage:search:studyInstanceUID')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.StudyInstanceUID"
|
||||
clearable
|
||||
:maxlength="400"
|
||||
></el-input>
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
<!-- 拉取 -->
|
||||
<el-button type="primary" :disabled="!multipleSelection || multipleSelection.length <= 0"
|
||||
@click="pullImage()">
|
||||
{{ $t('trials:inspection:button:pull') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--检查列表-->
|
||||
<el-table ref="viewStudyList" v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="PageList" stripe
|
||||
height="100" @sort-change="handleSortByColumn" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column type="index" width="50">
|
||||
<template slot-scope="scope">
|
||||
<span style="
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
">
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:inspection:pullImage:tip:has')"
|
||||
placement="top" style="margin-right: 3px">
|
||||
<i v-if="scope.row.IsStudyExist" class="el-icon-success icon-i"></i>
|
||||
</el-tooltip>
|
||||
<span>{{ scope.$index + 1 }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--patientID-->
|
||||
<el-table-column prop="PatientID" :label="$t('trials:inspection:pullImage:table:patientID')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--patientName-->
|
||||
<el-table-column prop="PatientName" :label="$t('trials:inspection:pullImage:table:patientName')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--patientSex-->
|
||||
<el-table-column prop="PatientSex" :label="$t('trials:inspection:pullImage:table:patientSex')"
|
||||
show-overflow-tooltip min-width="80" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ $fd('Sex', scope.row.PatientSex) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--patientBirthDate-->
|
||||
<el-table-column prop="PatientBirthDate" :label="$t('trials:inspection:pullImage:table:patientBirthDate')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyID-->
|
||||
<!-- <el-table-column
|
||||
prop="StudyID"
|
||||
:label="$t('trials:inspection:pullImage:table:studyID')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
/> -->
|
||||
<!--AccessionNumber-->
|
||||
<el-table-column prop="AccessionNumber" :label="$t('trials:inspection:pullImage:table:AccessionNumber')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--modalitiesInStudy-->
|
||||
<el-table-column prop="ModalitiesInStudy" :label="$t('trials:inspection:pullImage:table:modalitiesInStudy')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyDate-->
|
||||
<el-table-column prop="StudyDate" :label="$t('trials:inspection:pullImage:table:studyDate')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyTime-->
|
||||
<el-table-column prop="StudyTime" :label="$t('trials:inspection:pullImage:table:studyTime')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--bodyPartExamined-->
|
||||
<!-- <el-table-column
|
||||
prop="BodyPartExamined"
|
||||
:label="$t('trials:inspection:pullImage:table:bodyPartExamined')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
/> -->
|
||||
<!--studyDescription-->
|
||||
<el-table-column prop="StudyDescription" :label="$t('trials:inspection:pullImage:table:studyDescription')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
<!--studyInstanceUID-->
|
||||
<el-table-column prop="StudyInstanceUID" :label="$t('trials:inspection:pullImage:table:studyInstanceUID')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom" />
|
||||
|
||||
<!--操作-->
|
||||
<el-table-column :label="$t('common:action:action')" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button circle icon="el-icon-refresh" class="refreshBtn"
|
||||
:title="$t('trials:inspection:button:pull')" @click.stop="pullImage(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="PageIndex" :limit.sync="PageSize" @pagination="paging" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import {
|
||||
getCFindStudyList,
|
||||
cmoveStudyList,
|
||||
cMoveVerify,
|
||||
getUserJoinedTrialPatientList
|
||||
} from '@/api/inspection.js'
|
||||
import { getDicomAEList } from '@/api/dicomAE.js'
|
||||
const defaultSearchData = () => {
|
||||
return {
|
||||
PacsDicomAEId: null,
|
||||
PatientID: null,
|
||||
PatientName: null,
|
||||
ModalitiesInStudyList: null,
|
||||
StudyDate: null,
|
||||
TrialId: null,
|
||||
|
||||
PatientSex: null,
|
||||
PatientBirthDate: null,
|
||||
StudyID: null,
|
||||
StudyTime: null,
|
||||
BodyPartExamined: null,
|
||||
StudyDescription: null,
|
||||
StudyInstanceUID: null,
|
||||
AccessionNumber: null,
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'byTrials',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
calledAeList: {
|
||||
required: true,
|
||||
default: () => {
|
||||
return []
|
||||
},
|
||||
},
|
||||
callingAeList: {
|
||||
required: true,
|
||||
default: () => {
|
||||
return []
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: defaultSearchData(),
|
||||
ModalityList: [],
|
||||
timeFrame: null,
|
||||
MaxStudyCount: null,
|
||||
PatientBirthDate: [],
|
||||
StudyDate: [],
|
||||
// 可加入项目列表
|
||||
loading: false,
|
||||
list: [],
|
||||
PageList: [],
|
||||
total: 0,
|
||||
PageIndex: 1,
|
||||
PageSize: 50,
|
||||
AElist: [],
|
||||
multipleSelection: [],
|
||||
|
||||
trialList: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
pickerOptions() {
|
||||
return {
|
||||
shortcuts: [
|
||||
{
|
||||
text: this.$t('trials:inspection:pullImage:picker:today'),
|
||||
onClick: (picker) => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
// picker.$emit('pick', [start, end])
|
||||
this.StudyDate = [start, end]
|
||||
},
|
||||
},
|
||||
{
|
||||
text: this.$t('trials:inspection:pullImage:picker:week'),
|
||||
onClick: (picker) => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
if (!this.timeFrame || this.timeFrame > 3) {
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 2)
|
||||
} else {
|
||||
start.setTime(
|
||||
start.getTime() - 3600 * 1000 * 24 * (this.timeFrame - 1)
|
||||
)
|
||||
}
|
||||
|
||||
// picker.$emit('pick', [start, end])
|
||||
this.StudyDate = [start, end]
|
||||
},
|
||||
},
|
||||
{
|
||||
text: this.$t('trials:inspection:pullImage:picker:month'),
|
||||
onClick: (picker) => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
let month = this.$moment().subtract(1, 'months')
|
||||
let day = this.$moment().diff(month, 'day')
|
||||
if (!this.timeFrame || this.timeFrame > day) {
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * (day - 1))
|
||||
} else {
|
||||
start.setTime(
|
||||
start.getTime() - 3600 * 1000 * 24 * (this.timeFrame - 1)
|
||||
)
|
||||
}
|
||||
// picker.$emit('pick', [start, end])
|
||||
this.StudyDate = [start, end]
|
||||
},
|
||||
},
|
||||
{
|
||||
text: this.$t('trials:inspection:pullImage:picker:trimester'),
|
||||
onClick: (picker) => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
let month = this.$moment().subtract(3, 'months')
|
||||
let day = this.$moment().diff(month, 'day')
|
||||
if (!this.timeFrame || this.timeFrame > day) {
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * (day - 1))
|
||||
} else {
|
||||
start.setTime(
|
||||
start.getTime() - 3600 * 1000 * 24 * (this.timeFrame - 1)
|
||||
)
|
||||
}
|
||||
// picker.$emit('pick', [start, end])
|
||||
this.StudyDate = [start, end]
|
||||
},
|
||||
},
|
||||
],
|
||||
disabledDate: (time) => {
|
||||
if (!this.timeFrame) return false
|
||||
let curDate = new Date().getTime()
|
||||
let three = this.timeFrame * 24 * 3600 * 1000
|
||||
let threeMonths = curDate - three
|
||||
return time.getTime() >= Date.now() || time.getTime() <= threeMonths
|
||||
},
|
||||
}
|
||||
},
|
||||
tip() {
|
||||
if (!this.searchData.PacsDicomAEId) return ''
|
||||
let message = `( ${this.$t('trials:inspection:pullImage:PacsTip')} )`
|
||||
message = message.replace(
|
||||
'xxx',
|
||||
this.AElist.find((item) => item.Id === this.searchData.PacsDicomAEId)
|
||||
.CalledAE
|
||||
)
|
||||
if (!this.timeFrame) {
|
||||
message = message.replace(
|
||||
'yyy',
|
||||
this.$t('trials:inspection:pullImage:unlimit')
|
||||
)
|
||||
} else {
|
||||
message = message.replace(
|
||||
'yyy',
|
||||
`${this.timeFrame}${this.$t('trials:inspection:unit:day')}`
|
||||
)
|
||||
}
|
||||
if (!this.MaxStudyCount) {
|
||||
message = message.replace(
|
||||
'zzz',
|
||||
this.$t('trials:inspection:pullImage:unlimit')
|
||||
)
|
||||
} else {
|
||||
message = message.replace(
|
||||
'zzz',
|
||||
`${this.MaxStudyCount}${this.$t('trials:inspection:unit:article')}`
|
||||
)
|
||||
}
|
||||
message = message.replace('kkk', this.ModalityList.join(','))
|
||||
return message
|
||||
},
|
||||
patientList() {
|
||||
let arr = []
|
||||
if (this.searchData.TrialId) {
|
||||
arr = this.trialList.find(item => item.TrialId === this.searchData.TrialId).PatientList
|
||||
}
|
||||
return arr
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getAEList()
|
||||
this.getTrialList()
|
||||
},
|
||||
methods: {
|
||||
// 获取项目
|
||||
async getTrialList() {
|
||||
try {
|
||||
let res = await getUserJoinedTrialPatientList()
|
||||
if (res.IsSuccess) {
|
||||
this.trialList = res.Result
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
pacsDicomAEIdChange(val, f = false) {
|
||||
let pacs = this.AElist.find((item) => item.Id === val)
|
||||
this.ModalityList = pacs.ModalityList
|
||||
this.timeFrame = pacs.PacsSearchMaxDays
|
||||
this.MaxStudyCount = pacs.MaxStudyCount
|
||||
if (!f) {
|
||||
this.handleReset()
|
||||
}
|
||||
},
|
||||
// 验证pacs
|
||||
async cMoveVerify(data) {
|
||||
try {
|
||||
let res = await cMoveVerify(data)
|
||||
if (res.IsSuccess) {
|
||||
return res.Result
|
||||
}
|
||||
return false
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
},
|
||||
async getList() {
|
||||
if (!this.searchData.PacsDicomAEId)
|
||||
return this.$message.warning(
|
||||
this.$t('trials:inspection:pullImage:message:mustPacsDicomAEId')
|
||||
)
|
||||
let data = {}
|
||||
Object.keys(this.searchData).forEach((key) => {
|
||||
data[key] = this.searchData[key]
|
||||
})
|
||||
// if (
|
||||
// this.PatientBirthDate &&
|
||||
// this.PatientBirthDate[0] &&
|
||||
// this.PatientBirthDate[1]
|
||||
// ) {
|
||||
// data.PatientBirthDate =
|
||||
// this.PatientBirthDate[0] + '-' + this.PatientBirthDate[1]
|
||||
// } else {
|
||||
// data.PatientBirthDate = null
|
||||
// }
|
||||
if (this.StudyDate && this.StudyDate[0] && this.StudyDate[1]) {
|
||||
data.StudyDate =
|
||||
this.$moment(this.StudyDate[0]).format('YYYYMMDD') +
|
||||
'-' +
|
||||
this.$moment(this.StudyDate[1]).format('YYYYMMDD')
|
||||
} else {
|
||||
data.StudyDate = null
|
||||
}
|
||||
// if (this.StudyTime && this.StudyTime[0] && this.StudyTime[1]) {
|
||||
// data.StudyTime =
|
||||
// this.$moment(this.StudyTime[0]).format('HHmmss') +
|
||||
// '-' +
|
||||
// this.$moment(this.StudyTime[1]).format('HHmmss')
|
||||
// } else {
|
||||
// data.StudyTime = null
|
||||
// }
|
||||
try {
|
||||
this.loading = true
|
||||
let res = await getCFindStudyList(data)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.list = res.Result
|
||||
this.total = res.Result.length
|
||||
this.paging()
|
||||
let MaxStudyCount = this.MaxStudyCount || 50
|
||||
if (this.total >= MaxStudyCount) {
|
||||
let message = this.$t(
|
||||
'trials:inspection:pullImage:confirm:limit50'
|
||||
).replace('xxx', MaxStudyCount)
|
||||
this.$confirm(message, '', {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
})
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
// 获取列表
|
||||
async getAEList(f = false) {
|
||||
let data = {
|
||||
CalledAE: null,
|
||||
IP: null,
|
||||
Port: null,
|
||||
PacsTypeEnum: 2,
|
||||
IsTestOK: true,
|
||||
PageIndex: 1,
|
||||
PageSize: 1000,
|
||||
SortField: 'CreateTime',
|
||||
Asc: false,
|
||||
}
|
||||
try {
|
||||
this.loading = true
|
||||
let res = await getDicomAEList(data)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.AElist = res.Result.CurrentPageData
|
||||
if (this.AElist.length > 0) {
|
||||
if (!f) {
|
||||
this.searchData.PacsDicomAEId = this.AElist[0].Id
|
||||
this.ModalityList = this.AElist[0].ModalityList
|
||||
this.timeFrame = this.AElist[0].PacsSearchMaxDays
|
||||
this.MaxStudyCount = this.AElist[0].MaxStudyCount
|
||||
this.searchData.ModalitiesInStudyList = [this.ModalityList[0]]
|
||||
this.StudyDate = [new Date(), new Date()]
|
||||
} else {
|
||||
this.pacsDicomAEIdChange(this.searchData.PacsDicomAEId, true)
|
||||
}
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
// 分页
|
||||
paging() {
|
||||
this.PageList = []
|
||||
if (!this.list || this.list.length <= 0) return false
|
||||
this.PageList = this.list.slice(
|
||||
(this.PageIndex - 1) * this.PageSize,
|
||||
this.PageIndex * this.PageSize
|
||||
)
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
// this.searchData.PageIndex = 1
|
||||
this.getAEList(true)
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.reset()
|
||||
this.getAEList(true)
|
||||
},
|
||||
// 初始化
|
||||
reset() {
|
||||
// this.searchData = defaultSearchData()
|
||||
Object.keys(this.searchData).forEach((key) => {
|
||||
if (key !== 'PacsDicomAEId') {
|
||||
this.searchData[key] = null
|
||||
}
|
||||
})
|
||||
// this.PatientBirthDate = []
|
||||
this.StudyDate = []
|
||||
// this.StudyTime = [new Date(new Date().getTime() - 10800000), new Date()]
|
||||
},
|
||||
// 表格排序
|
||||
handleSortByColumn(sort) {
|
||||
if (sort.order === 'ascending') {
|
||||
this.list.sort((a, b) => (a[sort.prop] > b[sort.prop] ? 1 : -1))
|
||||
}
|
||||
if (sort.order === 'descending') {
|
||||
this.list.sort((a, b) => (b[sort.prop] > a[sort.prop] ? 1 : -1))
|
||||
}
|
||||
this.paging()
|
||||
},
|
||||
// 拉取pacs数据
|
||||
async pullImage(row) {
|
||||
try {
|
||||
let data = {
|
||||
PacsDicomAEId: this.searchData.PacsDicomAEId,
|
||||
// studyIDList: [row.StudyID],
|
||||
}
|
||||
if (row) {
|
||||
data.StudyInstanceUIDList = [row.StudyInstanceUID]
|
||||
} else {
|
||||
data.StudyInstanceUIDList = this.multipleSelection.map(
|
||||
(item) => item.StudyInstanceUID
|
||||
)
|
||||
}
|
||||
let r = await this.cMoveVerify(data)
|
||||
if (!r) return false
|
||||
let isPullList = []
|
||||
Object.keys(r).forEach((key) => {
|
||||
if (r[key]) {
|
||||
isPullList.push(key)
|
||||
}
|
||||
})
|
||||
let message = this.$t('trials:inspection:pullImage:confirm:pull')
|
||||
let patientMessage = ''
|
||||
if (isPullList.length > 0) {
|
||||
isPullList.forEach((key) => {
|
||||
patientMessage += `患者:${r[key].PatientName},检查申请号:${r[key].AccessionNumber}<br/>`
|
||||
})
|
||||
if (patientMessage) {
|
||||
message =
|
||||
patientMessage +
|
||||
'<br/>' +
|
||||
this.$t('trials:inspection:pullImage:message:isHasPull') +
|
||||
',' +
|
||||
message
|
||||
}
|
||||
}
|
||||
let confirm = await this.$confirm(message, '', {
|
||||
dangerouslyUseHTMLString: true,
|
||||
})
|
||||
if (!confirm) return false
|
||||
|
||||
this.loading = true
|
||||
let res = await cmoveStudyList(data)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.$message.success(
|
||||
this.$t('trials:inspection:pullImage:message:pullSuccess')
|
||||
)
|
||||
}
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.icon-i {
|
||||
color: #67c23a;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.refreshBtn {
|
||||
// transform: rotate(0);
|
||||
transition: 0.5s;
|
||||
|
||||
&:hover {
|
||||
transform: rotate(180deg);
|
||||
transition: 0.5s;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,71 @@
|
|||
<template>
|
||||
<el-dialog :visible.sync="visible" :close-on-click-modal="false" :fullscreen="true" custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig">
|
||||
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
||||
<el-tab-pane :label="$t('trials:inspection:pullImage:title:byPatient')" name="byPatient">
|
||||
<byPatient :calledAeList="calledAeList" :callingAeList="callingAeList"
|
||||
v-if="activeName === 'byPatient'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="$t('trials:inspection:pullImage:title:byTrials')" name="byTrials">
|
||||
<byTrials :calledAeList="calledAeList" :callingAeList="callingAeList"
|
||||
v-if="activeName === 'byTrials'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import byPatient from './byPatient.vue'
|
||||
import byTrials from './byTrials.vue'
|
||||
export default {
|
||||
name: 'pullImage',
|
||||
components: { byPatient, byTrials },
|
||||
props: {
|
||||
visible: {
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
calledAeList: {
|
||||
required: true,
|
||||
default: () => {
|
||||
return []
|
||||
},
|
||||
},
|
||||
callingAeList: {
|
||||
required: true,
|
||||
default: () => {
|
||||
return []
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'byPatient', // byPatient byTrials
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick() { },
|
||||
beforeCloseStudyDig() {
|
||||
this.$setOpenWindow()
|
||||
this.$emit('update:visible', false)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-dialog__header {
|
||||
padding: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
::v-deep .title {
|
||||
line-height: 24px;
|
||||
font-size: 18px;
|
||||
color: #303133;
|
||||
padding: 20px 0;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__headerbtn {
|
||||
z-index: 99;
|
||||
}
|
||||
</style>
|
|
@ -5,77 +5,33 @@
|
|||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- 患者ID/患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input
|
||||
v-model="searchData.PatientIdStr"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.PatientIdStr" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input
|
||||
v-model="searchData.PatientName"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.PatientName" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<!-- Called AE -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:search:CalledAE')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.CalledAEList"
|
||||
clearable
|
||||
multiple
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of calledAeList"
|
||||
:key="index"
|
||||
:label="item"
|
||||
:value="item"
|
||||
>
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:search:CalledAE')">
|
||||
<el-select v-model="searchData.CalledAEList" clearable multiple style="width: 140px">
|
||||
<el-option v-for="(item, index) of calledAeList" :key="index" :label="item" :value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- Calling AE -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:search:CallingAE')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.callingAE"
|
||||
clearable
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of callingAeList"
|
||||
:key="index"
|
||||
:label="item"
|
||||
:value="item"
|
||||
>
|
||||
<el-form-item class="my_multiple" :label="$t('trials:inspection:search:CallingAE')">
|
||||
<el-select v-model="searchData.callingAE" clearable style="width: 140px">
|
||||
<el-option v-for="(item, index) of callingAeList" :key="index" :label="item" :value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 研究名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:table:researchName')">
|
||||
<el-input
|
||||
v-model="searchData.ExperimentName"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.ExperimentName" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<!-- 最新接收时间 -->
|
||||
<el-form-item :label="$t('trials:inspection:table:latestReceiveTime')">
|
||||
<el-date-picker
|
||||
v-model="dateValue"
|
||||
type="datetimerange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="['00:00:00', '23:59:59']"
|
||||
clearable
|
||||
>
|
||||
<el-date-picker v-model="dateValue" type="datetimerange" range-separator="至" start-placeholder="开始日期"
|
||||
end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" clearable>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -84,11 +40,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>
|
||||
|
@ -100,11 +52,8 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- pacs拉取 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleOpenDialog({}, 'pull')"
|
||||
v-hasPermi="['trials:trialsInspection:pullPACS']"
|
||||
>
|
||||
<el-button type="primary" @click="handleOpenDialog({}, 'pull')"
|
||||
v-hasPermi="['trials:trialsInspection:pullPACS']">
|
||||
{{ $t('common:button:pull') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
@ -113,103 +62,51 @@
|
|||
|
||||
<!-- 检查列表 -->
|
||||
<template slot="main-container">
|
||||
<el-table
|
||||
ref="inspectionList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
:default-sort="{ prop: 'LatestPushTime', order: 'descending' }"
|
||||
>
|
||||
<el-table ref="inspectionList" v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="list" stripe
|
||||
height="100" @sort-change="handleSortByColumn" :default-sort="{ prop: 'LatestPushTime', order: 'descending' }">
|
||||
<el-table-column type="index" width="40" />
|
||||
<!--患者ID-->
|
||||
<el-table-column
|
||||
prop="PatientIdStr"
|
||||
:label="$t('trials:uploadDicomList:table:pId')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
></el-table-column>
|
||||
<el-table-column prop="PatientIdStr" :label="$t('trials:uploadDicomList:table:pId')" show-overflow-tooltip
|
||||
min-width="120" sortable="custom"></el-table-column>
|
||||
<!--患者姓名-->
|
||||
<el-table-column
|
||||
prop="PatientName"
|
||||
:label="$t('trials:uploadDicomList:table:patientName')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
></el-table-column>
|
||||
<el-table-column prop="PatientName" :label="$t('trials:uploadDicomList:table:patientName')"
|
||||
show-overflow-tooltip min-width="120" sortable="custom"></el-table-column>
|
||||
<!--出生日期-->
|
||||
<el-table-column
|
||||
prop="PatientBirthDate"
|
||||
:label="$t('trials:inspection:table:birthdate')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
></el-table-column>
|
||||
<el-table-column prop="PatientBirthDate" :label="$t('trials:inspection:table:birthdate')" show-overflow-tooltip
|
||||
min-width="120" sortable="custom"></el-table-column>
|
||||
<!--性别-->
|
||||
<el-table-column
|
||||
prop="PatientSex"
|
||||
:label="$t('trials:trials-myinfo:form:gender')"
|
||||
show-overflow-tooltip
|
||||
min-width="100"
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="PatientSex" :label="$t('trials:trials-myinfo:form:gender')" show-overflow-tooltip
|
||||
min-width="100" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ $fd('Sex', scope.row.PatientSex) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--Called AE-->
|
||||
<el-table-column
|
||||
prop="CalledAEList"
|
||||
:label="$t('trials:inspection:table:CalledAE')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
>
|
||||
<el-table-column prop="CalledAEList" :label="$t('trials:inspection:table:CalledAE')" show-overflow-tooltip
|
||||
min-width="120">
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
v-for="(item, index) in scope.row.CalledAEList"
|
||||
:key="`CalledAEList${index}`"
|
||||
>{{
|
||||
index === scope.row.CalledAEList.length - 1 ? item : `${item}, `
|
||||
}}</span
|
||||
>
|
||||
<span v-for="(item, index) in scope.row.CalledAEList" :key="`CalledAEList${index}`">{{
|
||||
index === scope.row.CalledAEList.length - 1 ? item : `${item}, `
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--Calling AE-->
|
||||
<el-table-column
|
||||
prop="CallingAEList"
|
||||
:label="$t('trials:inspection:table:CallingAE')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
>
|
||||
<el-table-column prop="CallingAEList" :label="$t('trials:inspection:table:CallingAE')" show-overflow-tooltip
|
||||
min-width="120">
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
v-for="(item, index) in scope.row.CallingAEList"
|
||||
:key="`CallingAEList${index}`"
|
||||
>{{
|
||||
index === scope.row.CallingAEList.length - 1
|
||||
? item
|
||||
: `${item}, `
|
||||
}}</span
|
||||
>
|
||||
<span v-for="(item, index) in scope.row.CallingAEList" :key="`CallingAEList${index}`">{{
|
||||
index === scope.row.CallingAEList.length - 1
|
||||
? item
|
||||
: `${item}, `
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 研究名称 -->
|
||||
<el-table-column
|
||||
prop="TrialList"
|
||||
:label="$t('trials:trials-list:table:researchName')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
>
|
||||
<el-table-column prop="TrialList" :label="$t('trials:trials-list:table:researchName')" show-overflow-tooltip
|
||||
min-width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleOpenDialog(scope.row, 'research')"
|
||||
v-for="(item, index) in scope.row.TrialList"
|
||||
:key="`TrialList${index}`"
|
||||
>
|
||||
<el-button type="text" @click="handleOpenDialog(scope.row, 'research')"
|
||||
v-for="(item, index) in scope.row.TrialList" :key="`TrialList${index}`">
|
||||
<span>{{
|
||||
index === scope.row.TrialList.length - 1
|
||||
? `${item.ExperimentName}(${item.VisitCount})`
|
||||
|
@ -220,52 +117,28 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!-- 检查数 -->
|
||||
<el-table-column
|
||||
prop="StudyCount"
|
||||
:label="$t('trials:studyList:table:count')"
|
||||
show-overflow-tooltip
|
||||
min-width="100"
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="StudyCount" :label="$t('trials:studyList:table:count')" show-overflow-tooltip
|
||||
min-width="100" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.StudyCount >= 1"
|
||||
type="text"
|
||||
@click="handleOpenDialog(scope.row, 'study')"
|
||||
>
|
||||
<el-button v-if="scope.row.StudyCount >= 1" type="text" @click="handleOpenDialog(scope.row, 'study')">
|
||||
<span>{{ scope.row.StudyCount }}</span>
|
||||
</el-button>
|
||||
<span v-else>{{ scope.row.StudyCount }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--最新接收时间-->
|
||||
<el-table-column
|
||||
prop="LatestPushTime"
|
||||
:label="$t('trials:inspection:table:latestReceiveTime')"
|
||||
show-overflow-tooltip
|
||||
min-width="180"
|
||||
sortable="custom"
|
||||
></el-table-column>
|
||||
<el-table-column prop="LatestPushTime" :label="$t('trials:inspection:table:latestReceiveTime')"
|
||||
show-overflow-tooltip min-width="180" sortable="custom"></el-table-column>
|
||||
<!--操作-->
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
min-width="100"
|
||||
fixed="right"
|
||||
v-if="
|
||||
hasPermi([
|
||||
'trials:trialsInspection:addTrials',
|
||||
'trials:trialsInspection:delPatient',
|
||||
])
|
||||
"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" min-width="100" fixed="right" v-if="
|
||||
hasPermi([
|
||||
'trials:trialsInspection:addTrials',
|
||||
'trials:trialsInspection:delPatient',
|
||||
])
|
||||
">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
v-hasPermi="['trials:trialsInspection:addTrials']"
|
||||
icon="el-icon-plus"
|
||||
:title="$t('trials:inspection:button:addTrials')"
|
||||
@click.stop="handleOpenDialog(scope.row, 'add')"
|
||||
/>
|
||||
<el-button circle v-hasPermi="['trials:trialsInspection:addTrials']" icon="el-icon-plus"
|
||||
:title="$t('trials:inspection:button:addTrials')" @click.stop="handleOpenDialog(scope.row, 'add')" />
|
||||
<!-- <el-button
|
||||
circle
|
||||
icon="el-icon-delete"
|
||||
|
@ -278,52 +151,25 @@
|
|||
</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>
|
||||
|
||||
<!--研究项目列表-->
|
||||
<researchTrialsList
|
||||
v-if="researchTrialsVisible"
|
||||
:visible.sync="researchTrialsVisible"
|
||||
:Patient="selectPatient"
|
||||
@getList="getList"
|
||||
@handleOpenDialog="handleOpenDialog"
|
||||
/>
|
||||
<researchTrialsList v-if="researchTrialsVisible" :visible.sync="researchTrialsVisible" :Patient="selectPatient"
|
||||
@getList="getList" @handleOpenDialog="handleOpenDialog" />
|
||||
<!--可加入项目列表-->
|
||||
<addTrialsList
|
||||
v-if="addTrialsVisible"
|
||||
:visible.sync="addTrialsVisible"
|
||||
:Patient="selectPatient"
|
||||
@getList="getList"
|
||||
@handleOpenDialog="handleOpenDialog"
|
||||
/>
|
||||
<addTrialsList v-if="addTrialsVisible" :visible.sync="addTrialsVisible" :Patient="selectPatient" @getList="getList"
|
||||
@handleOpenDialog="handleOpenDialog" />
|
||||
<!--查看检查列表-->
|
||||
<viewStudyList
|
||||
v-if="studyTrialsVisible"
|
||||
:visible.sync="studyTrialsVisible"
|
||||
:Patient="selectPatient"
|
||||
@getList="getList"
|
||||
/>
|
||||
<viewStudyList v-if="studyTrialsVisible" :visible.sync="studyTrialsVisible" :Patient="selectPatient"
|
||||
@getList="getList" />
|
||||
<!--推送记录列表-->
|
||||
<pushRecordList
|
||||
v-if="pushTrialsVisible"
|
||||
:visible.sync="pushTrialsVisible"
|
||||
:calledAeList="calledAeList"
|
||||
:callingAeList="callingAeList"
|
||||
/>
|
||||
<pushRecordList v-if="pushTrialsVisible" :visible.sync="pushTrialsVisible" :calledAeList="calledAeList"
|
||||
:callingAeList="callingAeList" />
|
||||
<!--pacs拉取列表-->
|
||||
<pullImageList
|
||||
v-if="pullTrialsVisible"
|
||||
:visible.sync="pullTrialsVisible"
|
||||
:calledAeList="calledAeList"
|
||||
:callingAeList="callingAeList"
|
||||
/>
|
||||
<pullImage v-if="pullTrialsVisible" :visible.sync="pullTrialsVisible" :calledAeList="calledAeList"
|
||||
:callingAeList="callingAeList" />
|
||||
</BaseContainer>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -333,7 +179,7 @@ import researchTrialsList from './components/research-trials-list'
|
|||
import addTrialsList from './components/add-trials-list'
|
||||
import viewStudyList from './components/view-study-list'
|
||||
import pushRecordList from './components/push-record-list'
|
||||
import pullImageList from './components/pull-image-list'
|
||||
import pullImage from './components/pullImage/index.vue'
|
||||
import { getPatientList, deletePatientStudyAllData } from '@/api/inspection.js'
|
||||
import { getDicomCalledAEList, getDicomCallingAEList } from '@/api/dicomAE.js'
|
||||
|
||||
|
@ -361,7 +207,7 @@ export default {
|
|||
addTrialsList,
|
||||
viewStudyList,
|
||||
pushRecordList,
|
||||
pullImageList,
|
||||
pullImage,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -498,5 +344,4 @@ export default {
|
|||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
<style lang="scss" scoped></style>
|
Loading…
Reference in New Issue