wenhongquan 1 anno fa
parent
commit
c6be0d9058

+ 15 - 8
src/components/FileUpload/index.vue

@@ -16,7 +16,7 @@
       auto-upload
       :drag="suportdrag"
     >
-     <slot v-if="!defaultbtn"></slot>
+      <slot v-if="!defaultbtn"></slot>
       <!-- 上传按钮 -->
       <el-button v-if="defaultbtn" type="primary">选取文件</el-button>
     </el-upload>
@@ -24,18 +24,25 @@
     <div class="el-upload__tip" v-if="showTip" style="position: relative;">
       请上传
       <template v-if="fileSize">
-        大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
+        <b style="color: #f56c6c">{{limit}}个以内</b>的文件单个文件大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
       </template>
-      <template v-if="fileType">
+      <template v-if="fileType&&false">
         格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
       </template>
-      的文件
+      <!-- 的文件 -->
 
-      <div style="position: absolute;top:0;right:10px">共 <span style="color: #f56c6c;">{{ fileList.length }}</span> 个文件</div>
+      <div style="position: absolute;top:0;right:10px">
+        共 <span style="color: #f56c6c;">{{ fileList.length }}</span> 个文件
+      </div>
     </div>
 
     <!-- 文件列表 -->
-    <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul" style="max-height: 150px;overflow-y: auto;">
+    <transition-group
+      class="upload-file-list el-upload-list el-upload-list--text"
+      name="el-fade-in-linear"
+      tag="ul"
+      style="max-height: 150px;overflow-y: auto;"
+    >
       <li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
         <el-link :href="`${file.url}`" :underline="false" target="_blank">
           <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
