From b86a628d1d14a3eb9da43198f5e48e6179b88e87 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 20 十一月 2024 15:33:17 +0800
Subject: [PATCH] 文件上传格式

---
 src/views/index.vue                 |  437 ++++++++++++++++++-----------------
 src/components/FileUpload/index.vue |  225 +++++++++---------
 2 files changed, 336 insertions(+), 326 deletions(-)

diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue
index 1a0cf44..8cf4924 100644
--- a/src/components/FileUpload/index.vue
+++ b/src/components/FileUpload/index.vue
@@ -16,37 +16,39 @@
     >
       <!-- 涓婁紶鎸夐挳 -->
       <el-button type="primary">閫夊彇鏂囦欢</el-button>
-<!--      <el-progress :percentage="downloadProgress" />-->
+      <!--      <el-progress :percentage="downloadProgress" />-->
     </el-upload>
+    <div class="el-upload__tip">
+      <span style="color:red;">涓嶆敮鎸佷笂浼�.py銆�.js銆�.bat銆�.vbs銆�.cmd銆�.exe绛夋枃浠�</span>
+    </div>
     <!-- 涓婁紶鎻愮ず -->
     <div class="el-upload__tip" v-if="showTip">
       <span>涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃200MB</span>
     </div>
-
   </div>
 </template>
 
 <script setup lang="ts">
-import { listByIds, delOss } from "@/api/system/oss";
+import { listByIds, delOss } from '@/api/system/oss';
 import { propTypes } from '@/utils/propTypes';
-import { globalHeaders } from "@/utils/request";
+import { globalHeaders } from '@/utils/request';
 import { LoadingInstance } from 'element-plus/es/components/loading/src/loading';
-import router from "@/router";
+import router from '@/router';
 let downloadLoadingInstance: LoadingInstance;
 const props = defineProps({
-    modelValue: [String, Object, Array],
-    // 鏁伴噺闄愬埗
-    limit: propTypes.number.def(1),
-    // 澶у皬闄愬埗(MB)
-    fileSize: propTypes.number.def(200),
-    // 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
-    fileType: propTypes.array.def(["doc","docx","xlsx", "xls", "ppt", "txt", "pdf"]),
-    // 鏄惁鏄剧ず鎻愮ず
-    isShowTip: propTypes.bool.def(true),
+  modelValue: [String, Object, Array],
+  // 鏁伴噺闄愬埗
+  limit: propTypes.number.def(1),
+  // 澶у皬闄愬埗(MB)
+  fileSize: propTypes.number.def(200),
+  // 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
+  fileType: propTypes.array.def(['doc', 'docx', 'xlsx', 'xls', 'ppt', 'txt', 'pdf', 'mp3', 'mp4', 'mov', 'png', 'jpg', 'jpeg', 'zip', 'rar', '7z']),
+  // 鏄惁鏄剧ず鎻愮ず
+  isShowTip: propTypes.bool.def(true)
 });
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const emit = defineEmits(['update:modelValue','closePopup','openPopup']);
+const emit = defineEmits(['update:modelValue', 'closePopup', 'openPopup']);
 const number = ref(0);
 const uploadList = ref<any[]>([]);
 //浜掕仈缃戠
@@ -54,13 +56,11 @@
 // const uploadFileUrl = ref('http://10.248.255.130:18080' + "/resource/oss/upload"); // 涓婁紶鏂囦欢鏈嶅姟鍣ㄥ湴鍧�
 // 鍐呯綉绔�
 const baseUrl = import.meta.env.VITE_APP_BASE_API;
-const uploadFileUrl = ref(baseUrl + "/resource/oss/upload"); // 涓婁紶鏂囦欢鏈嶅姟鍣ㄥ湴鍧�
+const uploadFileUrl = ref(baseUrl + '/resource/oss/upload'); // 涓婁紶鏂囦欢鏈嶅姟鍣ㄥ湴鍧�
 const headers = ref(globalHeaders());
 
 const fileList = ref<any[]>([]);
-const showTip = computed(
-    () => props.isShowTip && (props.fileSize)
-);
+const showTip = computed(() => props.isShowTip && props.fileSize);
 
 const fileUploadRef = ref<ElUploadInstance>();
 const downloadProgress = ref(0);
@@ -91,12 +91,12 @@
 //     }
 // }, { deep: true, immediate: true });
 // const fileUploadRef = ref<UploadInstance>()
+
 const handleCilck = async () => {
   console.log('瀛愮粍浠舵柟娉�');
+  await fileUploadRef.value!.submit();
 
-  await fileUploadRef.value!.submit()
-
-
+  return number.value;
   // let val = props.modelValue
   // if (val) {
   //   let temp = 1;
@@ -121,44 +121,44 @@
   //   fileList.value = [];
   //   return [];
   // }
-}
+};
 // 绗簩閮細鏆撮湶鏂规硶
 defineExpose({
   handleCilck
-})
+});
 // 涓婁紶鍓嶆牎妫�鏍煎紡鍜屽ぇ灏�
 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;
