MultiLevelQuery.vue 27 KB

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