@@ -60,7 +67,7 @@ const props = defineProps({
     // 大小限制(MB)
     fileSize: propTypes.number.def(5),
     // 文件类型, 例如['png', 'jpg', 'jpeg']
-    fileType: propTypes.array.def(["doc", "xls", "ppt", "txt", "pdf"]),
+    fileType: propTypes.array.def(['*']),
   // 是否显示提示
     isShowTip: propTypes.bool.def(true),
   suportdrag: propTypes.bool.def(false),
@@ -115,7 +122,7 @@ const handleBeforeUpload = (file: any) => {
     if (props.fileType.length) {
         const fileName = file.name.split('.');
         const fileExt = fileName[fileName.length - 1];
-        const isTypeOk = props.fileType.indexOf(fileExt) >= 0;
+        const isTypeOk = true; //props.fileType.indexOf(fileExt) >= 0;
         if (!isTypeOk) {
             proxy?.$modal.msgError(`文件格式不正确, 请上传${props.fileType.join("/")}格式文件!`);
             return false;

+ 23 - 2
src/components/pdfview/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div style="width: 100%;height:100%;position:absolute">
     <!-- <el-watermark :font="font" :content="content" style="width: 100%;height:100%;position:absolute"> -->
-      <iframe style="width:100%;height:100%;border:none" :src="`${currentPdf}`" />
+      <iframe v-loading="true" style="width:100%;height:100%;border:none" :src="`${currentPdf}`" />
     <!-- </el-watermark> -->
   </div>
   <!-- <div v-for="page in pages" :key="page" style="width: 100%;">
@@ -12,9 +12,18 @@
 </template>
 <script lang="ts" setup>
 import {ref, onMounted, watchEffect} from 'vue'
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 // import { VuePDF, usePDF } from '@tato30/vue-pdf'
 import { propTypes } from '@/utils/propTypes';
 import base64 from 'base-64';
+import moment from 'moment';
+import useUserStore from '@/store/modules/user';
+
+const userStore = useUserStore();
+
+const { watermark } = toRefs<any>(
+
+);
 
 const props = defineProps({
   src: propTypes.string.def(''),
@@ -25,17 +34,29 @@ const font = ref({
   color: 'rgba(0, 0, 0, .15)',
 })
 
+const watertext = ref();
+
 
 const currentPdf = ref(props.src)
 watchEffect(() => {
 
+
+
   //http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url))
-  currentPdf.value = `http://127.0.0.1:8012/onlinePreview?url=${encodeURIComponent(base64.encode(props.src))}&watermarkTxt=${encodeURIComponent('动态水印')}`;
+  currentPdf.value = `/preview/onlinePreview?url=${encodeURIComponent(base64.encode(props.src))}&watermarkTxt=${encodeURIComponent(watertext.value)}`;
 
   // currentPdf.value = props.src.replaceAll("https://njdnyjsfilesystem.s3.cn-east-1.qiniucs.com","http://sdrqczwd3.hd-bkt.clouddn.com");
 })
 
 
+onMounted(()=>{
+  proxy?.getConfigKey("sys.file.preview.watermark").then(res => {
+    if(res.data){
+      watertext.value = res.data.replaceAll("{username}",userStore.nickname).replaceAll("{time}",moment().format("yyyy-MM-DD HH:mm:ss"))
+    }
+  })
+})
+
 
 // const { pdf, pages } = usePDF(currentPdf)
 

+ 2 - 2
src/utils/request.ts

@@ -40,8 +40,8 @@ service.interceptors.request.use(
     // 是否需要防止数据重复提交
     const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
     // 是否需要加密
-    // const isEncrypt = (config.headers || {}).isEncrypt === 'true';
-    const isEncrypt = false;
+    const isEncrypt = (config.headers || {}).isEncrypt === 'true';
+    // const isEncrypt = false;
     if (getToken() && !isToken) {
       config.headers['Authorization'] = 'Bearer ' + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
     }

+ 178 - 89
src/views/file/list/index.vue

@@ -23,7 +23,6 @@
             />
           </div>
         </div>
-
       </div>
 
       <div
@@ -40,7 +39,6 @@
           <el-button type="primary" @click="reset">重置</el-button>
           <el-button type="primary" @click="getnextdata(1)">查询</el-button>
         </div>
-
       </div>
     </div>
 
@@ -51,19 +49,27 @@
         style="width: 100%; height: 70vh"
         :row-class-name="tableRowClassName"
       >
-
-        <el-table-column prop="originalName" label="文件名称" >
+        <el-table-column prop="originalName" label="文件名称">
           <template #default="scope">
-            <div style="display: flex;">
-               <img style="width: 25px;height:25px" :src="gettypeicon(scope.row.fileSuffix)"/>
-               <div>{{ scope.row.originalName }}</div>
+            <div style="display: flex">
+              <img
+                style="width: 25px; height: 25px"
+                :src="gettypeicon(scope.row.fileSuffix)"
+              />
+              <div>{{ scope.row.originalName }}</div>
             </div>
           </template>
         </el-table-column>
         <el-table-column prop="size" label="文件大小" width="190">
-         <template #default="scope">
-              {{ scope.row.size >1024 ? scope.row.size>1024*1024?(scope.row.size / 1024/1024).toFixed(2) + ' MB' :(scope.row.size / 1024).toFixed(2) + ' KB' : scope.row.size + ' B' }}
-           </template>
+          <template #default="scope">
+            {{
+              scope.row.size > 1024
+                ? scope.row.size > 1024 * 1024
+                  ? (scope.row.size / 1024 / 1024).toFixed(2) + " MB"
+                  : (scope.row.size / 1024).toFixed(2) + " KB"
+                : scope.row.size + " B"
+            }}
+          </template>
         </el-table-column>
         <el-table-column prop="createTime" label="上传日期" width="160" />
 
@@ -79,28 +85,22 @@
                 flex-direction: row;
               "
             >
-              <div
-              >
-                <el-button type="text" size="small" @click="filepreview(scope.row)"
+              <div>
+                <el-button type="text" size="small" @click="filepreview(scope.row)" v-hasPermi="['filemanager.file.preview']"
                   >预览</el-button
                 >
               </div>
-              <div
-              >
-                <el-button type="text" size="small" @click="downloadfile(scope.row)"
+              <div>
+                <el-button type="text" size="small" @click="downloadfile(scope.row)" v-hasPermi="['filemanager.file.download']"
                   >下载</el-button
                 >
               </div>
 
-              <div
-              >
-                <el-button type="text" size="small" @click="logs(scope.row)"
+              <div>
+                <el-button type="text" size="small" @click="filelogs(scope.row)" v-hasPermi="['filemanager.file.log']"
                   >记录</el-button
                 >
               </div>
-
-
-
             </div>
           </template>
         </el-table-column>
@@ -117,49 +117,96 @@
       </div>
     </div>
 
-    <el-dialog v-model="pdfviewshow" :title="`文件预览`" width="60vw" >
-
-
-        <div style="position: relative;min-height:70vh;">
-           <el-affix :offset="400" style="width: 100%;">
-              <div style="position: absolute;">
-                 <el-button type="primary" icon="DArrowLeft" :disabled="ccindex<=0" @click="fileindexlook(ccindex-1)"></el-button>
-              </div>
-              <div style="float: right;">
-                 <el-button type="primary" icon="DArrowRight" :disabled="ccindex+1>=tableData.length" @click="fileindexlook(ccindex+1)"></el-button>
-              </div>
-           </el-affix>
-            <pdfview :src="currentfile.url" ></pdfview>
-
-
-
-        </div>
-        <!-- <div><el-affix :offset="120" position="bottom"><el-button type="text" icon="DArrowRight"></el-button></el-affix></div>
-      </div> -->
-
-     <template #footer>
+    <el-dialog v-model="pdfviewshow" :title="`文件预览`" width="60vw">
+      <div style="position: relative; min-height: 70vh">
+        <el-affix :offset="400" style="width: 100%">
+          <div style="position: absolute">
+            <el-button
+              type="primary"
+              icon="DArrowLeft"
+              :disabled="ccindex <= 0"
+              @click="fileindexlook(ccindex - 1)"
+            ></el-button>
+          </div>
+          <div style="float: right">
+            <el-button
+              type="primary"
+              icon="DArrowRight"
+              :disabled="ccindex + 1 >= tableData.length"
+              @click="fileindexlook(ccindex + 1)"
+            ></el-button>
+          </div>
+        </el-affix>
+        <pdfview :src="currentfile.url"></pdfview>
+      </div>
+      <template #footer>
         <div class="dialog-footer">
           <el-button @click="pdfviewshow = false">关闭</el-button>
 
-          <el-button type="primary" @click="downloadfile">
-            下载
-          </el-button>
+          <el-button type="primary" @click="downloadfile" v-hasPermi="['filemanager.file.download']"> 下载 </el-button>
         </div>
       </template>
     </el-dialog>
 
+    <el-drawer
+      v-model="logsshow"
+      title="文件信息"
+      :direction="'rtl'"
+      :before-close="handleClose"
+    >
+      <div>
+        <el-descriptions title="项目信息" border :column="2">
+          <el-descriptions-item label="电子编号">{{
+            currentproject.ecode
+          }}</el-descriptions-item>
+          <el-descriptions-item label="丘权号">{{
+            currentproject.qiuquan
+          }}</el-descriptions-item>
+          <el-descriptions-item label="区域">{{
+            currentproject.area
+          }}</el-descriptions-item>
+          <el-descriptions-item label="创建时间">
+            {{ currentproject.achievementDate }}
+          </el-descriptions-item>
+          <el-descriptions-item label="建设单位" :span="2">
+            {{ currentproject.buildUnit }}
+          </el-descriptions-item>
+          <el-descriptions-item label="地址" :span="2">
+            {{ currentproject.addr }}
+          </el-descriptions-item>
+          <el-descriptions-item label="备注" :span="2">
+            {{ currentproject.remark }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </div>
+      <el-divider />
+
+      <div>
+        <div style="max-height: 50vh;overflow-y: auto;">
+          <el-timeline style="max-width: 600px; ">
+            <el-timeline-item
+              v-for="(activity, index) in activities"
+              :key="index"
+              :timestamp="activity.timestamp"
+               :color="activity.color"
+            >
+              {{ activity.content }}
+            </el-timeline-item>
+          </el-timeline>
+        </div>
+      </div>
+    </el-drawer>
   </div>
 </template>
 
 <script lang="ts" setup>
 import { ref, onMounted } from "vue";
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-import {
-  listByIds,
-  listArchivesFileList,
-
-} from "@/api/system/oss/index";
+import { listByIds, listArchivesFileList } from "@/api/system/oss/index";
 import _ from "lodash";
+import { getArchives } from "@/api/archives/index";
+
+import { list } from "@/api/monitor/operlog/index";
 
 // const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 // const { sys_area, sys_project_status } = toRefs<any>(
@@ -181,22 +228,21 @@ const reset = () => {
 
 const tableData = ref([]);
 
-
-
 const currentpage = ref(0);
 const totalnum = ref(0);
 
 const getnextdata = (page: number) => {
   currentpage.value = page;
-  listArchivesFileList({ pageSize: 10, pageNum: page, ...searchForm.value }).then((res) => {
-    tableData.value = res.rows;
-    totalnum.value = res.total;
-  });
+  listArchivesFileList({ pageSize: 10, pageNum: page, ...searchForm.value }).then(
+    (res) => {
+      tableData.value = res.rows;
+      totalnum.value = res.total;
+    }
+  );
 };
 onMounted(() => {
   getnextdata(1);
-})
-
+});
 
 const tableRowClassName = ({ row, rowIndex }: { row: any; rowIndex: number }) => {
   return "";
@@ -206,64 +252,107 @@ const pdfviewshow = ref(false);
 const currentfile = ref();
 const ccindex = ref(0);
 const fileindexlook = (index) => {
-  var item = tableData.value[index]
+  var item = tableData.value[index];
   filepreview(item);
-}
+};
 const filepreview = (file) => {
-  ccindex.value = tableData.value.indexOf(file)
+  ccindex.value = tableData.value.indexOf(file);
   currentfile.value = file;
   listByIds(file.ossId).then((res) => {
     currentfile.value.url = res.data[0].url;
     pdfviewshow.value = true;
   });
-
-}
+};
 const downloadfile = (file) => {
-     proxy?.$download.oss(file.ossId)
- }
-
+  proxy?.$download.oss(file.ossId);
+};
 
+const currentproject = ref({
+  area: "",
+  ecode: "",
+  qiuquan: "",
+  buildUnit: "",
+  addr: "",
+  saveAddr: "",
+  remark: "",
+});
+const logsshow = ref(false);
+const filelogs = (file) => {
+  logsshow.value = true;
+  getArchives(file.archiveId).then((res) => {
+    currentproject.value = res.data;
+  });
+  activities.value = [];
+  list({ title: "OSS对象存储", jsonResult: file.ossId }).then((res) => {
+    var ll = res.rows.map((item) => {
+      var re = { content: item.operName + " 预览文件", timestamp: item.operTime, color: '#0bbd87', };
+      if ((item.operParam + "").indexOf("type") != -1) {
+        re.content = item.operName + " 预览文件";
+      }
+      if (item.requestMethod == "POST") {
+        re.content = item.operName + " 上传了文件";
+        re.color = '#1e90ff';
+      }
+      return re;
+    });
+    activities.value = activities.value.concat(ll);
 
+    _.sortedIndexBy(activities.value, function (o) {
+      return o.timestamp;
+    });
+  });
+  list({ title: "OSS对象存储", businessType: 5, operUrl: file.ossId }).then((res) => {
+    var ll = res.rows.map((item) => {
+      var re = { content: item.operName + " 下载了文件", timestamp: item.operTime , color: '#c4000a',};
+      return re;
+    });
+    activities.value = activities.value.concat(ll);
+    _.sortedIndexBy(activities.value, function (o) {
+      return o.timestamp;
+    });
+  });
+};
 
+const activities = ref([
+]);
 
-import txticon from '@/assets/icons/svg/txt.svg'
-import picicon from '@/assets/icons/svg/pic.svg'
-import pdficon from '@/assets/icons/svg/pdf1.svg'
-import docicon from '@/assets/icons/svg/doc.svg'
-import xlsicon from '@/assets/icons/svg/xls.svg'
-import ppticon from '@/assets/icons/svg/ppt.svg'
-import mp4icon from '@/assets/icons/svg/mp4.svg'
-import cadicon from '@/assets/icons/svg/cad.svg'
-import unknownicon from '@/assets/icons/svg/unknown.svg'
+import txticon from "@/assets/icons/svg/txt.svg";
+import picicon from "@/assets/icons/svg/pic.svg";
+import pdficon from "@/assets/icons/svg/pdf1.svg";
+import docicon from "@/assets/icons/svg/doc.svg";
+import xlsicon from "@/assets/icons/svg/xls.svg";
+import ppticon from "@/assets/icons/svg/ppt.svg";
+import mp4icon from "@/assets/icons/svg/mp4.svg";
+import cadicon from "@/assets/icons/svg/cad.svg";
+import unknownicon from "@/assets/icons/svg/unknown.svg";
 
 const gettypeicon = (type) => {
-  if (type.indexOf('png') != -1 || type.indexOf('jp') != -1) {
+  if (type.indexOf("png") != -1 || type.indexOf("jp") != -1) {
     return picicon;
   }
-  if (type.indexOf('ppt') != -1 ) {
+  if (type.indexOf("ppt") != -1) {
     return ppticon;
   }
-   if (type.indexOf('xl') != -1 ) {
+  if (type.indexOf("xl") != -1) {
     return xlsicon;
-   }
-   if (type.indexOf('doc') != -1 ) {
+  }
+  if (type.indexOf("doc") != -1) {
     return docicon;
-   }
-  if (type.indexOf('txt') != -1 ) {
+  }
+  if (type.indexOf("txt") != -1) {
     return txticon;
   }
-  if (type.indexOf('ca') != -1 ) {
+  if (type.indexOf("ca") != -1) {
     return cadicon;
   }
-  if (type.indexOf('mp4') != -1 ) {
+  if (type.indexOf("mp4") != -1) {
     return mp4icon;
   }
-  if (type.indexOf('pdf') != -1 ) {
+  if (type.indexOf("pdf") != -1) {
     return pdficon;
   }
-  return unknownicon
-}
-
+  return unknownicon;
+};
 </script>
 
 <style type="scss" scoped>

+ 66 - 15
src/views/project/list/index.vue

@@ -6,7 +6,7 @@
         <div class="item">
           <div>区域:</div>
           <div>
-            <el-select v-model="searchForm.area" clearable placeholder="请选择">
+            <el-select style="width: 120px;" v-model="searchForm.area" clearable placeholder="请选择">
               <el-option
                 v-for="item in sys_area"
                 :key="item.value"
@@ -22,7 +22,7 @@
           <div>
             <el-input
               v-model="searchForm.qiuquan"
-              style="width: 240px"
+              style="width: 200px"
               placeholder="请输入"
             />
           </div>
@@ -32,7 +32,7 @@
           <div>
             <el-input
               v-model="searchForm.buildUnit"
-              style="width: 240px"
+              style="width: 200px"
               placeholder="请输入"
             />
           </div>
@@ -43,7 +43,17 @@
           <div>
             <el-input
               v-model="searchForm.saveAddr"
-              style="width: 240px"
+              style="width: 200px"
+              placeholder="请输入"
+            />
+          </div>
+        </div>
+        <div class="item">
+          <div>备注:</div>
+          <div>
+            <el-input
+              v-model="searchForm.remark"
+              style="width: 200px"
               placeholder="请输入"
             />
           </div>
@@ -149,10 +159,11 @@
                 flex-direction: row;
               "
             >
-              <div v-if="scope.row.status == '3' || scope.row.status == '4'">
+              <div v-if="scope.row.status == '3' || scope.row.status == '4'"  v-hasPermi="['filemanager.project.submit']">
                 <el-button
                   type="text"
                   size="small"
+
                   @click="updatecurrent(scope.row.id, 2)"
                   >提交</el-button
                 >
@@ -177,7 +188,7 @@
                   </template>
                 </el-popconfirm>
               </div>
-              <div>
+              <div v-hasPermi="['filemanager.project.filelook']">
                 <el-button type="text" size="small" @click="lookfiles(scope.row)">文件查看</el-button>
               </div>
               <div v-if="scope.row.status == '2'">
@@ -228,7 +239,7 @@
         <div class="dialog-footer">
           <el-button @click="pdfviewshow = false">关闭</el-button>
 
-          <el-button type="primary" @click="downloadfile(currentfile)">
+          <el-button v-hasPermi="['filemanager.project.file.download']" type="primary" @click="downloadfile(currentfile)">
             下载
           </el-button>
         </div>
@@ -313,14 +324,19 @@
     v-model="drawer"
     :title="`${currentitem.ecode} 文件列表查看`"
     :direction="'rtl'"
-    :before-close="handleClose" size="50%"
+    :before-close="handleClose" size="60%"
   >
     <div style="position: absolute;right: 20px;bottom: 20px;">
-    <el-button type="primary" icon="UploadFilled"  @click="uploadfile">上传文件</el-button>
+    <el-button type="primary" icon="UploadFilled" v-hasPermi="['filemanager.project.file.upload']"  @click="uploadfile">上传文件</el-button>
+    </div>
+    <div style="position: absolute;left: 20px;top: 60px;">
+      <el-button type="primary" icon="Download" size="small" :disabled="selectfiles.length<1" v-hasPermi="['filemanager.project.file.downloadb']"  @click="downloadfilebanch">下载</el-button>
+      <el-button type="danger" icon="Delete" size="small" :disabled="selectfiles.length<1"  v-hasPermi="['filemanager.project.file.deleteb']" @click="deletefilebanch">删除</el-button>
     </div>
 
-    <el-table style="width: 100%;" :data="filelist">
-        <el-table-column prop="originalName" label="文件名称" width="300">
+    <el-table style="width: 100%;height:80vh"  :data="filelist"  @selection-change="handleSelectionChange">
+       <el-table-column type="selection" width="55" />
+        <el-table-column prop="originalName" label="文件名称" >
           <template #default="scope">
             <div style="display: flex;">
                <img style="width: 25px;height:25px" :src="gettypeicon(scope.row.fileSuffix)"/>
@@ -335,12 +351,12 @@
         </el-table-column>
          <el-table-column prop="createTime" label="上传时间" width="180">
         </el-table-column>
-        <el-table-column prop="date" label="操作" >
+        <el-table-column prop="date" label="操作" width="200">
           <template #default="scope">
              <div style="display: flex;gap:5px">
-               <div> <el-button type="text" @click="filedel(scope.row)">删除</el-button></div>
-               <div> <el-button type="text" @click="filepreview(scope.row)" >预览</el-button></div>
-               <div> <el-button type="text" @click="downloadfile(scope.row)">下载</el-button></div>
+               <div> <el-button type="danger" v-hasPermi="['filemanager.project.file.delete']" text size="small" @click="filedel(scope.row)">删除</el-button></div>
+               <div> <el-button type="warning" v-hasPermi="['filemanager.project.file.preview']" text size="small" @click="filepreview(scope.row)" >预览</el-button></div>
+               <div> <el-button type="primary" v-hasPermi="['filemanager.project.file.download']" text size="small" @click="downloadfile(scope.row)">下载</el-button></div>
              </div>
 
           </template>
@@ -398,6 +414,7 @@ const searchForm = ref({
   buildUnit: "",
   addr: "",
   saveAddr: "",
+  remark:""
 });
 
 const reset = () => {
@@ -407,6 +424,7 @@ const reset = () => {
     buildUnit: "",
     addr: "",
     saveAddr: "",
+    remark:"",
   };
   getnextdata(1);
 };
@@ -557,9 +575,38 @@ const filedel = (item) => {
     });
 }
 
+const downloadfilebanch = () => {
+  proxy?.$download.oss(selectfiles.value.map(i=>i.ossId).join(","))
+}
+
+const deletefilebanch = () => {
+  ElMessageBox.confirm(`确定删除选中的${selectfiles.value.length}文件?`).then(() => {
+    var index = 0;
+    var delindex = 0;
+    selectfiles.value.forEach(item => {
+      index++;
+      delOss(item.ossId).then(res => {
+        delindex++;
+        if (index == delindex) {
+          ElMessage.success("删除成功");
+             setTimeout(() => {
+           getArchive_files(currentitem.value.id).then((res1) => {
+          filelist.value = res1.data
+        });
+        }, 1000);
+
+        }
+
+      })
+    })
+  });
+}
+
+
 const lookfiles = (item) => {
   currentitem.value = item;
   drawer.value = true;
+  selectfiles.value = [];
 
   getArchive_files(item.id).then((res) => {
     filelist.value = res.data
@@ -579,7 +626,11 @@ const saveuploadfiles = () => {
     filelist.value = res.data
   });
   })
+}
 
+const selectfiles = ref([])
+const handleSelectionChange = (vals) => {
+   selectfiles.value = vals
 }
 
 const handleCloseupload = (done) => {

+ 1 - 1
vite.config.ts

@@ -22,7 +22,7 @@ export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
     plugins: createPlugins(env, command === 'build'),
     server: {
       host: '0.0.0.0',
-      port: Number(env.VITE_APP_PORT),
+      port: 18080,
       open: true,
       proxy: {
         [env.VITE_APP_BASE_API]: {