From a680a84d91fb6501951d0265e9b347695568c546 Mon Sep 17 00:00:00 2001 From: 抓蛙师 <770492966@qq.com> Date: 星期二, 20 九月 2022 16:41:40 +0800 Subject: [PATCH] !236 前端适配多字段排序功能案例OSS页面(重新排序需点击重置按钮,否则按照点击顺序依次排序,重复点击的字段排序位置不发生改变) * 完善前端适配多字段排序功能案例OSS页面(完善排序图标显示效果和重置效果,支持正序,倒序,取消排序) * 前端适配多字段排序功能案例OSS页面(重新排序需点击重置按钮,否则按照点击顺序依次排序,重复点击的字段排序位置不发生改变) --- ruoyi-ui/src/views/system/oss/index.vue | 144 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 118 insertions(+), 26 deletions(-) diff --git a/ruoyi-ui/src/views/system/oss/index.vue b/ruoyi-ui/src/views/system/oss/index.vue index 1171cc9..9f8557c 100644 --- a/ruoyi-ui/src/views/system/oss/index.vue +++ b/ruoyi-ui/src/views/system/oss/index.vue @@ -96,34 +96,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="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 && scope.row.fileSuffix.indexOf('png','jpg','jpeg') > 0" + 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="scope.row.fileSuffix.indexOf('png','jpg','jpeg') < 0 || !previewListResource"/> + v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource"/> </template> </el-table-column> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"> + <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="service" + sortable="custom"/> <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -152,7 +175,7 @@ @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="鏂囦欢鍚�"> @@ -170,14 +193,12 @@ <script> import { listOss, delOss } from "@/api/system/oss"; -import { downLoadOss } from "@/utils/ossdownload"; -import { updateConfig } from "@/api/system/config"; - export default { name: "Oss", data() { return { + showTable: true, // 鎸夐挳loading buttonLoading: false, // 閬僵灞� @@ -194,7 +215,7 @@ showSearch: true, // 鎬绘潯鏁� total: 0, - // OSS浜戝瓨鍌ㄨ〃鏍兼暟鎹� + // OSS瀵硅薄瀛樺偍琛ㄦ牸鏁版嵁 ossList: [], // 寮瑰嚭灞傛爣棰� title: "", @@ -206,6 +227,8 @@ previewListResource: true, // 鍒涘缓鏃堕棿鏃堕棿鑼冨洿 daterangeCreateTime: [], + // 榛樿鎺掑簭 + defaultSort: {prop: 'createTime', order: 'ascending'}, // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, @@ -232,7 +255,7 @@ this.getList(); }, methods: { - /** 鏌ヨOSS浜戝瓨鍌ㄥ垪琛� */ + /** 鏌ヨOSS瀵硅薄瀛樺偍鍒楄〃 */ getList() { this.loading = true; this.queryParams.params = {}; @@ -247,6 +270,13 @@ 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; }); }, // 鍙栨秷鎸夐挳 @@ -268,8 +298,11 @@ }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { + this.showTable = false; this.daterangeCreateTime = []; this.resetForm("queryForm"); + this.queryParams.orderByColumn = this.defaultSort.prop; + this.queryParams.isAsc = this.defaultSort.order; this.handleQuery(); }, // 澶氶�夋閫変腑鏁版嵁 @@ -277,6 +310,55 @@ this.ids = selection.map(item => item.ossId) this.single = selection.length!==1 this.multiple = !selection.length + }, + // 璁剧疆鍒楃殑鎺掑簭涓烘垜浠嚜瀹氫箟鐨勬帓搴� + 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() { @@ -299,23 +381,33 @@ }, /** 涓嬭浇鎸夐挳鎿嶄綔 */ handleDownload(row) { - downLoadOss(row.ossId) + 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