From 985b26624b69ad91b9e3a723c19bd4bbf1a36250 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期五, 03 三月 2023 13:03:47 +0800 Subject: [PATCH] 空间查询列表细化,工点表添加挂接信息界面 --- src/assets/lang/zh.js | 3 src/views/Archive/index.vue | 58 ++++- src/components/MapView/mapMenuTop.vue | 131 ++++++++++---- src/assets/css/configure.css | 20 ++ src/assets/lang/en.js | 3 src/components/MapView/mapSpacePop.vue | 14 src/views/datamanage/SpatialData.vue | 305 +++++++++++++++++++++++---------- 7 files changed, 370 insertions(+), 164 deletions(-) diff --git a/src/assets/css/configure.css b/src/assets/css/configure.css index c1603ae..c8ce190 100644 --- a/src/assets/css/configure.css +++ b/src/assets/css/configure.css @@ -365,16 +365,32 @@ } /*el-table杈规*/ -.el-table{ +.el-table { border-left: none !important; border-right: none !important; } + .el-table td { border-right: none !important; } + .el-table th.is-leaf { border-right: none !important; } -.el-table--group::after, .el-table--border::after{ + +.el-table--group::after, +.el-table--border::after { width: 0 !important; } + +.el-table { + width: 100%; + display: flex; + flex-direction: column; + + +} + +.el-table .el-table__body-wrapper { + flex: 1; +} \ No newline at end of file diff --git a/src/assets/lang/en.js b/src/assets/lang/en.js index 2537614..83c4dc7 100644 --- a/src/assets/lang/en.js +++ b/src/assets/lang/en.js @@ -49,7 +49,8 @@ pleaseInputPassworld: 'Please input a password', passworld: 'Passworld', language: "涓枃", - title: 'Title' + title: 'Title', + attribute: 'Attribute', }, dataManage: { diff --git a/src/assets/lang/zh.js b/src/assets/lang/zh.js index 2a26512..6a94765 100644 --- a/src/assets/lang/zh.js +++ b/src/assets/lang/zh.js @@ -49,7 +49,8 @@ pleaseInputPassworld: '璇疯緭鍏ュ瘑鐮�', passworld: '瀵嗙爜', language: "English", - title: '鏍囬' + title: '鏍囬', + attribute: '灞炴��', }, dataManage: { dataManage: '鏁版嵁绠$悊', diff --git a/src/components/MapView/mapMenuTop.vue b/src/components/MapView/mapMenuTop.vue index ec5a325..b793550 100644 --- a/src/components/MapView/mapMenuTop.vue +++ b/src/components/MapView/mapMenuTop.vue @@ -1,6 +1,10 @@ <template> <div class="menuBox"> - <el-form :inline="true" :model="menuTopFrom" class="demo-form-inline"> + <el-form + :inline="true" + :model="menuTopFrom" + class="demo-form-inline" + > <el-form-item> <el-select v-model="menuTopFrom.queryLayer" @@ -8,7 +12,10 @@ placeholder="璇烽�夋嫨..." :popper-append-to-body="false" > - <el-option :value="menuTopFrom.queryLayer" style="height: 100%"> + <el-option + :value="menuTopFrom.queryLayer" + style="height: 100%" + > <div style="height: 200px; overflow: auto"> <el-tree :data="layerData" @@ -22,16 +29,17 @@ </el-tree> </div> <div style="margin-top: 5px"> - <el-button size="small" plain @click="getCheckedNodes" - >纭</el-button - > + <el-button + size="small" + plain + @click="getCheckedNodes" + >纭</el-button> <el-button size="small" type="info" plain @click="resetCheckedNodes" - >閲嶇疆</el-button - > + >閲嶇疆</el-button> </div> </el-option> </el-select> @@ -70,12 +78,17 @@ </el-form-item> <el-form-item> - <el-button plain size="small" @click="getAttributeQuery" - >鏌ヨ</el-button - > - <el-button type="info" size="small" @click="clearQuery" plain - >閲嶇疆</el-button - > + <el-button + plain + size="small" + @click="getAttributeQuery" + >鏌ヨ</el-button> + <el-button + type="info" + size="small" + @click="clearQuery" + plain + >閲嶇疆</el-button> </el-form-item> <!-- <el-form-item> <el-button @@ -104,7 +117,10 @@ width="25%" @opened="dialogOpend" > - <el-form :model="menuTopFrom" label-width="150px"> + <el-form + :model="menuTopFrom" + label-width="150px" + > <el-form-item label="绠¢亾涓績绾�"> <el-select @change="changeSelect2" @@ -144,9 +160,15 @@ ></el-input-number> </el-form-item> </el-form> - <div slot="footer" class="dialog-footer"> + <div + slot="footer" + class="dialog-footer" + > <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="changeBufferData">纭� 瀹�</el-button> + <el-button + type="primary" + @click="changeBufferData" + >纭� 瀹�</el-button> </div> </el-dialog> </div> @@ -178,20 +200,20 @@ }, treeChange: [], layerData: [ - { - id: 1, - label: "鍩虹鏁版嵁", - tabDesc: "鍩虹鏁版嵁", - value: "BD", - children: [], - }, - { - id: 2, - label: "涓氬姟鏁版嵁", - tabDesc: "涓氬姟鏁版嵁", - value: "BS", - children: [], - }, + // { + // id: 1, + // label: "鍩虹鏁版嵁", + // tabDesc: "鍩虹鏁版嵁", + // value: "BD", + // children: [], + // }, + // { + // id: 2, + // label: "涓氬姟鏁版嵁", + // tabDesc: "涓氬姟鏁版嵁", + // value: "BS", + // children: [], + // }, ], queryOption: [ @@ -272,21 +294,50 @@ if (data.code != 200) { this.$message.error("鍒楄〃璋冪敤澶辫触") } - var option = data.result.filter(res => { + + var val = data.result.filter(res => { if (res.rows != 0) { return res } }) - for (var i in option) { - var val_Data = option[i] - val_Data.id = "1" + i - val_Data.label = val_Data.tabDesc - if (option[i].ns == "bd") { - this.layerData[0].children.push(val_Data) - } else { - this.layerData[1].children.push(val_Data) + + var std = []; + val.filter((item) => { + if (std.indexOf(item.bak) == -1) { + std.push(item.bak); + this.layerData.push( + { + val: item.bak, + label: item.tabDesc, + children: [], + } + ) } - } + }); + + this.layerData.filter((item) => { + val.filter((res) => { + if (item.val === res.bak) { + res.label = res.tabDesc + item.children.push(res) + } + }) + }) + + + + + + // for (var i in option) { + // var val_Data = option[i] + // val_Data.id = "1" + i + // val_Data.label = val_Data.tabDesc + // if (option[i].ns == "bd") { + // this.layerData[0].children.push(val_Data) + // } else { + // this.layerData[1].children.push(val_Data) + // } + // } }, //鑾峰彇閫夋嫨鏍戠殑鑺傜偣 getCheckedNodes() { diff --git a/src/components/MapView/mapSpacePop.vue b/src/components/MapView/mapSpacePop.vue index c08795a..7ff8102 100644 --- a/src/components/MapView/mapSpacePop.vue +++ b/src/components/MapView/mapSpacePop.vue @@ -383,7 +383,7 @@ this.$store.state.primitLayer = null; } var wkt = this.$wkt.parse(val1); - this.setMapLoaction(wkt,row); + this.setMapLoaction(wkt, row); } }, handleSizeChange(val) { @@ -394,7 +394,7 @@ this.listdata.pageIndex = val; this.getSpaceTableLayer(); }, - setMapLoaction(res,properties) { + setMapLoaction(res, properties) { if (this.$store.state.primitLayer != null) { sgworld.Creator.DeleteObject(this.$store.state.primitLayer); // this.$store.state.primitLayer = null; @@ -409,8 +409,8 @@ ); this.$store.state.primitLayer = Viewer.entities.add({ - properties:properties, - tag : "properties_point", + properties: properties, + tag: "properties_point", position: val, billboard: { // 鍥惧儚鍦板潃锛孶RI鎴朇anvas鐨勫睘鎬� @@ -433,11 +433,11 @@ sgworld.Navigate.flyToObj(this.$store.state.primitLayer) window.propertieshandler = new Cesium.ScreenSpaceEventHandler( - sgworld.Viewer.scene.canvas + sgworld.Viewer.scene.canvas ); window.propertieshandler.setInputAction(event => { let pick = sgworld.Viewer.scene.pick(event.position); - // debugger; + // ; if (pick && pick.id && pick.id.tag == "properties_point") { this.$store.state.propertiesFlag = '1'; let properties = pick.id.properties; @@ -445,7 +445,7 @@ let obj = {}; this.attributeData.forEach(item => { propertyNames.forEach(itemElement => { - if (itemElement == item.field){ + if (itemElement == item.field) { obj[item.alias] = properties[itemElement]._value } }) diff --git a/src/views/Archive/index.vue b/src/views/Archive/index.vue index 745f391..9e00435 100644 --- a/src/views/Archive/index.vue +++ b/src/views/Archive/index.vue @@ -54,7 +54,7 @@ > <el-option v-for="item in categoryOptions" - :key="item.value" + :key="item.key" :label="item.value" :value="item.key" > @@ -551,6 +551,7 @@ > <template slot-scope="scope"> <el-link + v-if="matchState(scope, /[]/)" @click="setAttatchDetail(scope.$index, scope.row)" class="elLink" >{{ $t('common.see') }}</el-link> @@ -1207,6 +1208,15 @@ this.signGetPublicKey(); }, methods: { + matchState(state = "", reg) { + var row = state.row; + var name = row.name; + if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) { + return true; + } + + return false; + }, // 闄勪欢=>琛ㄦ牸閫夋嫨 handleAttatchChange(val) { this.attacgSelection = val; @@ -1967,14 +1977,19 @@ return; } var val = data.result; - val = val.filter((res) => { + if (val) { + val = val.filter((res) => { + res.mold = "鏁版嵁搴�" + res.isShow = false + return res; + }) + this.listData.count = data.count; + this.monthdata = data.result; + } else { + this.listData.count = 0; + this.monthdata = []; + } - res.mold = "鏁版嵁搴�" - res.isShow = false - return res; - }) - this.listData.count = data.count; - this.monthdata = data.result; }, //鏌ヨ鏂囦欢鏁版嵁 async getQueryFileData() { @@ -1996,16 +2011,22 @@ this.$message.error('鏂囦欢鏁版嵁鍒楄〃璋冪敤澶辫触'); } var val = data.result; - val = val.filter((res) => { - var type = "." + res.type; - res.name = res.name.replaceAll(type, "") - res.mold = "鏂囦欢" - res.isShow = false - return res; - }) + if (val) { + val = val.filter((res) => { + var type = "." + res.type; + res.name = res.name.replaceAll(type, "") + res.mold = "鏂囦欢" + res.isShow = false + return res; + }) - this.monthdata = val; - this.listData.count = data.count; + this.monthdata = val; + this.listData.count = data.count; + } else { + this.monthdata = []; + this.listData.count = 0; + } + }, //鏌ヨ鏁版嵁 getAllTabesData() { @@ -2035,6 +2056,7 @@ if (data.code != 200) { this.$message.error('璧勬枡绫诲埆鍒楄〃璋冪敤澶辫触'); } + this.categoryOptions = data.result; }, //鍏抽敭瀛楁煡璇� @@ -2050,7 +2072,9 @@ }, //璧勬枡绫诲埆涓嬫媺妗嗗�兼敼鍙樿Е鍙� categorySelectChange(model, prop, options) { + this.getAllTabesData(); + }, // 椤圭洰鍚嶇О涓嬫媺妗嗗�兼敼鍙樿Е鍙� itemSelectChange(model, prop, options) { diff --git a/src/views/datamanage/SpatialData.vue b/src/views/datamanage/SpatialData.vue index 51325bf..d472862 100644 --- a/src/views/datamanage/SpatialData.vue +++ b/src/views/datamanage/SpatialData.vue @@ -112,7 +112,7 @@ <div class="dividing-line"></div> <div class="table_box" - style="height:calc(100% - 130px)" + style="height:calc(100% - 130px); " > <!-- border--> <!-- ref="filterTable"--> @@ -125,7 +125,7 @@ :data="tableData" style="width: 100% ;" border - height="100% " + height="100%" > <el-table-column type="selection" @@ -148,7 +148,7 @@ align="center" ></el-table-column> <el-table-column - min-width="180" + min-width="240" :label="$t('common.operate')" > <template slot-scope="scope"> @@ -162,8 +162,14 @@ plain size="small" @click="getAttachTable(scope.$index, scope.row)" - style="margin-left: 20px; " >{{$t('common.enclosure')}}</el-button> + <el-button + plain + size="small" + type="info" + v-if="matchState1(scope, /[]/)" + @click="getAttributeTable(scope.$index, scope.row)" + >{{$t('common.attribute')}}</el-button> </template> </el-table-column> </el-table> @@ -227,7 +233,7 @@ :title="$t('common.attachinform')" :visible.sync="dialogFormVisible" > - <div style="height: 500px; overflow: auto"> + <div style="height:68vh"> <el-form :model="formInline" class="demo-form-inline" @@ -274,57 +280,49 @@ <!-- <el-col :span="3"> <el-link class="elLink" :underline="false" >{{$t('common.reset')}}</i></el-link></el-col> --> </el-row> </el-form-item> - <el-form-item> - <el-table - :data="tableAttach" - ref="filterTable" - height="calc(100% - 100px)" - border - style="width: 100%" - @selection-change="handleAttatchChange" - > - <el-table-column - type="selection" - width="55" - /> - <el-table-column - width="60" - type="index" - :label="$t('common.index')" - /> - <el-table-column - prop="date" - :label="$t('common.fileNme')" - /> - - <el-table-column - prop="name" - :label="$t('common.filePath')" - /> - - </el-table> - </el-form-item> - <!-- <el-form-item> - - <el-row :gutter="20"> - <el-col - :span="12" - :offset="8" - > - <el-button - type="primary" - size="small" - @click="dialogFormVisible = false" - >纭</el-button> - <el-button - type="info" - size="small" - @click="dialogFormVisible = false" - >鍙栨秷</el-button> - </el-col> - </el-row> - </el-form-item> --> </el-form> + <el-table + :data="tableAttach" + ref="filterTable" + height="calc(100% - 130px)" + border + style="width: 100%" + @selection-change="handleAttatchChange" + > + <el-table-column + type="selection" + width="70" + /> + <el-table-column + width="60" + type="index" + :label="$t('common.index')" + /> + <el-table-column + prop="name" + :label="$t('common.fileNme')" + /> + + <el-table-column + prop="sizes" + :label="$t('common.size')" + :formatter="statSizeChange" + /> + <el-table-column + align="center" + :label="$t('common.operate')" + min-width="100" + > + <template slot-scope="scope"> + <el-link + v-if="matchState(scope, /[]/)" + @click="setAttatchDetail(scope.$index, scope.row)" + class="elLink" + >{{ $t('common.see') }}</el-link> + + </template> + </el-table-column> + </el-table> </div> </el-dialog> <el-dialog @@ -413,6 +411,45 @@ <map-sdk v-if='showMapVisible'></map-sdk> </div> </el-dialog> + <el-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" + > + <img + style="width:100%; height:100%" + :src="dialog.src" + alt="" + /> + </div> + </el-dialog> + <el-dialog + :title="attribute.name" + :append-to-body="false" + :visible.sync="AttributedialogVisible" + width="70%" + :close-on-click-modal="false" + > + + </el-dialog> </div> </template> @@ -461,30 +498,6 @@ }, fromSqlflag: false, tree: [ - { - tabDesc: "鍩虹鏁版嵁", - label: "鍩虹鏁版嵁", - value: "BD", - ns: "bd", - id: 1, - children: [], - }, - { - id: 2, - tabDesc: "涓氬姟鏁版嵁", - label: "涓氬姟鏁版嵁", - value: "BS", - ns: "bs", - children: [], - }, - { - id: 3, - tabDesc: "鍏冩暟鎹�", - label: "鍏冩暟鎹�", - value: "MD", - ns: "md", - children: [], - }, ], tableAttach: [], filedsOption: [], @@ -549,6 +562,19 @@ eventid: null, }, filterText: "", + dialog: { + dialogVisible: false, + isPdf: false, + isJpg: false, + src: '' + }, + AttributedialogVisible: false, + attribute: { + name: null, + pageIndex: 1, + pageSize: 10, + count: 0, + } }; }, created() { @@ -564,6 +590,30 @@ }, methods: { + getAttributeTable(idnex, row) { + this.attribute.name = row.workname; + this.AttributedialogVisible = true; + }, + matchState1(state = "", reg) { + var row = state.row; + if ( + this.listData.name == "ssurveyworksite" + ) { + return true; + } + return false; + }, + statSizeChange(row, column) { + return this.stateFormatSizes(row.sizes) + }, + stateFormatSizes(res) { + if (res >= 1024) { + const val = parseFloat(res / 1024).toFixed(3); + return val + ' GB'; + } else { + return res + ' MB'; + } + }, filterNode(value, data) { if (!value) return true; return data.label.indexOf(value) !== -1; @@ -593,6 +643,45 @@ this.$store.state.mapPopBoolean = false; this.$store.state.mapPopBoxFlag = null; }, + + refreshAttatchDetail() { + this.dialog.src = ""; + this.dialog.dialogVisible = false; + this.dialog.isPdf = false; + this.dialog.isJpg = false; + }, + //闄勪欢鏌ョ湅 + setAttatchDetail(index, row) { + + this.refreshAttatchDetail() + var name = row.name; + if (name.indexOf('.pdf') != -1) { + this.dialog.dialogVisible = true; + this.dialog.isPdf = true; + var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken(); + this.dialog.src = url + } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) { + this.dialog.dialogVisible = true; + this.dialog.isJpg = true; + var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken(); + this.dialog.src = url + } + }, + + matchState(state = "", reg) { + var row = state.row; + var name = row.name; + + if (name) { + if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) { + return true; + } + } + + return false; + }, + + async setAttachDel() { var std = []; for (var i in this.attacgSelection) { @@ -689,26 +778,43 @@ if (data.code != 200) { this.$message.error("鍒楄〃璋冪敤澶辫触"); } - var option = data.result; + var val = data.result; - for (var i in option) { - var val_Data = option[i]; - val_Data.id = "1" + i; - // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")" - val_Data.label = val_Data.tabDesc; - option[i].id = parseInt(option[i].id); - for (var j in this.tree) { - if (this.tree[j].ns == option[i].ns) { - this.tree[j].children.push(val_Data); - } + // for (var i in option) { + // var val_Data = option[i]; + // val_Data.id = "1" + i; + // // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")" + // val_Data.label = val_Data.tabDesc; + // option[i].id = parseInt(option[i].id); + // for (var j in this.tree) { + // if (this.tree[j].ns == option[i].ns) { + // this.tree[j].children.push(val_Data); + // } + // } + + // } + var std = []; + val.filter((item) => { + if (std.indexOf(item.bak) == -1) { + std.push(item.bak); + this.tree.push( + { + val: item.bak, + label: item.tabDesc, + children: [], + } + ) } - // if (option[i].ns == 'bd') { + }); - // this.tree[0].children.push(val_Data); - // } else { - // this.tree[1].children.push(val_Data); - // } - } + this.tree.filter((item) => { + val.filter((res) => { + if (item.val === res.bak) { + res.label = res.tabDesc + item.children.push(res) + } + }) + }) this.handleNodeClick(this.tree[0].children[0]); }, //鎺堟潈绠$悊 @@ -725,10 +831,12 @@ handleNodeClick(data) { //鍒ゆ柇鐐瑰嚮鏄惁涓哄瓙鑺傜偣 if (data.children != null) return; + this.listData.name = data.entity; //瑕佹煡璇㈣〃鏍肩被鍨嬶紱 this.getClickTable = data; this.listData.pageIndex = 1; this.listData.pageSize = 10; + this.count = 0; this.upAttach.tabName = data.ns + "." + data.tab; this.filedsLayer = this.getCollapseDomFiled(); //鑾峰彇姣忎釜琛ㄥ瓧娈靛悕绉板強闃堝�� @@ -1205,6 +1313,11 @@ border: 1px solid #dcdfe6; } } + .pdfClass { + height: 70vh; + width: 100%; + position: relative; + } } .table_box2 { -- Gitblit v1.9.3