From 251d2411f235e23209d57173857e05b637729ce8 Mon Sep 17 00:00:00 2001
From: LiuHao <liuhaoai545@gmail.com>
Date: 星期日, 02 四月 2023 01:01:56 +0800
Subject: [PATCH] refactor ts

---
 src/views/system/oss/index.vue |  597 ++++++++++++++++++++++++++++------------------------------
 1 files changed, 288 insertions(+), 309 deletions(-)

diff --git a/src/views/system/oss/index.vue b/src/views/system/oss/index.vue
index f3c1a08..2ffe927 100644
--- a/src/views/system/oss/index.vue
+++ b/src/views/system/oss/index.vue
@@ -1,363 +1,342 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
-      <el-form-item label="鏂囦欢鍚�" prop="fileName">
-        <el-input
-          v-model="queryParams.fileName"
-          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 label="鏂囦欢鍚庣紑" prop="fileSuffix">
-        <el-input
-          v-model="queryParams.fileSuffix"
-          placeholder="璇疯緭鍏ユ枃浠跺悗缂�"
-          clearable
-          style="width: 200px"
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿">
-        <el-date-picker
-          v-model="daterangeCreateTime"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          type="daterange"
-          range-separator="-"
-          start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡"
-          :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
-        ></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏈嶅姟鍟�" prop="service">
-        <el-input
-          v-model="queryParams.service"
-          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-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="Plus"
-          @click="handleFile"
-          v-hasPermi="['system:oss:upload']"
-        >涓婁紶鏂囦欢</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="Plus"
-          @click="handleImage"
-          v-hasPermi="['system:oss:upload']"
-        >涓婁紶鍥剧墖</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="Delete"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:oss:remove']"
-        >鍒犻櫎</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          :type="previewListResource ? 'danger' : 'warning'"
-          plain
-          @click="handlePreviewListResource(!previewListResource)"
-          v-hasPermi="['system:oss:edit']"
-        >棰勮寮�鍏� : {{previewListResource ? "绂佺敤" : "鍚敤"}}</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="info"
-          plain
-          icon="Operation"
-          @click="handleOssConfig"
-          v-hasPermi="['system:oss:list']"
-        >閰嶇疆绠$悊</el-button>
-      </el-col>
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <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="selection" width="55" align="center" />
-      <el-table-column label="瀵硅薄瀛樺偍涓婚敭" align="center" prop="ossId" v-if="false"/>
-      <el-table-column label="鏂囦欢鍚�" align="center" prop="fileName" />
-      <el-table-column label="鍘熷悕" align="center" prop="originalName" />
-      <el-table-column label="鏂囦欢鍚庣紑" align="center" prop="fileSuffix" />
-      <el-table-column label="鏂囦欢灞曠ず" align="center" prop="url">
-        <template #default="scope">
-          <ImagePreview
-            v-if="previewListResource && checkFileSuffix(scope.row.fileSuffix)"
-            :width="100" :height="100"
-            :src="scope.row.url"
-            :preview-src-list="[scope.row.url]"/>
-          <span v-text="scope.row.url"
-                v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180" sortable="custom">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="涓婁紶浜�" align="center" prop="createByName" />
-      <el-table-column label="鏈嶅姟鍟�" align="center" prop="service" sortable="custom"/>
-      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
-        <template #default="scope">
-          <el-button link type="primary" icon="Edit" @click="handleDownload(scope.row)" v-hasPermi="['system:oss:download']">淇敼</el-button>
-          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:oss:remove']">鍒犻櫎</el-button>
-        </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"
-    />
-
-    <!-- 娣诲姞鎴栦慨鏀筄SS瀵硅薄瀛樺偍瀵硅瘽妗� -->
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
-      <el-form ref="ossRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="鏂囦欢鍚�">
-          <fileUpload v-model="form.file" v-if="type === 0"/>
-          <imageUpload v-model="form.file" v-if="type === 1"/>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
-          <el-button @click="cancel">鍙� 娑�</el-button>
-        </div>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-
-<script setup name="Oss">
+<script setup name="Oss" lang="ts">
 import { listOss, delOss } from "@/api/system/oss";
 import ImagePreview from "@/components/ImagePreview/index.vue";
