MultiLevelQuery.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737
  1. <template>
  2. <el-tabs class="multi_level_query_table" v-if="store.state.query_pick_pane.length > 0" v-model="activeName"
  3. @tab-click="handleClick" @tab-remove="removeTab">
  4. <el-tab-pane :label="store.state.query_pick_last_pane.name" name="second">
  5. <el-table :header-cell-style="{
  6. background: 'rgba(10, 25, 38, 0.6)',
  7. color: '#66b1ff',
  8. fontSize: '14px',
  9. fontFamily: 'Microsoft YaHei',
  10. fontWeight: '400',
  11. }" :data="store.state.query_pick_last_pane.value" style="width: 100%">
  12. <el-table-column show-overflow-tooltip="true" prop="filedZH" label="属性" width="140"
  13. v-if="filedZH != '空间信息'">
  14. </el-table-column>
  15. <el-table-column show-overflow-tooltip="true" prop="data" label="属性值">
  16. </el-table-column>
  17. </el-table>
  18. </el-tab-pane>
  19. <el-tab-pane :closable="item.close" :label="item.name" :name="item.name"
  20. v-for="(item, index) in store.state.query_pick_pane" :key="index">
  21. <div v-if="item.name != '权属'">
  22. <el-table :data="tableData" style="width: 100%" :header-cell-style="{
  23. background: 'rgba(10, 25, 38, 0.6)',
  24. color: '#66b1ff',
  25. fontSize: '14px',
  26. fontFamily: 'Microsoft YaHei',
  27. fontWeight: '400',
  28. }">
  29. <el-table-column show-overflow-tooltip="true" width="150" v-for="header in headers" :key="header"
  30. :label="header" :prop="header" v-if="header != '空间信息'">
  31. </el-table-column>
  32. </el-table>
  33. <pie class="echart" unit="亩" :ref="`echartRef`"></pie>
  34. </div>
  35. <div v-else>
  36. <el-tabs @tab-click="handleClickQwnership">
  37. <el-tab-pane v-for="(item, index) in qwnershipTabs" :key="index" :label="item.dataname"
  38. :name="item.dataname">
  39. <el-table :data="tableData_qwnership" style="width: 100%" :header-cell-style="{
  40. background: 'rgba(10, 25, 38, 0.6)',
  41. color: '#66b1ff',
  42. fontSize: '14px',
  43. fontFamily: 'Microsoft YaHei',
  44. fontWeight: '400',
  45. }">
  46. <el-table-column show-overflow-tooltip="true" width="150" v-for="header in headers_qwnership"
  47. :key="header" :label="header" :prop="header" v-if="header != '空间信息'">
  48. </el-table-column>
  49. </el-table>
  50. <pie class="echart" unit="亩" :ref="`qwnership_pie`"></pie>
  51. </el-tab-pane>
  52. </el-tabs>
  53. </div>
  54. </el-tab-pane>
  55. <el-tab-pane label="自定义" name="自定义">
  56. <!-- <el-input clearable v-model="state" @input="change_witch" class="search" placeholder="请输入内容"></el-input> -->
  57. <el-checkbox-group v-model="activecheckList">
  58. <el-checkbox :label="item.label" v-for="(item, index) in check_list" :key="index"
  59. :disabled="item.ckeck"></el-checkbox>
  60. </el-checkbox-group>
  61. <div style="margin-bottom: 20px;">
  62. <el-button size="small" @click="addTab()">
  63. 添加
  64. </el-button>
  65. </div>
  66. </el-tab-pane>
  67. </el-tabs>
  68. </template>
  69. <script>
  70. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  71. import { GetTabsData, GetTabsPane } from '@/api/cockpitNew'
  72. import * as wellknown from "wellknown";
  73. import * as turf from "@turf/turf";
  74. import pie from "@/components/echartsTemplate/pie.vue";
  75. let manager_multi_level_query = null;
  76. let pick_entity = null;
  77. let manager_multi_level_vector = null;
  78. let query_click_by_iserver = null;
  79. export default {
  80. components: { pie },
  81. data() {
  82. return {
  83. activeName: 'second',
  84. activeNameQwnership: 'Qwnership',
  85. handler_multi_level_query: null,
  86. manager_multi_level_query: null,
  87. manager_multi_level_vector: null,
  88. pick_entity: null,
  89. pick_entity_geo: null,
  90. eclickname: '',
  91. echartList: {},
  92. tabIndex: 2,
  93. state: '',
  94. activecheckList: [],
  95. check_list: [{ label: '三调', ckeck: true }, { label: '权属', ckeck: true }, { label: '农用' }, { label: '上映' }],
  96. active_tabs_table: [],
  97. rawData: [],
  98. headers: [], // 用于存储所有可能的 filedZH 值
  99. qwnershipTabs: [],
  100. rawData_qwnership: [],
  101. headers_qwnership: [],
  102. };
  103. },
  104. //监听属性 类似于data概念
  105. computed: {
  106. tableData() {
  107. // 首次加载时确定所有可能的 filedZH 值
  108. // if (!this.headers.length) {
  109. this.headers = [];
  110. this.rawData.forEach(item => {
  111. item.forEach(field => {
  112. if (!this.headers.includes(field.filedZH)) {
  113. this.headers.push(field.filedZH);
  114. }
  115. });
  116. });
  117. // }
  118. // 转换 rawData 为适合 el-table 使用的格式
  119. return this.rawData.map(item => {
  120. // 创建一个包含所有 headers 字段的对象
  121. const row = {};
  122. this.headers.forEach(header => {
  123. // 查找当前数据项中对应 filedZH 的 data 值
  124. const field = item.find(f => f.filedZH === header);
  125. row[header] = field ? field.data : ''; // 如果没有找到,则使用空字符串
  126. });
  127. return row;
  128. });
  129. },
  130. tableData_qwnership() {
  131. // 首次加载时确定所有可能的 filedZH 值
  132. // if (!this.headers.length) {
  133. this.headers_qwnership = [];
  134. this.rawData_qwnership.forEach(item => {
  135. item.forEach(field => {
  136. if (!this.headers_qwnership.includes(field.filedZH)) {
  137. this.headers_qwnership.push(field.filedZH);
  138. }
  139. });
  140. });
  141. // }
  142. // 转换 rawData 为适合 el-table 使用的格式
  143. return this.rawData_qwnership.map(item => {
  144. // 创建一个包含所有 headers 字段的对象
  145. const row = {};
  146. this.headers_qwnership.forEach(header => {
  147. // 查找当前数据项中对应 filedZH 的 data 值
  148. const field = item.find(f => f.filedZH === header);
  149. row[header] = field ? field.data : ''; // 如果没有找到,则使用空字符串
  150. });
  151. return row;
  152. });
  153. },
  154. },
  155. //监控data中的数据变化
  156. watch: {},
  157. //方法集合
  158. methods: {
  159. change_witch() {
  160. },
  161. removeTab(targetName) {
  162. let tabs = store.state.query_pick_pane;
  163. let activeName = this.activeName;
  164. if (activeName === targetName) {
  165. tabs.forEach((tab, index) => {
  166. if (tab.name === targetName) {
  167. let nextTab = tabs[index + 1] || tabs[index - 1];
  168. if (nextTab) {
  169. activeName = nextTab.name;
  170. }
  171. }
  172. });
  173. }
  174. this.activeName = activeName;
  175. store.state.query_pick_pane = tabs.filter(tab => tab.name !== targetName);
  176. },
  177. addTab() {
  178. // let newTabName = ++this.tabIndex + '';
  179. // store.state.query_pick_pane.push({
  180. // name: newTabName,
  181. // value: [1, 2, 3, 4],// element.data
  182. // close: 'closable'
  183. // });
  184. // this.activeName = newTabName;
  185. this.activecheckList.forEach((res) => {
  186. store.state.query_pick_pane.push({
  187. name: res,
  188. value: [1, 2, 3, 4],// element.data
  189. close: 'closable'
  190. });
  191. this.activeName = res;
  192. })
  193. },
  194. go(e) {
  195. const that = this;
  196. e.forEach(element => {
  197. if (element.filed == "geom") {
  198. this.gogeojson(element.data)
  199. }
  200. });
  201. },
  202. gogeojson(data) {
  203. let geojson = wellknown.parse(data);
  204. const twoDArray = geojson.coordinates[0];
  205. const oneDArray = twoDArray.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);
  206. this.pick_entity_geo = oneDArray;
  207. pick_entity.entities.add({
  208. polygon: {
  209. // 获取指定属性(positions,holes(图形内需要挖空的区域))
  210. hierarchy: {
  211. positions: Cesium.Cartesian3.fromDegreesArray(oneDArray),
  212. },
  213. // 边框
  214. outline: true,
  215. // 边框颜色
  216. outlineColor: Cesium.Color.RED,
  217. // 边框尺寸
  218. outlineWidth: 2,
  219. // 填充的颜色,withAlpha透明度
  220. material: Cesium.Color.GREEN.withAlpha(0),
  221. // 是否被提供的材质填充
  222. fill: true,
  223. // 恒定高度
  224. height: 1.1,
  225. // 显示在距相机的距离处的属性,多少区间内是可以显示的
  226. // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000, 10000000),
  227. // 是否显示
  228. show: true,
  229. // 顺序,仅当`clampToGround`为true并且支持地形上的折线时才有效。
  230. zIndex: 10
  231. }
  232. });
  233. let flag = true;
  234. let time = setInterval(() => {
  235. flag = !flag
  236. this.switch_show(flag);
  237. }, 500);
  238. setTimeout(() => {
  239. clearInterval(time);
  240. pick_entity.entities.values.forEach((res) => {
  241. pick_entity.entities.remove(res);
  242. })
  243. }, 6000)
  244. // 注意:polygon首尾坐标要一致
  245. var polygon = turf.polygon([geojson.coordinates[0]]);
  246. var centroid = turf.centroid(polygon).geometry.coordinates;
  247. viewer.camera.flyTo({
  248. duration: 1,
  249. destination: Cesium.Cartesian3.fromDegrees(centroid[0], centroid[1], 3000),
  250. // destination: {
  251. // x: -6283267.004204832,
  252. // y: 28123682.896774407,
  253. // z: 23709669.98539126
  254. // },
  255. orientation: {
  256. heading: 6.149339593573709,
  257. pitch: -1.539825618847483,
  258. roll: 0
  259. },
  260. });
  261. },
  262. clear_data() {
  263. const that = this;
  264. store.state.query_pick_last_pane = null;
  265. store.state.query_pick_pane = [];
  266. this.remove_query_click_by_iserver();
  267. },
  268. remove_query_click_by_iserver() {
  269. for (var i = 0; i < 10; i++) {
  270. query_click_by_iserver.entities.values.forEach((res) => {
  271. query_click_by_iserver.entities.remove(res);
  272. })
  273. }
  274. },
  275. init_handler() {
  276. const that = this;
  277. that.clear_data();
  278. if (that.handler_multi_level_query == null) {
  279. that.handler_multi_level_query = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
  280. }
  281. that.handler_multi_level_query.setInputAction(async event => {
  282. let pickObj = viewer.scene.pick(event.position);
  283. var position = viewer.scene.pickPosition(event.position);
  284. if (!position)//点击到地球之外
  285. return false;
  286. var cartographic = Cesium.Cartographic.fromCartesian(position);
  287. let longitude = Cesium.Math.toDegrees(cartographic.longitude);
  288. let latitude = Cesium.Math.toDegrees(cartographic.latitude);
  289. let height = cartographic.height;
  290. let heading = viewer.scene.camera.heading;
  291. let pitch = viewer.scene.camera.pitch;
  292. if (!position) {
  293. position = Cesium.Cartesian3.fromDegrees(0, 0, 0);
  294. }
  295. const geojsonPoint = {
  296. "type": "Point",
  297. "coordinates": [longitude, latitude] // 注意经纬度顺序
  298. };
  299. const wkt = wellknown.stringify(geojsonPoint);
  300. // let id = store.state.vectorlayerlist[store.state.vectorlayerlist.length - 1].id
  301. let obj = {
  302. defaultType: null,
  303. // layerId: id
  304. }
  305. let data = await GetTabsData(obj);
  306. for (let index = 0; index < data.data.length; index++) {
  307. const element = data.data[index];
  308. let tableId = element.tableId;
  309. let pane_obj = {
  310. // sourcePointWkt: wkt,
  311. // sourceLayerId: id,
  312. sourcePointWkt: "POINT(109.5139541 18.3146153)",
  313. sourceLayerId: "dd699f839bc04969ae2dc2e1964d0ad1",
  314. sourceLayerType: '0',
  315. queryTableId: tableId,
  316. }
  317. if (index == 0) {
  318. let res = await GetTabsPane(pane_obj);
  319. let filteredData = res.data.data[0].filter((res) => {
  320. return res.filed != 'geom'
  321. })
  322. store.state.query_pick_last_pane = {
  323. name: element.name,
  324. value: filteredData,
  325. };
  326. } else {
  327. let res = await GetTabsPane(pane_obj);
  328. store.state.query_pick_pane.push({
  329. name: element.name,
  330. value: res,
  331. close: 'closable'
  332. });
  333. }
  334. }
  335. this.highlightResults(longitude, latitude);
  336. that.handler_multi_level_query.destroy();
  337. that.handler_multi_level_query = null;
  338. }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
  339. },
  340. handleClick(tab, event) {
  341. let index = Number(tab.index) - 1
  342. if (tab.name == '权属') {
  343. this.qwnershipTabsFun();
  344. } else {
  345. if (tab.closable == true) {
  346. store.state.query_pick_pane.forEach((res) => {
  347. if (res.name == tab.name) {
  348. let data = [];
  349. this.active_tabs_table = res.value.data.data;
  350. this.rawData = res.value.data.data
  351. res.value.data.datalist.forEach((res) => {
  352. data.push({
  353. name: res.groupvalue,
  354. value: res.sumvalue
  355. })
  356. })
  357. this.setEchart(data, "vertical", index);
  358. }
  359. })
  360. }
  361. }
  362. },
  363. handleClickQwnership(tab, event) {
  364. let index = 0;
  365. this.qwnershipTabs.forEach((res) => {
  366. if (res.dataname == tab.name) {
  367. this.rawData_qwnership = res.data
  368. let data = [];
  369. res.datalist.forEach((res) => {
  370. data.push({
  371. name: res.groupvalue,
  372. value: res.sumvalue
  373. })
  374. })
  375. this.setEchart_qwnership(data, "vertical", index);
  376. index++;
  377. }
  378. })
  379. },
  380. // 权属tabs
  381. qwnershipTabsFun() {
  382. store.state.query_pick_pane.forEach((res) => {
  383. if (res.name == '权属') {
  384. this.qwnershipTabs = res.value.data.child;
  385. // this.activeNameQwnership = this.qwnershipTabs[0].dataname
  386. }
  387. })
  388. },
  389. setEchart_qwnership(data, type, index) {
  390. this.$nextTick(() => {
  391. let max = index == 0 ? 3 : 10
  392. let legend_right = index == 0 ? "2%" : "10%"
  393. this.$refs.qwnership_pie[index].setOptions({ data, type, max, legend_right });
  394. });
  395. },
  396. setEchart(data, type, index) {
  397. this.$nextTick(() => {
  398. let max = index == 0 ? 3 : 10
  399. let legend_right = index == 0 ? "2%" : "10%"
  400. this.$refs.echartRef[index].setOptions({ data, type, max, legend_right });
  401. });
  402. },
  403. calcIserverURI(url) {
  404. let uriArr = url.split("/");
  405. uriArr[5] = uriArr[5].replace("map-", "data-");
  406. uriArr[7] = "data";
  407. uriArr[8] = "featureResults.rjson?returnContent=true";
  408. return uriArr.join("/");
  409. },
  410. convertCoordinates(coordArray) {
  411. return coordArray.map(coord => [coord.x, coord.y]);
  412. },
  413. isArray2D(arr) {
  414. // 首先检查arr是否是数组
  415. if (!Array.isArray(arr)) {
  416. return false;
  417. }
  418. // 检查数组中的每个元素是否也是数组
  419. for (let i = 0; i < arr.length; i++) {
  420. if (!Array.isArray(arr[i])) {
  421. return false;
  422. }
  423. }
  424. // 如果所有元素都是数组,那么arr是二维数组
  425. return true;
  426. },
  427. async highlightResults(longitude, latitude) {
  428. // 高亮结果
  429. let queryByIDParameters = {
  430. getFeatureMode: "BUFFER",
  431. // getFeatureMode: "SPATIAL",
  432. spatialQueryMode: "INTERSECT",
  433. datasetNames: store.state.vectorlayerlist[store.state.vectorlayerlist.length - 1].source.split(","),
  434. geometry: {
  435. parts: [1],
  436. points: [{ y: latitude, x: longitude }],
  437. type: "POINT",
  438. },
  439. bufferDistance: 0.00005,
  440. hasGeometry: true,
  441. };
  442. let response = await axios.post(this.calcIserverURI(store.state.vectorlayerlist[store.state.vectorlayerlist.length - 1].url), queryByIDParameters);
  443. const outputCoords = this.convertCoordinates(response.data.features[0].geometry.points);
  444. outputCoords.push(outputCoords[0])
  445. let f = { "type": "Polygon", "coordinates": [outputCoords] };
  446. let result = turf.buffer(f, 1 / 99999, {
  447. units: "kilometers",
  448. });
  449. let positions = [];
  450. const twoDArray = result.geometry.coordinates[0];
  451. const oneDArray = twoDArray.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);
  452. positions = oneDArray;
  453. if (this.isArray2D(oneDArray)) {
  454. const oneDArray2 = oneDArray.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);
  455. positions = oneDArray2;
  456. } else {
  457. }
  458. query_click_by_iserver.entities.add({
  459. polygon: {
  460. // 获取指定属性(positions,holes(图形内需要挖空的区域))
  461. hierarchy: {
  462. positions: Cesium.Cartesian3.fromDegreesArray(positions)
  463. },
  464. // 边框
  465. outline: false,
  466. // 边框颜色
  467. outlineColor: Cesium.Color.RED,
  468. // 边框尺寸
  469. outlineWidth: 10,
  470. // 填充的颜色,withAlpha透明度
  471. material: Cesium.Color.RED,
  472. // 是否被提供的材质填充
  473. fill: true,
  474. // 恒定高度
  475. height: 1.1,
  476. // 显示在距相机的距离处的属性,多少区间内是可以显示的
  477. // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000, 10000000),
  478. // 是否显示
  479. show: true,
  480. // 顺序,仅当`clampToGround`为true并且支持地形上的折线时才有效。
  481. zIndex: 10
  482. }
  483. });
  484. },
  485. },
  486. beforeCreate() { }, //生命周期 - 创建之前
  487. created() { }, //生命周期 - 创建完成(可以访问当前this实例)
  488. beforeMount() { }, //生命周期 - 挂载之前
  489. mounted() {
  490. const that = this;
  491. this.$nextTick(() => {
  492. query_click_by_iserver = new Cesium.CustomDataSource("query_click_by_iserver");
  493. viewer.dataSources.add(query_click_by_iserver);
  494. })
  495. }, //生命周期 - 挂在完成
  496. beforeUpdate() { }, //生命周期 - 更新之前
  497. updated() { }, //生命周期 - 更新之后
  498. beforeDestroy() { }, //生命周期 - 销毁之前
  499. destroy() { },//生命周期 - 销毁完成
  500. activated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
  501. deactivated() { } //若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。
  502. };
  503. </script>
  504. <style lang="scss" scoped>
  505. .el-collapse {
  506. // width: 95%;
  507. border: none;
  508. background-color: transparent !important;
  509. }
  510. .el-scrollbar {
  511. border: 1px solid #0f7ac8 !important;
  512. // padding: 0 10px;
  513. }
  514. .el-collapse-item__header {
  515. // border-bottom: 1px solid rgba(102, 126, 143, 0.747);
  516. background-color: transparent !important;
  517. color: rgb(217, 237, 254) !important;
  518. border-color: transparent !important;
  519. }
  520. .el-collapse-item__wrap {
  521. background-color: transparent !important;
  522. border-color: transparent !important;
  523. }
  524. .el-collapse-item__content {
  525. // background-color: rgba(255, 192, 203, 0.425) !important;
  526. background-color: transparent !important;
  527. color: rgb(217, 237, 254) !important;
  528. }
  529. </style>
  530. <style lang="scss" scoped>
  531. .echart {
  532. width: 300px;
  533. height: 420px;
  534. }
  535. .echart1 {
  536. height: 280px;
  537. }
  538. .multi_level_query_table {
  539. position: absolute;
  540. top: 7rem;
  541. width: 19rem;
  542. }
  543. /* 去掉tabs标签栏下的下划线 */
  544. ::v-deep .el-tabs__nav-wrap::after {
  545. position: static !important;
  546. /* background-color: #fff; */
  547. }
  548. /* 下划线切换高亮 */
  549. ::v-deep .el-tabs__active-bar {
  550. background-color: #30fdff;
  551. }
  552. ::v-deep .el-collapse-item__header {
  553. color: #64daff !important;
  554. font-weight: 600;
  555. }
  556. .el-tab-pane {
  557. height: 33rem;
  558. overflow: auto;
  559. }
  560. .list_vector_multi {
  561. background-image: url("/static/images/ghzc/内容框.png");
  562. width: 18rem;
  563. border-top: 1px solid #CCC;
  564. font-size: 14px;
  565. padding: 0.1rem 0rem 0.1rem 0rem;
  566. border-left: 1px solid #CCC;
  567. border-right: 1px solid #CCC;
  568. // border-bottom:1px solid #CCC ;
  569. }
  570. .list_vector_multi:last-child {
  571. border-bottom: 1px solid #CCC;
  572. }
  573. .filed_box {
  574. display: inline-block;
  575. }
  576. .el-checkbox {
  577. color: white;
  578. }
  579. .is-disabled {
  580. display: inline;
  581. }
  582. /deep/ .el-table tr {
  583. background: rgba(10, 25, 38, 0.5) !important;
  584. }
  585. /deep/ .el-table td.el-table__cell,
  586. .el-table th.el-table__cell.is-leaf {
  587. background: rgba(10, 25, 38, 0.5) !important;
  588. border-bottom: 0px solid #ebeef5;
  589. }
  590. .el-table {
  591. color: #fff;
  592. background: rgba(10, 25, 38, 0.5) !important;
  593. }
  594. /deep/ .el-table__fixed-right::before,
  595. .el-table__fixed::before {
  596. background: rgba(10, 25, 38, 0.9) !important;
  597. }
  598. /deep/ .el-table__fixed-right-patch {
  599. background: rgba(10, 25, 38, 0.9) !important;
  600. }
  601. /deep/ .el-table--border::after,
  602. .el-table--group::after,
  603. .el-table::before {
  604. background: rgba(10, 25, 38, 0) !important;
  605. }
  606. .content_item {
  607. color: #30fdff;
  608. .item_field {
  609. color: #30fdff;
  610. }
  611. }
  612. </style>