已加入项目列表、检查列表接口对接调试

main
wangxiaoshuang 2024-03-27 11:14:15 +08:00
parent 36746ac4b6
commit 7f66a22760
5 changed files with 212 additions and 60 deletions

View File

@ -44,4 +44,22 @@ export function addSubjectPatientBinding(data) {
method: 'post',
data
})
}
// 患者与受试者移除绑定关系
export function deleteSubjectPatientBinding(params) {
return request({
url: '/Patient/deleteSubjectPatientBinding',
method: 'delete',
params
})
}
// 获取患者检查列表
export function getPatientStudyList(data) {
return request({
url: '/Patient/getPatientStudyList',
method: 'post',
data
})
}

View File

@ -324,7 +324,6 @@ export default {
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key];
});
console.log(this.Patient);
data.PatientId = this.Patient.PatientId;
try {
this.loading = true;

View File

@ -9,13 +9,13 @@
<div class="top">
<p>
<span
>{{
$t("trials:uploadDicomList:table:patientInfo")
}}T0001132ZhangSan</span
>{{ $t("trials:uploadDicomList:table:patientInfo") }}{{
Patient.PatientIdStr
}}{{ Patient.PatientName }}</span
>|<span>
{{
$t("trials:inspection:research-trials-list:table:joinTrialsNumber")
}}2</span
}}{{ total }}</span
>
</p>
<el-button type="primary" @click="addTrials">
@ -31,80 +31,79 @@
stripe
height="100"
>
<!--项目编号-->
<!--受试者编号-->
<el-table-column
prop="IsUrgent"
:label="$t('trials:trials-list:table:trialId')"
prop="Code"
:label="$t('trials:crcQuestion:table:subjectId')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--研究方案号-->
<el-table-column
prop="IsUrgent"
prop="ResearchProgramNo"
:label="$t('trials:trials-list:table:researchNumber')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--试验名称-->
<el-table-column
prop="IsUrgent"
prop="ExperimentName"
:label="$t('trials:trials-list:table:experimentName')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--申办方-->
<el-table-column
prop="IsUrgent"
prop="SponsorName"
:label="$t('trials:trials-list:table:sponsor')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--状态-->
<el-table-column
prop="IsUrgent"
prop="TrialStatusStr"
:label="$t('trials:trials-list:table:status')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--创建日期-->
<el-table-column
prop="IsUrgent"
prop="CreateTime"
:label="$t('trials:trials-list:table:createDate')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--最新接收时间-->
<!--操作-->
<el-table-column :label="$t('common:action:action')" width="250">
<template slot-scope="scope">
<!-- 详情 -->
<el-button
circle
icon="el-icon-info"
:title="$t('trials:trials-list:action:panel')"
@click.stop="detail(scope.row)"
/>
<el-button type="text" @click.stop="detail(scope.row)">{{
$t("trials:trials-list:action:panel")
}}</el-button>
<!-- 移除项目 -->
<el-button
circle
icon="el-icon-delete"
:title="$t('common:button:remove')"
/>
<el-button type="text" @click.stop="remove(scope.row)">{{
$t("common:button:remove")
}}</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
<!-- <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 {
getPatientJoinedTrialList,
deleteSubjectPatientBinding,
} from "@/api/inspection.js";
export default {
name: "researchTrialsList",
components: { Pagination },
@ -113,15 +112,26 @@ export default {
require: true,
default: false,
},
Patient: {
require: true,
default: () => {
return {};
},
},
},
watch: {
visible() {
if (this.visible) {
this.getList();
}
},
},
data() {
return {
//
searchData: {},
//
total: 0,
loading: false,
list: [{ key: 1, VisitName: "123" }],
list: [],
};
},
methods: {
@ -132,12 +142,66 @@ export default {
//
addTrials() {
this.$emit("update:visible", false);
this.$emit("handleOpenDialog", {}, "add");
this.$emit("handleOpenDialog", this.Patient, "add");
},
//
getList() {},
async getList() {
let data = {
PatientId: this.Patient.PatientId,
};
try {
this.loading = true;
let res = await getPatientJoinedTrialList(data);
this.loading = false;
if (res.IsSuccess) {
this.list = res.Result.data;
this.total = this.list.length;
}
} catch (err) {
console.log(err);
}
},
//
detail(item) {},
detail(item) {
this.$emit("update:visible", false);
let query = {
trialId: item.TrialId,
trialCode: item.Code,
researchProgramNo: item.ResearchProgramNo,
};
this.$router.push({
path: "/trials/trials-panel/subject/subject-list",
query,
});
},
//
async remove(item) {
try {
let confirm = await this.$confirm(
this.$t("trials:sitesList:message:removeSite"),
{
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("recompose:button:cancel"),
}
);
if (confirm !== "confirm") return;
let params = {
PatientId: this.Patient.PatientId,
SubjectId: item,
};
this.loading = true;
let res = await deleteSubjectPatientBinding(params);
this.loading = false;
if (res.IsSuccess) {
this.getList();
this.$message.success(this.$t("common:message:removedSuccessfully"));
}
} catch (err) {
console.log(err);
}
},
},
};
</script>

View File

