增加部门文件控制以及在线浏览功能

This commit is contained in:
p71924506 2023-05-05 15:31:59 +08:00
parent 74c55a05d9
commit 28f1cfc226
19 changed files with 169 additions and 87 deletions

BIN
dist (3).zip Normal file

Binary file not shown.

BIN
dist (4).zip Normal file

Binary file not shown.

BIN
dist (5).zip Normal file

Binary file not shown.

BIN
dist (6).zip Normal file

Binary file not shown.

BIN
dist (7).zip Normal file

Binary file not shown.

BIN
dist.zip Normal file

Binary file not shown.

View File

@ -15,6 +15,10 @@
},
"dependencies": {
"@onlyoffice/document-editor-vue": "^1.1.1",
"@vue-office/docx": "^1.0.0",
"@vue-office/excel": "^1.0.0",
"@vue-office/pdf": "^1.0.0",
"@vue/composition-api": "^1.7.1",
"axios": "0.18.1",
"core-js": "^3.26.1",
"docx-preview": "^0.1.14",

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<script type='text/javascript' src='http://114.116.228.69:8044/web-apps/apps/api/documents/api.js'></script>
<!-- <script type='text/javascript' src='http://114.116.228.69:8044/web-apps/apps/api/documents/api.js'></script>-->
<title><%= webpackConfig.name %></title>
</head>
<body>

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1682212757128" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5016" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M862 902c0 16.569-13.431 30-30 30H192c-16.569 0-30-13.431-30-30V122c0-16.569 13.431-30 30-30h476l194 194v616z" fill="#7DB4FF" p-id="5017"></path><path d="M862 286H698c-16.569 0-30-13.431-30-30V92" fill="#FFFFFF" fill-opacity=".296" p-id="5018"></path><path d="M403.76 540.84c0-44.48-13.76-75.84-73.92-75.84-54.08 0-85.44 19.52-85.44 89.6s31.36 89.6 84.16 89.6c30.08 0 56-6.08 66.24-12.16v-36.48c-11.2 6.08-36.16 12.16-57.28 12.16-30.72 0-45.12-11.2-46.72-35.84l111.36-7.04c0.96-4.8 1.6-14.08 1.6-24z m-112.96-1.28c0.96-27.2 10.56-39.68 39.04-39.68 27.2 0 31.68 15.36 31.68 34.24l-70.72 5.44zM420.4 641h54.72l36.48-59.52h1.92L549.36 641h55.04l-59.2-88.64 56-84.16h-53.76l-33.6 56.32h-1.92l-33.6-56.32h-54.4l56.32 84.48zM781.04 540.84c0-44.48-13.76-75.84-73.92-75.84-54.08 0-85.44 19.52-85.44 89.6s31.36 89.6 84.16 89.6c30.08 0 56-6.08 66.24-12.16v-36.48c-11.2 6.08-36.16 12.16-57.28 12.16-30.72 0-45.12-11.2-46.72-35.84l111.36-7.04c0.96-4.8 1.6-14.08 1.6-24z m-112.96-1.28c0.96-27.2 10.56-39.68 39.04-39.68 27.2 0 31.68 15.36 31.68 34.24l-70.72 5.44z" fill="#FFFFFF" p-id="5019"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

1
src/assets/logo.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 151.43 115.36"><defs><style>.cls-1{fill:#ed4b00;}.cls-2,.cls-3{fill:none;stroke-miterlimit:10;}.cls-2{stroke:#ed4b00;stroke-linecap:round;stroke-width:0.39px;}.cls-3{stroke:#bf3e00;stroke-width:0.1px;}.cls-4{fill:#ffdb00;}.cls-5{fill:#ffa900;}</style></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><path class="cls-1" d="M145.07,107.21a48.59,48.59,0,0,0,5.83,7.47c-45.71-3.32-57.34-3.57-60.23-3.51,3.28-.66-1.22-6.72,1.06-10.56,4.21-7.08,6.82-14.88,10.11-22.38,3-7,6.8-13.83,12.49-19a16.69,16.69,0,0,1,6.33,2.7,20.07,20.07,0,0,1,2.26,1.83c3.78,3.63,6,8.4,8.15,13.07C135.74,86.93,138.74,97.17,145.07,107.21Z"/><path class="cls-1" d="M108.27,59.45a12.33,12.33,0,0,1,6.06-.25c-5.69,5.2-9.45,12.08-12.49,19-3.29,7.5-5.9,15.3-10.11,22.38-2.28,3.84,2.22,9.9-1.06,10.56a5.24,5.24,0,0,0-.94,0c-8-.43-13.24-.17-21.43-.51-8.48-.35-37.1.85-46.63,1.27h0c3.43-.3,2.53-2.54,3.88-4.8,2.28-3.85,3.7-8.09,5.49-12.18s4.12-8.16,7.65-11.06l.07-.21h0c.91.31,5.28,2.14,8.39,9.56,3.45,8.22,9.78,17.7,35-6.35a.6.6,0,0,0,.08-.08c6-6.22,11.22-13.26,16.66-20C101.51,63.83,104.35,60.67,108.27,59.45Z"/><path class="cls-1" d="M90.67,111.17a4,4,0,0,1-.94,0A5.24,5.24,0,0,1,90.67,111.17Z"/><path class="cls-1" d="M38.8,83.73l-.07.21c-3.53,2.9-5.86,7-7.65,11.06s-3.21,8.33-5.49,12.18c-1.35,2.26-.45,4.5-3.88,4.8h-.09c-2.05.19-3.8.33-9.22.94-4,.45-12.34,2.25-12.34,2.25,6.31-3.09,8.84-7.55,12.7-11.45,2.94-3,7.7-9.85,11.85-14.53.45-.5.9-1,1.36-1.49,2.1-2.23,4.59-4.43,7.72-4.86a8.91,8.91,0,0,1,5.15.9Z"/><path class="cls-2" d="M.19,115.17c.18-.06,39.71-13.58,151.05-.17"/><path class="cls-3" d="M151.31,114.94a.76.76,0,0,0-.18-.09l-.12-.07-.07,0-.08-.06-.12-.08"/><path class="cls-4" d="M91.86,66h0c-3.6,5-7.23,9.94-11.26,14.49l-.07.08c-23.79,24.79-29.8,15.08-33.09,6.65-3-7.6-7.11-9.47-8-9.79a7.87,7.87,0,0,0-4.87-.9c-2.95.45-5.3,2.72-7.28,5-.43.51-.86,1-1.28,1.54A52.53,52.53,0,0,1,15.73,51.7,51.44,51.44,0,0,1,66.9.21V.28C55.4,2.38,49.8,15.52,49.18,24.21,48.34,36,57.86,51.07,72.61,52.29,80.91,53.84,87.91,56.24,91.86,66Z"/><path class="cls-5" d="M78.67,0h0c26,3.16,45.57,26.41,44.45,53.68,0,.56,0,1.86-.05,3.08,0,.56,0,1.12,0,1.56h0a19.74,19.74,0,0,0-7.35-4.16,14,14,0,0,0-4.25-.45c-3.9.16-10,4.48-13.1,8.14-.66.79-1.3,1.52-1.9,2.19A24.74,24.74,0,0,0,76,50.73h0C62.6,49.79,52.31,38.07,52.88,24.24A25,25,0,0,1,78.67,0Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -100,6 +100,7 @@ export default {
this.userAvatar = res.data.userDetails.profilePhoto;
this.userName = res.data.user.name;
this.isLogin = true;
localStorage.setItem("dep",res.data.user.dep)
}else {
Message.warning("登录失败,请重新登录");
this.toLogin()

View File

@ -17,20 +17,20 @@
<!-- <i class="el-icon-document"/>-->
<el-submenu index="4" >
<template slot="title">
<i class="el-icon-document sub-el-icon"></i>
<span>文件管理2.0</span>
</template>
<!-- <item title="文件管理2.0"/>-->
<el-menu-item-group>
<!-- <el-submenu index="4" >-->
<!-- <template slot="title">-->
<!-- <i class="el-icon-document sub-el-icon"></i>-->
<!-- <span>文件管理2.0</span>-->
<!-- </template>-->
<!--&lt;!&ndash; <item title="文件管理2.0"/>&ndash;&gt;-->
<!-- <el-menu-item-group>-->
<el-menu-item v-for="item in filesTypeList" :index="item.filesTypeId">
<item icon="el-icon-folder-opened" :title="item.name" />
</el-menu-item>
<!-- <el-menu-item v-for="item in filesTypeList" :index="item.filesTypeId">-->
<!-- <item icon="el-icon-folder-opened" :title="item.name" />-->
<!-- </el-menu-item>-->
</el-menu-item-group>
</el-submenu>
<!-- </el-menu-item-group>-->
<!-- </el-submenu>-->
<el-menu-item index="/platformData" >
<item icon="el-icon-data-analysis" title="平台信息记录板"/>
</el-menu-item>

View File

@ -47,7 +47,7 @@ export const constantRoutes = [
{
path: '/',
component: Layout,
redirect: '/fileListV2/1',
redirect: '/fileListV3',
hidden: true,
children: [
{

View File

@ -63,4 +63,5 @@ div:focus {
.app-container {
padding: 20px;
height: 100vh;
}

View File

@ -4,9 +4,10 @@
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
<li v-show="fileLevel!==0" @click="mkdirDialogVisible=true">新建目录</li>
<li v-show="fileLevel!==0 && fileLevel !==1">上传</li>
<li v-show="fileLevel!==0 && fileLevel !==1">下载</li>
<li v-show="fileLevel!==0 && fileLevel !==1">删除</li>
<li v-show="fileLevel!==0 && fileLevel !==1" @click="dialogVisible = true">上传</li>
<li v-show="fileLevel!==0 && fileLevel !==1" @click="onlineView">浏览</li>
<!-- <li v-show="fileLevel!==0 && fileLevel !==1">下载</li>-->
<!-- <li v-show="fileLevel!==0 && fileLevel !==1">删除</li>-->
<li >属性</li>
</ul>
@ -34,7 +35,7 @@
<el-alert
title="注意"
type="warning"
description="局域网暂不支持在线访问,请下载查看"
description="局域网支持在线浏览pdf和docx格式文档在线浏览文件请预先脱水印doc及其他文件请下载查看。一级二级目录暂不开放文件上传权限如有需要请联系管理员李维昊"
style="margin-bottom: 10px;font-size: 20px">
</el-alert>
@ -71,9 +72,7 @@
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="fileInfoSubmit"> </el-button>
</span>
</el-dialog>
<!--新建文件夹-->
@ -106,12 +105,14 @@
type="success"
description="如果出现文件内容乱码问题,请检查所上传的文档中西文字体是否匹配(中文文字对应中文字体)"
style="margin-bottom: 10px;font-size: 20px"/>
<iframe :src="viewUrl" style="width: 100%; height: 800px"></iframe>
<!--render 对应渲染后的方法 src是文件的url链接-->
<vue-office-docx v-if="isWord" :src="viewUrl" @rendered="rendered"/>
<vue-office-pdf v-if="isPdf" :src="viewUrl" @rendered="rendered"/>
</el-dialog>
<!--小网盘-->
<div style="display:inline !important; -webkit-user-select: none; user-select: none; height: 100%">
<div v-show="!loading" class="file" v-for="file in fileList" :key="file.name" @dblclick="clickFileIcon(file)" >
<div v-show="!loading" class="file" v-for="file in fileList" :key="file.name" @dblclick="clickFileIcon(file)" @contextmenu.prevent="saveFileData(file)">
<div>
<img class="file-svg" :src="getFileTypeIcon(file.directory,file.file,file.name)"/>
</div>
@ -121,53 +122,7 @@
</div>
<!-- <el-table-->
<!-- v-loading="listLoading"-->
<!-- :data="list"-->
<!-- element-loading-text="Loading"-->
<!-- border-->
<!-- fit-->
<!-- highlight-current-row-->
<!-- >-->
<!-- <el-table-column align="center" label="编号" width="95">-->
<!-- <template slot-scope="scope">-->
<!-- {{ scope.row.filesInfoId }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="文件名称">-->
<!-- <template slot-scope="scope">-->
<!-- {{ scope.row.name }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="上传用户" width="110" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ scope.row.userName }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column class-name="status-col" label="文件状态" width="110" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column class-name="status-col" label="分类" width="110" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <el-tag :type="scope.row.type | statusFilter">{{ scope.row.typeName }}</el-tag>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" prop="created_at" label="上传时间" width="200">-->
<!-- <template slot-scope="scope">-->
<!-- <i class="el-icon-time" />-->
<!-- <span>{{ scope.row.uploadTime }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" prop="created_at" label="操作" width="200">-->
<!-- <template slot-scope="scope">-->
<!-- <i class="el-icon-files" @click="viewFile(scope.row.location)" style="cursor: pointer">查看</i>-->
<!-- <i class="el-icon-download" @click="downloadFile(scope.row.location)" style="cursor: pointer">下载</i>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </el-table>-->
</div>
</template>
@ -181,9 +136,14 @@ import pageUtils from '@/utils/pageUtils'
import { Message } from 'element-ui'
import { getFilesInfoByName, getFilesInfoByType } from '@/utils/http/interface'
import { toBase64 } from 'js-base64'
import VueOfficeDocx from '@vue-office/docx'
import VueOfficePdf from '@vue-office/pdf'
export default {
name: 'FileList',
components:{
VueOfficeDocx,
VueOfficePdf
},
filters: {
statusFilter(status) {
const statusMap = {
@ -298,7 +258,16 @@ export default {
// }
//
viewDialogVisible:false,
viewUrl:null
viewUrl:null,
//线
viewFileData:null,
//线
isWord:false,
isPdf:false,
//IP
ip:null,
}
},
created() {
@ -323,6 +292,7 @@ export default {
//
showInfo(){
if (this.showInfoStatus == false) {
@ -374,17 +344,14 @@ export default {
},
viewFile(link){
var url = 'http://127.0.0.1:8043/api/' + link; //访
this.viewUrl='http://114.116.228.69:8041/onlinePreview?url='+encodeURIComponent(toBase64(url))
this.viewDialogVisible = true
//
// window.open();
},
//线
viewHandleClose(){
this.viewDialogVisible = false
this.viewUrl = null
this.isPdf = false
this.isWord = false
},
//
@ -472,6 +439,11 @@ export default {
return require('@/assets/file_icon/excel3.svg')
case 'pdf':
return require('@/assets/file_icon/pdf3.svg')
case 'zip':
case 'rar':
return require('@/assets/file_icon/zip.svg')
case 'exe':
return require('@/assets/file_icon/exe.svg')
default:
return require("@/assets/file_icon/unu.svg")
}
@ -501,9 +473,47 @@ export default {
//
if (file.directory){
//
this.path = this.path + file.name + "/"
this.getFilesDirMeta()
this.fileLevel = this.fileLevel + 1
//
var dep = localStorage.getItem('dep')
if (file.name === '一室') {
console.log(file.name)
if (dep ==='一室' || dep === '管理员'){
//访
this.path = this.path + file.name + "/"
this.getFilesDirMeta()
this.fileLevel = this.fileLevel + 1
}else{
//访 访
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
}
}else if (file.name === '二室') {
if (dep === '二室'|| dep === '管理员'){
//访
this.path = this.path + file.name + "/"
this.getFilesDirMeta()
this.fileLevel = this.fileLevel + 1
}else {
//访 访
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
}
}else if (file.name === '四室') {
if (dep === '四室'|| dep === '管理员'){
//访
this.path = this.path + file.name + "/"
this.getFilesDirMeta()
this.fileLevel = this.fileLevel + 1
}else {
//访 访
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
}
}else {
//
this.path = this.path + file.name + "/"
this.getFilesDirMeta()
this.fileLevel = this.fileLevel + 1
}
}else {
//
@ -516,6 +526,13 @@ export default {
console.log(file.name)
console.log(file.directory)
},
saveFileData(file){
//线 url
//
this.viewFileData = file
this.viewUrl ="http://"+ window.location.host + "/api/files"+this.path + file.name,file.name
},
//
back2Up(){
//
@ -550,7 +567,29 @@ export default {
Message.warning("添加文件夹失败,该文件夹可能已经存在~")
}
})
}
},
// 线
onlineView(){
if (this.viewFileData.directory){
//
Message.warning("您选择的是文件夹 无法在线浏览")
}else {
//
if (this.viewFileData.name.endsWith('.docx')) {
//word
this.isWord = true
this.viewDialogVisible = true
}else if (this.viewFileData.name.endsWith('.pdf')){
this.isPdf = true
this.viewDialogVisible = true
}else {
Message.warning("您的文件暂不支持在线浏览 请下载查看")
}
}
},
},
mounted() {

View File

@ -146,7 +146,7 @@ export default {
localStorage.setItem("role", res.auth[0].authority);
this.loading = true
Message.success("登录成功")
pageUtils.openPage(this.$router,"/fileListV2/1"); //
pageUtils.openPage(this.$router,"/fileListV3"); //
}
// Cookies.set("token", res.data.token); // tokenCookie

View File

@ -53,7 +53,7 @@ export default{
// getAction('/file/selectById', { id: this.id }).then(res => {
this.option.isEdit = true
this.option.lang = 'zh-CN'
this.option.url = 'http://114.116.228.69:8043/api/files/ZPABOZ-%E7%BA%A2%E5%B1%B1%E5%BC%80%E6%BA%90%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90%E5%88%86%E7%B1%BB%E7%BB%9F%E8%AE%A121.1.3.xlsx'
// this.option.url = 'http://114.116.228.69:8043/api/files/ZPABOZ-%E7%BA%A2%E5%B1%B1%E5%BC%80%E6%BA%90%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90%E5%88%86%E7%B1%BB%E7%BB%9F%E8%AE%A121.1.3.xlsx'
this.option.title = '123'
this.option.fileType = 'xlsx'
this.option.isPrint = false

View File

@ -12,7 +12,7 @@
</div>
<el-dialog
title="上传文件"
title="新增用户"
:visible.sync="userDialogVisible"
width="50%"
:before-close="handleClose">
@ -26,6 +26,9 @@
<el-form-item label="密码" prop="password">
<el-input placeholder="请输入密码" v-model="adminInfo.password"></el-input>
</el-form-item>
<el-form-item label="部门" prop="password">
<el-input placeholder="请输入部门(一室、二室、四室、管理员)" v-model="adminInfo.dep"></el-input>
</el-form-item>
<!-- <el-form-item label="竞赛名称" prop="compName">-->
<!-- <el-input placeholder="竞赛名称" v-model="compInfo.compName"></el-input>-->
<!-- </el-form-item>-->
@ -91,6 +94,11 @@
</template>
</el-table-column>
<el-table-column label="用户部门">
<template slot-scope="scope">
{{ scope.row.dep }}
</template>
</el-table-column>
<el-table-column align="center" prop="created_at" label="操作" width="150">
<template slot-scope="scope">
<i class="el-icon-files" style="cursor: pointer" @click="syncUpdatePasswordUser(scope.row.userId)">重置密码</i>
@ -124,7 +132,8 @@ export default {
adminInfo :{
name: null,
phone:null,
password: null
password: null,
dep:null
},
//
@ -164,6 +173,7 @@ export default {
this.adminInfo.name = "";
this.adminInfo.phone = null;
this.adminInfo.password = "";
this.adminInfo.dep = "";
},
//

View File

@ -1343,6 +1343,21 @@
dependencies:
"@types/yargs-parser" "*"
"@vue-office/docx@^1.0.0":
"integrity" "sha512-VqCW3yDqnWamuaXEAmpRillh9lfmw4TC8kWElV0utgmOrUINj3bFI3Pbx+6lUeAqBe+EwyJfaEFvpOLe0gILzg=="
"resolved" "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.0.0.tgz"
"version" "1.0.0"
"@vue-office/excel@^1.0.0":
"integrity" "sha512-b9N8fTcxM/4WO8Zx/uzMLWt9zA3pQCKCX1Tr4i/15c0syABqfdzX0oGkr89/w5wmKcNqprorwFpZgtzqU6xXHQ=="
"resolved" "https://registry.npmmirror.com/@vue-office/excel/-/excel-1.0.0.tgz"
"version" "1.0.0"
"@vue-office/pdf@^1.0.0":
"integrity" "sha512-57w2ekjkg5NC3h40MJldjDe81mZi/TRy/Lee76O1gS6GYOkALk1zhwYx+yUrvVv3G5vfTsWuAYzflkV852UL2A=="
"resolved" "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-1.0.0.tgz"
"version" "1.0.0"
"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
"integrity" "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA=="
"resolved" "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz"
@ -1620,6 +1635,11 @@
optionalDependencies:
"prettier" "^1.18.2 || ^2.0.0"
"@vue/composition-api@^1.0.0-rc.1", "@vue/composition-api@^1.7.1":
"integrity" "sha512-xDWoEtxGXhH9Ku3ROYX/rzhcpt4v31hpPU5zF3UeVC/qxA3dChmqU8zvTUYoKh3j7rzpNsoFOwqsWG7XPMlaFA=="
"resolved" "https://registry.npmmirror.com/@vue/composition-api/-/composition-api-1.7.1.tgz"
"version" "1.7.1"
"@vue/preload-webpack-plugin@^1.1.0":
"integrity" "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ=="
"resolved" "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz"
@ -11080,6 +11100,11 @@
"resolved" "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz"
"version" "1.1.2"
"vue-demi@^0.13.11":
"integrity" "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A=="
"resolved" "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz"
"version" "0.13.11"
"vue-eslint-parser@^7.0.0":
"integrity" "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg=="
"resolved" "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz"
@ -11152,7 +11177,7 @@
"resolved" "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
"version" "1.9.1"
"vue@*", "vue@^2 || ^3.0.0-0", "vue@^2.5.17", "vue@^2.x", "vue@^3.0.0", "vue@2.6.10", "vue@2.x":
"vue@*", "vue@^2 || ^3.0.0-0", "vue@^2.0.0 || >=3.0.0", "vue@^2.5.17", "vue@^2.x", "vue@^3.0.0", "vue@^3.0.0-0 || ^2.6.0", "vue@>= 2.5 < 2.7", "vue@2.6.10", "vue@2.x":
"integrity" "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
"resolved" "https://registry.npmmirror.com/vue/-/vue-2.6.10.tgz"
"version" "2.6.10"