diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue index 23a26de..9a78b8b 100644 --- a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue +++ b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue @@ -1,39 +1,20 @@ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue index 23a26de..9a78b8b 100644 --- a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue +++ b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue @@ -1,39 +1,20 @@ diff --git a/src/views/busAdmin/caseType/listCaseType.vue b/src/views/busAdmin/caseType/listCaseType.vue index 4dd8fa7..4639c1e 100644 --- a/src/views/busAdmin/caseType/listCaseType.vue +++ b/src/views/busAdmin/caseType/listCaseType.vue @@ -2,7 +2,7 @@
-
+
事部件管理 @@ -26,36 +26,23 @@
-
- -
数据列表
- - 删除 - 添加 - - - - - - - - - -
- 搜索 -
-
-
- 条件过滤 -
- -
-
- + + + + + + + + + + + + - + - -
-
- -
+ +
@@ -169,9 +146,6 @@ // this.fetchCaseTypeTree() }, methods: { - indexMethod(index) { - return this.listQuery.limit * (this.listQuery.offset - 1) + index + 1 - }, initCaseTypeTree() { this.treeLoading = true getCaseTypeDict().then(response => { @@ -242,14 +216,14 @@ search() { this.fetchData(false) }, - // 改变页容量 - handleSizeChange(val) { - this.listQuery.limit = val - this.fetchData() - }, - // 改变当前页 - handleCurrentChange(val) { - this.listQuery.offset = val + // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 + changePage(val) { + if (val && val.size) { + this.listQuery.limit = val.size + } + if (val && val.page) { + this.listQuery.offset = val.page + } this.fetchData() }, add() { @@ -330,43 +304,4 @@ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue index 23a26de..9a78b8b 100644 --- a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue +++ b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue @@ -1,39 +1,20 @@ diff --git a/src/views/busAdmin/caseType/listCaseType.vue b/src/views/busAdmin/caseType/listCaseType.vue index 4dd8fa7..4639c1e 100644 --- a/src/views/busAdmin/caseType/listCaseType.vue +++ b/src/views/busAdmin/caseType/listCaseType.vue @@ -2,7 +2,7 @@
-
+
事部件管理 @@ -26,36 +26,23 @@
-
- -
数据列表
- - 删除 - 添加 - - - - - - - - - -
- 搜索 -
-
-
- 条件过滤 -
- -
-
- + + + + + + + + + + + + - + - -
-
- -
+ +
@@ -169,9 +146,6 @@ // this.fetchCaseTypeTree() }, methods: { - indexMethod(index) { - return this.listQuery.limit * (this.listQuery.offset - 1) + index + 1 - }, initCaseTypeTree() { this.treeLoading = true getCaseTypeDict().then(response => { @@ -242,14 +216,14 @@ search() { this.fetchData(false) }, - // 改变页容量 - handleSizeChange(val) { - this.listQuery.limit = val - this.fetchData() - }, - // 改变当前页 - handleCurrentChange(val) { - this.listQuery.offset = val + // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 + changePage(val) { + if (val && val.size) { + this.listQuery.limit = val.size + } + if (val && val.page) { + this.listQuery.offset = val.page + } this.fetchData() }, add() { @@ -330,43 +304,4 @@ diff --git a/src/views/busAdmin/userDevice/userDevice.vue b/src/views/busAdmin/userDevice/userDevice.vue index 3b38a9c..4b68877 100644 --- a/src/views/busAdmin/userDevice/userDevice.vue +++ b/src/views/busAdmin/userDevice/userDevice.vue @@ -2,7 +2,7 @@ - + @@ -12,8 +12,8 @@ diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue index 23a26de..9a78b8b 100644 --- a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue +++ b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue @@ -1,39 +1,20 @@ diff --git a/src/views/busAdmin/caseType/listCaseType.vue b/src/views/busAdmin/caseType/listCaseType.vue index 4dd8fa7..4639c1e 100644 --- a/src/views/busAdmin/caseType/listCaseType.vue +++ b/src/views/busAdmin/caseType/listCaseType.vue @@ -2,7 +2,7 @@
-
+
事部件管理 @@ -26,36 +26,23 @@
-
- -
数据列表
- - 删除 - 添加 - - - - - - - - - -
- 搜索 -
-
-
- 条件过滤 -
- -
-
- + + + + + + + + + + + + - + - -
-
- -
+ +
@@ -169,9 +146,6 @@ // this.fetchCaseTypeTree() }, methods: { - indexMethod(index) { - return this.listQuery.limit * (this.listQuery.offset - 1) + index + 1 - }, initCaseTypeTree() { this.treeLoading = true getCaseTypeDict().then(response => { @@ -242,14 +216,14 @@ search() { this.fetchData(false) }, - // 改变页容量 - handleSizeChange(val) { - this.listQuery.limit = val - this.fetchData() - }, - // 改变当前页 - handleCurrentChange(val) { - this.listQuery.offset = val + // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 + changePage(val) { + if (val && val.size) { + this.listQuery.limit = val.size + } + if (val && val.page) { + this.listQuery.offset = val.page + } this.fetchData() }, add() { @@ -330,43 +304,4 @@ diff --git a/src/views/busAdmin/userDevice/userDevice.vue b/src/views/busAdmin/userDevice/userDevice.vue index 3b38a9c..4b68877 100644 --- a/src/views/busAdmin/userDevice/userDevice.vue +++ b/src/views/busAdmin/userDevice/userDevice.vue @@ -2,7 +2,7 @@ - + @@ -12,8 +12,8 @@ diff --git a/src/views/geoCoding/address.vue b/src/views/geoCoding/address.vue new file mode 100644 index 0000000..afd8a2e --- /dev/null +++ b/src/views/geoCoding/address.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/package-lock.json b/package-lock.json index 24656f3..dc69914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -151,6 +151,60 @@ } } }, + "@terraformer/arcgis": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.0.7.tgz", + "integrity": "sha512-7jIQcnd8RnKsDt1IxmEjq9t7l5fnf0e5c+c1+1GjG4NR+TY0XkJcWtrBv0DWd65uAlDiQYMlEG8ls5dz1GQiuA==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@turf/difference": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz", + "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" + }, + "@turf/intersect": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz", + "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==", + "requires": { + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "polygon-clipping": "^0.15.2" + } + }, + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, + "@turf/kinks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz", + "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==", + "requires": { + "@turf/helpers": "^6.3.0" + } + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -4272,10 +4326,55 @@ "estraverse": "^4.1.0" } }, + "esri": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/esri/-/esri-0.0.1-security.tgz", + "integrity": "sha512-v0qH/G4iDFaQ6jf+C3KK4RCRh4j8fyxuXs9vICKDVRQedhp7Ar5Nwx6purTGu3YUycaZqe6HEoISnAmfWaGk8w==" + }, + "esri-leaflet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.1.tgz", + "integrity": "sha512-pY/zI9VbZUfX5Do3ujD0LDDtWsn8dG2+tWRc9bKTvnou1p5XpHisvwxYM5w1xbKHANGkzYaCSrD1zxcWWocmhQ==", + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-cluster": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esri-leaflet-cluster/-/esri-leaflet-cluster-2.1.0.tgz", + "integrity": "sha512-q07BHPXkluyb8STt/2m2spSecBiZj/Eqaiab8J14mlJ9RxAF11HthDb/09UOiJTmbpgvLUV1nPs2l7dKyY7xqg==", + "optional": true, + "requires": { + "esri-leaflet": "^2.0.0", + "leaflet": "^1.0.0", + "leaflet.markercluster": "^1.0.0" + }, + "dependencies": { + "esri-leaflet": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.3.tgz", + "integrity": "sha512-zapunrhhhKyiVP5NCSfFjD7YqWYYYD3OONVjBFWZgX2KbD6ssUQ3KnXVo2U0hswWfJDIoHF7g9PLZ4rDNuQnvA==", + "optional": true, + "requires": { + "@terraformer/arcgis": "^2.0.7", + "tiny-binary-search": "^1.0.3" + } + } + } + }, + "esri-leaflet-renderers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/esri-leaflet-renderers/-/esri-leaflet-renderers-2.1.2.tgz", + "integrity": "sha512-25IsDPFP92vhrb7CEwg0rGiLc2sbXd2MXqcYyqIifmUgObfiN6awdj6cO35OfCaTXEYrrH9F4TYnW2oyBnmppg==", + "requires": { + "esri-leaflet-cluster": "^2.1.0" + } + }, "esri-loader": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-2.11.0.tgz", - "integrity": "sha512-Du0Fap3mGW9Vj9yRaHP8ETpNnNrTPeSBlIimccLX5Ux5A/Hh94SDuuwBRYYCds+bIE9OBg6eRZPCS5VAWKYcDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esri-loader/-/esri-loader-3.0.0.tgz", + "integrity": "sha512-JvNL1agqzJz13uMaAfjktO66iIpJLYjmHabS73tEc910ZCAXMl5i7mWXQxbCdYCIWwRtL3SEhXBXRxSFfX6MBQ==" }, "estraverse": { "version": "4.2.0", @@ -6669,6 +6768,28 @@ "resolved": "https://registry.npm.taobao.org/leaflet/download/leaflet-1.7.1.tgz", "integrity": "sha1-ENaEkW7f4b9B1oijuXEnwDIqKhk=" }, + "leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, + "leaflet.markercluster": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.0.tgz", + "integrity": "sha512-Fvf/cq4o806mJL50n+fZW9+QALDDLPvt7vuAjlD2vfnxx3srMDs2vWINJze4nKYJYRY45OC6tM/669C3pLwMCA==", + "optional": true + }, + "leaflet.pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/leaflet.pm/-/leaflet.pm-2.2.0.tgz", + "integrity": "sha512-y2qFh+1hEoZ2mJvrB6QTyWm+tusRhTCKLyTOoQBWIDXtYJowBm3sxHyt0jqft7vfaRXHtVwq016+FGH34CzKtg==", + "requires": { + "@turf/difference": "^6.0.2", + "@turf/intersect": "^6.1.3", + "@turf/kinks": "6.x", + "lodash": "^4.17.15" + } + }, "levn": { "version": "0.3.0", "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", @@ -8153,6 +8274,14 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, + "polygon-clipping": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz", + "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==", + "requires": { + "splaytree": "^3.1.0" + } + }, "portfinder": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.16.tgz", @@ -11401,6 +11530,11 @@ } } }, + "splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12005,6 +12139,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 8af29e7..036218e 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,16 @@ "babel-polyfill": "^6.26.0", "echarts": "^4.2.1", "element-ui": "2.12.0", - "esri-loader": "^2.3.0", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", + "leaflet": "^1.7.1", + "leaflet-draw": "^1.0.4", + "leaflet.pm": "^2.2.0", "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", - "leaflet": "^1.7.1", "lodash": "^4.17.15", "mockjs": "1.0.1-beta3", "moment": "^2.24.0", diff --git a/src/api/baseSource/server.js b/src/api/baseSource/server.js new file mode 100644 index 0000000..51c3f45 --- /dev/null +++ b/src/api/baseSource/server.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' +// 获取服务列表 +export function getServerList(params) { + return request({ + url: '/map/server/listPage', + method: 'get', + params: params + }) +} +// 编辑服务地址 +export function serverEdit(params) { + return request({ + url: '/map/server/edit', + method: 'post', + params: params + }) +} diff --git a/src/api/geoCoding/geoCoding.js b/src/api/geoCoding/geoCoding.js new file mode 100644 index 0000000..2fa4f33 --- /dev/null +++ b/src/api/geoCoding/geoCoding.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 获取服务列表? 地理编码列表 +export function merchantListPage(params) { + return request({ + url: '/shop/merchant/listPage', + method: 'get', + params + }) +} diff --git a/src/assets/global_images/add.png b/src/assets/global_images/add.png new file mode 100644 index 0000000..60b68c7 --- /dev/null +++ b/src/assets/global_images/add.png Binary files differ diff --git a/src/assets/global_images/delete.png b/src/assets/global_images/delete.png new file mode 100644 index 0000000..ad92346 --- /dev/null +++ b/src/assets/global_images/delete.png Binary files differ diff --git a/src/assets/global_images/point.png b/src/assets/global_images/point.png new file mode 100644 index 0000000..a1a44bc --- /dev/null +++ b/src/assets/global_images/point.png Binary files differ diff --git a/src/assets/global_images/point1.png b/src/assets/global_images/point1.png new file mode 100644 index 0000000..28a9723 --- /dev/null +++ b/src/assets/global_images/point1.png Binary files differ diff --git a/src/assets/global_images/point2.png b/src/assets/global_images/point2.png new file mode 100644 index 0000000..f295fd1 --- /dev/null +++ b/src/assets/global_images/point2.png Binary files differ diff --git a/src/assets/global_images/point3.png b/src/assets/global_images/point3.png new file mode 100644 index 0000000..2815e21 --- /dev/null +++ b/src/assets/global_images/point3.png Binary files differ diff --git a/src/assets/global_images/point4.png b/src/assets/global_images/point4.png new file mode 100644 index 0000000..ddf5eac --- /dev/null +++ b/src/assets/global_images/point4.png Binary files differ diff --git a/src/assets/global_images/point5.png b/src/assets/global_images/point5.png new file mode 100644 index 0000000..5ea0f1a --- /dev/null +++ b/src/assets/global_images/point5.png Binary files differ diff --git a/src/assets/global_images/polygon.png b/src/assets/global_images/polygon.png new file mode 100644 index 0000000..eb2791d --- /dev/null +++ b/src/assets/global_images/polygon.png Binary files differ diff --git a/src/assets/global_images/reset.png b/src/assets/global_images/reset.png new file mode 100644 index 0000000..f8ef703 --- /dev/null +++ b/src/assets/global_images/reset.png Binary files differ diff --git a/src/assets/global_images/square.png b/src/assets/global_images/square.png new file mode 100644 index 0000000..999f95d --- /dev/null +++ b/src/assets/global_images/square.png Binary files differ diff --git a/src/assets/icons/icon-position.png b/src/assets/icons/icon-position.png new file mode 100644 index 0000000..7444038 --- /dev/null +++ b/src/assets/icons/icon-position.png Binary files differ diff --git a/src/icons/svg/edit-icon.svg b/src/icons/svg/edit-icon.svg new file mode 100644 index 0000000..74c94c4 --- /dev/null +++ b/src/icons/svg/edit-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/locate.svg b/src/icons/svg/locate.svg new file mode 100644 index 0000000..0e530ac --- /dev/null +++ b/src/icons/svg/locate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5ef8f05..cac8a4c 100644 --- a/src/main.js +++ b/src/main.js @@ -40,9 +40,6 @@ import TableCellRead from './components/TableCell' Vue.use(TableCellRead) -// 引入leaflet -import 'leaflet/dist/leaflet.css' - // 引入高德地图 // import VueAMap from 'vue-amap' // Vue.use(VueAMap) @@ -67,6 +64,27 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +// leaflet + +import 'leaflet/dist/leaflet.css' +import 'esri-leaflet/dist/esri-leaflet.js' +import 'esri-leaflet-renderers/dist/esri-leaflet-renderers.js' +// 引入Leaflet对象 挂载到Vue上,便于全局使用,也可以单独页面中单独引用 +import * as L from 'leaflet' +import 'leaflet.pm' +import 'leaflet.pm/dist/leaflet.pm.css' + +Vue.config.productionTip = false +Vue.L = Vue.prototype.$L = L + +/* leaflet icon */ +delete L.Icon.Default.prototype._getIconUrl +L.Icon.Default.mergeOptions({ + iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'), + iconUrl: require('leaflet/dist/images/marker-icon.png'), + shadowUrl: require('leaflet/dist/images/marker-shadow.png') +}) + // 先加载配置文件后,new Vue /* eslint-disable no-new */ import axios from 'axios' diff --git a/src/permission.js b/src/permission.js index 9a9ce2a..d555d70 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,9 +34,12 @@ // 远程访问获取权限列表(菜单&按钮) store.dispatch('GetMenus', currentSys).then(() => { store.commit('SET_CHANGEFLAG', '0') - router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 - // 判断路由是否被允许,不允许则重定向 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + // 获取所有地址列表 + store.dispatch('GetUrls').then(() => { + router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 + // 判断路由是否被允许,不允许则重定向 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + }) }) } else { // 没有当前子系统信息,跳转到选择子系统页面 console.log('dontHasCurrentSystem') diff --git a/src/router/index.js b/src/router/index.js index 52dc869..e680932 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,8 @@ import { suphandleRouters } from './modules/suphandle' import { commonRouters } from './modules/common' import { controlRouters } from './modules/control' -import { baseRouters } from './modules/base' +import { baseRouters } from './modules/baseSource' +import { geoRouters } from './modules/geoCoding' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -98,5 +99,6 @@ ...commenetRouters, ...controlRouters, ...baseRouters, + ...geoRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/base.js b/src/router/modules/base.js deleted file mode 100644 index c28e4b1..0000000 --- a/src/router/modules/base.js +++ /dev/null @@ -1,35 +0,0 @@ - -import Layout from '../../layout/Layout' -export const baseRouters = [ - { - path: '/base', - name: 'base', - redirect: '/baseSource', - hidden: true, - meta: { - title: '基础资源子系统', - permission: ['/base'], - isSys: true - } - }, - { - path: '/baseSource', - component: Layout, - redirect: '/baseSourceMain', - name: 'BaseSource', - alwaysShow: true, - meta: { - title: '基础资源', - permission: ['/baseSource'], - sys: '/base' - }, - children: [ - { - path: '/baseSourceMain', - component: () => import('@/views/baseSource/baseSource'), - name: 'BaseSourceMain', - meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } - } - ] - } -] diff --git a/src/router/modules/baseSource.js b/src/router/modules/baseSource.js new file mode 100644 index 0000000..62826d4 --- /dev/null +++ b/src/router/modules/baseSource.js @@ -0,0 +1,121 @@ + +import Layout from '../../layout/Layout' +export const baseRouters = [ + { + path: '/base', + name: 'base', + redirect: '/baseSource', + hidden: true, + meta: { + title: '基础资源子系统', + permission: ['/base'], + isSys: true + } + }, + { + path: '/map', + component: Layout, + redirect: '/mapLayer', + name: 'Map', + alwaysShow: true, + meta: { + title: '地图服务', + icon: 'icon-config', // 图标 + permission: ['/map'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapLayer', + name: 'MapLayer', + component: () => import('@/views/baseSource/overview'), + meta: { title: '图层浏览', icon: '', permission: ['/mapLayer'], keepAlive: true } + } + ] + }, { + path: '/mapEdit', + component: Layout, + redirect: '/partsEdit', + name: 'MapEdit', + alwaysShow: true, + meta: { + title: '地图编辑', + icon: 'icon-config', // 图标 + permission: ['/mapEdit'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/partsEdit', + name: 'PartsEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '部件编辑', icon: '', permission: ['/partsEdit'], keepAlive: true } + }, { + path: '/shopEdit', + name: 'ShopEdit', + component: () => import('@/views/baseSource/compEdit'), + meta: { title: '商户编辑', icon: '', permission: ['/shopEdit'], keepAlive: true } + } + ] + }, { + path: '/mapStatistics', + component: Layout, + redirect: '/mapSearch', + name: 'MapStatistics', + alwaysShow: true, + meta: { + title: '查询统计', + icon: 'icon-config', // 图标 + permission: ['/mapStatistics'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapSearch', + name: 'MapSearch', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/mapSearch'], keepAlive: true } + } + ] + }, { + path: 'mapConfig', + component: Layout, + redirect: '/mapServer', + name: 'MapConfig', + alwaysShow: true, + meta: { + title: '地图配置', + icon: 'icon-config', // 图标 + permission: ['/mapConfig'], // 权限名称 + sys: '/base' + }, + children: [ + { + path: '/mapServer', + name: 'MapServer', + component: () => import('@/views/baseSource/listServer'), + meta: { title: '服务地址', icon: '', permission: ['/mapServer'], keepAlive: true } + } + ] + }, + // { + // path: '/baseSource', + // component: Layout, + // redirect: '/baseSourceMain', + // name: 'BaseSource', + // alwaysShow: true, + // meta: { + // title: '基础资源', + // permission: ['/baseSource'], + // sys: '/base' + // }, + // children: [ + // { + // path: '/baseSourceMain', + // component: () => import('@/views/baseSource/baseSource'), + // name: 'BaseSourceMain', + // meta: { title: '基础资源', icon: '', belongSys: '', permission: '/baseSourceMain' } + // } + // ] + // } +] diff --git a/src/router/modules/geoCoding.js b/src/router/modules/geoCoding.js new file mode 100644 index 0000000..5a4c219 --- /dev/null +++ b/src/router/modules/geoCoding.js @@ -0,0 +1,42 @@ + +import Layout from '../../layout/Layout' +export const geoRouters = [ + { + path: '/geo', + name: 'geo', + redirect: '/addressSearch', + hidden: true, + meta: { + title: '地理编码子系统', + permission: ['/geo'], + isSys: true + } + }, + { + path: '/addressSearch', + component: Layout, + redirect: '/mapAddress', + name: 'GeoMap', + alwaysShow: true, + meta: { + title: '地址查询', + icon: 'icon-config', // 图标 + permission: ['/addressSearch'], // 权限名称 + sys: '/geo' + }, + children: [ + { + path: '/mapAddress', + name: 'MapAddress', + component: () => import('@/views/baseSource/mapSearch'), + meta: { title: '地图查询', icon: '', permission: ['/geoMapOverview'] } + }, + { + path: '/listSearch', + name: 'ListSearch', + component: () => import('@/views/geoCoding/address'), + meta: { title: '列表查询', icon: '', permission: ['/geoList'] } + } + ] + } +] diff --git a/src/store/getters.js b/src/store/getters.js index c33a49d..d4657bb 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -23,6 +23,13 @@ wellTypes: state => state.user.wellTypes, // 用户支持的闸井类型 deviceTypes: state => state.user.deviceTypes, // 用户支持的设备类型 communications: state => state.user.communications, // 用户支持的通讯方式 - area: state => state.user.area // 用户所在区域 + area: state => state.user.area, // 用户所在区域 + urls: state => state.map.urls, // 地图服务地址列表 + baseUrl: state => state.map.baseUrl, // 地图服务地址 + partsUrl: state => state.map.partsUrl, // 部件分层地址 + partsEditUrl: state => state.map.partsEditUrl, // 部件分层地址 + partsAllUrl: state => state.map.partsAllUrl, // 部件不分层地址 + mapUrl: state => state.map.mapUrl, // 底图地址 + editUrl: state => state.map.editUrl // 编辑地图地址 } export default getters diff --git a/src/store/index.js b/src/store/index.js index 7747f6a..d04323f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,6 +5,7 @@ import permission from './modules/permission' import tagsView from './modules/tagsView' import settings from './modules/settings' +import map from './modules/map' import getters from './getters' Vue.use(Vuex) @@ -15,7 +16,8 @@ user, permission, tagsView, - settings + settings, + map }, getters }) diff --git a/src/store/modules/map.js b/src/store/modules/map.js new file mode 100644 index 0000000..aa2c6f8 --- /dev/null +++ b/src/store/modules/map.js @@ -0,0 +1,77 @@ +import { getServerList } from '@/api/baseSource/server' + +const state = { + urls: '', // 所有图层信息 + baseUrl: '', // 服务基础地址 + partsUrl: '', // 部件分层地址 + partsAllUrl: '', // 部件不分层地址 + mapUrl: '', // 二维底图地址 + editUrl: '' // 编辑地图URL +} +const mutations = { + SET_URLS: (state, urls) => { + state.urls = JSON.stringify(urls) + }, + SET_BASE_URL: (state, url) => { + state.baseUrl = url + }, + SET_PARTS_URL: (state, url) => { + state.partsUrl = url + }, + SET_PARTS_EDIT_URL: (state, url) => { + state.partsEditUrl = url + }, + SET_PARTS_ALL_URL: (state, url) => { + state.partsAllUrl = url + }, + SET_MAP_URL: (state, url) => { + state.mapUrl = url + }, + SET_EDIT_URL: (state, url) => { + state.editUrl = url + } +} + +const actions = { + // 获取地图图层,并存在cookie中,避免重复取数据耗费时间 + GetUrls({ commit }) { + return new Promise((resolve, reject) => { + const listQuery = { offset: 1, limit: 100 } + getServerList(listQuery).then(response => { + if (response.code === 200) { + const data = response.data.rows + commit('SET_URLS', data) + const urls = data + // 遍历所以有地址获取 + for (const item of urls) { + if (item.name === 'GIS地图') { + commit('SET_BASE_URL', item.url) + } else if (item.name === '部件分层URL') { + commit('SET_PARTS_URL', item.url) + const editUrl = item.url.replace(/MapServer/, 'FeatureServer') + commit('SET_PARTS_EDIT_URL', editUrl) + } else if (item.name === '部件地图URL') { + commit('SET_PARTS_ALL_URL', item.url) + } else if (item.name === '二维地图URL') { + commit('SET_MAP_URL', item.url) + } else if (item.name === '编辑地图URL') { + commit('SET_EDIT_URL', item.url) + } + } + resolve() + } else { + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + } +} + +export default { + namespace: true, + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a8da6ce..1945f3a 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -50,8 +50,12 @@ tmp.meta.title = menu.name // 给route更新名称 if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menus) - console.log(tmp.path + '->' + tmp.children[0].path) - tmp.redirect = tmp.children[0].path + if (tmp.path && tmp.children.length > 0) { + console.log(tmp.path + '->' + tmp.children[0].path) + tmp.redirect = tmp.children[0].path + } else { + tmp.redirect = '/dashboard' + } } res.push(tmp) } else { diff --git a/src/styles/index.scss b/src/styles/index.scss index 781865d..906f3ee 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -96,10 +96,14 @@ } } } -.navbar,.navbar .hamburger-container, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { +.navbar, .el-breadcrumb, .app-breadcrumb .el-breadcrumb { height:$breadcrumbHeight !important; line-height: $breadcrumbHeight !important; } +.navbar .hamburger-container{ + display:flex; + align-items: center; +} .tags-view-container { .tags-view-wrapper { @@ -158,3 +162,60 @@ .el-table td{ padding: 4px 0px !important; } + +.pop-window{ + font-size: 14px;width:200px; + padding-right:5px; + .pop-title{ + font-size: 16px; + margin-bottom: 8px; + } + .pop-line{ + line-height:20px; + } + .pop-btns{ + margin:10px 0px; + .mini-btn{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #dcdfe6; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + transition: .1s; + font-weight: 500; + padding: 7px 15px; + font-size: 12px; + border-radius: 3px; + } + .mini-btn+.mini-btn{ + margin-left:10px; + } + #btnEdit{ + color: #409eff; + background: #ecf5ff; + border-color: #b3d8ff; + } + #btnEdit:hover{ + background: #409eff; + border-color: #409eff; + color: #fff; + } + #btnDelete{ + color: #f56c6c; + background: #fef0f0; + border-color: #fbc4c4; + } + #btnDelete:hover{ + background: #f56c6c; + border-color: #f56c6c; + color: #fff; + } + } +} diff --git a/src/views/baseSource/compEdit.vue b/src/views/baseSource/compEdit.vue new file mode 100644 index 0000000..a1b69d6 --- /dev/null +++ b/src/views/baseSource/compEdit.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue index 23a26de..9a78b8b 100644 --- a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue +++ b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue @@ -1,39 +1,20 @@ diff --git a/src/views/busAdmin/caseType/listCaseType.vue b/src/views/busAdmin/caseType/listCaseType.vue index 4dd8fa7..4639c1e 100644 --- a/src/views/busAdmin/caseType/listCaseType.vue +++ b/src/views/busAdmin/caseType/listCaseType.vue @@ -2,7 +2,7 @@
-
+
事部件管理 @@ -26,36 +26,23 @@
-
- -
数据列表
- - 删除 - 添加 - - - - - - - - - -
- 搜索 -
-
-
- 条件过滤 -
- -
-
- + + + + + + + + + + + + - + - -
-
- -
+ +
@@ -169,9 +146,6 @@ // this.fetchCaseTypeTree() }, methods: { - indexMethod(index) { - return this.listQuery.limit * (this.listQuery.offset - 1) + index + 1 - }, initCaseTypeTree() { this.treeLoading = true getCaseTypeDict().then(response => { @@ -242,14 +216,14 @@ search() { this.fetchData(false) }, - // 改变页容量 - handleSizeChange(val) { - this.listQuery.limit = val - this.fetchData() - }, - // 改变当前页 - handleCurrentChange(val) { - this.listQuery.offset = val + // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 + changePage(val) { + if (val && val.size) { + this.listQuery.limit = val.size + } + if (val && val.page) { + this.listQuery.offset = val.page + } this.fetchData() }, add() { @@ -330,43 +304,4 @@ diff --git a/src/views/busAdmin/userDevice/userDevice.vue b/src/views/busAdmin/userDevice/userDevice.vue index 3b38a9c..4b68877 100644 --- a/src/views/busAdmin/userDevice/userDevice.vue +++ b/src/views/busAdmin/userDevice/userDevice.vue @@ -2,7 +2,7 @@ - + @@ -12,8 +12,8 @@ diff --git a/src/views/geoCoding/address.vue b/src/views/geoCoding/address.vue new file mode 100644 index 0000000..afd8a2e --- /dev/null +++ b/src/views/geoCoding/address.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/views/layout/SupLayout.vue b/src/views/layout/SupLayout.vue index 5ada200..731ac0c 100644 --- a/src/views/layout/SupLayout.vue +++ b/src/views/layout/SupLayout.vue @@ -14,7 +14,7 @@ + + diff --git a/src/views/baseSource/components/addTool.vue b/src/views/baseSource/components/addTool.vue new file mode 100644 index 0000000..4bd0865 --- /dev/null +++ b/src/views/baseSource/components/addTool.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/views/baseSource/components/clearTool.vue b/src/views/baseSource/components/clearTool.vue new file mode 100644 index 0000000..3a049d0 --- /dev/null +++ b/src/views/baseSource/components/clearTool.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/src/views/baseSource/components/deleteTool.vue b/src/views/baseSource/components/deleteTool.vue new file mode 100644 index 0000000..4b89b55 --- /dev/null +++ b/src/views/baseSource/components/deleteTool.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/baseSource/components/drawTool.vue b/src/views/baseSource/components/drawTool.vue new file mode 100644 index 0000000..42e3d6b --- /dev/null +++ b/src/views/baseSource/components/drawTool.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/views/baseSource/components/editPartsDialog.vue b/src/views/baseSource/components/editPartsDialog.vue new file mode 100644 index 0000000..4a463d0 --- /dev/null +++ b/src/views/baseSource/components/editPartsDialog.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/views/baseSource/components/layerChoose.vue b/src/views/baseSource/components/layerChoose.vue new file mode 100644 index 0000000..c98e787 --- /dev/null +++ b/src/views/baseSource/components/layerChoose.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/views/baseSource/components/searchItem.vue b/src/views/baseSource/components/searchItem.vue new file mode 100644 index 0000000..a0c73f3 --- /dev/null +++ b/src/views/baseSource/components/searchItem.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/views/baseSource/components/searchList.vue b/src/views/baseSource/components/searchList.vue new file mode 100644 index 0000000..19345ed --- /dev/null +++ b/src/views/baseSource/components/searchList.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/baseSource/components/toolsContainer.vue b/src/views/baseSource/components/toolsContainer.vue new file mode 100644 index 0000000..f1e4478 --- /dev/null +++ b/src/views/baseSource/components/toolsContainer.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/baseSource/listServer.vue b/src/views/baseSource/listServer.vue new file mode 100644 index 0000000..7ddcb99 --- /dev/null +++ b/src/views/baseSource/listServer.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/views/baseSource/mapSearch.vue b/src/views/baseSource/mapSearch.vue new file mode 100644 index 0000000..71147d8 --- /dev/null +++ b/src/views/baseSource/mapSearch.vue @@ -0,0 +1,455 @@ + + + diff --git a/src/views/baseSource/overview.vue b/src/views/baseSource/overview.vue new file mode 100644 index 0000000..8a3f857 --- /dev/null +++ b/src/views/baseSource/overview.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/busAdmin/TimeLimit/listTimeLimit.vue b/src/views/busAdmin/TimeLimit/listTimeLimit.vue index a85dfa7..d0a57c1 100644 --- a/src/views/busAdmin/TimeLimit/listTimeLimit.vue +++ b/src/views/busAdmin/TimeLimit/listTimeLimit.vue @@ -14,8 +14,8 @@ diff --git a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue index 23a26de..9a78b8b 100644 --- a/src/views/busAdmin/areaPersonliable/areaPersonliable.vue +++ b/src/views/busAdmin/areaPersonliable/areaPersonliable.vue @@ -1,39 +1,20 @@ diff --git a/src/views/busAdmin/caseType/listCaseType.vue b/src/views/busAdmin/caseType/listCaseType.vue index 4dd8fa7..4639c1e 100644 --- a/src/views/busAdmin/caseType/listCaseType.vue +++ b/src/views/busAdmin/caseType/listCaseType.vue @@ -2,7 +2,7 @@
-
+
事部件管理 @@ -26,36 +26,23 @@
-
- -
数据列表
- - 删除 - 添加 - - - - - - - - - -
- 搜索 -
-
-
- 条件过滤 -
- -
-
- + + + + + + + + + + + + - + - -
-
- -
+ +
@@ -169,9 +146,6 @@ // this.fetchCaseTypeTree() }, methods: { - indexMethod(index) { - return this.listQuery.limit * (this.listQuery.offset - 1) + index + 1 - }, initCaseTypeTree() { this.treeLoading = true getCaseTypeDict().then(response => { @@ -242,14 +216,14 @@ search() { this.fetchData(false) }, - // 改变页容量 - handleSizeChange(val) { - this.listQuery.limit = val - this.fetchData() - }, - // 改变当前页 - handleCurrentChange(val) { - this.listQuery.offset = val + // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 + changePage(val) { + if (val && val.size) { + this.listQuery.limit = val.size + } + if (val && val.page) { + this.listQuery.offset = val.page + } this.fetchData() }, add() { @@ -330,43 +304,4 @@ diff --git a/src/views/busAdmin/userDevice/userDevice.vue b/src/views/busAdmin/userDevice/userDevice.vue index 3b38a9c..4b68877 100644 --- a/src/views/busAdmin/userDevice/userDevice.vue +++ b/src/views/busAdmin/userDevice/userDevice.vue @@ -2,7 +2,7 @@ - + @@ -12,8 +12,8 @@ diff --git a/src/views/geoCoding/address.vue b/src/views/geoCoding/address.vue new file mode 100644 index 0000000..afd8a2e --- /dev/null +++ b/src/views/geoCoding/address.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/views/layout/SupLayout.vue b/src/views/layout/SupLayout.vue index 5ada200..731ac0c 100644 --- a/src/views/layout/SupLayout.vue +++ b/src/views/layout/SupLayout.vue @@ -14,7 +14,7 @@