协议问题解决

This commit is contained in:
2026-01-12 11:45:37 +08:00
parent 6336f89f0d
commit 26df740dd0
16 changed files with 728 additions and 243 deletions

View File

@@ -12,9 +12,11 @@
"core-js": "^3.8.3",
"echarts": "^6.0.0",
"element-plus": "^2.11.4",
"pdfjs-dist": "^5.4.530",
"quill": "^2.0.3",
"register-service-worker": "^1.7.2",
"vue": "^3.5.22",
"vue-pdf-embed": "^2.1.3",
"vue-router": "^4.5.1",
"vuex": "^4.1.0"
},
@@ -2269,6 +2271,256 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@napi-rs/canvas": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas/-/canvas-0.1.88.tgz",
"integrity": "sha512-/p08f93LEbsL5mDZFQ3DBxcPv/I4QG9EDYRRq1WNlCOXVfAHBTHMSVMwxlqG/AtnSfUr9+vgfN7MKiyDo0+Weg==",
"license": "MIT",
"optional": true,
"workspaces": [
"e2e/*"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
},
"optionalDependencies": {
"@napi-rs/canvas-android-arm64": "0.1.88",
"@napi-rs/canvas-darwin-arm64": "0.1.88",
"@napi-rs/canvas-darwin-x64": "0.1.88",
"@napi-rs/canvas-linux-arm-gnueabihf": "0.1.88",
"@napi-rs/canvas-linux-arm64-gnu": "0.1.88",
"@napi-rs/canvas-linux-arm64-musl": "0.1.88",
"@napi-rs/canvas-linux-riscv64-gnu": "0.1.88",
"@napi-rs/canvas-linux-x64-gnu": "0.1.88",
"@napi-rs/canvas-linux-x64-musl": "0.1.88",
"@napi-rs/canvas-win32-arm64-msvc": "0.1.88",
"@napi-rs/canvas-win32-x64-msvc": "0.1.88"
}
},
"node_modules/@napi-rs/canvas-android-arm64": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.88.tgz",
"integrity": "sha512-KEaClPnZuVxJ8smUWjV1wWFkByBO/D+vy4lN+Dm5DFH514oqwukxKGeck9xcKJhaWJGjfruGmYGiwRe//+/zQQ==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-darwin-arm64": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.88.tgz",
"integrity": "sha512-Xgywz0dDxOKSgx3eZnK85WgGMmGrQEW7ZLA/E7raZdlEE+xXCozobgqz2ZvYigpB6DJFYkqnwHjqCOTSDGlFdg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-darwin-x64": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.88.tgz",
"integrity": "sha512-Yz4wSCIQOUgNucgk+8NFtQxQxZV5NO8VKRl9ePKE6XoNyNVC8JDqtvhh3b3TPqKK8W5p2EQpAr1rjjm0mfBxdg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.88.tgz",
"integrity": "sha512-9gQM2SlTo76hYhxHi2XxWTAqpTOb+JtxMPEIr+H5nAhHhyEtNmTSDRtz93SP7mGd2G3Ojf2oF5tP9OdgtgXyKg==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-linux-arm64-gnu": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.88.tgz",
"integrity": "sha512-7qgaOBMXuVRk9Fzztzr3BchQKXDxGbY+nwsovD3I/Sx81e+sX0ReEDYHTItNb0Je4NHbAl7D0MKyd4SvUc04sg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-linux-arm64-musl": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.88.tgz",
"integrity": "sha512-kYyNrUsHLkoGHBc77u4Unh067GrfiCUMbGHC2+OTxbeWfZkPt2o32UOQkhnSswKd9Fko/wSqqGkY956bIUzruA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.88.tgz",
"integrity": "sha512-HVuH7QgzB0yavYdNZDRyAsn/ejoXB0hn8twwFnOqUbCCdkV+REna7RXjSR7+PdfW0qMQ2YYWsLvVBT5iL/mGpw==",
"cpu": [
"riscv64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-linux-x64-gnu": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.88.tgz",
"integrity": "sha512-hvcvKIcPEQrvvJtJnwD35B3qk6umFJ8dFIr8bSymfrSMem0EQsfn1ztys8ETIFndTwdNWJKWluvxztA41ivsEw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-linux-x64-musl": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.88.tgz",
"integrity": "sha512-eSMpGYY2xnZSQ6UxYJ6plDboxq4KeJ4zT5HaVkUnbObNN6DlbJe0Mclh3wifAmquXfrlgTZt6zhHsUgz++AK6g==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-win32-arm64-msvc": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.88.tgz",
"integrity": "sha512-qcIFfEgHrchyYqRrxsCeTQgpJZ/GqHiqPcU/Fvw/ARVlQeDX1VyFH+X+0gCR2tca6UJrq96vnW+5o7buCq+erA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@napi-rs/canvas-win32-x64-msvc": {
"version": "0.1.88",
"resolved": "https://registry.npmmirror.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.88.tgz",
"integrity": "sha512-ROVqbfS4QyZxYkqmaIBBpbz/BQvAR+05FXM5PAtTYVc0uyY8Y4BHJSMdGAaMf6TdIVRsQsiq+FG/dH9XhvWCFQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -6286,6 +6538,18 @@
"node": ">=8"
}
},
"node_modules/pdfjs-dist": {
"version": "5.4.530",
"resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-5.4.530.tgz",
"integrity": "sha512-r1hWsSIGGmyYUAHR26zSXkxYWLXLMd6AwqcaFYG9YUZ0GBf5GvcjJSeo512tabM4GYFhxhl5pMCmPr7Q72Rq2Q==",
"license": "Apache-2.0",
"engines": {
"node": ">=20.16.0 || >=22.3.0"
},
"optionalDependencies": {
"@napi-rs/canvas": "^0.1.84"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
@@ -8305,6 +8569,30 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/vue-pdf-embed": {
"version": "2.1.3",
"resolved": "https://registry.npmmirror.com/vue-pdf-embed/-/vue-pdf-embed-2.1.3.tgz",
"integrity": "sha512-EGgZNb8HRrAloBpb8p8CugDpJpoPbQ8CFfAYdWZgq2e5qBMP9JSeLzVQIAJkXsclHXRIS3O9fp3WQbP9T5Inwg==",
"license": "MIT",
"dependencies": {
"pdfjs-dist": "^4.10.38"
},
"peerDependencies": {
"vue": "^3.3.0"
}
},
"node_modules/vue-pdf-embed/node_modules/pdfjs-dist": {
"version": "4.10.38",
"resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz",
"integrity": "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=20"
},
"optionalDependencies": {
"@napi-rs/canvas": "^0.1.65"
}
},
"node_modules/vue-router": {
"version": "4.5.1",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz",

View File

@@ -15,9 +15,11 @@
"core-js": "^3.8.3",
"echarts": "^6.0.0",
"element-plus": "^2.11.4",
"pdfjs-dist": "^5.4.530",
"quill": "^2.0.3",
"register-service-worker": "^1.7.2",
"vue": "^3.5.22",
"vue-pdf-embed": "^2.1.3",
"vue-router": "^4.5.1",
"vuex": "^4.1.0"
},

