word 页面修改

This commit is contained in:
cwchen 2025-11-28 13:19:25 +08:00
parent 04f81d279a
commit 6e702626e7
2 changed files with 31 additions and 16 deletions

View File

@ -17,14 +17,14 @@
</div>
</div>
<div v-if="currentDocument" class="document-viewer">
<div v-if="currentDocument.type === 'pdf'" class="embedded-viewer">
<DocumentSearch :file-url="currentDocument.url" />
<div v-if="currentDocument.type === 'pdf'" class="embedded-viewer" :key="`pdf-${currentDocument.id}`">
<DocumentSearch :file-url="currentDocument.url" :key="`pdf-viewer-${currentDocument.id}`" />
</div>
<div v-else-if="currentDocument.type === 'word'" class="embedded-viewer">
<DocumentSearchWord :file-url="currentDocument.url" />
<div v-else-if="currentDocument.type === 'word'" class="embedded-viewer" :key="`word-${currentDocument.id}`">
<DocumentSearchWord :file-url="currentDocument.url" :key="`word-viewer-${currentDocument.id}`" />
</div>
<div v-else-if="currentDocument.type === 'excel'" class="embedded-viewer">
<DocumentExcel :file-url="currentDocument.url" />
<div v-else-if="currentDocument.type === 'excel'" class="embedded-viewer" :key="`excel-${currentDocument.id}`">
<DocumentExcel :file-url="currentDocument.url" :key="`excel-viewer-${currentDocument.id}`" />
</div>
<div v-else class="document-placeholder">
<div class="placeholder-content">
@ -249,7 +249,7 @@ export default {
.document-item {
padding: 7px 16px;
border-radius: 8px;
background: #f1f9ff;
background: #fff;
color: #303133;
font-size: 13px;
line-height: 1.4;

View File

@ -92,9 +92,13 @@ export default {
}
},
mounted() {
if (!this.docUrl) {
const initialUrl = this.fileUrl || this.$route?.query?.url || DEFAULT_DOC_URL
// 使 fileUrl prop URL
const initialUrl = this.fileUrl || this.$route?.query?.url || DEFAULT_DOC_URL
if (initialUrl && initialUrl !== this.docUrl) {
this.applyDocUrl(initialUrl)
} else if (this.docUrl && !this.docRendered) {
// docUrl
this.loadDocument()
}
},
beforeDestroy() {
@ -104,9 +108,16 @@ export default {
watch: {
fileUrl: {
immediate: true,
handler(newVal) {
if (newVal) {
handler(newVal, oldVal) {
// fileUrl
if (newVal && newVal !== oldVal) {
this.applyDocUrl(newVal)
} else if (newVal && !this.docUrl) {
// docUrl
this.applyDocUrl(newVal)
} else if (!newVal && this.docUrl) {
// docUrl
this.resetViewerState()
}
}
},
@ -134,12 +145,16 @@ export default {
},
applyDocUrl(url) {
const resolved = url || ''
if (resolved === this.docUrl) {
if (resolved) {
this.loadDocument()
}
// URL
if (resolved === this.docUrl && this.docRendered) {
return
}
// URL
if (resolved !== this.docUrl) {
this.cancelFetch()
this.cancelScrollAnimation()
this.resetViewerState()
}
this.docUrl = resolved
if (this.docUrl) {
this.loadDocument()
@ -1405,7 +1420,7 @@ export default {
}
.state-icon {
font-size: 48px;
font-size: 24px;
color: #409EFF;
animation: rotate 1s linear infinite;
}