阅片分享
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
b415c21440
commit
61a1143d0b
|
@ -7,6 +7,13 @@ export function createImageShare(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
export function updateImageShare(data) {
|
||||
return request({
|
||||
url: '/ImageShare/updateImageShare',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
export function verifyShareImage(resourceId, password) {
|
||||
return request({
|
||||
url: `/imageShare/verifyShareImage/${resourceId}/${password}`,
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<template>
|
||||
<div class="share-image-container">
|
||||
<div class="share-image-banner">
|
||||
<h2 style="text-align:center;">IRC Management System</h2>
|
||||
<h2 style="text-align:center;">{{ $t('trials:trials:title:eics') }}</h2>
|
||||
<el-card shadow="hover">
|
||||
<h4>请输入提取码:</h4>
|
||||
<h4>{{ $t('trials:studyList:message:message7') }}</h4>
|
||||
<el-form ref="validateForm" :inline="true" :rules="rules" :model="form">
|
||||
<el-form-item label="" prop="ExtractionCode">
|
||||
<el-input v-model="form.ExtractionCode" style="width:400px;" />
|
||||
<el-input v-model="form.ExtractionCode" :max-length="$inputMax" style="width:400px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="onSubmit">提交</el-button>
|
||||
<el-button type="primary" @click="onSubmit">{{ $t('common:button:submit') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
@ -18,6 +18,7 @@
|
|||
</template>
|
||||
<script>
|
||||
import { verifyShareImage } from '@/api/share'
|
||||
import { mapMutations } from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
@ -25,16 +26,34 @@ export default {
|
|||
form: { ExtractionCode: '' },
|
||||
rules: {
|
||||
ExtractionCode: [
|
||||
{ required: true, message: '请输入提取码', trigger: 'blur' },
|
||||
{ min: 4, max: 6, message: '长度在 4 到 6 个字符', trigger: 'blur' }
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur,change' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value) {
|
||||
if (value.length !== 4) {
|
||||
callback(new Error(this.$t('trials:studyList:message:length4')));
|
||||
}
|
||||
if (!(/^[a-z0-9]+$/.test(value))) {
|
||||
callback(new Error(this.$t('trials:studyList:message:testError')));
|
||||
}
|
||||
callback();
|
||||
}
|
||||
callback();
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.resourceId = this.$route.query.id
|
||||
localStorage.setItem('location', this.location)
|
||||
this.$i18n.locale = 'zh'
|
||||
this.setLanguage('zh')
|
||||
this.$updateDictionary()
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
onSubmit() {
|
||||
this.$refs['validateForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
|
@ -49,16 +68,19 @@ export default {
|
|||
verifyShareImage(this.resourceId, this.form.ExtractionCode).then(res => {
|
||||
loading.close()
|
||||
if (res.IsSuccess) {
|
||||
zzSessionStorage.clear()
|
||||
this.$store.dispatch('user/setToken', res.Result.Token)
|
||||
zzSessionStorage.setItem('studyId', res.Result.StudyId)
|
||||
zzSessionStorage.setItem('TokenKey', res.Result.Token)
|
||||
this.$store.dispatch('user/setToken', zzSessionStorage.getItem('TokenKey'))
|
||||
|
||||
// zzSessionStorage.setItem('studyId', res.Result.StudyId)
|
||||
// zzSessionStorage.setItem('TokenKey', res.Result.Token)
|
||||
// this.$store.dispatch('user/setToken', zzSessionStorage.getItem('TokenKey'))
|
||||
// 跳转
|
||||
// this.$router.push({
|
||||
// name: 'showdicoms',
|
||||
// query: { type: 'Share' }
|
||||
// })
|
||||
this.$router.push({ path: `/showdicom?studyId=${res.Result.StudyId}&TokenKey=${res.Result.Token}&type=Share` })
|
||||
this.$router.push({ path: `${res.Result.RouteUrl}&TokenKey=${res.Result.Token}` })
|
||||
}
|
||||
}).catch(() => { loading.close() })
|
||||
}
|
||||
|
@ -69,7 +91,8 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.share-image-container {
|
||||
padding:50px;
|
||||
padding: 50px;
|
||||
|
||||
.share-image-banner {
|
||||
height: 500px;
|
||||
width: 600px;
|
||||
|
|
|
@ -5,100 +5,47 @@
|
|||
<el-form :inline="true">
|
||||
<!-- 阅片标准 -->
|
||||
<el-form-item :label="$t('trials:processCfg:form:criterion')">
|
||||
<el-select
|
||||
v-model="searchData.TrialReadingCriterionId"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of CriterionTypeList"
|
||||
:key="item.TrialReadingCriterionId"
|
||||
:label="item.TrialReadingCriterionName"
|
||||
:value="item.TrialReadingCriterionId"
|
||||
/>
|
||||
<el-select v-model="searchData.TrialReadingCriterionId" clearable filterable style="width: 150px">
|
||||
<el-option v-for="item of CriterionTypeList" :key="item.TrialReadingCriterionId"
|
||||
:label="item.TrialReadingCriterionName" :value="item.TrialReadingCriterionId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadMonitor:table:subjectId')">
|
||||
<el-input
|
||||
v-model="searchData.SubjectCode"
|
||||
clearable
|
||||
style="width: 140px"
|
||||
/>
|
||||
<el-input v-model="searchData.SubjectCode" clearable style="width: 140px" />
|
||||
</el-form-item>
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input
|
||||
v-model="searchData.PatientIdStr"
|
||||
clearable
|
||||
style="width: 140px"
|
||||
/>
|
||||
<el-input v-model="searchData.PatientIdStr" clearable style="width: 140px" />
|
||||
</el-form-item>
|
||||
<!-- 患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input
|
||||
v-model="searchData.SubjectShortName"
|
||||
clearable
|
||||
style="width: 140px"
|
||||
/>
|
||||
<el-input v-model="searchData.SubjectShortName" clearable style="width: 140px" />
|
||||
</el-form-item>
|
||||
<!-- 任务创建时间 -->
|
||||
<el-form-item :label="$t('trials:reviewTrack:table:createTime')">
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="dateValue2"
|
||||
type="datetimerange"
|
||||
range-separator="-"
|
||||
<el-date-picker clearable v-model="dateValue2" type="datetimerange" range-separator="-"
|
||||
:start-placeholder="$t('trials:uploadClinicalData:table:beginDate')"
|
||||
:end-placeholder="$t('trials:uploadClinicalData:table:endDate')"
|
||||
:default-time="['00:00:00', '23:59:59']"
|
||||
>
|
||||
:end-placeholder="$t('trials:uploadClinicalData:table:endDate')" :default-time="['00:00:00', '23:59:59']">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- 任务状态 -->
|
||||
<el-form-item :label="$t('trials:readTask:table:taskState')">
|
||||
<el-select
|
||||
v-model="searchData.taskState"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.TaskState"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-select v-model="searchData.taskState" clearable filterable style="width: 150px">
|
||||
<el-option v-for="item of $d.TaskState" :key="item.id" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 阅片状态 -->
|
||||
<el-form-item :label="$t('trials:readTask:table:readingTaskState')">
|
||||
<el-select
|
||||
v-model="searchData.ReadingTaskState"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.ReadingTaskState"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-select v-model="searchData.ReadingTaskState" clearable filterable style="width: 150px">
|
||||
<el-option v-for="item of $d.ReadingTaskState" :key="item.id" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 阅片完成时间 -->
|
||||
<el-form-item :label="$t('trials:reviewTrack:table:signTime')">
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="dateValue"
|
||||
type="datetimerange"
|
||||
range-separator="-"
|
||||
<el-date-picker clearable v-model="dateValue" type="datetimerange" range-separator="-"
|
||||
:start-placeholder="$t('trials:uploadClinicalData:table:beginDate')"
|
||||
:end-placeholder="$t('trials:uploadClinicalData:table:endDate')"
|
||||
:default-time="['00:00:00', '23:59:59']"
|
||||
>
|
||||
:end-placeholder="$t('trials:uploadClinicalData:table:endDate')" :default-time="['00:00:00', '23:59:59']">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -107,11 +54,7 @@
|
|||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
<!--导出-->
|
||||
|
@ -124,121 +67,63 @@
|
|||
|
||||
<!-- 阅片管理列表 -->
|
||||
<template slot="main-container">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
ref="redManagenentTable"
|
||||
:default-sort="{ prop: 'CreateTime', order: 'descending' }"
|
||||
>
|
||||
<el-table v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="list" stripe height="100"
|
||||
@sort-change="handleSortByColumn" ref="redManagenentTable"
|
||||
:default-sort="{ prop: 'CreateTime', order: 'descending' }">
|
||||
<el-table-column type="index" width="40" />
|
||||
<!-- 受试者编号 -->
|
||||
<el-table-column
|
||||
prop="SubjectCode"
|
||||
:label="$t('trials:uploadMonitor:table:subjectId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SubjectCode" :label="$t('trials:uploadMonitor:table:subjectId')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 患者编号 -->
|
||||
<el-table-column
|
||||
prop="StudyCode"
|
||||
:label="$t('trials:uploadDicomList:table:pId')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="StudyCode" :label="$t('trials:uploadDicomList:table:pId')" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
v-for="(item, index) in scope.row.PatientList"
|
||||
:key="`${index}${item.PatientId}`"
|
||||
>
|
||||
<span v-for="(item, index) in scope.row.PatientList" :key="`${index}${item.PatientId}`">
|
||||
{{
|
||||
index === scope.row.PatientList.length - 1
|
||||
? item.PatientIdStr
|
||||
: `${item.PatientIdStr}, `
|
||||
}}
|
||||
</span>
|
||||
</template></el-table-column
|
||||
>
|
||||
</template></el-table-column>
|
||||
<!-- 患者姓名 -->
|
||||
<el-table-column
|
||||
prop="SubjectShortName"
|
||||
:label="$t('trials:researchStaff:table:Name')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SubjectShortName" :label="$t('trials:researchStaff:table:Name')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 任务名称 -->
|
||||
<el-table-column
|
||||
prop="TaskBlindName"
|
||||
:label="$t('trials:auditRecord:table:taskName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="TaskBlindName" :label="$t('trials:auditRecord:table:taskName')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 任务创建时间 -->
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
:label="$t('trials:reviewTrack:table:createTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="CreateTime" :label="$t('trials:reviewTrack:table:createTime')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 任务状态 -->
|
||||
<el-table-column
|
||||
prop="TaskState"
|
||||
:label="$t('trials:readTask:table:taskState')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="TaskState" :label="$t('trials:readTask:table:taskState')" show-overflow-tooltip
|
||||
sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-tag
|
||||
:type="
|
||||
['primary', 'info', '', 'danger', 'warning', 'danger'][
|
||||
scope.row.TaskState
|
||||
]
|
||||
"
|
||||
>{{ $fd('TaskState', scope.row.TaskState) }}</el-tag
|
||||
>
|
||||
<el-tag :type="['primary', 'info', '', 'danger', 'warning', 'danger'][
|
||||
scope.row.TaskState
|
||||
]
|
||||
">{{ $fd('TaskState', scope.row.TaskState) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 阅片人 -->
|
||||
<el-table-column
|
||||
prop="DoctorUser"
|
||||
:label="$t('trials:reviewAssign:searchForm:reader')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="DoctorUser" :label="$t('trials:reviewAssign:searchForm:reader')" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ (scope.row.DoctorUser || {}).UserName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 阅片状态 -->
|
||||
<el-table-column
|
||||
prop="ReadingTaskState"
|
||||
:label="$t('trials:reviewTrack:table:readingStatus')"
|
||||
width="160"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="ReadingTaskState" :label="$t('trials:reviewTrack:table:readingStatus')" width="160"
|
||||
sortable="custom" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<el-tag
|
||||
:type="scope.row.ReadingTaskState === 2 ? 'primary' : 'danger'"
|
||||
>{{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}</el-tag
|
||||
>
|
||||
<el-tag :type="scope.row.ReadingTaskState === 2 ? 'primary' : 'danger'">{{ $fd('ReadingTaskState',
|
||||
scope.row.ReadingTaskState) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 阅片完成时间 -->
|
||||
<el-table-column
|
||||
prop="SignTime"
|
||||
:label="$t('trials:reviewTrack:table:signTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SignTime" :label="$t('trials:reviewTrack:table:signTime')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 阅片标准 -->
|
||||
<el-table-column
|
||||
prop="TrialReadingCriterionName"
|
||||
:label="$t('trials:processCfg:form:criterion')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="TrialReadingCriterionName" :label="$t('trials:processCfg:form:criterion')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 打包状态 -->
|
||||
<!-- <el-table-column
|
||||
prop="PackState"
|
||||
|
@ -267,67 +152,65 @@
|
|||
sortable="custom"
|
||||
/> -->
|
||||
<!--操作-->
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
min-width="130"
|
||||
fixed="right"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" min-width="210" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<!--阅片结果-->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-view"
|
||||
:title="$t('trials:auditRecord:table:readingResult')"
|
||||
@click="readResult(scope.row)"
|
||||
:disabled="scope.row.ReadingTaskState !== 2"
|
||||
/>
|
||||
<el-button circle icon="el-icon-view" :title="$t('trials:auditRecord:table:readingResult')"
|
||||
@click="readResult(scope.row)" :disabled="scope.row.ReadingTaskState !== 2" />
|
||||
<!--分享-->
|
||||
<el-button v-if="OpenImageShare" :disabled="scope.row.ReadingTaskState !== 2" circle
|
||||
:title="$t('trials:studyList:action:share')" icon="el-icon-share" @click="handleShareImage(scope.row)" />
|
||||
<!--肿瘤负荷报告-->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-document"
|
||||
:title="$t('trials:trials-panel:hirVisit:EvaluationReport')"
|
||||
<el-button circle icon="el-icon-document" :title="$t('trials:trials-panel:hirVisit:EvaluationReport')"
|
||||
@click="handleCommand('showReport', scope.row, 'evaluate')"
|
||||
:disabled="scope.row.ReadingTaskState !== 2"
|
||||
/>
|
||||
:disabled="scope.row.ReadingTaskState !== 2" />
|
||||
<!--疗效评估报告-->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-document"
|
||||
:title="$t('trials:trials-panel:hirVisit:TumorReport')"
|
||||
@click="handleCommand('showReport', scope.row, 'tumor')"
|
||||
:disabled="scope.row.ReadingTaskState !== 2"
|
||||
/>
|
||||
<el-button circle icon="el-icon-document" :title="$t('trials:trials-panel:hirVisit:TumorReport')"
|
||||
@click="handleCommand('showReport', scope.row, 'tumor')" :disabled="scope.row.ReadingTaskState !== 2" />
|
||||
<!--下载影像-->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-download"
|
||||
:loading="downloading"
|
||||
:title="$t('trials:reading:button:uploadImages')"
|
||||
@click="
|
||||
<el-button circle icon="el-icon-download" :loading="downloading"
|
||||
:title="$t('trials:reading:button:uploadImages')" @click="
|
||||
handleCommand('getDownloadSubjectVisitStudyInfo', scope.row)
|
||||
"
|
||||
/>
|
||||
" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</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
|
||||
v-if="exportVisible"
|
||||
:title="$t('trials:reviewTrack:button:export')"
|
||||
:visible.sync="exportVisible"
|
||||
:close-on-click-modal="false"
|
||||
append-to-body>
|
||||
<el-dialog v-if="exportVisible" :title="$t('trials:reviewTrack:button:export')" :visible.sync="exportVisible"
|
||||
:close-on-click-modal="false" append-to-body>
|
||||
<exportList :data="searchData" />
|
||||
</el-dialog>
|
||||
<base-model :config="share_model">
|
||||
<template slot="dialog-body">
|
||||
<div>
|
||||
<i style="color:#00d1b2;" class="el-icon-success" />
|
||||
<span>{{ $t('trials:studyList:message:message3') }}</span>
|
||||
</div>
|
||||
<div style="margin:10px 0;">
|
||||
<el-input :maxLength="100" v-model="shareLink" readonly style="width:420px;" />
|
||||
</div>
|
||||
<el-form :model="form" :rules="rules" ref="ruleForm" label-width="120px" class="ruleForm">
|
||||
<el-form-item :label="$t('trials:studyList:message:message2')" prop="extractionCode">
|
||||
<el-input :maxLength="4" v-model="form.extractionCode" style="width:100px;" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:studyList:message:message6')" prop="ImageShareExpireDays">
|
||||
<el-select v-model="form.ImageShareExpireDays" placeholder="" style="width:100px;">
|
||||
<el-option v-for="item in options" :key="item" :label="item" :value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div>
|
||||
<el-button type="primary" round @click="copyCode">{{ $t('trials:studyList:message:message4') }}</el-button>
|
||||
<el-button type="primary" round @click="updateImageShare">{{ $t('trials:studyList:message:message5')
|
||||
}}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</base-model>
|
||||
</template>
|
||||
</BaseContainer>
|
||||
</template>
|
||||
|
@ -341,10 +224,12 @@ import { getToken } from '@/utils/auth'
|
|||
import { getTrialCriterionList } from '@/api/trials/reading'
|
||||
import { showReadReport, showTumorReport } from '@/api/export'
|
||||
import { downLoadFile } from '@/utils/stream.js'
|
||||
import { createImageShare, updateImageShare } from '@/api/share'
|
||||
import {
|
||||
getDownloadSubjectVisitStudyInfo,
|
||||
downloadImageSuccess,
|
||||
} from '@/api/trials.js'
|
||||
import BaseModel from '@/components/BaseModel'
|
||||
const defaultSearchData = () => {
|
||||
return {
|
||||
SubjectCode: null,
|
||||
|
@ -370,7 +255,7 @@ const defaultSearchData = () => {
|
|||
}
|
||||
export default {
|
||||
name: 'readManagenent',
|
||||
components: { BaseContainer, Pagination, exportList },
|
||||
components: { BaseContainer, Pagination, exportList, BaseModel },
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
|
@ -388,14 +273,95 @@ export default {
|
|||
// 下载相关
|
||||
downloading: false,
|
||||
downloadId: null,
|
||||
exportVisible: false
|
||||
exportVisible: false,
|
||||
|
||||
// 分享
|
||||
share_model: { visible: false, title: this.$t('trials:studyList:message:message8'), showClose: true, width: '500px' },
|
||||
form: {
|
||||
extractionCode: null,
|
||||
ImageShareExpireDays: null,
|
||||
},
|
||||
rules: {
|
||||
extractionCode: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur,change' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value) {
|
||||
if (value.length !== 4) {
|
||||
callback(new Error(this.$t('trials:studyList:message:length4')));
|
||||
}
|
||||
if (!(/^[a-z0-9]+$/.test(value))) {
|
||||
callback(new Error(this.$t('trials:studyList:message:testError')));
|
||||
}
|
||||
callback();
|
||||
}
|
||||
callback();
|
||||
}
|
||||
}
|
||||
],
|
||||
ImageShareExpireDays: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur,change' },
|
||||
]
|
||||
},
|
||||
shareId: null,
|
||||
shareLink: null,
|
||||
options: [1, 7, 15, 30],
|
||||
OpenImageShare: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.getTrialConfirmedCreiterionList()
|
||||
if (localStorage.getItem('CompanyInfo')) {
|
||||
this.OpenImageShare = JSON.parse(localStorage.getItem('CompanyInfo')).OpenImageShare
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async updateImageShare() {
|
||||
try {
|
||||
let validate = await this.$refs.ruleForm.validate()
|
||||
if (!validate) return false
|
||||
const params = {
|
||||
ImageShareExpireDays: this.form.ImageShareExpireDays,
|
||||
Password: this.form.extractionCode,
|
||||
Id: this.shareId
|
||||
}
|
||||
let res = await updateImageShare(params)
|
||||
if (res.IsSuccess) {
|
||||
this.$message.success(this.$t('common:message:updatedSuccessfully'))
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
handleShareImage(row) {
|
||||
this.shareLink = ''
|
||||
this.extractionCode = ''
|
||||
const params = {
|
||||
VisitTaskId: row.Id,
|
||||
RouteUrl: `/readingDicoms?TrialReadingCriterionId=${row.TrialReadingCriterionId}&trialId=${this.$route.query.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&visitTaskId=${row.Id}&isReadingTaskViewInOrder=${row.IsReadingTaskViewInOrder}&criterionType=${row.CriterionType}&readingTool=${row.ReadingTool}`
|
||||
}
|
||||
this.loading = true
|
||||
createImageShare(params).then((res) => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
// this.shareLink = `${window.location.origin}${window.location.pathname}#/imagesShare?id=${res.Result.ResourceId}`
|
||||
this.shareLink = `${window.location.origin}/imagesShare?id=${res.Result.ResourceId}`
|
||||
this.shareId = res.Result.ResourceId
|
||||
this.form.extractionCode = res.Result.Password
|
||||
this.form.ImageShareExpireDays = res.Result.ImageShareExpireDays
|
||||
this.share_model.visible = true
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 复制
|
||||
copyCode() {
|
||||
this.$copyText(`${this.$t('trials:researchRecord:label:link')} ${this.shareLink} ${this.$t('trials:studyList:message:message2')}${this.form.extractionCode}`).then(
|
||||
res => {
|
||||
this.$message.success(this.$t('trials:researchRecord:message:copySuccessfully'))
|
||||
}
|
||||
).catch(() => { this.$message.error(this.$t('trials:researchRecord:message:copyFailed')) })
|
||||
},
|
||||
// 下拉菜单操作
|
||||
handleCommand(command, item, key) {
|
||||
this[command](item, key)
|
||||
|
@ -418,9 +384,9 @@ export default {
|
|||
this.reportFlag[item.Id] = true
|
||||
}
|
||||
let res = null;
|
||||
if(key === 'evaluate'){
|
||||
if (key === 'evaluate') {
|
||||
res = await showReadReport(data);
|
||||
}else{
|
||||
} else {
|
||||
res = await showTumorReport(data);
|
||||
}
|
||||
if (res.IsSuccess) {
|
||||
|
@ -569,11 +535,9 @@ export default {
|
|||
series.InstanceList.forEach((instance) => {
|
||||
let fileName = instance.Path.split('/').pop()
|
||||
let obj = {
|
||||
name: `${data.SubjectCode}_${data.VisitName}/${
|
||||
study.StudyCode
|
||||
}_${study.StudyTime.split(' ')[0]}_${
|
||||
series.Modality
|
||||
}/${fileName}`,
|
||||
name: `${data.SubjectCode}_${data.VisitName}/${study.StudyCode
|
||||
}_${study.StudyTime.split(' ')[0]}_${series.Modality
|
||||
}/${fileName}`,
|
||||
url: this.OSSclientConfig.basePath + instance.Path,
|
||||
}
|
||||
files.push(obj)
|
||||
|
@ -605,15 +569,11 @@ export default {
|
|||
var token = getToken()
|
||||
var path
|
||||
// if (row.ReadingTool === 0) {
|
||||
path = `/readingDicoms?TrialReadingCriterionId=${
|
||||
row.TrialReadingCriterionId
|
||||
}&trialId=${this.$route.query.trialId}&subjectCode=${
|
||||
row.SubjectCode
|
||||
}&subjectId=${row.SubjectId}&visitTaskId=${
|
||||
row.Id
|
||||
}&isReadingTaskViewInOrder=${true}&criterionType=${
|
||||
row.CriterionType
|
||||
}&readingTool=${row.ReadingTool}&TokenKey=${token}`
|
||||
path = `/readingDicoms?TrialReadingCriterionId=${row.TrialReadingCriterionId
|
||||
}&trialId=${this.$route.query.trialId}&subjectCode=${row.SubjectCode
|
||||
}&subjectId=${row.SubjectId}&visitTaskId=${row.Id
|
||||
}&isReadingTaskViewInOrder=${true}&criterionType=${row.CriterionType
|
||||
}&readingTool=${row.ReadingTool}&TokenKey=${token}`
|
||||
// } else {
|
||||
// path = `/noneDicomReading?TrialReadingCriterionId=${row.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&visitTaskId=${row.Id}&isReadingTaskViewInOrder=${row.IsReadingTaskViewInOrder}&criterionType=${row.CriterionType}&readingTool=${row.ReadingTool}&TokenKey=${token}`;
|
||||
// }
|
||||
|
|
Loading…
Reference in New Issue