View File

@@ -122,18 +122,6 @@
</div>
</div>
</div>
<!-- 上传按钮 -->
<div v-if="selectedFiles.length > 0" class="upload-actions">
<el-button
type="primary"
@click="handleUpload"
:loading="uploading"
:disabled="selectedFiles.length === 0"
>
{{ uploading ? '上传中...' : '确定上传' }}
</el-button>
</div>
</div>
<el-dialog
@@ -362,10 +350,8 @@ function handleFileSelect(event: Event) {
// 清空 input允许重复选择同一文件
input.value = '';
// cover模式下选择文件后立即上传
if (props.listType === 'cover') {
handleUpload();
}
// 选择文件后立即上传
handleUpload();
}
}

View File

@@ -10,9 +10,10 @@
<style lang="scss" scoped>
.blank-layout {
width: 100vw;
width: 100%;
height: 100vh;
display: flex;
flex-direction: column;
overflow-x: hidden;
}
</style>

View File

@@ -24,6 +24,23 @@ export const routes: Array<RouteRecordRaw> = [
requiresAuth: false,
menuType: 3,
}),
// 协议预览页面
{
path: "/agreement/:type",
component: () => import("@/layouts/BlankLayout.vue"),
children: [
{
path: "",
name: "Agreement",
component: () => import("@/views/public/agreement/AgreementView.vue"),
meta: {
title: "协议",
requiresAuth: false,
menuType: 3,
},
}
],
},
// 首页(显示在导航栏)
// {
// path: "/home",