@ -9,27 +9,37 @@
<span slot="title"
>{{ $t("trials:inspection:message:viewStudy") }}{{
$t("trials:uploadDicomList:table:patientInfo")
}}T0001132ZhangSan</span
}}{{ Patient.PatientIdStr }}{{ Patient.PatientName }}</span
>
<div class="search">
<el-form :inline="true" class="base-search-form">
<!-- 检查类型 -->
<el-form-item :label="$t('trials:audit:table:modality')">
<el-select
v-model="searchData.VisitPlanArray"
v-model="searchData.Modalities"
clearable
multiple
style="width: 140px"
>
<el-option
v-for="(item, index) of modalityList"
:key="index"
:label="item.VisitName"
:value="item.VisitNum"
v-for="item of $d.modalType"
:key="item.id"
:label="item.label"
:value="item.label"
>
</el-option>
</el-select>
</el-form-item>
<!-- 检查日期 -->
<el-form-item :label="$t('trials:uploadedDicoms:table:studyDate')">
<el-date-picker
v-model="dateValue"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -58,7 +68,7 @@
<!--检查描述-->
<el-table-column
align="center"
prop="IsUrgent"
prop="Description"
:label="$t('trials:inspection:table:studyDescription')"
show-overflow-tooltip
min-width="140"
@ -66,7 +76,7 @@
<!--检查类型-->
<el-table-column
align="center"
prop="IsUrgent"
prop="Modalities"
:label="$t('trials:audit:table:modality')"
show-overflow-tooltip
min-width="140"
@ -74,7 +84,7 @@
<!--序列数-->
<el-table-column
align="center"
prop="IsUrgent"
prop="SeriesCount"
:label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip
min-width="140"
@ -82,7 +92,7 @@
<!--检查日期-->
<el-table-column
align="center"
prop="IsUrgent"
prop="StudyTime"
:label="$t('trials:audit:table:studyDate')"
show-overflow-tooltip
min-width="140"
@ -103,17 +113,19 @@
</el-table>
<!-- 分页组件 -->
<pagination
<!-- <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 { getPatientStudyList } from "@/api/inspection.js";
import { getToken } from "@/utils/auth";
export default {
name: "viewStudyList",
components: { Pagination },
@ -122,34 +134,89 @@ export default {
require: true,
default: false,
},
Patient: {
require: true,
default: () => {
return {};
},
},
},
data() {
return {
//
searchData: {},
modalityList: [],
searchData: {
Modalities: null,
EarliestStudyTime: null,
LatestStudyTime: null,
PatientId: null,
Asc: true,
SortField: null,
},
dateValue: [],
//
total: 0,
loading: false,
list: [{ key: 1, IsUrgent: "123" }],
//
submitMessage: {},
options: [],
list: [],
};
},
watch: {
visible() {
if (this.visible) {
this.getList();
}
},
},
methods: {
//
beforeCloseStudyDig() {
this.$emit("update:visible", false);
},
//
getList() {},
async getList() {
let data = {};
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key];
});
data.PatientId = this.Patient.PatientId;
if (this.dateValue[0] && this.dateValue[1]) {
data.EarliestStudyTime = this.dateValue[0].toISOString();
data.LatestStudyTime = this.dateValue[1].toISOString();
} else {
data.EarliestStudyTime = null;
data.LatestStudyTime = null;
}
try {
this.loading = true;
let res = await getPatientStudyList(data);
this.loading = false;
if (res.IsSuccess) {
this.list = res.Result;
}
} catch (err) {
console.log(err);
}
},
//
handleSearch() {},
handleSearch() {
this.getList();
},
//
handleReset() {},
handleReset() {
Object.keys(this.searchData).forEach((key) => {
this.searchData[key] = null;
});
this.searchData.Asc = true;
this.dateValue = [];
this.getList();
},
//
image() {},
image(item) {
let token = getToken();
const routeData = this.$router.resolve({
path: `/showdicom?studyId=${item.SCPStudyId}&TokenKey=${token}&type=Study`,
});
window.open(routeData.href, "_blank");
},
//
report() {},
},

View File

@ -135,8 +135,8 @@
>
<span>{{
index === scope.row.TrialList.length - 1
? `${item.experimentName}(${item.visitCount})`
: `${item.experimentName}(${item.visitCount}),`
? `${item.ExperimentName}${item.VisitCount}`
: `${item.ExperimentName}${item.VisitCount}`
}}</span>
</el-button>
<!-- <span v-else>{{ scope.row.VisitName }}</span> -->
@ -193,6 +193,7 @@
<!--研究项目列表-->
<researchTrialsList
:visible.sync="researchTrialsVisible"
:Patient="selectPatient"
@handleOpenDialog="handleOpenDialog"
/>
<!--可加入项目列表-->
@ -204,7 +205,10 @@
<!--确认访视列表-->
<confirmVisitList :visible.sync="confirmTrialsVisible" />
<!--查看检查列表-->
<viewStudyList :visible.sync="studyTrialsVisible" />
<viewStudyList
:visible.sync="studyTrialsVisible"
:Patient="selectPatient"
/>
</BaseContainer>
</template>
<script>