From 856f0767b4ada087e9e2cb33f373e23dbcf39b85 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 07 三月 2023 17:56:59 +0800 Subject: [PATCH] update 同步 ruoyi * update element-ui 2.15.10 => 2.15.12 * update 优化 tagsView右选框,首页不应该存在关闭左侧选项 * update copyright 2023 * update 优化 监控页面图标显示 * update 优化 日志注解支持排除指定的请求参数 * update 优化 业务校验优化代码 * fix 修复 优化文件下载出现的异常 * fix 修复 修改密码日志存储明文问题 * add 新增 操作日志消耗时间属性 * update 优化 日志管理使用索引提升查询性能 * update 优化 框架时间检索使用时间默认值 00:00:00 - 23:59:59 --- ruoyi-ui/src/views/system/oss/index.vue | 242 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 180 insertions(+), 62 deletions(-) diff --git a/ruoyi-ui/src/views/system/oss/index.vue b/ruoyi-ui/src/views/system/oss/index.vue index ce888f6..e190081 100644 --- a/ruoyi-ui/src/views/system/oss/index.vue +++ b/ruoyi-ui/src/views/system/oss/index.vue @@ -10,6 +10,15 @@ @keyup.enter.native="handleQuery" /> </el-form-item> + <el-form-item label="鍘熷悕" prop="originalName"> + <el-input + v-model="queryParams.originalName" + placeholder="璇疯緭鍏ュ師鍚�" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> <el-form-item label="鏂囦欢鍚庣紑" prop="fileSuffix"> <el-input v-model="queryParams.fileSuffix" @@ -24,21 +33,13 @@ v-model="daterangeCreateTime" size="small" style="width: 240px" - value-format="yyyy-MM-dd" + value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" + :default-time="['00:00:00', '23:59:59']" ></el-date-picker> - </el-form-item> - <el-form-item label="涓婁紶浜�" prop="createBy"> - <el-input - v-model="queryParams.createBy" - placeholder="璇疯緭鍏ヤ笂浼犱汉" - clearable - size="small" - @keyup.enter.native="handleQuery" - /> </el-form-item> <el-form-item label="鏈嶅姟鍟�" prop="service"> <el-input @@ -62,9 +63,19 @@ plain icon="el-icon-plus" size="mini" - @click="handleAdd" + @click="handleFile" v-hasPermi="['system:oss:upload']" - >涓婁紶</el-button> + >涓婁紶鏂囦欢</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleImage" + v-hasPermi="['system:oss:upload']" + >涓婁紶鍥剧墖</el-button> </el-col> <el-col :span="1.5"> <el-button @@ -77,22 +88,57 @@ v-hasPermi="['system:oss:remove']" >鍒犻櫎</el-button> </el-col> + <el-col :span="1.5"> + <el-button + :type="previewListResource ? 'danger' : 'warning'" + plain + size="mini" + @click="handlePreviewListResource(!previewListResource)" + v-hasPermi="['system:oss:edit']" + >棰勮寮�鍏� : {{previewListResource ? "绂佺敤" : "鍚敤"}}</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="info" + plain + icon="el-icon-s-operation" + size="mini" + @click="handleOssConfig" + v-hasPermi="['system:oss:list']" + >閰嶇疆绠$悊</el-button> + </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> - <el-table v-loading="loading" :data="ossList" @selection-change="handleSelectionChange"> + <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="ossId" v-if="false"/> <el-table-column label="鏂囦欢鍚�" align="center" prop="fileName" /> - <el-table-column label="鏂囦欢鍚庣紑鍚�" align="center" prop="fileSuffix" /> - <el-table-column label="URL鍦板潃" align="center" prop="url" /> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"> + <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 slot-scope="scope"> + <el-image + v-if="previewListResource && checkFileSuffix(scope.row.fileSuffix)" + style="width: 100px; height: 100px;" + :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 slot-scope="scope"> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> </template> </el-table-column> - <el-table-column label="涓婁紶浜�" align="center" prop="createBy" /> - <el-table-column label="鏈嶅姟鍟�" align="center" prop="service" /> + <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 slot-scope="scope"> <el-button @@ -121,11 +167,12 @@ @pagination="getList" /> - <!-- 娣诲姞鎴栦慨鏀筄SS浜戝瓨鍌ㄥ璇濇 --> + <!-- 娣诲姞鎴栦慨鏀筄SS瀵硅薄瀛樺偍瀵硅瘽妗� --> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="鏂囦欢鍚�"> - <imageUpload v-model="form.file"/> + <fileUpload v-model="form.file" v-if="type === 0"/> + <imageUpload v-model="form.file" v-if="type === 1"/> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -137,12 +184,13 @@ </template> <script> -import { listOss, delOss, addOss, downloadOss } from "@/api/system/oss"; +import { listOss, delOss } from "@/api/system/oss"; export default { name: "Oss", data() { return { + showTable: true, // 鎸夐挳loading buttonLoading: false, // 閬僵灞� @@ -159,23 +207,28 @@ showSearch: true, // 鎬绘潯鏁� total: 0, - // OSS浜戝瓨鍌ㄨ〃鏍兼暟鎹� + // OSS瀵硅薄瀛樺偍琛ㄦ牸鏁版嵁 ossList: [], // 寮瑰嚭灞傛爣棰� title: "", + // 寮瑰嚭灞傛爣棰� + type: 0, // 鏄惁鏄剧ず寮瑰嚭灞� open: false, + // 棰勮鍒楄〃鍥剧墖 + previewListResource: true, // 鍒涘缓鏃堕棿鏃堕棿鑼冨洿 daterangeCreateTime: [], + // 榛樿鎺掑簭 + defaultSort: {prop: 'createTime', order: 'ascending'}, // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, fileName: undefined, + originalName: undefined, fileSuffix: undefined, - url: undefined, createTime: undefined, - createBy: undefined, service: undefined }, // 琛ㄥ崟鍙傛暟 @@ -192,7 +245,7 @@ this.getList(); }, methods: { - /** 鏌ヨOSS浜戝瓨鍌ㄥ垪琛� */ + /** 鏌ヨOSS瀵硅薄瀛樺偍鍒楄〃 */ getList() { this.loading = true; this.queryParams.params = {}; @@ -200,10 +253,20 @@ this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0]; this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1]; } + this.getConfigKey("sys.oss.previewListResource").then(response => { + this.previewListResource = response.msg === undefined ? true : response.msg === 'true'; + }); listOss(this.queryParams).then(response => { this.ossList = response.rows; this.total = response.total; this.loading = false; + this.showTable = true; + }); + }, + checkFileSuffix(fileSuffix) { + let arr = ["png", "jpg", "jpeg"]; + return arr.some(type => { + return fileSuffix.indexOf(type) > -1; }); }, // 鍙栨秷鎸夐挳 @@ -214,16 +277,7 @@ // 琛ㄥ崟閲嶇疆 reset() { this.form = { - ossId: undefined, file: undefined, - fileName: undefined, - fileSuffix: undefined, - url: undefined, - createTime: undefined, - createBy: undefined, - updateTime: undefined, - updateBy: undefined, - service: undefined }; this.resetForm("form"); }, @@ -234,8 +288,11 @@ }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { + this.showTable = false; this.daterangeCreateTime = []; this.resetForm("queryForm"); + this.queryParams.orderByColumn = this.defaultSort.prop; + this.queryParams.isAsc = this.defaultSort.order; this.handleQuery(); }, // 澶氶�夋閫変腑鏁版嵁 @@ -244,42 +301,103 @@ this.single = selection.length!==1 this.multiple = !selection.length }, - /** 鏂板鎸夐挳鎿嶄綔 */ - handleAdd() { + // 璁剧疆鍒楃殑鎺掑簭涓烘垜浠嚜瀹氫箟鐨勬帓搴� + handleHeaderClass({column}) { + column.order = column.multiOrder + }, + // 鐐瑰嚮琛ㄥご杩涜鎺掑簭 + 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; + } + this.handleOrderChange(column.property, column.multiOrder) + }, + handleOrderChange(prop, order) { + let orderByArr = this.queryParams.orderByColumn ? this.queryParams.orderByColumn.split(",") : []; + let isAscArr = this.queryParams.isAsc ? this.queryParams.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); + } + //鍚堝苟鎺掑簭 + this.queryParams.orderByColumn = orderByArr.join(","); + this.queryParams.isAsc = isAscArr.join(","); + this.getList(); + }, + /** 浠诲姟鏃ュ織鍒楄〃鏌ヨ */ + handleOssConfig() { + this.$router.push({ path: '/system/oss-config/index'}) + }, + /** 鏂囦欢鎸夐挳鎿嶄綔 */ + handleFile() { this.reset(); this.open = true; - this.title = "涓婁紶OSS浜戝瓨鍌�"; + this.title = "涓婁紶鏂囦欢"; + this.type = 0; + }, + /** 鍥剧墖鎸夐挳鎿嶄綔 */ + handleImage() { + this.reset(); + this.open = true; + this.title = "涓婁紶鍥剧墖"; + this.type = 1; }, /** 鎻愪氦鎸夐挳 */ submitForm() { - this.$refs["form"].validate(valid => { - if (valid) { - this.buttonLoading = true; - addOss(this.form).then(response => { - this.msgSuccess("涓婁紶鎴愬姛"); - this.open = false; - this.getList(); - }).finally(() => { - this.buttonLoading = false; - }); - } - }); + this.open = false; + this.getList(); + }, + /** 涓嬭浇鎸夐挳鎿嶄綔 */ + handleDownload(row) { + this.$download.oss(row.ossId) }, /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const ossIds = row.ossId || this.ids; - this.$confirm('鏄惁纭鍒犻櫎OSS浜戝瓨鍌ㄧ紪鍙蜂负"' + ossIds + '"鐨勬暟鎹」?', "璀﹀憡", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning" - }).then(() => { - this.loading = true; - return delOss(ossIds); - }).then(() => { - this.loading = false; - this.getList(); - this.msgSuccess("鍒犻櫎鎴愬姛"); - }).catch(() => {}); + this.$modal.confirm('鏄惁纭鍒犻櫎OSS瀵硅薄瀛樺偍缂栧彿涓�"' + ossIds + '"鐨勬暟鎹」?').then(() => { + this.loading = true; + return delOss(ossIds); + }).then(() => { + this.loading = false; + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).finally(() => { + this.loading = false; + }); + }, + // 棰勮鍒楄〃鍥剧墖鐘舵�佷慨鏀� + handlePreviewListResource(previewListResource) { + let text = previewListResource ? "鍚敤" : "鍋滅敤"; + this.$modal.confirm('纭瑕�"' + text + '""棰勮鍒楄〃鍥剧墖"閰嶇疆鍚�?').then(() => { + return this.updateConfigByKey("sys.oss.previewListResource", previewListResource); + }).then(() => { + this.getList() + this.$modal.msgSuccess(text + "鎴愬姛"); + }).catch(() => { + this.previewListResource = previewListResource !== true; + }) } } }; -- Gitblit v1.9.3