From 7a83906e6714edea1568d10acb4eb0bc1aae81c6 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期二, 10 十月 2023 14:10:58 +0800 Subject: [PATCH] 资源管理,令牌管理页面修改 --- src/views/datamanage/resourceManagement.vue | 469 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 418 insertions(+), 51 deletions(-) diff --git a/src/views/datamanage/resourceManagement.vue b/src/views/datamanage/resourceManagement.vue index b4c7c55..89cdf11 100644 --- a/src/views/datamanage/resourceManagement.vue +++ b/src/views/datamanage/resourceManagement.vue @@ -24,17 +24,85 @@ > <i :title="$t('common.iquery')" slot="suffix" - @click="setListDataStart" + @click="getResTableData" class="el-icon-search" style="padding-right: 8px" ></i></el-input> + </el-form-item> + <!-- 鏈嶅姟绫诲埆 --> + <el-form-item> + <el-select + size="small" + v-model="formInline.category" + :placeholder="$t('dataManage.layerObj.prompt18')" + @change="getResTableData" + > + <el-option + v-for="item in serviceType" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <!-- 鏁版嵁绫诲瀷 --> + <el-form-item> + <el-select + size="small" + v-model="formInline.data" + :placeholder="$t('dataManage.layerObj.prompt8')" + @change="getResTableData" + > + <el-option + v-for="item in dataType" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <!-- 鏈嶅姟绫诲埆 --> + <el-form-item> + <el-select + size="small" + v-model="formInline.type" + :placeholder="$t('dataManage.layerObj.prompt3')" + @change="getResTableData" + > + <el-option + v-for="item in dataTypes" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <!-- 鐘舵�� --> + <el-form-item> + <el-select + size="small" + v-model="formInline.status" + :placeholder="$t('dataManage.layerObj.prompt19')" + @change="getResTableData" + > + <el-option + v-for="item in statusType" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> </el-form-item> <el-form-item style="float: right;"> <el-button v-if="menuStatus.insert" icon="el-icon-edit" type="success" - @click="insertDialog = true" + @click="setInsertTableData" size="small" >{{ $t('common.append') }} </el-button> @@ -67,6 +135,7 @@ border height="calc(100% - 10px)" @selection-change="handleSelectionChange" + @cell-dblclick="copyText" > <el-table-column type="selection" @@ -81,15 +150,15 @@ <el-table-column align="center" prop="cnName" - :label="$t('dataManage.layerObj.layerName')" + :label="$t('dataManage.layerObj.resourceName')" width="150" /> - <el-table-column + <!-- <el-table-column align="center" prop="enName" :label="$t('dataManage.layerObj.englishName')" width="170" - /> + /> --> <el-table-column align="center" prop="status" @@ -100,15 +169,22 @@ <el-table-column align="center" prop="category" - :label="$t('dataManage.layerObj.serviceType')" + :label="$t('dataManage.layerObj.firm')" :formatter="setResCategory" width="150" /> <el-table-column align="center" prop="type" - :label="$t('dataManage.layerObj.dataType')" + :label="$t('dataManage.layerObj.serviceType')" :formatter="setResType" + width="150" + /> + <el-table-column + align="center" + prop="data" + :label="$t('dataManage.layerObj.dataType')" + :formatter="setResData" width="150" /> <el-table-column @@ -140,6 +216,7 @@ prop="proxy" :label="$t('dataManage.layerObj.proxyAddress')" width="300" + :formatter="formatProxy" /> <el-table-column align="center" @@ -149,7 +226,7 @@ /> <el-table-column align="center" - prop="createUser" + prop="createName" :label="$t('dataManage.vmobj.createonuser')" width="200" /> @@ -162,7 +239,7 @@ /> <el-table-column align="center" - prop="updateUser" + prop="updateName" :label="$t('dataManage.vmobj.updateonuser')" width="200" /> @@ -181,7 +258,7 @@ /> <el-table-column :label="$t('common.operate')" - width="150" + width="200" > <template slot-scope="scope"> <el-button @@ -190,6 +267,12 @@ type="warning" plain >{{ $t('common.update') }}</el-button> + <el-button + size="small" + v-show="scope.row.status != 0" + plain + @click="setScopePreview(scope.row)" + >{{ $t('common.preview') }}</el-button> </template> </el-table-column> @@ -231,14 +314,8 @@ class="insertWidth" ></el-input> </el-form-item> - <el-form-item :label="$t('dataManage.layerObj.englishName')"> - <el-input - v-model="insertData.enName" - :placeholder="$t('dataManage.layerObj.prompt14')" - class="insertWidth" - ></el-input> - </el-form-item> - <el-form-item :label="$t('dataManage.layerObj.serviceType')"> + + <el-form-item :label="$t('dataManage.layerObj.firm')"> <el-select class="insertWidth" v-model="insertData.category" @@ -256,8 +333,9 @@ <el-form-item :label="$t('dataManage.layerObj.dataType')"> <el-select class="insertWidth" - v-model="insertData.type" - :placeholder="$t('dataManage.layerObj.prompt8')" + v-model="insertData.data" + @change="setCategoryTypeChange" + :placeholder="$t('dataManage.layerObj.prompt3')" > <el-option v-for="item in dataType" @@ -269,11 +347,30 @@ </el-select> </el-form-item> - <el-form-item :label="$t('dataManage.layerObj.tableName')"> + <el-form-item :label="$t('dataManage.layerObj.serviceType')"> + <el-select + class="insertWidth" + v-model="insertData.type" + :placeholder="$t('dataManage.layerObj.prompt8')" + > + <el-option + v-for="item in categoryType" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + + <el-form-item + v-if="insertData.category == 2" + :label="$t('dataManage.layerObj.layerName')" + > <el-input v-model="insertData.tab" class="insertWidth" - :placeholder="$t('dataManage.layerObj.prompt12')" + :placeholder="$t('dataManage.layerObj.prompt1')" ></el-input> </el-form-item> <el-form-item :label="$t('dataManage.layerObj.serviceAddress')"> @@ -302,11 +399,15 @@ <el-radio v-model="insertData.status" label="0" - >{{$t('dataManage.layerObj.isStop')}}</el-radio> + >{{$t('dataManage.layerObj.disable')}}</el-radio> <el-radio v-model="insertData.status" label="1" - > {{$t('dataManage.layerObj.isEnable')}}</el-radio> + > {{$t('dataManage.layerObj.enableOriginalAddress')}}</el-radio> + <el-radio + v-model="insertData.status" + label="2" + > {{$t('dataManage.layerObj.enableProxy')}}</el-radio> </div> </el-form-item> <el-form-item :label="$t('dataManage.layerObj.descr')"> @@ -361,14 +462,14 @@ class="insertWidth" ></el-input> </el-form-item> - <el-form-item :label="$t('dataManage.layerObj.englishName')"> + <!-- <el-form-item :label="$t('dataManage.layerObj.englishName')"> <el-input v-model="editData.enName" :placeholder="$t('dataManage.layerObj.prompt14')" class="insertWidth" ></el-input> - </el-form-item> - <el-form-item :label="$t('dataManage.layerObj.serviceType')"> + </el-form-item> --> + <el-form-item :label="$t('dataManage.layerObj.firm')"> <el-select class="insertWidth" v-model="editData.category" @@ -386,11 +487,27 @@ <el-form-item :label="$t('dataManage.layerObj.dataType')"> <el-select class="insertWidth" + v-model="editData.data" + @change="setEdtitTypeChange" + :placeholder="$t('dataManage.layerObj.prompt3')" + > + <el-option + v-for="item in dataType" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item :label="$t('dataManage.layerObj.serviceType')"> + <el-select + class="insertWidth" v-model="editData.type" :placeholder="$t('dataManage.layerObj.prompt8')" > <el-option - v-for="item in dataType" + v-for="item in categoryType" :key="item.value" :label="item.label" :value="item.value" @@ -432,11 +549,15 @@ <el-radio v-model="editData.status" label="0" - >{{$t('dataManage.layerObj.isStop')}}</el-radio> + >{{$t('dataManage.layerObj.disable')}}</el-radio> <el-radio v-model="editData.status" label="1" - > {{$t('dataManage.layerObj.isEnable')}}</el-radio> + > {{$t('dataManage.layerObj.enableOriginalAddress')}}</el-radio> + <el-radio + v-model="editData.status" + label="2" + > {{$t('dataManage.layerObj.enableProxy')}}</el-radio> </div> </el-form-item> <el-form-item :label="$t('dataManage.layerObj.descr')"> @@ -472,10 +593,37 @@ </span> </div> </el-dialog> + + <!-- 鍦板潃棰勮 --> + <el-dialog + :title="$t('common.preview')" + :class="isFullscreen ? '' : 'dialogClass_his'" + custom-class="handleDialogClass" + width="73.4%" + :fullscreen="isFullscreen" + v-if="prevDialog" + :visible.sync="prevDialog" + :show-close="false" + :close-on-click-modal="false" + :close-on-press-escape="false" + > + <dialog-header + slot="title" + :dialog-tittle="$t('common.preview')" + :fullscreen="isFullscreen" + @handle-closed="handleClose" + @is-fullscreen="onFullscreen" + ></dialog-header> + <div :class="{'fullscreen1':isFullscreen}"> + <mapview v-if="showMapView"></mapview> + </div> + </el-dialog> </div> </template> <script> import MyBread from "../../components/MyBread.vue"; +import dialogHeader from './dialogHeader.vue' +import server from '../../components/js/server.js' import { getPerms, select_Res_ByPageAndCount, @@ -483,23 +631,28 @@ res_deletes, res_updates, res_update, + token_insertNewToken } from "../../api/api"; import $ from 'jquery' import { getToken } from '../../utils/auth'; -import { serve_type, data_type } from './js/layerManage.js' +import { serve_type, data_type, category_type } from './js/layerManage.js' import { json } from "body-parser"; import { flatten } from '@turf/turf'; - +import mapview from '../../components/MapView/moonMap.vue' export default { name: "catalogueManage", components: { - MyBread, + MyBread, mapview, 'dialog-header': dialogHeader, }, data() { return { formInline: { - name: null + name: null, + type: null, + data: null, + category: null, + status: null }, menuStatus: { delete: false, @@ -520,11 +673,33 @@ multipleSelection: [], editData: {}, copyData: null, - insertData: {}, + insertData: { + status: "2", + category: null, + type: null, + data: null + }, editDialog: false, insertDialog: false, dataType: [], - serviceType: [] + dataTypes: [], + serviceType: [], + categoryType: [], + insertDisabled: false, + editDisabled: false, + isFullscreen: false, + prevDialog: false, + showMapView: false, + statusType: [ + { + label: '绂佺敤', value: 0 + }, + { + label: '鍚敤鍘熷鍦板潃', value: 1 + }, { + label: '鍚敤浠g悊鍦板潃', value: 2 + } + ], resToken: null, }; }, watch: { @@ -535,7 +710,37 @@ window.removeEventListener("resize", this.onResize); }, methods: { + async getResToken() { + if (this.$store.state.resToken) { + this.resToken = this.$store.state.resToken + } else { + const data = await token_insertNewToken({ + type: 1, + min: 43200 + }); + if (data.code == 200) { + this.$store.state.resToken = data.result.token; + this.resToken = data.result.token; + } + } + }, + + //鏄惁涓哄叏灞忓嚱鏁� + onFullscreen(fullscreen) { + this.isFullscreen = fullscreen; + }, + //棰勮寮圭獥鍏抽棴 + handleClose() { + this.prevDialog = false + this.showMapView = false; + + }, async setEditConfirm() { + if (this.editData.url.indexOf('?') > -1) { + var val = this.editData.url.split("?"); + this.editData.url = val[0]; + this.editData.args = this.editData.args + val[1]; + } const data = await res_update(this.editData); if (data.code == 200) { this.$message({ @@ -566,9 +771,73 @@ .catch(_ => { }); }, setEmptyData() { - this.formInline.name = "" + this.formInline = { + name: null, + type: null, + data: null, + category: null, + status: null + } this.setListDataStart() }, + setInsertTableData() { + this.insertData.category = this.serviceType[0].value + this.insertData.data = this.dataType[0].value + this.setServeTypeChange(this.dataType[0].children) + this.insertDialog = true; + + }, + setServeTypeChange(res) { + var std = []; + for (var i in res) { + for (var j in serve_type) { + if (serve_type[j].value == res[i]) { + std.push({ + value: serve_type[j].value, + label: serve_type[j].name, + }) + } + } + } + this.categoryType = std + this.insertData.type = this.categoryType[0].value + }, + + setCategoryTypeChange(item) { + var filter = this.dataType.filter(res => { + if (res.value == item) { + return res + } + }) + this.setServeTypeChange(filter[0].children) + }, + setEdtitTypeChange(item) { + var filter = this.dataType.filter(res => { + if (res.value == item) { + return res + } + }) + this.setEditServeTypeChange(filter[0].children) + }, + setEditServeTypeChange(res) { + var std = []; + for (var i in res) { + for (var j in serve_type) { + if (serve_type[j].value == res[i]) { + std.push({ + value: serve_type[j].value, + label: serve_type[j].name, + }) + } + } + } + this.categoryType = std + this.editData.type = this.categoryType[0].value + }, + + + + async setDelTableData() { if (this.multipleSelection.length <= 0) { return this.$message('璇烽�夋嫨瑕佸垹闄ょ殑璧勬簮鏁版嵁'); @@ -590,7 +859,9 @@ }, closeInsertDialog() { this.insertDialog = false; - this.insertData = {} + this.insertData = { + status: '2' + } }, setInsertCannel() { var that = this; @@ -601,6 +872,13 @@ .catch(_ => { }); }, async setInsertConfirm() { + if (this.insertData.url.indexOf('?') > -1) { + var val = this.insertData.url.split("?"); + this.insertData.url = val[0]; + this.insertData.args = val[1] + this.insertData.args; + } + + this.insertData.status = parseInt(this.insertData.status) const data = await res_insert(this.insertData); if (data.code == 200) { this.$message({ @@ -619,27 +897,67 @@ optionsStart() { var std = []; var ste = []; - for (var i in serve_type) { + var str = []; + for (var i in category_type) { ste.push({ + value: category_type[i].value, + label: category_type[i].name, + }) + } + this.serviceType = ste; + + for (var i in data_type) { + str.push({ + value: data_type[i].value, + label: data_type[i].name, + children: data_type[i].children + }) + } + this.dataType = str; + for (var i in serve_type) { + std.push({ value: serve_type[i].value, label: serve_type[i].name, }) } - this.serviceType = std; - for (var i in data_type) { - std.push({ - value: data_type[i].value, - label: data_type[i].name, - }) - } - this.dataType = ste; + this.dataTypes = std; }, setScopeEdit(row) { this.copyData = JSON.parse(JSON.stringify(row)); this.editData = JSON.parse(JSON.stringify(row)); this.editData.status = this.editData.status.toString() + this.editData.category = parseInt(this.editData.category) + this.editData.type = parseInt(this.editData.type) + if (this.editData.data) { + this.editData.data = parseInt(this.editData.data) + } this.editDialog = true }, + setScopePreview(row) { + this.prevDialog = true; + this.showMapView = true; + setTimeout(() => { + server.addLayer(row) + }, 1000); + }, + formatProxy(row, column) { + var token = this.resToken + if (row.proxy && row.proxy.indexOf('{token}') > -1) { + var val = row.proxy.replaceAll('{token}', token) + return BASE_URL + val + } + }, + copyText(row, column, cell, event) { + // 鍙屽嚮澶嶅埗 + let save = function (e) { + e.clipboardData.setData('text/plain', event.target.innerText); + e.preventDefault(); //闃绘榛樿琛屼负 + } + document.addEventListener('copy', save);//娣诲姞涓�涓猚opy浜嬩欢 + document.execCommand("copy");//鎵цcopy鏂规硶 + this.$message({ message: '澶嶅埗鎴愬姛', type: 'success' })//鎻愮ず + }, + //鏍煎紡鍖栧垪琛� formatData(row, column) { let data = row[column.property]; @@ -701,6 +1019,37 @@ break; } }, + setResData(row, column) { + switch (row.data) { + case 1: + return "鏁板瓧姝e皠褰卞儚鍥�" + break; + case 2: + return "鍦烘櫙鍦板舰鏁版嵁" + break; + case 3: + return "鏁板瓧楂樼▼妯″瀷锛堟檿娓插浘锛�" + break; + case 4: + return "鍗曟尝娈垫爡鏍兼暟鎹�" + break; + case 5: + return "澶氬厜璋辨爡鏍兼暟鎹�" + break; + case 6: + return "楂樺厜璋辨爡鏍兼暟鎹�" + break; + case 7: + return "鐭㈤噺鍥惧眰" + break; + case 8: + return "涓夌淮妯″瀷" + break; + default: + return "" + break; + } + }, setResCategory(row, column) { switch (row.category) { case 0: @@ -721,15 +1070,16 @@ } }, setResStatus(row, column) { + switch (row.status) { case 0: - return "鍋滅敤" + return "绂佺敤" break; case 1: - return "鍚敤" + return "鍚敤鍘熷鍦板潃" break; case 2: - return "鍚敤浠g悊" + return "鍚敤浠g悊鍦板潃" break; default: return "" @@ -737,7 +1087,11 @@ } }, async getResTableData() { - this.listData.name = this.formInline.name + this.listData.name = this.formInline.name; + this.listData.data = this.formInline.data; + this.listData.type = this.formInline.type; + this.listData.category = this.formInline.category; + this.listData.status = this.formInline.status; const data = await select_Res_ByPageAndCount(this.listData); if (data.code != 200) { return this.$message({ @@ -745,6 +1099,7 @@ type: "warning", }); } + this.tableData = data.result; this.listData.count = data.count; }, @@ -817,10 +1172,12 @@ }, mounted() { window.addEventListener("resize", this.onResize); + this.getResToken(); this.calHeight(); this.getPerms(); this.setListDataStart(); this.optionsStart(); + }, }; @@ -848,6 +1205,10 @@ } } } +.fullscreen1 { + width: 100%; + height: 94vh; +} /deep/ .el-input__suffix { top: 50%; transform: translateY(-50%); @@ -855,6 +1216,12 @@ .insertWidth { width: calc(100% - 200px); } +/deep/.el-dialog__body { + padding: 10px !important; +} +/deep/.el-dialog__header { + padding: 10px !important; +} </style> <style > .el-message-box { -- Gitblit v1.9.3