YqxqMap.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <template>
  2. <div class="TsxzMap">
  3. <BigScreenMap
  4. :GZData="gzData"
  5. :fixed="1"
  6. :title="mapTitle"
  7. :defaultExpand="false"
  8. :overlayShow="true"
  9. :imgLayers="mapImgLayers"
  10. ref="arcMapRef"
  11. :visible-layer-ids="visibleLayerIds"
  12. @mapClick="mapClickHandle"
  13. ></BigScreenMap>
  14. </div>
  15. </template>
  16. <script>
  17. import { mapState, mapGetters } from 'vuex';
  18. import BigScreenMap from '@/views/components/BigScreenMap';
  19. export default {
  20. name: 'TsxzMap',
  21. components: { BigScreenMap },
  22. mounted() {
  23. this.$vm.$on('changeLayer', (payload) => {
  24. const { id, param, layerIdx1, layerIdx2 } = payload;
  25. let params = {
  26. layers: `show:${layerIdx1},${layerIdx2}`,
  27. layerDefs: {
  28. [layerIdx1]: param,
  29. [layerIdx2]: param,
  30. },
  31. };
  32. let layer = this.$refs.arcMapRef.getLayerById(id);
  33. layer.setVisible(true);
  34. const source = layer.getSource();
  35. source.updateParams(params);
  36. });
  37. this.$vm.$emit('setGdDetailType', 20);
  38. this.changeXzq();
  39. //监听图层改变事件
  40. this.$vm.$on('setVisibleLayerIdEvent', (visibleLayerId) => {
  41. this.visibleLayerIds[1] = visibleLayerId;
  42. });
  43. //监听图层改变事件
  44. this.$vm.$on('setVisibleMoreLayerIdEvent', (visibleLayerId) => {
  45. visibleLayerId.forEach((i, index) => {
  46. this.visibleLayerIds[index + 1] = i;
  47. });
  48. });
  49. this.$vm.$on('clearMoreLayerIdEvent', () => {
  50. this.visibleLayerIds[1] = '';
  51. if (this.this.visibleLayerIds[2]) {
  52. this.visibleLayerIds[2] = '';
  53. }
  54. });
  55. this.$vm.$emit('switchLayerShow', true);
  56. // this.initMapData()
  57. // this.showLayer('kfq');
  58. },
  59. computed: {
  60. ...mapState({
  61. xzqName: (state) => state.BaseData.xzqState,
  62. }),
  63. ...mapGetters({
  64. xzqdm: 'BaseData/xzqCodeGetter',
  65. }),
  66. },
  67. data() {
  68. return {
  69. gzData: [],
  70. areaType: 'city',
  71. oldGzData: [],
  72. mapTitle: '供地总面积',
  73. visibleLayerIds: ['bj-dkgl', 'hzyx-202311', 'bjq-xzq'],
  74. mapImgLayers: ['bj-kgdk'],
  75. xzqdmArr: [],
  76. year: 2021,
  77. jd: '全年',
  78. xzqVal: '330108',
  79. };
  80. },
  81. methods: {
  82. async mapClickHandle(payload1, key) {
  83. if (key == 'bj-dkgl') {
  84. this.$vm.$emit('setGdDetailType', 24);
  85. } else if (key == 'bj-kgdk') {
  86. this.$vm.$emit('setGdDetailType', 101);
  87. }
  88. this.$vm.$emit('getGdDetailData', payload1);
  89. },
  90. showLayer(layerId) {
  91. this.$vm.$emit('setVisibleLayerIdEvent', layerId);
  92. this.$vm.$emit('switchLayerShow', true);
  93. this.$vm.$emit('setGdDetailType', 12);
  94. },
  95. returnToUp() {
  96. this.$router.go(-1);
  97. },
  98. changeAreaHandle(val) {
  99. if (val[1] == '330110') {
  100. this.$router.push({
  101. path: 'qyfx',
  102. query: this.$route.query,
  103. });
  104. }
  105. },
  106. initMapData() {
  107. const urlApi = `/api/ybz/getYqXzqfz`;
  108. const params = {};
  109. this.$ajax.get(urlApi, params, this, false).then((result) => {
  110. const data = result['data'] || {};
  111. let mapData = [];
  112. data.forEach((item, index) => {
  113. let obj = {
  114. name: item['xzqmc'],
  115. typeIndex: 0,
  116. param: {
  117. value1: '园区数量',
  118. value2: item.num,
  119. unit1: '',
  120. unit2: '个',
  121. order: index + 1,
  122. },
  123. };
  124. mapData.push(obj);
  125. });
  126. this.gzData = mapData;
  127. });
  128. },
  129. changeXzq() {
  130. this.$vm.$emit('location-mask-self-where', {
  131. layerId: 'xzqh-x-search',
  132. where: `xzqdm = '${this.xzqVal}'`,
  133. });
  134. // if (this.xzqVal.length > 6) {
  135. // this.$vm.$emit("location-mask-self-where", { layerId: 'xzqh-z-search', where: `xzqdm = '${this.xzqVal}'` });
  136. // } else {
  137. // this.$vm.$emit("location-mask-self-where", { layerId: 'xzqh-x-search', where: `xzqdm = '${this.xzqVal}'` });
  138. // }
  139. },
  140. },
  141. };
  142. </script>
  143. <style scoped lang="scss">
  144. .TsxzMap {
  145. height: 100%;
  146. position: relative;
  147. .btn-close-wrapper {
  148. position: absolute;
  149. top: 7px;
  150. left: 10px;
  151. font-weight: bold;
  152. color: #ffffff;
  153. font-size: 18px;
  154. border: 1px solid #468ec0;
  155. background: linear-gradient(0deg, #102a54 0%, #3d5a93 100%);
  156. border-radius: 4px;
  157. padding: 1px 10px;
  158. z-index: 999;
  159. line-height: 32px;
  160. cursor: pointer;
  161. .close-icon {
  162. width: 20px;
  163. margin-right: 5px;
  164. vertical-align: middle;
  165. }
  166. }
  167. ::v-deep .vl-tool-bar {
  168. display: none;
  169. }
  170. .areaSelectBox {
  171. position: absolute;
  172. top: 2px;
  173. left: 10px;
  174. margin: auto;
  175. width: 160px;
  176. .prefix-icon {
  177. position: absolute;
  178. top: 12px;
  179. left: 6px;
  180. }
  181. ::v-deep {
  182. .el-input__inner {
  183. height: 34px;
  184. font-weight: bold;
  185. color: #fff;
  186. border: 1px solid #468ec0 !important;
  187. background: linear-gradient(0deg, #102a54 0%, #3f5d96 100%) !important;
  188. padding-left: 25px;
  189. }
  190. input::-webkit-input-placeholder {
  191. color: #fff;
  192. }
  193. .el-input__icon {
  194. color: #70d6ff;
  195. font-weight: bold;
  196. }
  197. }
  198. }
  199. .yearSelect {
  200. position: absolute;
  201. left: 180px;
  202. top: 5px;
  203. .prefix-icon {
  204. vertical-align: middle;
  205. margin-left: 5px;
  206. }
  207. ::v-deep {
  208. .el-input {
  209. line-height: 34px;
  210. input {
  211. color: #fff;
  212. font-weight: bold;
  213. width: 110px;
  214. height: 34px;
  215. border: 1px solid #468ec0;
  216. background: linear-gradient(0deg, #102a54 0%, #405f97 100%);
  217. border-radius: 4px;
  218. }
  219. .el-input__suffix {
  220. .el-input__suffix-inner {
  221. i {
  222. line-height: 34px;
  223. color: #70d6ff;
  224. font-weight: bold;
  225. }
  226. }
  227. }
  228. }
  229. }
  230. }
  231. }
  232. </style>