PACS影像拉取
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
107d520266
commit
0942c32cba
|
@ -161,4 +161,22 @@ export function verifyTrialSubject(data) {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// pacs可拉取列表
|
||||||
|
export function getCFindStudyList(data) {
|
||||||
|
return request({
|
||||||
|
url: '/Patient/getCFindStudyList',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// pacs拉取
|
||||||
|
export function cmoveStudyList(data) {
|
||||||
|
return request({
|
||||||
|
url: '/Patient/cmoveStudyList',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
}
|
}
|
|
@ -17,6 +17,24 @@
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
>
|
>
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
|
<!--PacsTypeEnum-->
|
||||||
|
<el-form-item
|
||||||
|
:label="$t('system:dicom:form:PacsTypeEnum')"
|
||||||
|
prop="PacsTypeEnum"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="form.PacsTypeEnum"
|
||||||
|
placeholder=""
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in $d.PacsType"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<!--AE Title-->
|
<!--AE Title-->
|
||||||
<el-form-item :label="$t('system:dicom:form:AETitle')" prop="CalledAE">
|
<el-form-item :label="$t('system:dicom:form:AETitle')" prop="CalledAE">
|
||||||
<el-input v-model.trim="form.CalledAE" clearable maxlength="16" />
|
<el-input v-model.trim="form.CalledAE" clearable maxlength="16" />
|
||||||
|
@ -52,7 +70,7 @@
|
||||||
:disabled="btnLoading"
|
:disabled="btnLoading"
|
||||||
@click="handleCancel"
|
@click="handleCancel"
|
||||||
>
|
>
|
||||||
{{ $t("common:button:cancel") }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -60,7 +78,7 @@
|
||||||
:loading="btnLoading"
|
:loading="btnLoading"
|
||||||
@click="setAE"
|
@click="setAE"
|
||||||
>
|
>
|
||||||
{{ $t("common:button:save") }}
|
{{ $t('common:button:save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
@ -68,9 +86,9 @@
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { setDiicomAE } from "@/api/dicomAE.js";
|
import { setDiicomAE } from '@/api/dicomAE.js'
|
||||||
export default {
|
export default {
|
||||||
name: "editDicom",
|
name: 'editDicom',
|
||||||
props: {
|
props: {
|
||||||
visible: {
|
visible: {
|
||||||
require: true,
|
require: true,
|
||||||
|
@ -78,12 +96,12 @@ export default {
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
require: true,
|
require: true,
|
||||||
default: "",
|
default: '',
|
||||||
},
|
},
|
||||||
dicom: {
|
dicom: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => {
|
default: () => {
|
||||||
return {};
|
return {}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -96,92 +114,100 @@ export default {
|
||||||
Modality: null,
|
Modality: null,
|
||||||
Description: null,
|
Description: null,
|
||||||
Id: null,
|
Id: null,
|
||||||
|
PacsTypeEnum: null,
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
|
PacsTypeEnum: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('common:ruleMessage:select'),
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
],
|
||||||
CalledAE: [
|
CalledAE: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t("common:ruleMessage:specify"),
|
message: this.$t('common:ruleMessage:specify'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: /[a-zA-Z0-9]/,
|
pattern: /[a-zA-Z0-9]/,
|
||||||
message: this.$t("common:ruleMessage:CalledAEPattern"),
|
message: this.$t('common:ruleMessage:CalledAEPattern'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
min: 1,
|
min: 1,
|
||||||
max: 16,
|
max: 16,
|
||||||
message: this.$t("common:ruleMessage:CalledAEPattern"),
|
message: this.$t('common:ruleMessage:CalledAEPattern'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
IP: [
|
IP: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t("common:ruleMessage:specify"),
|
message: this.$t('common:ruleMessage:specify'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (
|
if (
|
||||||
value === "" ||
|
value === '' ||
|
||||||
typeof value === "undefined" ||
|
typeof value === 'undefined' ||
|
||||||
value == null
|
value == null
|
||||||
) {
|
) {
|
||||||
callback(new Error(this.$t("common:ruleMessage:ipPattern")));
|
callback(new Error(this.$t('common:ruleMessage:ipPattern')))
|
||||||
} else {
|
} else {
|
||||||
const reg =
|
const reg =
|
||||||
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
|
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
|
||||||
if (!reg.test(value) && value !== "") {
|
if (!reg.test(value) && value !== '') {
|
||||||
callback(new Error(this.$t("common:ruleMessage:ipPattern")));
|
callback(new Error(this.$t('common:ruleMessage:ipPattern')))
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
message: this.$t("common:ruleMessage:ipPattern"),
|
message: this.$t('common:ruleMessage:ipPattern'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
Port: [
|
Port: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t("common:ruleMessage:portPattern"),
|
message: this.$t('common:ruleMessage:portPattern'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "number",
|
type: 'number',
|
||||||
min: 0,
|
min: 0,
|
||||||
max: 65535,
|
max: 65535,
|
||||||
message: this.$t("common:ruleMessage:portPattern"),
|
message: this.$t('common:ruleMessage:portPattern'),
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (
|
if (
|
||||||
value &&
|
value &&
|
||||||
(String(value).includes(".") ||
|
(String(value).includes('.') ||
|
||||||
new RegExp(/\D/g).test(String(value)))
|
new RegExp(/\D/g).test(String(value)))
|
||||||
) {
|
) {
|
||||||
callback(new Error(this.$t("common:ruleMessage:portPattern")));
|
callback(new Error(this.$t('common:ruleMessage:portPattern')))
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: "blur",
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
btnLoading: false,
|
btnLoading: false,
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
dicom: {
|
dicom: {
|
||||||
handler() {
|
handler() {
|
||||||
Object.keys(this.form).forEach((key) => {
|
Object.keys(this.form).forEach((key) => {
|
||||||
this.form[key] = this.dicom[key];
|
this.form[key] = this.dicom[key]
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
deep: true,
|
deep: true,
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
@ -190,37 +216,35 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
handleCancel() {
|
handleCancel() {
|
||||||
Object.keys(this.form).forEach((key) => {
|
Object.keys(this.form).forEach((key) => {
|
||||||
this.form[key] = null;
|
this.form[key] = null
|
||||||
});
|
})
|
||||||
this.$refs.editVisitForm.clearValidate();
|
this.$refs.editVisitForm.clearValidate()
|
||||||
this.$emit("update:visible", false);
|
this.$emit('update:visible', false)
|
||||||
},
|
},
|
||||||
// 新增或修改
|
// 新增或修改
|
||||||
async setAE() {
|
async setAE() {
|
||||||
try {
|
try {
|
||||||
let validate = await this.$refs.editVisitForm.validate();
|
let validate = await this.$refs.editVisitForm.validate()
|
||||||
if (!validate) return;
|
if (!validate) return
|
||||||
this.btnLoading = true;
|
this.btnLoading = true
|
||||||
let res = await setDiicomAE(this.form);
|
let res = await setDiicomAE(this.form)
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
if (this.form.Id) {
|
if (this.form.Id) {
|
||||||
this.$message.success(
|
this.$message.success(this.$t('common:message:updatedSuccessfully'))
|
||||||
this.$t("common:message:updatedSuccessfully")
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
this.$message.success(this.$t("common:message:addedSuccessfully"));
|
this.$message.success(this.$t('common:message:addedSuccessfully'))
|
||||||
}
|
}
|
||||||
this.btnLoading = false;
|
this.btnLoading = false
|
||||||
this.handleCancel();
|
this.handleCancel()
|
||||||
this.$emit("getList");
|
this.$emit('getList')
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.errorMessage);
|
this.$message.error(res.errorMessage)
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.btnLoading = false;
|
this.btnLoading = false
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
|
@ -2,6 +2,24 @@
|
||||||
<div class="dicomAE">
|
<div class="dicomAE">
|
||||||
<div ref="leftContainer" class="left">
|
<div ref="leftContainer" class="left">
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
|
<el-form-item
|
||||||
|
:label="$t('system:dicom:search:PacsTypeEnum')"
|
||||||
|
prop="PacsTypeEnum"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="searchData.PacsTypeEnum"
|
||||||
|
placeholder=""
|
||||||
|
style="width: 140px"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in $d.PacsType"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<!--AE Title-->
|
<!--AE Title-->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('system:dicom:search:AETitle')"
|
:label="$t('system:dicom:search:AETitle')"
|
||||||
|
@ -23,17 +41,17 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" size="mini" @click="getList">{{
|
<el-button type="primary" size="mini" @click="getList">{{
|
||||||
$t("system:dicom:search:search")
|
$t('system:dicom:search:search')
|
||||||
}}</el-button>
|
}}</el-button>
|
||||||
<el-button type="primary" size="mini" @click="reset">{{
|
<el-button type="primary" size="mini" @click="reset">{{
|
||||||
$t("system:dicom:search:reset")
|
$t('system:dicom:search:reset')
|
||||||
}}</el-button>
|
}}</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="mini"
|
||||||
v-hasPermi="['system:dicom:add']"
|
v-hasPermi="['system:dicom:add']"
|
||||||
@click="openDialog('add')"
|
@click="openDialog('add')"
|
||||||
>{{ $t("system:dicom:search:add") }}</el-button
|
>{{ $t('system:dicom:search:add') }}</el-button
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -71,6 +89,18 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/>
|
/>
|
||||||
|
<!--PacsTypeEnum-->
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('system:dicom:table:PacsTypeEnum')"
|
||||||
|
prop="PacsTypeEnum"
|
||||||
|
min-width="120"
|
||||||
|
show-overflow-tooltip
|
||||||
|
sortable="custom"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ $fd('PacsType', scope.row.PacsTypeEnum) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<!--Modality-->
|
<!--Modality-->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:label="$t('system:dicom:table:Modality')"
|
:label="$t('system:dicom:table:Modality')"
|
||||||
|
@ -97,7 +127,7 @@
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag :type="scope.row.IsTestOK ? 'success' : 'danger'">{{
|
<el-tag :type="scope.row.IsTestOK ? 'success' : 'danger'">{{
|
||||||
$fd("IsTestOK", String(scope.row.IsTestOK))
|
$fd('IsTestOK', String(scope.row.IsTestOK))
|
||||||
}}</el-tag>
|
}}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -122,6 +152,7 @@
|
||||||
fixed="right"
|
fixed="right"
|
||||||
prop="UserTypeShortName"
|
prop="UserTypeShortName"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
|
min-width="120px"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
@ -129,17 +160,17 @@
|
||||||
type="text"
|
type="text"
|
||||||
v-hasPermi="['system:dicom:edit']"
|
v-hasPermi="['system:dicom:edit']"
|
||||||
@click="openDialog('edit', scope.row)"
|
@click="openDialog('edit', scope.row)"
|
||||||
>{{ $t("system:dicom:action:edit") }}</el-button
|
>{{ $t('system:dicom:action:edit') }}</el-button
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
v-hasPermi="['system:dicom:del']"
|
v-hasPermi="['system:dicom:del']"
|
||||||
@click="delAE(scope.row)"
|
@click="delAE(scope.row)"
|
||||||
>{{ $t("system:dicom:action:remove") }}</el-button
|
>{{ $t('system:dicom:action:remove') }}</el-button
|
||||||
>
|
>
|
||||||
<el-button size="mini" type="text" @click="test(scope.row)">{{
|
<el-button size="mini" type="text" @click="test(scope.row)">{{
|
||||||
$t("system:dicom:action:test")
|
$t('system:dicom:action:test')
|
||||||
}}</el-button>
|
}}</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -162,22 +193,23 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Pagination from "@/components/Pagination";
|
import Pagination from '@/components/Pagination'
|
||||||
import editDicom from "./components/edit-dicom";
|
import editDicom from './components/edit-dicom'
|
||||||
import { getDicomAEList, deleteDiicomAE, testConnect } from "@/api/dicomAE.js";
|
import { getDicomAEList, deleteDiicomAE, testConnect } from '@/api/dicomAE.js'
|
||||||
const defaultSearchData = () => {
|
const defaultSearchData = () => {
|
||||||
return {
|
return {
|
||||||
CalledAE: null,
|
CalledAE: null,
|
||||||
IP: null,
|
IP: null,
|
||||||
Port: null,
|
Port: null,
|
||||||
|
PacsTypeEnum: null,
|
||||||
PageIndex: 1,
|
PageIndex: 1,
|
||||||
PageSize: 10,
|
PageSize: 10,
|
||||||
SortField: "CreateTime",
|
SortField: 'CreateTime',
|
||||||
Asc: false,
|
Asc: false,
|
||||||
};
|
}
|
||||||
};
|
}
|
||||||
export default {
|
export default {
|
||||||
name: "dicomAE",
|
name: 'dicomAE',
|
||||||
components: { Pagination, editDicom },
|
components: { Pagination, editDicom },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -189,98 +221,98 @@ export default {
|
||||||
list: [],
|
list: [],
|
||||||
// 弹窗
|
// 弹窗
|
||||||
editDicomVisible: false,
|
editDicomVisible: false,
|
||||||
editDicomTitle: "",
|
editDicomTitle: '',
|
||||||
DICOM: {},
|
DICOM: {},
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 表格排序
|
// 表格排序
|
||||||
handleSortChange(sort) {
|
handleSortChange(sort) {
|
||||||
this.searchData.SortField = sort.prop;
|
this.searchData.SortField = sort.prop
|
||||||
if (sort.order === "ascending") this.searchData.Asc = true;
|
if (sort.order === 'ascending') this.searchData.Asc = true
|
||||||
if (sort.order === "descending") this.searchData.Asc = false;
|
if (sort.order === 'descending') this.searchData.Asc = false
|
||||||
if (!sort.order) this.searchData.SortField = null;
|
if (!sort.order) this.searchData.SortField = null
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 获取列表
|
// 获取列表
|
||||||
async getList() {
|
async getList() {
|
||||||
let data = {};
|
let data = {}
|
||||||
Object.keys(this.searchData).forEach((key) => {
|
Object.keys(this.searchData).forEach((key) => {
|
||||||
data[key] = this.searchData[key];
|
data[key] = this.searchData[key]
|
||||||
});
|
})
|
||||||
try {
|
try {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
let res = await getDicomAEList(data);
|
let res = await getDicomAEList(data)
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.list = res.Result.CurrentPageData;
|
this.list = res.Result.CurrentPageData
|
||||||
this.total = res.Result.TotalCount;
|
this.total = res.Result.TotalCount
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 重置
|
// 重置
|
||||||
reset() {
|
reset() {
|
||||||
this.searchData = defaultSearchData();
|
this.searchData = defaultSearchData()
|
||||||
this.$refs.dicomAeTable.clearSort();
|
this.$refs.dicomAeTable.clearSort()
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 打开弹框
|
// 打开弹框
|
||||||
openDialog(key, item = {}) {
|
openDialog(key, item = {}) {
|
||||||
this.editDicomVisible = true;
|
this.editDicomVisible = true
|
||||||
this.editDicomTitle = this.$t("system:dicom:action:edit");
|
this.editDicomTitle = this.$t('system:dicom:action:edit')
|
||||||
if (key === "add") {
|
if (key === 'add') {
|
||||||
this.editDicomTitle = this.$t("system:dicom:search:add");
|
this.editDicomTitle = this.$t('system:dicom:search:add')
|
||||||
}
|
}
|
||||||
this.DICOM = JSON.parse(JSON.stringify(item));
|
this.DICOM = JSON.parse(JSON.stringify(item))
|
||||||
},
|
},
|
||||||
// 删除
|
// 删除
|
||||||
async delAE(item) {
|
async delAE(item) {
|
||||||
try {
|
try {
|
||||||
let confirm = await this.$confirm(
|
let confirm = await this.$confirm(
|
||||||
this.$t("trials:staffResearch:message:confirmDel"),
|
this.$t('trials:staffResearch:message:confirmDel'),
|
||||||
this.$t("trials:uploadDicomList:label:prompt"),
|
this.$t('trials:uploadDicomList:label:prompt'),
|
||||||
{
|
{
|
||||||
confirmButtonText: this.$t("trials:reviewTrack:impactList:save"),
|
confirmButtonText: this.$t('trials:reviewTrack:impactList:save'),
|
||||||
cancelButtonText: this.$t("common:button:cancel"),
|
cancelButtonText: this.$t('common:button:cancel'),
|
||||||
type: "warning",
|
type: 'warning',
|
||||||
}
|
}
|
||||||
);
|
)
|
||||||
if (confirm !== "confirm") return;
|
if (confirm !== 'confirm') return
|
||||||
let res = await deleteDiicomAE(item.Id);
|
let res = await deleteDiicomAE(item.Id)
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.$message.success(
|
this.$message.success(
|
||||||
this.$t("trials:crcUpload:message:deleteVisitSuccessfully")
|
this.$t('trials:crcUpload:message:deleteVisitSuccessfully')
|
||||||
);
|
)
|
||||||
this.getList();
|
this.getList()
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 测试连通性
|
// 测试连通性
|
||||||
async test(item) {
|
async test(item) {
|
||||||
try {
|
try {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
let res = await testConnect(item.Id);
|
let res = await testConnect(item.Id)
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
if (res.IsSuccess && res.Result) {
|
if (res.IsSuccess && res.Result) {
|
||||||
this.$message.success(this.$t("system:dicomAE:connect:success"));
|
this.$message.success(this.$t('system:dicomAE:connect:success'))
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(this.$t("system:dicomAE:connect:error"));
|
this.$message.error(this.$t('system:dicomAE:connect:error'))
|
||||||
}
|
}
|
||||||
this.getList();
|
this.getList()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.dicomAE {
|
.dicomAE {
|
||||||
|
|
|
@ -0,0 +1,486 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:visible.sync="visible"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:fullscreen="true"
|
||||||
|
custom-class="upload-dialog"
|
||||||
|
:before-close="beforeCloseStudyDig"
|
||||||
|
>
|
||||||
|
<span slot="title">{{ $t('trials:inspection:title:pullImage') }} </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"
|
||||||
|
clearable
|
||||||
|
style="width: 140px"
|
||||||
|
>
|
||||||
|
<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
|
||||||
|
: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
|
||||||
|
: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>
|
||||||
|
<!-- modalitiesInStudy -->
|
||||||
|
<el-form-item
|
||||||
|
class="my_multiple"
|
||||||
|
:label="$t('trials:inspection:pullImage:search:modalitiesInStudy')"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="searchData.ModalitiesInStudy"
|
||||||
|
clearable
|
||||||
|
:maxlength="400"
|
||||||
|
></el-input>
|
||||||
|
</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"
|
||||||
|
>
|
||||||
|
</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-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<!--检查列表-->
|
||||||
|
<el-table
|
||||||
|
ref="viewStudyList"
|
||||||
|
v-loading="loading"
|
||||||
|
v-adaptive="{ bottomOffset: 60 }"
|
||||||
|
:data="list"
|
||||||
|
stripe
|
||||||
|
height="100"
|
||||||
|
@sort-change="handleSortByColumn"
|
||||||
|
:default-sort="{ prop: 'StartTime', order: 'descending' }"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" width="40" />
|
||||||
|
<!--patientID-->
|
||||||
|
<el-table-column
|
||||||
|
prop="PatientID"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:patientID')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--patientName-->
|
||||||
|
<el-table-column
|
||||||
|
prop="PatientName"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:patientName')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--patientSex-->
|
||||||
|
<el-table-column
|
||||||
|
prop="PatientSex"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:patientSex')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--patientBirthDate-->
|
||||||
|
<el-table-column
|
||||||
|
prop="PatientBirthDate"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:patientBirthDate')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--studyID-->
|
||||||
|
<el-table-column
|
||||||
|
prop="StudyID"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:studyID')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--modalitiesInStudy-->
|
||||||
|
<el-table-column
|
||||||
|
prop="ModalitiesInStudy"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:modalitiesInStudy')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--studyDate-->
|
||||||
|
<el-table-column
|
||||||
|
prop="StudyDate"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:studyDate')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--studyTime-->
|
||||||
|
<el-table-column
|
||||||
|
prop="StudyTime"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:studyTime')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--bodyPartExamined-->
|
||||||
|
<el-table-column
|
||||||
|
prop="BodyPartExamined"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:bodyPartExamined')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--studyDescription-->
|
||||||
|
<el-table-column
|
||||||
|
prop="StudyDescription"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:studyDescription')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
<!--studyInstanceUID-->
|
||||||
|
<el-table-column
|
||||||
|
prop="StudyInstanceUID"
|
||||||
|
:label="$t('trials:inspection:pullImage:table:studyInstanceUID')"
|
||||||
|
show-overflow-tooltip
|
||||||
|
min-width="120"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!--操作-->
|
||||||
|
<el-table-column :label="$t('common:action:action')" min-width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
circle
|
||||||
|
icon="el-icon-download"
|
||||||
|
:title="$t('trials:inspection:button:pull')"
|
||||||
|
@click.stop="pullImage(scope.row)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<!-- <pagination
|
||||||
|
class="page"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="searchData.PageIndex"
|
||||||
|
:limit.sync="searchData.PageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/> -->
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import Pagination from '@/components/Pagination'
|
||||||
|
import { getCFindStudyList, cmoveStudyList } from '@/api/inspection.js'
|
||||||
|
import { getDicomAEList } from '@/api/dicomAE.js'
|
||||||
|
const defaultSearchData = () => {
|
||||||
|
return {
|
||||||
|
PacsDicomAEId: null,
|
||||||
|
PatientID: null,
|
||||||
|
PatientName: null,
|
||||||
|
PatientSex: null,
|
||||||
|
PatientBirthDate: null,
|
||||||
|
StudyID: null,
|
||||||
|
ModalitiesInStudy: null,
|
||||||
|
StudyDate: null,
|
||||||
|
StudyTime: null,
|
||||||
|
BodyPartExamined: null,
|
||||||
|
StudyDescription: null,
|
||||||
|
StudyInstanceUID: null,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
name: 'pushRecordList',
|
||||||
|
components: { Pagination },
|
||||||
|
props: {
|
||||||
|
visible: {
|
||||||
|
required: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
calledAeList: {
|
||||||
|
required: true,
|
||||||
|
default: () => {
|
||||||
|
return []
|
||||||
|
},
|
||||||
|
},
|
||||||
|
callingAeList: {
|
||||||
|
required: true,
|
||||||
|
default: () => {
|
||||||
|
return []
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 查询
|
||||||
|
searchData: defaultSearchData(),
|
||||||
|
PatientBirthDate: [],
|
||||||
|
StudyDate: [],
|
||||||
|
StudyTime: [],
|
||||||
|
// 可加入项目列表
|
||||||
|
loading: false,
|
||||||
|
list: [],
|
||||||
|
total: 0,
|
||||||
|
AElist: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getAEList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
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.StudyDate[0] + '-' + this.StudyDate[1]
|
||||||
|
} else {
|
||||||
|
data.StudyDate = null
|
||||||
|
}
|
||||||
|
if (this.StudyTime && this.StudyTime[0] && this.StudyTime[1]) {
|
||||||
|
data.StudyTime = this.StudyTime[0] + '-' + this.StudyTime[1]
|
||||||
|
} else {
|
||||||
|
data.StudyTime = null
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
this.loading = true
|
||||||
|
let res = await getCFindStudyList(data)
|
||||||
|
this.loading = false
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.list = res.Result
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
this.loading = false
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取列表
|
||||||
|
async getAEList() {
|
||||||
|
let data = {
|
||||||
|
CalledAE: null,
|
||||||
|
IP: null,
|
||||||
|
Port: null,
|
||||||
|
PacsTypeEnum: 2,
|
||||||
|
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) {
|
||||||
|
this.searchData.PacsDicomAEId = this.AElist[0].Id
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 查询
|
||||||
|
handleSearch() {
|
||||||
|
// this.searchData.PageIndex = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 重置
|
||||||
|
handleReset() {
|
||||||
|
this.reset()
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 初始化
|
||||||
|
reset() {
|
||||||
|
// this.searchData = defaultSearchData()
|
||||||
|
Object.keys(this.searchData).forEach((key) => {
|
||||||
|
if (key !== 'PacsDicomAEId') {
|
||||||
|
this.searchData[key] = null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.PatientBirthDate = []
|
||||||
|
this.StudyDate = []
|
||||||
|
this.StudyTime = []
|
||||||
|
},
|
||||||
|
// 表格排序
|
||||||
|
handleSortByColumn(sort) {
|
||||||
|
this.searchData.SortField = sort.prop
|
||||||
|
if (sort.order === 'ascending') this.searchData.Asc = true
|
||||||
|
if (sort.order === 'descending') this.searchData.Asc = false
|
||||||
|
if (!sort.order) this.searchData.SortField = null
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
beforeCloseStudyDig() {
|
||||||
|
this.$setOpenWindow()
|
||||||
|
this.$emit('update:visible', false)
|
||||||
|
},
|
||||||
|
// 拉取pacs数据
|
||||||
|
async pullImage(row) {
|
||||||
|
try {
|
||||||
|
let confirm = this.$confirm(
|
||||||
|
this.$t('trials:inspection:pullImage:confirm:pull')
|
||||||
|
)
|
||||||
|
if (!confirm) return false
|
||||||
|
let data = {
|
||||||
|
PacsDicomAEId: this.searchData.PacsDicomAEId,
|
||||||
|
studyIDList: [row.StudyID],
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -6,7 +6,7 @@
|
||||||
custom-class="upload-dialog"
|
custom-class="upload-dialog"
|
||||||
:before-close="beforeCloseStudyDig"
|
:before-close="beforeCloseStudyDig"
|
||||||
>
|
>
|
||||||
<span slot="title"> </span>
|
<span slot="title"> {{ $t('trials:inspection:title:pushRecord') }}</span>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<el-form :inline="true" class="base-search-form">
|
<el-form :inline="true" class="base-search-form">
|
||||||
<!-- Called AE -->
|
<!-- Called AE -->
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
<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
|
<el-button
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
icon="el-icon-refresh-left"
|
icon="el-icon-refresh-left"
|
||||||
@click="handleReset"
|
@click="handleReset"
|
||||||
>
|
>
|
||||||
{{ $t("common:button:reset") }}
|
{{ $t('common:button:reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -188,9 +188,9 @@
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Pagination from "@/components/Pagination";
|
import Pagination from '@/components/Pagination'
|
||||||
import { getSCPImageUploadList } from "@/api/inspection.js";
|
import { getSCPImageUploadList } from '@/api/inspection.js'
|
||||||
import { getToken } from "@/utils/auth";
|
import { getToken } from '@/utils/auth'
|
||||||
const defaultSearchData = () => {
|
const defaultSearchData = () => {
|
||||||
return {
|
return {
|
||||||
CallingAE: null,
|
CallingAE: null,
|
||||||
|
@ -201,11 +201,11 @@ const defaultSearchData = () => {
|
||||||
PageIndex: 1,
|
PageIndex: 1,
|
||||||
PageSize: 10,
|
PageSize: 10,
|
||||||
Asc: false,
|
Asc: false,
|
||||||
SortField: "StartTime",
|
SortField: 'StartTime',
|
||||||
};
|
}
|
||||||
};
|
}
|
||||||
export default {
|
export default {
|
||||||
name: "pushRecordList",
|
name: 'pushRecordList',
|
||||||
components: { Pagination },
|
components: { Pagination },
|
||||||
props: {
|
props: {
|
||||||
visible: {
|
visible: {
|
||||||
|
@ -215,13 +215,13 @@ export default {
|
||||||
calledAeList: {
|
calledAeList: {
|
||||||
required: true,
|
required: true,
|
||||||
default: () => {
|
default: () => {
|
||||||
return [];
|
return []
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
callingAeList: {
|
callingAeList: {
|
||||||
required: true,
|
required: true,
|
||||||
default: () => {
|
default: () => {
|
||||||
return [];
|
return []
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -234,77 +234,77 @@ export default {
|
||||||
loading: false,
|
loading: false,
|
||||||
list: [],
|
list: [],
|
||||||
total: 0,
|
total: 0,
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async getList() {
|
async getList() {
|
||||||
let data = {};
|
let data = {}
|
||||||
Object.keys(this.searchData).forEach((key) => {
|
Object.keys(this.searchData).forEach((key) => {
|
||||||
data[key] = this.searchData[key];
|
data[key] = this.searchData[key]
|
||||||
});
|
})
|
||||||
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
|
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
|
||||||
data.StartTime = this.$moment(this.dateValue[0]).format(
|
data.StartTime = this.$moment(this.dateValue[0]).format(
|
||||||
"YYYY-MM-DD HH:mm:ss"
|
'YYYY-MM-DD HH:mm:ss'
|
||||||
);
|
)
|
||||||
data.EndTime = this.$moment(this.dateValue[1]).format(
|
data.EndTime = this.$moment(this.dateValue[1]).format(
|
||||||
"YYYY-MM-DD HH:mm:ss"
|
'YYYY-MM-DD HH:mm:ss'
|
||||||
);
|
)
|
||||||
} else {
|
} else {
|
||||||
data.StartTime = null;
|
data.StartTime = null
|
||||||
data.EndTime = null;
|
data.EndTime = null
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
let res = await getSCPImageUploadList(data);
|
let res = await getSCPImageUploadList(data)
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.list = res.Result.CurrentPageData;
|
this.list = res.Result.CurrentPageData
|
||||||
this.total = res.Result.TotalCount;
|
this.total = res.Result.TotalCount
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 查询
|
// 查询
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
this.searchData.PageIndex = 1;
|
this.searchData.PageIndex = 1
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 重置
|
// 重置
|
||||||
handleReset() {
|
handleReset() {
|
||||||
this.reset();
|
this.reset()
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 初始化
|
// 初始化
|
||||||
reset() {
|
reset() {
|
||||||
this.searchData = defaultSearchData();
|
this.searchData = defaultSearchData()
|
||||||
this.dateValue = [];
|
this.dateValue = []
|
||||||
},
|
},
|
||||||
// 表格排序
|
// 表格排序
|
||||||
handleSortByColumn(sort) {
|
handleSortByColumn(sort) {
|
||||||
this.searchData.SortField = sort.prop;
|
this.searchData.SortField = sort.prop
|
||||||
if (sort.order === "ascending") this.searchData.Asc = true;
|
if (sort.order === 'ascending') this.searchData.Asc = true
|
||||||
if (sort.order === "descending") this.searchData.Asc = false;
|
if (sort.order === 'descending') this.searchData.Asc = false
|
||||||
if (!sort.order) this.searchData.SortField = null;
|
if (!sort.order) this.searchData.SortField = null
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
beforeCloseStudyDig() {
|
beforeCloseStudyDig() {
|
||||||
this.$setOpenWindow();
|
this.$setOpenWindow()
|
||||||
this.$emit("update:visible", false);
|
this.$emit('update:visible', false)
|
||||||
},
|
},
|
||||||
// 查看影像
|
// 查看影像
|
||||||
image(item) {
|
image(item) {
|
||||||
let token = getToken();
|
let token = getToken()
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showdicom?studyId=${item.SCPStudyId}&TokenKey=${token}&type=Patient`,
|
path: `/showdicom?studyId=${item.SCPStudyId}&TokenKey=${token}&type=Patient`,
|
||||||
});
|
})
|
||||||
let newWindow = window.open(routeData.href, "_blank");
|
let newWindow = window.open(routeData.href, '_blank')
|
||||||
this.$setOpenWindow(newWindow);
|
this.$setOpenWindow(newWindow)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
|
@ -81,7 +81,7 @@
|
||||||
<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
|
<el-button
|
||||||
|
@ -89,13 +89,19 @@
|
||||||
icon="el-icon-refresh-left"
|
icon="el-icon-refresh-left"
|
||||||
@click="handleReset"
|
@click="handleReset"
|
||||||
>
|
>
|
||||||
{{ $t("common:button:reset") }}
|
{{ $t('common:button:reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 推送记录 -->
|
<!-- 推送记录 -->
|
||||||
<el-button type="primary" @click="handleOpenDialog({}, 'push')">
|
<el-button type="primary" @click="handleOpenDialog({}, 'push')">
|
||||||
{{ $t("common:button:push") }}
|
{{ $t('common:button:push') }}
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<!-- pacs拉取 -->
|
||||||
|
<el-button type="primary" @click="handleOpenDialog({}, 'pull')">
|
||||||
|
{{ $t('common:button:pull') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -147,7 +153,7 @@
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ $fd("Sex", scope.row.PatientSex) }}</span>
|
<span>{{ $fd('Sex', scope.row.PatientSex) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!--Called AE-->
|
<!--Called AE-->
|
||||||
|
@ -307,17 +313,25 @@
|
||||||
:calledAeList="calledAeList"
|
:calledAeList="calledAeList"
|
||||||
:callingAeList="callingAeList"
|
:callingAeList="callingAeList"
|
||||||
/>
|
/>
|
||||||
|
<!--pacs拉取列表-->
|
||||||
|
<pullImageList
|
||||||
|
v-if="pullTrialsVisible"
|
||||||
|
:visible.sync="pullTrialsVisible"
|
||||||
|
:calledAeList="calledAeList"
|
||||||
|
:callingAeList="callingAeList"
|
||||||
|
/>
|
||||||
</BaseContainer>
|
</BaseContainer>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import BaseContainer from "@/components/BaseContainer";
|
import BaseContainer from '@/components/BaseContainer'
|
||||||
import Pagination from "@/components/Pagination";
|
import Pagination from '@/components/Pagination'
|
||||||
import researchTrialsList from "./components/research-trials-list";
|
import researchTrialsList from './components/research-trials-list'
|
||||||
import addTrialsList from "./components/add-trials-list";
|
import addTrialsList from './components/add-trials-list'
|
||||||
import viewStudyList from "./components/view-study-list";
|
import viewStudyList from './components/view-study-list'
|
||||||
import pushRecordList from "./components/push-record-list";
|
import pushRecordList from './components/push-record-list'
|
||||||
import { getPatientList, deletePatientStudyAllData } from "@/api/inspection.js";
|
import pullImageList from './components/pull-image-list'
|
||||||
import { getDicomCalledAEList, getDicomCallingAEList } from "@/api/dicomAE.js";
|
import { getPatientList, deletePatientStudyAllData } from '@/api/inspection.js'
|
||||||
|
import { getDicomCalledAEList, getDicomCallingAEList } from '@/api/dicomAE.js'
|
||||||
|
|
||||||
const defaultSearchData = () => {
|
const defaultSearchData = () => {
|
||||||
return {
|
return {
|
||||||
|
@ -329,13 +343,13 @@ const defaultSearchData = () => {
|
||||||
Asc: false,
|
Asc: false,
|
||||||
BeginPushTime: null,
|
BeginPushTime: null,
|
||||||
EndPushTime: null,
|
EndPushTime: null,
|
||||||
SortField: "LatestPushTime",
|
SortField: 'LatestPushTime',
|
||||||
PageIndex: 1,
|
PageIndex: 1,
|
||||||
PageSize: 10,
|
PageSize: 10,
|
||||||
};
|
}
|
||||||
};
|
}
|
||||||
export default {
|
export default {
|
||||||
name: "inspection",
|
name: 'inspection',
|
||||||
components: {
|
components: {
|
||||||
BaseContainer,
|
BaseContainer,
|
||||||
Pagination,
|
Pagination,
|
||||||
|
@ -343,6 +357,7 @@ export default {
|
||||||
addTrialsList,
|
addTrialsList,
|
||||||
viewStudyList,
|
viewStudyList,
|
||||||
pushRecordList,
|
pushRecordList,
|
||||||
|
pullImageList,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -365,117 +380,119 @@ export default {
|
||||||
studyTrialsVisible: false,
|
studyTrialsVisible: false,
|
||||||
// 推送记录列表
|
// 推送记录列表
|
||||||
pushTrialsVisible: false,
|
pushTrialsVisible: false,
|
||||||
};
|
// pacs拉取列表
|
||||||
|
pullTrialsVisible: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getDicomCalledAEList();
|
this.getDicomCalledAEList()
|
||||||
this.getDicomCallingAEList();
|
this.getDicomCallingAEList()
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 清除数据
|
// 清除数据
|
||||||
async deletePatientStudyAllData(item) {
|
async deletePatientStudyAllData(item) {
|
||||||
try {
|
try {
|
||||||
let confirm = await this.$confirm(
|
let confirm = await this.$confirm(
|
||||||
this.$t("trials:inspection:message:remove"),
|
this.$t('trials:inspection:message:remove'),
|
||||||
{
|
{
|
||||||
type: "warning",
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true,
|
distinguishCancelAndClose: true,
|
||||||
confirmButtonText: this.$t("common:button:confirm"),
|
confirmButtonText: this.$t('common:button:confirm'),
|
||||||
cancelButtonText: this.$t("common:button:cancel"),
|
cancelButtonText: this.$t('common:button:cancel'),
|
||||||
}
|
}
|
||||||
);
|
)
|
||||||
if (confirm !== "confirm") return;
|
if (confirm !== 'confirm') return
|
||||||
let params = {
|
let params = {
|
||||||
PatientId: item.PatientId,
|
PatientId: item.PatientId,
|
||||||
};
|
}
|
||||||
let res = await deletePatientStudyAllData(params);
|
let res = await deletePatientStudyAllData(params)
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.getList();
|
this.getList()
|
||||||
this.$message.success(this.$t("common:message:removedSuccessfully"));
|
this.$message.success(this.$t('common:message:removedSuccessfully'))
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取calledAE列表
|
// 获取calledAE列表
|
||||||
async getDicomCalledAEList() {
|
async getDicomCalledAEList() {
|
||||||
try {
|
try {
|
||||||
let res = await getDicomCalledAEList();
|
let res = await getDicomCalledAEList()
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.calledAeList = res.Result;
|
this.calledAeList = res.Result
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取callingAE列表
|
// 获取callingAE列表
|
||||||
async getDicomCallingAEList() {
|
async getDicomCallingAEList() {
|
||||||
try {
|
try {
|
||||||
let res = await getDicomCallingAEList();
|
let res = await getDicomCallingAEList()
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.callingAeList = res.Result;
|
this.callingAeList = res.Result
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取列表数据
|
// 获取列表数据
|
||||||
async getList() {
|
async getList() {
|
||||||
let data = {};
|
let data = {}
|
||||||
Object.keys(this.searchData).forEach((key) => {
|
Object.keys(this.searchData).forEach((key) => {
|
||||||
data[key] = this.searchData[key];
|
data[key] = this.searchData[key]
|
||||||
});
|
})
|
||||||
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
|
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
|
||||||
data.BeginPushTime = this.$moment(this.dateValue[0]).format(
|
data.BeginPushTime = this.$moment(this.dateValue[0]).format(
|
||||||
"YYYY-MM-DD HH:mm:ss"
|
'YYYY-MM-DD HH:mm:ss'
|
||||||
);
|
)
|
||||||
data.EndPushTime = this.$moment(this.dateValue[1]).format(
|
data.EndPushTime = this.$moment(this.dateValue[1]).format(
|
||||||
"YYYY-MM-DD HH:mm:ss"
|
'YYYY-MM-DD HH:mm:ss'
|
||||||
);
|
)
|
||||||
} else {
|
} else {
|
||||||
data.BeginPushTime = null;
|
data.BeginPushTime = null
|
||||||
data.EndPushTime = null;
|
data.EndPushTime = null
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
this.loading = true;
|
this.loading = true
|
||||||
let res = await getPatientList(data);
|
let res = await getPatientList(data)
|
||||||
this.loading = false;
|
this.loading = false
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.list = res.Result.CurrentPageData;
|
this.list = res.Result.CurrentPageData
|
||||||
this.total = res.Result.TotalCount;
|
this.total = res.Result.TotalCount
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 查询
|
// 查询
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
this.searchData.PageIndex = 1;
|
this.searchData.PageIndex = 1
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 重置
|
// 重置
|
||||||
handleReset() {
|
handleReset() {
|
||||||
this.searchData = defaultSearchData();
|
this.searchData = defaultSearchData()
|
||||||
this.$refs.inspectionList.clearSort();
|
this.$refs.inspectionList.clearSort()
|
||||||
this.dateValue = [];
|
this.dateValue = []
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 表格排序
|
// 表格排序
|
||||||
handleSortByColumn(sort) {
|
handleSortByColumn(sort) {
|
||||||
this.searchData.SortField = sort.prop;
|
this.searchData.SortField = sort.prop
|
||||||
if (sort.order === "ascending") this.searchData.Asc = true;
|
if (sort.order === 'ascending') this.searchData.Asc = true
|
||||||
if (sort.order === "descending") this.searchData.Asc = false;
|
if (sort.order === 'descending') this.searchData.Asc = false
|
||||||
if (!sort.order) this.searchData.SortField = null;
|
if (!sort.order) this.searchData.SortField = null
|
||||||
this.getList();
|
this.getList()
|
||||||
},
|
},
|
||||||
// 打开弹框
|
// 打开弹框
|
||||||
handleOpenDialog(item, key) {
|
handleOpenDialog(item, key) {
|
||||||
this[`${key}TrialsVisible`] = true;
|
this[`${key}TrialsVisible`] = true
|
||||||
this.selectPatient = item;
|
this.selectPatient = item
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
</style>
|
</style>
|
|
@ -40,7 +40,7 @@ module.exports = {
|
||||||
// target: 'http://123.56.181.144:8060/api', // 国内测试环境1
|
// target: 'http://123.56.181.144:8060/api', // 国内测试环境1
|
||||||
// target: 'http://123.56.181.144:8000/api', // 国内测试环境
|
// target: 'http://123.56.181.144:8000/api', // 国内测试环境
|
||||||
// target: 'http://106.14.89.110:8079', // 国内测试环境2
|
// target: 'http://106.14.89.110:8079', // 国内测试环境2
|
||||||
target: 'http://106.14.89.110:30010', // 国内测试环境2
|
target: 'http://106.14.89.110:30021', // 国内测试环境2
|
||||||
// target: 'http://123.56.181.144:7000',
|
// target: 'http://123.56.181.144:7000',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
secure: false,
|
secure: false,
|
||||||
|
|
Loading…
Reference in New Issue