阅片分屏显示
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
01cd9cf334
commit
cd224161bb
|
@ -0,0 +1,78 @@
|
|||
async function queryWindowManagement() {
|
||||
return await navigator.permissions.query({ name: 'window-management' });;
|
||||
}
|
||||
async function getPermission() {
|
||||
const permission = await queryWindowManagement();
|
||||
if (permission.state === "granted") { // 已经授权
|
||||
return true
|
||||
} else if (permission.state === "prompt") { // 询问是否授权
|
||||
// 请求授权
|
||||
navigator.permissions.request({ name: 'window-management' })
|
||||
return false
|
||||
} else if (permission.state === "denied") {
|
||||
// 权限被拒绝
|
||||
return false
|
||||
}
|
||||
}
|
||||
function getScreen() {
|
||||
return new Promise((resolve, reject) => {
|
||||
let multiScreen = []
|
||||
if (window.getScreenDetails) {
|
||||
let getScreensProsime1 = window.getScreenDetails();
|
||||
getScreensProsime1.then((c) => {
|
||||
if (c instanceof Array) {
|
||||
multiScreen = c
|
||||
} else if (c instanceof Object) {
|
||||
multiScreen = c.screens
|
||||
} else {
|
||||
multiScreen = []
|
||||
}
|
||||
resolve(multiScreen)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
});
|
||||
} else if (window.getScreens) {
|
||||
let getScreensProsime = window.getScreens();
|
||||
getScreensProsime.then((c) => {
|
||||
if (c instanceof Array) {
|
||||
multiScreen = c
|
||||
} else if (c instanceof Object) {
|
||||
multiScreen = c.screens
|
||||
} else {
|
||||
multiScreen = []
|
||||
}
|
||||
resolve(multiScreen)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
export async function openWindow(url, name) {
|
||||
// 判断浏览器是否兼容
|
||||
// 高版本的谷歌,edge不支持跨屏,需要降低浏览器版本86.0版
|
||||
if (!window.getScreens && !window.getScreenDetails) {
|
||||
console.log('你的浏览器版本不支持多屏展示功能!');
|
||||
return window.open(url, name);
|
||||
}
|
||||
let permission = await getPermission()
|
||||
if (!permission) {
|
||||
alert('使用多屏功能请先进行授权')
|
||||
return false
|
||||
}
|
||||
let multiScreen = await getScreen()
|
||||
// 判断是否2个屏幕
|
||||
if (multiScreen.length < 2) {
|
||||
console.log('请接入多个显示屏!');
|
||||
return window.open(url, name);
|
||||
}
|
||||
// 获取当前屏幕availLeft信息和所有信息比对,取另一个屏幕数据
|
||||
let currentAvailLeft = screen.availLeft ? screen.availLeft : '0'
|
||||
let newCurr = multiScreen.find((t) => t.availLeft !== currentAvailLeft)
|
||||
let fulls = ''
|
||||
for (let key in newCurr) {
|
||||
fulls += `${key}=${(newCurr[key] || newCurr[key] === 0) ? newCurr[key] : 0},`
|
||||
}
|
||||
return window.open(url, name, fulls);
|
||||
}
|
|
@ -220,6 +220,7 @@ import { changeURLStatic } from '@/utils/history.js'
|
|||
import AdditionalAssessment from './AdditionalAssessment'
|
||||
import { showReadReport, showTumorReport } from "@/api/export";
|
||||
import PreviewFileDialog from "@/components/PreviewFileDialog/PreviewFileDialog";
|
||||
import { openWindow } from "@/utils/splitScreen";
|
||||
export default {
|
||||
name: 'ReportPage',
|
||||
components: { SignForm, AdditionalAssessment, PreviewFileDialog },
|
||||
|
@ -701,7 +702,7 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
previewDicoms(task) {
|
||||
async previewDicoms(task) {
|
||||
if (this.openWindow) {
|
||||
this.openWindow.close()
|
||||
}
|
||||
|
@ -716,7 +717,10 @@ export default {
|
|||
var readingTool = this.$router.currentRoute.query.readingTool
|
||||
var path = `/readingDicoms?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&subjectCode=${subjectCode}&subjectId=${subjectId}&visitTaskId=${task.VisitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}`
|
||||
const routeData = this.$router.resolve({ path })
|
||||
this.openWindow = window.open(routeData.href, '_blank')
|
||||
this.openWindow = await openWindow(routeData.href)
|
||||
// if (this.openWindow) {
|
||||
// this.$setOpenWindow(this.openWindow);
|
||||
// }
|
||||
},
|
||||
handleSave(isPrompt) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
|
|
|
@ -4,63 +4,36 @@
|
|||
<div slot="header" class="clearfix report-header">
|
||||
<h3 style="margin:0;padding:0;">{{ $t('trials:readingReport:title:eicrf') }}</h3>
|
||||
<div style="margin-left:auto">
|
||||
<el-switch
|
||||
v-model="isShowDetail"
|
||||
:active-text="$t('trials:readingReport:title:expandDetails')"
|
||||
:inactive-text="$t('trials:readingReport:title:collapseDetails')"
|
||||
style="margin-right:5px"
|
||||
@change="handleShowDetail"
|
||||
/>
|
||||
<el-button
|
||||
v-if="readingTaskState<2"
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="skipTask"
|
||||
>
|
||||
<el-switch v-model="isShowDetail" :active-text="$t('trials:readingReport:title:expandDetails')"
|
||||
:inactive-text="$t('trials:readingReport:title:collapseDetails')" style="margin-right:5px"
|
||||
@change="handleShowDetail" />
|
||||
<el-button v-if="readingTaskState < 2" type="primary" size="small" @click="skipTask">
|
||||
<!-- 跳过 -->
|
||||
{{ $t('trials:readingReport:button:skip') }}
|
||||
</el-button>
|
||||
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="getReportInfo">{{$t('trials:readingReport:button:refresh')}}</el-button>
|
||||
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="handleSave(true)">{{$t('common:button:save')}}</el-button>
|
||||
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="handleConfirm">{{$t('common:button:submit')}}</el-button>
|
||||
<el-button v-if="readingTaskState < 2" type="primary" size="small" @click="getReportInfo">{{
|
||||
$t('trials:readingReport:button:refresh') }}</el-button>
|
||||
<el-button v-if="readingTaskState < 2" type="primary" size="small" @click="handleSave(true)">{{
|
||||
$t('common:button:save') }}</el-button>
|
||||
<el-button v-if="readingTaskState < 2" type="primary" size="small" @click="handleConfirm">{{
|
||||
$t('common:button:submit') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<el-table
|
||||
ref="reportList"
|
||||
v-adaptive="{bottomOffset:0}"
|
||||
:data="taskQuestions"
|
||||
v-if="taskQuestions.length > 0"
|
||||
row-key="Id"
|
||||
border
|
||||
default-expand-all
|
||||
height="100"
|
||||
:tree-props="{children: 'Childrens', hasChildren: 'hasChildren'}"
|
||||
size="mini"
|
||||
>
|
||||
<el-table-column
|
||||
prop=""
|
||||
label=""
|
||||
show-overflow-tooltip
|
||||
width="350px"
|
||||
>
|
||||
<el-table ref="reportList" v-adaptive="{ bottomOffset: 0 }" :data="taskQuestions"
|
||||
v-if="taskQuestions.length > 0" row-key="Id" border default-expand-all height="100"
|
||||
:tree-props="{ children: 'Childrens', hasChildren: 'hasChildren' }" size="mini">
|
||||
<el-table-column prop="" label="" show-overflow-tooltip width="350px">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.QuestionName">{{ scope.row.BlindName ? scope.row.QuestionName : scope.row.QuestionName }}</span>
|
||||
<span
|
||||
v-else
|
||||
style="font-weight: bold;font-size: 16px;color: #f44336;"
|
||||
>
|
||||
<span v-if="scope.row.QuestionName">{{ scope.row.BlindName ? scope.row.QuestionName :
|
||||
scope.row.QuestionName }}</span>
|
||||
<span v-else style="font-weight: bold;font-size: 16px;color: #f44336;">
|
||||
{{ scope.row.GroupName }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-for="task in visitTaskList"
|
||||
:key="task.VisitTaskId"
|
||||
prop="date"
|
||||
show-overflow-tooltip
|
||||
width="200px"
|
||||
>
|
||||
<el-table-column v-for="task in visitTaskList" :key="task.VisitTaskId" prop="date" show-overflow-tooltip
|
||||
width="200px">
|
||||
<template slot="header">
|
||||
<div v-if="task.IsCurrentTask">
|
||||
{{ task.BlindName }}
|
||||
|
@ -72,181 +45,179 @@
|
|||
<span class="el-icon-view"></span>
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- <div v-if="task.LatestScanDate">-->
|
||||
<!-- {{ task.LatestScanDate.split(' ')[0] }}-->
|
||||
<!-- </div>-->
|
||||
<!-- <div v-if="task.LatestScanDate">-->
|
||||
<!-- {{ task.LatestScanDate.split(' ')[0] }}-->
|
||||
<!-- </div>-->
|
||||
<!-- {{ `(影像点击跳转)` }} -->
|
||||
<!-- {{ $t('trials:readingReport:button:jump') }}-->
|
||||
</div>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<template v-if="readingTaskState<2 && task.VisitTaskId === visitTaskId && (scope.row.Type==='input' || scope.row.Type==='number' || scope.row.Type==='select' || scope.row.Type==='textarea' || scope.row.Type==='radio' || scope.row.Type === 'class')">
|
||||
<template
|
||||
v-if="readingTaskState < 2 && task.VisitTaskId === visitTaskId && (scope.row.Type === 'input' || scope.row.Type === 'number' || scope.row.Type === 'select' || scope.row.Type === 'textarea' || scope.row.Type === 'radio' || scope.row.Type === 'class')">
|
||||
<template>
|
||||
<!-- 输入框 -->
|
||||
<div>
|
||||
<template v-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)">
|
||||
<template
|
||||
v-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)">
|
||||
</template>
|
||||
<el-input
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='input' || scope.row.Type==='textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type === 'input' || scope.row.Type === 'textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||
size="mini"
|
||||
/>
|
||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='input' || scope.row.Type==='textarea')">
|
||||
{{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
|
||||
size="mini" />
|
||||
<span
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type === 'input' || scope.row.Type === 'textarea')">
|
||||
{{ questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] }}
|
||||
</span>
|
||||
<el-input
|
||||
v-else-if="(scope.row.Type==='input' || scope.row.Type==='textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId]"
|
||||
size="mini"
|
||||
/>
|
||||
<span v-else-if="scope.row.Type==='input' || scope.row.Type==='textarea'">
|
||||
{{questionForm[scope.row.QuestionId]}}
|
||||
v-else-if="(scope.row.Type === 'input' || scope.row.Type === 'textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId]" size="mini" />
|
||||
<span v-else-if="scope.row.Type === 'input' || scope.row.Type === 'textarea'">
|
||||
{{ questionForm[scope.row.QuestionId] }}
|
||||
</span>
|
||||
<el-select
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='select' || scope.row.Type==='radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type === 'select' || scope.row.Type === 'radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||
size="mini"
|
||||
clearable
|
||||
>
|
||||
size="mini" clearable>
|
||||
<template>
|
||||
<el-option
|
||||
v-for="val in scope.row.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val.trim()"
|
||||
:value="val.trim()"
|
||||
/>
|
||||
<el-option v-for="val in scope.row.TypeValue.split('|')" :key="val" :label="val.trim()"
|
||||
:value="val.trim()" />
|
||||
</template>
|
||||
</el-select>
|
||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='select' || scope.row.Type==='radio'">
|
||||
{{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
|
||||
<span
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type === 'select' || scope.row.Type === 'radio'">
|
||||
{{ questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] }}
|
||||
</span>
|
||||
<el-select
|
||||
v-else-if="(scope.row.Type==='select' || scope.row.Type==='radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId]"
|
||||
size="mini"
|
||||
clearable
|
||||
>
|
||||
v-else-if="(scope.row.Type === 'select' || scope.row.Type === 'radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId]" size="mini" clearable>
|
||||
<template>
|
||||
<el-option
|
||||
v-for="val in scope.row.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val.trim()"
|
||||
:value="val.trim()"
|
||||
/>
|
||||
<el-option v-for="val in scope.row.TypeValue.split('|')" :key="val" :label="val.trim()"
|
||||
:value="val.trim()" />
|
||||
</template>
|
||||
</el-select>
|
||||
<span v-else-if="scope.row.Type==='select' || scope.row.Type==='radio'">
|
||||
{{questionForm[scope.row.QuestionId]}}
|
||||
<span v-else-if="scope.row.Type === 'select' || scope.row.Type === 'radio'">
|
||||
{{ questionForm[scope.row.QuestionId] }}
|
||||
</span>
|
||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='class'">
|
||||
{{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
|
||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type === 'class'">
|
||||
{{ questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] }}
|
||||
</span>
|
||||
<span v-else-if="scope.row.Type==='class'">
|
||||
{{questionForm[scope.row.QuestionId]}}
|
||||
<span v-else-if="scope.row.Type === 'class'">
|
||||
{{ questionForm[scope.row.QuestionId] }}
|
||||
</span>
|
||||
<el-input
|
||||
v-else-if="scope.row.DataSource !== 1 && questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='number' && (scope.row.xfIndex || scope.row.xfIndex === 0) && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-else-if="scope.row.DataSource !== 1 && questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type === 'number' && (scope.row.xfIndex || scope.row.xfIndex === 0) && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||
:disabled="scope.row.DataSource === 1"
|
||||
onblur="value=parseFloat(value).toFixed(parseInt(localStorage.getItem('digitPlaces')))"
|
||||
@input="limitInput($event, questionForm[scope.row.QuestionId][scope.row.xfIndex], scope.row.TableQuestionId)"
|
||||
size="mini"
|
||||
@focus="() => {questionId = scope.row.QuestionId}"
|
||||
>
|
||||
<template slot="append" v-if="scope.row.Unit !== 0">{{scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}}</template>
|
||||
size="mini" @focus="() => { questionId = scope.row.QuestionId }">
|
||||
<template slot="append" v-if="scope.row.Unit !== 0">{{ scope.row.Unit !== 4 ? $fd('ValueUnit',
|
||||
scope.row.Unit) : scope.row.CustomUnit }}</template>
|
||||
<template slot="append" v-else-if="scope.row.ValueType === 2">%</template>
|
||||
</el-input>
|
||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='number' && (scope.row.xfIndex || scope.row.xfIndex === 0)">
|
||||
<span
|
||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type === 'number' && (scope.row.xfIndex || scope.row.xfIndex === 0)">
|
||||
<template v-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]))? questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]:`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||
{{
|
||||
isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]))
|
||||
?
|
||||
questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] :
|
||||
`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}
|
||||
${scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||
</template>
|
||||
<template v-else-if="scope.row.ValueType === 2">
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId])) ? questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]:`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]} %` }}
|
||||
{{
|
||||
isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]))
|
||||
?
|
||||
questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] :
|
||||
`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}
|
||||
%` }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId])) ? questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]:`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}` }}
|
||||
{{
|
||||
isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]))
|
||||
?
|
||||
questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] :
|
||||
`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}`
|
||||
}}
|
||||
</template>
|
||||
</span>
|
||||
<el-input
|
||||
v-else-if="scope.row.DataSource !== 1 && scope.row.Type==='number' && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId]"
|
||||
:disabled="scope.row.DataSource === 1"
|
||||
v-else-if="scope.row.DataSource !== 1 && scope.row.Type === 'number' && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||
v-model="questionForm[scope.row.QuestionId]" :disabled="scope.row.DataSource === 1"
|
||||
onblur="value=parseFloat(value).toFixed(parseInt(localStorage.getItem('digitPlaces')))"
|
||||
@input="limitInput($event, questionForm, scope.row.QuestionId)"
|
||||
size="mini"
|
||||
@focus="() => {questionId = scope.row.QuestionId}"
|
||||
>
|
||||
<template slot="append" v-if="scope.row.Unit !== 0">{{scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}}</template>
|
||||
@input="limitInput($event, questionForm, scope.row.QuestionId)" size="mini"
|
||||
@focus="() => { questionId = scope.row.QuestionId }">
|
||||
<template slot="append" v-if="scope.row.Unit !== 0">{{ scope.row.Unit !== 4 ? $fd('ValueUnit',
|
||||
scope.row.Unit) : scope.row.CustomUnit }}</template>
|
||||
<template slot="append" v-else-if="scope.row.ValueType === 2">%</template>
|
||||
</el-input>
|
||||
<span v-else-if="scope.row.Type==='number'">
|
||||
<span v-else-if="scope.row.Type === 'number'">
|
||||
<template v-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId]))? questionForm[scope.row.QuestionId]:`${questionForm[scope.row.QuestionId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ?
|
||||
questionForm[scope.row.QuestionId] : `${questionForm[scope.row.QuestionId]} ${scope.row.Unit !==
|
||||
4
|
||||
? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||
</template>
|
||||
<template v-else-if="scope.row.ValueType === 2">
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId]:`${questionForm[scope.row.QuestionId]} %` }}
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ?
|
||||
questionForm[scope.row.QuestionId] : `${questionForm[scope.row.QuestionId]} %` }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId] : questionForm[scope.row.QuestionId]}}
|
||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId] :
|
||||
questionForm[scope.row.QuestionId] }}
|
||||
</template>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else-if="task.VisitTaskId === visitTaskId && scope.row.Type === 'upload'">
|
||||
<CustomizeReportPageUpload
|
||||
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
||||
:visitTaskId="visitTaskId"
|
||||
:question="scope.row"
|
||||
:task="task"
|
||||
:readingTaskState="readingTaskState"
|
||||
:initUrl="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId)}"
|
||||
></CustomizeReportPageUpload>
|
||||
<CustomizeReportPageUpload
|
||||
v-else-if="scope.row.Type==='upload'"
|
||||
:visitTaskId="visitTaskId"
|
||||
:question="scope.row"
|
||||
:task="task"
|
||||
:readingTaskState="readingTaskState"
|
||||
:initUrl="questionForm[scope.row.QuestionId]"
|
||||
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url)}"
|
||||
></CustomizeReportPageUpload>
|
||||
<CustomizeReportPageUpload
|
||||
v-if="scope.row.Type === 'upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
||||
:visitTaskId="visitTaskId" :question="scope.row" :task="task" :readingTaskState="readingTaskState"
|
||||
:initUrl="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||
@setImageUrl="(url) => { setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId) }">
|
||||
</CustomizeReportPageUpload>
|
||||
<CustomizeReportPageUpload v-else-if="scope.row.Type === 'upload'" :visitTaskId="visitTaskId"
|
||||
:question="scope.row" :task="task" :readingTaskState="readingTaskState"
|
||||
:initUrl="questionForm[scope.row.QuestionId]"
|
||||
@setImageUrl="(url) => { setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url) }">
|
||||
</CustomizeReportPageUpload>
|
||||
</template>
|
||||
<template v-else-if="scope.row.Type === 'upload'">
|
||||
<CustomizeReportPageUpload
|
||||
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
||||
:visitTaskId="visitTaskId"
|
||||
:question="scope.row"
|
||||
:task="task"
|
||||
:readingTaskState="readingTaskState"
|
||||
:initUrl="scope.row.Answers[task.VisitTaskId]"
|
||||
></CustomizeReportPageUpload>
|
||||
<CustomizeReportPageUpload
|
||||
v-else-if="scope.row.Type==='upload'"
|
||||
:visitTaskId="visitTaskId"
|
||||
:question="scope.row"
|
||||
:task="task"
|
||||
:readingTaskState="readingTaskState"
|
||||
:initUrl="scope.row.Answers[task.VisitTaskId]"
|
||||
></CustomizeReportPageUpload>
|
||||
v-if="scope.row.Type === 'upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
||||
:visitTaskId="visitTaskId" :question="scope.row" :task="task" :readingTaskState="readingTaskState"
|
||||
:initUrl="scope.row.Answers[task.VisitTaskId]"></CustomizeReportPageUpload>
|
||||
<CustomizeReportPageUpload v-else-if="scope.row.Type === 'upload'" :visitTaskId="visitTaskId"
|
||||
:question="scope.row" :task="task" :readingTaskState="readingTaskState"
|
||||
:initUrl="scope.row.Answers[task.VisitTaskId]"></CustomizeReportPageUpload>
|
||||
</template>
|
||||
<template v-else-if="scope.row.QuestionType=== 22">
|
||||
<template v-else-if="scope.row.QuestionType === 22">
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }}
|
||||
</template>
|
||||
<template v-else-if="scope.row.DictionaryCode">
|
||||
{{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
|
||||
</template>
|
||||
<template v-else-if="CriterionType === 10">
|
||||
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]}` }}
|
||||
{{
|
||||
isNaN(parseInt(scope.row.Answers[task.VisitTaskId])) ? scope.row.Answers[task.VisitTaskId] :
|
||||
`${scope.row.Answers[task.VisitTaskId]}`
|
||||
}}
|
||||
</template>
|
||||
<template v-else-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)">
|
||||
<template
|
||||
v-else-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)">
|
||||
</template>
|
||||
<template v-else-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
||||
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||
{{
|
||||
isNaN(parseInt(scope.row.Answers[task.VisitTaskId])) ? scope.row.Answers[task.VisitTaskId] :
|
||||
`${scope.row.Answers[task.VisitTaskId]}
|
||||
${scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||
</template>
|
||||
<template v-else-if="scope.row.ValueType === 2">
|
||||
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId])) ? scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} %` }}
|
||||
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId])) ?
|
||||
scope.row.Answers[task.VisitTaskId] : `${scope.row.Answers[task.VisitTaskId]} %` }}
|
||||
</template>
|
||||
<template v-else-if="scope.row.Answers && scope.row.Answers.hasOwnProperty(task.VisitTaskId)">
|
||||
{{ scope.row.Answers[task.VisitTaskId] }}
|
||||
|
@ -258,16 +229,11 @@
|
|||
</el-card>
|
||||
|
||||
<!-- 签名框 -->
|
||||
<el-dialog
|
||||
v-if="signVisible"
|
||||
:visible.sync="signVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="600px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<el-dialog v-if="signVisible" :visible.sync="signVisible" :close-on-click-modal="false" width="600px"
|
||||
custom-class="base-dialog-wrapper">
|
||||
<div slot="title">
|
||||
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
|
||||
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
|
||||
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${currentUser})` }}</span>
|
||||
</div>
|
||||
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
|
||||
</el-dialog>
|
||||
|
@ -282,6 +248,7 @@ import const_ from '@/const/sign-code'
|
|||
import SignForm from '@/views/trials/components/newSignForm'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import store from '@/store'
|
||||
import { openWindow } from "@/utils/splitScreen";
|
||||
export default {
|
||||
name: 'CustomizeReportPage',
|
||||
components: { SignForm, CustomizeReportPageUpload },
|
||||
|
@ -314,7 +281,8 @@ export default {
|
|||
TrialReadingCriterionId: null,
|
||||
tableAnswers: {},
|
||||
questionForm: {},
|
||||
questionId: null
|
||||
questionId: null,
|
||||
openWindow: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -378,7 +346,7 @@ export default {
|
|||
list.forEach(v => {
|
||||
if (v.QuestionId === questionId) {
|
||||
return Object.assign({}, v.Answers)
|
||||
} else if (v.Childrens.length > 0){
|
||||
} else if (v.Childrens.length > 0) {
|
||||
return this.getTagterAnswers(v.Childrens, questionId)
|
||||
}
|
||||
})
|
||||
|
@ -451,7 +419,7 @@ export default {
|
|||
},
|
||||
setChild(obj) {
|
||||
obj.forEach((i, index) => {
|
||||
if (i.Type !== 'group' && i.Type !== 'summary' && i.Id && i.Type !== 'table' && i.Type !== 'basicTable') {
|
||||
if (i.Type !== 'group' && i.Type !== 'summary' && i.Id && i.Type !== 'table' && i.Type !== 'basicTable') {
|
||||
this.$set(this.questionForm, i.QuestionId, i.Answers[this.visitTaskId])
|
||||
}
|
||||
if (i.Type === 'table' || i.Type === 'basicTable') {
|
||||
|
@ -461,7 +429,7 @@ export default {
|
|||
if (i.Type === 'number') {
|
||||
this.$set(this.questionForm, i.QuestionId, i.Answers[this.visitTaskId] === '' ? parseFloat(0).toFixed(this.digitPlaces) : i.Answers[this.visitTaskId])
|
||||
}
|
||||
if (i.Childrens && i.Childrens.length > 0 && i.Type !== 'table' && i.Type !== 'basicTable') {
|
||||
if (i.Childrens && i.Childrens.length > 0 && i.Type !== 'table' && i.Type !== 'basicTable') {
|
||||
this.setChild(i.Childrens)
|
||||
}
|
||||
})
|
||||
|
@ -585,12 +553,12 @@ export default {
|
|||
setScrollTop(a) {
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
if(this.$refs.reportList){
|
||||
if (this.$refs.reportList) {
|
||||
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
|
||||
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
|
||||
}
|
||||
})
|
||||
},50)
|
||||
}, 50)
|
||||
},
|
||||
getQuestions(questions, isNTFilterLength, lesionType, isLymphNodes) {
|
||||
const arr = []
|
||||
|
@ -789,7 +757,10 @@ export default {
|
|||
}
|
||||
})
|
||||
},
|
||||
previewDicoms(task) {
|
||||
async previewDicoms(task) {
|
||||
if (this.openWindow) {
|
||||
this.openWindow.close()
|
||||
}
|
||||
var token = getToken()
|
||||
// var subjectCode = this.$router.currentRoute.query.subjectCode
|
||||
var subjectCode = localStorage.getItem('subjectCode')
|
||||
|
@ -801,7 +772,7 @@ export default {
|
|||
var trialReadingCriterionId = this.$router.currentRoute.query.TrialReadingCriterionId
|
||||
var path = `/readingDicoms?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&subjectCode=${subjectCode}&subjectId=${subjectId}&visitTaskId=${task.VisitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}`
|
||||
const routeData = this.$router.resolve({ path })
|
||||
window.open(routeData.href, '_blank')
|
||||
this.openWindow = await openWindow(routeData.href)
|
||||
},
|
||||
handleSave(isPrompt) {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
@ -817,7 +788,7 @@ export default {
|
|||
questionId: k,
|
||||
answer: v[o],
|
||||
tableQuestionId: o,
|
||||
rowId: v[o+'_RowId']
|
||||
rowId: v[o + '_RowId']
|
||||
})
|
||||
}
|
||||
})
|
||||
|
@ -871,27 +842,32 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.report-wrapper{
|
||||
.report-wrapper {
|
||||
|
||||
height: 100%;
|
||||
// background-color: #fff;
|
||||
background-color: #000;
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
background: #d0d0d0;
|
||||
}
|
||||
.report-header{
|
||||
|
||||
.report-header {
|
||||
display: flex;
|
||||
}
|
||||
.el-card{
|
||||
|
||||
.el-card {
|
||||
background-color: #000;
|
||||
color: #ffffff;
|
||||
border:none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
// /deep/ .el-table__cell{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
|
@ -905,51 +881,62 @@ export default {
|
|||
// color: #ffffff;
|
||||
// }
|
||||
|
||||
/deep/ .el-table, .el-table__expanded-cell {
|
||||
/deep/ .el-table,
|
||||
.el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
border-color: #444444;
|
||||
}
|
||||
|
||||
/deep/ .el-table th, .el-table tr {
|
||||
/deep/ .el-table th,
|
||||
.el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td{
|
||||
background-color:#000 !important;
|
||||
|
||||
/deep/ .el-table__body tr>td {
|
||||
background-color: #000 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr:hover > td{
|
||||
background-color:#858282 !important;
|
||||
|
||||
/deep/ .el-table__body tr:hover>td {
|
||||
background-color: #858282 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table--border th.gutter:last-of-type{
|
||||
|
||||
/deep/ .el-table--border th.gutter:last-of-type {
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-card__header{
|
||||
|
||||
/deep/ .el-card__header {
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
/deep/ .el-upload-list--picture-card .el-upload-list__item{
|
||||
|
||||
/deep/ .el-upload-list--picture-card .el-upload-list__item {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
/deep/ .el-upload--picture-card{
|
||||
|
||||
/deep/ .el-upload--picture-card {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
/deep/ .el-switch__label{
|
||||
color:#fff;
|
||||
|
||||
/deep/ .el-switch__label {
|
||||
color: #fff;
|
||||
}
|
||||
/deep/ .el-switch__label.is-active{
|
||||
|
||||
/deep/ .el-switch__label.is-active {
|
||||
color: #428bca;
|
||||
}
|
||||
.uploadWrapper{
|
||||
|
||||
.uploadWrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
|
|
|
@ -4,27 +4,15 @@
|
|||
<el-form :inline="true">
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
|
||||
<el-input
|
||||
v-model="searchData.SubjectCode"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.SubjectCode" style="width: 150px" clearable />
|
||||
</el-form-item>
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input
|
||||
v-model="searchData.PatientIdStr"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.PatientIdStr" style="width: 150px" clearable />
|
||||
</el-form-item>
|
||||
<!-- 患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input
|
||||
v-model="searchData.SubjectName"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.SubjectName" style="width: 150px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
|
@ -32,45 +20,23 @@
|
|||
{{ $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>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div slot="main-container">
|
||||
<el-table
|
||||
v-adaptive="{ bottomOffset: 75 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortChange"
|
||||
>
|
||||
<el-table v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100" @sort-change="handleSortChange">
|
||||
<el-table-column type="index" width="40" align="left" />
|
||||
<!-- 受试者编号 -->
|
||||
<el-table-column
|
||||
prop="SubjectCode"
|
||||
min-width="100"
|
||||
:label="$t('trials:reviewTrack:table:subjectCode')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SubjectCode" min-width="100" :label="$t('trials:reviewTrack:table:subjectCode')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 患者编号 -->
|
||||
<el-table-column
|
||||
prop="PatientIdStr"
|
||||
min-width="100"
|
||||
:label="$t('trials:uploadDicomList:table:pId')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="PatientIdStr" min-width="100" :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
|
||||
|
@ -80,31 +46,15 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!-- 患者姓名 -->
|
||||
<el-table-column
|
||||
prop="SubjectName"
|
||||
min-width="100"
|
||||
:label="$t('trials:uploadDicomList:table:patientName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SubjectName" min-width="100" :label="$t('trials:uploadDicomList:table:patientName')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 剩余阅片量 -->
|
||||
<el-table-column
|
||||
prop="UnReadCanReadTaskCount"
|
||||
min-width="100"
|
||||
:label="$t('trials:pendingReadingTasks:table:remainingReadingVolume')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="UnReadCanReadTaskCount" min-width="100"
|
||||
:label="$t('trials:pendingReadingTasks:table:remainingReadingVolume')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 建议完成时间 -->
|
||||
<el-table-column
|
||||
prop="SuggesteFinishedTime"
|
||||
min-width="100"
|
||||
:label="
|
||||
$t('trials:pendingReadingTasks:table:suggestedCompletionTime')
|
||||
"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="SuggesteFinishedTime" min-width="100" :label="$t('trials:pendingReadingTasks:table:suggestedCompletionTime')
|
||||
" show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.SuggesteFinishedTime
|
||||
|
@ -114,48 +64,25 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!--操作-->
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
width="250"
|
||||
fixed="right"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" width="250" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<!-- 阅片 -->
|
||||
<el-button
|
||||
:disabled="
|
||||
scope.row.ExistReadingApply ||
|
||||
(scope.row.ClaimUserId && scope.row.ClaimUserId !== userId)
|
||||
"
|
||||
circle
|
||||
:title="
|
||||
scope.row.ExistReadingApply
|
||||
? $t('trials:pendingReadingTasks:button:ExistReadingApply')
|
||||
: $t('trials:pendingReadingTasks:button:review')
|
||||
"
|
||||
icon="el-icon-edit-outline"
|
||||
@click="handleReadImage(scope.row)"
|
||||
/>
|
||||
<el-button :disabled="scope.row.ExistReadingApply ||
|
||||
(scope.row.ClaimUserId && scope.row.ClaimUserId !== userId)
|
||||
" circle :title="scope.row.ExistReadingApply
|
||||
? $t('trials:pendingReadingTasks:button:ExistReadingApply')
|
||||
: $t('trials:pendingReadingTasks:button:review')
|
||||
" icon="el-icon-edit-outline" @click="handleReadImage(scope.row)" />
|
||||
<!-- 释放 -->
|
||||
<el-button
|
||||
:disabled="
|
||||
!scope.row.ClaimUserId ||
|
||||
(scope.row.ClaimUserId && scope.row.ClaimUserId !== userId)
|
||||
"
|
||||
circle
|
||||
:title="$t('trials:pendingReadingTasks:button:release')"
|
||||
icon="el-icon-s-release"
|
||||
@click="handleReleaseTasks(scope.row)"
|
||||
/>
|
||||
<el-button :disabled="!scope.row.ClaimUserId ||
|
||||
(scope.row.ClaimUserId && scope.row.ClaimUserId !== userId)
|
||||
" circle :title="$t('trials:pendingReadingTasks:button:release')" icon="el-icon-s-release"
|
||||
@click="handleReleaseTasks(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" />
|
||||
</div>
|
||||
</BaseContainer>
|
||||
</template>
|
||||
|
@ -168,6 +95,7 @@ import { claimOrCancelSubject, clearSkipReadingCache } from "@/api/reading";
|
|||
import BaseContainer from "@/components/BaseContainer";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { openWindow } from "@/utils/splitScreen";
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
SubjectCode: "",
|
||||
|
@ -279,7 +207,7 @@ export default {
|
|||
this.loading = true;
|
||||
await clearSkipReadingCache()
|
||||
verifyReadingRestTime()
|
||||
.then((_) => {
|
||||
.then(async (_) => {
|
||||
this.loading = false;
|
||||
|
||||
window.localStorage.setItem(
|
||||
|
@ -296,8 +224,11 @@ export default {
|
|||
}
|
||||
var routeData = this.$router.resolve({ path });
|
||||
|
||||
this.openWindow = window.open(routeData.href, "_blank");
|
||||
this.$setOpenWindow(this.openWindow);
|
||||
// this.openWindow = window.open(routeData.href, "_blank");
|
||||
this.openWindow = await openWindow(routeData.href)
|
||||
if (this.openWindow) {
|
||||
this.$setOpenWindow(this.openWindow);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
|
|
Loading…
Reference in New Issue