部分问题修复

main
wangxiaoshuang 2024-04-09 17:28:08 +08:00
parent 7be972dd94
commit 4c4e0be8d9
13 changed files with 1645 additions and 706 deletions

View File

@ -34,10 +34,17 @@ export function testConnect(id) {
}) })
} }
// 获取DicomAE下拉框数据 // 获取calledAE下拉框数据
export function getDicomCalledAEList() { export function getDicomCalledAEList() {
return request({ return request({
url: `/Patient/getDicomCalledAEList`, url: `/Patient/getDicomCalledAEList`,
method: 'get' method: 'get'
}) })
}
// 获取callingAE下拉框数据
export function getDicomCallingAEList() {
return request({
url: `/Patient/getDicomCallingAEList`,
method: 'get'
})
} }

View File

@ -213,7 +213,7 @@ export default {
if (trialsPanelList.find(c => { return c.path === v.name }) && trialsPanelList.find(c => { return c.path === v.name }).tabHiddn) { if (trialsPanelList.find(c => { return c.path === v.name }) && trialsPanelList.find(c => { return c.path === v.name }).tabHiddn) {
return return
} }
isHasChild = isHasChild.filter(i => this.isShow(i.path)) isHasChild =isHasChild ? isHasChild.filter(i => this.isShow(i.path)) : []
if (isHasChild && isHasChild.length > 0) { if (isHasChild && isHasChild.length > 0) {
this.trialsTabChild = isHasChild[0].path this.trialsTabChild = isHasChild[0].path
this.$router.push({ path: `${this.trialsTabChild}${query ? '?' : ''}${query}` }) this.$router.push({ path: `${this.trialsTabChild}${query ? '?' : ''}${query}` })

View File

@ -51,11 +51,10 @@ export default {
add() { add() {
this.$emit("add"); this.$emit("add");
}, },
selectChange() { selectChange(flag) {
this.$emit("selectChange"); this.$emit("selectChange", flag);
}, },
handleChange() { handleChange() {
console.log(this.visit);
this.$emit("update:modelData", this.visit); this.$emit("update:modelData", this.visit);
}, },
}, },

View File

@ -65,6 +65,7 @@
:data="list" :data="list"
stripe stripe
height="100" height="100"
highlight-current-row
@selection-change="handleSelectChange" @selection-change="handleSelectChange"
@sort-change="handleSortByColumn" @sort-change="handleSortByColumn"
:default-sort="{ prop: 'StudyTime', order: 'descending' }" :default-sort="{ prop: 'StudyTime', order: 'descending' }"
@ -344,6 +345,10 @@ export default {
this.$refs.confirmVisitList.clearSort(); this.$refs.confirmVisitList.clearSort();
if (flag) this.list = []; if (flag) this.list = [];
}, },
//
setCurrent(val) {
this.$refs.confirmVisitList.setCurrentRow(val);
},
// //
handleSelectChange(selection) { handleSelectChange(selection) {
// console.log(selection); // console.log(selection);
@ -405,10 +410,10 @@ export default {
if (!fd) return; if (!fd) return;
let data = { let data = {
TrialId: this.submitMessage.TrialId, TrialId: this.submitMessage.TrialId,
SubjectVisitId: [], SubjectVisitList: [],
}; };
this.tableSelectData.forEach((item) => { this.tableSelectData.forEach((item) => {
data.SubjectVisitId.push(item.SubjectVisitId); data.SubjectVisitList.push(item.SubjectVisitId);
}); });
try { try {
this.btnLoading2 = true; this.btnLoading2 = true;
@ -446,6 +451,14 @@ export default {
return true; return true;
}, },
}, },
// 访
// verifyData() {
// let arr = [...this.tableSelectData];
// arr.sort((a, b) => {
// new Date(a.StudyTime).getTime() - new Date(b.StudyTime).getTime();
// });
// },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -18,11 +18,8 @@
clearable clearable
/> />
</el-form-item> </el-form-item>
<!-- DICOM AE --> <!-- Called AE -->
<el-form-item <el-form-item class="my_multiple" label="Called AE">
class="my_multiple"
:label="$t('trials:inspection:table:DICOMAE')"
>
<el-select <el-select
v-model="searchData.CalledAEList" v-model="searchData.CalledAEList"
clearable clearable
@ -30,7 +27,23 @@
style="width: 140px" style="width: 140px"
> >
<el-option <el-option
v-for="(item, index) of dicomAeList" 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="Calling AE">
<el-select
v-model="searchData.callingAE"
clearable
style="width: 140px"
>
<el-option
v-for="(item, index) of callingAeList"
:key="index" :key="index"
:label="item" :label="item"
:value="item" :value="item"
@ -249,13 +262,14 @@ 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 { getPatientList } from "@/api/inspection.js"; import { getPatientList } from "@/api/inspection.js";
import { getDicomCalledAEList } from "@/api/dicomAE.js"; import { getDicomCalledAEList, getDicomCallingAEList } from "@/api/dicomAE.js";
const defaultSearchData = () => { const defaultSearchData = () => {
return { return {
PatientIdStr: null, PatientIdStr: null,
PatientName: null, PatientName: null,
CalledAEList: [], CalledAEList: [],
callingAE: null,
ExperimentName: null, ExperimentName: null,
Asc: false, Asc: false,
SortField: "LatestPushTime", SortField: "LatestPushTime",
@ -276,7 +290,8 @@ export default {
return { return {
// //
searchData: defaultSearchData(), searchData: defaultSearchData(),
dicomAeList: [], calledAeList: [],
callingAeList: [],
// //
total: 0, total: 0,
loading: false, loading: false,
@ -293,15 +308,27 @@ export default {
}, },
created() { created() {
this.getDicomCalledAEList(); this.getDicomCalledAEList();
this.getDicomCallingAEList();
this.getList(); this.getList();
}, },
methods: { methods: {
// dicomAE // calledAE
async getDicomCalledAEList() { async getDicomCalledAEList() {
try { try {
let res = await getDicomCalledAEList(); let res = await getDicomCalledAEList();
if (res.IsSuccess) { if (res.IsSuccess) {
this.dicomAeList = res.Result; this.calledAeList = res.Result;
}
} catch (err) {
console.log(err);
}
},
// callingAE
async getDicomCallingAEList() {
try {
let res = await getDicomCallingAEList();
if (res.IsSuccess) {
this.callingAeList = res.Result;
} }
} catch (err) { } catch (err) {
console.log(err); console.log(err);

View File

@ -13,7 +13,7 @@
<el-row> <el-row>
<!-- 项目码 v-if="trialForm.Id !== ''"--> <!-- 项目码 v-if="trialForm.Id !== ''"-->
<el-form-item <el-form-item
:label="$t('trials:trials-list:form:trialCode')" :label="$t('trials:trials-list:table:trialId')"
prop="TrialCode" prop="TrialCode"
> >
<!-- <el-input v-model="trialForm.TrialCode" disabled /> --> <!-- <el-input v-model="trialForm.TrialCode" disabled /> -->

View File

@ -0,0 +1,205 @@
<template>
<div class="study-info">
<div class="functions" style="text-align: right">
<!-- 预览 -->
<el-button
type="primary"
size="small"
:disabled="studyList.length === 0"
icon="el-icon-view"
@click="handlePreviewAllFiles"
>
{{ $t("trials:uploadedDicoms:action:preview") }}
</el-button>
</div>
<el-table
v-loading="studyLoading"
:data="studyList"
style="width: 100%"
height="300"
>
<!-- 检查编号 -->
<el-table-column
prop="StudyCode"
:label="$t('trials:uploadedDicoms:table:studyId')"
min-width="80"
show-overflow-tooltip
/>
<!-- 检查类型 -->
<el-table-column
prop="ModalityForEdit"
:label="$t('trials:audit:table:modality')"
/>
<!-- 检查类型 -->
<el-table-column
prop="Modalities"
:label="$t('trials:audit:table:modality1')"
/>
<!-- 检查部位 -->
<el-table-column
prop="BodyPartForEdit"
:label="$t('trials:uploadedDicoms:table:bodyPart')"
min-width="100"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ getBodyPart(scope.row.BodyPartForEdit) }}
</template>
</el-table-column>
<!-- 序列数量 -->
<el-table-column
prop="SeriesCount"
:label="$t('trials:uploadedDicoms:table:seriesCount')"
min-width="100"
show-overflow-tooltip
/>
<!-- 图像数量 -->
<el-table-column
prop="InstanceCount"
:label="$t('trials:uploadedDicoms:table:instanceCount')"
min-width="100"
show-overflow-tooltip
/>
<!-- 检查日期 -->
<el-table-column
prop="StudyTime"
:label="$t('trials:uploadedDicoms:table:studyDate')"
min-width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ moment(scope.row.StudyTime).format("YYYY-MM-DD") }}
</template>
</el-table-column>
<!-- 上传时间 -->
<el-table-column
prop="UploadedTime"
:label="$t('trials:uploadedDicoms:table:uploadedTime')"
min-width="80"
show-overflow-tooltip
/>
<el-table-column
:label="$t('common:action:action')"
min-width="100"
fixed="right"
>
<template slot-scope="scope">
<!-- 预览 -->
<el-button
icon="el-icon-view"
:disabled="scope.row.SeriesCount === 0 || scope.row.IsDeleted"
:title="$t('trials:uploadedDicoms:action:preview')"
circle
@click="handleViewStudy(scope.row)"
/>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import {
getSubjectVisitUploadedStudyList,
deleteStudyList,
updateModality,
} from "@/api/trials";
import moment from "moment";
import { getToken } from "@/utils/auth";
export default {
name: "StudyInfo",
props: {
data: {
type: Object,
default() {
return {};
},
},
},
data() {
return {
studyForm: {
StudyCode: "",
IsDicomData: true,
Modalities: "",
BodyPartForEdit: [],
SeriesCount: null,
StudyTime: "",
},
deleteArr: [],
studyLoading: false,
studyList: [],
trialId: this.$route.query.trialId,
moment,
relationInfo: null,
trialBodyPartTypes: [],
trialModalitys: [],
btnLoading: false,
};
},
mounted() {
this.getStudyInfo();
},
methods: {
getStudyInfo() {
this.studyLoading = true;
getSubjectVisitUploadedStudyList(this.data.SubjectVisitId)
.then((res) => {
this.studyList = res.Result;
this.studyLoading = false;
this.relationInfo = res.OtherInfo;
this.trialBodyPartTypes = this.relationInfo.BodyPartTypes
? this.relationInfo.BodyPartTypes.split("|")
: [];
this.trialModalitys = this.relationInfo.Modalitys
? this.relationInfo.Modalitys.split("|")
: [];
})
.catch(() => {
this.studyLoading = false;
});
},
//
handlePreviewAllFiles() {
var tokenKey = getToken();
const routeData = this.$router.resolve({
path: `/showvisitdicoms?trialId=${this.data.TrialId}&visitInfo=${this.data.VisitName}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&TokenKey=${tokenKey}`,
});
var newWindow = window.open(routeData.href, "_blank");
this.$emit("setOpenWindow", newWindow);
},
//
handleViewStudy(row) {
var token = getToken();
const routeData = this.$router.resolve({
path: `/showdicom?studyId=${row.StudyId}&TokenKey=${token}&type=Study`,
});
var newWindow = window.open(routeData.href, "_blank");
this.$emit("setOpenWindow", newWindow);
},
getBodyPart(bodyPart) {
if (!bodyPart) return "";
var separator = ",";
if (bodyPart.indexOf("|") > -1) {
separator = "|";
} else if (bodyPart.indexOf(",") > -1) {
separator = ",";
} else if (bodyPart.indexOf("") > -1) {
separator = "";
}
var arr = bodyPart.split(separator);
var newArr = arr.map((i) => {
return this.$fd("Bodypart", i.trim());
});
return newArr.join(" | ");
},
},
};
</script>
<style lang="scss">
.study-info {
.delete-row {
text-decoration-line: line-through;
color: #c0c4cc;
}
}
</style>

View File

@ -0,0 +1,79 @@
<template>
<el-dialog
:visible.sync="visible"
:close-on-click-modal="false"
:fullscreen="true"
custom-class="upload-dialog"
:before-close="beforeCloseStudyDig"
>
<span slot="title">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-show="rowData.SubjectCode">{{
rowData.SubjectCode
}}</el-breadcrumb-item>
<el-breadcrumb-item v-show="rowData.VisitName">{{
`${rowData.VisitName} (${rowData.VisitNum})`
}}</el-breadcrumb-item>
</el-breadcrumb>
</span>
<div class="base-modal-body">
<!-- DICOM影像 -->
<h4 class="box-title">{{ $t("trials:crcUpload:label:dicom") }}</h4>
<el-card class="box-card">
<StudyInfo
v-if="rowData.SubjectId"
:data="rowData"
@getList="getList"
@setOpenWindow="setOpenWindow"
/>
</el-card>
<!-- 检查列表 -->
<h4 class="box-title">{{ $t("trials:dicom-show:nowStudy") }}</h4>
<el-card class="box-card">
<StudyInfo
v-if="rowData.SubjectId"
:data="rowData"
@getList="getList"
@setOpenWindow="setOpenWindow"
/>
</el-card>
</div>
</el-dialog>
</template>
<script>
import StudyInfo from "./studyInfo.vue";
export default {
name: "visitInfo",
components: { StudyInfo },
props: {
visible: {
required: true,
default: false,
},
rowData: {
required: true,
default: () => {
return {};
},
},
},
data() {
return {
openWindow: null,
};
},
methods: {
getList() {},
setOpenWindow() {},
beforeCloseStudyDig() {
this.$emit("update:visible", false);
},
setOpenWindow(window) {
if (this.openWindow) {
this.openWindow.close();
}
this.openWindow = window;
},
},
};
</script>

View File

@ -151,7 +151,13 @@
prop="VisitName" prop="VisitName"
:label="$t('trials:uploadMonitor:table:visitName')" :label="$t('trials:uploadMonitor:table:visitName')"
show-overflow-tooltip show-overflow-tooltip
/> >
<template slot-scope="scope">
<el-button type="text" @click="handleOpenStudyDialog(scope.row)">
<span>{{ scope.row.VisitName }}</span>
</el-button>
</template>
</el-table-column>
<!-- 数据收集 --> <!-- 数据收集 -->
<!-- <el-table-column <!-- <el-table-column
prop="StudyCode" prop="StudyCode"
@ -277,12 +283,19 @@
v-if="editStudyVisible" v-if="editStudyVisible"
@getList="getList" @getList="getList"
/> />
<!--访视详情-->
<visitInfo
v-if="visitVisible"
:visible.sync="visitVisible"
:rowData="rowData"
/>
</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 editStudyList from "./components/edit-study-list.vue"; import editStudyList from "./components/edit-study-list.vue";
import visitInfo from "./components/visit-info.vue";
import { import {
getPatientSubejctVisitList, getPatientSubejctVisitList,
getSubjectImageZipInfo, getSubjectImageZipInfo,
@ -304,7 +317,7 @@ const defaultSearchData = () => {
}; };
export default { export default {
name: "hirVisit", name: "hirVisit",
components: { BaseContainer, Pagination, editStudyList }, components: { BaseContainer, Pagination, editStudyList, visitInfo },
data() { data() {
return { return {
// //
@ -317,6 +330,9 @@ export default {
// //
editStudyVisible: false, editStudyVisible: false,
editStudyData: {}, editStudyData: {},
// 访
visitVisible: false,
rowData: {},
}; };
}, },
created() { created() {
@ -360,6 +376,11 @@ export default {
console.log(err); console.log(err);
} }
}, },
// 访
handleOpenStudyDialog(row) {
this.visitVisible = true;
this.rowData = { ...row };
},
// //
editStudy(item) { editStudy(item) {
this.editStudyData = item; this.editStudyData = item;
@ -379,7 +400,7 @@ export default {
if (confirm !== "confirm") return; if (confirm !== "confirm") return;
let data = { let data = {
TrialId: this.$route.query.trialId, TrialId: this.$route.query.trialId,
SubjectVisitId: [item.SubjectVisitId], SubjectVisitList: [item.SubjectVisitId],
}; };
try { try {
this.loading = true; this.loading = true;

View File

@ -26,6 +26,7 @@
<el-form-item <el-form-item
:label="$t('trials:crcQuestion:table:subjectId')" :label="$t('trials:crcQuestion:table:subjectId')"
prop="SubjectId" prop="SubjectId"
class="SubjectId"
> >
<el-select <el-select
v-model="submitMessage.SubjectId" v-model="submitMessage.SubjectId"
@ -43,10 +44,6 @@
> >
</el-option> </el-option>
</el-select> </el-select>
<p>
{{ this.$t("trials:subject:messge:patient") }}
<span></span>
</p>
</el-form-item> </el-form-item>
<el-button <el-button
type="primary" type="primary"
@ -57,6 +54,11 @@
{{ $t("trials:addRP:button:confirmAddPR") }} {{ $t("trials:addRP:button:confirmAddPR") }}
</el-button> </el-button>
</div> </div>
<div>
<el-form-item :label="$t('trials:study:tabpane:bindPatient')">
<span v-if="bindPatientTip">{{ bindPatientTip }}</span>
</el-form-item>
</div>
<!--患者--> <!--患者-->
<el-form-item :label="$t('trials:subject:messge:patient')"> <el-form-item :label="$t('trials:subject:messge:patient')">
<el-input <el-input
@ -159,12 +161,14 @@ export default {
computed: { computed: {
bindPatientTip() { bindPatientTip() {
if (!this.submitMessage.SubjectId) return false; if (!this.submitMessage.SubjectId) return false;
let PatientList = this.subjectIdList.map((item) => { let PatientList = [];
if (item.SubjectId === this.submitMessage.SubjectId) { this.subjectIdList.some((item) => {
return item.PatientList; if (item.SubejctId === this.submitMessage.SubjectId) {
PatientList.push(...item.PatientList);
} }
})[0]; });
if (PatientList.length <= 0) return false; if (PatientList.length <= 0) return false;
return PatientList.map((item) => item.PatientIdStr).join(", ");
}, },
}, },
created() { created() {

View File

@ -17,8 +17,8 @@
class="mr" class="mr"
clearable clearable
/> />
<!-- DICOM AE --> <!-- Called AE -->
<span>{{ $t("trials:inspection:table:DICOMAE") }}:</span> <span>Called AE:</span>
<el-select <el-select
v-model="searchData.CalledAEList" v-model="searchData.CalledAEList"
clearable clearable
@ -26,7 +26,18 @@
class="mr" class="mr"
> >
<el-option <el-option
v-for="(item, index) of dicomAeList" v-for="(item, index) of calledAeList"
:key="index"
:label="item"
:value="item"
>
</el-option>
</el-select>
<!-- Calling AE -->
<span>Calling AE:</span>
<el-select v-model="searchData.callingAE" clearable class="mr">
<el-option
v-for="(item, index) of callingAeList"
:key="index" :key="index"
:label="item" :label="item"
:value="item" :value="item"
@ -171,12 +182,13 @@
<script> <script>
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
import { getPatientInitList } from "@/api/trials/subject.js"; import { getPatientInitList } from "@/api/trials/subject.js";
import { getDicomCalledAEList } from "@/api/dicomAE.js"; import { getDicomCalledAEList, getDicomCallingAEList } from "@/api/dicomAE.js";
const defaultSearchData = () => { const defaultSearchData = () => {
return { return {
PatientIdStr: null, PatientIdStr: null,
PatientName: null, PatientName: null,
CalledAEList: [], CalledAEList: [],
callingAE: null,
ExperimentName: null, ExperimentName: null,
Asc: false, Asc: false,
SortField: "LatestPushTime", SortField: "LatestPushTime",
@ -203,7 +215,8 @@ export default {
return { return {
// //
searchData: defaultSearchData(), searchData: defaultSearchData(),
dicomAeList: [], calledAeList: [],
callingAeList: [],
// //
list: [], list: [],
total: 0, total: 0,
@ -216,6 +229,7 @@ export default {
created() { created() {
this.getList(); this.getList();
this.getDicomCalledAEList(); this.getDicomCalledAEList();
this.getDicomCallingAEList();
}, },
methods: { methods: {
// //
@ -230,7 +244,9 @@ export default {
data[key] = this.searchData[key]; data[key] = this.searchData[key];
}); });
data.TrialId = this.$route.query.trialId; data.TrialId = this.$route.query.trialId;
data.SubjectId = this.submitMessage.SubjectId; if (this.submitMessage.SubjectId.length === 36) {
data.SubjectId = this.submitMessage.SubjectId;
}
try { try {
this.loading = true; this.loading = true;
let res = await getPatientInitList(data); let res = await getPatientInitList(data);
@ -272,12 +288,23 @@ export default {
this.$refs.subjectPatientList.clearSort(); this.$refs.subjectPatientList.clearSort();
this.getList(); this.getList();
}, },
// dicomAE // calledAE
async getDicomCalledAEList() { async getDicomCalledAEList() {
try { try {
let res = await getDicomCalledAEList(); let res = await getDicomCalledAEList();
if (res.IsSuccess) { if (res.IsSuccess) {
this.dicomAeList = res.Result; this.calledAeList = res.Result;
}
} catch (err) {
console.log(err);
}
},
// callingAE
async getDicomCallingAEList() {
try {
let res = await getDicomCallingAEList();
if (res.IsSuccess) {
this.callingAeList = res.Result;
} }
} catch (err) { } catch (err) {
console.log(err); console.log(err);

View File

@ -1,136 +1,154 @@
<template> <template>
<div class="trial-information"> <div class="trial-information">
<el-descriptions :column="2" border style="width:1000px;"> <el-descriptions :column="2" border style="width: 1000px">
<!--项目编号-->
<el-descriptions-item :label="$t('trials:trials-list:form:trialId')"> <el-descriptions-item :label="$t('trials:trials-list:form:trialId')">
{{trialInfo.TrialCode}} {{ trialInfo.TrialCode }}
<el-tag v-show="trialInfo.TrialStatusStr" size="small" style="margin-left:10px;"> <el-tag
( {{ $fd('TrialStatusEnum',trialInfo.TrialStatusStr) }} ) v-show="trialInfo.TrialStatusStr"
size="small"
style="margin-left: 10px"
>
( {{ $fd("TrialStatusEnum", trialInfo.TrialStatusStr) }} )
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item>
<!--项目类型-->
<el-descriptions-item :label="$t('trials:trials-list:form:trialType')"> <el-descriptions-item :label="$t('trials:trials-list:form:trialType')">
{{ $fd('TrialType', trialInfo.TrialType) }} {{ $fd("TrialType", trialInfo.TrialType) }}
</el-descriptions-item> </el-descriptions-item>
<!--试验名称-->
<el-descriptions-item :label="$t('trials:trials-list:form:experimentName')"> <el-descriptions-item
{{trialInfo.ExperimentName}} :label="$t('trials:trials-list:form:experimentName')"
>
{{ trialInfo.ExperimentName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:researchNumber')"> <!--研究方案号-->
<el-descriptions-item
:label="$t('trials:trials-list:form:researchNumber')"
>
{{ trialInfo.ResearchProgramNo }} {{ trialInfo.ResearchProgramNo }}
</el-descriptions-item> </el-descriptions-item>
<!--主要研究者-->
<el-descriptions-item :label="$t('trials:trials-list:form:researchUnit')">
{{trialInfo.MainResearchUnit}}
</el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:pi')"> <el-descriptions-item :label="$t('trials:trials-list:form:pi')">
{{ trialInfo.HeadPI }} {{ trialInfo.HeadPI }}
</el-descriptions-item> </el-descriptions-item>
<!--申办方-->
<el-descriptions-item :label="$t('trials:trials-list:form:sponsor')"> <el-descriptions-item :label="$t('trials:trials-list:form:sponsor')">
{{trialInfo.Sponsor}} {{ trialInfo.Sponsor }}
</el-descriptions-item> </el-descriptions-item>
<!--CRO-->
<el-descriptions-item :label="$t('trials:trials-list:form:cro')"> <el-descriptions-item :label="$t('trials:trials-list:form:cro')">
{{ trialInfo.CRO }} {{ trialInfo.CRO }}
</el-descriptions-item> </el-descriptions-item>
<!--药物/器械名称-->
<el-descriptions-item :label="$t('trials:trials-list:form:declarationType')"> <el-descriptions-item :label="$t('trials:trials-list:message:D/Dname')">
{{trialInfo.DeclarationTypeEnumList.map(v => $fd('DeclarationType', v)).toString()}} {{ trialInfo.MedicineName }}
</el-descriptions-item> </el-descriptions-item>
<!--临床分期-->
<el-descriptions-item :label="$t('trials:trials-list:form:phase')"> <el-descriptions-item :label="$t('trials:trials-list:form:phase')">
{{ trialInfo.Phase }} {{ $fd("Trial_Phase", trialInfo.PhaseId, "id") }}
</el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:indicationType')">
{{$fd('IndicationType', trialInfo.IndicationTypeId, 'id')}}
</el-descriptions-item> </el-descriptions-item>
<!--适应症-->
<el-descriptions-item :label="$t('trials:trials-list:form:indication')"> <el-descriptions-item :label="$t('trials:trials-list:form:indication')">
{{$fd('Indication', trialInfo.IndicationEnum)}}{{trialInfo.Indication}} {{ trialInfo.Indication }}
</el-descriptions-item> </el-descriptions-item>
<!--检查技术-->
<el-descriptions-item :label="$t('trials:trials-list:form:modality')"> <el-descriptions-item :label="$t('trials:trials-list:form:modality')">
{{trialInfo.ModalityList}} {{
trialInfo.ModalityIds
? trialInfo.ModalityIds.map((item) =>
$fd("Modality", item, "id")
).join(", ")
: ""
}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:siteCount')"> <!--阅片标准-->
{{ trialInfo.PlanSiteCount }} <el-descriptions-item
:span="2"
:label="$t('trials:trials-list:form:criterion')"
>
{{
trialInfo.CriterionTypeList
? trialInfo.CriterionTypeList.map((item) =>
$fd("CriterionType", item)
).join(", ")
: ""
}}
</el-descriptions-item> </el-descriptions-item>
<!--联系人-->
<el-descriptions-item :label="$t('trials:trials-list:form:patientsNum')"> <el-descriptions-item
{{trialInfo.ExpectedPatients}} :label="$t('trials:researchRecord:table:contactor')"
>
{{ trialInfo.ContactUser }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:timePointsPerPatient')"> <!--电话-->
{{ trialInfo.TimePointsPerPatient }} <el-descriptions-item :label="$t('trials:trials-myinfo:form:phone')">
{{ trialInfo.ContactPhone }}
</el-descriptions-item> </el-descriptions-item>
<!--授权时长-->
<el-descriptions-item :span="2" :label="$t('trials:trials-list:form:visitCount')"> <el-descriptions-item
{{trialInfo.PlanVisitCount}} :label="$t('trials:trials-list:table:durationAuthorized')"
>
{{ trialInfo.AuthorizationYear }}
</el-descriptions-item> </el-descriptions-item>
<!--授权日期-->
<el-descriptions-item
<el-descriptions-item :span="2" :label="$t('trials:trials-list:form:criterion')"> :label="$t('trials:trials-list:table:dateAuthorized')"
{{ trialInfo.Criterion }} >
{{ trialInfo.AuthorizationDate }}
</el-descriptions-item> </el-descriptions-item>
<!-- <el-descriptions-item :label="$t('trials:trials-list:form:reviewMode')">-->
<!-- <span>{{$fd('ReadingType', trialInfo.ReadingType)}}</span>-->
<!-- </el-descriptions-item>-->
<el-descriptions-item :label="$t('trials:trials-list:form:expedited')">
{{$fd('YesOrNoForInt', trialInfo.Expedited)}}
</el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:projectCycle')">
{{ trialInfo.ProjectCycle }}
</el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:totalReviewers')">
{{trialInfo.TotalReviewers}}
</el-descriptions-item>
<el-descriptions-item :label="$t('trials:trials-list:form:typeofReviewers')">
{{trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).toString()}}
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</template> </template>
<script> <script>
import { getTrialInfoHir } from '@/api/trials' import { getTrialInfoHir } from "@/api/trials";
export default { export default {
data() { data() {
return { return {
trialInfo: {}, trialInfo: {},
trialId: '', trialId: "",
trialStatus: '', trialStatus: "",
formLoading: false formLoading: false,
} };
}, },
mounted() { mounted() {
this.trialId = this.$route.query.trialId this.trialId = this.$route.query.trialId;
this.initForm() this.initForm();
}, },
methods: { methods: {
initForm() { initForm() {
this.formLoading = true this.formLoading = true;
getTrialInfoHir(this.trialId).then(res => { getTrialInfoHir(this.trialId)
this.formLoading = false .then((res) => {
this.trialInfo = res.Result this.formLoading = false;
this.trialInfo.ReviewTypeList = this.trialInfo.ReviewTypeList.length > 0 ? this.trialInfo.ReviewTypeList.join(', ') : '' this.trialInfo = res.Result;
var modalityArr = [] this.trialInfo.ReviewTypeList =
res.Result.ModalityIds.map(i=>{ this.trialInfo.ReviewTypeList.length > 0
modalityArr.push(this.$fd('Modality',i,'id')) ? this.trialInfo.ReviewTypeList.join(", ")
: "";
var modalityArr = [];
res.Result.ModalityIds.map((i) => {
modalityArr.push(this.$fd("Modality", i, "id"));
});
this.trialInfo.ModalityList = modalityArr.join(", ");
this.trialInfo.Criterion =
res.Result.CriterionList && res.Result.CriterionList.length > 0
? res.Result.CriterionList.join(", ")
: "";
// this.trialInfo.Expedited = this.$fd('Trial_BasicInfo', res.Result.Expedited)
// this.trialInfo.AttendedReviewerType = this.$fd('Trial_BasicInfo', res.Result.AttendedReviewerType)
}) })
this.trialInfo.ModalityList = modalityArr.join(', ') .catch(() => {
this.trialInfo.Criterion = res.Result.CriterionList && res.Result.CriterionList.length > 0 this.formLoading = false;
? res.Result.CriterionList.join(', ') });
: '' },
// this.trialInfo.Expedited = this.$fd('Trial_BasicInfo', res.Result.Expedited) },
// this.trialInfo.AttendedReviewerType = this.$fd('Trial_BasicInfo', res.Result.AttendedReviewerType) };
}).catch(() => { this.formLoading = false })
}
}
}
</script> </script>
<style lang="scss"> <style lang="scss">
.trial-information{ .trial-information {
height: 100%; height: 100%;
padding: 10px 0 0 10px; padding: 10px 0 0 10px;
background: #fff; background: #fff;
} }
</style> </style>