clickQuery.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724
  1. <template>
  2. <div class="sm-panel sm-function-module-query" v-if="PoinyQueryShow">
  3. <div class="sm-panel-header">
  4. <span>{{ Resource.PoinyQuery }}</span>
  5. <span class="closeBtn" @click="toggleVisibility">&times;</span>
  6. </div>
  7. <!-- <div class="sm-function-module-content-btn"> -->
  8. <div class="btnList">
  9. <span
  10. v-for="(item, index) in actionOptions"
  11. :key="index"
  12. class="icon-span"
  13. :title="item.lable"
  14. :class="item.isSelect ? 'selected-icon' : ''"
  15. @click="changleQueryItem(item)"
  16. >
  17. <i
  18. class="iconfont iconSize"
  19. :class="item.iconName"
  20. style="margin-top: 0px"
  21. ></i>
  22. </span>
  23. <!-- <el-button type="primary" size="small" @click.stop="mapLayerQuery"
  24. >点击</el-button
  25. >
  26. <el-button type="primary" size="small" @click.stop="removeMapLayerQuery"
  27. >清除</el-button
  28. > -->
  29. </div>
  30. <div class="sm-function-module-content-tabs">
  31. <el-tabs @tab-click="handleTabClick" v-model="activeLayerId">
  32. <el-tab-pane
  33. :label="item.label"
  34. :name="item.id"
  35. v-for="(item, index) in layerList"
  36. :key="index"
  37. ></el-tab-pane>
  38. </el-tabs>
  39. </div>
  40. <div class="sm-function-module-content-table">
  41. <el-collapse
  42. :value="activeNames"
  43. @change="handleCollapseChange"
  44. v-if="
  45. activeLayerId &&
  46. queryResults[activeLayerId] &&
  47. queryResults[activeLayerId].length > 0
  48. "
  49. >
  50. <el-collapse-item
  51. :title="'查询结果' + (index + 1)"
  52. :name="'查询结果' + (index + 1)"
  53. v-for="(item, index) in queryResults[activeLayerId]"
  54. :key="index"
  55. >
  56. <template slot="title">
  57. 查询结果{{ index + 1
  58. }}<i
  59. title="定位"
  60. class="header-icon el-icon-s-promotion flyBtn2"
  61. @click.stop="flyTo(index)"
  62. ></i>
  63. </template>
  64. <el-table
  65. :data="item"
  66. :show-header="false"
  67. border
  68. style="width: 100%"
  69. >
  70. <el-table-column prop="name" label="字段" width="100">
  71. </el-table-column>
  72. <el-table-column prop="value" label="值" width="208">
  73. </el-table-column>
  74. </el-table>
  75. </el-collapse-item>
  76. </el-collapse>
  77. </div>
  78. </div>
  79. </template>
  80. <script>
  81. import axios from "axios";
  82. import { GetGDlnfo, GetXzqhTree, GetHouseInfo } from "../../../api/map";
  83. import { keys } from "lodash";
  84. import { handModel, handnew, clearTranslate, keyName } from "./modelLayering";
  85. let gwtype;
  86. export default {
  87. name: "clickQuery",
  88. data() {
  89. return {
  90. activeLayerName: "",
  91. columns: [
  92. {
  93. title: "字段",
  94. key: "name",
  95. },
  96. {
  97. title: "值",
  98. key: "value",
  99. },
  100. ],
  101. layersDataUrl: window.layersDataUrl,
  102. layersData: [],
  103. layerList: [],
  104. loading: false,
  105. handler: {},
  106. activeNames: "查询结果1",
  107. activeLayerId: "",
  108. queryResults: {},
  109. queryResultsGeom: {},
  110. viewer: null,
  111. dataSourceLayer: null,
  112. actionOptions: [
  113. {
  114. index: 1,
  115. lable: "图层",
  116. iconName: "el-icon-tickets",
  117. isSelect: false,
  118. },
  119. {
  120. index: 2,
  121. lable: "模型",
  122. iconName: "el-icon-office-building",
  123. isSelect: false,
  124. },
  125. {
  126. index: 3,
  127. lable: "清除",
  128. iconName: "el-icon-delete",
  129. isSelect: false,
  130. },
  131. ],
  132. };
  133. },
  134. computed: {
  135. PoinyQueryShow: function () {
  136. return store.state.toolBar[9];
  137. },
  138. },
  139. created() {},
  140. watch: {
  141. activeLayerId(val) {
  142. if (val && val != "0") {
  143. for (let i = 0; i < store.state.vectorlayerlist.length; i++) {
  144. let obj = store.state.vectorlayerlist[i];
  145. if (obj.id == val) {
  146. if (obj.type == "S3M") {
  147. this.addGeometrys(true);
  148. } else {
  149. this.addGeometrys();
  150. }
  151. break;
  152. }
  153. }
  154. }
  155. },
  156. },
  157. mounted() {
  158. //this.mapLayerQuery();
  159. this.$nextTick((res) => {
  160. this.viewer = viewer;
  161. this.viewer.entities.removeAll();
  162. this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
  163. this.dataSourceLayer = new Cesium.CustomDataSource("query");
  164. this.viewer.dataSources.add(this.dataSourceLayer);
  165. });
  166. },
  167. methods: {
  168. toggleVisibility() {
  169. this.removeMapLayerQuery();
  170. store.setToolBarAction(9);
  171. },
  172. addGeometrys(fill) {
  173. this.viewer.entities.removeAll();
  174. this.dataSourceLayer.entities.removeAll();
  175. let geoms = this.queryResultsGeom[this.activeLayerId];
  176. for (let i = 0; i < geoms.length; i++) {
  177. let cur = geoms[i];
  178. let points = [];
  179. for (let j = 0; j < cur.length; j++) {
  180. points.push(cur[j][0]);
  181. points.push(cur[j][1]);
  182. }
  183. if (fill) {
  184. this.viewer.entities.add({
  185. polyline: new Cesium.PolylineGraphics({
  186. positions: Cesium.Cartesian3.fromDegreesArray(points),
  187. width: 3,
  188. material: Cesium.Color.BLUE.withAlpha(0.9),
  189. clampToGround: true,
  190. }),
  191. polygon: {
  192. //高程
  193. hierarchy: new Cesium.PolygonHierarchy(
  194. Cesium.Cartesian3.fromDegreesArray(points)
  195. ),
  196. classificationType: Cesium.ClassificationType.BOTH,
  197. clampToGround: false,
  198. material: Cesium.Color.RED.withAlpha(0.3),
  199. // material: videoElement,
  200. // perPositionHeight: true
  201. },
  202. });
  203. } else {
  204. this.viewer.entities.add({
  205. polyline: new Cesium.PolylineGraphics({
  206. positions: Cesium.Cartesian3.fromDegreesArray(points),
  207. width: 3,
  208. material: Cesium.Color.BLUE.withAlpha(0.9),
  209. clampToGround: true,
  210. }),
  211. });
  212. }
  213. // this.viewer.flyTo(this.viewer.entities);
  214. }
  215. },
  216. flyTo(index) {
  217. this.dataSourceLayer.entities.removeAll();
  218. let geoms = this.queryResultsGeom[this.activeLayerId];
  219. let cur = geoms[index];
  220. if (cur) {
  221. let points = [];
  222. for (let j = 0; j < cur.length; j++) {
  223. points.push(cur[j][0]);
  224. points.push(cur[j][1]);
  225. }
  226. let e = this.dataSourceLayer.entities.add({
  227. polyline: new Cesium.PolylineGraphics({
  228. positions: Cesium.Cartesian3.fromDegreesArray(points),
  229. width: 3,
  230. material: Cesium.Color.RED.withAlpha(0.9),
  231. clampToGround: true,
  232. }),
  233. });
  234. this.viewer.flyTo(e);
  235. } else {
  236. this.$message({
  237. message: "空间范围为空!",
  238. type: "warning",
  239. });
  240. }
  241. },
  242. handleTabClick(item, a) {
  243. this.activeLayerId = item.name;
  244. },
  245. // 设置数据
  246. setData() {
  247. this.dataSourceLayer = new Cesium.CustomDataSource("query");
  248. this.viewer.dataSources.add(this.dataSourceLayer);
  249. this.activeLayerId = "0";
  250. this.queryResults = {};
  251. this.queryResultsGeom = {};
  252. },
  253. /**
  254. * 左键点击查询图层
  255. */
  256. async mapLayerQuery(movement) {
  257. let that = this;
  258. that.activeLayerId = "0";
  259. that.layerList = [];
  260. that.layersData = [];
  261. let scene = viewer.scene;
  262. that.viewer.entities.removeAll();
  263. that.dataSourceLayer.entities.removeAll();
  264. //拾取模型
  265. let pickedFeature = scene.pick(movement.position);
  266. if (
  267. scene.pickPositionSupported &&
  268. Cesium.defined(pickedFeature) &&
  269. pickedFeature != null &&
  270. pickedFeature.primitive
  271. ) {
  272. let eneityName = pickedFeature.primitive.name;
  273. let Pid = "";
  274. var tempArr = [];
  275. // "ResultNetWork@管线#1"///"ResultNetWork_Node@管线#1"
  276. if (eneityName.indexOf("管线") > 0) {
  277. let buildingLayer = scene.layers.find(eneityName);
  278. buildingLayer.indexedDBSetting.isAttributesSave = true; //保存属性
  279. if (buildingLayer.getSelection().length > 0) {
  280. const selectedId = Number(buildingLayer.getSelection()[0]);
  281. buildingLayer.getAttributesById([selectedId]).then(function (atts) {
  282. if (atts) {
  283. // console.log(atts);
  284. Pid = atts["管线段"] || atts["物探点"];
  285. var length = Object.keys(atts).length;
  286. var des;
  287. for (var i = 0; i < length; i++) {
  288. var key = Object.keys(atts)[i];
  289. var value = atts[key];
  290. // console.log(key);
  291. // console.log(value);
  292. if (
  293. key.toLowerCase().indexOf("shape") < 0 &&
  294. key.toLowerCase().indexOf("sm") &&
  295. value != ""
  296. ) {
  297. tempArr.push({
  298. name: key,
  299. value: value,
  300. });
  301. }
  302. }
  303. }
  304. //获取图层id的参数
  305. let substring = pickedFeature.primitive._baseUri.query;
  306. for (let p = 0; p < store.state.vectorlayerlist.length; i++) {
  307. if (store.state.vectorlayerlist[p].id == substring) {
  308. that.layerList.push(store.state.vectorlayerlist[p]);
  309. break;
  310. }
  311. }
  312. that.queryResults[substring] = [tempArr];
  313. that.queryResultsGeom[substring] = [];
  314. that.activeLayerId = substring;
  315. });
  316. }
  317. }
  318. that.loading = true;
  319. that.queryByPickFeature(pickedFeature, function (result, Fields) {
  320. that.loading = false;
  321. if (result != null) {
  322. result.features[0].fieldNames.forEach((fieldName, i) => {
  323. const Field = Fields.find((c) => c.FieldEn == fieldName);
  324. that.layersData.push({
  325. label: Field ? Field.FieldCn : fieldName,
  326. value: result.features[0].fieldValues[i],
  327. });
  328. });
  329. } else {
  330. that.layersData = [];
  331. }
  332. });
  333. } else {
  334. //拾取图层
  335. // let pickRay = viewer.camera.getPickRay(movement.position);
  336. // let artesian3 = viewer.scene.globe.pick(pickRay, viewer.scene);
  337. let artesian3 = viewer.scene.pickPosition(movement.position);
  338. let xy = that.cartesian3ToWGS84(artesian3);
  339. //TODO wanger 分图层查询
  340. for (let i = 0; i < store.state.vectorlayerlist.length; i++) {
  341. let obj = store.state.vectorlayerlist[i];
  342. if (!obj.source) {
  343. continue;
  344. }
  345. let queryByIDParameters = {
  346. getFeatureMode: "BUFFER",
  347. // getFeatureMode: "SPATIAL",
  348. spatialQueryMode: "INTERSECT",
  349. datasetNames: obj.source.split(","),
  350. geometry: {
  351. parts: [1],
  352. points: [{ y: xy.lat, x: xy.lng }],
  353. type: "POINT",
  354. },
  355. bufferDistance: 0.00005,
  356. hasGeometry: true,
  357. };
  358. let e;
  359. if (obj.type == "S3M") {
  360. e = await that.mapQuery(
  361. window.baseModelQueryLayer,
  362. queryByIDParameters
  363. );
  364. } else {
  365. e = await that.mapQuery(
  366. that.calcIserverURI(obj.url),
  367. queryByIDParameters
  368. );
  369. }
  370. if (e && e.totalCount > 0) {
  371. that.layerList.push(store.state.vectorlayerlist[i]);
  372. let queryData = [];
  373. let geoms = [];
  374. let tempTreeData = store.state.tempResourceTree;
  375. //递归查询点击的图层信息
  376. function getTreeId(list, id) {
  377. //判断list是否是数组
  378. if (!list instanceof Array) {
  379. return null;
  380. }
  381. //遍历数组
  382. for (let i in list) {
  383. let item = list[i];
  384. if (item.id === id) {
  385. return item;
  386. } else {
  387. //查不到继续遍历
  388. if (item.children) {
  389. let value = getTreeId(item.children, id);
  390. //查询到直接返回
  391. if (value) {
  392. return value;
  393. }
  394. }
  395. }
  396. }
  397. }
  398. let legendJson = getTreeId(tempTreeData, obj.id);
  399. for (let u = 0; u < e.features.length; u++) {
  400. let cur = [];
  401. // console.log(e.features[u], "e.features[u]");
  402. if (legendJson.legend != "") {
  403. //将数据转为json
  404. let parseJson = JSON.parse(legendJson.legend);
  405. //初始化下标
  406. let index = -1;
  407. parseJson.forEach((p) => {
  408. //将数据改为大写
  409. p.fieldname = p.fieldname.toUpperCase();
  410. //判断数据是否存在
  411. index = e.features[u].fieldNames.indexOf(p.fieldname);
  412. if (index > -1 && p.fieldaliasname != p.fieldname) {
  413. //如果数据存在数组中并且进行了修改,找到它对应的下标对数据进行替换
  414. e.features[u].fieldNames[index] = p.fieldaliasname;
  415. }
  416. });
  417. }
  418. e.features[u].fieldNames.forEach((fieldName, i) => {
  419. if (
  420. fieldName.toLowerCase().indexOf("shape") < 0 &&
  421. fieldName.toLowerCase().indexOf("sm") &&
  422. e.features[u].fieldValues[i] != ""
  423. ) {
  424. cur.push({
  425. name: fieldName,
  426. value: e.features[u].fieldValues[i],
  427. });
  428. }
  429. });
  430. //排序 将value值为空串的数据放到列表最后
  431. // cur.sort((a, b) => {
  432. // if (a === b) {
  433. // return 0;
  434. // } else if (a.value == null || a.value == "") {
  435. // return 1;
  436. // } else if (b.value == null || b.value == "") {
  437. // return -1;
  438. // } else {
  439. // // 降序
  440. // return a.value < b.value ? 1 : -1;
  441. // }
  442. // });
  443. let points = [];
  444. for (let y = 0; y < e.features[u].geometry.points.length; y++) {
  445. let c = that.cartesianToCartographic84(
  446. e.features[u].geometry.points[y].x,
  447. e.features[u].geometry.points[y].y
  448. );
  449. points.push([c.x, c.y]);
  450. }
  451. geoms.push(points);
  452. queryData.push(cur);
  453. }
  454. that.queryResults[obj.id] = queryData;
  455. that.queryResultsGeom[obj.id] = geoms;
  456. }
  457. }
  458. if (that.layerList.length > 0) {
  459. that.activeLayerId = that.layerList[0].id;
  460. console.log(that.activeLayerId, "that.activeLayerId");
  461. } else {
  462. that.$message({
  463. message: "查询结果为空!",
  464. type: "warning",
  465. customClass: "messageIndex",
  466. });
  467. }
  468. }
  469. },
  470. addLayerList(label) {
  471. if (this.layerList.findIndex((a) => a.label == label) >= 0) return;
  472. let layers = store.state.vectorlayerlist.filter(
  473. (element) => element.label === label
  474. );
  475. if (layers.length > 0) {
  476. this.activeLayerId = layers[0].id;
  477. this.layerList.push(layers[0]);
  478. }
  479. },
  480. /**
  481. * 左键点击模型查询
  482. */
  483. mapModelQuery(movement) {
  484. this.activeLayerId = "0";
  485. this.layerList = [];
  486. this.layersData = [];
  487. this.viewer.entities.removeAll();
  488. this.dataSourceLayer.entities.removeAll();
  489. let title;
  490. if (store.state.checkedData) title = store.state.checkedData.title;
  491. // 超图分层分户
  492. if (title == "分层分户") {
  493. let id = handModel(movement);
  494. } else {
  495. handnew(movement);
  496. }
  497. let newArr = [];
  498. GetHouseInfo({ id: "2c01647f-4533-4472-b20b-f5caa4c705b0" }).then(
  499. (res) => {
  500. for (const [key, value] of Object.entries(res.data)) {
  501. newArr.push({ name: keyName[key], value: value });
  502. }
  503. this.addLayerList(title);
  504. this.queryResults[this.activeLayerId] = [newArr];
  505. this.queryResultsGeom[this.activeLayerId] = [];
  506. }
  507. );
  508. },
  509. mapQuerys(queryName) {
  510. this.setData();
  511. let that = this;
  512. this.handler.setInputAction(function (movement) {
  513. that[queryName](movement);
  514. }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
  515. this.handler.setInputAction(function () {
  516. that.removeMapLayerQuery();
  517. clearTranslate();
  518. }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
  519. },
  520. /**
  521. * 超图
  522. * 根据返回的三维对象查询数据信息
  523. *
  524. * @param {*} param
  525. */
  526. async queryByPickFeature(param, completed) {
  527. if (param.primitive) {
  528. let dataUrl = "";
  529. let datasourceName = "";
  530. let Fields = [];
  531. for (const layerData of this.layersDataUrl) {
  532. for (const datasource of layerData.datasources) {
  533. if (datasource.Name3D == param.primitive.name) {
  534. dataUrl = layerData.url;
  535. datasourceName = datasource.DataName;
  536. Fields = datasource.Fields;
  537. break;
  538. }
  539. }
  540. }
  541. let queryByIDParameters = {
  542. getFeatureMode: "ID",
  543. datasetNames: [datasourceName],
  544. ids: [param.id],
  545. hasGeometry: "false",
  546. };
  547. if (!dataUrl) {
  548. completed(null);
  549. } else {
  550. let e = await this.mapQuery(dataUrl, queryByIDParameters);
  551. if (completed) {
  552. completed(e, Fields);
  553. }
  554. }
  555. }
  556. },
  557. async mapQuery(url, queryObj) {
  558. let response = await axios.post(url, queryObj);
  559. if (response.data.featureCount > 0) {
  560. return response.data;
  561. } else {
  562. return null;
  563. }
  564. },
  565. // 取消左键点击查询
  566. removeMapLayerQuery() {
  567. this.queryResults = {};
  568. this.queryResultsGeom = {};
  569. this.layerList = [];
  570. this.viewer.entities.removeAll();
  571. this.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
  572. this.handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK);
  573. this.dataSourceLayer.entities.removeAll();
  574. this.viewer.dataSources.remove(this.dataSourceLayer);
  575. },
  576. /**
  577. * 笛卡尔坐标系转WGS84坐标系(经纬度)
  578. * @author
  579. * @param {object} point 点,笛卡尔坐标{x:x,y:y,z:z}
  580. * @returns {object} -lat: lat, lng: lng, alt: alt
  581. */
  582. cartesian3ToWGS84(point) {
  583. var cartesian3 = new Cesium.Cartesian3(point.x, point.y, point.z);
  584. var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
  585. var lat = Cesium.Math.toDegrees(cartographic.latitude);
  586. var lng = Cesium.Math.toDegrees(cartographic.longitude);
  587. var alt = cartographic.height;
  588. return {
  589. lat: lat,
  590. lng: lng,
  591. alt: alt,
  592. };
  593. },
  594. /**
  595. * 墨卡托坐标系转WGS84坐标系(经纬度)
  596. * @author
  597. * @param number x
  598. * @param number y
  599. * @returns {object} x: x, y: y, z: z
  600. */
  601. cartesianToCartographic84(x, y) {
  602. let cartesian3InMercator = new Cesium.Cartesian3(x, y, 0);
  603. let mercator = new Cesium.WebMercatorProjection();
  604. let p = mercator.unproject(cartesian3InMercator);
  605. // 将墨卡托坐标转换为WGS84坐标
  606. // let cartesian3InWGS84 =
  607. // Cesium.Ellipsoid.WGS84.cartesianToCartographic(mercator.unproject(cartesian3InMercator));
  608. return {
  609. x: Cesium.Math.toDegrees(p.longitude),
  610. y: Cesium.Math.toDegrees(p.latitude),
  611. z: p.height,
  612. };
  613. },
  614. calcIserverURI(url) {
  615. let uriArr = url.split("/");
  616. uriArr[5] = uriArr[5].replace("map-", "data-");
  617. uriArr[7] = "data";
  618. uriArr[8] = "featureResults.rjson?returnContent=true";
  619. return uriArr.join("/");
  620. },
  621. //地图数据查询事件
  622. changleQueryItem(item) {
  623. switch (item.index) {
  624. case 1: {
  625. this.mapQuerys("mapLayerQuery"); //图层点击事件
  626. break;
  627. }
  628. case 2: {
  629. this.mapQuerys("mapModelQuery");
  630. break;
  631. }
  632. case 3: {
  633. this.removeMapLayerQuery(); //清除
  634. clearTranslate();
  635. break;
  636. }
  637. default:
  638. break;
  639. }
  640. },
  641. },
  642. beforeDestroy() {
  643. this.removeMapLayerQuery();
  644. clearTranslate();
  645. },
  646. };
  647. </script>
  648. <style>
  649. .sm-function-module-content-btn {
  650. text-align: center;
  651. padding-top: 5px;
  652. }
  653. .flyBtn2 {
  654. position: absolute;
  655. right: 47px;
  656. }
  657. .el-tabs__item {
  658. color: white !important;
  659. }
  660. .sm-function-module-content-tabs {
  661. height: 45px;
  662. padding: 1px 5px 0px 5px;
  663. }
  664. .sm-function-module-content-table {
  665. height: 564px;
  666. overflow-y: auto;
  667. padding: 1px 5px 0px 5px;
  668. }
  669. .sm-function-module-query {
  670. /* padding: 5px 10px; */
  671. overflow: hidden;
  672. max-height: 700px;
  673. scrollbar-width: none;
  674. /* firefox */
  675. -ms-overflow-style: none;
  676. /* IE 10+ */
  677. @media (max-width: 1000px) {
  678. margin: 0.8rem 0;
  679. padding: 0 15px;
  680. }
  681. @media (max-width: 750px) {
  682. margin: 0.5rem 0;
  683. padding: 0 10px;
  684. max-height: 410px;
  685. }
  686. @media (max-height: 480px) {
  687. margin: 0.5rem 0;
  688. padding: 0 15px;
  689. max-height: 420px;
  690. max-width: 280px;
  691. }
  692. @media (max-height: 300px) {
  693. margin: 0.5rem 0;
  694. padding: 0 10px;
  695. max-height: 280px;
  696. max-width: 250px;
  697. }
  698. @media (max-height: 250px) {
  699. max-height: 240px;
  700. }
  701. }
  702. </style>
  703. <style lang="scss" scoped>
  704. @import "clickQuery";
  705. </style>