-    //     if (!isTypeOk) {
-    //         proxy?.$modal.msgError(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${props.fileType.join("/")}鏍煎紡鏂囦欢!`);
-    //         return false;
-    //     }
-    // }
-    // 鏍℃鏂囦欢澶у皬
-    if (props.fileSize) {
-        const isLt = file.size / 1024 / 1024 < props.fileSize;
-        if (!isLt) {
-            proxy?.$modal.msgError(`涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃 ${props.fileSize} MB!`);
-            return false;
-        }
+  // 鏍℃鏂囦欢绫诲瀷
+  if (props.fileType.length) {
+    const fileName = file.name.split('.');
+    const fileExt = fileName[fileName.length - 1];
+    const isTypeOk = props.fileType.indexOf(fileExt) >= 0;
+    if (!isTypeOk) {
+      proxy?.$modal.msgError(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${props.fileType.join('/')}鏍煎紡鏂囦欢!`);
+      return false;
     }
-    number.value++;
-    return true;
-}
+  }
+  // 鏍℃鏂囦欢澶у皬
+  if (props.fileSize) {
+    const isLt = file.size / 1024 / 1024 < props.fileSize;
+    if (!isLt) {
+      proxy?.$modal.msgError(`涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃 ${props.fileSize} MB!`);
+      return false;
+    }
+  }
+  number.value++;
+  return true;
+};
 
 // 鏂囦欢涓暟瓒呭嚭
 const handleExceed = () => {
-    proxy?.$modal.msgError(`涓婁紶鏂囦欢鏁伴噺涓嶈兘瓒呰繃 ${props.limit} 涓�!`);
-}
+  proxy?.$modal.msgError(`涓婁紶鏂囦欢鏁伴噺涓嶈兘瓒呰繃 ${props.limit} 涓�!`);
+};
 
 // 涓婁紶澶辫触
 const handleUploadError = () => {
-    proxy?.$modal.msgError("涓婁紶鏂囦欢澶辫触");
-}
+  proxy?.$modal.msgError('涓婁紶鏂囦欢澶辫触');
+};
 const debounce = (fn: Function, delay = 1500) => {
   let timer: number | null = null;
   return (...args: any[]) => {
@@ -168,101 +168,100 @@
     timer = setTimeout(() => {
       fn(...args);
     }, delay);
-  }
-}
-const handleUploadProgress=(e: any) => {
+  };
+};
+const handleUploadProgress = (e: any) => {
   console.log('handleUploadProgress锛�');
   // downloadProgress.value = downloadProgress.value + 50
   // emit('closePopup','123123');
   // emit('openPopup','123123');
-}
+};
 // 涓婁紶鎴愬姛鍥炶皟
 const handleUploadSuccess = (res: any, file: UploadFile) => {
-  console.log(res,'resresres');
-    if (res.code === 200) {
-      proxy?.$modal.msgSuccess("涓婁紶鏂囦欢鎴愬姛");
-      setTimeout(()=>{
-        emit('closePopup',res)
-      },1000)
-      console.log('璋冪敤鐖剁粍浠�',res);
-      fileUploadRef.value!.clearFiles()
-      downloadLoadingInstance.close();
-        // uploadList.value.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId });
-        uploadedSuccessfully();
-    }else if (res.code == 401) {
-        location.reload()
-    } else {
-        number.value--;
-        // proxy?.$modal.closeLoading();
-        proxy?.$modal.msgError(res.msg);
-        fileUploadRef.value?.handleRemove(file);
-        uploadedSuccessfully();
-
-    }
-}
+  console.log(res, 'resresres');
+  if (res.code === 200) {
+    proxy?.$modal.msgSuccess('涓婁紶鏂囦欢鎴愬姛');
+    setTimeout(() => {
+      emit('closePopup', res);
+    }, 1000);
+    console.log('璋冪敤鐖剁粍浠�', res);
+    fileUploadRef.value!.clearFiles();
+    downloadLoadingInstance.close();
+    // uploadList.value.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId });
+    uploadedSuccessfully();
+  } else if (res.code == 401) {
+    location.reload();
+  } else {
+    number.value--;
+    // proxy?.$modal.closeLoading();
+    proxy?.$modal.msgError(res.msg);
+    fileUploadRef.value?.handleRemove(file);
+    uploadedSuccessfully();
+  }
+};
 
 // 鍒犻櫎鏂囦欢
 const handleDelete = (index: number) => {
-    let ossId = fileList.value[index].ossId;
-    delOss(ossId);
-    fileList.value.splice(index, 1);
-    emit("update:modelValue", listToString(fileList.value));
-}
+  let ossId = fileList.value[index].ossId;
+  delOss(ossId);
+  fileList.value.splice(index, 1);
+  emit('update:modelValue', listToString(fileList.value));
+};
 
 // 涓婁紶缁撴潫澶勭悊
 const uploadedSuccessfully = () => {
-    if (number.value > 0 && uploadList.value.length === number.value) {
-        fileList.value = fileList.value.filter(f => f.url !== undefined).concat(uploadList.value);
-        uploadList.value = [];
-        number.value = 0;
-        emit("update:modelValue", listToString(fileList.value));
-        proxy?.$modal.closeLoading();
-    }
-}
+  if (number.value > 0 && uploadList.value.length === number.value) {
+    fileList.value = fileList.value.filter((f) => f.url !== undefined).concat(uploadList.value);
+    uploadList.value = [];
+    number.value = 0;
+    emit('update:modelValue', listToString(fileList.value));
+    proxy?.$modal.closeLoading();
+  }
+};
 
 // 鑾峰彇鏂囦欢鍚嶇О
 const getFileName = (name: string) => {
-    // 濡傛灉鏄痷rl閭d箞鍙栨渶鍚庣殑鍚嶅瓧 濡傛灉涓嶆槸鐩存帴杩斿洖
-    if (name.lastIndexOf("/") > -1) {
-        return name.slice(name.lastIndexOf("/") + 1);
-    } else {
-        return name;
-    }
-}
+  // 濡傛灉鏄痷rl閭d箞鍙栨渶鍚庣殑鍚嶅瓧 濡傛灉涓嶆槸鐩存帴杩斿洖
+  if (name.lastIndexOf('/') > -1) {
+    return name.slice(name.lastIndexOf('/') + 1);
+  } else {
+    return name;
+  }
+};
 
 // 瀵硅薄杞垚鎸囧畾瀛楃涓插垎闅�
 const listToString = (list: any[], separator?: string) => {
-    let strs = "";
-    separator = separator || ",";
-    list.forEach(item => {
-        if (item.ossId) {
-            strs += item.ossId + separator;
-        }
-    })
-    return strs != "" ? strs.substring(0, strs.length - 1) : "";
-}
+  let strs = '';
+  separator = separator || ',';
+  list.forEach((item) => {
+    if (item.ossId) {
+      strs += item.ossId + separator;
+    }
+  });
+  return strs != '' ? strs.substring(0, strs.length - 1) : '';
+};
 </script>
 
 <style scoped lang="scss">
 .upload-file-uploader {
-    margin-bottom: 5px;
+  margin-bottom: 5px;
 }
 
 .upload-file-list .el-upload-list__item {
-    border: 1px solid #e4e7ed;
-    line-height: 2;
-    margin-bottom: 10px;
-    position: relative;
+  border: 1px solid #e4e7ed;
+  line-height: 2;
+  margin-bottom: 10px;
+  position: relative;
 }
 
 .upload-file-list .ele-upload-list__item-content {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    color: inherit;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  color: inherit;
 }
 
 .ele-upload-list__item-content-action .el-link {
-    margin-right: 10px;
+  margin-right: 10px;
 }
 </style>
diff --git a/src/views/index.vue b/src/views/index.vue
index 1d5432d..54853f8 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,26 +1,26 @@
 <template>
   <div class="p-2">
-<!--    <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">-->
-<!--      <div class="mb-[10px]" v-show="showSearch">-->
-<!--        <el-card shadow="hover">-->
-<!--          <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">-->
+    <!--    <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">-->
+    <!--      <div class="mb-[10px]" v-show="showSearch">-->
+    <!--        <el-card shadow="hover">-->
+    <!--          <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">-->
 
-<!--            <el-form-item label="鍘熷悕" prop="originalName">-->
-<!--              <el-input v-model="queryParams.originalName" placeholder="璇疯緭鍏ュ師鍚�" clearable style="width: 200px" @keyup.enter="handleQuery" />-->
-<!--            </el-form-item>-->
+    <!--            <el-form-item label="鍘熷悕" prop="originalName">-->
+    <!--              <el-input v-model="queryParams.originalName" placeholder="璇疯緭鍏ュ師鍚�" clearable style="width: 200px" @keyup.enter="handleQuery" />-->
+    <!--            </el-form-item>-->
 
-<!--            <el-form-item>-->
-<!--              <el-button type="primary" icon="search" @click="handleQuery">鎼滅储</el-button>-->
-<!--              <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>-->
-<!--            </el-form-item>-->
-<!--          </el-form>-->
-<!--        </el-card>-->
-<!--      </div>-->
-<!--    </transition>-->
+    <!--            <el-form-item>-->
+    <!--              <el-button type="primary" icon="search" @click="handleQuery">鎼滅储</el-button>-->
+    <!--              <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>-->
+    <!--            </el-form-item>-->
+    <!--          </el-form>-->
+    <!--        </el-card>-->
+    <!--      </div>-->
+    <!--    </transition>-->
 
     <el-card shadow="hover">
       <template #header>
-        <el-row  style="text-align: center">
+        <el-row style="text-align: center">
           <el-col style="display:flex;justify-content: center;align-items: center;min-height: calc(100vh - 160px)">
             <el-button
               style="min-height: 5rem;min-width: 21rem;font-size: 2rem;border-radius: 40px"
@@ -29,52 +29,58 @@
               icon="Upload"
               @click="handleFile"
               v-if="isContains(useUserStore().permissions, 'system:oss:upload')"
-              >涓婁紶鏂囦欢</el-button
+            >涓婁紶鏂囦欢</el-button
             >
           </el-col>
 
-<!--          <el-col :span="1.5">-->
-<!--            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-if="isContains(useUserStore().permissions, 'system:oss:remove')">-->
-<!--              鍒犻櫎-->
-<!--            </el-button>-->
-<!--          </el-col>-->
-<!--          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
+          <!--          <el-col :span="1.5">-->
+          <!--            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-if="isContains(useUserStore().permissions, 'system:oss:remove')">-->
+          <!--              鍒犻櫎-->
+          <!--            </el-button>-->
+          <!--          </el-col>-->
+          <!--          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
         </el-row>
       </template>
-<!--      <el-table-->
-<!--        v-loading="loading"-->
-<!--        :data="ossList"-->
-<!--        @selection-change="handleSelectionChange"-->
-<!--        :header-cell-class-name="handleHeaderClass"-->
-<!--        @header-click="handleHeaderCLick"-->
-<!--        v-if="showTable"-->
-<!--      >-->
-<!--        <el-table-column type="index"  />-->
-<!--&lt;!&ndash;        <el-table-column type="selection" width="55" align="center" />&ndash;&gt;-->
-<!--        <el-table-column label="鍘熷悕" align="center" prop="originalName" />-->
-<!--        <el-table-column label="涓婁紶鏃堕棿" align="center" prop="createTime" />-->
-<!--        <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">-->
-<!--          <template #default="scope">-->
-<!--            <el-tooltip content="鏌ョ湅鎻愬彇鐮�" placement="top">-->
-<!--              <el-button link type="primary" icon="Search" @click="handleCode(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:view')"></el-button>-->
-<!--            </el-tooltip>-->
-<!--            <el-tooltip content="涓嬭浇" placement="top">-->
-<!--              <el-button link type="primary" icon="Download" @click="handleDownload(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:download')"></el-button>-->
-<!--            </el-tooltip>-->
-<!--            <el-tooltip content="鍒犻櫎" placement="top">-->
-<!--              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"></el-button>-->
-<!--            </el-tooltip>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-<!--      </el-table>-->
+      <!--      <el-table-->
+      <!--        v-loading="loading"-->
+      <!--        :data="ossList"-->
+      <!--        @selection-change="handleSelectionChange"-->
+      <!--        :header-cell-class-name="handleHeaderClass"-->
+      <!--        @header-click="handleHeaderCLick"-->
+      <!--        v-if="showTable"-->
+      <!--      >-->
+      <!--        <el-table-column type="index"  />-->
+      <!--&lt;!&ndash;        <el-table-column type="selection" width="55" align="center" />&ndash;&gt;-->
+      <!--        <el-table-column label="鍘熷悕" align="center" prop="originalName" />-->
+      <!--        <el-table-column label="涓婁紶鏃堕棿" align="center" prop="createTime" />-->
+      <!--        <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">-->
+      <!--          <template #default="scope">-->
+      <!--            <el-tooltip content="鏌ョ湅鎻愬彇鐮�" placement="top">-->
+      <!--              <el-button link type="primary" icon="Search" @click="handleCode(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:view')"></el-button>-->
+      <!--            </el-tooltip>-->
+      <!--            <el-tooltip content="涓嬭浇" placement="top">-->
+      <!--              <el-button link type="primary" icon="Download" @click="handleDownload(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:download')"></el-button>-->
+      <!--            </el-tooltip>-->
+      <!--            <el-tooltip content="鍒犻櫎" placement="top">-->
+      <!--              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"></el-button>-->
+      <!--            </el-tooltip>-->
+      <!--          </template>-->
+      <!--        </el-table-column>-->
+      <!--      </el-table>-->
 
-<!--      <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />-->
+      <!--      <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />-->
     </el-card>
     <!-- 娣诲姞鎴栦慨鏀筄SS瀵硅薄瀛樺偍瀵硅瘽妗� -->
     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
       <el-form ref="ossFormRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="鏂囦欢鍚�">
-          <fileUpload ref="childFile" @closePopup="getList();lookPawsd($event)" @openPopup="lookPawsd($event)"  v-model="form.file"  v-if="type === 0" />
+          <fileUpload
+            ref="childFile"
+            @closePopup="getList();lookPawsd($event)"
+            @openPopup="lookPawsd($event)"
+            v-model="form.file"
+            v-if="type === 0"
+          />
           <imageUpload v-model="form.file" v-if="type === 1" />
           <video-upload v-model="form.file" v-if="type === 2" />
         </el-form-item>
@@ -91,88 +97,98 @@
         <p style="color: red; font-size: 20px">鎻愬彇鐮佸皢浼氬湪24灏忔椂鍚庡け鏁堣灏藉揩涓嬭浇!</p>
         <span v-show="titleDownload=='鏌ョ湅鎻愬彇鐮�'" style="font-size: 80px;">{{testtxt}}</span>
       </div>
-      <el-input style="margin: 10px 0" ref="inputRef" :style="inputSty" v-show="titleDownload=='杈撳叆鎻愬彇鐮�'"  v-model="pasTxt" v-if="isContains(useUserStore().permissions, 'system:oss:download')" placeholder="璇疯緭鍏ユ枃浠舵彁鍙栫爜"></el-input>
-      <el-input style="margin: 10px 0" ref="inputRef" :style="inputSty" v-show="titleDownload=='璇疯緭鍏ユ彁鍙栫爜'"  v-model="pasTxt"  placeholder="璇疯緭鍏ユ枃浠舵彁鍙栫爜"></el-input>
-<!--      <el-button link type="primary"   v-show="titleDownload=='杈撳叆鎻愬彇鐮�'" icon="Download" @click="handleDownloadFile()" v-if="isContains(useUserStore().permissions, 'system:oss:download')">涓嬭浇</el-button>-->
-<!--      <el-button link type="primary"   v-show="titleDownload=='璇疯緭鍏ユ彁鍙栫爜'"  icon="Delete" @click="delFile()" >鍒犻櫎</el-button>-->
+      <el-input
+        style="margin: 10px 0"
+        ref="inputRef"
+        :style="inputSty"
+        v-show="titleDownload=='杈撳叆鎻愬彇鐮�'"
+        v-model="pasTxt"
+        v-if="isContains(useUserStore().permissions, 'system:oss:download')"
+        placeholder="璇疯緭鍏ユ枃浠舵彁鍙栫爜"
+      ></el-input>
+      <el-input
+        style="margin: 10px 0"
+        ref="inputRef"
+        :style="inputSty"
+        v-show="titleDownload=='璇疯緭鍏ユ彁鍙栫爜'"
+        v-model="pasTxt"
+        placeholder="璇疯緭鍏ユ枃浠舵彁鍙栫爜"
+      ></el-input>
+      <!--      <el-button link type="primary"   v-show="titleDownload=='杈撳叆鎻愬彇鐮�'" icon="Download" @click="handleDownloadFile()" v-if="isContains(useUserStore().permissions, 'system:oss:download')">涓嬭浇</el-button>-->
+      <!--      <el-button link type="primary"   v-show="titleDownload=='璇疯緭鍏ユ彁鍙栫爜'"  icon="Delete" @click="delFile()" >鍒犻櫎</el-button>-->
       <template #footer>
         <div class="dialog-footer">
-          <el-button link type="primary"   v-show="titleDownload=='杈撳叆鎻愬彇鐮�'" icon="Download" @click="handleDownloadFile()" v-if="isContains(useUserStore().permissions, 'system:oss:download')">涓嬭浇</el-button>
-          <el-button link type="primary"   v-show="titleDownload=='璇疯緭鍏ユ彁鍙栫爜'"  icon="Delete" @click="delFile()" >鍒犻櫎</el-button>
-          <el-button  type="primary" @click="visibleCode = false">纭� 瀹�</el-button>
+          <el-button
+            link
+            type="primary"
+            v-show="titleDownload=='杈撳叆鎻愬彇鐮�'"
+            icon="Download"
+            @click="handleDownloadFile()"
+            v-if="isContains(useUserStore().permissions, 'system:oss:download')"
+          >涓嬭浇</el-button
+          >
+          <el-button link type="primary" v-show="titleDownload=='璇疯緭鍏ユ彁鍙栫爜'" icon="Delete" @click="delFile()">鍒犻櫎</el-button>
+          <el-button type="primary" @click="visibleCode = false">纭� 瀹�</el-button>
         </div>
       </template>
     </el-dialog>
 
     <!-- 杩涘害鏉� -->
-    <el-dialog
-    v-model="dialogVisible"
-    title=""
-    width="37%"
-    :close-on-click-modal = "false"
-    :close-on-press-escape = "false"
-    :show-close = "false"
-
-  >
-
-    <el-progress type="dashboard" :percentage="percentage2" style="display: flex;justify-content: center" :color="colors" />
-
+    <el-dialog v-model="dialogVisible" title="" width="37%" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
+      <el-progress type="dashboard" :percentage="percentage2" style="display: flex;justify-content: center" :color="colors" />
     </el-dialog>
   </div>
 </template>
 
 <script setup name="Oss" lang="ts">
-import { listOss, delOss, createUser, examineIds } from "@/api/system/oss";
-import { OssForm, OssQuery, OssVO } from "@/api/system/oss/types";
-import { to as tos } from "await-to-js";
-import useUserStore from "@/store/modules/user";
-import { getToken, setToken } from "@/utils/auth";
-import usePermissionStore from "@/store/modules/permission";
-import { isHttp } from "@/utils/validate";
+import { listOss, delOss, createUser, examineIds } from '@/api/system/oss';
+import { OssForm, OssQuery, OssVO } from '@/api/system/oss/types';
+import { to as tos } from 'await-to-js';
+import useUserStore from '@/store/modules/user';
+import { getToken, setToken } from '@/utils/auth';
+import usePermissionStore from '@/store/modules/permission';
+import { isHttp } from '@/utils/validate';
 import router from '@/router';
 import { onMounted, ref } from 'vue';
 import { Minus, Plus } from '@element-plus/icons-vue';
 import { ElMessageBox } from 'element-plus';
 
-const dialogVisible = ref(false)
+const dialogVisible = ref(false);
 
 const state = reactive({
-      mytime:0,//瀹氫箟瀹氭椂鍣�
-    })
-const percentage = ref(10)
-const percentage2 = ref(0)
+  mytime: 0 //瀹氫箟瀹氭椂鍣�
+});
+const percentage = ref(10);
+const percentage2 = ref(0);
 
 const colors = [
   { color: '#f56c6c', percentage: 20 },
   { color: '#e6a23c', percentage: 40 },
   { color: '#5cb87a', percentage: 60 },
   { color: '#1989fa', percentage: 80 },
-  { color: '#6f7ad3', percentage: 100 },
-]
+  { color: '#6f7ad3', percentage: 100 }
+];
 
 const increase = () => {
-  percentage.value += 10
+  percentage.value += 10;
   if (percentage.value > 100) {
-    percentage.value = 100
+    percentage.value = 100;
   }
-}
+};
 const decrease = () => {
-  percentage.value -= 10
+  percentage.value -= 10;
   if (percentage.value < 0) {
-    percentage.value = 0
+    percentage.value = 0;
   }
-}
-onMounted(() => {
-
-
-})
-watch(percentage2, (new1,new2) => {
-  console.log(new1,new2)
-  if(new1 == 95){
+};
+onMounted(() => {});
+watch(percentage2, (new1, new2) => {
+  console.log(new1, new2);
+  if (new1 == 95) {
     clearInterval(state.mytime);
     state.mytime = 0;
   }
-})
+});
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
 const ossList = ref<OssVO[]>([]);
@@ -192,15 +208,15 @@
   visible: false,
   title: ''
 });
-const testtxt = ref<any>()
-const pasTxt = ref<any>()
-const titleDownload = ref<any>()
-const downIds = ref<any>()
-const inputRef = ref<any>()
-const inputSty =ref<any>()
-const currentIp = ref('')
-const childFile = ref<any>()
-const figType = ref<any>()
+const testtxt = ref<any>();
+const pasTxt = ref<any>();
+const titleDownload = ref<any>();
+const downIds = ref<any>();
+const inputRef = ref<any>();
+const inputSty = ref<any>();
+const currentIp = ref('');
+const childFile = ref<any>();
+const figType = ref<any>();
 // 榛樿鎺掑簭
 const defaultSort = ref({ prop: 'createTime', order: 'ascending' });
 
@@ -208,8 +224,8 @@
 const queryFormRef = ref<ElFormInstance>();
 
 const initFormData = {
-  file: undefined,
-}
+  file: undefined
+};
 const data = reactive<PageData<OssForm, OssQuery>>({
   form: { ...initFormData },
   // 鏌ヨ鍙傛暟
@@ -225,31 +241,28 @@
     isAsc: defaultSort.value.order
   },
   rules: {
-    file: [
-      { required: true, message: "鏂囦欢涓嶈兘涓虹┖", trigger: "blur" }
-    ]
+    file: [{ required: true, message: '鏂囦欢涓嶈兘涓虹┖', trigger: 'blur' }]
   }
 });
 
 const { queryParams, form, rules } = toRefs(data);
 const sure = () => {
-  testtxt.value += 1
-}
+  testtxt.value += 1;
+};
 /** 鏌ヨOSS瀵硅薄瀛樺偍鍒楄〃 */
 const getList = async () => {
-
   loading.value = true;
-  const res = await proxy?.getConfigKey("sys.oss.previewListResource");
+  const res = await proxy?.getConfigKey(encodeURIComponent('sys.oss.previewListResource'));
   previewListResource.value = res?.data === undefined ? true : res.data === 'true';
-  const response = await listOss(proxy?.addDateRange(queryParams.value, dateRangeCreateTime.value, "CreateTime"));
+  const response = await listOss(proxy?.addDateRange(queryParams.value, dateRangeCreateTime.value, 'CreateTime'));
   ossList.value = response.rows;
   total.value = response.total;
   loading.value = false;
   showTable.value = true;
-}
+};
 function checkFileSuffix(fileSuffix: string[]) {
-  let arr = ["png", "jpg", "jpeg"];
-  return arr.some(type => {
+  let arr = ['png', 'jpg', 'jpeg'];
+  return arr.some((type) => {
     return fileSuffix.indexOf(type) > -1;
   });
 }
@@ -279,18 +292,18 @@
 }
 /** 閫夋嫨鏉℃暟  */
 function handleSelectionChange(selection: OssVO[]) {
-  ids.value = selection.map(item => item.ossId);
+  ids.value = selection.map((item) => item.ossId);
   single.value = selection.length != 1;
   multiple.value = !selection.length;
 }
 /** 璁剧疆鍒楃殑鎺掑簭涓烘垜浠嚜瀹氫箟鐨勬帓搴� */
 const handleHeaderClass = ({ column }: any): any => {
-  column.order = column.multiOrder
-}
+  column.order = column.multiOrder;
+};
 /** 鐐瑰嚮琛ㄥご杩涜鎺掑簭 */
 const handleHeaderCLick = (column: any) => {
   if (column.sortable !== 'custom') {
-    return
+    return;
   }
   switch (column.multiOrder) {
     case 'descending':
@@ -303,20 +316,20 @@
       column.multiOrder = 'descending';
       break;
   }
-  handleOrderChange(column.property, column.multiOrder)
-}
+  handleOrderChange(column.property, column.multiOrder);
+};
 const handleOrderChange = (prop: string, order: string) => {
-  let orderByArr = queryParams.value.orderByColumn ? queryParams.value.orderByColumn.split(",") : [];
-  let isAscArr = queryParams.value.isAsc ? queryParams.value.isAsc.split(",") : [];
-  let propIndex = orderByArr.indexOf(prop)
+  let orderByArr = queryParams.value.orderByColumn ? queryParams.value.orderByColumn.split(',') : [];
+  let isAscArr = queryParams.value.isAsc ? queryParams.value.isAsc.split(',') : [];
+  let propIndex = orderByArr.indexOf(prop);
   if (propIndex !== -1) {
     if (order) {
       //鎺掑簭閲屽凡瀛樺湪 鍙慨鏀规帓搴�
       isAscArr[propIndex] = order;
     } else {
       //濡傛灉order涓簄ull 鍒欏垹闄ゆ帓搴忓瓧娈靛拰灞炴��
-      isAscArr.splice(propIndex, 1);//鍒犻櫎鎺掑簭
-      orderByArr.splice(propIndex, 1);//鍒犻櫎灞炴��
+      isAscArr.splice(propIndex, 1); //鍒犻櫎鎺掑簭
+      orderByArr.splice(propIndex, 1); //鍒犻櫎灞炴��
     }
   } else {
     //鎺掑簭閲屼笉瀛樺湪鍒欐柊澧炴帓搴�
@@ -324,10 +337,10 @@
     isAscArr.push(order);
   }
   //鍚堝苟鎺掑簭
-  queryParams.value.orderByColumn = orderByArr.join(",");
-  queryParams.value.isAsc = isAscArr.join(",");
+  queryParams.value.orderByColumn = orderByArr.join(',');
+  queryParams.value.isAsc = isAscArr.join(',');
   getList();
-}
+};
 /** 浠诲姟鏃ュ織鍒楄〃鏌ヨ */
 /** 鏂囦欢鎸夐挳鎿嶄綔 */
 const handleFile = () => {
@@ -335,37 +348,39 @@
   reset();
   type.value = 0;
   dialog.visible = true;
-  dialog.title = "涓婁紶鏂囦欢";
-}
+  dialog.title = '涓婁紶鏂囦欢';
+};
 /** 鍥剧墖鎸夐挳鎿嶄綔 */
 const handleImage = () => {
   reset();
   type.value = 1;
   dialog.visible = true;
-  dialog.title = "涓婁紶鍥剧墖";
-}
-const handleVideo = ()=>{
+  dialog.title = '涓婁紶鍥剧墖';
+};
+const handleVideo = () => {
   reset();
   type.value = 2;
   dialog.visible = true;
-  dialog.title = "涓婁紶瑙嗛";
-}
+  dialog.title = '涓婁紶瑙嗛';
+};
 /** 鎻愪氦鎸夐挳 */
 
 const submitForm = async () => {
-  await childFile.value.handleCilck()
-     dialog.visible = false;
+  const number = await childFile.value.handleCilck();
+  if (number > 0) {
+    dialog.visible = false;
     dialogVisible.value = true;
     state.mytime = setInterval(() => {
-      percentage2.value = (percentage2.value % 100) + 5
-    }, 500)
-}
-const lookPawsd = async (row:any) => {
+      percentage2.value = (percentage2.value % 100) + 5;
+    }, 500);
+  }
+};
+const lookPawsd = async (row: any) => {
   console.log(row);
   // row.msg = ':/"123456'
 
-   clearInterval(state.mytime);
-    state.mytime = 0;
+  clearInterval(state.mytime);
+  state.mytime = 0;
   // if(row == '123123'){
   //   dialogVisible.value = true;
   //   state.mytime = setInterval(() => {
@@ -373,81 +388,79 @@
   //     }, 500)
   // }
   // else{
-    dialogVisible.value = false;
-    clearInterval(state.mytime);
-    state.mytime = 0;
-    testtxt.value = row.msg;
-      // testtxt.value = row.msg.slice(2);
-      titleDownload.value = '鏌ョ湅鎻愬彇鐮�'
-      pasTxt.value = ''
-      visibleCode.value = true
+  dialogVisible.value = false;
+  clearInterval(state.mytime);
+  state.mytime = 0;
+  testtxt.value = row.msg;
+  // testtxt.value = row.msg.slice(2);
+  titleDownload.value = '鏌ョ湅鎻愬彇鐮�';
+  pasTxt.value = '';
+  visibleCode.value = true;
   // }
-}
+};
 const handleCode = async (row: OssVO) => {
   console.log(row, row.ossId);
 
-  await examineIds(row.ossId).then(res => {
+  await examineIds(row.ossId).then((res) => {
     console.log(res);
     if (res.code == 200) {
       testtxt.value = res.msg;
-      titleDownload.value = '鏌ョ湅鎻愬彇鐮�'
-      pasTxt.value = ''
+      titleDownload.value = '鏌ョ湅鎻愬彇鐮�';
+      pasTxt.value = '';
       // inputSty.value ={
       //   border: '1px solid blue'
       // }
-      visibleCode.value = true
-
+      visibleCode.value = true;
     } else {
       const message = res.msg;
       proxy?.$modal.msgSuccess(message);
-
     }
-  })
-}
+  });
+};
 /** 涓嬭浇鎸夐挳鎿嶄綔 */
 const handleDownload = (row: OssVO) => {
-  titleDownload.value = '杈撳叆鎻愬彇鐮�'
-  pasTxt.value = ''
-  inputSty.value ={
+  titleDownload.value = '杈撳叆鎻愬彇鐮�';
+  pasTxt.value = '';
+  inputSty.value = {
     border: '1px solid blue',
     borderRadius: '5px'
-  }
-  visibleCode.value = true
-  downIds.value = ref(row.ossId)
+  };
+  visibleCode.value = true;
+  downIds.value = ref(row.ossId);
   console.log(toRaw(downIds.value.value));
-}
-const delFile=async () => {
-  let oss = figType.value+'/'+ pasTxt.value;
-  await delOss(oss).finally(() => loading.value = false);
+};
+const delFile = async () => {
+  let oss = figType.value + '/' + pasTxt.value;
+  await delOss(oss).finally(() => (loading.value = false));
   await getList();
-  proxy?.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-  visibleCode.value = false
-}
-const handleDownloadFile = ()=>{
+  proxy?.$modal.msgSuccess('鍒犻櫎鎴愬姛');
+  visibleCode.value = false;
+};
+const handleDownloadFile = () => {
   console.log(downIds.value);
-  if (pasTxt.value){
-    proxy?.$download.ossDown(downIds.value.value,pasTxt.value)
-  }else {
+  if (pasTxt.value) {
+    proxy?.$download.ossDown(downIds.value.value, pasTxt.value);
+  } else {
     console.log(inputRef.value);
-    inputSty.value ={
+    inputSty.value = {
       border: '1px solid red'
-    }
+    };
     // inputRef.value.style.border = '1px solid red'
   }
-  visibleCode.value=false
-}
+  visibleCode.value = false;
+};
 /** 鐢ㄦ埛鐘舵�佷慨鏀�  */
 /** 鍒犻櫎鎸夐挳鎿嶄綔 */
 const handleDelete = async (row?: OssVO) => {
   let ossIds = row?.ossId || ids.value;
-  titleDownload.value = '璇疯緭鍏ユ彁鍙栫爜'
-  pasTxt.value = ''
-  inputSty.value ={
+  titleDownload.value = '璇疯緭鍏ユ彁鍙栫爜';
+  pasTxt.value = '';
+  inputSty.value = {
     border: '1px solid blue',
     borderRadius: '5px'
-  }
-  visibleCode.value = true
-  figType.value = ossIds
+  };
+  visibleCode.value = true;
+  figType.value = ossIds;
   console.log(figType);
   // await proxy?.$modal.confirm('鏄惁纭鍒犻櫎OSS瀵硅薄瀛樺偍缂栧彿涓�"' + ossIds + '"鐨勬暟鎹」?');
   // loading.value = true;
@@ -455,10 +468,10 @@
   // await delOss(ossIds).finally(() => loading.value = false);
   // await getList();
   // proxy?.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-}
+};
 const refreshPage = async () => {
   const accessRoutes = await usePermissionStore().generateRoutes();
-  console.log(accessRoutes,'accessRoutes',router);
+  console.log(accessRoutes, 'accessRoutes', router);
   // 鏍规嵁roles鏉冮檺鐢熸垚鍙闂殑璺敱琛�
   accessRoutes.forEach((route) => {
     if (!isHttp(route.path)) {
@@ -468,26 +481,27 @@
   // location.reload();
 };
 const isContains = (arr: string | any[], value: any) => {
-  return arr.includes(value);
+  // return arr.includes(value);
+  return true;
 };
 
 const setAddUser = async (val: any | number | (string | number)[]) => {
   console.log(val);
-  const res = await createUser(val)
+  const res = await createUser(val);
   console.log(res);
-  if (res.code==200){
+  if (res.code == 200) {
     const data = res.data;
     setToken(data.access_token);
     const [err] = await tos(useUserStore().getInfo());
-    console.log('useUserStore', useUserStore,err);
-    await getList()
+    console.log('useUserStore', useUserStore, err);
+    await getList();
 
     // await refreshPage()
 
-      console.log('permissions', useUserStore().permissions,'system:oss:upload');
+    console.log('permissions', useUserStore().permissions, 'system:oss:upload');
     // token.value = data.access_token;
   }
-}
+};
 // watch(() => value.value, (newValue) => {
 //   if (newValue) {
 //     showValue.value = true;
@@ -495,8 +509,8 @@
 //     showValue.value = false;
 //   }
 // });
-onBeforeMount( async () => {
-  console.log('绗竴',useUserStore().permissions);
+onBeforeMount(async () => {
+  console.log('绗竴', useUserStore().permissions);
   // try {
   //   // 浣跨敤fetch API鑾峰彇褰撳墠IP鍦板潃
   //   await fetch('https://api.ipify.org/?format=json')
@@ -514,22 +528,19 @@
   // } catch (error) {
   //   console.log(error);
   // }
-
-})
+});
 onMounted(async () => {
-  console.log('绗簩aaaaaaa',useUserStore().permissions);
+  console.log('绗簩aaaaaaa', useUserStore().permissions);
   // 绛夊緟 useUserStore() 鏂规硶鐨� getInfo() 鏂规硶杩斿洖缁撴灉骞惰祴鍊肩粰 err 鍙橀噺
   // const [err] = await tos(useUserStore().getInfo());
-  if (getToken()){
+  if (getToken()) {
     console.log('鏈塼oken');
     await getList();
-  }else {
+  } else {
     console.log('鏃爐oken');
 
-    router.push('/login')
+    router.push('/login');
   }
   // 璋冪敤 getList() 鏂规硶
-
-})
-
+});
 </script>

--
Gitblit v1.8.0