webViewMap.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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'],
  74. mapImgLayers: [],
  75. xzqdmArr: [],
  76. year: 2021,
  77. jd: '全年',
  78. xzqVal: '330108',
  79. };
  80. },
  81. methods: {
  82. async mapClickHandle (payload1, key) {
  83. this.$emit('mapClick', payload1);
  84. if (key == 'bj-dkgl') {
  85. this.$vm.$emit('setGdDetailType', 24);
  86. } else if (key == 'bj-kgdk') {
  87. this.$vm.$emit('setGdDetailType', 101);
  88. }
  89. this.$vm.$emit('getGdDetailData', payload1);
  90. },
  91. showLayer(layerId) {
  92. this.$vm.$emit('setVisibleLayerIdEvent', layerId);
  93. this.$vm.$emit('switchLayerShow', true);
  94. this.$vm.$emit('setGdDetailType', 12);
  95. },
  96. returnToUp() {
  97. this.$router.go(-1);
  98. },
  99. changeAreaHandle(val) {
  100. if (val[1] == '330110') {
  101. this.$router.push({
  102. path: 'qyfx',
  103. query: this.$route.query,
  104. });
  105. }
  106. },
  107. initMapData() {
  108. const urlApi = `/api/ybz/getYqXzqfz`;
  109. const params = {};
  110. this.$ajax.get(urlApi, params, this, false).then((result) => {
  111. const data = result['data'] || {};
  112. let mapData = [];
  113. data.forEach((item, index) => {
  114. let obj = {
  115. name: item['xzqmc'],
  116. typeIndex: 0,
  117. param: {
  118. value1: '园区数量',
  119. value2: item.num,
  120. unit1: '',
  121. unit2: '个',
  122. order: index + 1,
  123. },
  124. };
  125. mapData.push(obj);
  126. });
  127. this.gzData = mapData;
  128. });
  129. },
  130. changeXzq() {
  131. this.$vm.$emit('location-mask-self-where', {
  132. layerId: 'xzqh-x-search',
  133. where: `xzqdm = '${this.xzqVal}'`,
  134. });
  135. // if (this.xzqVal.length > 6) {
  136. // this.$vm.$emit("location-mask-self-where", { layerId: 'xzqh-z-search', where: `xzqdm = '${this.xzqVal}'` });
  137. // } else {
  138. // this.$vm.$emit("location-mask-self-where", { layerId: 'xzqh-x-search', where: `xzqdm = '${this.xzqVal}'` });
  139. // }
  140. },
  141. },
  142. };
  143. </script>
  144. <style scoped lang="scss">
  145. .TsxzMap {
  146. height: 100%;
  147. position: relative;
  148. .btn-close-wrapper {
  149. position: absolute;
  150. top: 7px;
  151. left: 10px;
  152. font-weight: bold;
  153. color: #ffffff;
  154. font-size: 18px;
  155. border: 1px solid #468ec0;
  156. background: linear-gradient(0deg, #102a54 0%, #3d5a93 100%);
  157. border-radius: 4px;
  158. padding: 1px 10px;
  159. z-index: 999;
  160. line-height: 32px;
  161. cursor: pointer;
  162. .close-icon {
  163. width: 20px;
  164. margin-right: 5px;
  165. vertical-align: middle;
  166. }
  167. }
  168. ::v-deep .vl-tool-bar {
  169. display: none;
  170. }
  171. .areaSelectBox {
  172. position: absolute;
  173. top: 2px;
  174. left: 10px;
  175. margin: auto;
  176. width: 160px;
  177. .prefix-icon {
  178. position: absolute;
  179. top: 12px;
  180. left: 6px;
  181. }
  182. ::v-deep {
  183. .el-input__inner {
  184. height: 34px;
  185. font-weight: bold;
  186. color: #fff;
  187. border: 1px solid #468ec0 !important;
  188. background: linear-gradient(0deg, #102a54 0%, #3f5d96 100%) !important;
  189. padding-left: 25px;
  190. }
  191. input::-webkit-input-placeholder {
  192. color: #fff;
  193. }
  194. .el-input__icon {
  195. color: #70d6ff;
  196. font-weight: bold;
  197. }
  198. }
  199. }
  200. .yearSelect {
  201. position: absolute;
  202. left: 180px;
  203. top: 5px;
  204. .prefix-icon {
  205. vertical-align: middle;
  206. margin-left: 5px;
  207. }
  208. ::v-deep {
  209. .el-input {
  210. line-height: 34px;
  211. input {
  212. color: #fff;
  213. font-weight: bold;
  214. width: 110px;
  215. height: 34px;
  216. border: 1px solid #468ec0;
  217. background: linear-gradient(0deg, #102a54 0%, #405f97 100%);
  218. border-radius: 4px;
  219. }
  220. .el-input__suffix {
  221. .el-input__suffix-inner {
  222. i {
  223. line-height: 34px;
  224. color: #70d6ff;
  225. font-weight: bold;
  226. }
  227. }
  228. }
  229. }
  230. }
  231. }
  232. }
  233. </style>