PET-CT临床数据的上传与临床数据采集Tab的的显示关系
parent
4ca0f35cad
commit
c02ce4b350
|
@ -1,21 +1,34 @@
|
|||
<template>
|
||||
<div class="previous-files-wrapper">
|
||||
|
||||
<!-- 多文件上传 -->
|
||||
<form id="inputForm" ref="uploadForm">
|
||||
<!-- 必须是PDF格式 -->
|
||||
<!-- <el-divider content-position="left">{{ $t('trials:attachment:message:pdf') }}</el-divider>-->
|
||||
<!-- <el-divider content-position="left">{{ $t('trials:attachment:message:pdf') }}</el-divider>-->
|
||||
<div class="form-group">
|
||||
<div id="directoryInputWrapper" class="btn btn-link" style="position: relative;overflow: hidden;display: inline-block;">
|
||||
<el-button size="small">{{ $t('trials:uploadClinicalData:button:selectFile') }}</el-button>
|
||||
<div
|
||||
id="directoryInputWrapper"
|
||||
class="btn btn-link"
|
||||
style="position: relative; overflow: hidden; display: inline-block"
|
||||
>
|
||||
<el-button size="small">{{
|
||||
$t("trials:uploadClinicalData:button:selectFile")
|
||||
}}</el-button>
|
||||
<input
|
||||
type="file"
|
||||
name="file"
|
||||
multiple
|
||||
style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;opacity: 0;cursor: pointer;"
|
||||
style="
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
"
|
||||
:accept="faccept.join(',')"
|
||||
@change="beginScanFiles($event)"
|
||||
>
|
||||
/>
|
||||
<!-- <span>共扫描了,符合要求的有</span> -->
|
||||
</div>
|
||||
</div>
|
||||
|
@ -28,17 +41,14 @@
|
|||
height="300"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
/>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column
|
||||
prop="name"
|
||||
:label="$t('trials:uploadClinicalData:table:fileName')"
|
||||
min-width="180"
|
||||
/>
|
||||
</el-table>
|
||||
<div style="text-align:right;padding: 10px 0px">
|
||||
<div style="text-align: right; padding: 10px 0px">
|
||||
<!-- 上传 -->
|
||||
<el-button
|
||||
size="small"
|
||||
|
@ -47,66 +57,93 @@
|
|||
:loading="btnLoading"
|
||||
@click="handleUploadFile"
|
||||
>
|
||||
{{ $t('trials:uploadClinicalData:button:uploadFile') }}
|
||||
{{ $t("trials:uploadClinicalData:button:uploadFile") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
// import { uploadVisitClinicalData } from '@/api/trials'
|
||||
import { addOrUpdateReadingClinicalData, uploadClinicalData } from '@/api/trials'
|
||||
import {
|
||||
addOrUpdateReadingClinicalData,
|
||||
uploadClinicalData,
|
||||
} from "@/api/trials";
|
||||
export default {
|
||||
props: {
|
||||
data: {
|
||||
type: Object,
|
||||
default() { return {} }
|
||||
default() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
subjectVisitId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
required: true,
|
||||
},
|
||||
studyData: {
|
||||
type: Object,
|
||||
default() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fileList: [],
|
||||
btnLoading: false,
|
||||
// faccept: ['.pdf', '.png', 'jpg', 'jpeg'],
|
||||
faccept: ['.pdf'],
|
||||
faccept: [".pdf"],
|
||||
trialId: this.$route.query.trialId,
|
||||
selectArr: [],
|
||||
addFileList: []
|
||||
}
|
||||
addFileList: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
beginScanFiles(e) {
|
||||
var files = e.target.files
|
||||
var files = e.target.files;
|
||||
for (var i = 0; i < files.length; ++i) {
|
||||
const fileName = files[i].name
|
||||
var extendName = fileName.substring(fileName.lastIndexOf('.')).toLocaleLowerCase()
|
||||
const fileName = files[i].name;
|
||||
var extendName = fileName
|
||||
.substring(fileName.lastIndexOf("."))
|
||||
.toLocaleLowerCase();
|
||||
if (this.faccept.indexOf(extendName) !== -1) {
|
||||
this.fileList.push(files[i])
|
||||
this.fileList.push(files[i]);
|
||||
}
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.handleAllSelect();
|
||||
});
|
||||
},
|
||||
// 表格全选
|
||||
handleAllSelect() {
|
||||
this.$refs.filesTable.toggleAllSelection();
|
||||
},
|
||||
// 获取待上传文件信息
|
||||
handleSelectionChange(selection) {
|
||||
this.selectArr = selection
|
||||
this.selectArr = selection;
|
||||
},
|
||||
|
||||
async handleUploadFile() {
|
||||
this.btnLoading = true
|
||||
this.addFileList = []
|
||||
this.btnLoading = true;
|
||||
this.addFileList = [];
|
||||
for (var i = 0; i < this.selectArr.length; ++i) {
|
||||
const file = await this.fileToBlob(this.selectArr[i])
|
||||
var timestamp = Date.now()
|
||||
const res = await this.OSSclient.put(`/${this.trialId}/ClinicalData/${timestamp}_${this.selectArr[i].name}`, file)
|
||||
this.addFileList.push({ fileName: this.selectArr[i].name, path: this.$getObjectName(res.url), url: this.$getObjectName(res.url) })
|
||||
const file = await this.fileToBlob(this.selectArr[i]);
|
||||
var timestamp = Date.now();
|
||||
const res = await this.OSSclient.put(
|
||||
`/${this.trialId}/ClinicalData/${timestamp}_${this.selectArr[i].name}`,
|
||||
file
|
||||
);
|
||||
this.addFileList.push({
|
||||
fileName: this.selectArr[i].name,
|
||||
path: this.$getObjectName(res.url),
|
||||
url: this.$getObjectName(res.url),
|
||||
});
|
||||
}
|
||||
this.saveClinicalData()
|
||||
this.btnLoading = false
|
||||
this.saveClinicalData();
|
||||
this.btnLoading = false;
|
||||
},
|
||||
saveClinicalData() {
|
||||
this.btnLoading = true
|
||||
this.btnLoading = true;
|
||||
var param = {
|
||||
id: this.data.Id,
|
||||
trialId: this.trialId,
|
||||
|
@ -115,18 +152,25 @@ export default {
|
|||
clinicalDataTrialSetId: this.data.ClinicalDataTrialSetId,
|
||||
isVisit: true,
|
||||
deleteFileIds: [],
|
||||
addFileList: this.addFileList
|
||||
addFileList: this.addFileList,
|
||||
};
|
||||
if (this.studyData.StudyId) {
|
||||
param.StudyId = this.studyData.StudyId;
|
||||
}
|
||||
addOrUpdateReadingClinicalData(param).then(response => {
|
||||
this.btnLoading = false
|
||||
// 刷新文件列表并关闭弹窗
|
||||
this.$emit('closeUpDialog')
|
||||
this.$emit('refresh')
|
||||
this.$message.success(this.$t('trials:uploadClinicalData:message:uploadSuccessfully'))
|
||||
}).catch(() => {
|
||||
this.btnLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
addOrUpdateReadingClinicalData(param)
|
||||
.then((response) => {
|
||||
this.btnLoading = false;
|
||||
// 刷新文件列表并关闭弹窗
|
||||
this.$emit("closeUpDialog");
|
||||
this.$emit("refresh");
|
||||
this.$message.success(
|
||||
this.$t("trials:uploadClinicalData:message:uploadSuccessfully")
|
||||
);
|
||||
})
|
||||
.catch(() => {
|
||||
this.btnLoading = false;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,723 @@
|
|||
<template>
|
||||
<div v-loading="loading" class="clinical-data-wrapper">
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane
|
||||
v-for="cd in clinicalDatas"
|
||||
:key="cd.ClinicalDataTrialSetId"
|
||||
:label="
|
||||
$i18n.locale === 'zh'
|
||||
? cd.ClinicalDataSetName
|
||||
: cd.ClinicalDataSetEnName
|
||||
"
|
||||
>
|
||||
<!-- 格式化录入 -->
|
||||
<div v-if="cd.ClinicalUploadType === 0">
|
||||
<!-- 既往放疗史 -->
|
||||
<h4>{{ $t("trials:uploadClinicalData:title:pastTreatment") }}</h4>
|
||||
<div v-if="allowAddOrEdit" style="text-align: right">
|
||||
<!-- 新增 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="small"
|
||||
@click.native.prevent="
|
||||
addPreviousHistory(cd.ClinicalDataTrialSetId)
|
||||
"
|
||||
>
|
||||
{{ $t("common:button:new") }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
:data="cd.ClinicalTableData.PreviousHistoryList"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<!-- 放疗部位 -->
|
||||
<el-table-column
|
||||
prop="Position"
|
||||
:label="$t('trials:uploadClinicalData:table:bodyPart')"
|
||||
/>
|
||||
<!-- 开始日期 -->
|
||||
<el-table-column
|
||||
prop="StartTime"
|
||||
:label="$t('trials:uploadClinicalData:table:beginDate')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.StartTime
|
||||
? moment(scope.row.StartTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 结束日期 -->
|
||||
<el-table-column
|
||||
prop="EndTime"
|
||||
:label="$t('trials:uploadClinicalData:table:endDate')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.EndTime
|
||||
? moment(scope.row.EndTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 病灶是否PD -->
|
||||
<el-table-column
|
||||
prop="IsPD"
|
||||
:label="$t('trials:uploadClinicalData:table:isPD')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd("IsPdEnum", scope.row.IsPD) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="allowAddOrEdit"
|
||||
:label="$t('common:action:action')"
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!-- 编辑 -->
|
||||
<el-button
|
||||
v-if="allowAddOrEdit"
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:title="$t('common:button:edit')"
|
||||
size="small"
|
||||
@click.native.prevent="editRow(scope.row, 1)"
|
||||
/>
|
||||
<!-- 移除 -->
|
||||
<el-button
|
||||
v-if="
|
||||
data.SubmitState * 1 < 2 ||
|
||||
(data.SubmitState === 2 && data.IsQCConfirmedReupload)
|
||||
"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
:title="$t('common:button:delete')"
|
||||
size="small"
|
||||
@click.native.prevent="deletePreviousHistory(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 既往手术史 -->
|
||||
<h4>{{ $t("trials:uploadClinicalData:title:pastSurgery") }}</h4>
|
||||
<div v-if="allowAddOrEdit" style="text-align: right">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="small"
|
||||
@click="addPreviousSurgery(cd.ClinicalDataTrialSetId)"
|
||||
>
|
||||
{{ $t("common:button:new") }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="cd.ClinicalTableData.PreviousSurgeryList"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<!-- 手术名称 -->
|
||||
<el-table-column
|
||||
prop="OperationName"
|
||||
:label="$t('trials:uploadClinicalData:table:surgeryName')"
|
||||
/>
|
||||
<!-- 手术日期 -->
|
||||
<el-table-column
|
||||
prop="OperationTime"
|
||||
:label="$t('trials:uploadClinicalData:table:surgeryDate')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.OperationTime
|
||||
? moment(scope.row.OperationTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
v-if="allowAddOrEdit"
|
||||
:label="$t('common:action:action')"
|
||||
min-width="200"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!-- 编辑 -->
|
||||
<el-button
|
||||
v-if="allowAddOrEdit"
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:title="$t('common:button:edit')"
|
||||
size="small"
|
||||
@click.native.prevent="editRow(scope.row, 2)"
|
||||
/>
|
||||
<!-- 移除 -->
|
||||
<el-button
|
||||
v-if="
|
||||
data.SubmitState * 1 < 2 ||
|
||||
(data.SubmitState === 2 && data.IsQCConfirmedReupload)
|
||||
"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
:title="$t('common:button:delete')"
|
||||
size="small"
|
||||
@click.native.prevent="deletePreviousSurgery(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 既往其他治疗史 -->
|
||||
<h4>{{ $t("trials:uploadClinicalData:title:others") }}</h4>
|
||||
<div v-if="allowAddOrEdit" style="text-align: right">
|
||||
<!-- 新增 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="small"
|
||||
@click="addPreviousOther(cd.ClinicalDataTrialSetId)"
|
||||
>
|
||||
{{ $t("common:button:new") }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="cd.ClinicalTableData.PreviousOtherList"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<!-- 治疗类型 -->
|
||||
<el-table-column
|
||||
prop="TreatmentType"
|
||||
:label="$t('trials:uploadClinicalData:table:treatmentType')"
|
||||
/>
|
||||
<!-- 开始日期 -->
|
||||
<el-table-column
|
||||
prop="StartTime"
|
||||
:label="$t('trials:uploadClinicalData:table:treatmentbeginDate')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.StartTime
|
||||
? moment(scope.row.StartTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 结束日期 -->
|
||||
<el-table-column
|
||||
prop="EndTime"
|
||||
:label="$t('trials:uploadClinicalData:table:treatmentendDate')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.EndTime
|
||||
? moment(scope.row.EndTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
v-if="allowAddOrEdit"
|
||||
:label="$t('common:action:action')"
|
||||
min-width="200"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!-- 编辑 -->
|
||||
<el-button
|
||||
v-if="allowAddOrEdit"
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:title="$t('common:button:edit')"
|
||||
size="small"
|
||||
@click.native.prevent="editRow(scope.row, 3)"
|
||||
/>
|
||||
<!-- 移除 -->
|
||||
<el-button
|
||||
v-if="
|
||||
data.SubmitState * 1 < 2 ||
|
||||
(data.SubmitState === 2 && data.IsQCConfirmedReupload)
|
||||
"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
:title="$t('common:button:delete')"
|
||||
size="small"
|
||||
@click.native.prevent="deletePreviousOther(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<!-- PDF录入 -->
|
||||
<div v-if="cd.ClinicalUploadType === 1">
|
||||
<div v-if="allowAddOrEdit" style="text-align: right">
|
||||
<!-- 下载模板 -->
|
||||
<el-button
|
||||
v-if="cd.Path"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
size="small"
|
||||
:loading="downloadLoading"
|
||||
@click.native.prevent="handleDownloadTpl(cd)"
|
||||
>
|
||||
{{ $t("trials:uploadClinicalData:button:downloadTemplate") }}
|
||||
</el-button>
|
||||
<!-- 新增 -->
|
||||
<el-button
|
||||
icon="el-icon-plus"
|
||||
type="primary"
|
||||
size="small"
|
||||
@click.native.prevent="addFile(cd.Id, cd.ClinicalDataTrialSetId)"
|
||||
>
|
||||
{{ $t("common:button:new") }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table :data="cd.PDFFileList" style="width: 100%" height="300">
|
||||
<el-table-column type="index" width="50" />
|
||||
<!-- 文件名称 -->
|
||||
<el-table-column
|
||||
prop="FileName"
|
||||
:label="$t('trials:uploadClinicalData:table:fileName')"
|
||||
width="250"
|
||||
/>
|
||||
<!-- 上传时间 -->
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
:label="$t('trials:uploadClinicalData:table:uploadedTime')"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column :label="$t('common:action:action')" width="200">
|
||||
<template slot-scope="scope">
|
||||
<!-- 预览 -->
|
||||
<el-button
|
||||
icon="el-icon-view"
|
||||
circle
|
||||
:title="$t('trials:uploadClinicalData:action:preview')"
|
||||
size="small"
|
||||
@click.native.prevent="preview(scope.row)"
|
||||
/>
|
||||
<!-- 移除 -->
|
||||
<el-button
|
||||
v-if="allowAddOrEdit"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
:title="$t('common:button:delete')"
|
||||
size="small"
|
||||
@click.native.prevent="deleteFile(scope.row.Id)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<!-- PDF录入 -->
|
||||
<div v-if="cd.ClinicalUploadType === 2">
|
||||
<clinicalDataQuestions
|
||||
v-if="cd.ClinicalFromList.length > 0"
|
||||
:data="cd"
|
||||
:trial-clinical-id="cd.ClinicalDataTrialSetId"
|
||||
:is-viewer="false"
|
||||
:visit-id="subjectVisitId"
|
||||
:subject-id="data.SubjectId"
|
||||
:trial-id="trialId"
|
||||
:clinical-form-id="cd.ClinicalFromList[0].ClinicalFormId"
|
||||
:open-type="allowAddOrEdit ? 'edit' : 'look'"
|
||||
@close="getClinicalData"
|
||||
/>
|
||||
<clinicalDataQuestions
|
||||
v-else
|
||||
:data="cd"
|
||||
:trial-clinical-id="cd.ClinicalDataTrialSetId"
|
||||
:is-viewer="!allowAddOrEdit"
|
||||
:visit-id="subjectVisitId"
|
||||
:subject-id="data.SubjectId"
|
||||
:trial-id="trialId"
|
||||
:open-type="'add'"
|
||||
@close="getClinicalData"
|
||||
/>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<!-- 既往放疗史 -->
|
||||
<el-dialog
|
||||
v-if="prVisible"
|
||||
:visible.sync="prVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:uploadClinicalData:title:pastTreatment')"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<PreviousRadiotherapy
|
||||
v-if="prVisible"
|
||||
:data="currentRow"
|
||||
:subject-visit-id="subjectVisitId"
|
||||
@closePRDialog="closePRDialog"
|
||||
@refresh="refresh"
|
||||
/>
|
||||
</el-dialog>
|
||||
<!-- 既往手术史 -->
|
||||
<el-dialog
|
||||
v-if="psVisible"
|
||||
:visible.sync="psVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:uploadClinicalData:title:pastSurgery')"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<PreviousSurgery
|
||||
v-if="psVisible"
|
||||
:data="currentRow"
|
||||
:parent-data="data"
|
||||
:subject-visit-id="subjectVisitId"
|
||||
@closePSDialog="closePSDialog"
|
||||
@refresh="refresh"
|
||||
/>
|
||||
</el-dialog>
|
||||
<!-- 既往其他治疗史 -->
|
||||
<el-dialog
|
||||
v-if="poVisible"
|
||||
:visible.sync="poVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:uploadClinicalData:title:others')"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<PreviousOther
|
||||
v-if="poVisible"
|
||||
:data="currentRow"
|
||||
:parent-data="data"
|
||||
:subject-visit-id="subjectVisitId"
|
||||
@closePODialog="closePODialog"
|
||||
@refresh="refresh"
|
||||
/>
|
||||
</el-dialog>
|
||||
<!-- 上传文件 -->
|
||||
<el-dialog
|
||||
v-if="upVisible"
|
||||
:visible.sync="upVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:uploadClinicalData:title:uploadFile')"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<PreviousFiles
|
||||
v-if="upVisible"
|
||||
:data="currentRow"
|
||||
:parent-data="data"
|
||||
:subject-visit-id="subjectVisitId"
|
||||
:studyData="studyData"
|
||||
@closeUpDialog="closeUpDialog"
|
||||
@refresh="refresh"
|
||||
/>
|
||||
</el-dialog>
|
||||
<!-- 预览文件 -->
|
||||
<el-dialog
|
||||
v-if="previewObj.visible"
|
||||
:visible.sync="previewObj.visible"
|
||||
:title="previewObj.fileName"
|
||||
:fullscreen="true"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<div
|
||||
class="base-modal-body"
|
||||
style="border: 2px solid #ccc; padding: 10px"
|
||||
>
|
||||
<PreviewFile
|
||||
v-if="previewObj.visible"
|
||||
:file-path="previewObj.filePath"
|
||||
:file-type="previewObj.fileType"
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
deleteReadingClinicalDataPDF,
|
||||
deletePreviousHistory,
|
||||
deletePreviousOther,
|
||||
deletePreviousSurgery,
|
||||
} from "@/api/trials";
|
||||
import { getCRCClinicalData } from "@/api/trials";
|
||||
import PreviousRadiotherapy from "./previousRadiotherapy";
|
||||
import PreviousSurgery from "./previousSurgery";
|
||||
import PreviousOther from "./previousOther";
|
||||
import PreviousFiles from "./previousFiles";
|
||||
import clinicalDataQuestions from "@/components/clinicalDataQuestions";
|
||||
import PreviewFile from "@/components/PreviewFile/index";
|
||||
import moment from "moment";
|
||||
export default {
|
||||
name: "uploadPetClinicalData",
|
||||
components: {
|
||||
PreviousRadiotherapy,
|
||||
PreviousSurgery,
|
||||
PreviousOther,
|
||||
PreviousFiles,
|
||||
clinicalDataQuestions,
|
||||
PreviewFile,
|
||||
},
|
||||
props: {
|
||||
data: {
|
||||
type: Object,
|
||||
default() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
studyData: {
|
||||
required: true,
|
||||
type: Object,
|
||||
default() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
subjectVisitId: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
enumType: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
allowAddOrEdit: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false,
|
||||
userTypeEnumInt: zzSessionStorage.getItem("userTypeEnumInt") * 1,
|
||||
loading: false,
|
||||
PreviousHistoryList: [],
|
||||
PreviousSurgeryList: [],
|
||||
PreviousOtherList: [],
|
||||
PreviousPDFList: [],
|
||||
fileList: [],
|
||||
currentRow: {},
|
||||
prVisible: false,
|
||||
psVisible: false,
|
||||
poVisible: false,
|
||||
upVisible: false,
|
||||
trialId: this.$route.query.trialId,
|
||||
moment,
|
||||
downloadLoading: false,
|
||||
clinicalDatas: [],
|
||||
previewObj: { visible: false, filePath: "", fileType: "" },
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getClinicalData();
|
||||
},
|
||||
methods: {
|
||||
getClinicalData() {
|
||||
this.loading = true;
|
||||
this.data.TrialId = this.$route.query.trialId;
|
||||
var param = {
|
||||
StudyId: this.studyData.StudyId,
|
||||
};
|
||||
getCRCClinicalData(param)
|
||||
.then((res) => {
|
||||
this.clinicalDatas = res.Result;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 打开编辑框
|
||||
editRow(row, type) {
|
||||
if (type === 1) {
|
||||
this.prVisible = true;
|
||||
} else if (type === 2) {
|
||||
this.psVisible = true;
|
||||
} else if (type === 3) {
|
||||
this.poVisible = true;
|
||||
}
|
||||
this.currentRow = { ...row };
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
},
|
||||
// 根据ID删除既往放疗史
|
||||
deletePreviousHistory(row) {
|
||||
this.$confirm(this.$t("trials:uploadedDicoms:message:deleteMes"), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
}).then(() => {
|
||||
this.loading = true;
|
||||
deletePreviousHistory(
|
||||
this.$route.query.trialId,
|
||||
this.subjectVisitId,
|
||||
row.Id
|
||||
)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.getClinicalData();
|
||||
this.$message.success(
|
||||
this.$t("trials:uploadedDicoms:message:deleteSuccessfully")
|
||||
);
|
||||
this.$emit("getStudyInfo");
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 根据ID删除既往手术史
|
||||
deletePreviousSurgery(row) {
|
||||
console.log(this.$route.query.trialId);
|
||||
this.$confirm(this.$t("trials:uploadedDicoms:message:deleteMes"), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
}).then(() => {
|
||||
// row.Type = '既往手术史'
|
||||
this.loading = true;
|
||||
deletePreviousSurgery(
|
||||
this.$route.query.trialId,
|
||||
this.subjectVisitId,
|
||||
row.Id
|
||||
)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.getClinicalData();
|
||||
this.$message.success(
|
||||
this.$t("trials:uploadedDicoms:message:deleteSuccessfully")
|
||||
);
|
||||
this.$emit("getStudyInfo");
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 根据ID删除既往其他资料史
|
||||
deletePreviousOther(row) {
|
||||
this.$confirm(this.$t("trials:uploadedDicoms:message:deleteMes"), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
}).then(() => {
|
||||
// row.Type = '既往其他治疗史'
|
||||
this.loading = true;
|
||||
deletePreviousOther(
|
||||
this.$route.query.trialId,
|
||||
this.subjectVisitId,
|
||||
row.Id
|
||||
)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.getClinicalData();
|
||||
this.$message.success(
|
||||
this.$t("trials:uploadedDicoms:message:deleteSuccessfully")
|
||||
);
|
||||
this.$emit("getStudyInfo");
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 文件预览
|
||||
preview(row) {
|
||||
if (!row.Path) return;
|
||||
this.previewObj.fileName = row.FileName;
|
||||
this.previewObj.filePath = row.Path;
|
||||
this.previewObj.fileType = "pdf";
|
||||
this.previewObj.visible = true;
|
||||
// window.open(this.OSSclientConfig.basePath + path, '_blank')
|
||||
},
|
||||
addPreviousHistory(clinicalDataTrialSetId) {
|
||||
console.log(clinicalDataTrialSetId);
|
||||
this.currentRow = { ClinicalDataTrialSetId: clinicalDataTrialSetId };
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
this.prVisible = true;
|
||||
},
|
||||
addPreviousSurgery(clinicalDataTrialSetId) {
|
||||
this.currentRow = { ClinicalDataTrialSetId: clinicalDataTrialSetId };
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
this.psVisible = true;
|
||||
},
|
||||
addPreviousOther(clinicalDataTrialSetId) {
|
||||
this.currentRow = { ClinicalDataTrialSetId: clinicalDataTrialSetId };
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
this.poVisible = true;
|
||||
},
|
||||
// 关闭既往放疗史窗口并刷新列表
|
||||
closePRDialog() {
|
||||
this.prVisible = false;
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
},
|
||||
closePSDialog() {
|
||||
this.psVisible = false;
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
},
|
||||
closePODialog() {
|
||||
this.poVisible = false;
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
},
|
||||
closeUpDialog() {
|
||||
this.upVisible = false;
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
},
|
||||
refresh() {
|
||||
this.getClinicalData();
|
||||
this.$emit("getStudyInfo");
|
||||
},
|
||||
// 添加文件
|
||||
addFile(id, clinicalDataTrialSetId) {
|
||||
this.currentRow = {
|
||||
Id: id,
|
||||
ClinicalDataTrialSetId: clinicalDataTrialSetId,
|
||||
SubjectId: this.data.SubjectId,
|
||||
};
|
||||
this.currentRow.TrialId = this.$route.query.trialId;
|
||||
this.upVisible = true;
|
||||
},
|
||||
// 删除文件
|
||||
deleteFile(id) {
|
||||
this.$confirm(this.$t("trials:uploadedDicoms:message:deleteMes"), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
}).then(() => {
|
||||
this.loading = true;
|
||||
deleteReadingClinicalDataPDF(id)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.getClinicalData();
|
||||
this.$emit("getStudyInfo");
|
||||
this.$message.success(
|
||||
this.$t("trials:uploadedDicoms:message:deleteSuccessfully")
|
||||
);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
handleDownloadTpl(cd) {
|
||||
window.open(this.OSSclientConfig.basePath + cd.Path);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.clinical-data-wrapper {
|
||||
.box-title {
|
||||
padding: 12px;
|
||||
margin-bottom: 10px;
|
||||
background-color: #dcdfe6;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -572,16 +572,16 @@
|
|||
<UploadNonDicomFiles v-if="rowData.Id" :data="rowData" :subject-visit-id="rowData.Id" :body-parts="otherInfo.BodyPartTypes" :modalities="otherInfo.Modalitys" :allow-add-or-edit="false" @getList="getList"/>
|
||||
</el-card>
|
||||
<!-- 临床数据 -->
|
||||
<h4 v-if="rowData.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0 && otherInfo.IsHaveSubjectClinicalData" class="box-title" style="margin-top:10px;">
|
||||
<h4 v-if="rowData.IsBaseLine && (otherInfo.IsHaveSubjectClinicalData||otherInfo.IsHaveVisitClinicalData)" class="box-title" style="margin-top:10px;">
|
||||
{{ $t('trials:crcUpload:label:clinicalData') }}
|
||||
</h4>
|
||||
<el-card v-if="rowData.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0 && otherInfo.IsHaveSubjectClinicalData" class="box-card">
|
||||
<el-card v-if="rowData.IsBaseLine && (otherInfo.IsHaveSubjectClinicalData||otherInfo.IsHaveVisitClinicalData)" class="box-card">
|
||||
<UploadClinicalData v-if="rowData.Id && rowData.IsBaseLine" :enum-type="otherInfo.ClinicalInformationTransmissionEnum" :allow-add-or-edit="false" :data="rowData" :subject-visit-id="rowData.Id" @getList="getList" />
|
||||
</el-card>
|
||||
<h4 v-if="!rowData.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0 && otherInfo.IsHaveVisitClinicalData" class="box-title" style="margin-top:10px;">
|
||||
<h4 v-if="!rowData.IsBaseLine && otherInfo.IsHaveVisitClinicalData" class="box-title" style="margin-top:10px;">
|
||||
{{ $t('trials:crcUpload:label:clinicalData') }}
|
||||
</h4>
|
||||
<el-card v-if="!rowData.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0 && otherInfo.IsHaveVisitClinicalData" class="box-card">
|
||||
<el-card v-if="!rowData.IsBaseLine && otherInfo.IsHaveVisitClinicalData" class="box-card">
|
||||
<UploadClinicalData v-if="rowData.Id" :enum-type="otherInfo.ClinicalInformationTransmissionEnum" :allow-add-or-edit="false" :data="rowData" :subject-visit-id="rowData.Id" @getList="getList" />
|
||||
</el-card>
|
||||
</div>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -581,10 +581,10 @@
|
|||
</el-card>
|
||||
</div>
|
||||
|
||||
<div v-if="OtherInfo.ClinicalInformationTransmissionEnum > 0">
|
||||
<div>
|
||||
<!-- 临床数据 -->
|
||||
<h4 class="box-title" style="margin-top:10px;">{{ $t('trials:audit:tab:clinicalData') }}</h4>
|
||||
<el-card v-if="OtherInfo.ClinicalInformationTransmissionEnum > 0" class="box-card">
|
||||
<el-card class="box-card">
|
||||
<UploadClinicalData v-if="rowData.Id" :enum-type="OtherInfo.ClinicalInformationTransmissionEnum" :data="rowData" :subject-visit-id="rowData.Id" :allow-add-or-edit="false" />
|
||||
</el-card>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue