From ecf3ad202a851caa39660ddfaa16e1bf16565b2e Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期一, 30 十月 2023 13:51:38 +0800 Subject: [PATCH] 图层管理修改 --- src/views/layer/layerSet.vue | 553 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 436 insertions(+), 117 deletions(-) diff --git a/src/views/layer/layerSet.vue b/src/views/layer/layerSet.vue index 4f453fc..5e44712 100644 --- a/src/views/layer/layerSet.vue +++ b/src/views/layer/layerSet.vue @@ -19,34 +19,21 @@ :expand-on-click-node="false" @node-click="handleNodeClick" ref="treeRef" + style="font-size: 16px" /> </div> </div> <div class="edit_box"> <div class="edit_box_btn btnstyle"> - <el-button type="primary" :icon="Plus" @click="insertLayerData(1)" - >鏂板鍚岀骇</el-button - > - <el-button type="primary" :icon="Plus" @click="insertLayerData(2)" - >鏂板瀛愮骇</el-button - > - <el-button - type="primary" - :icon="Delete" - class="delbtn" - @click="delLayer" - >鍒犻櫎</el-button - > - <el-button type="primary" :icon="Top" @click="move(1)" - >鍚戜笂绉诲姩</el-button - > - <el-button type="primary" :icon="Bottom" @click="move(2)" - >鍚戜笅绉诲姩</el-button - > + <el-button type="primary" :icon="Plus" @click="insertLayerData(1)">鏂板鍚岀骇</el-button> + <el-button type="primary" :icon="Plus" @click="insertLayerData(2)">鏂板瀛愮骇</el-button> + <el-button type="primary" :icon="Delete" class="delbtn" @click="delLayer">鍒犻櫎</el-button> + <el-button type="primary" :icon="Top" @click="move(1)">鍚戜笂绉诲姩</el-button> + <el-button type="primary" :icon="Bottom" @click="move(2)">鍚戜笅绉诲姩</el-button> </div> <div class="edit_box_form"> <el-form :model="formInline" label-width="120px"> - <el-form-item label="閫変腑鍥惧眰"> + <el-form-item label="鍥惧眰绫诲瀷"> <el-select style="width: 100%" v-model="formInline.isLayer"> <el-option label="鍥惧眰缁�" value="0"></el-option> <el-option label="鍥惧眰" value="1"></el-option> @@ -60,23 +47,32 @@ @click="setServiceChange('0')" key="0" :class="{ serviceActive: !serviceActive }" - >鍚�</el-button - > + >鍚�</el-button> <el-button size="small" class="serviceButton" @click="setServiceChange('1')" key="1" :class="{ serviceActive: serviceActive }" - >鏄�</el-button - > + >鏄�</el-button> </el-form-item> <el-form-item label="鍥惧眰鍚嶇О"> - <el-input - v-model="formInline.cnName" - placeholder="璇疯緭鍏ュ浘灞傚悕绉�" - /> + <el-input v-model="formInline.cnName" placeholder="璇疯緭鍏ュ浘灞傚悕绉�" /> + </el-form-item> + <!-- 鏈嶅姟绫诲埆 --> + <el-form-item v-show="formInline.isLayer == 1" label="鏈嶅姟绫诲埆"> + <el-select style="width: 100%" v-model="formInline.category" :disabled="serviceActive"> + <el-option + v-for="item in category_type" + :key="item.value" + :label="item.name" + :value="item.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="琛ㄥ悕绉�" v-show="formInline.category == 2"> + <el-input v-model="formInline.tab" placeholder="璇疯緭鍏ヨ〃鍚嶇О" :disabled="serviceActive" /> </el-form-item> <!-- 鏁版嵁绫诲瀷 --> <el-form-item v-show="formInline.isLayer == 1" label="鏁版嵁绫诲瀷"> @@ -91,24 +87,18 @@ :key="item.value" :label="item.label" :value="item.value" - > - </el-option> + ></el-option> </el-select> </el-form-item> <!-- 鏁版嵁绫诲瀷 --> <el-form-item v-show="formInline.isLayer == 1" label="鏈嶅姟绫诲瀷"> - <el-select - style="width: 100%" - v-model="formInline.type" - :disabled="serviceActive" - > + <el-select style="width: 100%" v-model="formInline.type" :disabled="serviceActive"> <el-option v-for="item in dataType" :key="item.value" :label="item.label" :value="item.value" - > - </el-option> + ></el-option> </el-select> </el-form-item> @@ -128,83 +118,144 @@ </el-form> </div> </div> - <el-dialog title="鏂板" v-model:visible="dialogVisible" width="50%"> + <el-dialog title="鏂板" v-model="dialogVisible" width="50%"> <div style="width: 100%; max-height: 63vh; overflow-y: auto"> - <el-form :model="formInline" label-width="120px"> - <el-form-item label="閫変腑鍥惧眰"> - <el-select style="width: 100%" v-model="formInline.isLayer"> + <el-form :model="insertData" label-width="120px"> + <el-form-item label="鍥惧眰绫诲瀷"> + <el-select style="width: 100%" v-model="insertData.isLayer"> <el-option label="鍥惧眰缁�" value="0"></el-option> <el-option label="鍥惧眰" value="1"></el-option> </el-select> </el-form-item> <!-- 鏈嶅姟璧勬簮--> - <el-form-item v-show="formInline.isLayer == 1" label="鏈嶅姟璧勬簮"> + <el-form-item v-show="insertData.isLayer == 1" label="鏈嶅姟璧勬簮"> <el-button size="small" class="serviceButton" - @click="setServiceChange('0')" + @click="setInsertServiceChange('0')" key="0" - :class="{ serviceActive: !serviceActive }" - >鍚�</el-button - > + :class="{ serviceActive: !insertServiceActive }" + >鍚�</el-button> <el-button size="small" class="serviceButton" - @click="setServiceChange('1')" + @click="setInsertServiceChange('1')" key="1" - :class="{ serviceActive: serviceActive }" - >鏄�</el-button - > + :class="{ serviceActive: insertServiceActive }" + >鏄�</el-button> </el-form-item> <el-form-item label="鍥惧眰鍚嶇О"> + <el-input v-model="insertData.cnName" placeholder="璇疯緭鍏ュ浘灞傚悕绉�" /> + </el-form-item> + <!-- 鏈嶅姟绫诲埆 --> + <el-form-item v-show="insertData.isLayer == 1" label="鏈嶅姟绫诲埆"> + <el-select + style="width: 100%" + v-model="insertData.category" + :disabled="insertServiceActive" + > + <el-option + v-for="item in category_type" + :key="item.value" + :label="item.name" + :value="item.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="琛ㄥ悕绉�" v-show="insertData.category == 2"> <el-input - v-model="formInline.cnName" - placeholder="璇疯緭鍏ュ浘灞傚悕绉�" + v-model="insertData.tab" + placeholder="璇疯緭鍏ヨ〃鍚嶇О" + :disabled="insertServiceActive" /> </el-form-item> <!-- 鏁版嵁绫诲瀷 --> - <el-form-item v-show="formInline.isLayer == 1" label="鏁版嵁绫诲瀷"> + <el-form-item v-show="insertData.isLayer == 1" label="鏁版嵁绫诲瀷"> <el-select style="width: 100%" - v-model="formInline.data" + v-model="insertData.data" @change="setFromDataTypeClick" + :disabled="insertServiceActive" > <el-option v-for="item in serveType" :key="item.value" :label="item.label" :value="item.value" - > - </el-option> + ></el-option> </el-select> </el-form-item> <!-- 鏁版嵁绫诲瀷 --> - <el-form-item v-show="formInline.isLayer == 1" label="鏈嶅姟绫诲瀷"> - <el-select style="width: 100%" v-model="formInline.type"> + <el-form-item v-show="insertData.isLayer == 1" label="鏈嶅姟绫诲瀷"> + <el-select + style="width: 100%" + v-model="insertData.type" + :disabled="insertServiceActive" + > <el-option v-for="item in dataType" :key="item.value" :label="item.label" :value="item.value" - > - </el-option> + ></el-option> </el-select> </el-form-item> - <el-form-item label="鏈嶅姟鍦板潃" v-show="formInline.isLayer == 1"> + <el-form-item label="鏈嶅姟鍦板潃" v-show="insertData.isLayer == 1"> <el-input - v-model="formInline.serviceUrl" + v-model="insertData.serviceUrl" placeholder="璇疯緭鍏ユ湇鍔″湴鍧�" + :disabled="insertServiceActive" /> </el-form-item> <el-form-item> <div class="btnstyle editBtn"> - <el-button type="primary" @click="onSubmit">纭畾</el-button> - <el-button class="delbtn" @click="updateRest">鍙栨秷</el-button> + <el-button type="primary" size="small" @click="added()">纭畾</el-button> + <el-button class="delbtn" type="info" size="small" @click="submitCancel()">鍙栨秷</el-button> </div> </el-form-item> </el-form> + </div> + </el-dialog> + <el-dialog v-model="dialogService" width="50%" :show-close="false"> + <div style="width: 100%; max-height: 63vh; overflow-y: auto"> + <div style="display: flex; justify-content: space-between" class="tableForm"> + <div> + <el-input size="small" v-model="listData.name"> + <template #suffix> + <el-icon class="el-input__icon el-icon-search" @click="setServiceQuery"> + <search /> + </el-icon> + </template> + </el-input> + </div> + <div class="btnstyle"> + <el-button type="info" size="small" @click="setServiceRest">閲嶇疆</el-button> + + <el-button type="primary" size="small" @click="setServiceConfirm">纭</el-button> + <el-button type="info" size="small" @click="setServiceCanel" class="delbtn">鍙栨秷</el-button> + </div> + </div> + <el-table ref="multipleTable" :data="tableData" @select="selectChange"> + <el-table-column type="selection" width="55"></el-table-column> + <el-table-column align="center" type="index" label="搴忓彿" width="70px" /> + <el-table-column align="center" prop="cnName" label="璧勬簮鍚嶇О" /> + + <el-table-column align="center" prop="category" label="鏈嶅姟绫诲瀷" :formatter="setResCategory" /> + <el-table-column align="center" prop="type" label="鏁版嵁绫诲瀷" :formatter="setResType" /> + </el-table> + <div class="pagination_box" style="margin-top: 15px"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="listData.pageIndex" + :page-sizes="[10, 50, 100, 200]" + :page-size="listData.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="listData.count" + ></el-pagination> + </div> </div> </el-dialog> </div> @@ -221,8 +272,10 @@ } from "vue"; import { Plus, Delete, Top, Bottom } from "@element-plus/icons-vue"; import { ElMessage } from "element-plus"; -import { serve_type, data_type } from "./js/layerManage.js"; +import { serve_type, data_type, category_type } from "./js/layerManage.js"; import { removeToken, getToken } from "@/utils/auth"; +import { res_selectByPageAndCount } from "@/api/api"; +import { Search } from "@element-plus/icons-vue"; const stretchValue = ref(""); const emits = defineEmits(["SETstate", "addlayer", "delLayer"]); //defineProps 鏉ユ帴鏀剁粍浠剁殑浼犲�� @@ -230,7 +283,7 @@ layerTree: Array, }); let treeRef = ref(); - +let multipleTable = ref(); const stretchOptions = [ { value: "鐩綍", @@ -291,6 +344,7 @@ children: "children", }; let dialogVisible = ref(false); +let dialogService = ref(false); // 褰撳墠閫変腑鐨勮妭鐐� id const selectedNodeId = ref(null as any); //鍋氱被鍨嬫柇瑷�澶勭悊 const selectedObj = ref(null); @@ -299,34 +353,193 @@ let dataType = ref(null); let serveType = ref(null); let backUpData = ref(null); +let listData = ref({ + pageIndex: 1, + pageSize: 10, + count: 0, + name: "", +}); +let tableData = ref([]); +let multipleSelection = ref([]); +let insertServiceActive = ref(false); +let addlocation = 0; +let checkedStaste = false; +const insertStart = () => { + var data = serveType.value[0].value; + setInsertDataTypeChange(serveType.value[0].value); + var type = dataType.value[0].value; + insertData.value = { + cnName: null, + serveType: null, + url: null, + dataType: null, + bak: null, + isShow: "1", + isProject: "0", + enName: "", + isLayer: null, + category: null, + service: "0", + status: "1", + type: type, + data: data, + }; +}; +// 鏂板鍙栨秷 +const submitCancel = () => { + dialogVisible.value = false; + insertStart(); +}; + +const handleCurrentChange = (val) => { + listData.value.pageIndex = val; + getServiceData(); +}; +const handleSizeChange = (val) => { + listData.value.pageSize = val; + getServiceData(); +}; +const setResType = (row, column) => { + switch (row.type) { + case 0: + return "URL"; + case 1: + return "TMS"; + case 2: + return "WMTS"; + case 3: + return "WMS"; + case 4: + return "WFS"; + case 5: + return "Tileset"; + default: + return ""; + } +}; +const setResCategory = (row, column) => { + switch (row.category) { + case 0: + return "鍏朵粬"; + case 1: + return "GisServer"; + case 2: + return "GeoServer"; + case 3: + return "鏁扮畝"; + default: + return ""; + } +}; +const selectChange = (selection, row) => { + multipleSelection.value = row; + if (selection.length > 1) { + let del_row = selection.shift(); + multipleTable.value.toggleRowSelection(del_row, false); + } +}; +const setServiceCanel = () => { + dialogService.value = false; + multipleSelection.value = []; + tableData.value = []; + listData.value = { + pageIndex: 1, + pageSize: 10, + count: 0, + name: "", + }; +}; +const setServiceConfirm = () => { + if (multipleSelection.value.length <= 0) { + return ElMessage("鏈�夋嫨璧勬簮鏁版嵁"); + } + var url, serviceUrl; + if (multipleSelection.value.status == 1) { + serviceUrl = multipleSelection.value.url; + url = multipleSelection.value.url; + } else if (multipleSelection.value.status == 2) { + var token = getToken(); + if ( + multipleSelection.value.proxy && + multipleSelection.value.proxy.indexOf("{token}") > -1 + ) { + serviceUrl = + config.BASE_URL + + multipleSelection.value.proxy.replaceAll("{token}", token); + } else { + serviceUrl = multipleSelection.value.url; + } + + url = multipleSelection.value.proxy; + } + if (dialogVisible.value) { + setInsertDataTypeChange(multipleSelection.value.data); + insertData.value.cnName = multipleSelection.value.cnName; + insertData.value.enName = multipleSelection.value.enName; + insertData.value.type = multipleSelection.value.type; + insertData.value.resid = multipleSelection.value.id; + insertData.value.serviceUrl = serviceUrl; + insertData.value.url = url; + insertData.value.data = multipleSelection.value.data; + insertData.value.tab = multipleSelection.value.tab; + insertData.value.category = multipleSelection.value.category; + insertServiceActive.value = true; + } else { + formInline.value.cnName = multipleSelection.value.cnName; + formInline.value.enName = multipleSelection.value.enName; + formInline.value.type = multipleSelection.value.type; + formInline.value.resid = multipleSelection.value.id; + formInline.value.serviceUrl = serviceUrl; + formInline.value.data = multipleSelection.value.data; + formInline.value.tab = multipleSelection.value.tab; + formInline.value.url = url; + serviceActive.value = true; + // this.formInline.status = '1'; + } + dialogService.value = false; +}; +const setServiceRest = () => { + listData.value = { + pageIndex: 1, + pageSize: 10, + count: 0, + name: "", + }; + getServiceData(); +}; +const setServiceQuery = () => { + listData.value.pageIndex = 1; + listData.value.pageSize = 10; + listData.value.count = 0; + getServiceData(); +}; +const getServiceData = async () => { + const data = await res_selectByPageAndCount(listData.value); + tableData.value = data.result; + listData.value.count = data.count; + dialogService.value = true; +}; + const insertLayerData = (res) => { - // if (res == 1) { - // //鏂板鍚岀骇 - // id = this.formInline.pid; - // let pchildNodes = this.$refs.tree.getNode(this.newNode.id).parent - // .childNodes; - // orderNum = this.getMaxOrderNum(pchildNodes); - // lever = this.formInline.level; - // } else if (res == 2) { - // //鏂板瀛愮骇 - // id = this.formInline.id; - // let pchildNodes = this.$refs.tree.getNode(this.newNode.id).childNodes; - // orderNum = this.getMaxOrderNum(pchildNodes); - // lever = this.formInline.level + 1; - // } - // this.insertData.pid = id; - // this.insertData.level = lever; - // this.insertData.orderNum = orderNum; + if (!checkedStaste) { + return ElMessage.warning("璇峰厛鐐瑰嚮閫変腑鐩稿簲鍥惧眰"); + } + addlocation = res; dialogVisible.value = true; }; //淇敼閲嶇疆 const updateRest = () => { var res = JSON.parse(backUpData.value); - formInline.value = res; - formInline.value.isLayer = res.isLayer.toString(); + if (res) { + formInline.value = res; + formInline.value.isLayer = res.isLayer.toString(); - formInline.value.status = res.status.toString(); + if (formInline.value.status) { + formInline.value.status = res.status.toString(); + } + } + dialogVisible.value = false; // this.formInline.isProject = res.isProject.toString(); }; //涓嬫媺鑿滃崟鍒濆鍖� @@ -374,9 +587,17 @@ setInsertDataTypeChange(res); formInline.value.type = dataType.value[0].value; }; +const setInsertServiceChange = (res) => { + if (res == "1") { + setServiceRest(); + } else { + insertServiceActive.value = false; + insertData.value.resid = 0; + } +}; const setServiceChange = (res) => { if (res == "1") { - // this.setServiceRest() + setServiceRest(); } else { serviceActive.value = false; formInline.value.resid = 0; @@ -386,28 +607,65 @@ data: Tree, checked: boolean, indeterminate: boolean -) => { - console.log(data, checked, indeterminate); -}; +) => {}; const onSubmit = () => { - console.log("submit!"); + if (!checkedStaste) { + return ElMessage.warning("璇峰厛鐐瑰嚮閫変腑鐩稿簲鍥惧眰"); + } + // selectedObj.value = formInline.value; + let node = treeRef.value.getNode(selectedObj.value); + // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤 + let copyNode = { ...node }; + copyNode.previousSibling = { ...node.previousSibling }; + copyNode.nextSibling = { ...node.nextSibling }; + copyNode.parent = { ...node.parent }; + + if (Object.keys(copyNode.previousSibling).length !== 0) { + // 鍒犻櫎鍘熷厛鐨刵ode + treeRef.value.remove(node.data); + // 澶嶅埗璇ode鍒版寚瀹氫綅缃�(鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫悗涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node) + treeRef.value.insertAfter(formInline.value, copyNode.previousSibling.data); + + return; + } else if (Object.keys(copyNode.nextSibling).length !== 0) { + // 鍒犻櫎鍘熷厛鐨刵ode + treeRef.value.remove(node.data); + treeRef.value.insertBefore(formInline.value, copyNode.nextSibling.data); + + return; + } else if (Object.keys(copyNode.parent).length !== 0) { + // 鍒犻櫎鍘熷厛鐨刵ode + treeRef.value.remove(node.data); + treeRef.value.append( + formInline.value, + treeRef.value.getNode(copyNode.parent.data) + ); + + return; + } + ElMessage({ + message: "淇敼鎴愬姛", + type: "success", + }); + dialogVisible.value = false; }; // 澶勭悊鑺傜偣鐐瑰嚮浜嬩欢 function handleNodeClick(data: any) { - console.log(data); - console.log(formInline.value); if (data.id === selectedNodeId.value) { // 濡傛灉褰撳墠鑺傜偣宸茬粡閫変腑锛屽垯鍙栨秷閫変腑 selectedNodeId.value = null; + checkedStaste = false; } else { + checkedStaste = true; // 鍚﹀垯閫変腑褰撳墠鑺傜偣 selectedNodeId.value = data.id; selectedObj.value = data; backUpData.value = JSON.stringify(data); // this.currentData = JSON.stringify(result) - formInline.value = data; - formInline.value.isLayer = data.isLayer.toString(); + formInline.value = JSON.parse(backUpData.value); + debugger; + formInline.value.isLayer = parseInt(data.isLayer) == 0 ? "0" : "1"; if (data.resid && data.resid > 0) { serviceActive.value = true; } else { @@ -419,7 +677,7 @@ } else if (serviceActive.value) { var token = getToken(); if (data.url.indexOf("{token}") > -1) { - url = BASE_URL + data.url.replaceAll("{token}", token); + url = config.BASE_URL + data.url.replaceAll("{token}", token); } else { url = data.url; } @@ -428,41 +686,47 @@ } } //鏂板 -const added = (t) => { +const added = () => { var id = ""; for (var i = 0; i < 7; i++) { id += Math.floor(Math.random() * 10); } var addObj = { + isLayer: parseInt(insertData.value.isLayer), id: id, - cnName: formInline.value.name, - region: formInline.value.region, - url: formInline.value.layerUrl, - children: [], - type: 2, //鏁版嵁绫诲瀷 + cnName: insertData.value.cnName, + url: insertData.value.serviceUrl, + type: insertData.value.type, //鏁版嵁绫诲瀷 proxy: null, - data: 0, - tab: "", //Geoserver 鍚嶇О锛� - category: "", //鏈嶅姟绫诲埆 Geoserver , + data: insertData.value.data, //鏁版嵁绫诲瀷 + tab: insertData.value.tab, //Geoserver 鍚嶇О锛� + category: insertData.value.category, //鏈嶅姟绫诲埆 Geoserver , 1 GisServer 2 GeoServer 3鏁扮畝 }; - if (formInline.value.region == "鐩綍") { - addObj.type = 1; - } - - if (t == "t") { - // console.log(treeRef.value.getNode(selectedObj.value)); - // addObj.parentId = selectedObj.value.parentId; + debugger; + if (addlocation == 1) { + //鏂板鍚岀骇 treeRef.value.insertAfter(addObj, treeRef.value.getNode(selectedObj.value)); - } else { - // addObj.parentId = selectedNodeId.value; + } else if (addlocation == 2) { + //鏂板瀛愮骇 treeRef.value.append(addObj, treeRef.value.getNode(selectedObj.value)); } + dialogVisible.value = false; + ElMessage({ + message: "娣诲姞鎴愬姛", + type: "success", + }); }; //鍒犻櫎 const delLayer = () => { - console.log(selectedObj.value); - console.log(treeRef.value.getNode(selectedObj.value)); + if (!selectedObj.value) { + return ElMessage.warning("璇峰厛鐐瑰嚮閫変腑鐩稿簲鍥惧眰"); + } + treeRef.value.remove(treeRef.value.getNode(selectedObj.value)); + ElMessage({ + message: "鍒犻櫎鎴愬姛", + type: "success", + }); // emits("delLayer", selectedNodeId.value); }; //鍥惧眰璁剧疆寮规 @@ -589,7 +853,7 @@ align-items: center; .titleLable { - font-size: 24px; + font-size: 18px; font-family: Source Han Sans CN; font-weight: 400; color: #ffffff; @@ -609,6 +873,11 @@ height: 92%; overflow: auto; } + + /deep/.el-tree-node__content { + font-size: 16px; + } + .layerContent::-webkit-scrollbar { width: 8px; } @@ -769,4 +1038,54 @@ color: #46a6ff; border: 1px solid #46a6ff; } +/deep/ .el-dialog { + background-color: rgba(7, 8, 14, 1) !important; + box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1) !important; + border: 1px solid #d6e4ff !important; + .el-dialog__title { + color: #dcdfe6; + } + .el-form-item__label { + color: #fff; + } +} +.tableForm { + margin-bottom: 20px; +} +.el-table { + background: rgba(7, 8, 14, 1); +} +.el-table /deep/ td { + background-color: rgba(7, 8, 14, 1); + color: white; +} + +.el-table /deep/ th { + background-color: rgba(7, 8, 14, 1); + color: white; +} +/deep/ .el-table__header th, +/deep/ .el-table__header tr, +.el-table /deep/ th.el-table__cell, +/deep/ .el-table--enable-row-transition .el-table__body td.el-table__cell { + background-color: rgba(7, 8, 14, 1); +} + +/deep/ .el-table tr:hover > td { + background-color: rgba(7, 8, 14, 1) !important; +} +.el-table /deep/ tbody tr:hover { + background-color: rgba(7, 8, 14, 1) !important; +} +.el-pagination { + /deep/ .btn-prev, + /deep/ .btn-next, + /deep/ .number { + background-color: transparent; + color: #fff; + } + /deep/ .is-active { + color: #409eff; + } +} </style> -- Gitblit v1.9.3