Browse Source

目录加密创建和显示

liuQiang 1 year ago
parent
commit
a49472dc0a

+ 8 - 0
src/api/level/level.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+export function getLevel() {
+  return request({
+    url: '/biz/level/list',
+    method: 'get',
+  })
+}

BIN
src/assets/images/level1.png


BIN
src/assets/images/level2.png


BIN
src/assets/images/level3.png


BIN
src/assets/images/level4.png


+ 30 - 15
src/layout/indexCommon.vue

@@ -100,7 +100,7 @@
               class="demo-tabs"
             >
               <el-tab-pane
-                v-for="item in toRaw(editableTabs)"
+                v-for="(item,index) in toRaw(editableTabs)"
                 :key="item.path"
                 :label="item.label"
                 :name="item.path"
@@ -108,7 +108,11 @@
                 <template #label>
                   <div class="tab_pane">
                     <div class="tab_text">{{ item.label }}</div>
-                    <img src="@/assets/images/close.png" alt="" />
+                    <img
+                      src="@/assets/images/close.png"
+                      @click="closeTab(item,index,$event)"
+                      alt=""
+                    />
                   </div>
                 </template>
               </el-tab-pane>
@@ -357,25 +361,25 @@ const clickPath = (index, items) => {
     editableTabs.value.push({ label: items.label, path: items.path });
     //需要jSON去转 否则页面无变化 离谱得很
     editableTabs.value = JSON.parse(JSON.stringify(editableTabs.value));
-  }else{
-    clickTab(items.path)
+  } else {
+    clickTab(items.path);
   }
-    editableTabsValue.value = items.path
+  editableTabsValue.value = items.path;
   // console.log("editableTabs", editableTabs.value);
 };
 const clickTab = (item) => {
   console.log("item", toRaw(item));
-  let regExp = new RegExp(/^\//)
+  let regExp = new RegExp(/^\//);
   if (!regExp.test(toRaw(item))) {
-    const data = JSON.parse(toRaw(item))
-    console.log('data',data);
+    const data = JSON.parse(toRaw(item));
+    console.log("data", data);
     router.push({
-        path: "/fileEdit",
-        query: {
-          clickRowId: data.docId,
-          copyRow: JSON.stringify(data),
-        },
-      });
+      path: "/fileEdit",
+      query: {
+        clickRowId: data.docId,
+        copyRow: JSON.stringify(data),
+      },
+    });
   } else {
     router.push({
       path: item,
@@ -386,12 +390,23 @@ const clickTab = (item) => {
 const 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));
   }
 };
 provide("addTab", addTab);
+// TODO 删除tab事件
+const closeTab = (item,index, e) => {
+  e.preventDefault();
+  e.stopPropagation();
+  console.log("item", item);
+  console.log("index", index);
+  console.log("e", e);
+};
 </script>
 
 <style lang="scss" scoped>

+ 36 - 3
src/views/myfile/MyFile.vue

@@ -35,8 +35,11 @@
                                     </el-dropdown-menu>
                                 </template>
                             </el-dropdown>
-                            <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
-                            <p class="ellipsis-text">{{ item.dirName }}</p>
+                          <div class="left_fileBox">
+                              <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
+                              <p class="ellipsis-text">{{ item.dirName }}</p>
+                              <img class="levelImg" v-if="item.isEncrypt === 'Y'" :src="getLevelImg(item.encryptLevel)" alt="">
+                          </div>
                         </div>
                     </template>
                 </div>
@@ -1335,6 +1338,25 @@ export default {
             console.log('res',res);
             refreshFile()
         }
+        //获取安全图标
+        const getLevelImg = (level)=>{
+             switch (level) {
+                case "L1":
+                return "src/assets/images/level1.png";
+                break;
+                case "L2":
+                return "src/assets/images/level2.png";
+                break;
+                case "L3":
+                return "src/assets/images/level3.png";
+                break;
+                case "L4":
+                return "src/assets/images/level4.png";
+                break;
+                return "src/assets/images/level1.png";
+                break;
+            }
+        }
         onMounted(() => {
             getAllTop()
             getSpaceList()
@@ -1490,7 +1512,8 @@ export default {
             refreshFile,
             delCollect,
             backFolder,
-            collectByStar
+            collectByStar,
+            getLevelImg
         }
     },
     watch: {
@@ -1558,6 +1581,16 @@ p {
     margin-left: 5px;
     margin-top: 5px;
     position: relative;
+    .left_fileBox{
+        position: relative;
+        .levelImg{
+            width: 32px;
+            height: 32px;
+            position: absolute;
+            right: 5%;
+            bottom: 20%;
+        }
+    }
 }
 
 .setBox:hover {

+ 22 - 9
src/views/myfile/modalComponebts/CreateFloder.vue

@@ -13,14 +13,11 @@
                         </el-radio-group>
                     </el-form-item>
                     <el-form-item label="是否加密">
-                            <el-switch v-model="boserForm.encryption" />
+                            <el-switch v-model="boserForm.isEncrypt" active-value="Y" inactive-value="N" />
                     </el-form-item>
-                    <el-form-item label="加密等级">
-                        <el-radio-group v-model="boserForm.level">
-                            <el-radio :label="1">1级</el-radio>
-                            <el-radio :label="2">2级</el-radio>
-                            <el-radio :label="3">3级</el-radio>
-                            <el-radio :label="4">4级</el-radio>
+                    <el-form-item label="加密等级" v-if="boserForm.isEncrypt === 'Y'">
+                        <el-radio-group v-model="boserForm.encryptLevel">
+                            <el-radio :label="item.levelCode" v-for="item in levelList" :key="item">{{item.levelName}}</el-radio>
                         </el-radio-group>
                     </el-form-item>
                 </el-form>
@@ -40,6 +37,7 @@
 <script>
 import { ref, onMounted, toRef } from 'vue';
 import documents from '../../../api/document/document';
+import { getLevel } from '@/api/level/level.js';
 import { ElMessage } from 'element-plus';
 export default {
     props: {
@@ -81,9 +79,10 @@ export default {
         let boserForm = ref({
             dirName: "",
             dirType:1,
-            encryption:true,
-            level:1
+            isEncrypt:"Y",
+            encryptLevel:"L1"
         })
+        const levelList = ref([])
         function inital() {
             console.log(free, 'free');
             addBoser.value = result
@@ -105,6 +104,8 @@ export default {
                             "dirName": boserForm.value.dirName,
                             "parentId": drId - 0,
                             "spaceId": spId - 0,
+                            "isEncrypt":boserForm.value.isEncrypt,
+                            "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
                         }
                     ).then(res => {
                         if (res.code === 200) {
@@ -123,6 +124,8 @@ export default {
                             "dirName": boserForm.value.dirName,
                             "parentId": newdrid - 0,
                             "spaceId": newspid - 0,
+                            "isEncrypt":boserForm.value.isEncrypt,
+                            "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
                         }
                     ).then(res => {
                         if (res.code === 200) {
@@ -139,8 +142,16 @@ export default {
             }
 
         }
+        const getLevelList = async ()=>{
+            const res = await getLevel()
+            if(res.rows){
+                levelList.value = res.rows
+            }
+            // console.log(res);
+        }
         onMounted(() => {
             inital()
+            getLevelList()
         })
         return {
             addBoser,
@@ -153,6 +164,8 @@ export default {
             drId,
             newdrid,
             newspid,
+            levelList,
+            getLevelList
         }
     }
 }