From f088e6887fe88f0be698892c9883521e9e57d5c3 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期二, 25 七月 2023 09:31:53 +0800 Subject: [PATCH] 信息管理 GDB数据修改 --- src/views/datamanage/metadataManage.vue | 621 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 509 insertions(+), 112 deletions(-) diff --git a/src/views/datamanage/metadataManage.vue b/src/views/datamanage/metadataManage.vue index a60b31f..8ee4f93 100644 --- a/src/views/datamanage/metadataManage.vue +++ b/src/views/datamanage/metadataManage.vue @@ -20,6 +20,7 @@ <el-select :popper-append-to-body="false" v-model="queryForm.depName" + ref="treeSelect" > <el-option :value="queryForm.depid" @@ -53,6 +54,7 @@ <el-select :popper-append-to-body="false" v-model="queryForm.dirName" + ref="treeSelect1" > <el-option :value="queryForm.dirid" @@ -116,7 +118,6 @@ </el-form-item> </div> <div> - <!-- <el-form-item> <el-button @click="queryInfo()" @@ -155,52 +156,8 @@ >{{ $t("common.reset") }} </el-button> </el-form-item> - </div> </div> - - <!-- <el-form-item style="float:right"> - <el-button - @click="queryInfo()" - icon="el-icon-search" - class="primary" - size="small" - >{{ $t('common.iquery') }}</el-button> - </el-form-item> - <el-form-item style="float:right"> - <el-button - @click="resetInfo('queryForm')" - icon="el-icon-refresh" - type="info" - size="small" - >{{ $t('common.reset') }}</el-button> - </el-form-item> --> - - <!-- <el-form-item v-if="btnStatus.insert"> - <el-button - type="success" - size="small" - @click="showAddDialog" - icon="el-icon-plus" - >{{ $t('common.append') }}</el-button - > - </el-form-item> --> - <!-- <el-form-item v-if="btnStatus.delete" style="float:right"> - <el-button - type="danger" - size="small" - @click="deleteMetaInfo" - icon="el-icon-delete" - >{{ $t('common.delete') }}</el-button> - </el-form-item> - <el-form-item v-if="btnStatus.download" style="float:right"> - <el-button - @click="downFormData" - icon="el-icon-download" - type="success" - size="small" - >{{ $t('common.download') }}</el-button> - </el-form-item> --> </el-form> </div> <div class="dividing-line"></div> @@ -211,6 +168,7 @@ <el-table :data="tableData" style="width: 100%" + border @selection-change="handleSelectionChange" height="calc(100% - 57px)" > @@ -234,7 +192,8 @@ target="_blank" >{{ scope.row.name }}</el-link> </span> - <span v-else-if="scope.row.metaid > 0"> <el-link + <span v-else-if="scope.row.metaid > 0"> + <el-link style="color: #409eff" title="鍏冩暟鎹煡璇�" @click="setMetaDataQuery(scope.row)" @@ -247,7 +206,24 @@ <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" - /> + > + <template slot-scope="scope"> + <span v-if="scope.row.type == 'gdb'"> + <el-link + @click="setSelectGdbByGuid(scope.row)" + style="color: #409eff" + > + {{ scope.row.type }} + </el-link> + </span> + <span v-else> + + {{ scope.row.type }} + </span> + </template> + + </el-table-column> + <el-table-column prop="sizes" :label="$t('dataManage.vmobj.size')" @@ -273,7 +249,9 @@ <el-link :underline="false" @click="detail(scope.row)" - >{{ scope.row.tab }}</el-link> + >{{ + scope.row.tab + }}</el-link> </template> </el-table-column> @@ -286,6 +264,13 @@ prop="rows" :label="$t('dataManage.vmobj.row')" /> + + <el-table-column + :label="$t('common.dataStatus')" + :formatter="stateFormat" + > + + </el-table-column> <el-table-column prop="uname" :label="$t('dataManage.vmobj.createonuser')" @@ -296,7 +281,7 @@ :formatter="formatData" /> <el-table-column - min-width="180" + min-width="210" :label="$t('common.operate')" > <template slot-scope="scope"> @@ -316,6 +301,14 @@ style="margin-left: 10px" >{{ $t("common.edit") }} </el-button> + <el-button + plain + size="small" + v-if="showPreview(scope.row)" + @click="handlePreview(scope.row)" + style="margin-left: 10px" + >{{ $t("common.preview") }} + </el-button> </template> </el-table-column> </el-table> @@ -327,7 +320,7 @@ @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listData.pageIndex" - :page-sizes="[10, 20, 50, 100]" + :page-sizes="[10, 50, 100, 200]" :page-size="listData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="count" @@ -338,6 +331,7 @@ <div class="infoBox_box" v-show="showinfoBox" + style="z-index:99999" > <div class="infoBox box_div"> <div @@ -373,7 +367,7 @@ <el-divider></el-divider> <p>{{ $t("dataManage.vmobj.tab") }}锛歿{ itemdetail.tab }}</p> <el-divider></el-divider> - <p>{{ $t("dataManage.vmobj.row") }}锛歿{ itemdetail.row }}</p> + <p>{{ $t("dataManage.vmobj.row") }}锛歿{ itemdetail.rows }}</p> <el-divider></el-divider> <p> {{ $t("dataManage.vmobj.createonuser") }}锛歿{ itemdetail.uname }} @@ -385,17 +379,15 @@ }} </p> <el-divider></el-divider> - <p> - {{ $t("dataManage.vmobj.updateonuser") }}锛歿{ - itemdetail.updateUser - }} + <!-- <p> + {{ $t("dataManage.vmobj.depName") }}锛歿{ itemdetail.updateUser }} </p> <el-divider></el-divider> <p> - {{ $t("dataManage.vmobj.updateontime") }}锛歿{ + {{ $t("dataManage.vmobj.depName") }}锛歿{ setInfoBoxTime(itemdetail.updateTime) }} - </p> + </p> --> </div> </div> </div> @@ -526,9 +518,7 @@ <el-button size="small" @click="cancelEdit()" - >{{ - $t("common.reset") - }} + >{{ $t("common.reset") }} </el-button> <el-button size="small" @@ -546,9 +536,7 @@ <el-button size="small" @click="cancelAdd('editForm')" - >{{ - $t("common.reset") - }} + >{{ $t("common.reset") }} </el-button> <el-button size="small" @@ -595,7 +583,7 @@ @size-change="handleLoaderSizeChange" @current-change="handleLoaderCurrentChange" :current-page="listLoader.pageIndex" - :page-sizes="[10, 20, 50, 100]" + :page-sizes="[10, 50, 100, 200]" :page-size="listLoader.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="count1" @@ -647,9 +635,7 @@ type="info" size="small" @click="closeDown('codeForm')" - >{{ - $t("common.cancel") - }} + >{{ $t("common.cancel") }} </el-button> </el-form-item> </el-form> @@ -743,8 +729,8 @@ class="scopeRowColor" @click="detail(scope.row)" >{{ - scope.row.tab - }}</a> + scope.row.tab + }}</a> </template> </el-table-column> <el-table-column @@ -766,7 +752,7 @@ @size-change="handleMetaSizeChange" @current-change="handMetaCurrentChange" :current-page="listMetaData.pageIndex" - :page-sizes="[10, 20, 50, 100]" + :page-sizes="[10, 50, 100, 200]" :page-size="listMetaData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="listMetaData.count" @@ -781,7 +767,6 @@ width="70%" > <div style="height: 65vh; width: 100%"> - <el-table ref="filterTable" :data="metaDataTable1" @@ -838,8 +823,8 @@ class="scopeRowColor" @click="detail(scope.row)" >{{ - scope.row.tab - }}</a> + scope.row.tab + }}</a> </template> </el-table-column> <el-table-column @@ -853,8 +838,224 @@ :label="$t('dataManage.dataUpObj.describe')" /> </el-table> - </div> + </el-dialog> + <el-dialog + custom-class="preview-dialog" + title="棰勮" + :append-to-body="false" + :visible.sync="dialog.dialogVisible" + width="70%" + :close-on-click-modal="false" + > + <div + v-if="dialog.isPdf" + class="pdfClass" + > + <iframe + :src="dialog.src" + type="application/x-google-chrome-pdf" + width="100%" + height="100%" + > + </iframe> + </div> + <div + v-if="dialog.isJpg" + class="pdfClass" + > + <el-image + style="width: 100%; height: 100%" + :src="dialog.src" + :preview-src-list="[dialog.src]" + > + </el-image> + </div> + </el-dialog> + <el-dialog + title="鏁版嵁鐢宠" + :visible.sync="dialogInsertFile" + width="30%" + top="10vh" + :modal="false" + :close-on-click-modal="false" + :show-close="false" + > + <el-form + ref="form" + :model="fileFrom" + label-width="100px" + > + <el-form-item label="瀹℃牳鍗曚綅"> + <div> + <ul> + <li v-for="item in fileFrom.depid"> + {{ item.name }} + </li> + </ul> + </div> + </el-form-item> + + <el-form-item label="鎻忚堪"> + <el-input + type="textarea" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="fileFrom.descr" + maxlength="50" + show-word-limit + > + </el-input> + </el-form-item> + <el-form-item> + <el-button + class="primary" + size="small" + @click="getFileInsertApply()" + >{{ $t("common.confirm") }}</el-button> + <el-button + type="info" + size="small" + @click="handleInsertFileClose()" + >{{ $t("common.cancel") }}</el-button> + </el-form-item> + </el-form> + </el-dialog> + <el-dialog + title="" + :visible.sync="gdbDialog" + width="80%" + top="8vh" + :modal="false" + :close-on-click-modal="false" + > + <div class="gdbTableBox"> + <el-table + :data="gdbData" + style="width: 100%" + > + <el-table-column + type="selection" + width="55" + /> + <el-table-column + :label="$t('dataManage.dictionaryManageObj.number')" + type="index" + width="50" + > + </el-table-column> + <el-table-column :label="$t('dataManage.vmobj.name')"> + <template slot-scope="scope"> + <span v-if="scope.row.ismeta > 0"> + <el-link + style="color: #409eff" + title="婧愭暟鎹煡璇�" + @click="setQueryMetaData(scope.row)" + target="_blank" + >{{ scope.row.name }}</el-link> + </span> + <span v-else-if="scope.row.metaid > 0"> + <el-link + style="color: #409eff" + title="鍏冩暟鎹煡璇�" + @click="setMetaDataQuery(scope.row)" + target="_blank" + >{{ scope.row.name }}</el-link></span> + <span v-else>{{ scope.row.name }}</span> + </template> + </el-table-column> + + <el-table-column + prop="type" + :label="$t('dataManage.vmobj.format')" + > + + </el-table-column> + + <el-table-column + prop="sizes" + :label="$t('dataManage.vmobj.size')" + :formatter="stateFormatSizes" + /> + <el-table-column + prop="depName" + :label="$t('dataManage.vmobj.depName')" + /> + <el-table-column + prop="dirName" + :label="$t('dataManage.vmobj.dirName')" + width="200" + /> + <el-table-column + prop="verName" + :label="$t('dataManage.vmobj.versionNumber')" + /> + <el-table-column :label="$t('dataManage.dataUpObj.tableName')"> + <template slot-scope="scope"> + + <el-link></el-link> + <el-link + :underline="false" + @click="detail(scope.row)" + >{{ + scope.row.tab + }}</el-link> + </template> + </el-table-column> + + <el-table-column + prop="rows" + :label="$t('dataManage.vmobj.row')" + /> + + <el-table-column + :label="$t('common.dataStatus')" + :formatter="stateFormat" + > + + </el-table-column> + <el-table-column + prop="uname" + :label="$t('dataManage.vmobj.createonuser')" + /> + <el-table-column + prop="createTime" + :label="$t('dataManage.vmobj.createontime')" + :formatter="formatData" + /> + <el-table-column + min-width="210" + :label="$t('common.operate')" + > + <template slot-scope="scope"> + <el-button + @click="showDetail(scope.row)" + type="primary" + plain + size="small" + >{{ $t("common.details") }} + </el-button> + <el-button + type="warning" + plain + size="small" + v-if="btnStatus.update" + @click="editInfo(scope.row)" + style="margin-left: 10px" + >{{ $t("common.edit") }} + </el-button> + <el-button + plain + size="small" + v-if="showPreview(scope.row)" + @click="handlePreview(scope.row)" + style="margin-left: 10px" + >{{ $t("common.preview") }} + </el-button> + </template> + </el-table-column> + </el-table> + </div> + </el-dialog> <iframe id="downFrame" @@ -868,6 +1069,7 @@ import $ from "jquery"; import { getToken } from "@/utils/auth"; import { + encr, deleteMeta, insertMeta, meta_downloadReq, @@ -881,7 +1083,11 @@ selectdirTab, sign_getPublicKey, updateMeta, - meta_selectById + meta_selectById, + meta_selectMetaOverflowDep, + meta_selectDepsByCodes, + apply_insertApply, + meta_selectGdbByGuid, } from "../../api/api"; import MyBread from "../../components/MyBread.vue"; @@ -933,6 +1139,8 @@ dirid: "", depid: "", verid: "", + depName: "", + }, behavior: "", initialForm: "", @@ -1006,6 +1214,23 @@ metaDataTable: [], queryMetaFlag1: false, metaDataTable1: [], + dialog: { + dialogVisible: false, + isPdf: false, + isJpg: false, + src: "", + }, + dialogInsertFile: false, + fileFrom: { + descr: null, + depid: null, + ids: null, + pwd: null, + depcodes: null, + }, + gdbData: [], + gdbDialog: false, + gdbGuid: null, }; }, created() { @@ -1019,11 +1244,52 @@ this.timer && clearTimeout(this.timer); window.removeEventListener("resize", this.onResize); }, + mounted() { window.addEventListener("resize", this.onResize); this.calHeight(); }, + watch: { + "queryForm.depName"() { + + this.$refs.treeSelect.visible = false; + }, + "queryForm.dirid"() { + + this.$refs.treeSelect1.visible = false; + }, + }, methods: { + //gdb 鐐瑰嚮浜嬩欢 + setSelectGdbByGuid(row) { + this.gdbGuid = row.guid + this.getSelectGdbByGuid(); + }, + async getSelectGdbByGuid() { + if (!this.gdbGuid) return + const data = await meta_selectGdbByGuid({ guid: this.gdbGuid }) + if (data.code != 200) { + return this.$message.error("鏍规嵁GUID鏌ヨGDB鏁版嵁澶辫触"); + } + if (data.count <= 0) { + return this.$message("鏌ユ棤鏇村鏁版嵁"); + } + this.gdbData = data.result; + this.gdbDialog = true; + + }, + + + stateFormat(row, column) { + var val = ['shp', 'gdb', 'xls', 'xlsx'] + if (val.indexOf(row.type) > -1 && row.rows > 0) { + return '宸蹭笂浼�,宸插叆搴�' + } else if (val.indexOf(row.type) > -1 && row.rows == 0) { + return '宸蹭笂浼�,鏈叆搴�' + } else { + return '宸蹭笂浼�' + } + }, //澶у皬鍊兼敼鍙� changeSizeFile(row, column, cellValue, index) { if (cellValue >= 1024) { @@ -1060,14 +1326,10 @@ }, //鍏冩暟鎹煡璇� async setMetaDataQuery(row) { - this.fromQueryMeta.title = row.name; this.listMetaData = { id: row.metaid, - // name: "", - // pageIndex: 1, - // pageSize: 10, - // count: 0, + }; const data = await meta_selectById(this.listMetaData); if (data.code != 200) { @@ -1078,6 +1340,8 @@ this.metaDataTable1 = [data.result]; // this.listMetaData.count = data.count; }, + + //婧愭暟鎹煡璇� setQueryMetaData(row) { this.fromQueryMeta.title = row.name; @@ -1233,6 +1497,7 @@ this.listData.pageIndex = 1; this.queryForm.depcode = data.code; this.queryForm.depName = data.name; + this.getMetaData(); }, handleChange2(data, node, nodeData) { @@ -1461,7 +1726,7 @@ message: "鍒犻櫎鎴愬姛!", }); this.multipleSelection = []; - this.listData.pageSize = 10; + // this.listData.pageSize = 10 this.listData.pageIndex = 1; this.getMetaData(); } else { @@ -1479,7 +1744,9 @@ showDetail(row) { // console.log(index, row); this.showinfoBox = true; + this.itemdetail = row; + }, // 鍏抽棴鏌ョ湅 closeDetial() { @@ -1505,8 +1772,7 @@ this.editForm = {}; done(); }) - .catch((_) => { - }); + .catch((_) => { }); }, // 鎻愪氦淇敼 @@ -1524,7 +1790,14 @@ if (res.code == 200) { this.listData.pageSize = 10; this.listData.pageIndex = 1; - this.getMetaData(); + + if (this.gdbDialog) { + this.getSelectGdbByGuid(); + } else { + this.getMetaData(); + } + + this.$message({ message: "淇敼鎴愬姛", type: "success", @@ -1539,6 +1812,7 @@ alert("淇敼澶辫触锛岃閲嶈瘯锛�"); this.fullscreenLoading = false; }); + }, cancelEdit() { this.$nextTick(() => { @@ -1546,44 +1820,111 @@ }); }, async download() { - var std = []; + var ids = []; for (var i in this.multipleSelection) { - std.push(this.multipleSelection[i].id); + ids.push(this.multipleSelection[i].id); } var obj = { - pwd: encrypt.encrypt(this.codeForm.repassword), - ids: std, + ids: ids, }; - const res = await meta_downloadReq(JSON.stringify(obj)); - - if (res.code != 200) { - this.$message.error("涓嬭浇璇锋眰澶辫触"); - return; - } - - var downObj = { - guid: res.result, - pwd: encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)), - }; - const data = await meta_selectDownloadFile(downObj); - + const data = await meta_selectMetaOverflowDep(obj); if (data.code != 200) { - this.$message.error("涓嬭浇璇锋眰澶辫触"); return; } - var token = getToken(); - var url = - BASE_URL + - "/meta/downloadFile?token=" + - token + - "&guid=" + - res.result + - "&pwd=" + - encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)); + var password = this.codeForm.repassword; + if (data.result.length == 0) { + var obj = { + pwd: encrypt.encrypt(this.codeForm.repassword), + ids: ids, + }; + const res = await meta_downloadReq(JSON.stringify(obj)); + if (res.code != 200) { + this.$message.error("涓嬭浇璇锋眰澶辫触"); + return; + } - $("#downFrame").attr("src", url).click(); + var downObj = { + guid: res.result, + pwd: encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)), + }; + const data1 = await meta_selectDownloadFile(downObj); + if (data1.code != 200) { + this.$message.error("涓嬭浇璇锋眰澶辫触"); + return; + } + var token = getToken(); + var url = + BASE_URL + + "/meta/downloadFile?token=" + + token + + "&guid=" + + res.result + + "&pwd=" + + encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)); + + $("#downFrame").attr("src", url).click(); + } else { + var val = ""; + var std = []; + for (var i in data.result) { + if (val == "") { + val += "codes=" + data.result[i]; + } else { + val += "&codes=" + data.result[i]; + } + std.push({ + name: data.result[i], + }); + } + const data1 = await meta_selectDepsByCodes(val); + if (data1.code != 200) { + return; + } + + this.fileFrom.depid = data1.result; + this.fileFrom.ids = ids; + this.fileFrom.pwd = encr(password); + this.fileFrom.depcodes = data.result; + this.dialogInsertFile = true; + } + this.closeDown(); }, + + async getFileInsertApply() { + this.dialogInsertFile = false; + + var obj = { + ids: this.fileFrom.ids, + pwd: this.fileFrom.pwd, + tabs: ["鍏冩暟鎹〃"], + entities: ["sysmeta"], + descr: this.fileFrom.descr, + depcodes: this.fileFrom.depcodes, + }; + + const data = await apply_insertApply(JSON.stringify(obj)); + this.handleInsertFileClose(); + if (data.code != 200) { + this.$message.error("鏁版嵁鐢宠澶辫触"); + return; + } + this.$message({ + message: "鏁版嵁鐢宠鎴愬姛", + type: "success", + }); + }, + handleInsertFileClose() { + this.dialogInsertFile = false; + this.fileFrom = { + descr: null, + depid: null, + ids: null, + pwd: null, + depcodes: null, + }; + }, + closeDown() { this.showCodeBox = false; this.codeForm.password = ""; @@ -1615,6 +1956,47 @@ branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� return father.pid == 0; // 杩斿洖涓�绾ц彍鍗� }); + }, + showPreview(row) { + let name = row.name; + if (!name) return false; + return ( + name.indexOf("pdf") != -1 || + name.indexOf("jpg") != -1 || + name.indexOf("gif") != -1 || + name.indexOf("png") != -1 || + name.indexOf("jpeg") != -1 + ); + }, + handlePreview(row) { + let name = row.name; + this.refreshAttatchDetail(); + + if (name.indexOf(".pdf") != -1) { + this.dialog.isPdf = true; + } else if ( + name.indexOf(".jpg") != -1 || + name.indexOf(".gif") != -1 || + name.indexOf(".png") != -1 || + name.indexOf(".jpeg") != -1 + ) { + this.dialog.isJpg = true; + } + this.dialog.dialogVisible = true; + + var url = + BASE_URL + + "/inquiry/downloadForView?guid=" + + row.guid + + "&token=" + + getToken(); + this.dialog.src = url; + }, + refreshAttatchDetail() { + this.dialog.src = ""; + this.dialog.dialogVisible = false; + this.dialog.isPdf = false; + this.dialog.isJpg = false; }, }, }; @@ -1656,5 +2038,20 @@ border-radius: 10px; } + .preview-dialog { + .pdfClass { + height: 70vh; + width: 100%; + position: relative; + } + } + .el-divider--horizontal { + margin: 15px 0; + } + .gdbTableBox { + width: 100%; + height: 740px; + overflow-y: auto; + } } </style> -- Gitblit v1.9.3