From cfededd9721be4322e660fc879f11a806fcc7963 Mon Sep 17 00:00:00 2001 From: weidy <lastanimals@163.com> Date: 星期二, 20 六月 2023 17:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS-WEB/src/components/file/main.vue | 487 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 487 insertions(+), 0 deletions(-) diff --git a/Source/UBCS-WEB/src/components/file/main.vue b/Source/UBCS-WEB/src/components/file/main.vue new file mode 100644 index 0000000..7a9ba08 --- /dev/null +++ b/Source/UBCS-WEB/src/components/file/main.vue @@ -0,0 +1,487 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + :page.sync="page" + :before-open="beforeOpen" + :permission="permissionList" + v-model="form" + ref="crud" + @row-del="rowDel" + @search-change="searchChange" + @search-reset="searchReset" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @refresh-change="refreshChange" + @on-load="onLoad"> + <template slot="menuLeft"> + <el-button v-if="hasUpload" type="primary" + size="small" + plain + icon="el-icon-upload2" + @click="handleUpload">涓� 浼� + </el-button> + <el-button v-if="hasEdit" type="primary" + size="small" + plain + icon="el-icon-edit" + @click="handleEdit">淇� 鏀� + </el-button> + <el-button v-if="hasDownload" type="primary" + size="small" + icon="el-icon-download" + plain + @click="handleDownload">涓� 杞� + </el-button> + <el-button v-if="hasDel" type="danger" + size="small" + icon="el-icon-delete" + plain + @click="handleDelete">鍒� 闄� + </el-button> + </template> + <template slot-scope="scope" slot="menu"> + <el-button v-if="hasDownload" type="text" + icon="el-icon-download" + size="small" + @click="handleDownload(scope.row)">涓嬭浇 + </el-button> + </template> + </avue-crud> + <el-dialog title="闄勪欢绠$悊" + append-to-body + :visible.sync="attachBox" + width="555px"> + <avue-form ref="form" :option="attachOption" v-model="attachForm" :upload-before="uploadBefore" :upload-after="uploadAfter" :upload-error="uploadError"> + </avue-form> + </el-dialog> + </basic-container> +</template> + +<script> +import {getList, getFile,upload,update, remove,download} from "@/api/resource/file"; +import {mapGetters} from "vuex"; +import {dateFormat} from "@/util/date"; +import {validatenull} from "@/util/validate"; + +export default { + props: ["options","visible"], + data() { + return { + form: {}, + query: {}, + params:{}, + loading: false, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + attachBox: false, + selectionList: [], + hasUpload:validatenull(this.options.hasUpload) ? true :this.options.hasUpload, + hasEdit:validatenull(this.options.hasEdit) ? true :this.options.hasEdit, + hasDel:validatenull(this.options.hasDel) ? true :this.options.hasDel, + hasDownload:validatenull(this.options.hasDownload) ? true :this.options.hasDownload, + option: { + height:(this.options.tableHeight?this.options.tableHeight:'auto'), + calcHeight: 30, + tip: false, + searchShow: true, + searchMenuSpan: 6, + border: true, + index: true, + viewBtn: true, + selection: true, + dialogClickModal: false, + column: [ + { + label: "鏂囦欢鍚嶇О", + prop: "name", + search: true, + /*formatter:function(d){ + if(this.options.hasDownloadRight != false){ + //璇存槑鏈変笅杞芥枃浠剁殑鏉冮檺锛岄偅涔堟垜浠氨娣诲姞涓�涓秴閾炬帴 + return ''//'<a name="filenamedownloadlink " class="layui-btn layui-btn-intable" lay-event="PREVIEW" fileoid="' + d.oid +'">' + (d.id?d.id:d.name) + '</a>'; + }else{ + return d.id || d.name; + } + }*/ + }, + { + label: "鏂囦欢澶у皬", + prop: "fileSize", + formatter:function(d){ + if(!d.fileSize || d.fileSize == null || d.fileSize*1 == 0 || isNaN(d.fileSize*1) ){ + return "鏈煡澶у皬"; + }else{ + //鍘熷澶у皬鏄疊 + var filesize = d.fileSize*1; + if(filesize>1024*1024*1024*1024){ + return parseInt(filesize/(1024*1024*1024*1024)) + "TB"; + }else if(filesize> 1024*1024*1024){ + return parseInt(filesize/(1024*1024*1024)) + "GB"; + }else if(filesize> 1024*1024){ + return parseInt(filesize/(1024*1024)) + "MB"; + }else if(filesize> 1024){ + return parseInt(filesize/1024) + "KB"; + }else { + return filesize + "B"; + } + } + } + }, + /*{ + label: "瀵嗙骇", + prop: "secretGradeText" + }, + { + label: "鏂囨。绫诲埆", + prop: "fileDocClassifyName" + },*/ + { + label: "鍒涘缓鑰�", + prop: "creator" + }, + { + label: "鍒涘缓鏃堕棿", + prop: "createTime" + }, + ] + }, + columnType: { + text: "input", + combox: "select", + truefalse: "switch", + number: "number", + textarea: "textarea", + datetime: "datetime", + date: "date", + refer: "refer", + }, + data: [], + attachForm: {}, + attachOption: { + submitBtn: false, + emptyBtn: false, + column: [{ + prop: 'fileDocClassify', + label: '鏂囦欢绫诲瀷', + props: { + label: 'value', + value: 'key' + }, + change: () => { + (!!this.options.fileDocClassifyCombox) && this.changeFun('fileDocClassify'); + }, + blur: () => { + (!this.options.fileDocClassifyCombox) && this.changeFun('fileDocClassify'); + }, + value: this.options.fileDocClassify || "ADMIN_SHARE", + type: (!this.options.fileDocClassifyCombox) ? 'input' : 'select', + dicData: (this.options.fileDocClassifyCombox || []),//[{key: 'text', value: '鏂囨湰妗�'}] + display: (!!this.options.fileDocClassifyCombox) + }, { + label: '闄勪欢涓婁紶', + prop: 'attachFile', + type: 'upload', + dragFile: true, + accept: this.options.uploadAccept || 'file', + loadText: '鏂囦欢涓婁紶涓紝璇风◢绛�', + span: 24, + propsHttp: { + res: 'data' + }, + data: { + ownbizOid:this.options.ownbizOid || "share", + ownBtmname:this.options.ownbizBtm || "share", + fileDocClassify:this.options.fileDocClassify || "ADMIN_SHARE", + fileDocClassifyName:this.options.fileDocClassifyName || "绠$悊鍛樺叡浜枃浠�" + }, + action: "/api/ubcs-resource/fileController/uploadFile" + } + ] + } + }; + }, + computed: { + ...mapGetters([ "permission"]), + permissionList() { + return { + addBtn: false, + viewBtn: false, + delBtn: this.vaildData(this.permission.attach_delete, false), + editBtn: false + }; + }, + oids() { + let oids = []; + this.selectionList.forEach(ele => { + oids.push(ele.oid); + }); + return oids.join(","); + } + }, + created() { + this.setFormItem(); + this.setParams() + }, + mounted() { + + }, + methods: { + setFormItem(){ + /*this.options.formItems=[{ + field: 'fileDocClassify11', + title: '鏂囦欢绫诲瀷', + type: 'combox', + data: [{key: 'text', value: '鏂囨湰妗�'},{key: 'number', value: '鏁板瓧妗�'}] + }]*/ + if(this.options && this.options.formItems){ + this.options.formItems.forEach(item => { + // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰 + let message = "璇烽�夋嫨"; + let trigger = "change"; + if (item.type === "text") { + message = "璇疯緭鍏�"; + trigger = "blur"; + } + this.attachOption.column.push( { + ...item, + label: item.title, + prop: item.field, + display: !item.hidden, + value: item.defaultValue, + disabled: item.readOnly, + type: this.columnType[item.type], + dicData: this.getDataList(item.type, item.data), + change: () => { + if(item.type !== "text" && item.type !== "number" && item.type !== "textarea"){ + this.changeFun(item.field); + } + }, + blur: () => { + if(item.type == "text" || item.type == "number" || item.type == "textarea"){ + this.changeFun(item.field); + } + }, + rules: [ + { + required: item.required, + message: `璇�${message}${item.title}`, + trigger, + }, + { + // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗� + pattern: item.verify ? item.verify : /[\s\S.]*/g, + message: item.tooltips, + trigger, + }, + ], + props: { + label: 'value', + value: 'key' + } + }) + }) + } + }, + changeFun( prop) { + this.attachOption.column[1].data[prop]=this.attachForm[prop] + }, + getDataList(type, dicData) { + if (type === "truefalse") { + return [ + { + key: false, + value: "鍚�", + }, + { + key: true, + value: "鏄�", + }, + ]; + } else if (type === "combox") { + return dicData; + } + return []; + }, + setParams() { + var queryMap = { + currentButtonKey: 'VIEW', + ownbizOid: this.options.ownbizOid, + ownbizBtm: this.options.ownbizBtm, + fileDocClassify: this.options.fileDocClassify, + fileDocClassifyName: this.options.fileDocClassifyName + }; + if (this.options.where) { + Object.assign(queryMap, this.options.where); + } + this.params = queryMap; + + if (!this.options.pageObject) { + this.options.pageObject = { + limit: 10, + page: 1 + }; + } + this.page.pageSize = this.options.pageObject.limit; + this.page.currentPage = this.options.pageObject.page; + }, + handleUpload() { + this.attachOption.column[1].data.fileOid=''; + delete this.attachOption.column[1].data.oid; + delete this.attachOption.column[1].data.updateFileFlag; + this.attachBox = true; + }, + handleEdit() { + if(this.selectionList.length==0){ + this.$message.warning('璇烽�夋嫨闇�瑕佷慨鏀圭殑鏂囦欢') + return false; + }else if(this.selectionList.length>1){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + return false; + } + this.attachOption.column[1].data.fileOid=this.oids; + this.attachOption.column[1].data.oid=this.oids; + this.attachOption.column[1].data.updateFileFlag=true + this.attachBox = true; + }, + uploadBefore(file, done, loading,column) { + done(); + }, + uploadAfter(res, done, loading, column) { + if(res.success){ + this.attachBox = false; + this.$message.success('鏂囦欢涓婁紶鎴愬姛') + }else{ + this.$message.error(res.msg); + } + this.refreshChange(); + done(); + }, + uploadError(error, column) { + this.$message.error('涓婁紶鏂囦欢鍑虹幇浜嗗紓甯�') + }, + handleDownload(row) { + //window.open(`${row.link}`); + if(row && row.oid){ + download(row.oid) + }else{ + if (this.selectionList.length === 0) { + this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + return; + } + download(this.oids); + } + }, + rowDel(row) { + this.$confirm("纭畾灏嗛�夋嫨鏂囦欢鍒犻櫎?", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + return remove(row.oid); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + }); + }, + handleDelete() { + if (this.selectionList.length === 0) { + this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + return; + } + this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + return remove(this.oids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + beforeOpen(done, type) { + if (["edit", "view"].includes(type)) { + getDetail(this.form.id).then(res => { + this.form = res.data.data; + }); + } + done(); + }, + searchReset() { + this.query = {}; + this.onLoad(this.page); + }, + searchChange(params, done) { + this.query = params; + this.page.currentPage = 1; + this.onLoad(this.page); + done(); + }, + selectionChange(list) { + this.selectionList = list; + }, + selectionClear() { + this.selectionList = []; + this.$refs.crud.toggleSelection(); + }, + currentChange(currentPage) { + this.page.currentPage = currentPage; + }, + sizeChange(pageSize) { + this.page.pageSize = pageSize; + }, + refreshChange() { + this.onLoad(this.page, this.query); + }, + onLoad(page, params={}) { + this.loading = true; + var query={} + if (this.query) { + for (var key in this.query) { + query['conditionMap["' + key + '"]'] = this.query[key]; + } + } + getList(page.currentPage, page.pageSize, Object.assign(params,this.params, query,this.query)).then(res => { + const data = res.data.data; + this.page.total = data.total; + if(data && data.records.length>0 && this.options.fileDocClassifyCombox){ + this.data = data.records.map(item => { + if(validatenull(item.fileDocClassifyName)&& !validatenull(item.fileDocClassify)){ + item.fileDocClassifyName = this.options.fileDocClassifyCombox[item.fileDocClassify] || ''; + } + return { + ...item + } + }) + } + //this.data = data.records; + this.loading = false; + this.selectionClear(); + }).catch(error=>{ + this.$message.error(error); + this.loading = false; + }); + } + } +}; +</script> + +<style> +</style> -- Gitblit v1.9.3