diff --git a/src/utils/splitScreen.js b/src/utils/splitScreen.js new file mode 100644 index 0000000..7dfbce2 --- /dev/null +++ b/src/utils/splitScreen.js @@ -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); +} \ No newline at end of file diff --git a/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue b/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue index 6d53e64..7d57b4e 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue @@ -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) => { diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue index 3f320e2..6a3c089 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue @@ -4,63 +4,36 @@

{{ $t('trials:readingReport:title:eicrf') }}

- - + + {{ $t('trials:readingReport:button:skip') }} - {{$t('trials:readingReport:button:refresh')}} - {{$t('common:button:save')}} - {{$t('common:button:submit')}} + {{ + $t('trials:readingReport:button:refresh') }} + {{ + $t('common:button:save') }} + {{ + $t('common:button:submit') }}
- - + + - +