+import { ComponentInternalInstance } from "vue";
+import { OssForm, OssQuery, OssVO } from "@/api/system/oss/types";
+import { DateModelType } from 'element-plus';
 
 const router = useRouter();
-const { proxy } = getCurrentInstance();
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
-const ossList = ref([]);
-const open = ref(false);
+const ossList = ref<OssVO[]>([]);
 const showTable = ref(true);
 const buttonLoading = ref(false);
 const loading = ref(true);
 const showSearch = ref(true);
-const ids = ref([]);
+const ids = ref<Array<string | number>>([]);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
-const title = ref("");
 const type = ref(0);
 const previewListResource = ref(true);
-const daterangeCreateTime = ref([]);
-// 榛樿鎺掑簭
-const defaultSort = ref({prop: 'createTime', order: 'ascending'});
+const daterangeCreateTime = ref<[DateModelType, DateModelType]>(['', '']);
 
-const data = reactive({
-  form: {},
-  // 鏌ヨ鍙傛暟
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    fileName: undefined,
-    originalName: undefined,
-    fileSuffix: undefined,
-    createTime: undefined,
-    service: undefined
-  },
-  rules: {
-    file: [
-      { required: true, message: "鏂囦欢涓嶈兘涓虹┖", trigger: "blur" }
-    ]
-  }
+const dialog = reactive<DialogOption>({
+	visible: false,
+	title: ''
+});
+
+// 榛樿鎺掑簭
+const defaultSort = ref({ prop: 'createTime', order: 'ascending' });
+
+const ossFormRef = ref(ElForm);
+const queryFormRef = ref(ElForm);
+
+const initFormData = {
+	file: undefined,
+}
+const data = reactive<PageData<OssForm, OssQuery>>({
+	form: { ...initFormData },
+	// 鏌ヨ鍙傛暟
+	queryParams: {
+		pageNum: 1,
+		pageSize: 10,
+		fileName: '',
+		originalName: '',
+		fileSuffix: '',
+		createTime: '',
+		service: '',
+		orderByColumn: defaultSort.value.prop,
+		isAsc: defaultSort.value.order
+	},
+	rules: {
+		file: [
+			{ required: true, message: "鏂囦欢涓嶈兘涓虹┖", trigger: "blur" }
+		]
+	}
 });
 
 const { queryParams, form, rules } = toRefs(data);
 
 /** 鏌ヨOSS瀵硅薄瀛樺偍鍒楄〃 */
-function getList() {
-  loading.value = true;
-  proxy.getConfigKey("sys.oss.previewListResource").then(response => {
-    previewListResource.value = response.msg === undefined ? true : response.msg === 'true';
-  });
-  listOss(proxy.addDateRange(queryParams.value, daterangeCreateTime.value, "CreateTime")).then(response => {
-    ossList.value = response.rows;
-    total.value = response.total;
-    loading.value = false;
-    showTable.value = true;
-  });
+const getList = async () => {
+	loading.value = true;
+	const res = await proxy?.getConfigKey("sys.oss.previewListResource");
+	previewListResource.value = res?.msg === undefined ? true : res.msg === 'true';
+	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) {
-  let arr = ["png", "jpg", "jpeg"];
-  return arr.some(type => {
-    return fileSuffix.indexOf(type) > -1;
-  });
+function checkFileSuffix(fileSuffix: string[]) {
+	let arr = ["png", "jpg", "jpeg"];
+	return arr.some(type => {
+		return fileSuffix.indexOf(type) > -1;
+	});
 }
 /** 鍙栨秷鎸夐挳 */
 function cancel() {
-  open.value = false;
-  reset();
+	dialog.visible = false;
+	reset();
 }
 /** 琛ㄥ崟閲嶇疆 */
 function reset() {
-  form.value = {
-    file: undefined,
-  };
-  proxy.resetForm("ossRef");
+	form.value = { ...initFormData };
+	ossFormRef.value.resetFields();
 }
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 function handleQuery() {
-  queryParams.value.pageNum = 1;
-  getList();
+	queryParams.value.pageNum = 1;
+	getList();
 }
 /** 閲嶇疆鎸夐挳鎿嶄綔 */
 function resetQuery() {
-  showTable.value = false;
-  daterangeCreateTime.value = [];
-  proxy.resetForm("queryRef");
-  queryParams.value.orderByColumn = defaultSort.value.prop;
-  queryParams.value.isAsc = defaultSort.value.order;
-  handleQuery();
+	showTable.value = false;
+	daterangeCreateTime.value = ['', ''];
+	queryFormRef.value.resetFields();
+	queryParams.value.orderByColumn = defaultSort.value.prop;
+	queryParams.value.isAsc = defaultSort.value.order;
+	handleQuery();
 }
 /** 閫夋嫨鏉℃暟  */
-function handleSelectionChange(selection) {
-  ids.value = selection.map(item => item.ossId);
-  single.value = selection.length != 1;
-  multiple.value = !selection.length;
+function handleSelectionChange(selection: OssVO[]) {
+	ids.value = selection.map(item => item.ossId);
+	single.value = selection.length != 1;
+	multiple.value = !selection.length;
 }
-// 璁剧疆鍒楃殑鎺掑簭涓烘垜浠嚜瀹氫箟鐨勬帓搴�
-function handleHeaderClass({column}) {
-  column.order = column.multiOrder
+/** 璁剧疆鍒楃殑鎺掑簭涓烘垜浠嚜瀹氫箟鐨勬帓搴� */
+const handleHeaderClass = ({ column }: any): any => {
+	column.order = column.multiOrder
 }
-// 鐐瑰嚮琛ㄥご杩涜鎺掑簭
-function handleHeaderCLick(column) {
-  if (column.sortable !== 'custom') {
-    return
-  }
-  switch (column.multiOrder) {
-    case 'descending':
-      column.multiOrder = 'ascending';
-      break;
-    case 'ascending':
-      column.multiOrder = '';
-      break;
-    default:
-      column.multiOrder = 'descending';
-      break;
-  }
-  handleOrderChange(column.property, column.multiOrder)
+/** 鐐瑰嚮琛ㄥご杩涜鎺掑簭 */
+const handleHeaderCLick = (column: any) => {
+	if (column.sortable !== 'custom') {
+		return
+	}
+	switch (column.multiOrder) {
+		case 'descending':
+			column.multiOrder = 'ascending';
+			break;
+		case 'ascending':
+			column.multiOrder = '';
+			break;
+		default:
+			column.multiOrder = 'descending';
+			break;
+	}
+	handleOrderChange(column.property, column.multiOrder)
 }
-function handleOrderChange(prop, order) {
-  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);//鍒犻櫎灞炴��
-    }
-  } else {
-    //鎺掑簭閲屼笉瀛樺湪鍒欐柊澧炴帓搴�
-    orderByArr.push(prop);
-    isAscArr.push(order);
-  }
-  //鍚堝苟鎺掑簭
-  queryParams.value.orderByColumn = orderByArr.join(",");
-  queryParams.value.isAsc = isAscArr.join(",");
-  getList();
+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)
+	if (propIndex !== -1) {
+		if (order) {
+			//鎺掑簭閲屽凡瀛樺湪 鍙慨鏀规帓搴�
+			isAscArr[propIndex] = order;
+		} else {
+			//濡傛灉order涓簄ull 鍒欏垹闄ゆ帓搴忓瓧娈靛拰灞炴��
+			isAscArr.splice(propIndex, 1);//鍒犻櫎鎺掑簭
+			orderByArr.splice(propIndex, 1);//鍒犻櫎灞炴��
+		}
+	} else {
+		//鎺掑簭閲屼笉瀛樺湪鍒欐柊澧炴帓搴�
+		orderByArr.push(prop);
+		isAscArr.push(order);
+	}
+	//鍚堝苟鎺掑簭
+	queryParams.value.orderByColumn = orderByArr.join(",");
+	queryParams.value.isAsc = isAscArr.join(",");
+	getList();
 }
 /** 浠诲姟鏃ュ織鍒楄〃鏌ヨ */
-function handleOssConfig() {
-  router.push('/system/oss-config/index')
+const handleOssConfig = () => {
+	router.push('/system/oss-config/index')
 }
 /** 鏂囦欢鎸夐挳鎿嶄綔 */
-function handleFile() {
-  reset();
-  open.value = true;
-  title.value = "涓婁紶鏂囦欢";
-  type.value = 0;
+const handleFile = () => {
+	dialog.visible = true;
+	dialog.title = "涓婁紶鏂囦欢";
+	nextTick(() => {
+		reset();
+		type.value = 0;
+	})
 }
 /** 鍥剧墖鎸夐挳鎿嶄綔 */
-function handleImage() {
-  reset();
-  open.value = true;
-  title.value = "涓婁紶鍥剧墖";
-  type.value = 1;
+const handleImage = () => {
+	dialog.visible = true;
+	dialog.title = "涓婁紶鍥剧墖";
+	nextTick(() => {
+		reset();
+		type.value = 1;
+	})
 }
 /** 鎻愪氦鎸夐挳 */
-function submitForm() {
-  open.value = false;
-  getList();
+const submitForm = () => {
+	dialog.visible = false;
+	getList();
 }
 /** 涓嬭浇鎸夐挳鎿嶄綔 */
-function handleDownload(row) {
-  proxy.$download.oss(row.ossId)
+const handleDownload = (row: OssVO) => {
+	proxy?.$download.oss(row.ossId)
 }
 /** 鐢ㄦ埛鐘舵�佷慨鏀�  */
-function handlePreviewListResource(previewListResource) {
-  let text = previewListResource ? "鍚敤" : "鍋滅敤";
-  proxy.$modal.confirm('纭瑕�"' + text + '""棰勮鍒楄〃鍥剧墖"閰嶇疆鍚�?').then(() => {
-    return proxy.updateConfigByKey("sys.oss.previewListResource", previewListResource);
-  }).then(() => {
-    getList()
-    proxy.$modal.msgSuccess(text + "鎴愬姛");
-  }).catch(function () {
-    previewListResource.value = previewListResource.value !== true;
-  });
+const handlePreviewListResource = async (preview: boolean) => {
+	let text = preview ? "鍚敤" : "鍋滅敤";
+	try {
+		await proxy?.$modal.confirm('纭瑕�"' + text + '""棰勮鍒楄〃鍥剧墖"閰嶇疆鍚�?');
+		await proxy?.updateConfigByKey("sys.oss.previewListResource", preview);
+		getList()
+		proxy?.$modal.msgSuccess(text + "鎴愬姛");
+	} catch {
+		previewListResource.value = previewListResource.value !== true;
+	}
+
+
 }
 /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-function handleDelete(row) {
-  const ossIds = row.ossId || ids.value;
-  proxy.$modal.confirm('鏄惁纭鍒犻櫎OSS瀵硅薄瀛樺偍缂栧彿涓�"' + ossIds + '"鐨勬暟鎹」?').then(() => {
-    loading.value = true;
-    return delOss(ossIds);
-  }).then(() => {
-    loading.value = false;
-    getList();
-    proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-  }).finally(() => {
-    loading.value = false;
-  });
+const handleDelete = async (row?: OssVO) => {
+	const ossIds = row?.ossId || ids.value;
+	await proxy?.$modal.confirm('鏄惁纭鍒犻櫎OSS瀵硅薄瀛樺偍缂栧彿涓�"' + ossIds + '"鐨勬暟鎹」?');
+	loading.value = true;
+	await delOss(ossIds).finally(() => loading.value = false);
+	getList();
+	proxy?.$modal.msgSuccess("鍒犻櫎鎴愬姛");
 }
-
-getList();
+onMounted(() => {
+	getList();
+})
 </script>
+
+<template>
+	<div class="p-2">
+		<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+			<div class="search" v-show="showSearch">
+				<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+					<el-form-item label="鏂囦欢鍚�" prop="fileName">
+						<el-input v-model="queryParams.fileName" 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 label="鏂囦欢鍚庣紑" prop="fileSuffix">
+						<el-input v-model="queryParams.fileSuffix" placeholder="璇疯緭鍏ユ枃浠跺悗缂�" clearable style="width: 200px" @keyup.enter="handleQuery" />
+					</el-form-item>
+					<el-form-item label="鍒涘缓鏃堕棿">
+						<el-date-picker
+							v-model="daterangeCreateTime"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							type="daterange"
+							range-separator="-"
+							start-placeholder="寮�濮嬫棩鏈�"
+							end-placeholder="缁撴潫鏃ユ湡"
+							:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
+						></el-date-picker>
+					</el-form-item>
+					<el-form-item label="鏈嶅姟鍟�" prop="service">
+						<el-input v-model="queryParams.service" 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>
+			</div>
+		</transition>
+
+		<el-card shadow="never">
+			<template #header>
+				<el-row :gutter="10" class="mb8">
+					<el-col :span="1.5">
+						<el-button type="primary" plain icon="Upload" @click="handleFile" v-hasPermi="['system:oss:upload']">涓婁紶鏂囦欢</el-button>
+					</el-col>
+					<el-col :span="1.5">
+						<el-button type="primary" plain icon="Upload" @click="handleImage" v-hasPermi="['system:oss:upload']">涓婁紶鍥剧墖</el-button>
+					</el-col>
+					<el-col :span="1.5">
+						<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:oss:remove']">
+							鍒犻櫎
+						</el-button>
+					</el-col>
+					<el-col :span="1.5">
+						<el-button
+							:type="previewListResource ? 'danger' : 'warning'"
+							plain
+							@click="handlePreviewListResource(!previewListResource)"
+							v-hasPermi="['system:oss:edit']"
+							>棰勮寮�鍏� :
+							{{
+								previewListResource ? "绂佺敤" : "鍚敤" }}</el-button
+						>
+					</el-col>
+					<el-col :span="1.5">
+						<el-button type="info" plain icon="Operation" @click="handleOssConfig" v-hasPermi="['system:oss:list']">閰嶇疆绠$悊</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="selection" width="55" align="center" />
+				<el-table-column label="瀵硅薄瀛樺偍涓婚敭" align="center" prop="ossId" v-if="false" />
+				<el-table-column label="鏂囦欢鍚�" align="center" prop="fileName" />
+				<el-table-column label="鍘熷悕" align="center" prop="originalName" />
+				<el-table-column label="鏂囦欢鍚庣紑" align="center" prop="fileSuffix" />
+				<el-table-column label="鏂囦欢灞曠ず" align="center" prop="url">
+					<template #default="scope">
+						<ImagePreview
+							v-if="previewListResource && checkFileSuffix(scope.row.fileSuffix)"
+							:width="100"
+							:height="100"
+							:src="scope.row.url"
+							:preview-src-list="[scope.row.url]"
+						/>
+						<span v-text="scope.row.url" v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource" />
+					</template>
+				</el-table-column>
+				<el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180" sortable="custom">
+					<template #default="scope">
+						<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="涓婁紶浜�" align="center" prop="createByName" />
+				<el-table-column label="鏈嶅姟鍟�" align="center" prop="service" sortable="custom" />
+				<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="Download" @click="handleDownload(scope.row)" v-hasPermi="['system:oss:download']"></el-button>
+						</el-tooltip>
+						<el-tooltip content="鍒犻櫎" placement="top">
+							<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['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" />
+		</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 v-model="form.file" v-if="type === 0" />
+					<imageUpload v-model="form.file" v-if="type === 1" />
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<div class="dialog-footer">
+					<el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+					<el-button @click="cancel">鍙� 娑�</el-button>
+				</div>
+			</template>
+		</el-dialog>
+	</div>
+</template>

--
Gitblit v1.9.3