|
@@ -1,15 +1,15 @@
|
|
|
<template>
|
|
|
<div v-if="toolMode !== 'compare'" class="header-items">
|
|
|
<template v-for="(item, index) in items" :key="`${item.type}-${item.dataElement || index}`">
|
|
|
- <ToggleElementButton v-if="item.type === 'toggleElementButton'" :item="item" :class="{ disabled: !load }" />
|
|
|
- <ToolButton v-else-if="item.type === 'toolButton'" :item="item" />
|
|
|
+ <CustomButton v-if="item.name === 'customButton' && !item.hidden" :item="item" />
|
|
|
+ <ToggleElementButton v-else-if="item.type === 'toggleElementButton' && !item.hidden" :item="item" :class="{ disabled: !load }" :data-element="item.dataElement" />
|
|
|
+ <ToolButton v-else-if="item.type === 'toolButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
<FullScreenButton v-else-if="item.type === 'fullScreenButton' && !item.hidden" :item="item" :class="{ disabled: !load }" :data-element="item.dataElement" />
|
|
|
<HandButton v-else-if="item.type === 'handToolButton' && !item.hidden" :item="item" :class="{ disabled: !load }" :data-element="item.dataElement" />
|
|
|
<ZoomOverlay v-else-if="item.type === 'zoomOverlay' && !item.hidden" :data-element="item.dataElement" />
|
|
|
<ThemeMode v-else-if="item.type === 'themeMode' && !item.hidden" :data-element="item.dataElement" />
|
|
|
- <ViewRotationControls v-else-if="item.type === 'viewRotationControls'" />
|
|
|
+ <ViewRotationControls v-else-if="item.type === 'viewRotationControls' && !item.hidden" :data-element="item.dataElement" />
|
|
|
<div v-else-if="['spacer', 'divider'].includes(item.type)" :class="item.type"></div>
|
|
|
- <CustomButton v-else-if="item.type === 'customButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
</template>
|
|
|
|
|
|
<!-- 工具类 下拉框的形式 -->
|
|
@@ -29,37 +29,40 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<div class="drop-down narrower">
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'view' }" @click="changeToolMode('view')">{{ $t('header.viewer') }}</div>
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'annotation' }" @click="changeToolMode('annotation')">{{ $t('header.annotations') }}</div>
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'form' }" @click="changeToolMode('form')">{{ $t('header.forms') }}</div>
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'sign' }" @click="openSignCreatePanel()">{{ $t('header.signatures') }}</div>
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'security' }" @click="changeToolMode('security')">{{ $t('header.security') }}</div>
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'compare' }" @click="changeToolMode('compare')">{{ $t('header.compare') }}</div>
|
|
|
- <div class="drop-item" :class="{ active: toolMode === 'editor' }" @click="changeToolMode('editor')">{{ $t('header.editor') }}</div>
|
|
|
+ <template v-for="(item, index) in tools" :key="`${item.dataElement || index}`">
|
|
|
+ <div v-if="item.element === 'view' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'view' }" @click="changeToolMode('view')">{{ $t('header.viewer') }}</div>
|
|
|
+ <div v-else-if="item.element === 'annotation' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'annotation' }" @click="changeToolMode('annotation')">{{ $t('header.annotations') }}</div>
|
|
|
+ <div v-else-if="item.element === 'form' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'form' }" @click="changeToolMode('form')">{{ $t('header.forms') }}</div>
|
|
|
+ <div v-else-if="item.element === 'sign' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'sign' }" @click="openSignCreatePanel()">{{ $t('header.signatures') }}</div>
|
|
|
+ <div v-else-if="item.element === 'security' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'security' }" @click="changeToolMode('security')">{{ $t('header.security') }}</div>
|
|
|
+ <div v-else-if="item.element === 'compare' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'compare' }" @click="changeToolMode('compare')">{{ $t('header.compare') }}</div>
|
|
|
+ <div v-else-if="item.element === 'editor' && !item.hidden" :data-element="item.dataElement" class="drop-item" :class="{ active: toolMode === 'editor' }" @click="changeToolMode('editor')">{{ $t('header.editor') }}</div>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
</n-popover>
|
|
|
</div>
|
|
|
<div class="tool-container pc" :class="{ 'events-none': !load }">
|
|
|
<div class="tool-menu">
|
|
|
<template v-for="(item, index) in tools" :key="`${item.dataElement || index}`">
|
|
|
- <div v-if="item.element === 'view' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'view', hidden: item.hidden }" @click="changeToolMode('view')">{{ $t('header.viewer') }}</div>
|
|
|
- <div v-else-if="item.element === 'annotation' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'annotation', hidden: item.hidden }" @click="changeToolMode('annotation')">{{ $t('header.annotations') }}</div>
|
|
|
- <div v-else-if="item.element === 'form' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'form', hidden: item.hidden }" @click="changeToolMode('form')">{{ $t('header.forms') }}</div>
|
|
|
- <div v-else-if="item.element === 'sign' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'sign', hidden: item.hidden }" @click="openSignCreatePanel()">{{ $t('header.signatures') }}</div>
|
|
|
- <div v-else-if="item.element === 'security' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'security', hidden: item.hidden }" @click="changeToolMode('security')">{{ $t('header.security') }}</div>
|
|
|
- <div v-else-if="item.element === 'compare' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'compare', hidden: item.hidden }" @click="changeToolMode('compare')">{{ $t('header.compare') }}</div>
|
|
|
- <div v-else-if="item.element === 'editor' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'editor', hidden: item.hidden }" @click="changeToolMode('editor')">{{ $t('header.editor') }}</div>
|
|
|
+ <div v-if="item.element === 'view' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'view' }" @click="changeToolMode('view')">{{ $t('header.viewer') }}</div>
|
|
|
+ <div v-else-if="item.element === 'annotation' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'annotation' }" @click="changeToolMode('annotation')">{{ $t('header.annotations') }}</div>
|
|
|
+ <div v-else-if="item.element === 'form' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'form' }" @click="changeToolMode('form')">{{ $t('header.forms') }}</div>
|
|
|
+ <div v-else-if="item.element === 'sign' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'sign' }" @click="openSignCreatePanel()">{{ $t('header.signatures') }}</div>
|
|
|
+ <div v-else-if="item.element === 'security' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'security' }" @click="changeToolMode('security')">{{ $t('header.security') }}</div>
|
|
|
+ <div v-else-if="item.element === 'compare' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'compare' }" @click="changeToolMode('compare')">{{ $t('header.compare') }}</div>
|
|
|
+ <div v-else-if="item.element === 'editor' && !item.hidden" :data-element="item.dataElement" class="item" :class="{ active: toolMode === 'editor' }" @click="changeToolMode('editor')">{{ $t('header.editor') }}</div>
|
|
|
</template>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="right-container">
|
|
|
<template v-for="(item, index) in rightItems" :key="`${item.type}-${item.dataElement || index}`">
|
|
|
- <SearchButton v-if="item.type === 'searchButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
- <ToggleRightPanelButton v-if="item.type === 'toggleRightPanelButton' && !item.hidden" :item="item" :disabled="!load" :data-element="item.dataElement" />
|
|
|
- <OpenFileButton v-if="item.type === 'openFileButton'" :item="item" />
|
|
|
- <PageMode v-if="item.type === 'pageModeButton' && !item.hidden" :class="{ disabled: !load }" :data-element="item.dataElement" />
|
|
|
- <CustomButton v-if="item.type === 'customButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
+ <CustomButton v-if="item.name === 'customButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
+ <SearchButton v-else-if="item.type === 'searchButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
+ <ToggleRightPanelButton v-else-if="item.type === 'toggleRightPanelButton' && !item.hidden" :item="item" :disabled="!load" :data-element="item.dataElement" />
|
|
|
+ <OpenFileButton v-else-if="item.type === 'openFileButton' && !item.hidden" :item="item" :data-element="item.dataElement" />
|
|
|
+ <PageMode v-else-if="item.type === 'pageModeButton' && !item.hidden" :class="{ disabled: !load }" :data-element="item.dataElement" />
|
|
|
+ <div v-else-if="['spacer', 'divider'].includes(item.type)" :class="item.type"></div>
|
|
|
</template>
|
|
|
<Dropdown :class="{ disabled: !load }" :rightItems="rightItems" />
|
|
|
</div>
|
|
@@ -68,7 +71,7 @@
|
|
|
<!-- 文档对比模式 -->
|
|
|
<div v-else class="header-items">
|
|
|
<template v-for="(item, index) in items" :key="`${item.type}-${item.dataElement || index}`">
|
|
|
- <FullScreenButton v-if="item.type === 'fullScreenButton'" :item="item" :class="{ disabled: compareStatus !== 'finished' }" />
|
|
|
+ <FullScreenButton v-if="item.type === 'fullScreenButton' && !item.hidden" :item="item" :class="{ disabled: compareStatus !== 'finished' }" :data-element="item.dataElement" />
|
|
|
</template>
|
|
|
<div class="divider"></div>
|
|
|
|
|
@@ -76,15 +79,15 @@
|
|
|
|
|
|
<div class="right-container">
|
|
|
<template v-for="(item, index) in rightItems" :key="`${item.type}-${item.dataElement || index}`">
|
|
|
- <DownloadButton v-if="item.type === 'downloadButton'" :item="item" :class="{ disabled: compareStatus !== 'finished' && compareStatus !== 'next' }" />
|
|
|
- <PrintButton v-if="item.type === 'printButton'" :item="item" :class="{ disabled: compareStatus !== 'finished' && compareStatus !== 'next' }" />
|
|
|
+ <DownloadButton v-if="item.type === 'downloadButton' && !item.hidden" :item="item" :class="{ disabled: compareStatus !== 'finished' && compareStatus !== 'next' }" :data-element="item.dataElement" />
|
|
|
+ <PrintButton v-if="item.type === 'printButton' && !item.hidden" :item="item" :class="{ disabled: compareStatus !== 'finished' && compareStatus !== 'next' }" :data-element="item.dataElement" />
|
|
|
</template>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, computed, getCurrentInstance } from 'vue'
|
|
|
+import { ref, computed, getCurrentInstance, watch } from 'vue'
|
|
|
import { useViewerStore } from '@/stores/modules/viewer'
|
|
|
import { useDocumentStore } from '@/stores/modules/document'
|
|
|
import { NPopover } from 'naive-ui'
|
|
@@ -165,16 +168,6 @@ const openSignCreatePanel = () => {
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
|
- .test {
|
|
|
- position: fixed;
|
|
|
- right: 50px;
|
|
|
- top: 50%;
|
|
|
- transform: translateY(-50%);
|
|
|
- padding: 20px;
|
|
|
- background-color: bisque;
|
|
|
- border-radius: 10px;
|
|
|
- width: 200px;
|
|
|
- }
|
|
|
.header-items {
|
|
|
display: flex;
|
|
|
align-items: center;
|