View File

@@ -47,6 +47,22 @@ export default {
faviconUrl: (state: SystemState) => {
const fileId = state.baseInfo?.favicon;
return (fileId && fileId.trim()) ? `${FILE_DOWNLOAD_URL}${fileId}` : '/favicon.ico';
},
// 协议文件URL
platformAgreementUrl: (state: SystemState) => {
const fileId = state.baseInfo?.platformAgreement;
return (fileId && fileId.trim()) ? `${FILE_DOWNLOAD_URL}${fileId}` : '';
},
userAgreementUrl: (state: SystemState) => {
const fileId = state.baseInfo?.userAgreement;
return (fileId && fileId.trim()) ? `${FILE_DOWNLOAD_URL}${fileId}` : '';
},
privacyAgreementUrl: (state: SystemState) => {
const fileId = state.baseInfo?.privacyAgreement;
return (fileId && fileId.trim()) ? `${FILE_DOWNLOAD_URL}${fileId}` : '';
}
},

View File

@@ -10,6 +10,11 @@ export interface SystemBaseInfo {
adminLogo: string; // 管理后台LogofileId
favicon: string; // 网站图标fileId
// 登录协议文件ID
platformAgreement: string; // 平台协议fileId
userAgreement: string; // 用户协议fileId
privacyAgreement: string; // 隐私协议fileId
// 登录开关(来自不同分组)
smsLoginEnabled: boolean; // 短信登录开关sms分组
emailLoginEnabled: boolean; // 邮箱登录开关email分组

View File

@@ -122,6 +122,44 @@
:tip="item.remark || '点击上传图片支持jpg、png格式'"
/>
</el-form-item>
<!-- 文件上传(协议文档等) -->
<el-form-item
v-else-if="getRenderType(item) === 'fileupload'"
:label="item.configName || item.configKey"
:prop="item.configKey"
>
<div class="file-upload-wrapper">
<FileUpload
:as-dialog="false"
:multiple="false"
accept=".pdf,.txt"
:max-size="100"
module="system"
:tip="item.remark || '支持PDF、TXT格式不超过100MB'"
@success="(files) => handleFileUploadSuccess(files, group.groupKey, item.configKey)"
/>
<div v-if="configData[group.groupKey][item.configKey]" class="uploaded-file-info">
<el-tag type="success" size="small">已上传</el-tag>
<el-button
type="primary"
link
size="small"
@click="previewAgreementFile(configData[group.groupKey][item.configKey])"
>
预览文件
</el-button>
<el-button
type="danger"
link
size="small"
@click="configData[group.groupKey][item.configKey] = ''"
>
删除
</el-button>
</div>
</div>
</el-form-item>
</template>
<!-- 操作按钮 -->
@@ -149,7 +187,6 @@ import { ElMessage } from 'element-plus';
import { configApi } from '@/apis/system';
import type { ConfigItem } from '@/types/system/config';
import FileUpload from '@/components/file/FileUpload.vue';
defineOptions({
name: 'SystemConfigView'
});
@@ -358,6 +395,26 @@ function handleCoverUpdate(url: string, groupKey: string, configKey: string) {
configData[groupKey][configKey] = url;
}
/**
* 处理文件上传成功(协议文档等)
*/
function handleFileUploadSuccess(files: any[], groupKey: string, configKey: string) {
if (files && files.length > 0) {
configData[groupKey][configKey] = files[0].fileID || '';
}
}
/**
* 预览协议文件新开tab页
*/
function previewAgreementFile(fileId: string) {
if (fileId) {
// 使用文件下载URL在新标签页打开
const url = `${import.meta.env.VITE_API_BASE_URL || ''}/api/file/preview/${fileId}`;
window.open(url, '_blank');
}
}
/**
* 保存指定分组的配置
*/
@@ -440,5 +497,16 @@ async function saveConfig(groupKey: string) {
color: #606266;
font-size: 14px;
}
.file-upload-wrapper {
width: 100%;
.uploaded-file-info {
margin-top: 10px;
display: flex;
align-items: center;
gap: 12px;
}
}
}
</style>

