|
@@ -91,7 +91,7 @@
|
|
|
type="card"
|
|
|
class="common-tabs"
|
|
|
>
|
|
|
- <el-tab-pane label="首页"> </el-tab-pane>
|
|
|
+ <!-- <el-tab-pane label="首页" @click="clickTab('/index')"> </el-tab-pane> -->
|
|
|
<el-tab-pane
|
|
|
v-for="(item, index) in toRaw(editableTabs)"
|
|
|
:key="item.path"
|
|
@@ -103,6 +103,7 @@
|
|
|
<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=""
|
|
@@ -124,7 +125,7 @@
|
|
|
</el-tab-pane>
|
|
|
<!-- 文件的iframe -->
|
|
|
<div v-for="item in iFrameData" :key="item.id">
|
|
|
- <el-tab-pane :label="item.name" v-if="item.src">
|
|
|
+ <el-tab-pane :label="item.name" :name="item.id" v-if="item.src">
|
|
|
<template #label>
|
|
|
<div class="tab_pane" @click="filePaneClick(item)">
|
|
|
<div class="tab_text">{{ item.name }}</div>
|
|
@@ -168,102 +169,127 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
- import {
|
|
|
- nextTick,
|
|
|
- onMounted,
|
|
|
- provide,
|
|
|
- ref,
|
|
|
- watchEffect
|
|
|
- } from "vue";
|
|
|
- import {
|
|
|
- ElMessageBox,
|
|
|
- ElMessage
|
|
|
- } from "element-plus";
|
|
|
- import useAppStore from "@/store/modules/app";
|
|
|
- import useUserStore from "@/store/modules/user";
|
|
|
- import useSettingsStore from "@/store/modules/settings";
|
|
|
- import Cookies from "js-cookie";
|
|
|
- import chat from "@/assets/images/chat.png";
|
|
|
- import bechat from "@/assets/images/bechat.png";
|
|
|
- import zuijin from "@/assets/images/zuijin.png";
|
|
|
- import bezuijin from "@/assets/images/bezuijin.png";
|
|
|
- import colloect from "@/assets/images/colloect.png";
|
|
|
- import becolloect from "@/assets/images/becolloect.png";
|
|
|
- import system from "@/assets/images/system.png";
|
|
|
- import issystem from "@/assets/images/issystem.png";
|
|
|
- import my from "@/assets/images/my.png";
|
|
|
- import bemy from "@/assets/images/bemy.png";
|
|
|
- import bumen from "@/assets/images/bumen.png";
|
|
|
- import bebumen from "@/assets/images/bebumen.png";
|
|
|
- import common from "@/assets/images/common.png";
|
|
|
- import becommon from "@/assets/images/becommon.png";
|
|
|
- import chuanshu from "@/assets/images/chuanshu.png";
|
|
|
- import bechuanshu from "@/assets/images/bechuanshu.png";
|
|
|
- import highsearch from "@/assets/images/highsearch.png";
|
|
|
- import behighsearch from "@/assets/images/behighsearch.png";
|
|
|
- import manyBody from "@/assets/images/manyBody.png";
|
|
|
- import manyBodyFalse from "@/assets/images/manyBodyFalse.png";
|
|
|
- import {
|
|
|
- AppMain,
|
|
|
- Navbar,
|
|
|
- Settings,
|
|
|
- TagsView
|
|
|
- } from "./components";
|
|
|
- import {
|
|
|
- flieSearch
|
|
|
- } from "@/api/search/search.js";
|
|
|
- import {
|
|
|
- useRouter,
|
|
|
- useRoute
|
|
|
- } from "vue-router";
|
|
|
- import useWebsoctStore from "@/store/modules/websocket";
|
|
|
- import {
|
|
|
- toRaw
|
|
|
- } from "@vue/reactivity";
|
|
|
- import iFrame from "@/components/iFrame/index.vue";
|
|
|
- const websoctStore = useWebsoctStore();
|
|
|
- const router = useRouter(); //注册路由
|
|
|
- const route = useRoute();
|
|
|
- const appStore = useAppStore();
|
|
|
- const userStore = useUserStore();
|
|
|
- const settingsStore = useSettingsStore();
|
|
|
- const searchText = ref(""); //搜索ipt的值
|
|
|
- const selectValue = ref(1); //文档空间类型
|
|
|
- const wangzhi = import.meta.env.VITE_APP_BASE_API;
|
|
|
- const isAlive = ref(true);
|
|
|
- const toFileData = ref();
|
|
|
- const uid = useUserStore().uid;
|
|
|
- let hasNewMessage = ref(false)
|
|
|
- const iFrameData = ref([{
|
|
|
- id: 1,
|
|
|
- // src: `${window.location.origin}/fileEdit?clickRowId=113`,
|
|
|
- show: false,
|
|
|
- name: "file1",
|
|
|
- },
|
|
|
- {
|
|
|
- id: 2,
|
|
|
- src: ``,
|
|
|
- // src: `http://192.168.1.9:81/fileEdit?clickRowId=1198`,
|
|
|
- show: false,
|
|
|
- name: "file2",
|
|
|
- },
|
|
|
- {
|
|
|
- id: 3,
|
|
|
- src: ``,
|
|
|
- show: false,
|
|
|
- name: "",
|
|
|
- },
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- src: ``,
|
|
|
- show: false,
|
|
|
- name: "",
|
|
|
- },
|
|
|
- ]);
|
|
|
- //--------tabs-----------------
|
|
|
- let tabIndex = 2;
|
|
|
- const editableTabsValue = ref("/index");
|
|
|
- const editableTabs = ref([]);
|
|
|
+import { nextTick, onMounted, provide, ref,watchEffect } from "vue";
|
|
|
+import { ElMessageBox, ElMessage } from "element-plus";
|
|
|
+import useAppStore from "@/store/modules/app";
|
|
|
+import useUserStore from "@/store/modules/user";
|
|
|
+import useSettingsStore from "@/store/modules/settings";
|
|
|
+import Cookies from "js-cookie";
|
|
|
+import chat from "@/assets/images/chat.png";
|
|
|
+import bechat from "@/assets/images/bechat.png";
|
|
|
+import zuijin from "@/assets/images/zuijin.png";
|
|
|
+import bezuijin from "@/assets/images/bezuijin.png";
|
|
|
+import colloect from "@/assets/images/colloect.png";
|
|
|
+import becolloect from "@/assets/images/becolloect.png";
|
|
|
+import system from "@/assets/images/system.png";
|
|
|
+import issystem from "@/assets/images/issystem.png";
|
|
|
+import my from "@/assets/images/my.png";
|
|
|
+import bemy from "@/assets/images/bemy.png";
|
|
|
+import bumen from "@/assets/images/bumen.png";
|
|
|
+import bebumen from "@/assets/images/bebumen.png";
|
|
|
+import common from "@/assets/images/common.png";
|
|
|
+import becommon from "@/assets/images/becommon.png";
|
|
|
+import chuanshu from "@/assets/images/chuanshu.png";
|
|
|
+import bechuanshu from "@/assets/images/bechuanshu.png";
|
|
|
+import highsearch from "@/assets/images/highsearch.png";
|
|
|
+import behighsearch from "@/assets/images/behighsearch.png";
|
|
|
+import manyBody from "@/assets/images/manyBody.png";
|
|
|
+import manyBodyFalse from "@/assets/images/manyBodyFalse.png";
|
|
|
+import { AppMain, Navbar, Settings, TagsView } from "./components";
|
|
|
+import { flieSearch } from "@/api/search/search.js";
|
|
|
+import { useRouter, useRoute } from "vue-router";
|
|
|
+import useWebsoctStore from "@/store/modules/websocket";
|
|
|
+import { toRaw } from "@vue/reactivity";
|
|
|
+import iFrame from "@/components/iFrame/index.vue";
|
|
|
+const websoctStore = useWebsoctStore();
|
|
|
+const router = useRouter(); //注册路由
|
|
|
+const route = useRoute();
|
|
|
+const appStore = useAppStore();
|
|
|
+const userStore = useUserStore();
|
|
|
+const settingsStore = useSettingsStore();
|
|
|
+const searchText = ref(""); //搜索ipt的值
|
|
|
+const selectValue = ref(1); //文档空间类型
|
|
|
+const wangzhi = import.meta.env.VITE_APP_BASE_API;
|
|
|
+const isAlive = ref(true);
|
|
|
+const toFileData = ref();
|
|
|
+const uid = useUserStore().uid;
|
|
|
+const iFrameData = ref([
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ // src: `${window.location.origin}/fileEdit?clickRowId=113`,
|
|
|
+ show: false,
|
|
|
+ name: "file1",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 2,
|
|
|
+ src: ``,
|
|
|
+ // src: `http://192.168.1.9:81/fileEdit?clickRowId=1198`,
|
|
|
+ show: false,
|
|
|
+ name: "file2",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 3,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 4,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 5,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 6,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 7,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 8,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 9,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 10,
|
|
|
+ src: ``,
|
|
|
+ show: false,
|
|
|
+ name: "",
|
|
|
+ docId:''
|
|
|
+ },
|
|
|
+]);
|
|
|
+//--------tabs-----------------
|
|
|
+let tabIndex = 2;
|
|
|
+const editableTabsValue = ref("/index");
|
|
|
+const editableTabs = ref([{label:'首页',path:'/reindex'}]);
|
|
|
|
|
|
// const removeTab = (targetName) => {
|
|
|
// const tabs = editableTabs.value;
|
|
@@ -284,376 +310,377 @@
|
|
|
// };
|
|
|
//-------------------------
|
|
|
|
|
|
- function reload() {
|
|
|
- isAlive.value = false;
|
|
|
- console.log(11);
|
|
|
- nextTick(() => {
|
|
|
- isAlive.value = true;
|
|
|
- });
|
|
|
- }
|
|
|
+function reload() {
|
|
|
+ isAlive.value = false;
|
|
|
+ console.log(11);
|
|
|
+ nextTick(() => {
|
|
|
+ isAlive.value = true;
|
|
|
+ });
|
|
|
+}
|
|
|
|
|
|
- provide("reload", reload);
|
|
|
+provide("reload", reload);
|
|
|
|
|
|
- function toggleSideBar() {
|
|
|
- appStore.toggleSideBar();
|
|
|
- }
|
|
|
- const logingName = ref("");
|
|
|
- onMounted(() => {
|
|
|
- logingName.value = Cookies.get("username");
|
|
|
- // console.log('router',router)
|
|
|
- });
|
|
|
-
|
|
|
- watchEffect(async() => {
|
|
|
- console.log("===============有新消息了:",websoctStore.messOne)
|
|
|
-
|
|
|
- if(websoctStore.noReadList!=null)hasNewMessage.value = true
|
|
|
- else hasNewMessage.value = false
|
|
|
- console.log("===============websoctStore.noReadList:",websoctStore.noReadList,'===========',hasNewMessage.value)
|
|
|
- });
|
|
|
-
|
|
|
- function handleCommand(command) {
|
|
|
- switch (command) {
|
|
|
- case "setLayout":
|
|
|
- setLayout();
|
|
|
- break;
|
|
|
- case "logout":
|
|
|
- logout();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+function toggleSideBar() {
|
|
|
+ appStore.toggleSideBar();
|
|
|
+}
|
|
|
+const logingName = ref("");
|
|
|
+onMounted(() => {
|
|
|
+ logingName.value = Cookies.get("username");
|
|
|
+ // console.log('router',router)
|
|
|
+});
|
|
|
+watchEffect(async() => {
|
|
|
+ console.log("===============有新消息了:",websoctStore.messOne)
|
|
|
+
|
|
|
+ if(websoctStore.noReadList!=null)hasNewMessage.value = true
|
|
|
+ else hasNewMessage.value = false
|
|
|
+ console.log("===============websoctStore.noReadList:",websoctStore.noReadList,'===========',hasNewMessage.value)
|
|
|
+});
|
|
|
+
|
|
|
+function handleCommand(command) {
|
|
|
+ switch (command) {
|
|
|
+ case "setLayout":
|
|
|
+ setLayout();
|
|
|
+ break;
|
|
|
+ case "logout":
|
|
|
+ logout();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- function logout() {
|
|
|
- ElMessageBox.confirm("确定注销并退出系统吗?", "提示", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning",
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- userStore.logOut().then(() => {
|
|
|
- location.href = "/index";
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {});
|
|
|
- }
|
|
|
+function logout() {
|
|
|
+ ElMessageBox.confirm("确定注销并退出系统吗?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ userStore.logOut().then(() => {
|
|
|
+ location.href = "/index";
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+}
|
|
|
+
|
|
|
+// 跳转到全文搜索
|
|
|
+const toSearch = async () => {
|
|
|
+ if (!searchText.value) return;
|
|
|
+ // console.log('searchText = ',searchText.value);
|
|
|
+ const query = {
|
|
|
+ keyword: searchText.value,
|
|
|
+ isAsc: "asc",
|
|
|
+ orderByColumn: "createTime",
|
|
|
+ pageSize: 3,
|
|
|
+ pageNum: 1,
|
|
|
+ };
|
|
|
+ const res = await flieSearch(query);
|
|
|
+ // console.log("res", res);
|
|
|
+ if (res) {
|
|
|
+ // console.log("res", res);
|
|
|
+ // console.log("router", route.path);
|
|
|
+ if (route.path != "/search") {
|
|
|
+ router.push({
|
|
|
+ path: "/search",
|
|
|
+ query: {
|
|
|
+ searchData: JSON.stringify(res),
|
|
|
+ searchText: searchText.value,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ router.replace({
|
|
|
+ path: "/allback",
|
|
|
+ query: {
|
|
|
+ searchData: JSON.stringify(res),
|
|
|
+ searchText: searchText.value,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+const emits = defineEmits(["setLayout"]);
|
|
|
|
|
|
- // 跳转到全文搜索
|
|
|
- const toSearch = async () => {
|
|
|
- if (!searchText.value) return;
|
|
|
- // console.log('searchText = ',searchText.value);
|
|
|
- const query = {
|
|
|
- keyword: searchText.value,
|
|
|
- isAsc: "asc",
|
|
|
- orderByColumn: "createTime",
|
|
|
- pageSize: 3,
|
|
|
- pageNum: 1,
|
|
|
- };
|
|
|
- const res = await flieSearch(query);
|
|
|
- // console.log("res", res);
|
|
|
- if (res) {
|
|
|
- // console.log("res", res);
|
|
|
- // console.log("router", route.path);
|
|
|
- if (route.path != "/search") {
|
|
|
- router.push({
|
|
|
- path: "/search",
|
|
|
- query: {
|
|
|
- searchData: JSON.stringify(res),
|
|
|
- searchText: searchText.value,
|
|
|
- },
|
|
|
- });
|
|
|
- } else {
|
|
|
- router.replace({
|
|
|
- path: "/allback",
|
|
|
- query: {
|
|
|
- searchData: JSON.stringify(res),
|
|
|
- searchText: searchText.value,
|
|
|
- },
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- const emits = defineEmits(["setLayout"]);
|
|
|
-
|
|
|
- function setLayout() {
|
|
|
- emits("setLayout");
|
|
|
+function setLayout() {
|
|
|
+ emits("setLayout");
|
|
|
+}
|
|
|
+const clickId = ref("");
|
|
|
+const menuList = reactive({
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ label: "会话消息",
|
|
|
+ path: "/index",
|
|
|
+ imgs: chat,
|
|
|
+ beimgs: bechat,
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // label: "接口",
|
|
|
+ // path: "/swagger",
|
|
|
+ // imgs: chat,
|
|
|
+ // beimgs: bechat,
|
|
|
+ // disabled:true
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ label: "最近文件",
|
|
|
+ path: "/recent",
|
|
|
+ imgs: zuijin,
|
|
|
+ beimgs: bezuijin,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "收藏文件",
|
|
|
+ path: "/collect",
|
|
|
+ imgs: colloect,
|
|
|
+ beimgs: becolloect,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "我的文件",
|
|
|
+ path: "/myfile",
|
|
|
+ imgs: my,
|
|
|
+ beimgs: bemy,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "部门文件",
|
|
|
+ path: "/department",
|
|
|
+ imgs: bumen,
|
|
|
+ beimgs: bebumen,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "公共文件",
|
|
|
+ path: "/publicment",
|
|
|
+ imgs: common,
|
|
|
+ beimgs: becommon,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "高级搜索",
|
|
|
+ path: "/highsearch",
|
|
|
+ imgs: highsearch,
|
|
|
+ beimgs: behighsearch,
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // label: "传输列表",
|
|
|
+ // path: "/transFile",
|
|
|
+ // imgs: chuanshu,
|
|
|
+ // beimgs: bechuanshu,
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: "系统管理",
|
|
|
+ // path: "/admin",
|
|
|
+ // imgs: system,
|
|
|
+ // beimgs: issystem,
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ label: "我的协作",
|
|
|
+ path: "/myjoin",
|
|
|
+ imgs: manyBody,
|
|
|
+ beimgs: manyBodyFalse,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+});
|
|
|
+const clickPath = (index, items) => {
|
|
|
+ items = toRaw(items);
|
|
|
+ // toFileData.value = null
|
|
|
+ console.log("clickPathitems", items);
|
|
|
+ // editableTabs.value = arr;
|
|
|
+ const arr = toRaw(editableTabs.value);
|
|
|
+ if (!arr.some((item) => item.label == items.label)) {
|
|
|
+ editableTabs.value.push({
|
|
|
+ label: items.label,
|
|
|
+ path: items.path,
|
|
|
+ });
|
|
|
+ //需要jSON去转 否则页面无变化 离谱得很
|
|
|
+ editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
+ } else {
|
|
|
+ toFileData.value = null;
|
|
|
+ clickTab(items.path);
|
|
|
+ }
|
|
|
+ editableTabsValue.value = items.path;
|
|
|
+ isAlive.value = true;
|
|
|
+ // console.log("editableTabs", editableTabs.value);
|
|
|
+};
|
|
|
+const clickTab = (item) => {
|
|
|
+ console.log("item", toRaw(item));
|
|
|
+ setTimeout(() => {
|
|
|
+ console.log("toFileData.value", toFileData.value);
|
|
|
+ if (toFileData.value) {
|
|
|
+ console.log(
|
|
|
+ "tofolder",
|
|
|
+ JSON.stringify(toRaw(toFileData.value.clickRowId))
|
|
|
+ );
|
|
|
+ router.push({
|
|
|
+ path: toFileData.value.path,
|
|
|
+ query: {
|
|
|
+ // row: JSON.stringify(toRaw(toFileData.value.clickRowId)),
|
|
|
+ },
|
|
|
+ });
|
|
|
+ // router.push({
|
|
|
+ // path: toFileData.value.path,
|
|
|
+ // query: {
|
|
|
+ // row: toFileData.value.row,
|
|
|
+ // },
|
|
|
+ // });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let regExp = new RegExp(/^\//);
|
|
|
+ if (!regExp.test(toRaw(item))) {
|
|
|
+ const data = JSON.parse(toRaw(item));
|
|
|
+ console.log("data", data);
|
|
|
+ router.push({
|
|
|
+ // path: "/fileEdit" + data.docId,
|
|
|
+ path: "/fileEdit",
|
|
|
+ query: {
|
|
|
+ clickRowId: data.docId,
|
|
|
+ // row:JSON.stringify(toFileData.value)
|
|
|
+ // copyRow: JSON.stringify(data),
|
|
|
+ },
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ router.push({
|
|
|
+ path: item,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, 0);
|
|
|
+};
|
|
|
+const paneClick = (item) => {
|
|
|
+ // 可以拿到当前的标签对象
|
|
|
+ isAlive.value = true;
|
|
|
+ console.log("paneItem", item);
|
|
|
+ if (item.clickRowId) {
|
|
|
+ // 判断是菜单还是目录
|
|
|
+ toFileData.value = item;
|
|
|
+ } else {
|
|
|
+ toFileData.value = null;
|
|
|
+ }
|
|
|
+ clickTab(item.path);
|
|
|
+ // console.log("isAlive", isAlive.value);
|
|
|
+};
|
|
|
+// 点击文件标签
|
|
|
+const filePaneClick = (item) => {
|
|
|
+ console.log("filePaneClickitem", item);
|
|
|
+ const row = toRaw(item);
|
|
|
+ const arr = iFrameData.value.map((par) => {
|
|
|
+ if (par.id === 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);
|
|
|
+ const inIframe =
|
|
|
+ outIframe.contentDocument.getElementsByTagName("iframe")[0];
|
|
|
+ setTimeout(() => {
|
|
|
+ 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);
|
|
|
+ }, 500);
|
|
|
+ } else {
|
|
|
+ par.show = false;
|
|
|
+ }
|
|
|
+ return toRaw(par);
|
|
|
+ });
|
|
|
+ iFrameData.value = arr;
|
|
|
+ // console.log("Clicknewfilearr", iFrameData.value);
|
|
|
+ isAlive.value = false;
|
|
|
+// console.log("editableTabsValue", editableTabsValue.value);
|
|
|
+};
|
|
|
+// 创建文件的标签
|
|
|
+const addFileTab = (data) => {
|
|
|
+ console.log("fileTabdata", data);
|
|
|
+ console.log();
|
|
|
+ const thisData = JSON.parse(JSON.stringify(toRaw(data)));
|
|
|
+ const oldIFrameData = iFrameData.value;
|
|
|
+ const canAdd = oldIFrameData.some((par) => par.src == ""); //是否达到上限
|
|
|
+ if (!canAdd) return ElMessage.error("已到最大数量,请先关闭其他文件!");
|
|
|
+ const hasThis = oldIFrameData.some((par) => par.docId == data.docId);//是否已存在
|
|
|
+ if (hasThis) return
|
|
|
+ const arr = oldIFrameData.map((par) => {
|
|
|
+ if (!par.src) {
|
|
|
+ if (thisData.docId) {
|
|
|
+ // par.src = `${window.location.origin}/fileEdit?clickRowId=${thisData.docId}`;
|
|
|
+ par.src = `${window.location.origin}/fileEdit?clickRowId=${thisData.docId}`;
|
|
|
+ par.name = data.fileName;
|
|
|
+ par.docId = data.docId
|
|
|
+ par.show = true
|
|
|
+ thisData.docId = "";
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ par.show = false
|
|
|
}
|
|
|
- const clickId = ref("");
|
|
|
- const menuList = reactive({
|
|
|
- data: [{
|
|
|
- label: "会话消息",
|
|
|
- path: "/index",
|
|
|
- imgs: chat,
|
|
|
- beimgs: bechat,
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: "接口",
|
|
|
- // path: "/swagger",
|
|
|
- // imgs: chat,
|
|
|
- // beimgs: bechat,
|
|
|
- // disabled:true
|
|
|
- // },
|
|
|
- {
|
|
|
- label: "最近文件",
|
|
|
- path: "/recent",
|
|
|
- imgs: zuijin,
|
|
|
- beimgs: bezuijin,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "收藏文件",
|
|
|
- path: "/collect",
|
|
|
- imgs: colloect,
|
|
|
- beimgs: becolloect,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "我的文件",
|
|
|
- path: "/myfile",
|
|
|
- imgs: my,
|
|
|
- beimgs: bemy,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "部门文件",
|
|
|
- path: "/department",
|
|
|
- imgs: bumen,
|
|
|
- beimgs: bebumen,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "公共文件",
|
|
|
- path: "/publicment",
|
|
|
- imgs: common,
|
|
|
- beimgs: becommon,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "高级搜索",
|
|
|
- path: "/highsearch",
|
|
|
- imgs: highsearch,
|
|
|
- beimgs: behighsearch,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "传输列表",
|
|
|
- path: "/transFile",
|
|
|
- imgs: chuanshu,
|
|
|
- beimgs: bechuanshu,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "系统管理",
|
|
|
- path: "/admin",
|
|
|
- imgs: system,
|
|
|
- beimgs: issystem,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "我的协作",
|
|
|
- path: "/myjoin",
|
|
|
- imgs: manyBody,
|
|
|
- beimgs: manyBodyFalse,
|
|
|
- },
|
|
|
- ],
|
|
|
- });
|
|
|
- const clickPath = (index, items) => {
|
|
|
- items = toRaw(items);
|
|
|
- // toFileData.value = null
|
|
|
- console.log("clickPathitems", items);
|
|
|
- // editableTabs.value = arr;
|
|
|
- const arr = toRaw(editableTabs.value);
|
|
|
- if (!arr.some((item) => item.label == items.label)) {
|
|
|
- editableTabs.value.push({
|
|
|
- label: items.label,
|
|
|
- path: items.path
|
|
|
- });
|
|
|
- //需要jSON去转 否则页面无变化 离谱得很
|
|
|
- editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
- } else {
|
|
|
- toFileData.value = null;
|
|
|
- clickTab(items.path);
|
|
|
- }
|
|
|
- editableTabsValue.value = items.path;
|
|
|
- if(items.path=='/index' && websoctStore.noReadList!=null){
|
|
|
- hasNewMessage.value = true
|
|
|
- }else{
|
|
|
- hasNewMessage.value = false
|
|
|
- }
|
|
|
- // console.log("editableTabs", editableTabs.value);
|
|
|
- };
|
|
|
- const clickTab = (item) => {
|
|
|
- const path = toRaw(item)
|
|
|
- console.log("item", path);
|
|
|
- if(path=='/index' && websoctStore.noReadList!=null){
|
|
|
- hasNewMessage.value = true
|
|
|
- }else{
|
|
|
- hasNewMessage.value = false
|
|
|
- }
|
|
|
- setTimeout(() => {
|
|
|
- console.log("toFileData.value", toFileData.value);
|
|
|
- if (toFileData.value) {
|
|
|
- console.log(
|
|
|
- "tofolder",
|
|
|
- JSON.stringify(toRaw(toFileData.value.clickRowId))
|
|
|
- );
|
|
|
- router.push({
|
|
|
- path: toFileData.value.path,
|
|
|
- query: {
|
|
|
- row: JSON.stringify(toRaw(toFileData.value.clickRowId)),
|
|
|
- },
|
|
|
- });
|
|
|
- // router.push({
|
|
|
- // path: toFileData.value.path,
|
|
|
- // query: {
|
|
|
- // row: toFileData.value.row,
|
|
|
- // },
|
|
|
- // });
|
|
|
- return;
|
|
|
- }
|
|
|
- let regExp = new RegExp(/^\//);
|
|
|
- let regFile = new RegExp(/^tofile/);
|
|
|
- if (!regExp.test(path)) {
|
|
|
- const data = JSON.parse(path);
|
|
|
- console.log("data", data);
|
|
|
- router.push({
|
|
|
- // path: "/fileEdit" + data.docId,
|
|
|
- path: "/fileEdit",
|
|
|
- query: {
|
|
|
- clickRowId: data.docId,
|
|
|
- // row:JSON.stringify(toFileData.value)
|
|
|
- // copyRow: JSON.stringify(data),
|
|
|
- },
|
|
|
- });
|
|
|
- } else {
|
|
|
- router.push({
|
|
|
- path: item,
|
|
|
- });
|
|
|
- }
|
|
|
- }, 0);
|
|
|
- };
|
|
|
- const paneClick = (item) => {
|
|
|
- // 可以拿到当前的标签对象
|
|
|
- isAlive.value = true;
|
|
|
- console.log("paneItem", item);
|
|
|
- if (item.clickRowId) {
|
|
|
- // 判断是菜单还是目录
|
|
|
- toFileData.value = item;
|
|
|
- } else {
|
|
|
- toFileData.value = null;
|
|
|
- }
|
|
|
- clickTab(item.path);
|
|
|
- console.log("isAlive", isAlive.value);
|
|
|
- };
|
|
|
- // 点击文件标签
|
|
|
- const filePaneClick = (item) => {
|
|
|
- console.log("filePaneClickitem", item);
|
|
|
- const row = toRaw(item);
|
|
|
- const arr = iFrameData.value.map((par) => {
|
|
|
- if (par.id === row.id) {
|
|
|
- par.show = true;
|
|
|
- // document.getElementById('iframe'+par.id).window.document.iframe[0]
|
|
|
- const outIframe = document.getElementById("iframe" + par.id);
|
|
|
- const inIframe =
|
|
|
- outIframe.contentDocument.getElementsByTagName("iframe")[0];
|
|
|
- setTimeout(() => {
|
|
|
- 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);
|
|
|
- }, 500);
|
|
|
- } else {
|
|
|
- par.show = false;
|
|
|
- }
|
|
|
- return toRaw(par);
|
|
|
- });
|
|
|
- iFrameData.value = arr;
|
|
|
- // console.log("Clicknewfilearr", iFrameData.value);
|
|
|
- isAlive.value = false;
|
|
|
- // console.log("isAlive", isAlive.value);
|
|
|
- };
|
|
|
- // 创建文件的标签
|
|
|
- const addFileTab = (data) => {
|
|
|
- console.log("fileTabdata", data);
|
|
|
- const thisData = toRaw(data);
|
|
|
- const oldIFrameData = iFrameData.value;
|
|
|
- const canAdd = oldIFrameData.some((par) => par.src == "");
|
|
|
- if (!canAdd) return ElMessage.error("已到最大数量,请先关闭其他文件!");
|
|
|
- const arr = oldIFrameData.map((par) => {
|
|
|
- if (!par.src) {
|
|
|
- if (thisData.docId) {
|
|
|
- par.src = `${window.location.origin}/fileEdit?clickRowId=${thisData.docId}`;
|
|
|
- par.name = data.fileName;
|
|
|
- thisData.docId = "";
|
|
|
- }
|
|
|
- }
|
|
|
- return toRaw(par);
|
|
|
- });
|
|
|
- iFrameData.value = arr;
|
|
|
- console.log("addFileTab", arr);
|
|
|
- };
|
|
|
- //创建tab标签事件
|
|
|
- const addTab = (data) => {
|
|
|
- console.log("addTab", data);
|
|
|
- const arr = toRaw(editableTabs.value);
|
|
|
- if (!arr.some((item) => item.label == data.fileName)) {
|
|
|
- // editableTabs.value.push({
|
|
|
- // label: data.fileName,
|
|
|
- // path: JSON.stringify(data),
|
|
|
- // });
|
|
|
- editableTabs.value.push({
|
|
|
- label: data.fileName,
|
|
|
- path: JSON.stringify(data),
|
|
|
- });
|
|
|
- //需要jSON去转 否则页面无变化 离谱得很
|
|
|
- editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
- // editableTabsValue.value = data.path;
|
|
|
- }
|
|
|
- };
|
|
|
- const addFolderAdd = (data) => {
|
|
|
- console.log("data", data);
|
|
|
- const arr = toRaw(editableTabs.value);
|
|
|
- if (!arr.some((item) => item.label == data.row.dirName)) {
|
|
|
- editableTabs.value.push({
|
|
|
- label: data.name,
|
|
|
- path: data.path,
|
|
|
- clickRowId: data.row,
|
|
|
- });
|
|
|
- //需要jSON去转 否则页面无变化 离谱得很
|
|
|
- editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
- }
|
|
|
- console.log("editableTabs", toRaw(editableTabs.value));
|
|
|
- };
|
|
|
- provide("addTab", addTab);
|
|
|
- provide("addFolderAdd", addFolderAdd);
|
|
|
- provide("addFileTab", addFileTab);
|
|
|
- // TODO 删除tab事件
|
|
|
- const closeTab = (item, index, e) => {
|
|
|
- e.preventDefault();
|
|
|
- e.stopPropagation();
|
|
|
- editableTabs.value.splice(index, 1);
|
|
|
- editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
- const nextTab =
|
|
|
- editableTabs.value[index + 1] || editableTabs.value[index - 1];
|
|
|
- clickTab(nextTab.path);
|
|
|
- // console.log("item", item);
|
|
|
- // console.log("index", index);
|
|
|
- // console.log("e", e);
|
|
|
- };
|
|
|
- // TODO 删除tab事件
|
|
|
- const closeFileTab = (item, index, e) => {
|
|
|
- e.preventDefault();
|
|
|
- e.stopPropagation();
|
|
|
- const data = toRaw(item);
|
|
|
- console.log("closeFileTab", data);
|
|
|
- const arr = iFrameData.value.map((par) => {
|
|
|
- if (par.id === data.id) {
|
|
|
- par.src = "";
|
|
|
- par.show = false;
|
|
|
- par.name = "";
|
|
|
- }
|
|
|
- return toRaw(par);
|
|
|
- });
|
|
|
- iFrameData.value = arr;
|
|
|
- // console.log("index", index);
|
|
|
- // console.log("e", e);
|
|
|
- };
|
|
|
+ return toRaw(par);
|
|
|
+ });
|
|
|
+ iFrameData.value = arr;
|
|
|
+ isAlive.value = false;
|
|
|
+ console.log("addFileTab", arr);
|
|
|
+};
|
|
|
+//创建tab标签事件
|
|
|
+const addTab = (data) => {
|
|
|
+ console.log("addTab", data);
|
|
|
+ const arr = toRaw(editableTabs.value);
|
|
|
+ if (!arr.some((item) => item.label == data.fileName)) {
|
|
|
+ // editableTabs.value.push({
|
|
|
+ // label: data.fileName,
|
|
|
+ // path: JSON.stringify(data),
|
|
|
+ // });
|
|
|
+ editableTabs.value.push({
|
|
|
+ label: data.fileName,
|
|
|
+ path: JSON.stringify(data),
|
|
|
+ });
|
|
|
+ //需要jSON去转 否则页面无变化 离谱得很
|
|
|
+ editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
+ // editableTabsValue.value = data.path;
|
|
|
+ }
|
|
|
+};
|
|
|
+const addFolderAdd = (data) => {
|
|
|
+ console.log("data", data);
|
|
|
+ const arr = toRaw(editableTabs.value);
|
|
|
+ if (!arr.some((item) => item.label == data.row.dirName)) {
|
|
|
+ editableTabs.value.push({
|
|
|
+ label: data.name,
|
|
|
+ path: data.path,
|
|
|
+ clickRowId: data.row,
|
|
|
+ });
|
|
|
+ //需要jSON去转 否则页面无变化 离谱得很
|
|
|
+ editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
+ }
|
|
|
+ console.log("editableTabs", toRaw(editableTabs.value));
|
|
|
+};
|
|
|
+provide("addTab", addTab);
|
|
|
+provide("addFolderAdd", addFolderAdd);
|
|
|
+provide("addFileTab", addFileTab);
|
|
|
+// TODO 删除tab事件
|
|
|
+const closeTab = (item, index, e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ e.stopPropagation();
|
|
|
+ editableTabs.value.splice(index, 1);
|
|
|
+ editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
|
|
|
+ const nextTab =
|
|
|
+ editableTabs.value[index + 1] || editableTabs.value[index - 1];
|
|
|
+ clickTab(nextTab.path);
|
|
|
+ // console.log("item", item);
|
|
|
+ // console.log("index", index);
|
|
|
+ // console.log("e", e);
|
|
|
+};
|
|
|
+// TODO 删除tab事件
|
|
|
+const closeFileTab = (item, index, e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ e.stopPropagation();
|
|
|
+ const data = toRaw(item);
|
|
|
+ console.log("closeFileTab", data);
|
|
|
+ const arr = iFrameData.value.map((par) => {
|
|
|
+ if (par.id === data.id) {
|
|
|
+ par.src = "";
|
|
|
+ par.show = false;
|
|
|
+ par.name = "";
|
|
|
+ par.docId = ''
|
|
|
+ }
|
|
|
+ return toRaw(par);
|
|
|
+ });
|
|
|
+ iFrameData.value = arr;
|
|
|
+ isAlive.value = true;
|
|
|
+ // console.log("index", index);
|
|
|
+ console.log("iFrameData", iFrameData.value);
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|