新增阅片期页面
parent
fe77889633
commit
f9cbbd56ec
|
@ -1,127 +1,86 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="clinicalDataForm" v-loading="loading" :model="form" size="small" :rules="rules" :inline="true">
|
||||||
ref="clinicalDataForm"
|
|
||||||
v-loading="loading"
|
|
||||||
:model="form"
|
|
||||||
size="small"
|
|
||||||
:rules="rules"
|
|
||||||
label-width="110px"
|
|
||||||
:inline="true"
|
|
||||||
>
|
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<!-- 临床数据名称 -->
|
<!-- 临床数据名称 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:readingPeriod:cd:table:clinicalDataName')" prop="ClinicalDataTrialSetId">
|
||||||
:label="$t('trials:readingPeriod:cd:table:clinicalDataName')"
|
|
||||||
prop="ClinicalDataTrialSetId"
|
|
||||||
>
|
|
||||||
<el-col :span="20">
|
<el-col :span="20">
|
||||||
<el-select
|
<el-select v-model="form.ClinicalDataTrialSetId" @change="handleClinicalDataSetChange"
|
||||||
v-model="form.ClinicalDataTrialSetId"
|
:disabled="type === 'consistencyAnalysis'">
|
||||||
@change="handleClinicalDataSetChange"
|
<el-option v-for="item of clinicalDatas" :key="item.Id" :label="item.ClinicalDataSetName"
|
||||||
>
|
:value="item.Id" />
|
||||||
<el-option
|
|
||||||
v-for="item of clinicalDatas"
|
|
||||||
:key="item.Id"
|
|
||||||
:label="item.ClinicalDataSetName"
|
|
||||||
:value="item.Id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-button
|
<el-button v-if="currentTpl.isExist" type="text" @click="handleDownloadTpl">
|
||||||
v-if="currentTpl.isExist"
|
|
||||||
type="text"
|
|
||||||
@click="handleDownloadTpl"
|
|
||||||
>
|
|
||||||
{{ $t('trials:readingPeriod:cd:title:downloadTpl') }}
|
{{ $t('trials:readingPeriod:cd:title:downloadTpl') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 数据内容 -->
|
<!-- 数据内容:label="$t('trials:readingPeriod:cd:form:data')" -->
|
||||||
<el-form-item :label="$t('trials:readingPeriod:cd:form:data')">
|
|
||||||
<!-- 多文件上传 -->
|
<!-- 多文件上传 -->
|
||||||
<form id="inputForm" ref="uploadForm">
|
<form id="inputForm" ref="uploadForm">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div
|
<div id="directoryInputWrapper" class="btn btn-link" style="
|
||||||
id="directoryInputWrapper"
|
position: relative;
|
||||||
class="btn btn-link"
|
overflow: hidden;
|
||||||
style="position: relative;overflow: hidden;display: inline-block;"
|
display: inline-block;
|
||||||
>
|
">
|
||||||
<el-button
|
<el-button type="primary" size="small">
|
||||||
type="primary"
|
|
||||||
style="width: 56px;"
|
|
||||||
size="small"
|
|
||||||
>
|
|
||||||
{{ $t('trials:uploadClinicalData:button:selectFile') }}
|
{{ $t('trials:uploadClinicalData:button:selectFile') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<input
|
<input type="file" name="file" multiple style="
|
||||||
type="file"
|
position: absolute;
|
||||||
name="file"
|
top: 0;
|
||||||
multiple
|
left: 0;
|
||||||
style="position: absolute;top: 0;left: 0;width: 56px;height: 100%;opacity: 0;cursor: pointer;"
|
width: 56px;
|
||||||
:accept="faccept.join(',')"
|
height: 100%;
|
||||||
@change="beginScanFiles($event)"
|
opacity: 0;
|
||||||
>
|
cursor: pointer;
|
||||||
<span>{{ ($t('trials:attachment:message:pdf')) }}</span>
|
" :accept="faccept.join(',')" @change="beginScanFiles($event)" />
|
||||||
|
<span style="margin-left: 10px">{{
|
||||||
|
$t('trials:attachment:message:pdf')
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<!-- 文件列表 -->
|
<!-- 文件列表 -->
|
||||||
<el-table
|
<el-table ref="filesTable" :data="fileList" class="dicomFiles-table" height="300"
|
||||||
ref="filesTable"
|
style="width: 100%;margin-top:5px;" border>
|
||||||
:data="fileList"
|
|
||||||
class="dicomFiles-table"
|
|
||||||
height="300"
|
|
||||||
style="width:100%"
|
|
||||||
border
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<el-table-column
|
<el-table-column prop="FileName" :label="$t('trials:uploadClinicalData:table:fileName')" width="190"
|
||||||
prop="FileName"
|
show-overflow-tooltip />
|
||||||
:label="$t('trials:uploadClinicalData:table:fileName')"
|
<!-- 文件大小 -->
|
||||||
width="190"
|
<el-table-column prop="size" :label="$t('trials:uploadClinicalData:table:fileSize')">
|
||||||
show-overflow-tooltip
|
<template slot-scope="scope">
|
||||||
/>
|
<span>{{
|
||||||
<el-table-column
|
scope.row.size && scope.row.size > 0
|
||||||
:label="$t('common:action:action')"
|
? $FormatSize(scope.row.size)
|
||||||
width="100"
|
: scope.row.Size && scope.row.Size > 0
|
||||||
>
|
? $FormatSize(scope.row.Size)
|
||||||
|
: ''
|
||||||
|
}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('common:action:action')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 删除 -->
|
<!-- 删除 -->
|
||||||
<el-button
|
<el-button circle :title="$t('trials:readingPeriod:cd:action:deleteFile')" icon="el-icon-delete"
|
||||||
circle
|
@click="handleDeleteFile(scope.$index, scope.row)" />
|
||||||
:title="$t('trials:readingPeriod:cd:action:deleteFile')"
|
<!-- 下载 -->
|
||||||
icon="el-icon-delete"
|
<el-button v-if="type === 'consistencyAnalysis'" circle :title="$t('trials:readingPeriod:cd:action:upload')"
|
||||||
@click="handleDeleteFile(scope.$index,scope.row)"
|
icon="el-icon-download" @click="handleUploadFile(scope.row)" />
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
|
||||||
class="base-dialog-footer"
|
|
||||||
style="text-align:right;margin-top:10px;"
|
|
||||||
>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button :disabled="btnLoading" size="small" type="primary" @click="close">
|
||||||
:disabled="btnLoading"
|
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="close"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 保存 -->
|
<!-- 保存 -->
|
||||||
<el-button
|
<el-button size="small" type="primary" :loading="btnLoading" @click="save">
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
:loading="btnLoading"
|
|
||||||
@click="save"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:save') }}
|
{{ $t('common:button:save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -129,19 +88,31 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getTrialClinicalDataSelect,
|
import {
|
||||||
addOrUpdateReadingClinicalData, DownloadTrialClinicalFile } from '@/api/trials'
|
getTrialClinicalDataSelect,
|
||||||
|
addOrUpdateReadingClinicalData,
|
||||||
|
addOrUpdateConsistencyAnalysisReadingClinicalData,
|
||||||
|
} from '@/api/trials'
|
||||||
|
import { downLoadFile } from '@/utils/stream.js'
|
||||||
export default {
|
export default {
|
||||||
name: 'AddOrUpdateClinicalData',
|
name: 'AddOrUpdateClinicalData',
|
||||||
props: {
|
props: {
|
||||||
trialReadingCriterionId: {
|
trialReadingCriterionId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: '',
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default() { return {} }
|
default() {
|
||||||
}
|
return {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
default: 'readingPeriod',
|
||||||
|
},
|
||||||
|
option: {
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -157,25 +128,41 @@ export default {
|
||||||
IsVisist: true,
|
IsVisist: true,
|
||||||
AddFileList: [],
|
AddFileList: [],
|
||||||
DeleteFileIds: [],
|
DeleteFileIds: [],
|
||||||
FileList: []
|
FileList: [],
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
ClinicalDataTrialSetId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }]
|
ClinicalDataTrialSetId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('common:ruleMessage:select'),
|
||||||
|
trigger: ['blur', 'change'],
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
btnLoading: false,
|
btnLoading: false,
|
||||||
clinicalDatas: [],
|
clinicalDatas: [],
|
||||||
pendingUploadList: [],
|
pendingUploadList: [],
|
||||||
pendingDeleteList: [],
|
pendingDeleteList: [],
|
||||||
currentTpl: { id: '', isExist: false }
|
currentTpl: { id: '', isExist: false },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.initForm()
|
this.initForm()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 下载临床数据
|
||||||
|
handleUploadFile(row) {
|
||||||
|
let href = this.OSSclientConfig.basePath + row.Path
|
||||||
|
let name = row.FileName
|
||||||
|
downLoadFile(href, name)
|
||||||
|
},
|
||||||
async initForm() {
|
async initForm() {
|
||||||
|
if (this.type === 'readingPeriod') {
|
||||||
await this.getClinicalDatas()
|
await this.getClinicalDatas()
|
||||||
|
} else {
|
||||||
|
this.clinicalDatas = this.option
|
||||||
|
}
|
||||||
if (Object.keys(this.data).length > 0) {
|
if (Object.keys(this.data).length > 0) {
|
||||||
for (const k in this.form) {
|
for (const k in this.form) {
|
||||||
if (this.data.hasOwnProperty(k)) {
|
if (this.data.hasOwnProperty(k)) {
|
||||||
|
@ -187,7 +174,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
save() {
|
save() {
|
||||||
this.$refs.clinicalDataForm.validate(valid => {
|
this.$refs.clinicalDataForm.validate((valid) => {
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
if (this.fileList.length === 0) {
|
if (this.fileList.length === 0) {
|
||||||
// 请上传文件!
|
// 请上传文件!
|
||||||
|
@ -213,60 +200,52 @@ export default {
|
||||||
for (var i = 0; i < this.pendingUploadList.length; ++i) {
|
for (var i = 0; i < this.pendingUploadList.length; ++i) {
|
||||||
// const file = await this.convertBase64ToBlob(this.pendingUploadList[i])
|
// const file = await this.convertBase64ToBlob(this.pendingUploadList[i])
|
||||||
const file = await this.fileToBlob(this.pendingUploadList[i])
|
const file = await this.fileToBlob(this.pendingUploadList[i])
|
||||||
const res = await this.OSSclient.put(`/${this.data.TrialId}/ClinicalData/${this.pendingUploadList[i].name}`, file)
|
const res = await this.OSSclient.put(
|
||||||
this.form.AddFileList.push({ fileName: this.pendingUploadList[i].name, path: this.$getObjectName(res.url) })
|
`/${this.data.TrialId}/ClinicalData/${this.pendingUploadList[i].name}`,
|
||||||
|
file
|
||||||
|
)
|
||||||
|
this.form.AddFileList.push({
|
||||||
|
fileName: this.pendingUploadList[i].name,
|
||||||
|
path: this.$getObjectName(res.url),
|
||||||
|
size: this.pendingUploadList[i].size,
|
||||||
|
type: this.pendingUploadList[i].type,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
this.saveClinicalData(this.form.AddFileList)
|
this.saveClinicalData(this.form.AddFileList)
|
||||||
resolve()
|
resolve()
|
||||||
// var fileData = new FormData()
|
|
||||||
// for (var i = 0; i < this.pendingUploadList.length; ++i) {
|
|
||||||
// fileData.append('file', this.pendingUploadList[i])
|
|
||||||
// }
|
|
||||||
// this.btnLoading = true
|
|
||||||
// uploadClinicalData(this.data.TrialId, this.data.SubjectId, this.data.ReadingId, fileData).then(response => {
|
|
||||||
// this.btnLoading = false
|
|
||||||
// this.form.AddFileList = response.Result
|
|
||||||
// this.saveClinicalData()
|
|
||||||
// resolve(response.Result)
|
|
||||||
// }).catch(() => {
|
|
||||||
// this.btnLoading = false
|
|
||||||
// reject()
|
|
||||||
// })
|
|
||||||
})
|
|
||||||
},
|
|
||||||
fileToBlob(file) {
|
|
||||||
console.log('fileToBlob')
|
|
||||||
// 创建 FileReader 对象
|
|
||||||
const reader = new FileReader()
|
|
||||||
return new Promise(resolve => {
|
|
||||||
// FileReader 添加 load 事件
|
|
||||||
reader.addEventListener('load', (e) => {
|
|
||||||
let blob
|
|
||||||
if (typeof e.target.result === 'object') {
|
|
||||||
blob = new Blob([e.target.result])
|
|
||||||
} else {
|
|
||||||
blob = e.target.result
|
|
||||||
}
|
|
||||||
resolve(blob)
|
|
||||||
})
|
|
||||||
// FileReader 以 ArrayBuffer 格式 读取 File 对象中数据
|
|
||||||
reader.readAsArrayBuffer(file)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
saveClinicalData() {
|
saveClinicalData() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.btnLoading = true
|
this.btnLoading = true
|
||||||
this.form.DeleteFileIds = this.pendingDeleteList
|
this.form.DeleteFileIds = this.pendingDeleteList
|
||||||
addOrUpdateReadingClinicalData(this.form).then(response => {
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
addOrUpdateConsistencyAnalysisReadingClinicalData(this.form)
|
||||||
|
.then((response) => {
|
||||||
this.btnLoading = false
|
this.btnLoading = false
|
||||||
this.$emit('getList')
|
this.$emit('getList')
|
||||||
this.$emit('close')
|
this.$emit('close')
|
||||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => {
|
})
|
||||||
|
.catch(() => {
|
||||||
this.btnLoading = false
|
this.btnLoading = false
|
||||||
reject()
|
reject()
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
addOrUpdateReadingClinicalData(this.form)
|
||||||
|
.then((response) => {
|
||||||
|
this.btnLoading = false
|
||||||
|
this.$emit('getList')
|
||||||
|
this.$emit('close')
|
||||||
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.btnLoading = false
|
||||||
|
reject()
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getClinicalDatas() {
|
getClinicalDatas() {
|
||||||
|
@ -279,13 +258,15 @@ export default {
|
||||||
SubjectId: this.data.SubjectId,
|
SubjectId: this.data.SubjectId,
|
||||||
ReadingClinicalDataId: this.data.Id ? this.data.Id : '',
|
ReadingClinicalDataId: this.data.Id ? this.data.Id : '',
|
||||||
IsBaseLine: this.data.IsBaseLine,
|
IsBaseLine: this.data.IsBaseLine,
|
||||||
TrialReadingCriterionId: this.trialReadingCriterionId
|
TrialReadingCriterionId: this.trialReadingCriterionId,
|
||||||
}
|
}
|
||||||
getTrialClinicalDataSelect(param).then(res => {
|
getTrialClinicalDataSelect(param)
|
||||||
|
.then((res) => {
|
||||||
this.clinicalDatas = res.Result
|
this.clinicalDatas = res.Result
|
||||||
this.loading = false
|
this.loading = false
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => {
|
})
|
||||||
|
.catch(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
reject()
|
reject()
|
||||||
})
|
})
|
||||||
|
@ -294,43 +275,58 @@ export default {
|
||||||
handleDeleteFile(index, row) {
|
handleDeleteFile(index, row) {
|
||||||
this.$confirm(this.$t('trials:readingPeriod:cd:message:delete'), {
|
this.$confirm(this.$t('trials:readingPeriod:cd:message:delete'), {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true
|
distinguishCancelAndClose: true,
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
if (row.Id) {
|
if (row.Id) {
|
||||||
this.pendingDeleteList.push(row.Id)
|
this.pendingDeleteList.push(row.Id)
|
||||||
}
|
}
|
||||||
this.fileList.splice(index, 1)
|
this.fileList.splice(index, 1)
|
||||||
}).catch(() => {})
|
})
|
||||||
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
beginScanFiles(e) {
|
beginScanFiles(e) {
|
||||||
var files = e.target.files
|
var files = e.target.files
|
||||||
for (var i = 0; i < files.length; ++i) {
|
for (var i = 0; i < files.length; ++i) {
|
||||||
const fileName = files[i].name
|
const fileName = files[i].name
|
||||||
var extendName = fileName.substring(fileName.lastIndexOf('.')).toLocaleLowerCase()
|
var extendName = fileName
|
||||||
|
.substring(fileName.lastIndexOf('.'))
|
||||||
|
.toLocaleLowerCase()
|
||||||
if (this.faccept.indexOf(extendName) !== -1) {
|
if (this.faccept.indexOf(extendName) !== -1) {
|
||||||
this.fileList.push({ FileName: fileName, Path: '', Status: 0, Files: files[i] })
|
this.fileList.push({
|
||||||
|
FileName: fileName,
|
||||||
|
Path: '',
|
||||||
|
Status: 0,
|
||||||
|
Files: files[i],
|
||||||
|
size: files[i].size,
|
||||||
|
type: fileName.split('.')[1],
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleClinicalDataSetChange(v) {
|
handleClinicalDataSetChange(v) {
|
||||||
var index = this.clinicalDatas.findIndex(item => item.Id === v)
|
var index = this.clinicalDatas.findIndex((item) => item.Id === v)
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
this.currentTpl.id = this.clinicalDatas[index].Id
|
this.currentTpl.id = this.clinicalDatas[index].Id
|
||||||
|
this.currentTpl.path = this.clinicalDatas[index].Path
|
||||||
this.currentTpl.isExist = !!this.clinicalDatas[index].FileName
|
this.currentTpl.isExist = !!this.clinicalDatas[index].FileName
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleDownloadTpl() {
|
handleDownloadTpl() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
DownloadTrialClinicalFile(this.currentTpl.id).then(data => {
|
window.open(
|
||||||
|
this.OSSclientConfig.basePath + this.currentTpl.path,
|
||||||
|
'_blank'
|
||||||
|
)
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}).catch(() => { this.loading = false })
|
// DownloadTrialClinicalFile(this.currentTpl.id).then(data => {
|
||||||
|
// this.loading = false
|
||||||
|
// }).catch(() => { this.loading = false })
|
||||||
},
|
},
|
||||||
close() {
|
close() {
|
||||||
this.$emit('close')
|
this.$emit('close')
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -1,17 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading" class="add_reading-period-wrapper" style="display:flex;width: 100%;height: 100%;">
|
<div v-loading="loading" class="add_reading-period-wrapper" style="display:flex;width: 100%;height: 100%;">
|
||||||
<div
|
<div class="reading-period-form" style="width:450px;height:100%;margin-right: 10px;">
|
||||||
class="reading-period-form"
|
|
||||||
style="width:450px;height:100%;margin-right: 10px;"
|
|
||||||
>
|
|
||||||
<el-card shadow="never" style="height:571px;">
|
<el-card shadow="never" style="height:571px;">
|
||||||
<el-form
|
<el-form ref="addOrUpdatePR" :model="form" size="small" :rules="rules" label-width="160px">
|
||||||
ref="addOrUpdatePR"
|
|
||||||
:model="form"
|
|
||||||
size="small"
|
|
||||||
:rules="rules"
|
|
||||||
label-width="160px"
|
|
||||||
>
|
|
||||||
<!-- 阅片期类型 -->
|
<!-- 阅片期类型 -->
|
||||||
<el-form-item :label="$t('trials:rpManage:table:readingType')">
|
<el-form-item :label="$t('trials:rpManage:table:readingType')">
|
||||||
<el-input v-model="form.ReadingSetTypeName" disabled style="width:100%;" />
|
<el-input v-model="form.ReadingSetTypeName" disabled style="width:100%;" />
|
||||||
|
@ -23,23 +14,15 @@
|
||||||
<!-- 受试者范围 -->
|
<!-- 受试者范围 -->
|
||||||
<el-form-item :label="$t('trials:rpManage:table:subjectRange')" prop="ReadingScope">
|
<el-form-item :label="$t('trials:rpManage:table:subjectRange')" prop="ReadingScope">
|
||||||
<el-select v-model="form.ReadingScope" style="width:100%;">
|
<el-select v-model="form.ReadingScope" style="width:100%;">
|
||||||
<el-option
|
<el-option v-for="(item, index) of $d.ReadingScopeEnum" :key="index" :label="item.label"
|
||||||
v-for="(item,index) of $d.ReadingScopeEnum"
|
:value="item.value" />
|
||||||
:key="index"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 中心 -->
|
<!-- 中心 -->
|
||||||
<el-form-item v-if="form.ReadingScope === 1" :label="$t('trials:addRP:form:sites')" prop="SiteIds">
|
<el-form-item v-if="form.ReadingScope === 1" :label="$t('trials:addRP:form:sites')" prop="SiteIds">
|
||||||
<el-select v-model="form.SiteIds" filterable style="width:100%;" multiple>
|
<el-select v-model="form.SiteIds" filterable style="width:100%;" multiple>
|
||||||
<el-option
|
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteCode"
|
||||||
v-for="(item,index) of siteOptions"
|
:value="item.TrialSiteId" />
|
||||||
:key="index"
|
|
||||||
:label="item.TrialSiteCode"
|
|
||||||
:value="item.SiteId"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 条件 -->
|
<!-- 条件 -->
|
||||||
|
@ -52,30 +35,17 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 截止日期 -->
|
<!-- 截止日期 -->
|
||||||
<el-form-item v-if="form.DeadlineCondition === 0" :label="$t('trials:rpManage:table:expirationDate')" prop="ExpirationDate">
|
<el-form-item v-if="form.DeadlineCondition === 0" :label="$t('trials:rpManage:table:expirationDate')"
|
||||||
<el-date-picker
|
prop="ExpirationDate">
|
||||||
v-model="form.ExpirationDate"
|
<el-date-picker v-model="form.ExpirationDate" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd"
|
||||||
type="date"
|
style="width:100%;" />
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
format="yyyy-MM-dd"
|
|
||||||
|
|
||||||
style="width:100%;"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 截止访视 -->
|
<!-- 截止访视 -->
|
||||||
<el-form-item v-if="form.DeadlineCondition === 1" :label="$t('trials:rpManage:table:expirationVisit')" prop="VisitStageId">
|
<el-form-item v-if="form.DeadlineCondition === 1" :label="$t('trials:rpManage:table:expirationVisit')"
|
||||||
<el-select
|
prop="VisitStageId">
|
||||||
v-model="form.VisitStageId"
|
<el-select v-model="form.VisitStageId" clearable style="width:100%;" @change="handleVisitChange">
|
||||||
clearable
|
<el-option v-for="item of visitPlanOptions" :key="item.VisitStageId" :label="item.VisitName"
|
||||||
style="width:100%;"
|
:value="item.VisitStageId">
|
||||||
@change="handleVisitChange"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item of visitPlanOptions"
|
|
||||||
:key="item.VisitStageId"
|
|
||||||
:label="item.VisitName"
|
|
||||||
:value="item.VisitStageId"
|
|
||||||
>
|
|
||||||
<span style="float: left">{{ item.VisitName }}</span>
|
<span style="float: left">{{ item.VisitName }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
@ -96,63 +66,37 @@
|
||||||
<div class="result-table" style="flex:1;">
|
<div class="result-table" style="flex:1;">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
|
|
||||||
<el-table
|
<el-table ref="prList" v-loading="listLoading" :data="list" stripe height="455"
|
||||||
ref="prList"
|
@selection-change="handleSelectChange">
|
||||||
v-loading="listLoading"
|
|
||||||
:data="list"
|
|
||||||
stripe
|
|
||||||
height="455"
|
|
||||||
@selection-change="handleSelectChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" align="left" width="45" />
|
<el-table-column type="selection" align="left" width="45" />
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<!-- 中心 -->
|
<!-- 中心 -->
|
||||||
<el-table-column
|
<el-table-column prop="TrialSiteCode" :label="$t('trials:linkedRP:table:siteCode')" />
|
||||||
prop="TrialSiteCode"
|
|
||||||
:label="$t('trials:linkedRP:table:siteCode')"
|
|
||||||
/>
|
|
||||||
<!-- 受试者 -->
|
<!-- 受试者 -->
|
||||||
<el-table-column
|
<el-table-column prop="SubjectCode" :label="$t('trials:linkedRP:table:subjectCode')" />
|
||||||
prop="SubjectCode"
|
|
||||||
:label="$t('trials:linkedRP:table:subjectCode')"
|
|
||||||
/>
|
|
||||||
<!-- 截止访视 -->
|
<!-- 截止访视 -->
|
||||||
<el-table-column
|
<el-table-column prop="SubjectVisitName" :label="$t('trials:linkedRP:table:expirationVisit')" />
|
||||||
prop="SubjectVisitName"
|
|
||||||
:label="$t('trials:linkedRP:table:expirationVisit')"
|
|
||||||
/>
|
|
||||||
<!-- 最晚拍片日期 -->
|
<!-- 最晚拍片日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="LatestScanDate" :label="$t('trials:linkedRP:table:latestScanDate')">
|
||||||
prop="LatestScanDate"
|
|
||||||
:label="$t('trials:linkedRP:table:latestScanDate')"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.LatestScanDate ? moment(scope.row.LatestScanDate).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.LatestScanDate ? moment(scope.row.LatestScanDate).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 截止日期 -->
|
<!-- 截止日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="ExpirationDate" :label="$t('trials:linkedRP:table:expirationDate')">
|
||||||
prop="ExpirationDate"
|
|
||||||
:label="$t('trials:linkedRP:table:expirationDate')"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.ExpirationDate ? moment(scope.row.ExpirationDate).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.ExpirationDate ? moment(scope.row.ExpirationDate).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 阅片期名称 -->
|
<!-- 阅片期名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="ReadingPeriodName" :label="$t('trials:linkedRP:table:readingName')" />
|
||||||
prop="ReadingPeriodName"
|
|
||||||
:label="$t('trials:linkedRP:table:readingName')"
|
|
||||||
/>
|
|
||||||
<!-- 生效时间 -->
|
<!-- 生效时间 -->
|
||||||
<el-table-column
|
<el-table-column prop="EffectOfTime" :label="$t('trials:linkedRP:table:effectiveTime')" />
|
||||||
prop="EffectOfTime"
|
|
||||||
:label="$t('trials:linkedRP:table:effectiveTime')"
|
|
||||||
/>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页组件 -->
|
<!-- 分页组件 -->
|
||||||
<div style="text-align:right">
|
<div style="text-align:right">
|
||||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" :disabled="list.length === 0" @pagination="getReadingReriodList" />
|
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||||
|
:disabled="list.length === 0" @pagination="getReadingReriodList" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="text-align:right;padding-top: 10px;">
|
<div style="text-align:right;padding-top: 10px;">
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="addSubjectPR" v-loading="loading" :model="form" size="small" :rules="rules" label-width="180px">
|
||||||
ref="addSubjectPR"
|
|
||||||
v-loading="loading"
|
|
||||||
:model="form"
|
|
||||||
size="small"
|
|
||||||
:rules="rules"
|
|
||||||
label-width="180px"
|
|
||||||
>
|
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<!-- 中心编号 -->
|
<!-- 中心编号 -->
|
||||||
<el-form-item :label="$t('trials:readingPeriod:table:siteCode')">
|
<el-form-item :label="$t('trials:readingPeriod:table:siteCode')">
|
||||||
|
@ -24,18 +17,9 @@
|
||||||
<el-input v-model="form.Name" />
|
<el-input v-model="form.Name" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('trials:addSubjectPR:table:deadlineVisit')" prop="VisitStageId">
|
<el-form-item :label="$t('trials:addSubjectPR:table:deadlineVisit')" prop="VisitStageId">
|
||||||
<el-select
|
<el-select v-model="form.VisitStageId" clearable style="width:100%;" @change="handleVisitChange">
|
||||||
v-model="form.VisitStageId"
|
<el-option v-for="(item, index) of visitPlanOptions" :key="index" :label="item.VisitName"
|
||||||
clearable
|
:value="item.SubjectVisitId">
|
||||||
style="width:100%;"
|
|
||||||
@change="handleVisitChange"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="(item, index) of visitPlanOptions"
|
|
||||||
:key="index"
|
|
||||||
:label="item.VisitName"
|
|
||||||
:value="item.SubjectVisitId"
|
|
||||||
>
|
|
||||||
<span style="float: left">{{ item.VisitName }}</span>
|
<span style="float: left">{{ item.VisitName }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
@ -44,12 +28,7 @@
|
||||||
<div class="base-dialog-footer" style="text-align:right;padding: 5px 0;">
|
<div class="base-dialog-footer" style="text-align:right;padding: 5px 0;">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button :disabled="btnLoading" size="small" type="primary" @click="close">
|
||||||
:disabled="btnLoading"
|
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="close"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
|
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
|
||||||
|
@ -183,6 +162,7 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
getCanChangeReadVisitList({
|
getCanChangeReadVisitList({
|
||||||
SubjectId: this.data.SubjectId,
|
SubjectId: this.data.SubjectId,
|
||||||
|
ReadingSetType: this.data.ReadingSetType,
|
||||||
Id: this.data.Id,
|
Id: this.data.Id,
|
||||||
TrialReadingCriterionId: this.trialReadingCriterionId
|
TrialReadingCriterionId: this.trialReadingCriterionId
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="clinical-data_content">
|
<div class="clinical-data_content">
|
||||||
<el-tabs type="card" v-model="clinicalType" v-if="!(data.IsVisit || data.IsBaseLine)">
|
<el-tabs
|
||||||
<el-tab-pane v-for="item in $d.GetClinicalType" :key="item.Id" :label="item.label" :name="item.value.toString()">
|
type="card"
|
||||||
<div v-if="item.value === 1">
|
v-model="clinicalType"
|
||||||
<h4 style="margin:0">
|
v-if="!(data.IsVisit || data.IsBaseLine)"
|
||||||
|
>
|
||||||
|
<div v-if="type === 'readingPeriod'">
|
||||||
|
<!--style="margin:0"-->
|
||||||
|
<h4>
|
||||||
<!-- 提示: -->
|
<!-- 提示: -->
|
||||||
{{ $t('trials:readingPeriod:cd:title:tips') }}
|
{{ $t('trials:readingPeriod:cd:title:tips') }}
|
||||||
</h4>
|
</h4>
|
||||||
<h5>
|
<h5>
|
||||||
<!-- 当前访视/阅片期需要采集“临床数据名称”。请采集临床数据后,按照模板上传,并签名确认。 -->
|
<!-- 当前访视/阅片期需要采集“临床数据名称”。请采集临床数据后,按照模板上传,并签名确认。 -->
|
||||||
{{ $t('trials:readingPeriod:cd:title:tips1') }}
|
{{ tips1 }}
|
||||||
</h5>
|
</h5>
|
||||||
<h5>
|
<h5>
|
||||||
{{ $t('trials:readingPeriod:cd:title:tips2') }}
|
{{ $t('trials:readingPeriod:cd:title:tips2') }}
|
||||||
|
@ -28,7 +32,12 @@
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 添加 -->
|
<!-- 添加 -->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="otherInfo.IsCanAddClinicalData && hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) && clinicalType === '1'"
|
v-if="
|
||||||
|
otherInfo.IsCanAddClinicalData &&
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
|
||||||
|
clinicalType === '1' &&
|
||||||
|
type !== 'consistencyAnalysis'
|
||||||
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -36,18 +45,30 @@
|
||||||
>
|
>
|
||||||
{{ $t('common:button:add') }}
|
{{ $t('common:button:add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<!--下载模板-->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) && clinicalType === '2' && list.length > 0 && list[0].ReadingClinicalDataState !== 3 && !list[0].IsCRCApplicationRevoke"
|
v-if="
|
||||||
|
otherInfo.IsCanAddClinicalData &&
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
|
||||||
|
clinicalType === '1' &&
|
||||||
|
type !== 'consistencyAnalysis'
|
||||||
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-download"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="list.length === 0"
|
@click="downLoadTemplate"
|
||||||
@click="handleVerification(list[0], 'confirm')"
|
|
||||||
>
|
>
|
||||||
核查
|
{{ $t('trials:readingPeriod:cd:title:downLoadTemplate') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) && clinicalType === '2' && list.length > 0 && list[0].ReadingClinicalDataState !== 3 && list[0].IsCRCApplicationRevoke"
|
v-if="
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
|
||||||
|
clinicalType === '2' &&
|
||||||
|
list.length > 0 &&
|
||||||
|
list[0].ReadingClinicalDataState !== 3 &&
|
||||||
|
list[0].IsCRCApplicationRevoke &&
|
||||||
|
type !== 'consistencyAnalysis'
|
||||||
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -70,11 +91,13 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="ClinicalDataSetName"
|
prop="ClinicalDataSetName"
|
||||||
:label="$t('trials:readingPeriod:cd:table:clinicalDataName')"
|
:label="$t('trials:readingPeriod:cd:table:clinicalDataName')"
|
||||||
|
min-width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="UploadRole"
|
prop="UploadRole"
|
||||||
label="上传人"
|
:label="$t('trials:studyList:table:uploader')"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
|
min-width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('ClinicalDataUploadRole', scope.row.UploadRole) }}
|
{{ $fd('ClinicalDataUploadRole', scope.row.UploadRole) }}
|
||||||
|
@ -84,6 +107,7 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="ClinicalDataLevel"
|
prop="ClinicalDataLevel"
|
||||||
:label="$t('trials:readingPeriod:cd:table:dataLevel')"
|
:label="$t('trials:readingPeriod:cd:table:dataLevel')"
|
||||||
|
min-width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('ClinicalLevel', scope.row.ClinicalDataLevel) }}
|
{{ $fd('ClinicalLevel', scope.row.ClinicalDataLevel) }}
|
||||||
|
@ -93,6 +117,7 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="ClinicalUploadType"
|
prop="ClinicalUploadType"
|
||||||
:label="$t('trials:readingPeriod:cd:table:transferType')"
|
:label="$t('trials:readingPeriod:cd:table:transferType')"
|
||||||
|
min-width="120"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('ClinicalUploadType', scope.row.ClinicalUploadType) }}
|
{{ $fd('ClinicalUploadType', scope.row.ClinicalUploadType) }}
|
||||||
|
@ -102,9 +127,12 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="FileCount"
|
prop="FileCount"
|
||||||
:label="$t('trials:readingPeriod:cd:table:fileCount')"
|
:label="$t('trials:readingPeriod:cd:table:fileCount')"
|
||||||
|
min-width="120"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.ClinicalUploadType === 0?'NA':scope.row.FileCount }}
|
{{
|
||||||
|
scope.row.ClinicalUploadType === 0 ? 'NA' : scope.row.FileCount
|
||||||
|
}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 阅片临床数据状态 -->
|
<!-- 阅片临床数据状态 -->
|
||||||
|
@ -114,21 +142,57 @@
|
||||||
width="150"
|
width="150"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 0" type="info">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
<el-tag
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 1" type="danger">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
v-if="scope.row.ReadingClinicalDataState === 0"
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 2" type="primary">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
type="info"
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 3" type="warning">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.ReadingClinicalDataState === 1"
|
||||||
|
type="danger"
|
||||||
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.ReadingClinicalDataState === 2"
|
||||||
|
type="primary"
|
||||||
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.ReadingClinicalDataState === 3"
|
||||||
|
type="warning"
|
||||||
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column :label="$t('common:action:action')" width="260">
|
||||||
:label="$t('common:action:action')"
|
|
||||||
width="260"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 查看 -->
|
<!-- 查看 -->
|
||||||
<el-button
|
<el-button
|
||||||
circle
|
circle
|
||||||
:disabled="scope.row.ClinicalUploadType===1 && scope.row.FileCount === 0"
|
:disabled="
|
||||||
|
scope.row.ClinicalUploadType === 1 &&
|
||||||
|
scope.row.FileCount === 0
|
||||||
|
"
|
||||||
:title="$t('trials:readingPeriod:cd:action:view')"
|
:title="$t('trials:readingPeriod:cd:action:view')"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handlePreview(scope.row.Id, scope.row)"
|
@click="handlePreview(scope.row.Id, scope.row)"
|
||||||
|
@ -140,7 +204,11 @@
|
||||||
circle
|
circle
|
||||||
:title="$t('trials:readingPeriod:cd:action:edit')"
|
:title="$t('trials:readingPeriod:cd:action:edit')"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
:disabled="scope.row.IsCRCUpload || scope.row.IsSign || scope.row.UploadRole === 0"
|
:disabled="
|
||||||
|
scope.row.IsCRCUpload ||
|
||||||
|
scope.row.IsSign ||
|
||||||
|
scope.row.UploadRole === 0
|
||||||
|
"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
/>
|
/>
|
||||||
<!-- 编辑 -->
|
<!-- 编辑 -->
|
||||||
|
@ -150,17 +218,26 @@
|
||||||
circle
|
circle
|
||||||
:title="$t('trials:readingPeriod:cd:title:cdCheck')"
|
:title="$t('trials:readingPeriod:cd:title:cdCheck')"
|
||||||
icon="el-icon-s-claim"
|
icon="el-icon-s-claim"
|
||||||
:disabled="(scope.row.IsCRCUpload || scope.row.IsSign || scope.row.UploadRole === 0) && scope.row.ReadingClinicalDataState !== 2"
|
:disabled="
|
||||||
|
(scope.row.IsCRCUpload ||
|
||||||
|
scope.row.IsSign ||
|
||||||
|
scope.row.UploadRole === 0) &&
|
||||||
|
scope.row.ReadingClinicalDataState !== 2
|
||||||
|
"
|
||||||
@click="handleVerification(scope.row, 'confirm')"
|
@click="handleVerification(scope.row, 'confirm')"
|
||||||
/>
|
/>
|
||||||
<!-- 删除 -->
|
<!-- 删除 -->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="clinicalType === '1'"
|
v-if="clinicalType === '1' && type !== 'consistencyAnalysis'"
|
||||||
v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
|
v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
|
||||||
circle
|
circle
|
||||||
:title="$t('trials:readingPeriod:cd:action:delete')"
|
:title="$t('trials:readingPeriod:cd:action:delete')"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
:disabled="scope.row.IsCRCUpload || scope.row.IsSign || scope.row.UploadRole === 0"
|
:disabled="
|
||||||
|
scope.row.IsCRCUpload ||
|
||||||
|
scope.row.IsSign ||
|
||||||
|
scope.row.UploadRole === 0
|
||||||
|
"
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -173,11 +250,18 @@
|
||||||
:visible.sync="addOrUpdateCD.visible"
|
:visible.sync="addOrUpdateCD.visible"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:title="addOrUpdateCD.title"
|
:title="addOrUpdateCD.title"
|
||||||
width="500px"
|
width="600px"
|
||||||
append-to-body
|
append-to-body
|
||||||
custom-class="base-dialog-wrapper"
|
custom-class="base-dialog-wrapper"
|
||||||
>
|
>
|
||||||
<AddOrEditCD :trial-reading-criterion-id="trialReadingCriterionId" :data="currentData" @close="addOrUpdateCD.visible = false" @getList="getList" />
|
<AddOrEditCD
|
||||||
|
:trial-reading-criterion-id="trialReadingCriterionId"
|
||||||
|
:data="currentData"
|
||||||
|
:option="currentOption"
|
||||||
|
:type="type"
|
||||||
|
@close="addOrUpdateCD.visible = false"
|
||||||
|
@getList="getList"
|
||||||
|
/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 核查 -->
|
<!-- 核查 -->
|
||||||
|
@ -190,7 +274,13 @@
|
||||||
append-to-body
|
append-to-body
|
||||||
custom-class="base-dialog-wrapper"
|
custom-class="base-dialog-wrapper"
|
||||||
>
|
>
|
||||||
<Verification :data="currentData" @close="verification.visible = false" @getList="getList" @handlePreview="handlePreview" @sign="handleSign" />
|
<Verification
|
||||||
|
:data="currentData"
|
||||||
|
@close="verification.visible = false"
|
||||||
|
@getList="getList"
|
||||||
|
@handlePreview="handlePreview"
|
||||||
|
@sign="handleSign"
|
||||||
|
/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 签名 -->
|
<!-- 签名 -->
|
||||||
|
@ -203,13 +293,25 @@
|
||||||
append-to-body
|
append-to-body
|
||||||
>
|
>
|
||||||
<div slot="title">
|
<div slot="title">
|
||||||
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
|
<span style="font-size: 18px">{{
|
||||||
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
|
$t('common:dialogTitle:sign')
|
||||||
|
}}</span>
|
||||||
|
<span style="font-size: 12px; margin-left: 5px">{{
|
||||||
|
`(${$t('common:label:sign')}${currentUser})`
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
|
<SignForm
|
||||||
|
ref="signForm"
|
||||||
|
:sign-code-enum="signCode"
|
||||||
|
@closeDialog="closeSignDialog"
|
||||||
|
/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <template v-for="item in $d.GetClinicalType">
|
||||||
|
<el-tab-pane :key="item.Id" :label="item.label" :name="item.value.toString()" v-if="item.value===1">
|
||||||
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
</template> -->
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<div class="top">
|
<div class="top">
|
||||||
|
@ -225,7 +327,10 @@
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 添加 -->
|
<!-- 添加 -->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="otherInfo.IsCanAddClinicalData && hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])"
|
v-if="
|
||||||
|
otherInfo.IsCanAddClinicalData &&
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
|
||||||
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -250,7 +355,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="UploadRole"
|
prop="UploadRole"
|
||||||
label="上传人"
|
:label="$t('trials:studyList:table:uploader')"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
@ -281,7 +386,9 @@
|
||||||
:label="$t('trials:readingPeriod:cd:table:fileCount')"
|
:label="$t('trials:readingPeriod:cd:table:fileCount')"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.ClinicalUploadType === 0?'NA':scope.row.FileCount }}
|
{{
|
||||||
|
scope.row.ClinicalUploadType === 0 ? 'NA' : scope.row.FileCount
|
||||||
|
}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 阅片临床数据状态 -->
|
<!-- 阅片临床数据状态 -->
|
||||||
|
@ -291,21 +398,57 @@
|
||||||
width="150"
|
width="150"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 0" type="info">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
<el-tag
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 1" type="danger">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
v-if="scope.row.ReadingClinicalDataState === 0"
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 2" type="primary">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
type="info"
|
||||||
<el-tag v-if="scope.row.ReadingClinicalDataState === 3" type="warning">{{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}</el-tag>
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.ReadingClinicalDataState === 1"
|
||||||
|
type="danger"
|
||||||
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.ReadingClinicalDataState === 2"
|
||||||
|
type="primary"
|
||||||
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.ReadingClinicalDataState === 3"
|
||||||
|
type="warning"
|
||||||
|
>{{
|
||||||
|
$fd(
|
||||||
|
'ReadingClinicalDataState',
|
||||||
|
scope.row.ReadingClinicalDataState
|
||||||
|
)
|
||||||
|
}}</el-tag
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column :label="$t('common:action:action')" width="260">
|
||||||
:label="$t('common:action:action')"
|
|
||||||
width="260"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 查看 -->
|
<!-- 查看 -->
|
||||||
<el-button
|
<el-button
|
||||||
circle
|
circle
|
||||||
:disabled="scope.row.ClinicalUploadType===1 && scope.row.FileCount === 0"
|
:disabled="
|
||||||
|
scope.row.ClinicalUploadType === 1 &&
|
||||||
|
scope.row.FileCount === 0
|
||||||
|
"
|
||||||
:title="$t('trials:readingPeriod:cd:action:view')"
|
:title="$t('trials:readingPeriod:cd:action:view')"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handlePreview(scope.row.Id, scope.row)"
|
@click="handlePreview(scope.row.Id, scope.row)"
|
||||||
|
@ -316,7 +459,13 @@
|
||||||
circle
|
circle
|
||||||
:title="$t('trials:readingPeriod:cd:action:edit')"
|
:title="$t('trials:readingPeriod:cd:action:edit')"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
:disabled="scope.row.IsCRCUpload || scope.row.IsSign || scope.row.UploadRole === 0"
|
:disabled="
|
||||||
|
scope.row.IsCRCUpload ||
|
||||||
|
scope.row.IsSign ||
|
||||||
|
scope.row.UploadRole === 0 ||
|
||||||
|
(type === 'consistencyAnalysis' &&
|
||||||
|
scope.row.ReadingClinicalDataState === 3)
|
||||||
|
"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
/>
|
/>
|
||||||
<!-- 编辑 -->
|
<!-- 编辑 -->
|
||||||
|
@ -325,7 +474,13 @@
|
||||||
circle
|
circle
|
||||||
:title="$t('trials:readingPeriod:cd:title:cdCheck')"
|
:title="$t('trials:readingPeriod:cd:title:cdCheck')"
|
||||||
icon="el-icon-s-claim"
|
icon="el-icon-s-claim"
|
||||||
:disabled="(scope.row.IsCRCUpload || scope.row.IsSign || scope.row.UploadRole === 0) && scope.row.ReadingClinicalDataState !== 2"
|
:disabled="
|
||||||
|
(scope.row.IsCRCUpload ||
|
||||||
|
scope.row.IsSign ||
|
||||||
|
scope.row.UploadRole === 0 ||
|
||||||
|
type === 'consistencyAnalysis') &&
|
||||||
|
scope.row.ReadingClinicalDataState !== 2
|
||||||
|
"
|
||||||
@click="handleVerification(scope.row, 'confirm')"
|
@click="handleVerification(scope.row, 'confirm')"
|
||||||
/>
|
/>
|
||||||
<!-- 删除 -->
|
<!-- 删除 -->
|
||||||
|
@ -334,24 +489,33 @@
|
||||||
circle
|
circle
|
||||||
:title="$t('trials:readingPeriod:cd:action:delete')"
|
:title="$t('trials:readingPeriod:cd:action:delete')"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
:disabled="scope.row.IsCRCUpload || scope.row.IsSign || scope.row.UploadRole === 0"
|
:disabled="
|
||||||
|
scope.row.IsCRCUpload ||
|
||||||
|
scope.row.IsSign ||
|
||||||
|
scope.row.UploadRole === 0
|
||||||
|
"
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 添加或编辑 -->
|
<!-- 添加 -->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-if="addOrUpdateCD.visible"
|
v-if="addOrUpdateCD.visible"
|
||||||
:visible.sync="addOrUpdateCD.visible"
|
:visible.sync="addOrUpdateCD.visible"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:title="addOrUpdateCD.title"
|
:title="addOrUpdateCD.title"
|
||||||
width="500px"
|
width="600px"
|
||||||
append-to-body
|
append-to-body
|
||||||
custom-class="base-dialog-wrapper"
|
custom-class="base-dialog-wrapper"
|
||||||
>
|
>
|
||||||
<AddOrEditCD :trial-reading-criterion-id="trialReadingCriterionId" :data="currentData" @close="addOrUpdateCD.visible = false" @getList="getList" />
|
<AddOrEditCD
|
||||||
|
:trial-reading-criterion-id="trialReadingCriterionId"
|
||||||
|
:data="currentData"
|
||||||
|
@close="addOrUpdateCD.visible = false"
|
||||||
|
@getList="getList"
|
||||||
|
/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 核查 -->
|
<!-- 核查 -->
|
||||||
|
@ -364,7 +528,13 @@
|
||||||
append-to-body
|
append-to-body
|
||||||
custom-class="base-dialog-wrapper"
|
custom-class="base-dialog-wrapper"
|
||||||
>
|
>
|
||||||
<Verification :data="currentData" @close="verification.visible = false" @getList="getList" @handlePreview="handlePreview" @sign="handleSign" />
|
<Verification
|
||||||
|
:data="currentData"
|
||||||
|
@close="verification.visible = false"
|
||||||
|
@getList="getList"
|
||||||
|
@handlePreview="handlePreview"
|
||||||
|
@sign="handleSign"
|
||||||
|
/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 签名 -->
|
<!-- 签名 -->
|
||||||
|
@ -377,34 +547,57 @@
|
||||||
append-to-body
|
append-to-body
|
||||||
>
|
>
|
||||||
<div slot="title">
|
<div slot="title">
|
||||||
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
|
<span style="font-size: 18px">{{
|
||||||
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
|
$t('common:dialogTitle:sign')
|
||||||
|
}}</span>
|
||||||
|
<span style="font-size: 12px; margin-left: 5px">{{
|
||||||
|
`(${$t('common:label:sign')}${currentUser})`
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
|
<SignForm
|
||||||
|
ref="signForm"
|
||||||
|
:sign-code-enum="signCode"
|
||||||
|
@closeDialog="closeSignDialog"
|
||||||
|
/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getReadingClinicalDataList, deleteReadingClinicalData, ReadClinicalDataSign } from '@/api/trials'
|
import {
|
||||||
|
getReadingClinicalDataList,
|
||||||
|
deleteReadingClinicalData,
|
||||||
|
ReadClinicalDataSign,
|
||||||
|
getTrialClinicalDataSelect,
|
||||||
|
getConsistencyAnalysisReadingClinicalDataList,
|
||||||
|
signConsistencyAnalysisReadingClinicalData,
|
||||||
|
} from '@/api/trials'
|
||||||
import AddOrEditCD from './AddOrEditCD'
|
import AddOrEditCD from './AddOrEditCD'
|
||||||
import Verification from './Verification'
|
import Verification from './Verification'
|
||||||
import SignForm from '@/views/trials/components/newSignForm'
|
import SignForm from '@/views/trials/components/newSignForm'
|
||||||
import const_ from '@/const/sign-code'
|
import const_ from '@/const/sign-code'
|
||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
|
import { downLoadFile } from '@/utils/stream.js'
|
||||||
export default {
|
export default {
|
||||||
name: 'ClinicalData',
|
name: 'ClinicalData',
|
||||||
components: { AddOrEditCD, SignForm, Verification },
|
components: { AddOrEditCD, SignForm, Verification },
|
||||||
props: {
|
props: {
|
||||||
trialReadingCriterionId: {
|
trialReadingCriterionId: {
|
||||||
type: String,
|
type: String,
|
||||||
default() { return '' }
|
default() {
|
||||||
|
return ''
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default() { return {} }
|
default() {
|
||||||
}
|
return {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
default: 'readingPeriod',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
clinicalType() {
|
clinicalType() {
|
||||||
|
@ -422,17 +615,21 @@ export default {
|
||||||
addOrUpdateCD: { title: '', visible: false },
|
addOrUpdateCD: { title: '', visible: false },
|
||||||
verification: { title: '', visible: false },
|
verification: { title: '', visible: false },
|
||||||
currentData: {},
|
currentData: {},
|
||||||
|
currentOption: [],
|
||||||
signCode: '',
|
signCode: '',
|
||||||
currentUser: zzSessionStorage.getItem('userName'),
|
currentUser: zzSessionStorage.getItem('userName'),
|
||||||
signVisible: false,
|
signVisible: false,
|
||||||
otherInfo: {},
|
otherInfo: {},
|
||||||
spanArr: [],
|
spanArr: [],
|
||||||
pos: 0,
|
pos: 0,
|
||||||
|
tips1: null,
|
||||||
|
clinicalDatas: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (!(this.data.IsVisit || this.data.IsBaseLine)) {
|
if (!(this.data.IsVisit || this.data.IsBaseLine)) {
|
||||||
this.clinicalType = this.$d.GetClinicalType[0].value.toString()
|
// this.clinicalType = this.$d.GetClinicalType[0].value.toString();
|
||||||
|
this.clinicalType = '1'
|
||||||
} else {
|
} else {
|
||||||
this.getList(true)
|
this.getList(true)
|
||||||
}
|
}
|
||||||
|
@ -443,13 +640,78 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 下载模板
|
||||||
|
async downLoadTemplate() {
|
||||||
|
try {
|
||||||
|
let { files, name } = this.formatDownloadFile()
|
||||||
|
let res = await downLoadFile(files, name, 'zip')
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 格式化下载文件路径
|
||||||
|
formatDownloadFile() {
|
||||||
|
let files = [],
|
||||||
|
name = `${this.$route.query.trialId}_${
|
||||||
|
this.data.CriterionName
|
||||||
|
}_template_${new Date().getTime()}.zip`
|
||||||
|
this.clinicalDatas.forEach((item) => {
|
||||||
|
if (item.Path) {
|
||||||
|
let obj = {
|
||||||
|
name: item.FileName,
|
||||||
|
url: this.OSSclientConfig.basePath + item.Path,
|
||||||
|
}
|
||||||
|
files.push(obj)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return { files, name }
|
||||||
|
},
|
||||||
|
getClinicalDatas() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let message = ''
|
||||||
|
let currentData = Object.assign(
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
TrialId: this.data.TrialId,
|
||||||
|
ReadingId: this.data.Id,
|
||||||
|
IsVisit: this.data.IsVisit,
|
||||||
|
SubjectId: this.data.SubjectId,
|
||||||
|
IsBaseLine: this.data.IsBaseLine,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
var param = {
|
||||||
|
trialId: currentData.TrialId,
|
||||||
|
IsVisit: currentData.IsVisit,
|
||||||
|
ReadingId: currentData.ReadingId,
|
||||||
|
SubjectId: currentData.SubjectId,
|
||||||
|
ReadingClinicalDataId: currentData.Id ? currentData.Id : '',
|
||||||
|
IsBaseLine: currentData.IsBaseLine,
|
||||||
|
TrialReadingCriterionId: this.trialReadingCriterionId,
|
||||||
|
}
|
||||||
|
getTrialClinicalDataSelect(param)
|
||||||
|
.then((res) => {
|
||||||
|
this.clinicalDatas = res.Result
|
||||||
|
res.Result.forEach((item, index) => {
|
||||||
|
if (index < 1) {
|
||||||
|
message += item.ClinicalDataSetName
|
||||||
|
} else {
|
||||||
|
message = message + '、' + item.ClinicalDataSetName
|
||||||
|
}
|
||||||
|
})
|
||||||
|
resolve(message)
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
reject()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||||||
if (columnIndex === 6 && row.IsNeedMerge) {
|
if (columnIndex === 6 && row.IsNeedMerge) {
|
||||||
const _row = this.spanArr[rowIndex]
|
const _row = this.spanArr[rowIndex]
|
||||||
const _col = _row > 0 ? 1 : 0
|
const _col = _row > 0 ? 1 : 0
|
||||||
return {
|
return {
|
||||||
rowspan: _row,
|
rowspan: _row,
|
||||||
colspan: _col
|
colspan: _col,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -471,6 +733,23 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getList(is) {
|
getList(is) {
|
||||||
|
this.loading = true
|
||||||
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
let data = {
|
||||||
|
SubjectId: this.data.SubjectId,
|
||||||
|
VisitTaskId: this.data.Id,
|
||||||
|
TrialId: this.$route.query.trialId,
|
||||||
|
}
|
||||||
|
return getConsistencyAnalysisReadingClinicalDataList(data)
|
||||||
|
.then((res) => {
|
||||||
|
this.list = res.Result
|
||||||
|
this.otherInfo = res.OtherInfo
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
this.searchData.ReadingId = this.data.Id
|
this.searchData.ReadingId = this.data.Id
|
||||||
this.searchData.SubjectId = this.data.SubjectId
|
this.searchData.SubjectId = this.data.SubjectId
|
||||||
this.searchData.IsVisit = this.data.IsVisit
|
this.searchData.IsVisit = this.data.IsVisit
|
||||||
|
@ -480,17 +759,45 @@ export default {
|
||||||
if (!is) {
|
if (!is) {
|
||||||
this.searchData.GetClinicalType = this.clinicalType
|
this.searchData.GetClinicalType = this.clinicalType
|
||||||
}
|
}
|
||||||
this.loading = true
|
getReadingClinicalDataList(this.searchData)
|
||||||
getReadingClinicalDataList(this.searchData).then(res => {
|
.then(async (res) => {
|
||||||
this.list = res.Result
|
this.list = res.Result
|
||||||
|
let message = ''
|
||||||
|
this.list.forEach((item, index) => {
|
||||||
|
if (index < 1) {
|
||||||
|
message += item.ClinicalDataSetName
|
||||||
|
} else {
|
||||||
|
message = message + '、' + item.ClinicalDataSetName
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (message === '' || !message) {
|
||||||
|
message = await this.getClinicalDatas()
|
||||||
|
}
|
||||||
|
this.tips1 = this.$t('trials:readingPeriod:cd:title:tips1').replace(
|
||||||
|
'临床数据名称',
|
||||||
|
message
|
||||||
|
)
|
||||||
|
this.tips1 = this.tips1.replace('xxx', message)
|
||||||
this.pos = 0
|
this.pos = 0
|
||||||
this.getSpanArr(this.list)
|
this.getSpanArr(this.list)
|
||||||
this.otherInfo = res.OtherInfo
|
this.otherInfo = res.OtherInfo
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}).catch(() => { this.loading = false })
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.currentData = Object.assign({}, { TrialId: this.data.TrialId, ReadingId: this.data.Id, IsVisit: this.data.IsVisit, SubjectId: this.data.SubjectId, IsBaseLine: this.data.IsBaseLine })
|
this.currentData = Object.assign(
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
TrialId: this.data.TrialId,
|
||||||
|
ReadingId: this.data.Id,
|
||||||
|
IsVisit: this.data.IsVisit,
|
||||||
|
SubjectId: this.data.SubjectId,
|
||||||
|
IsBaseLine: this.data.IsBaseLine,
|
||||||
|
}
|
||||||
|
)
|
||||||
this.addOrUpdateCD.title = this.$t('common:button:new')
|
this.addOrUpdateCD.title = this.$t('common:button:new')
|
||||||
this.addOrUpdateCD.visible = true
|
this.addOrUpdateCD.visible = true
|
||||||
},
|
},
|
||||||
|
@ -498,54 +805,117 @@ export default {
|
||||||
this.currentData = { ...row }
|
this.currentData = { ...row }
|
||||||
this.currentData.TrialId = this.data.TrialId
|
this.currentData.TrialId = this.data.TrialId
|
||||||
this.currentData.SubjectId = this.data.SubjectId
|
this.currentData.SubjectId = this.data.SubjectId
|
||||||
|
if (this.type === 'readingPeriod') {
|
||||||
this.currentData.ReadingId = this.data.Id
|
this.currentData.ReadingId = this.data.Id
|
||||||
|
}
|
||||||
this.currentData.IsVisit = this.data.IsVisit
|
this.currentData.IsVisit = this.data.IsVisit
|
||||||
this.currentData.IsBaseLine = this.data.IsBaseLine
|
this.currentData.IsBaseLine = this.data.IsBaseLine
|
||||||
this.addOrUpdateCD.title = this.$t('common:button:edit')
|
this.addOrUpdateCD.title = this.$t('common:button:edit')
|
||||||
|
this.currentOption = [
|
||||||
|
{
|
||||||
|
ClinicalDataSetName:
|
||||||
|
this.$i18n.locale === 'zh'
|
||||||
|
? row.ClinicalDataSetName
|
||||||
|
: row.ClinicalDataSetEnName,
|
||||||
|
Id: row.ClinicalDataTrialSetId,
|
||||||
|
},
|
||||||
|
]
|
||||||
this.addOrUpdateCD.visible = true
|
this.addOrUpdateCD.visible = true
|
||||||
},
|
},
|
||||||
handleVerification(row, type) {
|
handleVerification(row, type) {
|
||||||
if (type === 'unconfirm') {
|
if (type === 'unconfirm') {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
const routeData = this.$router.resolve({
|
let routeData = this.$router.resolve({
|
||||||
path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${row.ClinicalDataTrialSetId}&subjectId=${this.data.SubjectId}&trialId=${this.data.TrialId}&readingId=${this.data.Id}&readingClinicalDataId=${row.readingClinicalDataId || ''}&readModuleId=${row.ReadModuleId}&getClinicalType=${this.clinicalType}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`
|
path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&readingId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
row.readingClinicalDataId || ''
|
||||||
|
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
|
||||||
|
this.clinicalType
|
||||||
|
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
|
||||||
})
|
})
|
||||||
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
routeData = this.$router.resolve({
|
||||||
|
path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
row.readingClinicalDataId || ''
|
||||||
|
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
|
||||||
|
this.clinicalType
|
||||||
|
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
window.open(routeData.href, '_blank')
|
window.open(routeData.href, '_blank')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (row.IsNeedMerge) {
|
if (row.IsNeedMerge) {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
const routeData = this.$router.resolve({
|
let routeData = this.$router.resolve({
|
||||||
path: `/clinicalData?ClinicalDataTrialSetId=${row.ClinicalDataTrialSetId}&subjectId=${this.data.SubjectId}&trialId=${this.data.TrialId}&readingId=${this.data.Id}&readingClinicalDataId=${row.readingClinicalDataId || ''}&readModuleId=${row.ReadModuleId}&getClinicalType=${this.clinicalType}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`
|
path: `/clinicalData?ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&readingId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
row.readingClinicalDataId || ''
|
||||||
|
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
|
||||||
|
this.clinicalType
|
||||||
|
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
|
||||||
})
|
})
|
||||||
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
routeData = this.$router.resolve({
|
||||||
|
path: `/clinicalData?ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
row.readingClinicalDataId || ''
|
||||||
|
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
|
||||||
|
this.clinicalType
|
||||||
|
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
window.open(routeData.href, '_blank')
|
window.open(routeData.href, '_blank')
|
||||||
} else {
|
} else {
|
||||||
this.currentData = { ...row }
|
this.currentData = { ...row }
|
||||||
this.currentData.TrialId = this.data.TrialId
|
this.currentData.TrialId = this.data.TrialId
|
||||||
this.currentData.SubjectId = this.data.SubjectId
|
this.currentData.SubjectId = this.data.SubjectId
|
||||||
|
if (this.type === 'readingPeriod') {
|
||||||
this.currentData.ReadingId = this.data.Id
|
this.currentData.ReadingId = this.data.Id
|
||||||
|
}
|
||||||
this.currentData.IsVisit = this.data.IsVisit
|
this.currentData.IsVisit = this.data.IsVisit
|
||||||
this.currentData.IsBaseLine = this.data.IsBaseLine
|
this.currentData.IsBaseLine = this.data.IsBaseLine
|
||||||
this.verification.title = this.$t('trials:readingPeriod:cd:title:cdCheck') // '核查'
|
this.verification.title = this.$t(
|
||||||
|
'trials:readingPeriod:cd:title:cdCheck'
|
||||||
|
) // '核查'
|
||||||
this.verification.visible = true
|
this.verification.visible = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
this.$confirm(this.$t('trials:readingPeriod:cd:message:delete'), {
|
this.$confirm(this.$t('trials:readingPeriod:cd:message:delete'), {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true
|
distinguishCancelAndClose: true,
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
deleteReadingClinicalData(row.Id)
|
deleteReadingClinicalData(row.Id)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
this.$message.success(
|
||||||
|
this.$t('common:message:deletedSuccessfully')
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}).catch(() => { this.loading = false })
|
})
|
||||||
}).catch(() => {})
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
},
|
},
|
||||||
handleSign(from) {
|
handleSign(from) {
|
||||||
// this.currentData = { ...row }
|
// this.currentData = { ...row }
|
||||||
|
@ -557,16 +927,26 @@ export default {
|
||||||
},
|
},
|
||||||
signConfirm(signInfo) {
|
signConfirm(signInfo) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
const params = {
|
let params = {
|
||||||
data: {
|
data: {
|
||||||
readingClinicalDataId: this.currentData.Id,
|
readingClinicalDataId: this.currentData.Id,
|
||||||
IsBlind: this.currentData.IsBlind,
|
IsBlind: this.currentData.IsBlind,
|
||||||
IsComplete: this.currentData.IsComplete,
|
IsComplete: this.currentData.IsComplete,
|
||||||
TrialReadingCriterionId: this.trialReadingCriterionId
|
TrialReadingCriterionId: this.trialReadingCriterionId,
|
||||||
},
|
},
|
||||||
signInfo: signInfo
|
signInfo: signInfo,
|
||||||
}
|
}
|
||||||
ReadClinicalDataSign(params).then(res => {
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
params = {
|
||||||
|
data: {
|
||||||
|
consistentClinicalDataId: this.currentData.Id,
|
||||||
|
IsBlind: this.currentData.IsBlind,
|
||||||
|
IsComplete: this.currentData.IsComplete,
|
||||||
|
},
|
||||||
|
signInfo: signInfo,
|
||||||
|
}
|
||||||
|
signConsistencyAnalysisReadingClinicalData(params)
|
||||||
|
.then((res) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
|
@ -575,12 +955,38 @@ export default {
|
||||||
this.signVisible = false
|
this.signVisible = false
|
||||||
|
|
||||||
this.getList()
|
this.getList()
|
||||||
this.$nextTick(() => { this.verification.visible = false })
|
this.$emit('getList')
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.verification.visible = false
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}).catch(_ => {
|
})
|
||||||
|
.catch((_) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.$refs['signForm'].btnLoading = false
|
this.$refs['signForm'].btnLoading = false
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
ReadClinicalDataSign(params)
|
||||||
|
.then((res) => {
|
||||||
|
this.loading = false
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
|
this.$refs['signForm'].btnLoading = false
|
||||||
|
|
||||||
|
this.signVisible = false
|
||||||
|
|
||||||
|
this.getList()
|
||||||
|
this.$emit('getList')
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.verification.visible = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((_) => {
|
||||||
|
this.loading = false
|
||||||
|
this.$refs['signForm'].btnLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 关闭签名框并设置确认状态
|
// 关闭签名框并设置确认状态
|
||||||
closeSignDialog(isSign, signInfo) {
|
closeSignDialog(isSign, signInfo) {
|
||||||
|
@ -594,27 +1000,81 @@ export default {
|
||||||
handlePreview(readingClinicalDataId, row) {
|
handlePreview(readingClinicalDataId, row) {
|
||||||
if (row && row.IsNeedMerge) {
|
if (row && row.IsNeedMerge) {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
const routeData = this.$router.resolve({
|
let routeData = this.$router.resolve({
|
||||||
path: `/clinicalData?ClinicalDataTrialSetId=${row.ClinicalDataTrialSetId}&subjectId=${this.data.SubjectId}&trialId=${this.data.TrialId}&readingId=${this.data.Id}&readingClinicalDataId=${row.readingClinicalDataId || ''}&getClinicalType=${this.clinicalType}&readModuleId=${row.ReadModuleId}&IsOnlyGetCRCReadModule=1&TokenKey=${token}`
|
path: `/clinicalData?ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&readingId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
row.readingClinicalDataId || ''
|
||||||
|
}&getClinicalType=${this.clinicalType}&readModuleId=${
|
||||||
|
row.ReadModuleId
|
||||||
|
}&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
|
||||||
})
|
})
|
||||||
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
routeData = this.$router.resolve({
|
||||||
|
path: `/clinicalData?ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
row.readingClinicalDataId || ''
|
||||||
|
}&getClinicalType=${this.clinicalType}&readModuleId=${
|
||||||
|
row.ReadModuleId
|
||||||
|
}&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
window.open(routeData.href, '_blank')
|
window.open(routeData.href, '_blank')
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
var routeData
|
var routeData
|
||||||
if (row) {
|
if (row) {
|
||||||
routeData = this.$router.resolve({
|
routeData = this.$router.resolve({
|
||||||
path: `/clinicalData?ClinicalDataTrialSetId=${row.ClinicalDataTrialSetId}&subjectId=${this.data.SubjectId}&trialId=${this.data.TrialId}&readingId=${this.data.Id}&readingClinicalDataId=${readingClinicalDataId || ''}&getClinicalType=${this.clinicalType}&TokenKey=${token}`
|
path: `/clinicalData?ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&readingId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
readingClinicalDataId || ''
|
||||||
|
}&getClinicalType=${this.clinicalType}&TokenKey=${token}`,
|
||||||
})
|
})
|
||||||
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
routeData = this.$router.resolve({
|
||||||
|
path: `/clinicalData?ClinicalDataTrialSetId=${
|
||||||
|
row.ClinicalDataTrialSetId
|
||||||
|
}&subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
readingClinicalDataId || ''
|
||||||
|
}&getClinicalType=${
|
||||||
|
this.clinicalType
|
||||||
|
}&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
routeData = this.$router.resolve({
|
routeData = this.$router.resolve({
|
||||||
path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${this.data.TrialId}&readingId=${this.data.Id}&readingClinicalDataId=${readingClinicalDataId || ''}&getClinicalType=${this.clinicalType}&TokenKey=${token}`
|
path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&readingId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
readingClinicalDataId || ''
|
||||||
|
}&getClinicalType=${this.clinicalType}&TokenKey=${token}`,
|
||||||
})
|
})
|
||||||
|
if (this.type === 'consistencyAnalysis') {
|
||||||
|
routeData = this.$router.resolve({
|
||||||
|
path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${
|
||||||
|
this.data.TrialId
|
||||||
|
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
|
||||||
|
readingClinicalDataId || ''
|
||||||
|
}&getClinicalType=${
|
||||||
|
this.clinicalType
|
||||||
|
}&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
window.open(routeData.href, '_blank')
|
window.open(routeData.href, '_blank')
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -622,7 +1082,7 @@ export default {
|
||||||
.top {
|
.top {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
>>>.el-divider--horizontal{
|
::v-deep .el-divider--horizontal {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="EditRPStatus" v-loading="loading" :model="form" size="small" label-width="100px">
|
||||||
ref="EditRPStatus"
|
|
||||||
v-loading="loading"
|
|
||||||
:model="form"
|
|
||||||
size="small"
|
|
||||||
label-width="100px"
|
|
||||||
>
|
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<!-- 状态 -->
|
<!-- 状态 -->
|
||||||
<el-form-item :label="$t('trials:rpManage:table:readingStatus')" prop="IsTakeEffect">
|
<el-form-item :label="$t('trials:rpManage:table:readingStatus')" prop="IsTakeEffect">
|
||||||
|
|
||||||
<el-radio-group v-model="form.IsTakeEffect" style="width:100%;">
|
<el-radio-group v-model="form.IsTakeEffect" style="width:100%;">
|
||||||
<el-radio v-for="item of $d.TakeEffect" :key="item.value" :label="item.value" :disabled="item.value===0">{{ item.label }}</el-radio>
|
<el-radio v-for="item of $d.TakeEffect" :key="item.value" :label="item.value" :disabled="item.value === 0">{{
|
||||||
|
item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
@ -19,12 +14,7 @@
|
||||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button :disabled="btnLoading" size="small" type="primary" @click="close">
|
||||||
:disabled="btnLoading"
|
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="close"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 保存 -->
|
<!-- 保存 -->
|
||||||
|
|
|
@ -1,85 +1,44 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="preview-clinical-data">
|
<div class="preview-clinical-data">
|
||||||
<el-table
|
<el-table v-if="data.ClinicalUploadType === 1" v-loading="loading" :data="data.FileList" stripe style="width: 100%"
|
||||||
v-if="data.ClinicalUploadType === 1"
|
height="500">
|
||||||
v-loading="loading"
|
|
||||||
:data="data.FileList"
|
|
||||||
stripe
|
|
||||||
style="width: 100%"
|
|
||||||
height="500"
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<!-- 文件名称 -->
|
<!-- 文件名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="FileName" :label="$t('trials:readingPeriod:cd:table:fileName')" />
|
||||||
prop="FileName"
|
|
||||||
:label="$t('trials:readingPeriod:cd:table:fileName')"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column :label="$t('common:action:action')">
|
||||||
:label="$t('common:action:action')"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 预览 -->
|
<!-- 预览 -->
|
||||||
<el-button
|
<el-button circle :title="$t('trials:readingPeriod:cd:action:viewFile')" icon="el-icon-view"
|
||||||
circle
|
@click="handlePreview(scope.row)" />
|
||||||
:title="$t('trials:readingPeriod:cd:action:viewFile')"
|
|
||||||
icon="el-icon-view"
|
|
||||||
@click="handlePreview(scope.row)"
|
|
||||||
/>
|
|
||||||
<!-- 删除 -->
|
<!-- 删除 -->
|
||||||
<el-button
|
<el-button v-if="(!data.IsSign && !data.IsCRCUpload)" circle
|
||||||
v-if="(!data.IsSign && !data.IsCRCUpload)"
|
:title="$t('trials:readingPeriod:cd:action:deleteFile')" icon="el-icon-delete"
|
||||||
circle
|
@click="handleDelete(scope.$index, scope.row)" />
|
||||||
:title="$t('trials:readingPeriod:cd:action:deleteFile')"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="handleDelete(scope.$index,scope.row)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<!-- 既往放疗史 -->
|
<!-- 既往放疗史 -->
|
||||||
<h4>{{ $t('trials:uploadClinicalData:title:pastTreatment') }}</h4>
|
<h4>{{ $t('trials:uploadClinicalData:title:pastTreatment') }}</h4>
|
||||||
<el-table
|
<el-table :data="data.ClinicalTableData.PreviousHistoryList" style="width: 100%">
|
||||||
:data="data.ClinicalTableData.PreviousHistoryList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 放疗部位 -->
|
<!-- 放疗部位 -->
|
||||||
<el-table-column
|
<el-table-column prop="Position" :label="$t('trials:uploadClinicalData:table:bodyPart')" width="180" />
|
||||||
prop="Position"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:bodyPart')"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<!-- 开始日期 -->
|
<!-- 开始日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="StartTime" :label="$t('trials:uploadClinicalData:table:beginDate')" width="180">
|
||||||
prop="StartTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:beginDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.StartTime ? moment(scope.row.StartTime).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.StartTime ? moment(scope.row.StartTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 结束日期 -->
|
<!-- 结束日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="EndTime" :label="$t('trials:uploadClinicalData:table:endDate')" width="180">
|
||||||
prop="EndTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:endDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.EndTime ? moment(scope.row.EndTime).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.EndTime ? moment(scope.row.EndTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 病灶是否PD -->
|
<!-- 病灶是否PD -->
|
||||||
<el-table-column
|
<el-table-column prop="IsPD" :label="$t('trials:uploadClinicalData:table:isPD')" width="180">
|
||||||
prop="IsPD"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:isPD')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('IsPdEnum', scope.row.IsPD) }}
|
{{ $fd('IsPdEnum', scope.row.IsPD) }}
|
||||||
</template>
|
</template>
|
||||||
|
@ -87,26 +46,12 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 既往手术史 -->
|
<!-- 既往手术史 -->
|
||||||
<h4>{{ $t('trials:uploadClinicalData:title:pastSurgery') }}</h4>
|
<h4>{{ $t('trials:uploadClinicalData:title:pastSurgery') }}</h4>
|
||||||
<el-table
|
<el-table :data="data.ClinicalTableData.PreviousSurgeryList" style="width: 100%">
|
||||||
:data="data.ClinicalTableData.PreviousSurgeryList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 手术名称 -->
|
<!-- 手术名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="OperationName" :label="$t('trials:uploadClinicalData:table:surgeryName')" width="180" />
|
||||||
prop="OperationName"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:surgeryName')"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<!-- 手术日期 -->
|
<!-- 手术日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="OperationTime" :label="$t('trials:uploadClinicalData:table:surgeryDate')" width="180">
|
||||||
prop="OperationTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:surgeryDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.OperationTime ? moment(scope.row.OperationTime).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.OperationTime ? moment(scope.row.OperationTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
|
@ -114,36 +59,19 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 既往其他治疗史 -->
|
<!-- 既往其他治疗史 -->
|
||||||
<h4>{{ $t('trials:uploadClinicalData:title:others') }}</h4>
|
<h4>{{ $t('trials:uploadClinicalData:title:others') }}</h4>
|
||||||
<el-table
|
<el-table :data="data.ClinicalTableData.PreviousOtherList" style="width: 100%">
|
||||||
:data="data.ClinicalTableData.PreviousOtherList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 治疗类型 -->
|
<!-- 治疗类型 -->
|
||||||
<el-table-column
|
<el-table-column prop="TreatmentType" :label="$t('trials:uploadClinicalData:table:treatmentType')"
|
||||||
prop="TreatmentType"
|
width="180" />
|
||||||
:label="$t('trials:uploadClinicalData:table:treatmentType')"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<!-- 开始日期 -->
|
<!-- 开始日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="StartTime" :label="$t('trials:uploadClinicalData:table:treatmentbeginDate')" width="180">
|
||||||
prop="StartTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:treatmentbeginDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.StartTime ? moment(scope.row.StartTime).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.StartTime ? moment(scope.row.StartTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 结束日期 -->
|
<!-- 结束日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="EndTime" :label="$t('trials:uploadClinicalData:table:treatmentendDate')" width="180">
|
||||||
prop="EndTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:treatmentendDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.EndTime ? moment(scope.row.EndTime).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.EndTime ? moment(scope.row.EndTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -4,11 +4,7 @@
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<!-- 阅片期名称 -->
|
<!-- 阅片期名称 -->
|
||||||
<el-form-item :label="$t('trials:rpManage:table:readingName')">
|
<el-form-item :label="$t('trials:rpManage:table:readingName')">
|
||||||
<el-input
|
<el-input v-model="searchData.ReadingPeriodName" style="width:100px;" clearable />
|
||||||
v-model="searchData.ReadingPeriodName"
|
|
||||||
style="width:100px;"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<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">
|
||||||
|
@ -22,23 +18,11 @@
|
||||||
{{ $t('common:button:export') }}
|
{{ $t('common:button:export') }}
|
||||||
</el-button> -->
|
</el-button> -->
|
||||||
<!-- 添加影像学阅片 -->
|
<!-- 添加影像学阅片 -->
|
||||||
<el-button
|
<el-button v-if="isGlobalReading" type="primary" icon="el-icon-plus" size="small" @click="handleAdd(0)">
|
||||||
v-if="isGlobalReading"
|
|
||||||
type="primary"
|
|
||||||
icon="el-icon-plus"
|
|
||||||
size="small"
|
|
||||||
@click="handleAdd(0)"
|
|
||||||
>
|
|
||||||
{{ $t('trials:rpManage:button:addImageReading') }}
|
{{ $t('trials:rpManage:button:addImageReading') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 添加肿瘤学阅片 -->
|
<!-- 添加肿瘤学阅片 -->
|
||||||
<el-button
|
<el-button v-if="isClinicalReading" type="primary" icon="el-icon-plus" size="small" @click="handleAdd(1)">
|
||||||
v-if="isClinicalReading"
|
|
||||||
type="primary"
|
|
||||||
icon="el-icon-plus"
|
|
||||||
size="small"
|
|
||||||
@click="handleAdd(1)"
|
|
||||||
>
|
|
||||||
{{ $t('trials:rpManage:button:addOncologyReading') }}
|
{{ $t('trials:rpManage:button:addOncologyReading') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -46,77 +30,44 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="main-wrapper">
|
<div class="main-wrapper">
|
||||||
<el-table
|
<el-table v-loading="loading" :data="list" stripe style="width: 100%" height="500"
|
||||||
v-loading="loading"
|
@sort-change="handleSortChange">
|
||||||
:data="list"
|
|
||||||
stripe
|
|
||||||
style="width: 100%"
|
|
||||||
height="500"
|
|
||||||
@sort-change="handleSortChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<!-- 阅片期类型 -->
|
<!-- 阅片期类型 -->
|
||||||
<el-table-column
|
<el-table-column prop="ReadingSetType" :label="$t('trials:rpManage:table:readingType')" sortable="custom"
|
||||||
prop="ReadingSetType"
|
show-overflow-tooltip>
|
||||||
:label="$t('trials:rpManage:table:readingType')"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('ReadingSetType', scope.row.ReadingSetType) }}
|
{{ $fd('ReadingSetType', scope.row.ReadingSetType) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 阅片期名称 -->
|
<!-- 阅片期名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="ReadingPeriodName" :label="$t('trials:rpManage:table:readingName')" sortable="custom"
|
||||||
prop="ReadingPeriodName"
|
show-overflow-tooltip />
|
||||||
:label="$t('trials:rpManage:table:readingName')"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<!-- 受试者范围 -->
|
<!-- 受试者范围 -->
|
||||||
<el-table-column
|
<el-table-column prop="ReadingScope" :label="$t('trials:rpManage:table:subjectRange')" sortable="custom"
|
||||||
prop="ReadingScope"
|
show-overflow-tooltip>
|
||||||
:label="$t('trials:rpManage:table:subjectRange')"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('ReadingScopeEnum', scope.row.ReadingScope) }}
|
{{ $fd('ReadingScopeEnum', scope.row.ReadingScope) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 指定中心 -->
|
<!-- 指定中心 -->
|
||||||
<el-table-column
|
<el-table-column prop="SiteCodes" :label="$t('trials:rpManage:table:designatedSite')" show-overflow-tooltip>
|
||||||
prop="SiteCodes"
|
|
||||||
:label="$t('trials:rpManage:table:designatedSite')"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.SiteCodes.length > 0 ? scope.row.SiteCodes.join(', ') : '' }}
|
{{ scope.row.SiteCodes.length > 0 ? scope.row.SiteCodes.join(', ') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 截止日期 -->
|
<!-- 截止日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="ExpirationDate" :label="$t('trials:rpManage:table:expirationDate')" sortable="custom"
|
||||||
prop="ExpirationDate"
|
show-overflow-tooltip>
|
||||||
:label="$t('trials:rpManage:table:expirationDate')"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.ExpirationDate ? moment(scope.row.ExpirationDate).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.ExpirationDate ? moment(scope.row.ExpirationDate).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 截止访视 -->
|
<!-- 截止访视 -->
|
||||||
<el-table-column
|
<el-table-column prop="SubjectVisitName" :label="$t('trials:rpManage:table:expirationVisit')" />
|
||||||
prop="SubjectVisitName"
|
|
||||||
:label="$t('trials:rpManage:table:expirationVisit')"
|
|
||||||
/>
|
|
||||||
<!-- 关联阅片期 -->
|
<!-- 关联阅片期 -->
|
||||||
<el-table-column
|
<el-table-column prop="PlanCount" :label="$t('trials:rpManage:table:linkedVisits')" sortable="custom"
|
||||||
prop="PlanCount"
|
show-overflow-tooltip>
|
||||||
:label="$t('trials:rpManage:table:linkedVisits')"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="text" :disabled="scope.row.PlanCount === 0" @click="handleRelationPR(scope.row)">
|
<el-button type="text" :disabled="scope.row.PlanCount === 0" @click="handleRelationPR(scope.row)">
|
||||||
{{ scope.row.PlanCount }}
|
{{ scope.row.PlanCount }}
|
||||||
|
@ -124,12 +75,8 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 状态 -->
|
<!-- 状态 -->
|
||||||
<el-table-column
|
<el-table-column prop="IsTakeEffect" :label="$t('trials:rpManage:table:readingStatus')" sortable="custom"
|
||||||
prop="IsTakeEffect"
|
show-overflow-tooltip>
|
||||||
:label="$t('trials:rpManage:table:readingStatus')"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag v-if="scope.row.IsTakeEffect === 0" type="info">
|
<el-tag v-if="scope.row.IsTakeEffect === 0" type="info">
|
||||||
{{ $fd('TakeEffect', scope.row.IsTakeEffect) }}
|
{{ $fd('TakeEffect', scope.row.IsTakeEffect) }}
|
||||||
|
@ -143,87 +90,48 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 生效时间 -->
|
<!-- 生效时间 -->
|
||||||
<el-table-column
|
<el-table-column prop="EffectOfTime" :label="$t('trials:rpManage:table:effectiveTime')" sortable="custom"
|
||||||
prop="EffectOfTime"
|
show-overflow-tooltip width="120" />
|
||||||
:label="$t('trials:rpManage:table:effectiveTime')"
|
<el-table-column :label="$t('common:action:action')" width="200">
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="120"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
:label="$t('common:action:action')"
|
|
||||||
width="200"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 编辑 -->
|
<!-- 编辑 -->
|
||||||
<el-button
|
<el-button circle :title="$t('trials:rpManage:action:edit')" icon="el-icon-edit-outline"
|
||||||
circle
|
:disabled="scope.row.IsTakeEffect === 1 || scope.row.IsGlobal" @click="handleEdit(scope.row)" />
|
||||||
:title="$t('trials:rpManage:action:edit')"
|
|
||||||
icon="el-icon-edit-outline"
|
|
||||||
:disabled="scope.row.IsTakeEffect === 1 || scope.row.IsGlobal"
|
|
||||||
@click="handleEdit(scope.row)"
|
|
||||||
/>
|
|
||||||
<!-- 修改状态 -->
|
<!-- 修改状态 -->
|
||||||
<el-button
|
<el-button circle :title="$t('trials:rpManage:action:status')" icon="el-icon-edit"
|
||||||
circle
|
:disabled="scope.row.IsGlobal" @click="handleEditStatus(scope.row)" />
|
||||||
:title="$t('trials:rpManage:action:status')"
|
|
||||||
icon="el-icon-edit"
|
|
||||||
:disabled="scope.row.IsGlobal"
|
|
||||||
@click="handleEditStatus(scope.row)"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 删除 -->
|
<!-- 删除 -->
|
||||||
<el-button
|
<el-button circle :title="$t('trials:rpManage:action:delete')" icon="el-icon-delete"
|
||||||
circle
|
:disabled="scope.row.IsTakeEffect === 1 || scope.row.IsGlobal" @click="handleDelete(scope.row)" />
|
||||||
:title="$t('trials:rpManage:action:delete')"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
:disabled="scope.row.IsTakeEffect === 1 || scope.row.IsGlobal"
|
|
||||||
@click="handleDelete(scope.row)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页组件 -->
|
<!-- 分页组件 -->
|
||||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||||
|
@pagination="getList" />
|
||||||
</div>
|
</div>
|
||||||
<!-- 新增/编辑 -->
|
<!-- 新增/编辑 -->
|
||||||
<el-dialog
|
<el-dialog v-if="addOrEditPR.visible" :visible.sync="addOrEditPR.visible" :close-on-click-modal="false"
|
||||||
v-if="addOrEditPR.visible"
|
:before-close="beforePRClose" :title="addOrEditPR.title" width="80%" append-to-body
|
||||||
:visible.sync="addOrEditPR.visible"
|
custom-class="base-dialog-wrapper">
|
||||||
:close-on-click-modal="false"
|
<AddOrEditPR ref="addOrEditPR" :trial-reading-criterion-id="trialReadingCriterionId" :data="currentRow"
|
||||||
:before-close="beforePRClose"
|
@close="addOrEditPR.visible = false" @getList="getList" />
|
||||||
:title="addOrEditPR.title"
|
|
||||||
width="80%"
|
|
||||||
append-to-body
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
>
|
|
||||||
<AddOrEditPR ref="addOrEditPR" :trial-reading-criterion-id="trialReadingCriterionId" :data="currentRow" @close="addOrEditPR.visible = false" @getList="getList" />
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 状态变更 -->
|
<!-- 状态变更 -->
|
||||||
<el-dialog
|
<el-dialog v-if="editStatus.visible" :visible.sync="editStatus.visible" :close-on-click-modal="false"
|
||||||
v-if="editStatus.visible"
|
:title="editStatus.title" width="500px" append-to-body custom-class="base-dialog-wrapper">
|
||||||
:visible.sync="editStatus.visible"
|
<EditPRStatus :trial-reading-criterion-id="trialReadingCriterionId" :data="currentRow"
|
||||||
:close-on-click-modal="false"
|
@close="editStatus.visible = false" @getList="refresh" />
|
||||||
:title="editStatus.title"
|
|
||||||
width="500px"
|
|
||||||
append-to-body
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
>
|
|
||||||
<EditPRStatus :trial-reading-criterion-id="trialReadingCriterionId" :data="currentRow" @close="editStatus.visible = false" @getList="refresh" />
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 关联阅片期 -->
|
<!-- 关联阅片期 -->
|
||||||
<el-dialog
|
<el-dialog v-if="relationPR.visible" :visible.sync="relationPR.visible" :close-on-click-modal="false"
|
||||||
v-if="relationPR.visible"
|
:title="$t('trials:rpManage:dialogTitle:linkedRP')" width="1000px" append-to-body
|
||||||
:visible.sync="relationPR.visible"
|
custom-class="base-dialog-wrapper">
|
||||||
:close-on-click-modal="false"
|
<RelationPRList :trial-reading-criterion-id="trialReadingCriterionId" :data="currentRow"
|
||||||
:title="$t('trials:rpManage:dialogTitle:linkedRP')"
|
@close="relationPR.visible = false" @getList="getList" />
|
||||||
width="1000px"
|
|
||||||
append-to-body
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
>
|
|
||||||
<RelationPRList :trial-reading-criterion-id="trialReadingCriterionId" :data="currentRow" @close="relationPR.visible = false" @getList="getList" />
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -370,6 +278,4 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
|
@ -1,59 +1,34 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-table
|
<el-table v-loading="loading" :data="list" stripe height="455">
|
||||||
v-loading="loading"
|
|
||||||
:data="list"
|
|
||||||
stripe
|
|
||||||
height="455"
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<!-- 中心编号 -->
|
<!-- 中心编号 -->
|
||||||
<el-table-column
|
<el-table-column prop="TrialSiteCode" :label="$t('trials:linkedRP:table:siteCode')" />
|
||||||
prop="TrialSiteCode"
|
|
||||||
:label="$t('trials:linkedRP:table:siteCode')"
|
|
||||||
/>
|
|
||||||
<!-- 受试者编号 -->
|
<!-- 受试者编号 -->
|
||||||
<el-table-column
|
<el-table-column prop="SubjectCode" :label="$t('trials:linkedRP:table:subjectCode')" />
|
||||||
prop="SubjectCode"
|
|
||||||
:label="$t('trials:linkedRP:table:subjectCode')"
|
|
||||||
/>
|
|
||||||
<!-- 截止访视 -->
|
<!-- 截止访视 -->
|
||||||
<el-table-column
|
<el-table-column prop="SubjectVisitName" :label="$t('trials:linkedRP:table:expirationVisit')" />
|
||||||
prop="SubjectVisitName"
|
|
||||||
:label="$t('trials:linkedRP:table:expirationVisit')"
|
|
||||||
/>
|
|
||||||
<!-- 最晚拍片日期 -->
|
<!-- 最晚拍片日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="LatestScanDate" :label="$t('trials:linkedRP:table:latestScanDate')">
|
||||||
prop="LatestScanDate"
|
|
||||||
:label="$t('trials:linkedRP:table:latestScanDate')"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.LatestScanDate ? moment(scope.row.LatestScanDate).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.LatestScanDate ? moment(scope.row.LatestScanDate).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 截止日期 -->
|
<!-- 截止日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="ExpirationDate" :label="$t('trials:linkedRP:table:expirationDate')">
|
||||||
prop="ExpirationDate"
|
|
||||||
:label="$t('trials:linkedRP:table:expirationDate')"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.ExpirationDate ? moment(scope.row.ExpirationDate).format('YYYY-MM-DD') : '' }}
|
{{ scope.row.ExpirationDate ? moment(scope.row.ExpirationDate).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 阅片期名称 -->
|
<!-- 阅片期名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="ReadingPeriodName" :label="$t('trials:linkedRP:table:readingName')" />
|
||||||
prop="ReadingPeriodName"
|
|
||||||
:label="$t('trials:linkedRP:table:readingName')"
|
|
||||||
/>
|
|
||||||
<!-- 生效时间 -->
|
<!-- 生效时间 -->
|
||||||
<el-table-column
|
<el-table-column prop="EffectOfTime" :label="$t('trials:linkedRP:table:effectiveTime')" />
|
||||||
prop="EffectOfTime"
|
|
||||||
:label="$t('trials:linkedRP:table:effectiveTime')"
|
|
||||||
/>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页组件 -->
|
<!-- 分页组件 -->
|
||||||
<div style="text-align:right;">
|
<div style="text-align:right;">
|
||||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||||
|
@pagination="getList" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,43 +1,19 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="verificationForm" v-loading="loading" :model="form" size="small" :rules="rules" label-width="150px"
|
||||||
ref="verificationForm"
|
:inline="true">
|
||||||
v-loading="loading"
|
|
||||||
:model="form"
|
|
||||||
size="small"
|
|
||||||
:rules="rules"
|
|
||||||
label-width="150px"
|
|
||||||
:inline="true"
|
|
||||||
>
|
|
||||||
<!-- 文件列表 -->
|
<!-- 文件列表 -->
|
||||||
<el-divider content-position="left">{{ $t('trials:readingPeriod:verify:title:fileList') }}</el-divider>
|
<el-divider content-position="left">{{ $t('trials:readingPeriod:verify:title:fileList') }}</el-divider>
|
||||||
<div style="text-align: right">
|
<div style="text-align: right">
|
||||||
<!-- 预览 -->
|
<!-- 预览 -->
|
||||||
<el-button
|
<el-button type="primary" style="margin-bottom: 10px" icon="el-icon-view" size="mini" @click="handlePreview">
|
||||||
type="primary"
|
|
||||||
style="margin-bottom: 10px"
|
|
||||||
icon="el-icon-view"
|
|
||||||
size="mini"
|
|
||||||
@click="handlePreview"
|
|
||||||
>
|
|
||||||
{{ $t('trials:readingPeriod:verify:title:preview') }}
|
{{ $t('trials:readingPeriod:verify:title:preview') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-table
|
<el-table ref="filesTable" :data="fileList" class="dicomFiles-table" height="200" style="width:100%" border>
|
||||||
ref="filesTable"
|
|
||||||
:data="fileList"
|
|
||||||
class="dicomFiles-table"
|
|
||||||
height="200"
|
|
||||||
style="width:100%"
|
|
||||||
border
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<el-table-column
|
<el-table-column prop="FileName" :label="$t('trials:uploadClinicalData:table:fileName')" min-width="190"
|
||||||
prop="FileName"
|
show-overflow-tooltip />
|
||||||
:label="$t('trials:uploadClinicalData:table:fileName')"
|
|
||||||
min-width="190"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 核查结果 -->
|
<!-- 核查结果 -->
|
||||||
<el-divider content-position="left">{{ $t('trials:readingPeriod:verify:title:result') }}</el-divider>
|
<el-divider content-position="left">{{ $t('trials:readingPeriod:verify:title:result') }}</el-divider>
|
||||||
|
@ -46,7 +22,7 @@
|
||||||
<el-form-item :label="$t('trials:readingPeriod:verify:title:isComplete')" prop="IsComplete">
|
<el-form-item :label="$t('trials:readingPeriod:verify:title:isComplete')" prop="IsComplete">
|
||||||
<el-radio-group v-model="form.IsComplete">
|
<el-radio-group v-model="form.IsComplete">
|
||||||
<el-radio :label="true">{{ $fd('YesOrNo', true) }}</el-radio>
|
<el-radio :label="true">{{ $fd('YesOrNo', true) }}</el-radio>
|
||||||
<el-radio v-if="data.ClinicalDataLevel !== 3" :label="false">N/A</el-radio>
|
<el-radio v-if="data.ClinicalUploadType === 1" :label="false">N/A</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
@ -55,31 +31,18 @@
|
||||||
<el-form-item :label="$t('trials:readingPeriod:verify:title:isBlind')" prop="IsBlind">
|
<el-form-item :label="$t('trials:readingPeriod:verify:title:isBlind')" prop="IsBlind">
|
||||||
<el-radio-group v-model="form.IsBlind">
|
<el-radio-group v-model="form.IsBlind">
|
||||||
<el-radio :label="true">{{ $fd('YesOrNo', true) }}</el-radio>
|
<el-radio :label="true">{{ $fd('YesOrNo', true) }}</el-radio>
|
||||||
<el-radio v-if="data.ClinicalDataLevel !== 3" :label="false">N/A</el-radio>
|
<el-radio v-if="data.ClinicalUploadType === 1" :label="false">N/A</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||||
class="base-dialog-footer"
|
|
||||||
style="text-align:right;margin-top:10px;"
|
|
||||||
>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button :disabled="btnLoading" size="small" type="primary" @click="close">
|
||||||
:disabled="btnLoading"
|
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="close"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 保存 -->
|
<!-- 保存 -->
|
||||||
<el-button
|
<el-button size="small" type="primary" :loading="btnLoading" @click="save">
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
:loading="btnLoading"
|
|
||||||
@click="save"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:save') }}
|
{{ $t('common:button:save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -129,14 +92,16 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
PMClinicalDataConfirm() {
|
PMClinicalDataConfirm() {
|
||||||
// this.loading = true
|
this.loading = true
|
||||||
// this.btnLoading = true
|
this.btnLoading = true
|
||||||
// PMClinicalDataConfirm(this.form).then(res => {
|
// PMClinicalDataConfirm(this.form).then(res => {
|
||||||
// // this.$message.success('保存成功')
|
// // this.$message.success('保存成功')
|
||||||
// this.loading = false
|
// this.loading = false
|
||||||
// this.btnLoading = false
|
// this.btnLoading = false
|
||||||
this.$emit('getList')
|
this.$emit('getList')
|
||||||
this.$emit('sign', this.form)
|
this.$emit('sign', this.form)
|
||||||
|
this.loading = false
|
||||||
|
this.btnLoading = false
|
||||||
// this.$emit('close')
|
// this.$emit('close')
|
||||||
// }).catch(() => {
|
// }).catch(() => {
|
||||||
// this.loading = false
|
// this.loading = false
|
||||||
|
@ -186,5 +151,4 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -1,58 +1,39 @@
|
||||||
<template>
|
<template>
|
||||||
<BaseContainer>
|
<BaseContainer class="reading-period">
|
||||||
<el-tabs v-model="TrialReadingCriterionId" type="border-card">
|
<el-tabs v-model="TrialReadingCriterionId" type="border-card">
|
||||||
<el-tab-pane v-for="criterion of trialCriterionList" :key="criterion.TrialReadingCriterionId" :label="criterion.TrialReadingCriterionName" :name="criterion.TrialReadingCriterionId">
|
<el-tab-pane v-for="criterion of trialCriterionList" :key="criterion.TrialReadingCriterionId"
|
||||||
|
:label="criterion.TrialReadingCriterionName" :name="criterion.TrialReadingCriterionId">
|
||||||
<div v-if="TrialReadingCriterionId === criterion.TrialReadingCriterionId">
|
<div v-if="TrialReadingCriterionId === criterion.TrialReadingCriterionId">
|
||||||
<div slot="search-container">
|
<div slot="search-container">
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<el-form-item :label="$t('trials:readingPeriod:table:siteCode')">
|
|
||||||
<!-- 中心编号 -->
|
<!-- 中心编号 -->
|
||||||
|
<!-- <el-form-item :label="$t('trials:readingPeriod:table:siteCode')">
|
||||||
<el-select v-model="searchData.TrialSiteCode" clearable filterable style="width:120px;">
|
<el-select v-model="searchData.TrialSiteCode" clearable filterable style="width:120px;">
|
||||||
<el-option
|
<el-option v-for="(site, index) of siteOptions" :key="index" :label="site.TrialSiteCode"
|
||||||
v-for="(site,index) of siteOptions"
|
:value="site.TrialSiteCode" />
|
||||||
:key="index"
|
|
||||||
:label="site.TrialSiteCode"
|
|
||||||
:value="site.TrialSiteCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<!-- 受试者编号 -->
|
<!-- 受试者编号 -->
|
||||||
<el-form-item :label="$t('trials:readingPeriod:table:subjectCode')">
|
<el-form-item :label="$t('trials:readingPeriod:table:subjectCode')">
|
||||||
<el-input
|
<el-input v-model="searchData.SubjectCode" style="width: 100px" clearable />
|
||||||
v-model="searchData.SubjectCode"
|
|
||||||
style="width:100px;"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 阅片类型 -->
|
<!-- 阅片类型 -->
|
||||||
<el-form-item :label="$t('trials:readingPeriod:table:readingType')">
|
<el-form-item :label="$t('trials:readingPeriod:table:readingType')">
|
||||||
<el-select v-model="searchData.ModuleType" clearable style="width: 120px">
|
<el-select v-model="searchData.ModuleType" clearable style="width: 120px">
|
||||||
<el-option
|
<el-option v-for="item of $d.ModuleTypeEnum" :key="item.value" :value="item.value"
|
||||||
v-for="item of $d.ModuleTypeEnum"
|
:label="item.label" />
|
||||||
:key="item.value"
|
|
||||||
:value="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 进度 -->
|
<!-- 进度 -->
|
||||||
<el-form-item :label="$t('trials:readingPeriod:table:readingSchedule')">
|
<el-form-item :label="$t('trials:readingPeriod:table:readingSchedule')">
|
||||||
<el-select v-model="searchData.ReadingStatus" clearable style="width: 120px">
|
<el-select v-model="searchData.ReadingStatus" clearable style="width: 120px">
|
||||||
<el-option
|
<el-option v-for="item of $d.ReadModuleEnum" :key="item.value" :value="item.value"
|
||||||
v-for="item of $d.ReadModuleEnum"
|
:label="item.label" />
|
||||||
:key="item.value"
|
|
||||||
:value="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 阅片名称 -->
|
<!-- 阅片名称 -->
|
||||||
<el-form-item :label="$t('trials:readingPeriod:table:readingName')">
|
<el-form-item :label="$t('trials:readingPeriod:table:readingName')">
|
||||||
<el-input
|
<el-input v-model="searchData.Name" style="width: 100px" clearable />
|
||||||
v-model="searchData.Name"
|
|
||||||
style="width:100px;"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<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">
|
||||||
|
@ -66,71 +47,45 @@
|
||||||
{{ $t('trials:readingPeriod:buttton:exportSubjectTbl') }}
|
{{ $t('trials:readingPeriod:buttton:exportSubjectTbl') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!--导出阅片期信息表-->
|
<!--导出阅片期信息表-->
|
||||||
<!-- <el-button type="primary" icon="el-icon-download" @click="handleExportPeriod">
|
<el-button type="primary" icon="el-icon-download" @click="handleExportPeriod">
|
||||||
{{ $t('trials:readingPeriod:buttton:exportPeriodTbl') }}
|
{{ $t('trials:readingPeriod:buttton:exportPeriodTbl') }}
|
||||||
</el-button> -->
|
</el-button>
|
||||||
<!-- 阅片期管理 -->
|
<!-- 阅片期管理 -->
|
||||||
<!-- <el-button
|
<el-button v-if="
|
||||||
v-if="ReadingInfoSignTime && (otherInfo.IsClinicalReading || otherInfo.IsReadingPeriod)"
|
ReadingInfoSignTime &&
|
||||||
v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
|
(otherInfo.IsClinicalReading || otherInfo.IsReadingPeriod)
|
||||||
type="primary"
|
" v-hasPermi="[
|
||||||
icon="el-icon-edit-outline"
|
'trials:trials-panel:subject:readingPeriod:edit',
|
||||||
@click="handleReadingPeriod"
|
]" type="primary" icon="el-icon-edit-outline" @click="handleReadingPeriod">
|
||||||
>
|
|
||||||
{{ $t('trials:readingPeriod:button:rpManage') }}
|
{{ $t('trials:readingPeriod:button:rpManage') }}
|
||||||
</el-button> -->
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div slot="main-container">
|
<div slot="main-container">
|
||||||
<el-table
|
<el-table ref="myTable" v-adaptive="{ bottomOffset: 135 }" v-loading="loading" :data="list" stripe
|
||||||
ref="myTable"
|
height="100" :header-row-class-name="headerRowStyle" :cell-style="cellStyle"
|
||||||
v-adaptive="{bottomOffset:75}"
|
@sort-change="handleSortChange">
|
||||||
v-loading="loading"
|
|
||||||
:data="list"
|
|
||||||
stripe
|
|
||||||
height="100"
|
|
||||||
:header-row-class-name="headerRowStyle"
|
|
||||||
:cell-style="cellStyle"
|
|
||||||
@sort-change="handleSortChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" fixed="left" />
|
<el-table-column type="index" width="40" fixed="left" />
|
||||||
<!-- 中心编号 -->
|
<!-- 中心编号 -->
|
||||||
<el-table-column
|
<!-- <el-table-column prop="TrialSiteCode" :label="$t('trials:readingPeriod:table:siteCode')" min-width="110"
|
||||||
prop="TrialSiteCode"
|
fixed="left" sortable="custom" show-overflow-tooltip /> -->
|
||||||
:label="$t('trials:readingPeriod:table:siteCode')"
|
|
||||||
min-width="110"
|
|
||||||
fixed="left"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<!-- 受试者编号 -->
|
<!-- 受试者编号 -->
|
||||||
<el-table-column
|
<el-table-column prop="SubjectCode" :label="$t('trials:readingPeriod:table:subjectCode')" min-width="120"
|
||||||
prop="SubjectCode"
|
fixed="left" sortable="custom" show-overflow-tooltip />
|
||||||
:label="$t('trials:readingPeriod:table:subjectCode')"
|
|
||||||
min-width="120"
|
|
||||||
fixed="left"
|
|
||||||
sortable="custom"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<!-- 阅片计划 -->
|
<!-- 阅片计划 -->
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:readingPeriod:table:readingPlan')" align="center" min-width="100">
|
||||||
:label="$t('trials:readingPeriod:table:readingPlan')"
|
<el-table-column v-for="i in maxLength" :key="`${i}`" :prop="`Plan${i - 1}`" label="" width="240">
|
||||||
align="center"
|
|
||||||
min-width="100"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
v-for="i in maxLength"
|
|
||||||
:key="`${i}`"
|
|
||||||
:prop="`Plan${i-1}`"
|
|
||||||
label=""
|
|
||||||
width="240"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="i <= scope.row.Data.length">
|
<div v-if="i <= scope.row.Data.length">
|
||||||
<!-- <div style="">-->
|
<!-- <div style="">-->
|
||||||
<div style="border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px;display: flex;justify-content: space-between;">
|
<div style="
|
||||||
|
border-bottom: 1px solid #d9d9d9;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
">
|
||||||
<div style="font-size: 16px; font-weight: 900">
|
<div style="font-size: 16px; font-weight: 900">
|
||||||
{{ scope.row.Data[i - 1].Name }}
|
{{ scope.row.Data[i - 1].Name }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -149,56 +104,113 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
|
<div style="
|
||||||
<div>{{ $fd('ModuleTypeEnum',scope.row.Data[i-1].ModuleType) }}</div>
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-bottom: 1px solid #d9d9d9;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
">
|
||||||
<div>
|
<div>
|
||||||
{{ $fd('ReadModuleEnum',scope.row.Data[i-1].ReadingStatus) }}
|
{{
|
||||||
|
$fd(
|
||||||
|
'ModuleTypeEnum',
|
||||||
|
scope.row.Data[i - 1].ModuleType
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div style="
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 110px;
|
||||||
|
text-align: right;
|
||||||
|
" :title="$fd(
|
||||||
|
'ReadModuleEnum',
|
||||||
|
scope.row.Data[i - 1].ReadingStatus
|
||||||
|
)
|
||||||
|
">
|
||||||
|
{{
|
||||||
|
$fd(
|
||||||
|
'ReadModuleEnum',
|
||||||
|
scope.row.Data[i - 1].ReadingStatus
|
||||||
|
)
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="scope.row.Data[i-1].ModuleType === 1" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
|
<div v-if="scope.row.Data[i - 1].ModuleType === 1" style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-bottom: 1px solid #d9d9d9;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
">
|
||||||
<!-- 上一访视 -->
|
<!-- 上一访视 -->
|
||||||
<div>{{ $t('trials:readingPeriod:table:lastVisit') }}</div>
|
<div>
|
||||||
<div>{{ scope.row.Data[i-1].OutPlanPreviousVisitName }} </div>
|
{{ $t('trials:readingPeriod:table:lastVisit') }}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="scope.row.Data[i-1].ModuleType === 2 || scope.row.Data[i-1].ModuleType ===3 || scope.row.Data[i-1].ModuleType ===5" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
|
<div>
|
||||||
|
{{ scope.row.Data[i - 1].OutPlanPreviousVisitName }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="
|
||||||
|
scope.row.Data[i - 1].ModuleType === 2 ||
|
||||||
|
scope.row.Data[i - 1].ModuleType === 3 ||
|
||||||
|
scope.row.Data[i - 1].ModuleType === 5
|
||||||
|
" style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-bottom: 1px solid #d9d9d9;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
">
|
||||||
<!-- 截止访视: -->
|
<!-- 截止访视: -->
|
||||||
<div>{{ $t('trials:readingPeriod:table:deadlineVisit') }}</div>
|
<div>
|
||||||
|
{{ $t('trials:readingPeriod:table:deadlineVisit') }}
|
||||||
|
</div>
|
||||||
<div>{{ scope.row.Data[i - 1].CutOffVisitName }}</div>
|
<div>{{ scope.row.Data[i - 1].CutOffVisitName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="scope.row.Data[i-1].ModuleType ===4 " style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
|
<div v-if="scope.row.Data[i - 1].ModuleType === 4" style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-bottom: 1px solid #d9d9d9;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
">
|
||||||
<!-- 对应阅片期: -->
|
<!-- 对应阅片期: -->
|
||||||
<div>{{ $t('trials:readingPeriod:table:correspondVisit2') }}</div>
|
<div>
|
||||||
|
{{
|
||||||
|
$t('trials:readingPeriod:table:correspondVisit2')
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
<div>{{ scope.row.Data[i - 1].ReadModuleName }}</div>
|
<div>{{ scope.row.Data[i - 1].ReadModuleName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="otherInfo.ExistClinicalData" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
|
<div v-if="otherInfo.ExistClinicalData" style="
|
||||||
<div>
|
display: flex;
|
||||||
<!-- 临床资料 -->
|
justify-content: space-between;
|
||||||
{{ $t('trials:readingPeriod:table:clinicalInfo2') }}
|
border-bottom: 1px solid #d9d9d9;
|
||||||
<el-link v-if="(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsSubjectClinicalData && scope.row.Data[i-1].IsBaseLine) ||(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsVisitClinicalData) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsReadingClinicalData)" type="danger" @click="handleView(scope.row,scope.row.Data[i-1])">
|
margin-bottom: 8px;
|
||||||
{{ $t('trials:readingPeriod:button:view') }}
|
padding-bottom: 8px;
|
||||||
</el-link>
|
">
|
||||||
<span v-else>{{ $t('trials:readingPeriod:table:noCD') }}</span>
|
|
||||||
</div>
|
|
||||||
<!-- <div >-->
|
|
||||||
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- <div >-->
|
|
||||||
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-link style="color:#428bca" @click="handleDetail(scope.row,scope.row.Data[i-1])">
|
<el-link style="color: #428bca; margin-right: 5px" @click="
|
||||||
|
handleDetail(scope.row, scope.row.Data[i - 1])
|
||||||
|
">
|
||||||
{{ $t('trials:readingPeriod:button:detail') }}
|
{{ $t('trials:readingPeriod:button:detail') }}
|
||||||
</el-link>
|
</el-link>
|
||||||
<el-link v-if="scope.row.Data[i - 1].IsCanChangeCutOffVisit" style="color:#428bca" @click="handleEdit(scope.row,scope.row.Data[i-1])">
|
<el-link style="color: #428bca; margin-right: 5px"
|
||||||
|
v-if="scope.row.Data[i - 1].IsCanChangeCutOffVisit"
|
||||||
|
@click="handleEdit(scope.row, scope.row.Data[i - 1])">
|
||||||
{{ $t('common:button:edit') }}
|
{{ $t('common:button:edit') }}
|
||||||
</el-link>
|
</el-link>
|
||||||
<el-link
|
<el-link style="color: #428bca; margin-right: 5px" v-if="
|
||||||
v-if="(scope.row.Data[i-1].ModuleType === 3 || scope.row.Data[i-1].ModuleType === 5) && scope.row.Data[i-1].ReadingStatus < 4"
|
(scope.row.Data[i - 1].ModuleType === 3 ||
|
||||||
v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
|
scope.row.Data[i - 1].ModuleType === 5) &&
|
||||||
style="color:#428bca"
|
scope.row.Data[i - 1].ReadingStatus < 4
|
||||||
@click="handleDelete(scope.row.Data[i-1])"
|
" v-hasPermi="[
|
||||||
>
|
'trials:trials-panel:subject:readingPeriod:edit',
|
||||||
|
]" @click="handleDelete(scope.row.Data[i - 1])">
|
||||||
{{ $t('trials:readingPeriod:button:delete') }}
|
{{ $t('trials:readingPeriod:button:delete') }}
|
||||||
</el-link>
|
</el-link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -206,40 +218,40 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column
|
<el-table-column v-if="
|
||||||
v-if="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) && ReadingInfoSignTime && hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])"
|
hasPermi([
|
||||||
fixed="right"
|
'trials:trials-panel:subject:readingPeriod:edit',
|
||||||
:label="$t('common:action:action')"
|
]) && ReadingInfoSignTime
|
||||||
width="150"
|
" :fixed="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) &&
|
||||||
>
|
ReadingInfoSignTime &&
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
|
||||||
|
? 'right'
|
||||||
|
: false
|
||||||
|
" :label="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) &&
|
||||||
|
ReadingInfoSignTime &&
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
|
||||||
|
? $t('common:action:action')
|
||||||
|
: ''
|
||||||
|
" :width="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) &&
|
||||||
|
ReadingInfoSignTime &&
|
||||||
|
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
|
||||||
|
? '150px'
|
||||||
|
: '80px'
|
||||||
|
">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button v-if="otherInfo.IsReadingPeriod" circle :title="$t('trials:readingPeriod:buttton:addSubjectImageRP')
|
||||||
v-if="otherInfo.IsReadingPeriod"
|
" icon="el-icon-plus" @click="handleAdd(scope.row, 0)" />
|
||||||
circle
|
<el-button v-if="isClinicalReading" circle :title="$t('trials:readingPeriod:buttton:addSubjectOncologyRP')
|
||||||
:title="$t('trials:readingPeriod:buttton:addSubjectImageRP')"
|
" icon="el-icon-plus" @click="handleAdd(scope.row, 1)" />
|
||||||
icon="el-icon-plus"
|
|
||||||
@click="handleAdd(scope.row,0)"
|
|
||||||
/>
|
|
||||||
<el-button
|
|
||||||
v-if="isClinicalReading"
|
|
||||||
circle
|
|
||||||
:title="$t('trials:readingPeriod:buttton:addSubjectOncologyRP')"
|
|
||||||
icon="el-icon-plus"
|
|
||||||
@click="handleAdd(scope.row,1)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页组件 -->
|
<!-- 分页组件 -->
|
||||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||||
|
@pagination="getList" />
|
||||||
<!-- 详情 -->
|
<!-- 详情 -->
|
||||||
<el-dialog
|
<el-dialog v-if="dialogVisible" :title="$t('trials:rpDetail:dialogTitle:detail')"
|
||||||
v-if="dialogVisible"
|
:visible.sync="dialogVisible" width="600px" :close-on-click-modal="false">
|
||||||
:title="$t('trials:rpDetail:dialogTitle:detail')"
|
|
||||||
:visible.sync="dialogVisible"
|
|
||||||
width="600px"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<el-descriptions :column="2" border>
|
<el-descriptions :column="2" border>
|
||||||
<!-- 阅片期名称 -->
|
<!-- 阅片期名称 -->
|
||||||
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingName')">
|
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingName')">
|
||||||
|
@ -255,33 +267,18 @@
|
||||||
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingSchedule')">
|
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingSchedule')">
|
||||||
{{ $fd('ReadModuleEnum', currentData.ReadingStatus) }}
|
{{ $fd('ReadModuleEnum', currentData.ReadingStatus) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item v-if="currentData.CutOffVisitName"
|
||||||
v-if="currentData.CutOffVisitName"
|
:label="$t('trials:readingPeriod:table:deadlineVisit')">
|
||||||
:label="$t('trials:readingPeriod:table:deadlineVisit')"
|
|
||||||
>
|
|
||||||
{{ currentData.CutOffVisitName }}
|
{{ currentData.CutOffVisitName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item v-if="currentData.OutPlanPreviousVisitName"
|
||||||
v-if="currentData.OutPlanPreviousVisitName"
|
:label="$t('trials:readingPeriod:table:lastVisit')">
|
||||||
:label="$t('trials:readingPeriod:table:lastVisit')"
|
|
||||||
>
|
|
||||||
{{ currentData.OutPlanPreviousVisitName }}
|
{{ currentData.OutPlanPreviousVisitName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item v-if="currentData.ReadModuleName"
|
||||||
v-if="currentData.ReadModuleName"
|
:label="$t('trials:readingPeriod:table:correspondVisit')">
|
||||||
:label="$t('trials:readingPeriod:table:correspondVisit')"
|
|
||||||
>
|
|
||||||
{{ currentData.ReadModuleName }}
|
{{ currentData.ReadModuleName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- 临床资料 -->
|
|
||||||
<el-descriptions-item v-if="otherInfo.ExistClinicalData" :label="$t('trials:readingPeriod:table:clinicalInfo')">
|
|
||||||
<template v-if="(currentData.IsVisit && otherInfo.IsExistsSubjectClinicalData && currentData.IsBaseLine) ||(currentData.IsVisit && otherInfo.IsExistsVisitClinicalData) || (!currentData.IsVisit && otherInfo.IsExistsReadingClinicalData)">
|
|
||||||
<el-link @click="view">{{ $t('trials:readingPeriod:button:view') }}</el-link>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<span>{{ $t('trials:readingPeriod:table:noCD') }}</span>
|
|
||||||
</template>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<!-- 当前干系人 -->
|
<!-- 当前干系人 -->
|
||||||
<el-descriptions-item :label="$t('trials:readingPeriod:table:stakeholder')" :span="2">
|
<el-descriptions-item :label="$t('trials:readingPeriod:table:stakeholder')" :span="2">
|
||||||
{{ currentData.Stakeholders }}
|
{{ currentData.Stakeholders }}
|
||||||
|
@ -290,53 +287,33 @@
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 设置阅片期 -->
|
<!-- 设置阅片期 -->
|
||||||
<el-dialog
|
<el-dialog v-if="readPeriodVisible" :title="$t('trials:rpManage:dialogTitle:setRP')"
|
||||||
v-if="readPeriodVisible"
|
:visible.sync="readPeriodVisible" width="1400px" :close-on-click-modal="false">
|
||||||
:title="$t('trials:rpManage:dialogTitle:setRP')"
|
<ReadingPeriod :trial-id="trialId" :trial-reading-criterion-id="TrialReadingCriterionId"
|
||||||
:visible.sync="readPeriodVisible"
|
:is-clinical-reading="isClinicalReading" :is-global-reading="otherInfo.IsReadingPeriod"
|
||||||
width="1400px"
|
@getList="getList" />
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<ReadingPeriod
|
|
||||||
:trial-id="trialId"
|
|
||||||
:trial-reading-criterion-id="TrialReadingCriterionId"
|
|
||||||
:is-clinical-reading="isClinicalReading"
|
|
||||||
:is-global-reading="otherInfo.IsReadingPeriod"
|
|
||||||
@getList="getList"
|
|
||||||
/>
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 临床资料 -->
|
<!-- 临床资料 -->
|
||||||
<el-dialog
|
<el-dialog v-if="clinicalDataVisible" :title="`${$t(
|
||||||
v-if="clinicalDataVisible"
|
'trials:readingPeriod:dialogTitle:clinicalData'
|
||||||
:title="`${$t('trials:readingPeriod:dialogTitle:clinicalData')}(${currentData.SubjectCode}|${currentData.Name}|${currentData.CriterionName})`"
|
)}(${currentData.SubjectCode}|${currentData.Name}|${currentData.CriterionName
|
||||||
:visible.sync="clinicalDataVisible"
|
})`" :visible.sync="clinicalDataVisible" :close-on-click-modal="false" append-to-body width="70%">
|
||||||
:close-on-click-modal="false"
|
<ClinicalData :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId"
|
||||||
append-to-body
|
:data="currentData" @getList="getList" />
|
||||||
>
|
|
||||||
<ClinicalData :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="currentData" />
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 添加受试者阅片期 -->
|
<!-- 添加受试者阅片期 -->
|
||||||
<el-dialog
|
<el-dialog v-if="subjectPeriod.visible" :title="subjectPeriod.title" :visible.sync="subjectPeriod.visible"
|
||||||
v-if="subjectPeriod.visible"
|
width="500px" custom-class="base-dialog-wrapper" :close-on-click-modal="false">
|
||||||
:title="subjectPeriod.title"
|
<SubjectPR :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="param"
|
||||||
:visible.sync="subjectPeriod.visible"
|
@close="subjectPeriod.visible = false" @getList="getList" />
|
||||||
width="500px"
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<SubjectPR :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="param" @close="subjectPeriod.visible = false" @getList="getList" />
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 编辑受试者阅片期 -->
|
<!-- 编辑受试者阅片期 -->
|
||||||
<el-dialog
|
<el-dialog v-if="subjectPeriodEdit.visible" :title="subjectPeriodEdit.title"
|
||||||
v-if="subjectPeriodEdit.visible"
|
:visible.sync="subjectPeriodEdit.visible" width="500px" custom-class="base-dialog-wrapper"
|
||||||
:title="subjectPeriodEdit.title"
|
:close-on-click-modal="false">
|
||||||
:visible.sync="subjectPeriodEdit.visible"
|
<SubjectPR :type="'edit'" :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId"
|
||||||
width="500px"
|
:data="param" @close="subjectPeriodEdit.visible = false" @getList="getList" />
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<SubjectPR :type="'edit'" :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="param" @close="subjectPeriodEdit.visible = false" @getList="getList" />
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -345,8 +322,17 @@
|
||||||
</BaseContainer>
|
</BaseContainer>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getReadModuleList, deleteReadModule, getReadModule, getTrialSiteSelect, getTrialCriterionList } from '@/api/trials'
|
import {
|
||||||
import { getReadingPeriodList_Export, getSubjectProgress_Export } from '@/api/export'
|
getReadModuleList,
|
||||||
|
deleteReadModule,
|
||||||
|
getReadModule,
|
||||||
|
getTrialSiteSelect,
|
||||||
|
getTrialCriterionList,
|
||||||
|
} from '@/api/trials'
|
||||||
|
import {
|
||||||
|
getReadingPeriodList_Export,
|
||||||
|
getSubjectProgress_Export,
|
||||||
|
} from '@/api/export'
|
||||||
import BaseContainer from '@/components/BaseContainer'
|
import BaseContainer from '@/components/BaseContainer'
|
||||||
import Pagination from '@/components/Pagination'
|
import Pagination from '@/components/Pagination'
|
||||||
import ReadingPeriod from './components/RPList'
|
import ReadingPeriod from './components/RPList'
|
||||||
|
@ -359,14 +345,21 @@ const searchDataDefault = () => {
|
||||||
ModuleType: null,
|
ModuleType: null,
|
||||||
ReadingStatus: null,
|
ReadingStatus: null,
|
||||||
Name: '',
|
Name: '',
|
||||||
|
CompleteClinicalData: '',
|
||||||
PageIndex: 1,
|
PageIndex: 1,
|
||||||
PageSize: 20
|
PageSize: 20,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const MinPlanCount = 10
|
const MinPlanCount = 10
|
||||||
export default {
|
export default {
|
||||||
name: 'TrialsNotice',
|
name: 'TrialsNotice',
|
||||||
components: { BaseContainer, Pagination, ReadingPeriod, ClinicalData, SubjectPR },
|
components: {
|
||||||
|
BaseContainer,
|
||||||
|
Pagination,
|
||||||
|
ReadingPeriod,
|
||||||
|
ClinicalData,
|
||||||
|
SubjectPR,
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
searchData: searchDataDefault(),
|
searchData: searchDataDefault(),
|
||||||
|
@ -377,8 +370,14 @@ export default {
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
readPeriodVisible: false,
|
readPeriodVisible: false,
|
||||||
clinicalDataVisible: false,
|
clinicalDataVisible: false,
|
||||||
subjectPeriod: { visible: false, title: this.$t('trials:readingPeriod:dialogTitle:addSubjectPR') },
|
subjectPeriod: {
|
||||||
subjectPeriodEdit: { visible: false, title: this.$t('trials:readingPeriod:dialogTitle:EditSubjectPR') },
|
visible: false,
|
||||||
|
title: this.$t('trials:readingPeriod:dialogTitle:addSubjectPR'),
|
||||||
|
},
|
||||||
|
subjectPeriodEdit: {
|
||||||
|
visible: false,
|
||||||
|
title: this.$t('trials:readingPeriod:dialogTitle:EditSubjectPR'),
|
||||||
|
},
|
||||||
trialId: this.$route.query.trialId,
|
trialId: this.$route.query.trialId,
|
||||||
currentData: {},
|
currentData: {},
|
||||||
param: {},
|
param: {},
|
||||||
|
@ -387,21 +386,21 @@ export default {
|
||||||
otherInfo: {},
|
otherInfo: {},
|
||||||
trialCriterionList: [],
|
trialCriterionList: [],
|
||||||
TrialReadingCriterionId: '0',
|
TrialReadingCriterionId: '0',
|
||||||
ReadingInfoSignTime: null
|
ReadingInfoSignTime: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
TrialReadingCriterionId(v) {
|
TrialReadingCriterionId(v) {
|
||||||
if (v) {
|
if (v) {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.ReadingInfoSignTime = this.trialCriterionList.find(v => {
|
this.ReadingInfoSignTime = this.trialCriterionList.find((v) => {
|
||||||
return v.TrialReadingCriterionId === this.TrialReadingCriterionId
|
return v.TrialReadingCriterionId === this.TrialReadingCriterionId
|
||||||
}).ReadingInfoSignTime
|
}).ReadingInfoSignTime
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getSite()
|
// this.getSite()
|
||||||
this.getTrialCriterionList()
|
this.getTrialCriterionList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -409,11 +408,15 @@ export default {
|
||||||
this.searchData.TrialId = this.$route.query.trialId
|
this.searchData.TrialId = this.$route.query.trialId
|
||||||
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
|
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getReadModuleList(this.searchData).then(res => {
|
getReadModuleList(this.searchData)
|
||||||
|
.then((res) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.list = res.Result.CurrentPageData
|
this.list = res.Result.CurrentPageData
|
||||||
this.total = res.Result.TotalCount
|
this.total = res.Result.TotalCount
|
||||||
this.maxLength = res.OtherInfo.MaxLength > MinPlanCount ? res.OtherInfo.MaxLength : MinPlanCount
|
this.maxLength =
|
||||||
|
res.OtherInfo.MaxLength > MinPlanCount
|
||||||
|
? res.OtherInfo.MaxLength
|
||||||
|
: MinPlanCount
|
||||||
this.isClinicalReading = res.OtherInfo.IsClinicalReading
|
this.isClinicalReading = res.OtherInfo.IsClinicalReading
|
||||||
this.otherInfo = res.OtherInfo
|
this.otherInfo = res.OtherInfo
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
|
@ -422,18 +425,25 @@ export default {
|
||||||
this.$refs.myTable.doLayout()
|
this.$refs.myTable.doLayout()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}).catch(() => { this.loading = false })
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleAdd(row, type) {
|
handleAdd(row, type) {
|
||||||
this.param = {}
|
this.param = {}
|
||||||
this.param.SubjectId = row.SubjectId
|
this.param.SubjectId = row.SubjectId
|
||||||
this.param.SiteId = row.SiteId
|
this.param.TrialSiteId = row.TrialSiteId
|
||||||
this.param.SubjectCode = row.SubjectCode
|
this.param.SubjectCode = row.SubjectCode
|
||||||
this.param.TrialSiteCode = row.TrialSiteCode
|
this.param.TrialSiteCode = row.TrialSiteCode
|
||||||
this.param.TrialId = this.trialId
|
this.param.TrialId = this.trialId
|
||||||
this.param.IsClinicalReading = this.isClinicalReading
|
this.param.IsClinicalReading = this.isClinicalReading
|
||||||
this.param.ReadingSetType = type
|
this.param.ReadingSetType = type
|
||||||
this.subjectPeriod.visible = true
|
this.subjectPeriod.visible = true
|
||||||
|
this.subjectPeriod.title =
|
||||||
|
type === 0
|
||||||
|
? this.$t('trials:readingPeriod:dialogTitle:addSubjectPR')
|
||||||
|
: this.$t('trials:readingPeriod:dialogTitle:addSubjectTumorPR')
|
||||||
},
|
},
|
||||||
handleEdit(row, type) {
|
handleEdit(row, type) {
|
||||||
this.param = { ...type }
|
this.param = { ...type }
|
||||||
|
@ -443,18 +453,22 @@ export default {
|
||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
this.$confirm(this.$t('trials:readingPeriod:message:sureToDelete'), {
|
this.$confirm(this.$t('trials:readingPeriod:message:sureToDelete'), {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true
|
distinguishCancelAndClose: true,
|
||||||
})
|
}).then(() => {
|
||||||
.then(() => {
|
|
||||||
this.loading = true
|
this.loading = true
|
||||||
deleteReadModule(row.Id)
|
deleteReadModule(row.Id)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
this.$message.success(
|
||||||
|
this.$t('common:message:deletedSuccessfully')
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}).catch(() => { this.loading = false })
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleReadingPeriod() {
|
handleReadingPeriod() {
|
||||||
|
@ -474,9 +488,10 @@ export default {
|
||||||
id: ReadingPlan.Id,
|
id: ReadingPlan.Id,
|
||||||
TrialReadingCriterionId: this.TrialReadingCriterionId,
|
TrialReadingCriterionId: this.TrialReadingCriterionId,
|
||||||
// subjectId: row.SubjectId
|
// subjectId: row.SubjectId
|
||||||
subjectId: ReadingPlan.SubjectId
|
subjectId: ReadingPlan.SubjectId,
|
||||||
}
|
}
|
||||||
getReadModule(param).then(res => {
|
getReadModule(param)
|
||||||
|
.then((res) => {
|
||||||
this.currentData = Object.assign({}, ReadingPlan)
|
this.currentData = Object.assign({}, ReadingPlan)
|
||||||
// this.currentData.SubjectId = row.SubjectId
|
// this.currentData.SubjectId = row.SubjectId
|
||||||
// this.currentData.SiteId = row.SiteId
|
// this.currentData.SiteId = row.SiteId
|
||||||
|
@ -484,27 +499,35 @@ export default {
|
||||||
this.currentData.Stakeholders = res.Result.StakeholderNames.join(', ')
|
this.currentData.Stakeholders = res.Result.StakeholderNames.join(', ')
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}).catch(() => { this.loading = false })
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 获取site下拉框数据
|
// 获取site下拉框数据
|
||||||
getSite() {
|
getSite() {
|
||||||
getTrialSiteSelect(this.trialId).then(res => {
|
getTrialSiteSelect(this.trialId).then((res) => {
|
||||||
this.siteOptions = res.Result
|
this.siteOptions = res.Result
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleExportSubject() {
|
handleExportSubject() {
|
||||||
getSubjectProgress_Export(this.searchData).then(res => {
|
getSubjectProgress_Export(this.searchData)
|
||||||
}).catch(() => {})
|
.then((res) => { })
|
||||||
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
handleExportPeriod() {
|
handleExportPeriod() {
|
||||||
getReadingPeriodList_Export(this.searchData).then(res => {
|
getReadingPeriodList_Export(this.searchData)
|
||||||
}).catch(() => {})
|
.then((res) => { })
|
||||||
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
getTrialCriterionList() {
|
getTrialCriterionList() {
|
||||||
getTrialCriterionList(this.trialId, false).then(res => {
|
getTrialCriterionList(this.trialId, false)
|
||||||
|
.then((res) => {
|
||||||
this.trialCriterionList = res.Result
|
this.trialCriterionList = res.Result
|
||||||
this.TrialReadingCriterionId = this.trialCriterionList[0].TrialReadingCriterionId
|
this.TrialReadingCriterionId =
|
||||||
}).catch(() => {})
|
this.trialCriterionList[0].TrialReadingCriterionId
|
||||||
|
})
|
||||||
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
this.searchData.PageIndex = 1
|
this.searchData.PageIndex = 1
|
||||||
|
@ -533,7 +556,11 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cellStyle({ row, column, rowIndex, columnIndex }) {
|
cellStyle({ row, column, rowIndex, columnIndex }) {
|
||||||
if (columnIndex > 2 && (row.Data.length >= columnIndex - 2) && column.property) {
|
if (
|
||||||
|
columnIndex > 2 &&
|
||||||
|
row.Data.length >= columnIndex - 2 &&
|
||||||
|
column.property
|
||||||
|
) {
|
||||||
const index = column.property.substring(4) * 1
|
const index = column.property.substring(4) * 1
|
||||||
// 0 计划内访视; 1 计划外访视; 2 阅片期; 3 全局阅片; 4 裁判; 5肿瘤学
|
// 0 计划内访视; 1 计划外访视; 2 阅片期; 3 全局阅片; 4 裁判; 5肿瘤学
|
||||||
const type = row.Data[index].ModuleType
|
const type = row.Data[index].ModuleType
|
||||||
|
@ -544,37 +571,60 @@ export default {
|
||||||
return { 'vertical-align': 'top' }
|
return { 'vertical-align': 'top' }
|
||||||
} else if ((type === 0 || type === 1) && status === 1) {
|
} else if ((type === 0 || type === 1) && status === 1) {
|
||||||
// 计划访视 影像质控 (蓝色)
|
// 计划访视 影像质控 (蓝色)
|
||||||
return { 'background-color': 'rgb(189,215,238)', 'vertical-align': 'top' }
|
return {
|
||||||
|
'background-color': 'rgb(189,215,238)',
|
||||||
|
'vertical-align': 'top',
|
||||||
|
}
|
||||||
} else if ((type === 0 || type === 1) && status === 2) {
|
} else if ((type === 0 || type === 1) && status === 2) {
|
||||||
// 计划访视 一致性核查 (黄色)
|
// 计划访视 一致性核查 (黄色)
|
||||||
return { 'background-color': 'rgb(255,217,102)', 'vertical-align': 'top' }
|
return {
|
||||||
|
'background-color': 'rgb(255,217,102)',
|
||||||
|
'vertical-align': 'top',
|
||||||
|
}
|
||||||
} else if ((type === 0 || type === 1) && status === 3) {
|
} else if ((type === 0 || type === 1) && status === 3) {
|
||||||
// 计划访视 任务分配 (绿色)
|
// 计划访视 任务分配 (绿色)
|
||||||
return { 'background-color': 'rgb(169,208,142)', 'vertical-align': 'top' }
|
return {
|
||||||
|
'background-color': 'rgb(169,208,142)',
|
||||||
|
'vertical-align': 'top',
|
||||||
|
}
|
||||||
} else if ((type === 0 || type === 1) && status === 4) {
|
} else if ((type === 0 || type === 1) && status === 4) {
|
||||||
// 计划访视 影像阅片 (绿色)
|
// 计划访视 影像阅片 (绿色)
|
||||||
return { 'background-color': 'rgb(169,208,142)', 'vertical-align': 'top' }
|
return {
|
||||||
|
'background-color': 'rgb(169,208,142)',
|
||||||
|
'vertical-align': 'top',
|
||||||
|
}
|
||||||
} else if ((type === 0 || type === 1) && status === 5) {
|
} else if ((type === 0 || type === 1) && status === 5) {
|
||||||
// 计划访视 阅片完成 (橙色)
|
// 计划访视 阅片完成 (橙色)
|
||||||
return { 'background-color': 'rgb(244,176,132)', 'vertical-align': 'top' }
|
return {
|
||||||
}
|
'background-color': 'rgb(244,176,132)',
|
||||||
|
'vertical-align': 'top',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
>>>.hidden-row{
|
.reading-period {
|
||||||
|
::v-deep.search {
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .hidden-row {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
>>>.el-dialog__body {
|
|
||||||
|
::v-deep .el-dialog__body {
|
||||||
padding: 0px 20px;
|
padding: 0px 20px;
|
||||||
}
|
}
|
||||||
>>>.el-dialog__header {
|
|
||||||
|
::v-deep .el-dialog__header {
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
>>>.el-tag--danger.el-tag--dark {
|
::v-deep .el-tag--danger.el-tag--dark {
|
||||||
// background-color: #f56c6c!important;
|
// background-color: #f56c6c!important;
|
||||||
border-color: none !important;
|
border-color: none !important;
|
||||||
// color: #fff!important;
|
// color: #fff!important;
|
||||||
|
|
Loading…
Reference in New Issue