View File

@@ -0,0 +1,230 @@
<template>
<div class="agreement-container">
<div class="agreement-header">
<h1 class="agreement-title">{{ title }}</h1>
</div>
<div class="agreement-content" v-loading="loading">
<!-- PDF预览 -->
<div v-if="fileType === 'pdf'" class="pdf-viewer">
<VuePdfEmbed
:source="pdfSource"
:page="currentPage"
@loaded="onPdfLoaded"
@rendered="onPdfRendered"
/>
<!-- PDF分页控制 -->
<div v-if="totalPages > 1" class="pdf-pagination">
<el-button :disabled="currentPage <= 1" @click="currentPage--">上一页</el-button>
<span class="page-info">{{ currentPage }} / {{ totalPages }}</span>
<el-button :disabled="currentPage >= totalPages" @click="currentPage++">下一页</el-button>
</div>
</div>
<!-- TXT预览 -->
<div v-else-if="fileType === 'txt'" class="txt-viewer">
<pre>{{ textContent }}</pre>
</div>
<!-- 无内容 -->
<div v-else-if="!loading" class="empty-content">
<el-empty description="协议内容暂未上传" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import { useRoute } from 'vue-router';
import { useStore } from 'vuex';
import { FILE_DOWNLOAD_URL } from '@/config';
import VuePdfEmbed from 'vue-pdf-embed';
const route = useRoute();
const store = useStore();
const loading = ref(true);
const textContent = ref('');
const fileType = ref<'pdf' | 'txt' | ''>('');
const pdfSource = ref<string>('');
const currentPage = ref(1);
const totalPages = ref(0);
// 协议类型对应的标题
const titleMap: Record<string, string> = {
platform: '红色思政智能体平台协议',
user: '用户协议',
privacy: '隐私协议'
};
// 获取协议类型
const agreementType = computed(() => route.params.type as string);
// 标题
const title = computed(() => titleMap[agreementType.value] || '协议');
// 获取文件ID
const fileId = computed(() => {
const baseInfo = store.state.system.baseInfo;
if (!baseInfo) return '';
switch (agreementType.value) {
case 'platform':
return baseInfo.platformAgreement || '';
case 'user':
return baseInfo.userAgreement || '';
case 'privacy':
return baseInfo.privacyAgreement || '';
default:
return '';
}
});
// 文件URL
const fileUrl = computed(() => {
if (!fileId.value) return '';
return `${FILE_DOWNLOAD_URL}${fileId.value}`;
});
// PDF加载完成
function onPdfLoaded(pdf: any) {
totalPages.value = pdf.numPages;
}
// PDF渲染完成
function onPdfRendered() {
loading.value = false;
}
onMounted(async () => {
// 确保系统配置已加载
if (!store.state.system.baseInfo) {
await store.dispatch('system/loadBaseInfo');
}
if (!fileId.value) {
loading.value = false;
return;
}
// 根据文件URL判断类型并加载
try {
const response = await fetch(fileUrl.value);
const contentType = response.headers.get('content-type') || '';
const contentDisposition = response.headers.get('content-disposition') || '';
// 判断是否为PDF
const isPdf = contentType.includes('pdf') ||
contentDisposition.includes('.pdf') ||
fileUrl.value.toLowerCase().includes('.pdf');
if (isPdf) {
fileType.value = 'pdf';
// 获取PDF的blob URL
const blob = await response.blob();
pdfSource.value = URL.createObjectURL(blob);
} else {
// 作为文本处理
fileType.value = 'txt';
textContent.value = await response.text();
loading.value = false;
}
} catch (error) {
console.error('加载协议文件失败:', error);
loading.value = false;
}
});
</script>
<style lang="scss" scoped>
.agreement-container {
min-height: 100vh;
background: #f5f5f5;
display: flex;
flex-direction: column;
}
.agreement-header {
background: #fff;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
.agreement-title {
margin: 0;
font-size: 20px;
font-weight: 600;
color: #333;
text-align: center;
}
}
.agreement-content {
flex: 1;
padding: 20px;
display: flex;
flex-direction: column;
}
.pdf-viewer {
flex: 1;
background: #fff;
border-radius: 8px;
padding: 20px;
overflow-x: hidden;
overflow-y: auto;
:deep(.vue-pdf-embed) {
display: flex;
justify-content: center;
}
:deep(canvas) {
max-width: 100%;
height: auto !important;
display: block;
}
}
.pdf-pagination {
display: flex;
justify-content: center;
align-items: center;
gap: 16px;
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid #eee;
.page-info {
font-size: 14px;
color: #666;
}
}
.txt-viewer {
flex: 1;
background: #fff;
border-radius: 8px;
padding: 24px;
overflow: auto;
pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
line-height: 1.8;
color: #333;
}
}
.empty-content {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
background: #fff;
border-radius: 8px;
}
</style>

