vue3+tpescript 点击按钮跳转新页面直接通过链接预览word

1.在route里面配置 跳转页面

javascript 复制代码
{
		path: '/helpManual',
		name: 'staticRoutes.helpManual',
		component: () => import('/@/views/shiftHandover/helpManual.vue'),
		meta: {
			isHide: true,
			isAuth: false,
			isKeepAlive: false
		},
	}

2.通过点击 openHelpManual跳转新页面

html 复制代码
<el-tooltip content="帮助手册" placement="top">
            <el-icon style="margin-left: 10px; cursor: pointer; font-size: 18px; color: #409eff;"
                     @click="openHelpManual">
              <QuestionFilled/>
            </el-icon>
          </el-tooltip>
path: '/helpManual' 页面路径 在route配置
TypeScript 复制代码
//打开帮助手册
const openHelpManual = () => {
  // 跳转到新页面显示Word文档
  const url = router.resolve({
    path: '/helpManual'
  }).href;
  window.open(url, '_blank');
}

3.helpManual页面

注意我这里在vite.config.ts 配置了代理,因为我兼容本地调试,

host 为动态获取主机名

若不需要 直接docUrl.value = '地址'就可以

TypeScript 复制代码
<template>
  <div class="help-manual-container">
    <div style="height: 100vh; overflow: auto;">
      <VueOfficeDocx
        v-if="docUrl"
        :src="docUrl"
        style="height: 100%;"
        @error="handleDocxError"
      />
    </div>
  </div>
</template>

<script setup lang="ts" name="helpManual">
import { ref, onMounted } from 'vue';
import VueOfficeDocx from '@vue-office/docx';
import '@vue-office/docx/lib/index.css';
import { useMessage } from '/@/hooks/message';

// 根据window.location.host动态设置帮助手册URL
const getHelpManualUrl = () => {
  const host = window.location.host
  // 直接判断主机名是否包含localhost或100.100.100.207
  if (host.includes('localhost') || host.includes('100.100.100.207')) {
    // 使用相对路径通过代理访问,避免CORS问题
    return '/doc/JjbOperationManual.docx'
  }
  // 其他情况直接使用当前host
  return `http://${host}/doc/JjbOperationManual.docx`
}

const docUrl = ref('');

onMounted(() => {
  // 直接使用URL地址
  console.log('URL地址:',getHelpManualUrl())
  docUrl.value = getHelpManualUrl();
});

//Word文档加载错误
const handleDocxError = (error: any) => {
  console.error('Word文档加载错误:', error);
  useMessage().error('文档加载失败,请检查网络连接或文档地址。');
};
</script>

<style scoped>
.help-manual-container {
  width: 100%;
  height: 100vh;
  background: #fff;
}
</style>
相关推荐
AI多Agent协作实战派17 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
qq_25183645717 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
an3174218 小时前
6MB 组织树大文件性能优化全流程
前端·javascript·vue.js
GitLqr18 小时前
Vue 3.6 Vapor Mode vs React 19 Compiler:前端架构的两条分叉路
vue.js·react.js·vapor
武子康18 小时前
Inkling 975B 说明“开放权重“与“普通开发者本地运行“已经分离,内容重点应是部署容量和运行时边界
前端·人工智能·后端
TeamDev19 小时前
JxBrowser 9.3.1 版本发布啦!
java·前端·javascript·c#·混合应用·jxbrowser·浏览器控件
颜酱19 小时前
03 | 实现节点1 — 抽取关键词
前端·人工智能·后端
整點薯條19 小时前
Vue3+vite创建项目架构文件说明总结
前端·javascript·vue.js
wtsolutions19 小时前
Sheet-to-Doc Skill: Let AI Assistants Generate Word Documents for You
人工智能·word
掘金一周20 小时前
想问问掘友们:AI 时代,资深开发的核心价值到底在哪里?| 沸点周刊 7.23
前端·人工智能·后端