Selaa lähdekoodia

最近右键菜单 用户管理刷新

liuQiang 1 vuosi sitten
vanhempi
commit
056b3f4339
4 muutettua tiedostoa jossa 221 lisäystä ja 93 poistoa
  1. 2 1
      src/layout/components/AppMain.vue
  2. 1 1
      src/layout/indexCommon.vue
  3. 218 16
      src/views/biz/recent/index.vue
  4. 0 75
      vite.config.js

+ 2 - 1
src/layout/components/AppMain.vue

@@ -2,7 +2,7 @@
   <section class="app-main">
     <router-view v-slot="{ Component, route }">
       <transition name="fade-transform" mode="out-in">
-        <keep-alive :include="tagsViewStore.cachedViews">
+        <keep-alive :include="tagsViewStore.cachedViews" :exclude="'User'">
           <component v-if="!route.meta.link" :is="Component" :key="route.path"/>
         </keep-alive>
       </transition>
@@ -16,6 +16,7 @@ import iframeToggle from "./IframeToggle/index"
 import useTagsViewStore from '@/store/modules/tagsView'
 
 const tagsViewStore = useTagsViewStore()
+console.log('tagsViewStore',tagsViewStore);
 </script>
 
 <style lang="scss" scoped>

+ 1 - 1
src/layout/indexCommon.vue

@@ -93,7 +93,7 @@
           <div class="tab_box">
             <el-tabs
               v-model="editableTabsValue"
-              @tab-click="clickTab"
+              @tab-change="clickTab"
               @tab-add="addTab"
               :value="JSON.stringify(item)"
               :data-item="JSON.stringify(item)"

+ 218 - 16
src/views/biz/recent/index.vue

@@ -49,7 +49,7 @@
           >
             <el-table-column fixed prop="date" label="名称" width="500">
               <template #default="scope">
-                <div>
+                <!-- <div>
                   <img
                     class="table_icon"
                     :src="setIcon(scope.row.fileType)"
@@ -57,7 +57,37 @@
                     style=""
                   />
                   {{ scope.row.fileName }}
-                </div>
+                </div> -->
+                <span
+                  style="
+                    white-space: nowrap;
+                    overflow: hidden;
+                    text-overflow: ellipsis;
+                  "
+                >
+                  <el-icon
+                    v-if="scope.row.isFavorite == 'N'"
+                    @click.stop="collectByStar(scope.row, false)"
+                  >
+                    <Star />
+                  </el-icon>
+                  <img
+                    v-else
+                    @click.stop="delCollect(scope.row, false)"
+                    src="../../assets/images/yellowstar.png"
+                    alt=""
+                  />
+                  <img :src="setIcon(scope.row.fileType)" alt="" />
+                  <el-tooltip
+                    class="box-item"
+                    effect="dark"
+                    :content="scope.row.fileName"
+                    placement="top"
+                    :show-after="1000"
+                  >
+                    {{ scope.row.fileName }}
+                  </el-tooltip>
+                </span>
               </template>
             </el-table-column>
             <el-table-column prop="createTime" label="时间" width="200" />
@@ -145,18 +175,59 @@
         </el-collapse-item>
       </div>
     </el-collapse>
+    <div>
+      <FileTree
+        v-if="fileTrees"
+        :fileTrees="fileTrees"
+        :newSpaceId="newSpaceId"
+        :fileId="clickRowId"
+        @getChildren="getChildren"
+        :copyOrMove="copyOrMove"
+      ></FileTree>
+    </div>
+    <ImgPreview
+      :previewData="previewData"
+      :copyFileType="copyFileType"
+      :showPreview="showPreview"
+      @closeImgPreview="closeImgPreview"
+    ></ImgPreview>
+    <div
+      v-loading.fullscreen="loadingPreview"
+      v-if="loadingPreview"
+      class="lodingBox"
+    ></div>
+    <!-- 文件收藏 -->
+    <div>
+      <FileCollect
+        v-if="collects"
+        :collects="collects"
+        @getCollects="getCollects"
+        :copyFileName="copyFileName"
+        :copyFileId="copyFileId"
+        @refreshFile="refreshFile"
+        :isFolder="isFolder"
+        :clickRow="clickRow"
+      ></FileCollect>
+    </div>
   </div>
 </template>
 
 <script setup>
-import { onMounted, ref, toRaw ,inject} from "vue";
+import { onMounted, ref, toRaw, inject } from "vue";
 // import TopTabs from "@/components/TopTabs/index.vue"
 import { listRecent, getRecent } from "@/api/biz/recent";
 import { getInfo } from "@/api/biz/info";
 import { getDir } from "@/api/biz/dir";
 import documents from "@/api/document/document";
 import ImgFile from "@/views/myfile/jsComponents/ImgFile";