View File

@@ -181,8 +181,8 @@
<div class="agreement-wrapper">
<el-checkbox v-model="loginForm.agree" />
<span class="agreement-text">
登录即为同意&nbsp;<span class="agreement-link">红色思政智能体平台</span><span class="agreement-link">用户协议</span>
<span class="agreement-link">隐私协议</span>
登录即为同意&nbsp;<span class="agreement-link" @click="openAgreement('platform')">红色思政智能体平台</span><span class="agreement-link" @click="openAgreement('user')">用户协议</span>
<span class="agreement-link" @click="openAgreement('privacy')">隐私协议</span>
</span>
</div>
</el-form-item>
@@ -519,6 +519,15 @@ function goToForgotPassword() {
router.push('/forgot-password');
}
/**
* 打开协议文件(新标签页)
*/
function openAgreement(type: 'platform' | 'user' | 'privacy') {
// 跳转到协议预览页面
const url = router.resolve({ path: `/agreement/${type}` }).href;
window.open(url, '_blank');
}
// 组件挂载时检查是否需要显示验证码
onMounted(() => {
// 可以根据需要决定是否默认显示验证码

View File

@@ -181,9 +181,9 @@
<div class="agreement-wrapper">
<el-checkbox v-model="loginForm.agree" />
<span class="agreement-text">
登录即为同意&nbsp;<span class="agreement-link">红色思政智能体平台</span>
<span class="agreement-link">用户协议</span>
<span class="agreement-link">隐私协议</span>
登录即为同意&nbsp;<span class="agreement-link" @click="openAgreement('platform')">红色思政智能体平台</span>
<span class="agreement-link" @click="openAgreement('user')">用户协议</span>
<span class="agreement-link" @click="openAgreement('privacy')">隐私协议</span>
</span>
</div>
</el-form-item>
@@ -521,6 +521,15 @@ function goToForgotPassword() {
router.push('/forgot-password');
}
/**
* 打开协议文件(新标签页)
*/
function openAgreement(type: 'platform' | 'user' | 'privacy') {
// 跳转到协议预览页面
const url = router.resolve({ path: `/agreement/${type}` }).href;
window.open(url, '_blank');
}
// 组件挂载时检查是否需要显示验证码
onMounted(() => {
// 可以根据需要决定是否默认显示验证码

View File

@@ -167,8 +167,8 @@
<div class="agreement-wrapper">
<el-checkbox v-model="registerForm.agree" />
<span class="agreement-text">
注册即为同意&nbsp;<span class="agreement-link">《红色思政智能体平台》</span><span class="agreement-link">《用户协议》</span>
<span class="agreement-link">《隐私协议》</span>
注册即为同意&nbsp;<span class="agreement-link" @click="openAgreement('platform')">《红色思政智能体平台》</span><span class="agreement-link" @click="openAgreement('user')">《用户协议》</span>
<span class="agreement-link" @click="openAgreement('privacy')">《隐私协议》</span>
</span>
</div>
</el-form-item>
@@ -515,6 +515,15 @@ onUnmounted(() => {
clearInterval(emailTimer);
}
});
/**
* 打开协议文件(新标签页)
*/
function openAgreement(type: 'platform' | 'user' | 'privacy') {
// 跳转到协议预览页面
const url = router.resolve({ path: `/agreement/${type}` }).href;
window.open(url, '_blank');
}
</script>
<style lang="scss" scoped>

View File

@@ -174,8 +174,8 @@
<div class="agreement-wrapper">
<el-checkbox v-model="registerForm.agree" />
<span class="agreement-text">
注册即为同意&nbsp;<span class="agreement-link">红色思政智能体平台</span><span class="agreement-link">用户协议</span>
<span class="agreement-link">隐私协议</span>
注册即为同意&nbsp;<span class="agreement-link" @click="openAgreement('platform')">红色思政智能体平台</span><span class="agreement-link" @click="openAgreement('user')">用户协议</span>
<span class="agreement-link" @click="openAgreement('privacy')">隐私协议</span>
</span>
</div>
</el-form-item>
@@ -522,6 +522,15 @@ function goToLogin() {
router.push('/login');
}
/**
* 打开协议文件(新标签页)
*/
function openAgreement(type: 'platform' | 'user' | 'privacy') {
// 跳转到协议预览页面
const url = router.resolve({ path: `/agreement/${type}` }).href;
window.open(url, '_blank');
}
// 组件卸载时清除定时器
import { onUnmounted } from 'vue';
onUnmounted(() => {

View File

@@ -825,116 +825,6 @@
resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz"
integrity sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==
"@esbuild/aix-ppc64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz"
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
"@esbuild/android-arm@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz"
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
"@esbuild/android-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz"
integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
"@esbuild/android-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz"
integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
"@esbuild/darwin-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz"
integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
"@esbuild/darwin-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz"
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
"@esbuild/freebsd-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz"
integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
"@esbuild/freebsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz"
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
"@esbuild/linux-arm@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz"
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
"@esbuild/linux-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz"
integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
"@esbuild/linux-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz"
integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
"@esbuild/linux-loong64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz"
integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
"@esbuild/linux-mips64el@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz"
integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
"@esbuild/linux-ppc64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz"
integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
"@esbuild/linux-riscv64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz"
integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
"@esbuild/linux-s390x@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz"
integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
"@esbuild/linux-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz"
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
"@esbuild/netbsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz"
integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
"@esbuild/openbsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz"
integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
"@esbuild/sunos-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz"
integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
"@esbuild/win32-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz"
integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
"@esbuild/win32-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz"
integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
"@esbuild/win32-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz"
@@ -1043,6 +933,28 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@napi-rs/canvas-win32-x64-msvc@0.1.88":
version "0.1.88"
resolved "https://registry.npmmirror.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.88.tgz"
integrity sha512-ROVqbfS4QyZxYkqmaIBBpbz/BQvAR+05FXM5PAtTYVc0uyY8Y4BHJSMdGAaMf6TdIVRsQsiq+FG/dH9XhvWCFQ==
"@napi-rs/canvas@^0.1.65", "@napi-rs/canvas@^0.1.84":
version "0.1.88"
resolved "https://registry.npmmirror.com/@napi-rs/canvas/-/canvas-0.1.88.tgz"
integrity sha512-/p08f93LEbsL5mDZFQ3DBxcPv/I4QG9EDYRRq1WNlCOXVfAHBTHMSVMwxlqG/AtnSfUr9+vgfN7MKiyDo0+Weg==
optionalDependencies:
"@napi-rs/canvas-android-arm64" "0.1.88"
"@napi-rs/canvas-darwin-arm64" "0.1.88"
"@napi-rs/canvas-darwin-x64" "0.1.88"
"@napi-rs/canvas-linux-arm-gnueabihf" "0.1.88"
"@napi-rs/canvas-linux-arm64-gnu" "0.1.88"
"@napi-rs/canvas-linux-arm64-musl" "0.1.88"
"@napi-rs/canvas-linux-riscv64-gnu" "0.1.88"
"@napi-rs/canvas-linux-x64-gnu" "0.1.88"
"@napi-rs/canvas-linux-x64-musl" "0.1.88"
"@napi-rs/canvas-win32-arm64-msvc" "0.1.88"
"@napi-rs/canvas-win32-x64-msvc" "0.1.88"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -1152,106 +1064,6 @@
estree-walker "^2.0.2"
picomatch "^4.0.2"
"@rollup/rollup-android-arm-eabi@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz"
integrity sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==
"@rollup/rollup-android-arm64@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz"
integrity sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==
"@rollup/rollup-darwin-arm64@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz"
integrity sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==
"@rollup/rollup-darwin-x64@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz"
integrity sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==
"@rollup/rollup-freebsd-arm64@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz"
integrity sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==
"@rollup/rollup-freebsd-x64@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz"
integrity sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==
"@rollup/rollup-linux-arm-gnueabihf@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz"
integrity sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==
"@rollup/rollup-linux-arm-musleabihf@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz"
integrity sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==
"@rollup/rollup-linux-arm64-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz"
integrity sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==
"@rollup/rollup-linux-arm64-musl@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz"
integrity sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==
"@rollup/rollup-linux-loong64-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz"
integrity sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==
"@rollup/rollup-linux-ppc64-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz"
integrity sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==
"@rollup/rollup-linux-riscv64-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz"
integrity sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==
"@rollup/rollup-linux-riscv64-musl@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz"
integrity sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==
"@rollup/rollup-linux-s390x-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz"
integrity sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==
"@rollup/rollup-linux-x64-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz"
integrity sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==
"@rollup/rollup-linux-x64-musl@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz"
integrity sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==
"@rollup/rollup-openharmony-arm64@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz"
integrity sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==
"@rollup/rollup-win32-arm64-msvc@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz"
integrity sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==
"@rollup/rollup-win32-ia32-msvc@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz"
integrity sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==
"@rollup/rollup-win32-x64-gnu@4.52.4":
version "4.52.4"
resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz"
@@ -2508,11 +2320,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
@@ -3294,6 +3101,20 @@ path-type@^4.0.0:
resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pdfjs-dist@^4.10.38:
version "4.10.38"
resolved "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz"
integrity sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==
optionalDependencies:
"@napi-rs/canvas" "^0.1.65"
pdfjs-dist@^5.4.530:
version "5.4.530"
resolved "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-5.4.530.tgz"
integrity sha512-r1hWsSIGGmyYUAHR26zSXkxYWLXLMd6AwqcaFYG9YUZ0GBf5GvcjJSeo512tabM4GYFhxhl5pMCmPr7Q72Rq2Q==
optionalDependencies:
"@napi-rs/canvas" "^0.1.84"
picocolors@^1.0.0, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz"
@@ -4115,6 +3936,13 @@ vue-eslint-parser@^8.0.0, vue-eslint-parser@^8.0.1:
lodash "^4.17.21"
semver "^7.3.5"
vue-pdf-embed@^2.1.3:
version "2.1.3"
resolved "https://registry.npmmirror.com/vue-pdf-embed/-/vue-pdf-embed-2.1.3.tgz"
integrity sha512-EGgZNb8HRrAloBpb8p8CugDpJpoPbQ8CFfAYdWZgq2e5qBMP9JSeLzVQIAJkXsclHXRIS3O9fp3WQbP9T5Inwg==
dependencies:
pdfjs-dist "^4.10.38"
vue-router@^4.5.1:
version "4.5.1"
resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz"
@@ -4122,7 +3950,7 @@ vue-router@^4.5.1:
dependencies:
"@vue/devtools-api" "^6.6.4"
"vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.25, vue@^3.5.22, vue@3.5.22:
"vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.25, vue@^3.3.0, vue@^3.5.22, vue@3.5.22:
version "3.5.22"
resolved "https://registry.npmmirror.com/vue/-/vue-3.5.22.tgz"
integrity sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==