|
@@ -1,113 +1,79 @@
|
|
|
<template>
|
|
|
<div class="common-layout">
|
|
|
<el-container>
|
|
|
- <el-header
|
|
|
- class="nav"
|
|
|
- style="position: sticky; top: 0; left: 0; width: 100%; z-index: 999"
|
|
|
- >
|
|
|
+ <el-header class="nav" style="position: sticky; top: 0; left: 0; width: 100%; z-index: 999">
|
|
|
<div class="nav-top">
|
|
|
<div>
|
|
|
- <img class="logoImg" src="@/assets/images/logos.png" /><span
|
|
|
- >聚合智慧文档管理系统</span
|
|
|
- >
|
|
|
+ <img class="logoImg" src="@/assets/images/logos.png" /><span>聚合智慧文档管理系统</span>
|
|
|
</div>
|
|
|
<div class="search">
|
|
|
- <el-input
|
|
|
- v-model="searchText"
|
|
|
- maxlength="32"
|
|
|
- class="w-50 m-2"
|
|
|
- size="small"
|
|
|
- placeholder="搜索文件"
|
|
|
- suffix-icon="Search"
|
|
|
- clearable
|
|
|
- @change="toSearch"
|
|
|
- @@keyup.enter="toSearch"
|
|
|
- />
|
|
|
+ <el-input v-model="searchText" maxlength="32" class="w-50 m-2" size="small" placeholder="搜索文件"
|
|
|
+ suffix-icon="Search" clearable @keyup.enter="toSearch" />
|
|
|
</div>
|
|
|
<div>
|
|
|
- <el-dropdown
|
|
|
- @command="handleCommand"
|
|
|
- class="right-menu-item hover-effect"
|
|
|
- trigger="click"
|
|
|
- >
|
|
|
+ <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
|
|
|
<div class="avatar-wrapper">
|
|
|
- <img
|
|
|
- :src="
|
|
|
- userStore.avatar
|
|
|
- ? userStore.avatar
|
|
|
- : '@/assets/images/profile.png'
|
|
|
+ <img :src="userStore.avatar
|
|
|
+ ? userStore.avatar
|
|
|
+ : '@/assets/images/profile.png'
|
|
|
" class="head-img" /><span style="cursor: pointer;margin-right: 6px;">{{ userStore.name }}</span>
|
|
|
- <el-icon><ArrowDown /></el-icon>
|
|
|
- </div>
|
|
|
- <template #dropdown>
|
|
|
- <el-dropdown-menu>
|
|
|
- <router-link to="/user/profile">
|
|
|
- <el-dropdown-item>个人中心</el-dropdown-item>
|
|
|
- </router-link>
|
|
|
- <el-dropdown-item divided command="logout">
|
|
|
- <span>退出登录</span>
|
|
|
- </el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </template>
|
|
|
- </el-dropdown>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-header>
|
|
|
- <el-container>
|
|
|
- <el-aside width="92px" class="asides">
|
|
|
- <div class="aside-con">
|
|
|
- <router-link :to="item.path" v-for="(item, index) in menuList.data" :key="index"
|
|
|
- @click="clickPath(index, item)">
|
|
|
- <div style="position: relative" :class="
|
|
|
- $route.path == item.path
|
|
|
- ? 'acitve-img-style img-style'
|
|
|
- : 'img-style'
|
|
|
+ <el-icon>
|
|
|
+ <ArrowDown />
|
|
|
+ </el-icon>
|
|
|
+ </div>
|
|
|
+ <template #dropdown>
|
|
|
+ <el-dropdown-menu>
|
|
|
+ <router-link to="/user/profile">
|
|
|
+ <el-dropdown-item>个人中心</el-dropdown-item>
|
|
|
+ </router-link>
|
|
|
+ <el-dropdown-item divided command="logout">
|
|
|
+ <span>退出登录</span>
|
|
|
+ </el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </template>
|
|
|
+ </el-dropdown>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-header>
|
|
|
+ <el-container>
|
|
|
+ <el-aside width="92px" class="asides">
|
|
|
+ <div class="aside-con">
|
|
|
+ <router-link :to="item.path" v-for="(item, index) in menuList.data" :key="index"
|
|
|
+ @click="clickPath(index, item)">
|
|
|
+ <div style="position: relative" :class="$route.path == item.path
|
|
|
+ ? 'acitve-img-style img-style'
|
|
|
+ : 'img-style'
|
|
|
">
|
|
|
- <img :src="$route.path == item.path ? item.beimgs : item.imgs" />
|
|
|
- <div class="text-style" v-if="$route.path != item.path">
|
|
|
- {{ item.label }}
|
|
|
- </div>
|
|
|
- <span class="yuandian" v-if="
|
|
|
- hasNewMessage &&
|
|
|
- item.path == '/index' &&
|
|
|
- ($route.path != item.path || isSwitchFileIframe)
|
|
|
+ <img :src="$route.path == item.path ? item.beimgs : item.imgs" />
|
|
|
+ <div class="text-style" v-if="$route.path != item.path">
|
|
|
+ {{ item.label }}
|
|
|
+ </div>
|
|
|
+ <span class="yuandian" v-if="hasNewMessage &&
|
|
|
+ item.path == '/index' &&
|
|
|
+ ($route.path != item.path || isSwitchFileIframe)
|
|
|
"></span>
|
|
|
- </div>
|
|
|
- </router-link><br />
|
|
|
- </div>
|
|
|
- </el-aside>
|
|
|
- <el-main class="main">
|
|
|
- <div class="tab_box">
|
|
|
- <!-- <el-tabs
|
|
|
+ </div>
|
|
|
+ </router-link><br />
|
|
|
+ </div>
|
|
|
+ </el-aside>
|
|
|
+ <el-main class="main">
|
|
|
+ <div class="tab_box">
|
|
|
+ <!-- <el-tabs
|
|
|
v-model="editableTabsValue"
|
|
|
@tab-change="clickTab"
|
|
|
@tab-add="addTab"
|
|
|
type="card"
|
|
|
class="common-tabs"
|
|
|
> -->
|
|
|
- <el-tabs
|
|
|
- v-model="editableTabsValue"
|
|
|
- @tab-add="addTab"
|
|
|
- type="card"
|
|
|
- class="common-tabs"
|
|
|
- >
|
|
|
+ <el-tabs v-model="editableTabsValue" @tab-add="addTab" type="card" class="common-tabs">
|
|
|
<!-- <el-tab-pane label="首页" @click="clickTab('/index')"> </el-tab-pane> -->
|
|
|
- <el-tab-pane
|
|
|
- v-for="(item, index) in toRaw(editableTabs)"
|
|
|
- :key="item.path"
|
|
|
- :label="item.label"
|
|
|
- :name="item.path"
|
|
|
- :data-item="JSON.stringify(item)"
|
|
|
- >
|
|
|
+ <el-tab-pane v-for="(item, index) in toRaw(editableTabs)" :key="item.path" :label="item.label"
|
|
|
+ :name="item.path" :data-item="JSON.stringify(item)">
|
|
|
<template #label>
|
|
|
<div class="tab_pane" @click="paneClick(item)">
|
|
|
<div class="tab_text">{{ item.label }}</div>
|
|
|
- <img
|
|
|
- v-if="item.label != '首页'"
|
|
|
- src="@/assets/images/close.png"
|
|
|
- @click="closeTab(item, index, $event)"
|
|
|
- alt=""
|
|
|
- />
|
|
|
+ <img v-if="item.label != '首页'" src="@/assets/images/close.png" @click="closeTab(item, index, $event)"
|
|
|
+ alt="" />
|
|
|
</div>
|
|
|
<!-- <router-link
|
|
|
:key="item"
|
|
@@ -129,11 +95,7 @@
|
|
|
<template #label>
|
|
|
<div class="tab_pane" @click="filePaneClick(item)">
|
|
|
<div class="tab_text">{{ item.name }}</div>
|
|
|
- <img
|
|
|
- src="@/assets/images/close.png"
|
|
|
- @click="closeFileTab(item, index, $event)"
|
|
|
- alt=""
|
|
|
- />
|
|
|
+ <img src="@/assets/images/close.png" @click="closeFileTab(item, index, $event)" alt="" />
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-tab-pane>
|
|
@@ -141,7 +103,7 @@
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
<div v-show="isAlive">
|
|
|
- <router-view v-slot="{ Component }">
|
|
|
+ <router-view v-slot="{ Component }" :key="$router.currentRoute.value.fullPath">
|
|
|
<KeepAlive :exclude="['identifyFont', 'allback', 'search']">
|
|
|
<component :is="Component" />
|
|
|
</KeepAlive>
|
|
@@ -150,16 +112,8 @@
|
|
|
<div v-show="!isAlive" style="width: 100%">
|
|
|
<div v-for="item in iFrameData" :key="item.id">
|
|
|
<div style="width: 100%" v-show="item.show">
|
|
|
- <iframe
|
|
|
- :src="item.src"
|
|
|
- frameborder="0"
|
|
|
- :id="`iframe${item.id}`"
|
|
|
- :name="`iframe${item.id}`"
|
|
|
- width="100%"
|
|
|
- height="800px"
|
|
|
- class="iframeBox"
|
|
|
- v-show="item.show"
|
|
|
- ></iframe>
|
|
|
+ <iframe :src="item.src" frameborder="0" :id="`iframe${item.id}`" :name="`iframe${item.id}`" width="100%"
|
|
|
+ height="800px" class="iframeBox" v-show="item.show"></iframe>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -170,7 +124,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { nextTick, onMounted, provide, ref,watchEffect,watch } from "vue";
|
|
|
+import { nextTick, onMounted, provide, ref, watchEffect, watch } from "vue";
|
|
|
import { ElMessageBox, ElMessage } from "element-plus";
|
|
|
import useAppStore from "@/store/modules/app";
|
|
|
import useUserStore from "@/store/modules/user";
|
|
@@ -214,7 +168,7 @@ const wangzhi = import.meta.env.VITE_APP_BASE_API;
|
|
|
const isAlive = ref(true);
|
|
|
const toFileData = ref();
|
|
|
const uid = useUserStore().uid;
|
|
|
-let hasNewMessage=ref(false)
|
|
|
+let hasNewMessage = ref(false)
|
|
|
let isSwitchFileIframe = ref(false); //是否切换到文件预览标签
|
|
|
const iFrameData = ref(JSON.parse(sessionStorage.getItem('fileTabData')) || [
|
|
|
{
|
|
@@ -222,7 +176,7 @@ const iFrameData = ref(JSON.parse(sessionStorage.getItem('fileTabData')) || [
|
|
|
// src: `${window.location.origin}/fileEdit?clickRowId=113`,
|
|
|
show: false,
|
|
|
name: "file1",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 2,
|
|
@@ -230,89 +184,89 @@ const iFrameData = ref(JSON.parse(sessionStorage.getItem('fileTabData')) || [
|
|
|
// src: `http://192.168.1.9:81/fileEdit?clickRowId=1198`,
|
|
|
show: false,
|
|
|
name: "file2",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 3,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 4,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 5,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 6,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 7,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 8,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 9,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
{
|
|
|
id: 10,
|
|
|
src: ``,
|
|
|
show: false,
|
|
|
name: "",
|
|
|
- docId:''
|
|
|
+ docId: ''
|
|
|
},
|
|
|
]);
|
|
|
//--------tabs-----------------
|
|
|
let tabIndex = 2;
|
|
|
-const editableTabsValue = ref(JSON.parse(sessionStorage.getItem('editableTabsValue')) ||"/index");
|
|
|
+const editableTabsValue = ref(JSON.parse(sessionStorage.getItem('editableTabsValue')) || "/index");
|
|
|
// const editableTabsValue = ref("/index");
|
|
|
-const editableTabs = ref(JSON.parse(sessionStorage.getItem('tabData')) ||[{label:'首页',path:'/reindex'}]);
|
|
|
+const editableTabs = ref(JSON.parse(sessionStorage.getItem('tabData')) || [{ label: '首页', path: '/reindex' }]);
|
|
|
|
|
|
- // const removeTab = (targetName) => {
|
|
|
- // const tabs = editableTabs.value;
|
|
|
- // let activeName = editableTabsValue.value;
|
|
|
- // if (activeName === targetName) {
|
|
|
- // tabs.forEach((tab, index) => {
|
|
|
- // if (tab.name === targetName) {
|
|
|
- // const nextTab = tabs[index + 1] || tabs[index - 1];
|
|
|
- // if (nextTab) {
|
|
|
- // activeName = nextTab.name;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // });
|
|
|
- // }
|
|
|
+// const removeTab = (targetName) => {
|
|
|
+// const tabs = editableTabs.value;
|
|
|
+// let activeName = editableTabsValue.value;
|
|
|
+// if (activeName === targetName) {
|
|
|
+// tabs.forEach((tab, index) => {
|
|
|
+// if (tab.name === targetName) {
|
|
|
+// const nextTab = tabs[index + 1] || tabs[index - 1];
|
|
|
+// if (nextTab) {
|
|
|
+// activeName = nextTab.name;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// });
|
|
|
+// }
|
|
|
|
|
|
- // editableTabsValue.value = activeName;
|
|
|
- // editableTabs.value = tabs.filter((tab) => tab.name !== targetName);
|
|
|
- // };
|
|
|
- //-------------------------
|
|
|
+// editableTabsValue.value = activeName;
|
|
|
+// editableTabs.value = tabs.filter((tab) => tab.name !== targetName);
|
|
|
+// };
|
|
|
+//-------------------------
|
|
|
|
|
|
function reload() {
|
|
|
isAlive.value = false;
|
|
@@ -327,7 +281,7 @@ function toggleSideBar() {
|
|
|
appStore.toggleSideBar();
|
|
|
}
|
|
|
const logingName = ref("");
|
|
|
-let lisetenMessageTime=null;
|
|
|
+let lisetenMessageTime = null;
|
|
|
onMounted(() => {
|
|
|
logingName.value = Cookies.get("username");
|
|
|
clearInterval(lisetenMessageTime)
|
|
@@ -335,28 +289,35 @@ onMounted(() => {
|
|
|
//if(router.currentRoute.value.path=='/index') return;
|
|
|
//console.log("===============window.noReadList:", localStorage.getItem("noreadlist"),'===========',isSwitchFileIframe.value)
|
|
|
let tmplist = localStorage.getItem("noreadlist")
|
|
|
- if(tmplist==null || tmplist==''){
|
|
|
+ if (tmplist == null || tmplist == '') {
|
|
|
hasNewMessage.value = false
|
|
|
return
|
|
|
}
|
|
|
tmplist = JSON.parse(tmplist);
|
|
|
- if(tmplist!=null)hasNewMessage.value = true
|
|
|
+ if (tmplist != null) hasNewMessage.value = true
|
|
|
else hasNewMessage.value = false
|
|
|
}, 1000);
|
|
|
// console.log('onMt',editableTabsValue.value);
|
|
|
// console.log('type',typeof editableTabsValue.value);
|
|
|
|
|
|
- nextTick(()=>{ // 要放在对响应式数据修改之后
|
|
|
- if(typeof editableTabsValue.value == 'number'){
|
|
|
+ nextTick(() => { // 要放在对响应式数据修改之后
|
|
|
+ if (typeof editableTabsValue.value == 'number') {
|
|
|
setTimeout(() => {
|
|
|
iframeSize(editableTabsValue.value)
|
|
|
}, 1000);
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
+
|
|
|
|
|
|
// console.log('router',router)
|
|
|
});
|
|
|
+watchEffect(async () => {
|
|
|
+ if (router.currentRoute.value.path == '/index') return;
|
|
|
+ if (websoctStore.noReadList != null) hasNewMessage.value = true
|
|
|
+ else hasNewMessage.value = false
|
|
|
+ // console.log("===============websoctStore.noReadList:",websoctStore.noReadList,'===========',hasNewMessage.value)
|
|
|
+});
|
|
|
+
|
|
|
|
|
|
function handleCommand(command) {
|
|
|
switch (command) {
|
|
@@ -383,7 +344,7 @@ function logout() {
|
|
|
location.href = "/index";
|
|
|
});
|
|
|
})
|
|
|
- .catch(() => {});
|
|
|
+ .catch(() => { });
|
|
|
}
|
|
|
|
|
|
// 跳转到全文搜索
|
|
@@ -398,7 +359,7 @@ const toSearch = async () => {
|
|
|
pageNum: 1,
|
|
|
};
|
|
|
const res = await flieSearch(query);
|
|
|
- // console.log("res", res);
|
|
|
+ console.log("res", res);
|
|
|
if (res) {
|
|
|
const itemData = {
|
|
|
label:'全局搜索',
|
|
@@ -410,23 +371,24 @@ const toSearch = async () => {
|
|
|
}
|
|
|
// console.log("res", res);
|
|
|
// console.log("router", route.path);
|
|
|
- // if (route.path != "/search") {
|
|
|
- // router.push({
|
|
|
- // name: "search",
|
|
|
- // params: {
|
|
|
- // searchData: JSON.stringify(res),
|
|
|
- // searchText: searchText.value,
|
|
|
- // },
|
|
|
- // });
|
|
|
- // } else {
|
|
|
- // router.replace({
|
|
|
- // path: "/allback",
|
|
|
- // query: {
|
|
|
- // searchData: JSON.stringify(res),
|
|
|
- // searchText: searchText.value,
|
|
|
- // },
|
|
|
- // });
|
|
|
- // }
|
|
|
+ if (route.path != "/search") {
|
|
|
+ let listArr = JSON.stringify(res);
|
|
|
+ router.push({
|
|
|
+ name: 'search',
|
|
|
+ params: {
|
|
|
+ listArr: listArr,
|
|
|
+ searchText: searchText.value
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ router.replace({
|
|
|
+ path: "/allback",
|
|
|
+ query: {
|
|
|
+ searchData: JSON.stringify(res),
|
|
|
+ searchText: searchText.value,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
const emits = defineEmits(["setLayout"]);
|
|
@@ -507,30 +469,30 @@ const menuList = reactive({
|
|
|
],
|
|
|
});
|
|
|
|
|
|
- const roles = useUserStore().roles;
|
|
|
- const permissionRoles = ['admin','dept','system','audit']
|
|
|
- const super_admin = "admin";
|
|
|
- const hasRole = roles.some(role => {
|
|
|
- return super_admin === role || permissionRoles.includes(role)
|
|
|
- })
|
|
|
- if(hasRole){
|
|
|
- menuList.data.push(
|
|
|
- {
|
|
|
- label: "系统管理",
|
|
|
- path: "/admin",
|
|
|
- imgs: system,
|
|
|
- beimgs: issystem,
|
|
|
- }
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
+const roles = useUserStore().roles;
|
|
|
+const permissionRoles = ['admin', 'dept', 'system', 'audit']
|
|
|
+const super_admin = "admin";
|
|
|
+const hasRole = roles.some(role => {
|
|
|
+ return super_admin === role || permissionRoles.includes(role)
|
|
|
+})
|
|
|
+if (hasRole) {
|
|
|
+ menuList.data.push(
|
|
|
+ {
|
|
|
+ label: "系统管理",
|
|
|
+ path: "/admin",
|
|
|
+ imgs: system,
|
|
|
+ beimgs: issystem,
|
|
|
+ }
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
const clickPath = (index, items) => {
|
|
|
items = toRaw(items);
|
|
|
- localStorage.setItem("inChat",items.path=="/index"?1:0)
|
|
|
+ localStorage.setItem("inChat", items.path == "/index" ? 1 : 0)
|
|
|
// toFileData.value = null
|
|
|
console.log("clickPathitems", items);
|
|
|
// editableTabs.value = arr;
|
|
|
- isSwitchFileIframe.value=false
|
|
|
+ isSwitchFileIframe.value = false
|
|
|
const arr = toRaw(editableTabs.value);
|
|
|
if (!arr.some((item) => item.label == items.label)) {
|
|
|
editableTabs.value.push({
|
|
@@ -568,7 +530,7 @@ const clickTab = (item) => {
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
- localStorage.setItem("inChat",url=="/index" ? 1: 0)
|
|
|
+ localStorage.setItem("inChat", url == "/index" ? 1 : 0)
|
|
|
let regExp = new RegExp(/^\//);
|
|
|
if (!regExp.test(url)) {
|
|
|
const data = JSON.parse(url);
|
|
@@ -583,7 +545,7 @@ const clickTab = (item) => {
|
|
|
},
|
|
|
});
|
|
|
} else {
|
|
|
- editableTabsValue.value = url
|
|
|
+ editableTabsValue.value = url
|
|
|
router.push({
|
|
|
path: item+'?dirId='+item,
|
|
|
});
|
|
@@ -592,6 +554,7 @@ const clickTab = (item) => {
|
|
|
};
|
|
|
const paneClick = (item) => {
|
|
|
// 可以拿到当前的标签对象
|
|
|
+ console.log(item, 'pane');
|
|
|
isAlive.value = true;
|
|
|
isSwitchFileIframe.value = false
|
|
|
// console.log("paneItem", item);
|
|
@@ -605,13 +568,14 @@ const paneClick = (item) => {
|
|
|
};
|
|
|
// 点击文件标签
|
|
|
const filePaneClick = (item) => {
|
|
|
- localStorage.setItem("inChat",0)
|
|
|
+ localStorage.setItem("inChat", 0)
|
|
|
console.log("filePaneClickitem", item);
|
|
|
isSwitchFileIframe.value = true
|
|
|
+ console.log(98588546543);
|
|
|
const row = toRaw(item);
|
|
|
const arr = iFrameData.value.map((par) => {
|
|
|
if (par.id === row.id) {
|
|
|
- // editableTabsValue.value = row.id
|
|
|
+ // editableTabsValue.value = row.id
|
|
|
par.show = true;
|
|
|
// document.getElementById('iframe'+par.id).window.document.iframe[0]
|
|
|
const outIframe = document.getElementById("iframe" + par.id);
|
|
@@ -635,7 +599,7 @@ const filePaneClick = (item) => {
|
|
|
iFrameData.value = arr;
|
|
|
// console.log("Clicknewfilearr", iFrameData.value);
|
|
|
isAlive.value = false;
|
|
|
-// console.log("editableTabsValue", editableTabsValue.value);
|
|
|
+ // console.log("editableTabsValue", editableTabsValue.value);
|
|
|
};
|
|
|
// 创建文件的标签
|
|
|
const addFileTab = (data,bool) => {
|
|
@@ -644,26 +608,26 @@ const addFileTab = (data,bool) => {
|
|
|
const thisData = JSON.parse(JSON.stringify(toRaw(data)));
|
|
|
const oldIFrameData = iFrameData.value;
|
|
|
const canAdd = oldIFrameData.some((par) => par.src == ""); //是否达到上限
|
|
|
- if (!canAdd) return ElMessage.error("已到最大数量,请先关闭其他文件!");
|
|
|
+ if (!canAdd) return ElMessage.error("已到最大数量,请先关闭其他文件!");
|
|
|
const hasThis = oldIFrameData.find((par) => par.docId == data.docId);//是否已存在
|
|
|
- if (hasThis){
|
|
|
+ if (hasThis) {
|
|
|
const thisPane = toRaw(hasThis)
|
|
|
// console.log('hasThis',thisPane);
|
|
|
const arr = oldIFrameData.map((par) => {
|
|
|
- if (par.id == thisPane.id) {
|
|
|
- par.show = true
|
|
|
- editableTabsValue.value = par.id// 标签跳转
|
|
|
- setTimeout(() => {
|
|
|
-
|
|
|
- iframeSize(par.id)
|
|
|
- }, 1000);
|
|
|
- }else{
|
|
|
- par.show = false
|
|
|
- }
|
|
|
- return toRaw(par);
|
|
|
- });
|
|
|
- iFrameData.value = arr;
|
|
|
- isAlive.value = false;
|
|
|
+ if (par.id == thisPane.id) {
|
|
|
+ par.show = true
|
|
|
+ editableTabsValue.value = par.id// 标签跳转
|
|
|
+ setTimeout(() => {
|
|
|
+
|
|
|
+ iframeSize(par.id)
|
|
|
+ }, 1000);
|
|
|
+ } else {
|
|
|
+ par.show = false
|
|
|
+ }
|
|
|
+ return toRaw(par);
|
|
|
+ });
|
|
|
+ iFrameData.value = arr;
|
|
|
+ isAlive.value = false;
|
|
|
return
|
|
|
}
|
|
|
const arr = oldIFrameData.map((par) => {
|
|
@@ -677,13 +641,13 @@ const addFileTab = (data,bool) => {
|
|
|
thisData.docId = "";
|
|
|
editableTabsValue.value = par.id// 新建时标签跳转
|
|
|
setTimeout(() => {
|
|
|
-
|
|
|
+
|
|
|
iframeSize(par.id)
|
|
|
}, 1000);
|
|
|
}
|
|
|
- }else{
|
|
|
- par.show = false
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ par.show = false
|
|
|
+ }
|
|
|
return toRaw(par);
|
|
|
});
|
|
|
iFrameData.value = arr;
|
|
@@ -738,7 +702,7 @@ const closeTab = (item, index, e) => {
|
|
|
// console.log('nextTab',toRaw(nextTab));
|
|
|
// console.log('item',item);
|
|
|
// console.log('editableTabsValue',editableTabsValue.value);
|
|
|
- if(editableTabsValue.value == item.path){
|
|
|
+ if (editableTabsValue.value == item.path) {
|
|
|
|
|
|
paneClick(toRaw(nextTab));
|
|
|
}
|
|
@@ -757,92 +721,92 @@ const closeFileTab = (item, index, e) => {
|
|
|
par.src = "";
|
|
|
par.show = false;
|
|
|
par.name = "";
|
|
|
- par.docId = ''
|
|
|
+ par.docId = ''
|
|
|
}
|
|
|
return toRaw(par);
|
|
|
});
|
|
|
- if(data.id == editableTabsValue.value){
|
|
|
- console.log('data.id',data.id);
|
|
|
+ if (data.id == editableTabsValue.value) {
|
|
|
+ console.log('data.id', data.id);
|
|
|
let isLeft = true
|
|
|
//如果不是第一个就左移
|
|
|
- for (let thisId = data.id; thisId>0; thisId--) {
|
|
|
- console.log(arr[thisId - 1].id,arr[thisId - 1].src);
|
|
|
- if(arr[thisId - 1].src){
|
|
|
- arr[thisId -1].show = true
|
|
|
+ for (let thisId = data.id; thisId > 0; thisId--) {
|
|
|
+ console.log(arr[thisId - 1].id, arr[thisId - 1].src);
|
|
|
+ if (arr[thisId - 1].src) {
|
|
|
+ arr[thisId - 1].show = true
|
|
|
isLeft = false
|
|
|
editableTabsValue.value = arr[thisId - 1].id
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
// 如果是第一个就跳到文件夹标签右一
|
|
|
- if(isLeft){
|
|
|
+ if (isLeft) {
|
|
|
const num = toRaw(editableTabs.value).length - 1
|
|
|
const nextTab = editableTabs.value[num]
|
|
|
- paneClick(toRaw(nextTab));
|
|
|
- console.log('left',nextTab);
|
|
|
+ paneClick(toRaw(nextTab));
|
|
|
+ console.log('left', nextTab);
|
|
|
}
|
|
|
// isAlive.value = true;
|
|
|
}
|
|
|
- iFrameData.value = arr;
|
|
|
+ iFrameData.value = arr;
|
|
|
// console.log("index", index);
|
|
|
console.log("iFrameData", iFrameData.value);
|
|
|
};
|
|
|
// 控制iframe大小
|
|
|
-const iframeSize = (id)=>{
|
|
|
- const outIframe = document.getElementById("iframe" + id);
|
|
|
+const iframeSize = (id) => {
|
|
|
+ const outIframe = document.getElementById("iframe" + id);
|
|
|
const inIframe =
|
|
|
outIframe.contentDocument.getElementsByTagName("iframe")[0];
|
|
|
- console.log('outIframe',outIframe.parentElement);
|
|
|
- console.error(outIframe.parentElement);
|
|
|
- inIframe.style.height = outIframe.style.height =
|
|
|
- outIframe.parentElement.offsetHeight + "px";
|
|
|
- inIframe.style.width = outIframe.style.width =
|
|
|
- outIframe.parentElement.offsetWidth + "px";
|
|
|
+ console.log('outIframe', outIframe.parentElement);
|
|
|
+ console.error(outIframe.parentElement);
|
|
|
+ inIframe.style.height = outIframe.style.height =
|
|
|
+ outIframe.parentElement.offsetHeight + "px";
|
|
|
+ inIframe.style.width = outIframe.style.width =
|
|
|
+ outIframe.parentElement.offsetWidth + "px";
|
|
|
|
|
|
- // console.log('dom',outIframe.parentElement.offsetWidth);
|
|
|
- // console.log('inIframe',inIframe);
|
|
|
+ // console.log('dom',outIframe.parentElement.offsetWidth);
|
|
|
+ // console.log('inIframe',inIframe);
|
|
|
}
|
|
|
// 监听和保存标签信息
|
|
|
-const setTabLocal = (data)=>{
|
|
|
+const setTabLocal = (data) => {
|
|
|
// console.log('setTabLocal',data);
|
|
|
sessionStorage.setItem('tabData', JSON.stringify(data))
|
|
|
}
|
|
|
-const setFileTabLocal = (data)=>{
|
|
|
- console.log('setFileTabLocal',data);
|
|
|
+const setFileTabLocal = (data) => {
|
|
|
+ console.log('setFileTabLocal', data);
|
|
|
isSwitchFileIframe.value = true
|
|
|
// console.log('setFileTabLocal',data);
|
|
|
sessionStorage.setItem('fileTabData', JSON.stringify(data))
|
|
|
}
|
|
|
-const setEditableTabsValue = (data)=>{
|
|
|
+const setEditableTabsValue = (data) => {
|
|
|
// console.log('setEditableTabsValue',data);
|
|
|
sessionStorage.setItem('editableTabsValue', JSON.stringify(data))
|
|
|
}
|
|
|
watch(() => iFrameData.value, (newValue, oldValue) => {
|
|
|
- // console.log('iFrameData 发生改变了', newValue, oldValue);
|
|
|
- setFileTabLocal(toRaw(toRaw(newValue)))
|
|
|
-
|
|
|
+ // console.log('iFrameData 发生改变了', newValue, oldValue);
|
|
|
+ setFileTabLocal(toRaw(toRaw(newValue)))
|
|
|
+
|
|
|
}, {
|
|
|
- immediate: true,
|
|
|
- deep: true
|
|
|
+ immediate: true,
|
|
|
+ deep: true
|
|
|
});
|
|
|
watch(() => editableTabs.value, (newValue, oldValue) => {
|
|
|
- // console.log('editableTabs 发生改变了', newValue, oldValue);
|
|
|
- setTabLocal(toRaw(newValue))
|
|
|
+ // console.log('editableTabs 发生改变了', newValue, oldValue);
|
|
|
+ setTabLocal(toRaw(newValue))
|
|
|
}, {
|
|
|
- immediate: true,
|
|
|
- deep: true
|
|
|
+ immediate: true,
|
|
|
+ deep: true
|
|
|
});
|
|
|
watch(() => editableTabsValue.value, (newValue, oldValue) => {
|
|
|
- // console.log('editableTabsValue 发生改变了', newValue, oldValue);
|
|
|
- setEditableTabsValue(toRaw(newValue))
|
|
|
- let regExp = new RegExp(/^\//);
|
|
|
- if(!regExp.test(editableTabsValue.value)){
|
|
|
- isAlive.value = false;
|
|
|
- }
|
|
|
+ // console.log('editableTabsValue 发生改变了', newValue, oldValue);
|
|
|
+ setEditableTabsValue(toRaw(newValue))
|
|
|
+ let regExp = new RegExp(/^\//);
|
|
|
+ if (!regExp.test(editableTabsValue.value)) {
|
|
|
+ isAlive.value = false;
|
|
|
+ }
|
|
|
}, {
|
|
|
- immediate: true,
|
|
|
- deep: true
|
|
|
+ immediate: true,
|
|
|
+ deep: true
|
|
|
});
|
|
|
</script>
|
|
|
|
|
@@ -869,17 +833,17 @@ watch(() => editableTabsValue.value, (newValue, oldValue) => {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
|
|
|
- & > div:first-child {
|
|
|
+ &>div:first-child {
|
|
|
font-family: "Inter-SemiBold";
|
|
|
}
|
|
|
|
|
|
- & > div:first-child,
|
|
|
- & > div:last-child {
|
|
|
+ &>div:first-child,
|
|
|
+ &>div:last-child {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
color: #fff;
|
|
|
|
|
|
- & > img {
|
|
|
+ &>img {
|
|
|
width: 48px;
|
|
|
height: 48px;
|
|
|
}
|
|
@@ -906,6 +870,7 @@ watch(() => editableTabsValue.value, (newValue, oldValue) => {
|
|
|
}
|
|
|
|
|
|
.search {
|
|
|
+
|
|
|
.w-50,
|
|
|
:deep .el-input {
|
|
|
width: 400px;
|
|
@@ -998,7 +963,7 @@ watch(() => editableTabsValue.value, (newValue, oldValue) => {
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
|
|
|
- & > img {
|
|
|
+ &>img {
|
|
|
width: 40px;
|
|
|
height: 40px;
|
|
|
}
|
|
@@ -1024,6 +989,7 @@ watch(() => editableTabsValue.value, (newValue, oldValue) => {
|
|
|
|
|
|
//鼠标移动上去的选中色
|
|
|
.type_popper {
|
|
|
+
|
|
|
.el-select-dropdown__item.hover,
|
|
|
.el-select-dropdown__item:hover {
|
|
|
background: #6f85b5 !important;
|