From 50f52beb0ed100105166f62027cd0b15e6b596dc Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期六, 12 十一月 2022 15:02:01 +0800 Subject: [PATCH] 重新 --- src/views/Archive/index.vue | 435 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 300 insertions(+), 135 deletions(-) diff --git a/src/views/Archive/index.vue b/src/views/Archive/index.vue index 8a4a421..b458064 100644 --- a/src/views/Archive/index.vue +++ b/src/views/Archive/index.vue @@ -5,6 +5,7 @@ <div class="title_active">{{ $t('archive.name') }}</div> <el-divider /> <el-tree + ref="tree" :data="tree" :props="defaultProps" show-checkbox @@ -14,165 +15,299 @@ </div> <div class="right_active"> <el-card class="arch_card"> - <el-row :gutter="20"> - <el-col :span="6"></el-col> - <el-col :span="4" - ><div style="text-align: right; margin-top: 6px"> - {{ $t('archive.keyword') }}: - </div> - </el-col> - <el-col :span="4"> - <el-input :placeholder="$t('common.pleaseInput')" - /></el-col> - <el-col :span="4" - ><el-button type="primary">{{ $t('common.iquery') }}</el-button> - <el-button v-if="archStatus.download" type="primary">{{ - $t('common.download') - }}</el-button> - </el-col> - <el-col :span="6"> </el-col> - </el-row> + <div> + <el-form :inline="true" :model="formInline" class="demo-form-inline"> + <el-form-item> + <el-input + v-model="formInline.name" + placeholder="璇疯緭鍏�" + ></el-input> + </el-form-item> + <el-form-item> + <el-button plain @click="getArchTableData">鏌ヨ</el-button> + </el-form-item> + <el-form-item> + <el-button plain>閲嶇疆</el-button> + </el-form-item> + <el-form-item> + <el-button plain>涓嬭浇</el-button> + </el-form-item> + <el-form-item> + <el-button plain @click="showDialogBox">绌洪棿鏌ヨ</el-button> + </el-form-item> + </el-form> + </div> <el-divider /> - <el-card shadow="never" class="middle_card"> - <el-table :data="tableData" style="width: 10000px" stripe> - <el-table-column - prop="name" - :label="$t('archive.uname')" - width="180" - /> - <el-table-column - prop="type" - sortable - :label="$t('archive.type')" - width="180" - /> - <el-table-column - prop="count" - sortable - :label="$t('archive.modifications')" - width="180" - /> - <el-table-column - prop="timer" - sortable - :label="$t('archive.creationtime')" - /> - <el-table-column - prop="state" - :label="$t('archive.state')" - width="180" - /> - </el-table> - </el-card> - <el-divider /> - - <el-pagination - :currentPage="currentPage4" - :page-size="pageSize4" - :page-sizes="[10, 20, 50, 100]" - :small="small" - :disabled="disabled" - :background="background" - layout="total, sizes, prev, pager, next, jumper" - :total="400" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> + <div class="centerBox"> + <el-collapse v-model="activeNames" @change="handleChange" accordion> + <el-collapse-item + v-for="(item, index) in companyList" + :key="index" + :name="item.entity" + :title="item.tabDesc" + > + <div class="centerTable"> + <el-table :data="tableData" height="550" border stripe> + <el-table-column type="selection" width="55" /> + <el-table-column + align="center" + type="index" + label="搴忓彿" + width="50" + /> + <el-table-column + v-for="(item, index) in attributeData" + :key="index" + :label="item.alias" + :prop="item.field" + show-overflow-tooltip + align="center" + ></el-table-column> + </el-table> + <el-divider /> + <el-pagination + :current-page="listdata.pageIndex" + :page-sizes="[10, 20, 30, 40]" + :page-size="listdata.pageSize" + :small="small" + :disabled="disabled" + :background="background" + layout="total, sizes, prev, pager, next, jumper" + :total="count" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + </el-collapse-item> + </el-collapse> + </div> </el-card> </div> + + <el-dialog + title="绌洪棿鏌ヨ" + :visible.sync="dialogVisible" + width="92%" + style="margin-left: 16%" + top="5vh" + :before-close="handleClose" + > + <div style="height: 720px; width: 100%"> + <mapsdk></mapsdk> + </div> + </el-dialog> </div> </template> <script> +import mapsdk from '../../components/mapsdk.vue'; +import { + inquiry_SelectTabs, + dataLib_selectFields, + dataLib_selectByPage, + dataLib_selectDomains, +} from '../../api/api.js'; export default { + components: { + mapsdk, + }, data() { return { + dialogVisible: false, + activeNames: null, + listdata: { + pageIndex: 1, + pageSize: 10, + filter: null, + name: null, + wkt: null, + }, + companyList: [], + formInline: {}, + count: 0, tree: [ { - label: '鏂囩尞', - children: [ - { - label: '绠¢亾鏍囧噯鏂囩尞', - url: '', - }, - { - label: '宸ヤ笟绠¢亾宸ョ▼鏂藉伐鍙婇獙鏀惰鑼�', - url: '', - }, - { - label: '缁煎悎绠$嚎璁捐鏍囧噯', - url: '', - }, - ], + tabDesc: '鍩虹鏁版嵁', + value: 'BD', + children: [], }, { - label: '鍥剧焊', //label瀵瑰簲鐖剁骇鏍囩 - children: [ - { - label: 'XXX绠$嚎璁捐鍥剧焊', - url: ' ', - }, - { - label: 'XXXXXX绠$嚎璁捐鍥�', - url: ' ', - }, - { - label: 'XXXXX绠$嚎璁捐鍥�', - url: ' ', - }, - ], - }, - { - label: '鏁版嵁', //label瀵瑰簲鐖剁骇鏍囩 - children: [ - { - label: '绠¢亾', - url: ' ', - }, - { - label: '闃�闂�', - url: ' ', - }, - { - label: '娑堣垂璁惧', - url: ' ', - }, - ], + tabDesc: '涓氬姟鏁版嵁', + value: 'BS', + children: [], }, ], defaultProps: { chilren: 'children', //"children"鍐呯殑姣忎釜瀵硅薄瑙f瀽涓轰竴涓瓙椤�; - label: 'label', //鎵�鏈�"label"鎵�鍦ㄧ殑瀵硅薄瑙f瀽涓轰竴涓埗椤� + label: 'tabDesc', //鎵�鏈�"label"鎵�鍦ㄧ殑瀵硅薄瑙f瀽涓轰竴涓埗椤� }, - tableData: [ - { - timer: '2016-05-01', - name: 'Tom', - count: '3', - type: '涓氬姟鍥惧眰', - state: 'x', - }, - { - timer: '2016-05-02', - name: 'Tom', - count: '2', - type: '涓氬姟鍥惧眰', - state: 'x', - }, - { - timer: '2016-05-03', - name: 'Tom', - count: '1', - type: '涓氬姟鍥惧眰', - state: 'x', - }, - ], + attributeData: [], + tableData: [], archStatus: { download: false, }, + archOption: [], + queryLayer: null, }; }, + methods: { + handleClose() { + this.dialogVisible = false; + this.$store.state.mapMenuBoolean = false; + this.$store.state.mapMenuBoxFlag = null; + this.$store.state.mapPopBoolean = false; + this.$store.state.mapPopBoxFlag = null; + }, + showDialogBox() { + this.$store.state.mapMenuBoolean = true; + this.$store.state.mapMenuBoxFlag = '1'; + this.dialogVisible = true; + }, + //鑾峰彇琛ㄦ牸鏁版嵁 + getArchTableData() { + this.companyList = []; + this.activeNames = null; + var valTree = this.$refs.tree.getCheckedNodes(); + if (valTree.length == 0) { + this.$message.error('璇烽�夋嫨瑕佹煡璇㈢殑鍥惧眰璧勬枡!'); + return; + } + for (var i in valTree) { + this.listdata.name = valTree[i].entity; + var filedData = this.getCollapseDomFiled(); + this.archOption.push({ + name: valTree[i].entity, + fileds: filedData, + table: this.getCollapseTable(filedData), + }); + } + + this.companyList = valTree; + }, + //鑾峰彇姣忎釜琛ㄥ瓧娈靛悕绉板強闃堝�� + async getCollapseDomFiled() { + //鏌ヨ瀛楁淇℃伅; + const fileds = await dataLib_selectFields({ + name: this.listdata.name, + }); + if (fileds.code != 200) { + this.$message.error('璋冪敤鍒楄〃澶辫触,璇疯仈绯诲伐浣滀汉鍛�!'); + return; + } + //鏌ヨ闃堝�间俊鎭紱 + const domains = await dataLib_selectDomains({ + name: this.listdata.name, + }); + if (domains.code != 200) { + this.$message.error('璋冪敤鍒楄〃澶辫触,璇疯仈绯诲伐浣滀汉鍛�!'); + return; + } + var data1 = fileds.result; + var data2 = domains.result; + var std = []; + for (var i in data1) { + if (data1[i].showtype == 1) { + if (data1[i].domainNa != null) { + data1[i].domainNa = this.getDomainNaFild(data1[i].domainNa, data2); + } + std.push(data1[i]); + } + } + return std; + }, + //鍊煎煙瀛楁鍖归厤 + getDomainNaFild(res, result) { + for (var i in result) { + if (result[i].domName == res) { + return result[i].codeDesc; + } + } + return null; + }, + + //鑾峰彇姣忎釜琛ㄧ殑table + async getCollapseTable(res) { + var res_val; + res.then((val) => { + res_val = val; + }); + + if (this.formInline.name != null) { + this.listdata.filter = 'name like ' + this.formInline.name; + } + const fileds = await dataLib_selectByPage(this.listdata); + if (fileds.code != 200) { + this.$message.error('璋冪敤鍒楄〃澶辫触,璇疯仈绯诲伐浣滀汉鍛�!'); + return; + } + for (var i in fileds.result) { + let val_Data = fileds.result[i]; + + for (var j in res_val) { + if (res_val[j].domainNa != null && res_val[j].domainNa != undefined) { + val_Data[res_val[j].field] = res_val[j].domainNa; + } + } + } + return fileds; + }, + + //鎶樺彔闈㈡澘鍒囨崲浜嬩欢 + handleChange(val) { + if (val == '') return; + var that = this; + this.listdata.name = val; + this.listdata.pageSize = 10; + this.listdata.pageIndex = 1; + for (var i in this.archOption) { + if (this.archOption[i].name == val) { + this.queryLayer = this.archOption[i].fileds; + this.archOption[i].fileds.then((res) => { + that.attributeData = res; + }); + this.archOption[i].table.then((res) => { + this.count = res.count; + this.tableData = res.result; + }); + } + } + }, + //鍒嗛〉鐐瑰嚮浜嬩欢 + handleSizeChange(val) { + this.listdata.pageSize = val; + this.listdata.pageIndex = 1; + var res = this.getCollapseTable(this.queryLayer); + res.then((res) => { + this.tableData = res.result; + }); + }, + handleCurrentChange(val) { + this.listdata.pageIndex = val; + var res = this.getCollapseTable(this.queryLayer); + res.then((res) => { + this.tableData = res.result; + }); + }, + //鑾峰彇鏍� + async getTreeData() { + const data = await inquiry_SelectTabs(); + if (data.code != 200) { + this.$message.error('鍒楄〃璋冪敤澶辫触'); + } + var option = data.result; + + for (var i in option) { + var val_Data = option[i]; + val_Data.id = '1' + i; + if (option[i].ns == 'bd') { + this.tree[0].children.push(val_Data); + } else { + this.tree[1].children.push(val_Data); + } + } + }, + //鏉冮檺绠$悊 showArchMenu(res) { switch (res.tag) { case '/download': @@ -190,16 +325,18 @@ this.showArchMenu(permsEntity[i]); } } + this.getTreeData(); }, }; </script> -<style> +<style scped lang="less"> .archive { width: 100%; height: 100%; position: relative; } + .archive .left_active { width: 21%; height: 100%; @@ -215,9 +352,37 @@ width: 100%; height: 100%; } +.archive .centerBox { + max-height: 800px; + overflow: auto; +} + +.archive .centerBox::-webkit-scrollbar { + /*婊氬姩鏉℃暣浣撴牱寮�*/ + width: 10px; /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/ + height: 1px; +} +.archive .centerBox::-webkit-scrollbar-thumb { + /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/ + border-radius: 10px; + -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + background: #e5e5e5; +} +.archive .centerBox::-webkit-scrollbar-track { + /*婊氬姩鏉¢噷闈㈣建閬�*/ + -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + border-radius: 10px; + background: #ffffff; +} + +.archive .centerTable { + height: 600px; +} .archive .arch_card .el-card__body { padding: 10px; + overflow-y: auto; } + .archive .el-divider--horizontal { margin: 10px 0 !important; } -- Gitblit v1.9.3