+import FileTree from "@/views/myfile/components/FileTree.vue";
+import FileCollect from "@/views/myfile/modalComponebts/FileCollect.vue";
 import myfile from "@/api/myfile/myfile";
+import { getLeveldetail } from "@/api/level/level";
+import { canPreviewFile, rightMenuRole } from "@/utils/index.js";
+import { preview } from "@/api/common/common.js";
+import { delFavorite } from '@/api/biz/favorite.js'
+import ImgPreview from "@/components/ImgPreview/ImgPreview.vue";
 const activeNames = ref(["folder", "file"]);
 const isList = ref(true); //控制显示方式
 const tableFolderData = ref([]);
@@ -164,13 +235,44 @@ const tableFileData = ref([]);
 const thisFolder = ref(); //当前文件夹
 const newDirId = ref();
 const newSpaceId = ref();
-const copyFileType = ref();
 const cliCC = ref(false); //文件右键菜单
 const clickRow = ref(); //当前右键的文件
 let xz = ref(0);
 let yz = ref(0);
 let anyP = ref(false);
-const thisFolderRole = ref()  //文件夹权限
+const thisFolderRole = ref(); //文件夹权限
+const workOrEdit = ref();
+const thanks = ref();
+const selectedIndex = ref();
+const editOnline = ref();
+const isFolder = ref();
+const copyRow = ref();
+const clickRowId = ref();
+const copyDirId = ref();
+const copySpaceId = ref();
+const copyFileId = ref();
+const copyFileSize = ref();
+const copyFileType = ref();
+const copyParentId = ref();
+const copyFileName = ref();
+const loadingPreview = ref(false);
+const onlyView = ref(false);
+const showPreview = ref(false);
+const previewData = ref();
+const fileTrees = ref(false);
+const copyOrMove = ref();
+const backFolder = ref();
+const copyFolderName = ref();
+let collects = ref(false);
+let menuList = ref([
+  {
+    name: "我的空间",
+    choose: "我的空间",
+  },
+]);
+let nameForm = ref({
+  name: "",
+});
 let mouseCli = ref([
   {
     img: ImgFile.previewIcon,
@@ -225,7 +327,7 @@ let mouseCli = ref([
     name: "历史版本",
   },
 ]);
-
+const addTab = inject("addTab");
 //----引入图片----
 import file_DOC from "../../../assets/images/fileType/file_DOC.png";
 import file_pdf from "../../../assets/images/fileType/file_pdf.png";
@@ -272,11 +374,22 @@ const handleChange = (val) => {
 };
 function changeFile(row, num) {
   row = toRaw(row);
+  if (row) {
+    backFolder.value = thisFolder.value;
+    thisFolder.value = row;
+  } else {
+    row = thisFolder.value;
+  }
   thisFolder.value = row;
   console.log("changeFilerow2", row);
+  if (row.isEncrypt === "Y") {
+    getLeveldetailFn(row.encryptLevel);
+  } else {
+    thisFolderRole.value = null;
+  }
+  copyParentId.value = row.parentId;
   newDirId.value = row.dirId;
   newSpaceId.value = row.spaceId;
-  copyFileType.value = row.fileType;
   documents
     .getALLdocument({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 })
     .then((res) => {
@@ -307,25 +420,40 @@ function changeFile(row, num) {
       }
       // }
     });
+  selectedIndex.value = num;
+  const newItem = {
+    name: row.dirName,
+    choose: row.dirName,
+    dirIds: row.dirId,
+    spaceIds: row.spaceId,
+  };
+  // 检查 newItem 是否已存在于 menuList 中
+  const isItemExist = menuList.value.some(
+    (item) => item.choose === newItem.choose
+  );
+  // 如果不存在,则添加它
+  if (!isItemExist) {
+    menuList.value.push(newItem);
+  }
 }
 // 文件名表格每一行点击事件
 function handleRowClick(row, col, e) {
   console.log("row", row);
-  // isFolder.value = "N";
+  isFolder.value = "N";
   clickRow.value = row;
   e.preventDefault();
   e.stopPropagation();
   xz.value = e.pageX;
   yz.value = e.pageY;
-  // copyRow.value = row;
-  // clickRowId.value = row.docId;
-  // copyDirId.value = row.dirId;
-  // copySpaceId.value = row.spaceId;
-  // copyFileId.value = row.fileId;
-  // copyFileSize.value = row.fileSize;
+  copyRow.value = row;
+  clickRowId.value = row.docId;
+  copyDirId.value = row.dirId;
+  copySpaceId.value = row.spaceId;
+  copyFileId.value = row.fileId;
+  copyFileSize.value = row.fileSize;
   copyFileType.value = row.fileType;
-  // nameForm.value.name = row.fileName;
-  // copyFileName.value = row.fileName;
+  nameForm.value.name = row.fileName;
+  copyFileName.value = row.fileName;
   if (cliCC.value === true) {
     cliCC.value = false;
   } else {
@@ -638,6 +766,80 @@ const closeRMenu = () => {
   // console.log("close");
   cliCC.value = false;
 };
+//关闭图片预览事件
+const closeImgPreview = () => {
+  // console.log('close');
+  showPreview.value = false;
+};
+function getChildren(data) {
+  fileTrees.value = data;
+  refreshFile();
+}
+function getCollects(data) {
+  collects.value = data;
+}
+//star收藏事件
+const collectByStar = (row, isfolder) => {
+  console.log("row", row);
+  if (isfolder) {
+    let thisRow = toRaw(row);
+    isFolder.value = "Y";
+    clickRow.value = thisRow;
+    copyFolderName.value = row.dirName;
+    copyFileName.value = clickRow.value.dirName;
+  } else {
+    isFolder.value = "N";
+    clickRow.value = row;
+    copyRow.value = row;
+    clickRowId.value = row.docId;
+    copyDirId.value = row.dirId;
+    copyFileName.value = row.fileName;
+  }
+
+  collects.value = true;
+};
+// 取消文件收藏
+const delCollect = async (row, isfolder) => {
+  const thisRow = toRaw(row);
+  console.log("thisRow", thisRow);
+  let query = {};
+  if (isfolder) {
+    query = {
+      isFolder: "Y",
+      relaId: thisRow.dirId,
+    };
+  } else {
+    query = {
+      isFolder: "N",
+      relaId: thisRow.docId,
+    };
+  }
+  const res = await delFavorite(query);
+  //TODO 之后需要重新获取数据 并message提示
+  console.log("res", res);
+  refreshFile();
+};
+//刷新文件
+const refreshFile = () => {
+  // console.log('ref',toRaw(thisFolder.value));
+  if (toRaw(thisFolder.value).isFavorite) {
+    //如果点开了文件夹
+    // console.log(111);
+    folderClick();
+  } else {
+    // console.log(222);
+    getList();
+  }
+};
+//获取权限详情
+const getLeveldetailFn = async (data) => {
+  const res = await getLeveldetail(data);
+  // console.log('getLeveldetailFn',res);
+  if (res.code === 200) {
+    thisFolderRole.value = res.data;
+  }
+  // console.log('thisFolderRole',thisFolderRole.value);
+};
 </script>
 
 <style lang="scss" scoped>

+ 0 - 75
vite.config.js

@@ -1,75 +0,0 @@
-import {
-	defineConfig,
-	loadEnv
-} from 'vite'
-import path from 'path'
-import createVitePlugins from './vite/plugins'
-
-// https://vitejs.dev/config/
-export default defineConfig(({
-								 mode,
-								 command
-							 }) => {
-	const env = loadEnv(mode, process.cwd())
-	const {
-		VITE_APP_ENV
-	} = env
-	return {
-		// 部署生产环境和开发环境下的URL。
-		// 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
-		// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
-		base: VITE_APP_ENV === 'production' ? '/' : '/',
-		plugins: createVitePlugins(env, command === 'build'),
-		resolve: {
-			// https://cn.vitejs.dev/config/#resolve-alias
-			alias: {
-				// 设置路径
-				'~': path.resolve(__dirname, './'),
-				// 设置别名
-				'@': path.resolve(__dirname, './src')
-			},
-			// https://cn.vitejs.dev/config/#resolve-extensions
-			extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
-		},
-		// vite 相关配置
-		server: {
-			port: 80,
-			host: true,
-			open: true,
-			proxy: {
-				// https://cn.vitejs.dev/config/#server-proxy
-				'/dev-api': {
-					target: 'http://192.168.1.28:8080/',
-					// target: 'http://localhost:8080/',
-					// target:'http://192.168.1.28:8080/',
-					// target:'http://8.142.173.95:19527',
-					changeOrigin: true,
-					rewrite: (p) => p.replace(/^\/dev-api/, '')
-				},
-				//websocket代理
-				'/websocket': {
-					target:'ws://localhost:8080/websocket',
-					// target:'ws://192.168.1.28:8080/websocket',
-					// target:'ws://192.168.1.11:8080/websocket',
-					changeOrigin: true,
-					rewrite: (p) => p.replace(/^\/websocket/, '')
-				}
-			}
-		},
-		//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
-		css: {
-			postcss: {
-				plugins: [{
-					postcssPlugin: 'internal:charset-removal',
-					AtRule: {
-						charset: (atRule) => {
-							if (atRule.name === 'charset') {
-								atRule.remove();
-							}
-						}
-					}
-				}]
-			}
-		}
-	}
-})