Browse Source

Merge remote-tracking branch 'origin/v3' into v3

wukai 1 year ago
parent
commit
ef02c208e1

+ 10 - 1
src/api/document/document.js

@@ -29,6 +29,14 @@ function addDocument(data) {
         data,
     })
 }
+// 新增模板目录
+function addDocumentByTemp(data,id) {
+    return request({
+        url: `/biz/dir/tmpl/${id}`,
+        method: "post",
+        data,
+    })
+}
 // 修改文件夹
 function editFolerDocument(data) {
     return request({
@@ -75,5 +83,6 @@ export default {
     fileTree,
     getALLdocumentByType,
     editFolerDocument,
-    matches
+    matches,
+    addDocumentByTemp
 }

+ 150 - 0
src/components/MenuTempList/MenuTempList.vue

@@ -0,0 +1,150 @@
+<template>
+  <div class="main">
+    <el-dialog
+      v-model="props.showTempList"
+      width="30%"
+      @close="close"
+      :title="title"
+    >
+      <div class="search">
+        <el-input
+          v-model="tempName"
+          maxlength="32"
+          placeholder="模板名称"
+          @input="selectData"
+        ></el-input>
+        <el-icon class="SearchIcon">
+          <Search />
+        </el-icon>
+      </div>
+      <div class="temp_list">
+        <div
+          class="one_list"
+          :class="{ select: checkTempId == item.tmplId }"
+          v-for="item in listData"
+          @click="checkTemp(item)"
+          :key="item"
+        >
+          <div class="left">
+            <span>{{ item.tmplName }}</span>
+          </div>
+          <div class="right">
+            <img :src="eyes" @click="previewFileClick(item)" class="eyes" />
+          </div>
+        </div>
+      </div>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="close">取消</el-button>
+          <el-button type="primary" @click="sureAdd"> 创建 </el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { ref, toRaw, onMounted, inject, onActivated, watch } from "vue";
+import { ElMessage } from "element-plus";
+import { listTemplate } from "@/api/biz/template.js";
+import { listDirTemplate } from "@/api/biz/dirTemplate.js";
+import fileCount from "@/api/fileCount/fileCount";
+import tW from "@/assets/images/addFile/tW.png";
+import tE from "@/assets/images/addFile/tE.png";
+import tP from "@/assets/images/addFile/tP.png";
+import eyes from "@/assets/images/eyes.png";
+const props = defineProps({
+  showTempList: {
+    type: Boolean,
+    default: false,
+  },
+  addFileType: {
+    type: String,
+    default: "",
+  },
+});
+const tempName = ref();
+const title = ref("目录模板");
+const listData = ref({});
+const checkTempId = ref();
+const checkTempTitle = ref();
+const baseData = ref([]);
+const emit = defineEmits(["closeTempList", "getTempPreview", "getAddTempId"]);
+//选中的模板
+const checkTemp = (item) => {
+  checkTempId.value = item.tmplId;
+checkTempTitle.value = item.tmplName
+};
+const sureAdd = () => {
+  if (!checkTempId.value) {
+    return ElMessage({ message: "请选择模板", type: "error" });
+  }
+  emit("getAddTempId", checkTempId.value,checkTempTitle.value);
+};
+const close = () => {
+  emit("closeTempList");
+};
+const selectData = () => {
+  listData.value = baseData.value?.filter((item) =>
+    item.tmplName.includes(tempName.value)
+  );
+};
+// 获取temp列表
+const getList = async () => {
+  const res = await listDirTemplate();
+  baseData.value = res.rows
+  listData.value = baseData.value;
+    console.log("listData", listData.value);
+};
+const previewFileClick = (item) => {
+  emit("getTempPreview", item);
+};
+onMounted(() => {
+  getList();
+});
+</script>
+
+<style lang="scss" scoped>
+.search {
+  width: 100%;
+  height: 32px;
+  position: relative;
+  .SearchIcon {
+    color: gray;
+    position: absolute;
+    right: 5px;
+    top: 10px;
+  }
+}
+.temp_list {
+  margin-top: 10px;
+  width: 100%;
+  height: 400px;
+  overflow-y: auto;
+  .one_list {
+    width: 100%;
+    height: 48px;
+    padding: 0 16px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .left {
+      display: flex;
+      align-items: center;
+      .imgBox {
+        width: 24px;
+        height: 24px;
+        margin-right: 8px;
+      }
+    }
+    .eyes {
+      width: 22px;
+      height: 22px;
+      cursor: pointer;
+    }
+  }
+}
+.select {
+  background-color: #f5f7f9;
+}
+</style>

+ 43 - 0
src/components/PreviewMenuList/PreviewMenuList.vue

@@ -0,0 +1,43 @@
+<template>
+  <el-dialog
+    v-model="props.showPreTemp"
+    width="30%"
+    @close="close"
+    title="模板预览"
+  >
+    <el-tree
+      :data="props.preTemp"
+      default-expand-all
+      node-key="id"
+      style="width: 100%; height: 300px; overflow-y: auto"
+      :expand-on-click-node="false"
+    >
+      <template #default="{ node }">
+        <span class="custom-tree-node">
+          <span>{{ node.label }}</span>
+        </span>
+      </template>
+    </el-tree>
+  </el-dialog>
+</template>
+
+<script setup>
+import { ref, toRaw, onMounted, inject, onActivated, watch } from "vue";
+const props = defineProps({
+  showPreTemp: {
+    type: Boolean,
+    default: false,
+  },
+  preTemp: {
+    type: Array,
+    default: [],
+  },
+});
+const emit = defineEmits(["closePreTemp"]);
+const close = ()=>{
+    emit('closePreTemp')
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 155 - 3
src/views/biz/dirTemplate/index.vue

@@ -131,12 +131,30 @@
     />
 
     <!-- 添加或修改目录模板对话框 -->
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body @close="cancelAddTemp">
       <el-form ref="dirTemplateRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="模板名称" prop="tmplName">
-          <el-input v-model="form.tmplName" placeholder="请输入模板名称"/>
+          <el-input v-model="tempTitle" placeholder="请输入模板名称"/>
         </el-form-item>
         <el-form-item label="模板内容" prop="tmplContent">
+           <el-tree
+            :data="tempData"
+            default-expand-all
+            node-key="id"
+            style="width:100%;height:300px;overflow-y: auto;"
+            :expand-on-click-node="false"
+          >
+            <template #default="{ node, data }">
+              <span class="custom-tree-node">
+                <span>{{ node.label }}</span>
+                <span>
+                  <a class="btm" @click="append(data)"> 增加 </a>
+                  <a class="btm" v-if="data.id != 1" @click="updataNode(data)"> 修改 </a>
+                  <a class="btm" v-if="data.id != 1" style="margin-left: 8px" @click="remove(node, data)"> 删除 </a>
+                </span>
+              </span>
+            </template>
+          </el-tree>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注"/>
@@ -145,10 +163,20 @@
       <template #footer>
         <div class="dialog-footer">
           <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
+          <el-button @click="cancelAddTemp">取 消</el-button>
         </div>
       </template>
     </el-dialog>
+    <el-dialog title="目录名称" v-model="showMenuName" width="500px">
+       <el-input v-model="newName" maxlength="32" placeholder="请输入目录名称"/>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitMenuName">确 定</el-button>
+          <el-button @click="cancelMenuName">取 消</el-button>
+        </div>
+      </template>
+
+    </el-dialog>
   </div>
 </template>
 
@@ -160,6 +188,7 @@ import {
   listDirTemplate,
   updateDirTemplate
 } from "@/api/biz/dirTemplate";
+import { ElMessage} from 'element-plus'
 
 const {proxy} = getCurrentInstance();
 
@@ -172,6 +201,16 @@ const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
 const title = ref("");
+const showMenuName = ref(false)
+const newName = ref()
+const tempId = ref(1000)
+const upNodeData = ref()
+const tempTitle = ref('')
+const tempData = ref([
+  {id:1,label:tempTitle || '请输入模板名称',children:[
+
+  ]}
+])
 
 const data = reactive({
   form: {},
@@ -251,7 +290,25 @@ function handleUpdate(row) {
   reset();
   const _tmplId = row.tmplId || ids.value
   getDirTemplate(_tmplId).then(response => {
+    console.log('response',response);
     form.value = response.data;
+    const arr = JSON.parse(response.data.tmplContent)
+    const getNewtempId = (arr)=>{
+      arr.map(item=>{
+        if(item.id >= tempId.value){
+          console.log('1',item.id);
+          tempId.value = item.id +1
+        }
+        if(item.children?.length>0){
+          getNewtempId(item.children)
+        }
+      })
+    }
+    getNewtempId(arr)
+    tempTitle.value = response.data.tmplName
+    
+    tempData.value = [{id:1,label:tempTitle,children:[]}]
+    tempData.value[0].children = arr
     open.value = true;
     title.value = "修改目录模板";
   });
@@ -260,6 +317,15 @@ function handleUpdate(row) {
 /** 提交按钮 */
 function submitForm() {
   proxy.$refs["dirTemplateRef"].validate(valid => {
+    if(!tempTitle.value){
+      return ElMessage({
+                message: "模板名不能为空",
+                type: "error"
+            })
+    }
+    const str = JSON.stringify(tempData.value[0].children)
+    form.value.tmplContent = str
+    form.value.tmplName = tempTitle.value
     if (valid) {
       if (form.value.tmplId != null) {
         updateDirTemplate(form.value).then(response => {
@@ -296,6 +362,92 @@ function handleExport() {
     ...queryParams.value
   }, `dirTemplate_${new Date().getTime()}.xlsx`)
 }
+// 新增目录节点
+const append = (data)=>{
+  // console.log('data',data);
+
+  const newChild = {id: tempId.value, label: 'newMenu', children: [] }
+  tempId.value = tempId.value+1
+  if (!data.children) {
+    data.children = []
+  }
+  data.children.push(newChild)
+  tempData.value = [...tempData.value]
+}
+// 移除目录节点
+const remove = (node, data)=>{
+  const parent = node.parent
+  const children = parent.data.children || parent.data
+  const index = children.findIndex((d) => d.id === data.id)
+  children.splice(index, 1)
+  tempData.value = [...tempData.value]
+}
+// 修改目录节点
+const updataNode = (data)=>{
+  newName.value = ''
+  newName.value = data.label
+  showMenuName.value = true
+  upNodeData.value = data
+}
+const submitMenuName = ()=>{
+  if(!newName.value){
+   return ElMessage({
+                message: "目录名不能为空",
+                type: "error"
+            })
+  }
+const oldArr = tempData.value
+  const getNewData = (data)=>{
+    data.map(item=>{
+      if(item.id == upNodeData.value.id){
+        // console.log(1);
+        item.label = newName.value
+        return
+      }
+      if(item.children?.length>0){
+        getNewData(item.children)
+      }
+    })
+  }
+  getNewData(oldArr)
+  tempData.value= JSON.parse(JSON.stringify(oldArr))
+  setTimeout(() => {
+    showMenuName.value = false
+    // console.log('tempData.value',tempData.value);
+    // console.log('upNodeData.value',upNodeData.value);
+  }, 200);
+}
+const submitAddTemp = ()=>{
+
+}
+const cancelMenuName = ()=>{
+  newName.value = ''
+  showMenuName.value = false
+}
+const cancelAddTemp = ()=>{
+  open.value = false
+  newName.value = ''
+  tempTitle.value = ''
+  tempData.value = [
+  {id:1,label:tempTitle || '请输入模板名称',children:[
+
+  ]}
+]
+}
 
 getList();
 </script>
+<style lang="scss" scoped>
+.custom-tree-node {
+  width: 100%;
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
+.btm{
+  color: skyblue;
+}
+</style>

+ 6 - 6
src/views/department/MyFile.vue

@@ -3144,12 +3144,12 @@ p {
     border-bottom: none;
 }
 
-// 隐藏全选按钮
-.file-jia {
-    :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
-        visibility: hidden;
-    }
-}
+// // 隐藏全选按钮
+// .file-jia {
+//     :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
+//         visibility: hidden;
+//     }
+// }
 .file-title{
   color: #2E6BC8;
   margin-left: 3%;

+ 106 - 14
src/views/department/modalComponebts/CreateFloder.vue

@@ -12,6 +12,10 @@
                             <el-radio :label="2">组织目录</el-radio>
                         </el-radio-group>
                     </el-form-item>
+                    <el-form-item label="是否使用模板">
+                       <el-switch @change="switchChange" v-model="boserForm.useTemp" active-value="Y" inactive-value="N" />
+                       <el-button v-if="boserForm.useTemp === 'Y'" style="margin-left:10px;" @click="checkTemp" type="info" plain>{{preTempTitle || '点击选择模板'}}</el-button>
+                    </el-form-item>
                    <template v-if="(boserForm.dirType === 2 || thisType.dirType == '2')">
                         <template v-if="!upFolderData && (free || (!free && thisType.dirType != '2' ))">
                             <el-form-item label="是否加密" v-if="!FolderRole?.levelCode || free">
@@ -50,6 +54,8 @@
                     </span>
                 </template>
             </el-dialog>
+            <MenuTempList v-if="showTempList" :showTempList='showTempList' @getTempPreview="getTempPreview" @getAddTempId='getAddTempId' @closeTempList="closeTempList"></MenuTempList>
+            <PreviewMenuList v-if="showPreTemp" :showPreTemp="showPreTemp" :preTemp="preTemp" @closePreTemp="closePreTemp"></PreviewMenuList>
         </div>
     </div>
 </template>
@@ -57,6 +63,8 @@
 <script>
 import { ref, onMounted, toRef,toRaw,inject ,watch} from 'vue';
 import documents from '../../../api/document/document';
+import MenuTempList from '@/components/MenuTempList/MenuTempList.vue';
+import PreviewMenuList from '@/components/PreviewMenuList/PreviewMenuList.vue';
 import {listUser} from '../../../api/biz/user';
 import { getLevel } from '@/api/level/level.js';
 import { ElMessage } from 'element-plus';
@@ -139,6 +147,7 @@ export default {
         let addBoser = ref(false)
         let boserForm = ref({
             dirName: upFolderData?upFolderData.dirName:"",
+            useTemp:'N',
             dirType:upFolderData?2:1,
             isEncrypt:upFolderData?upFolderData.isEncrypt:"Y",
             encryptLevel:upFolderData?upFolderData.encryptLevel:"L1",
@@ -148,6 +157,11 @@ export default {
         })
         const levelList = ref([])
         const needCode = ref(false) // 需要私有码
+        const showTempList = ref(false)
+        const tempId = ref()
+        const showPreTemp = ref(false)
+        const preTemp = ref()
+        const preTempTitle = ref('')
         function inital() {
             console.log(free, 'free');
             addBoser.value = result
@@ -157,7 +171,13 @@ export default {
             emit("getChildrenC", addBoser.value)
         }
         function addFloder() {
-            console.log('boserForm',boserForm.value);
+             if(boserForm.value.useTemp === "Y" && !tempId.value){
+                ElMessage({
+                    type: "error",
+                    message: "请选择模板"
+                })
+                return
+            }
             if (boserForm.value.dirName === '') {
                 ElMessage({
                     type: "error",
@@ -194,10 +214,11 @@ export default {
                             
                     }
                     }
-                    documents.addDocument(
-                       query
-                    ).then(res => {
-                        if (res.code === 200) {
+                     if(boserForm.value.useTemp == 'N'){
+                        documents.addDocument(
+                        query
+                        ).then(res => {
+                            if (res.code === 200) {
                             ElMessage({
                                 message: '添加一级目录成功',
                                 type: 'success',
@@ -206,7 +227,22 @@ export default {
                         addBoser.value = false
                         emit("getChildrenC", addBoser.value)
                         props.getFirstFolder()
-                    })
+                        })
+                    }else{
+                        documents.addDocumentByTemp(
+                        query,tempId.value
+                        ).then(res => {
+                            if (res.code === 200) {
+                            ElMessage({
+                                message: '添加一级目录成功',
+                                type: 'success',
+                            })
+                        }
+                        addBoser.value = false
+                        emit("getChildrenC", addBoser.value)
+                        props.getFirstFolder()
+                        })
+                    }
                 } else {
                     let query = {}
                     if(FolderRole?.levelCode || thisRole.length ||thisType.dirType == "2"){
@@ -244,20 +280,35 @@ export default {
                             "accessCode":boserForm.value.accessCode?sm3(boserForm.value.accessCode):''
                         }
                     }
-                    console.log('free0query',query);
-                    documents.addDocument(
-                      query
-                    ).then(res => {
-                        if (res.code === 200) {
+                    if(boserForm.value.useTemp == 'N'){
+                        documents.addDocument(
+                        query
+                        ).then(res => {
+                            if (res.code === 200) {
                             ElMessage({
-                                message: '添加成功',
+                                message: '添加目录成功',
                                 type: 'success',
                             })
                         }
                         addBoser.value = false
                         emit("getChildrenC", addBoser.value)
                         props.refreshFile()
-                    })
+                        })
+                    }else{
+                        documents.addDocumentByTemp(
+                        query,tempId.value
+                        ).then(res => {
+                            if (res.code === 200) {
+                            ElMessage({
+                                message: '添加目录成功',
+                                type: 'success',
+                            })
+                        }
+                        addBoser.value = false
+                        emit("getChildrenC", addBoser.value)
+                        props.refreshFile()
+                        })
+                    }
                 }
             }
         }
@@ -343,6 +394,34 @@ export default {
             //  console.log('getUser',res);
              users.value = res.rows
         }
+        const switchChange = (val)=>{
+            if(val === "Y"){
+                showTempList.value = true
+            }else{
+                preTempTitle.value = ''
+                tempId.value = null
+                showTempList.value = false
+            }
+        }
+        const closeTempList = ()=>{
+            showTempList.value = false
+        }
+        const closePreTemp = ()=>{
+            showPreTemp.value = false
+        }
+        const getAddTempId = (id,name)=>{
+            tempId.value = id
+            preTempTitle.value = name
+            showTempList.value = false
+        }
+        const getTempPreview = (item)=>{
+            showPreTemp.value = true
+    
+            preTemp.value = JSON.parse(item.tmplContent)
+        }
+        const checkTemp = ()=>{
+            showTempList.value = true
+        }
         //监听加密等级
         watch(() => boserForm.value.encryptLevel, (newValue, oldValue) => {
             const thisRole = levelList.value.find(item=>item.levelCode == newValue)
@@ -387,11 +466,24 @@ export default {
             users,
             sureUpBoser,
             upFirstFolderData,
-            needCode
+            needCode,
+            switchChange,
+            showTempList,
+            closeTempList,
+            getAddTempId,
+            tempId,
+            getTempPreview,
+            showPreTemp,
+            preTemp,
+            closePreTemp,
+            preTempTitle,
+            checkTemp
         }
     },
     components: {
         CreateTasnsfer,
+        MenuTempList,
+        PreviewMenuList
     },
 }
 </script>

+ 6 - 6
src/views/myfile/MyFile.vue

@@ -3489,12 +3489,12 @@ p {
     border-bottom: none;
 }
 
-// 隐藏全选按钮
-.file-jia {
-    :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
-        visibility: hidden;
-    }
-}
+// // 隐藏全选按钮
+// .file-jia {
+//     :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
+//         visibility: hidden;
+//     }
+// }
 
 .yincang {
     opacity: 0.5;

+ 95 - 15
src/views/myfile/modalComponebts/CreateFloder.vue

@@ -6,6 +6,10 @@
                     <el-form-item label="目录名称">
                         <el-input v-model="boserForm.dirName" placeholder="请输入不多于32位字符" maxlength='32' />
                     </el-form-item>
+                    <el-form-item label="是否使用模板">
+                       <el-switch @change="switchChange" v-model="boserForm.useTemp" active-value="Y" inactive-value="N" />
+                       <el-button v-if="boserForm.useTemp === 'Y'" style="margin-left:10px;" @click="checkTemp" type="info" plain>{{preTempTitle || '点击选择模板'}}</el-button>
+                    </el-form-item>
                     <!-- <el-form-item label="目录分类">
                         <el-radio-group v-model="boserForm.dirType">
                             <el-radio :label="1">公开目录</el-radio>
@@ -33,6 +37,8 @@
                     </span>
                 </template>
             </el-dialog>
+            <MenuTempList v-if="showTempList" :showTempList='showTempList' @getTempPreview="getTempPreview" @getAddTempId='getAddTempId' @closeTempList="closeTempList"></MenuTempList>
+            <PreviewMenuList v-if="showPreTemp" :showPreTemp="showPreTemp" :preTemp="preTemp" @closePreTemp="closePreTemp"></PreviewMenuList>
         </div>
     </div>
 </template>
@@ -40,6 +46,8 @@
 <script>
 import { ref, onMounted, toRef,toRaw,inject ,watch } from 'vue';
 import documents from '../../../api/document/document';
+import MenuTempList from '@/components/MenuTempList/MenuTempList.vue';
+import PreviewMenuList from '@/components/PreviewMenuList/PreviewMenuList.vue';
 import { getLevel } from '@/api/level/level.js';
 import { ElMessage } from 'element-plus';
 import { sm3 ,sm2} from "sm-crypto";
@@ -91,6 +99,7 @@ export default {
         let addBoser = ref(false)
         let boserForm = ref({
             dirName: "",
+            useTemp:'N',
             dirType:1,
             isEncrypt:"N",
             encryptLevel:"L1",
@@ -98,6 +107,11 @@ export default {
         })
         const levelList = ref([])
         const needCode = ref(false) // 需要私有码
+        const showTempList = ref(false)
+        const tempId = ref()
+        const showPreTemp = ref(false)
+        const preTemp = ref()
+        const preTempTitle = ref('')
         function inital() {
             console.log(free, 'free');
             addBoser.value = result
@@ -107,6 +121,13 @@ export default {
             emit("getChildrenC", addBoser.value)
         }
         function addFloder() {
+            if(boserForm.value.useTemp === "Y" && !tempId.value){
+                ElMessage({
+                    type: "error",
+                    message: "请选择模板"
+                })
+                return
+            }
             if (boserForm.value.dirName === '') {
                 ElMessage({
                     type: "error",
@@ -172,19 +193,35 @@ export default {
                             "accessCode":boserForm.value.accessCode?sm3(boserForm.value.accessCode):''
                         }
                     }
-                    documents.addDocument(
-                      query
-                    ).then(res => {
-                        if (res.code === 200) {
-                            ElMessage({
-                                message: '添加成功',
-                                type: 'success',
-                            })
-                        }
-                        addBoser.value = false
-                        emit("getChildrenC", addBoser.value)
-                        props.refreshFile()
-                    })
+                    if(boserForm.value.useTemp == 'N'){
+                        documents.addDocument(
+                        query
+                        ).then(res => {
+                            if (res.code === 200) {
+                                ElMessage({
+                                    message: '添加成功',
+                                    type: 'success',
+                                })
+                            }
+                            addBoser.value = false
+                            emit("getChildrenC", addBoser.value)
+                            props.refreshFile()
+                        })
+                    }else{
+                        documents.addDocumentByTemp(
+                        query,tempId.value
+                        ).then(res => {
+                            if (res.code === 200) {
+                                ElMessage({
+                                    message: '添加成功',
+                                    type: 'success',
+                                })
+                            }
+                            addBoser.value = false
+                            emit("getChildrenC", addBoser.value)
+                            props.refreshFile()
+                        })
+                    }
                 }
             }
 
@@ -196,6 +233,34 @@ export default {
             }
             // console.log('level',res);
         }
+        const switchChange = (val)=>{
+            if(val === "Y"){
+                showTempList.value = true
+            }else{
+                preTempTitle.value = ''
+                tempId.value = null
+                showTempList.value = false
+            }
+        }
+        const closeTempList = ()=>{
+            showTempList.value = false
+        }
+        const closePreTemp = ()=>{
+            showPreTemp.value = false
+        }
+        const getAddTempId = (id,name)=>{
+            tempId.value = id
+            preTempTitle.value = name
+            showTempList.value = false
+        }
+        const getTempPreview = (item)=>{
+            showPreTemp.value = true
+    
+            preTemp.value = JSON.parse(item.tmplContent)
+        }
+        const checkTemp = ()=>{
+            showTempList.value = true
+        }
         //监听加密等级
         watch(() => boserForm.value.encryptLevel, (newValue, oldValue) => {
             const thisRole = levelList.value.find(item=>item.levelCode == newValue)
@@ -227,9 +292,24 @@ export default {
             getLevelList,
             FolderRole,
             free,
-            needCode
+            needCode,
+            switchChange,
+            showTempList,
+            closeTempList,
+            getAddTempId,
+            tempId,
+            getTempPreview,
+            showPreTemp,
+            preTemp,
+            closePreTemp,
+            preTempTitle,
+            checkTemp
+        }
+    },
+    components:{
+            MenuTempList,
+            PreviewMenuList
         }
-    }
 }
 </script>
 

+ 6 - 6
src/views/publicment/MyFile.vue

@@ -3121,12 +3121,12 @@ p {
     border-bottom: none;
 }
 
-// 隐藏全选按钮
-.file-jia {
-    :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
-        visibility: hidden;
-    }
-}
+// // 隐藏全选按钮
+// .file-jia {
+//     :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
+//         visibility: hidden;
+//     }
+// }
 .file-title{
   color: #2E6BC8;
   margin-left: 3%;

+ 106 - 14
src/views/publicment/modalComponebts/CreateFloder.vue

@@ -12,6 +12,10 @@
                             <el-radio :label="2">组织目录</el-radio>
                         </el-radio-group>
                     </el-form-item>
+                    <el-form-item label="是否使用模板">
+                       <el-switch @change="switchChange" v-model="boserForm.useTemp" active-value="Y" inactive-value="N" />
+                       <el-button v-if="boserForm.useTemp === 'Y'" style="margin-left:10px;" @click="checkTemp" type="info" plain>{{preTempTitle || '点击选择模板'}}</el-button>
+                    </el-form-item>
                    <template v-if="(boserForm.dirType === 2 || thisType.dirType == '2')">
                         <template v-if="!upFolderData  && (free || (!free && thisType.dirType != '2' ))">
                             <el-form-item label="是否加密" v-if="!FolderRole?.levelCode || free">
@@ -50,6 +54,8 @@
                     </span>
                 </template>
             </el-dialog>
+            <MenuTempList v-if="showTempList" :showTempList='showTempList' @getTempPreview="getTempPreview" @getAddTempId='getAddTempId' @closeTempList="closeTempList"></MenuTempList>
+            <PreviewMenuList v-if="showPreTemp" :showPreTemp="showPreTemp" :preTemp="preTemp" @closePreTemp="closePreTemp"></PreviewMenuList>
         </div>
     </div>
 </template>
@@ -57,6 +63,8 @@
 <script>
 import { ref, onMounted, toRef,toRaw,inject ,watch} from 'vue';
 import documents from '../../../api/document/document';
+import MenuTempList from '@/components/MenuTempList/MenuTempList.vue';
+import PreviewMenuList from '@/components/PreviewMenuList/PreviewMenuList.vue';
 import {listUser} from '../../../api/biz/user';
 import { getLevel } from '@/api/level/level.js';
 import { ElMessage } from 'element-plus';
@@ -138,6 +146,7 @@ export default {
         let addBoser = ref(false)
         let boserForm = ref({
             dirName: upFolderData?upFolderData.dirName:"",
+            useTemp:'N',
             dirType:upFolderData?2:1,
             isEncrypt:upFolderData?upFolderData.isEncrypt:"Y",
             encryptLevel:upFolderData?upFolderData.encryptLevel:"L1",
@@ -147,6 +156,11 @@ export default {
         })
         const levelList = ref([])
         const needCode = ref(false) // 需要私有码
+        const showTempList = ref(false)
+        const tempId = ref()
+        const showPreTemp = ref(false)
+        const preTemp = ref()
+        const preTempTitle = ref('')
         function inital() {
             console.log(free, 'free');
             addBoser.value = result
@@ -156,7 +170,13 @@ export default {
             emit("getChildrenC", addBoser.value)
         }
         function addFloder() {
-            console.log('boserForm',boserForm.value);
+            if(boserForm.value.useTemp === "Y" && !tempId.value){
+                ElMessage({
+                    type: "error",
+                    message: "请选择模板"
+                })
+                return
+            }
             if (boserForm.value.dirName === '') {
                 ElMessage({
                     type: "error",
@@ -193,10 +213,11 @@ export default {
                             
                     }
                     }
-                    documents.addDocument(
-                       query
-                    ).then(res => {
-                        if (res.code === 200) {
+                    if(boserForm.value.useTemp == 'N'){
+                        documents.addDocument(
+                        query
+                        ).then(res => {
+                            if (res.code === 200) {
                             ElMessage({
                                 message: '添加一级目录成功',
                                 type: 'success',
@@ -205,7 +226,22 @@ export default {
                         addBoser.value = false
                         emit("getChildrenC", addBoser.value)
                         props.getFirstFolder()
-                    })
+                        })
+                    }else{
+                        documents.addDocumentByTemp(
+                        query,tempId.value
+                        ).then(res => {
+                            if (res.code === 200) {
+                            ElMessage({
+                                message: '添加一级目录成功',
+                                type: 'success',
+                            })
+                        }
+                        addBoser.value = false
+                        emit("getChildrenC", addBoser.value)
+                        props.getFirstFolder()
+                        })
+                    }
                 } else {
                     let query = {}
                     if(FolderRole?.levelCode || thisRole.length ||thisType.dirType == "2"){
@@ -243,20 +279,35 @@ export default {
                              "accessCode":boserForm.value.accessCode?sm3(boserForm.value.accessCode):''
                         }
                     }
-                    console.log('free0query',query);
-                    documents.addDocument(
-                      query
-                    ).then(res => {
-                        if (res.code === 200) {
+                    if(boserForm.value.useTemp == 'N'){
+                        documents.addDocument(
+                        query
+                        ).then(res => {
+                            if (res.code === 200) {
                             ElMessage({
-                                message: '添加成功',
+                                message: '添加目录成功',
                                 type: 'success',
                             })
                         }
                         addBoser.value = false
                         emit("getChildrenC", addBoser.value)
                         props.refreshFile()
-                    })
+                        })
+                    }else{
+                        documents.addDocumentByTemp(
+                        query,tempId.value
+                        ).then(res => {
+                            if (res.code === 200) {
+                            ElMessage({
+                                message: '添加目录成功',
+                                type: 'success',
+                            })
+                        }
+                        addBoser.value = false
+                        emit("getChildrenC", addBoser.value)
+                        props.refreshFile()
+                        })
+                    }
                 }
             }
 
@@ -342,6 +393,34 @@ export default {
             //  console.log('getUser',res);
              users.value = res.rows
         }
+        const switchChange = (val)=>{
+            if(val === "Y"){
+                showTempList.value = true
+            }else{
+                preTempTitle.value = ''
+                tempId.value = null
+                showTempList.value = false
+            }
+        }
+        const closeTempList = ()=>{
+            showTempList.value = false
+        }
+        const closePreTemp = ()=>{
+            showPreTemp.value = false
+        }
+        const getAddTempId = (id,name)=>{
+            tempId.value = id
+            preTempTitle.value = name
+            showTempList.value = false
+        }
+        const getTempPreview = (item)=>{
+            showPreTemp.value = true
+    
+            preTemp.value = JSON.parse(item.tmplContent)
+        }
+        const checkTemp = ()=>{
+            showTempList.value = true
+        }
         //监听加密等级
         watch(() => boserForm.value.encryptLevel, (newValue, oldValue) => {
             const thisRole = levelList.value.find(item=>item.levelCode == newValue)
@@ -386,11 +465,24 @@ export default {
             users,
             sureUpBoser,
             upFirstFolderData,
-            needCode
+            needCode,
+            switchChange,
+            showTempList,
+            closeTempList,
+            getAddTempId,
+            tempId,
+            getTempPreview,
+            showPreTemp,
+            preTemp,
+            closePreTemp,
+            preTempTitle,
+            checkTemp
         }
     },
     components: {
         CreateTasnsfer,
+        MenuTempList,
+        PreviewMenuList
     },
 }
 </script>