diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue index 4449430..650adfc 100644 --- a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue @@ -242,7 +242,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue index 4449430..650adfc 100644 --- a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue @@ -242,7 +242,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue index ddd9433..6cf9c7e 100644 --- a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue index 4449430..650adfc 100644 --- a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue @@ -242,7 +242,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue index ddd9433..6cf9c7e 100644 --- a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editO2Level.vue b/src/views/systemConfig/alarmLevel/components/editO2Level.vue index 6879ec5..18766ea 100644 --- a/src/views/systemConfig/alarmLevel/components/editO2Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editO2Level.vue @@ -163,7 +163,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -255,7 +254,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue index 4449430..650adfc 100644 --- a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue @@ -242,7 +242,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue index ddd9433..6cf9c7e 100644 --- a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editO2Level.vue b/src/views/systemConfig/alarmLevel/components/editO2Level.vue index 6879ec5..18766ea 100644 --- a/src/views/systemConfig/alarmLevel/components/editO2Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editO2Level.vue @@ -163,7 +163,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -255,7 +254,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editTempLevel.vue b/src/views/systemConfig/alarmLevel/components/editTempLevel.vue index 5300bd8..b0ff0ac 100644 --- a/src/views/systemConfig/alarmLevel/components/editTempLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editTempLevel.vue @@ -162,7 +162,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -212,7 +211,6 @@ }, // 解析列表数据为单表格 parseListToForm() { - debugger for (const item of this.list) { if (item.level === 1) { this.form.firstHighValue = item.highValue.toString() @@ -255,7 +253,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue index 4449430..650adfc 100644 --- a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue @@ -242,7 +242,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue index ddd9433..6cf9c7e 100644 --- a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editO2Level.vue b/src/views/systemConfig/alarmLevel/components/editO2Level.vue index 6879ec5..18766ea 100644 --- a/src/views/systemConfig/alarmLevel/components/editO2Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editO2Level.vue @@ -163,7 +163,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -255,7 +254,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editTempLevel.vue b/src/views/systemConfig/alarmLevel/components/editTempLevel.vue index 5300bd8..b0ff0ac 100644 --- a/src/views/systemConfig/alarmLevel/components/editTempLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editTempLevel.vue @@ -162,7 +162,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -212,7 +211,6 @@ }, // 解析列表数据为单表格 parseListToForm() { - debugger for (const item of this.list) { if (item.level === 1) { this.form.firstHighValue = item.highValue.toString() @@ -255,7 +253,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/wellManage/listWell.vue b/src/views/wellManage/listWell.vue index 743bb64..5347b3c 100644 --- a/src/views/wellManage/listWell.vue +++ b/src/views/wellManage/listWell.vue @@ -434,7 +434,6 @@ // 获取井类型 fetchWellType() { getWellType().then(response => { - debugger this.wellTypeList = [] const wellTypes = this.$store.getters.wellTypes for (const wellType of response.data) { diff --git a/package.json b/package.json index 471cdb3..b9bef64 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,25 @@ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" }, "dependencies": { - "animate.css": "^3.7.2", - "axios": "0.18.0", + "animate.css": "^4.1.1", + "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cesium": "^1.81.0", - "echarts": "^4.2.1", - "element-ui": "2.13.0", + "echarts": "^4.3.0", + "element-ui": "^2.14.1", + "esri": "0.0.1-security", + "esri-leaflet": "^3.0.1", + "esri-leaflet-renderers": "^2.1.2", + "esri-loader": "^3.0.0", "event-source-polyfill": "^1.0.5", + "jquery": "1.11.3", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", "leaflet": "^1.7.1", "leaflet-draw": "^1.0.4", + "leaflet-rotatedmarker": "^0.2.0", "mars3d": "^3.0.30", + "mars3d-cesium": "1.83.0", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "nprogress": "0.2.0", @@ -35,12 +42,12 @@ "vue-amap": "^0.5.9", "vue-baidu-map": "^0.21.22", "vue-router": "3.0.1", - "vuex": "3.0.1" + "vuex": "^3.1.1" }, "devDependencies": { "autoprefixer": "8.5.0", "babel-core": "6.26.0", - "babel-eslint": "8.2.6", + "babel-eslint": "7.2.3", "babel-helper-vue-jsx-merge-props": "2.0.3", "babel-loader": "7.1.5", "babel-plugin-syntax-jsx": "6.18.0", diff --git a/src/api/common.js b/src/api/common.js index 4c38684..4d989f8 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -5,7 +5,7 @@ // 模板下载 export function downloadTemplate(fileName) { return request({ - url: 'template/download', + url: '/smartwell/template/download', method: 'get', params: { filename: fileName diff --git a/src/assets/map/marker-icon-2x.png b/src/assets/map/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 --- /dev/null +++ b/src/assets/map/marker-icon-2x.png Binary files differ diff --git a/src/assets/map/marker.png b/src/assets/map/marker.png new file mode 100644 index 0000000..fea9fe9 --- /dev/null +++ b/src/assets/map/marker.png Binary files differ diff --git a/src/assets/map/markerAlarm.png b/src/assets/map/markerAlarm.png new file mode 100644 index 0000000..9b3ecb8 --- /dev/null +++ b/src/assets/map/markerAlarm.png Binary files differ diff --git a/src/components/mapWindow/base/mixins/abstract.js b/src/components/mapWindow/base/mixins/abstract.js new file mode 100644 index 0000000..9cf6d52 --- /dev/null +++ b/src/components/mapWindow/base/mixins/abstract.js @@ -0,0 +1,13 @@ +class Mixin { + constructor({ component, props, events, extraProps, exceptProps }) { + this.render = function(h) { + return h(component, { + props: props.reduce((obj, key) => Object.assign(obj, { [key]: this[key] }), {}), + on: events.reduce((obj, key) => Object.assign(obj, { [key]: this.transmitEvent }), {}) + }) + } + this.props = [...extraProps, ...props.filter(prop => exceptProps.indexOf(prop))] + } +} + +export default prop => new Mixin(prop) diff --git a/src/components/mapWindow/base/mixins/common.js b/src/components/mapWindow/base/mixins/common.js new file mode 100644 index 0000000..2fd1a28 --- /dev/null +++ b/src/components/mapWindow/base/mixins/common.js @@ -0,0 +1,82 @@ +const types = { + map: { + unload: 'clearMap' + }, + control: { + unload: 'removeControl' + }, + layer: { + unload: 'removeLayer' + }, + features: { + unload: 'removeFeatures' + }, + listener: { + unload: 'removeListener' + } +} + +const getParent = $component => ($component.abstract || $component.$el === $component.$children[0].$el) ? getParent($component.$parent) : $component + +function destroyInstance () { + const { unload, renderByParent, $parent } = this + if (renderByParent) { + $parent.reload() + } + unload() +} + +class Mixin { + constructor (prop) { + this.methods = { + ready () { + const $parent = getParent(this.$parent) + const map = this.map = $parent.map + this.load() + this.$emit('ready', { + map + }) + }, + transmitEvent (e) { + this.$emit(e.type.replace(/^on/, ''), e) + }, + reload () { + this && this.$nextTick(() => { + this.unload() + this.$nextTick(this.load) + }) + }, + unload () { + const { map, originInstance } = this + try { + switch (prop.type) { + case 'search': + return originInstance.clearResults() + case 'autoComplete': + case 'lushu': + return originInstance.dispose() + case 'markerClusterer': + return originInstance.clearMarkers() + default: + map[types[prop.type].unload](originInstance) + } + } catch (e) {} + } + } + this.computed = { + renderByParent () { + return this.$parent.preventChildrenRender + } + } + this.mounted = function () { + console.log('common mounted') + const $parent = getParent(this.$parent) + const map = $parent.map + const { ready } = this + console.log(map) + map ? ready() : $parent.$on('onload', ready) + } + } +} + +export default type => new Mixin({ type }) diff --git a/src/components/mapWindow/leafletMap.vue b/src/components/mapWindow/leafletMap.vue new file mode 100644 index 0000000..4ec7b61 --- /dev/null +++ b/src/components/mapWindow/leafletMap.vue @@ -0,0 +1,270 @@ + + + + + + + + + + + diff --git a/src/components/mapWindow/mapWindow.vue b/src/components/mapWindow/mapWindow.vue new file mode 100644 index 0000000..9ced291 --- /dev/null +++ b/src/components/mapWindow/mapWindow.vue @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/src/icons/svg/icon-order.svg b/src/icons/svg/icon-order.svg new file mode 100644 index 0000000..62d7666 --- /dev/null +++ b/src/icons/svg/icon-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 9f6c3ec..852dfe5 100644 --- a/src/main.js +++ b/src/main.js @@ -42,10 +42,10 @@ import 'leaflet-draw/dist/leaflet.draw.css' // 在main.js中加入下面代码 -import 'mars3d/dist/mars3d.css' +// import 'mars3d/dist/mars3d.css' // import 'mars3d-esri/dist/mars3d-esri.js' -import * as mars3d from 'mars3d' -Vue.prototype.mars3d = mars3d +// import * as mars3d from 'mars3d' +// Vue.prototype.mars3d = mars3d /** * This project originally used easy-mock to simulate data, diff --git a/src/router/index.js b/src/router/index.js index 800ff5a..063e508 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ /* Layout */ import Layout from '../views/layout/Layout' +import { systemRouters } from './modules/system' /** * hidden: true if `hidden:true` will not show in the sidebar(default is false) @@ -86,9 +87,9 @@ children: [ { path: '/overview', - component: () => import('@/views/overview/overview'), + component: () => import('@/views/overview/overviewSmartwell'), // component: () => import('@/views/overview/oo'), - name: 'overview', + name: 'OverviewSmartWell', meta: { title: '运行状态总览', icon: 'icon-config', permission: ['/overview/wellList'] } } ] @@ -117,26 +118,26 @@ component: () => import('@/views/alarmManage/listAlarmRecords'), meta: { title: '告警记录', icon: 'icon-config', keepAlive: true, permission: ['/alarm/list'] } }, + // { + // path: '/listJob', + // name: 'ListJob', + // component: () => import('@/views/jobManage/listJobs'), + // meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } + // }, + // { + // path: '/listOvertimeGetJob', + // name: 'ListJobOvertimeGet', + // component: () => import('@/views/jobManage/listJobsOvertimeGet'), + // meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } + // }, + // { + // path: '/listOvertimeHandleJob', + // name: 'ListJobOvertimeHandle', + // component: () => import('@/views/jobManage/listJobsOvertimeHandle'), + // meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } + // }, { - path: '/listJob', - name: 'ListJob', - component: () => import('@/views/jobManage/listJobs'), - meta: { title: '告警工单', icon: 'icon-config', keepAlive: true, permission: ['/job/list'] } - }, - { - path: '/listOvertimeGetJob', - name: 'ListJobOvertimeGet', - component: () => import('@/views/jobManage/listJobsOvertimeGet'), - meta: { title: '超时未接收工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeGetList'] } - }, - { - path: '/listOvertimeHandleJob', - name: 'ListJobOvertimeHandle', - component: () => import('@/views/jobManage/listJobsOvertimeHandle'), - meta: { title: '超时未处理工单', icon: 'icon-config', keepAlive: true, permission: ['/job/overtimeHandleList'] } - }, - { - path: '/detailJob/:id(\\d+)', + path: '/detailJob/:id', name: 'DetailJob', component: () => import('@/views/jobManage/detailJob'), hidden: true, diff --git a/src/utils/request.js b/src/utils/request.js index eb45e3f..24de475 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -44,7 +44,6 @@ location.reload() // 为了重新实例化vue-router对象 避免bug }) } else { - debugger console.log(res) Message({ showClose: true, diff --git a/src/views/alarmManage/components/HandlePrompt.vue b/src/views/alarmManage/components/HandlePrompt.vue index d802514..cfd1b21 100644 --- a/src/views/alarmManage/components/HandlePrompt.vue +++ b/src/views/alarmManage/components/HandlePrompt.vue @@ -67,7 +67,6 @@ methods: { // 初始化对话框 initDialog: function(dialogFormVisible, jobId, isBatch, params) { - debugger this.dialogVisible = dialogFormVisible this.isBatch = isBatch if (isBatch) { diff --git a/src/views/alarmManage/listAlarmRecords.vue b/src/views/alarmManage/listAlarmRecords.vue index 9a51036..8b72518 100644 --- a/src/views/alarmManage/listAlarmRecords.vue +++ b/src/views/alarmManage/listAlarmRecords.vue @@ -55,7 +55,7 @@ {{ scope.row[column.value] }} - + 查看工单 diff --git a/src/views/alarmRule/components/editRule.vue b/src/views/alarmRule/components/editRule.vue index 8a91c41..28dc053 100644 --- a/src/views/alarmRule/components/editRule.vue +++ b/src/views/alarmRule/components/editRule.vue @@ -157,7 +157,6 @@ 'alarmRuleForm.devcode'(newValue, oldValue) { for (const device of this.devices) { if (device.devcode === newValue) { - debugger this.baseInfo.deviceTypeName = device.deviceTypeName this.baseInfo.deviceType = device.deviceType this.alarmRuleForm.deviceType = device.deviceType @@ -241,7 +240,6 @@ addData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { - debugger const alarmRuleForm = { devcode: this.alarmRuleForm.devcode, // 设备编号 deviceType: this.alarmRuleForm.deviceType, // 设备类型 diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue index 311ba62..8f47394 100644 --- a/src/views/dashboard/components/PanelGroup.vue +++ b/src/views/dashboard/components/PanelGroup.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f117615..a8f9012 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -3,37 +3,37 @@ - + - + - + - + - + - + @@ -90,7 +90,6 @@ // 需要刷新 if (val) { console.log('refresh dashboard') - debugger this.$refs.panelgroup.refresh() } } diff --git a/src/views/dataStatics/dataStatics.vue b/src/views/dataStatics/dataStatics.vue index b8a9ebd..521c7ab 100644 --- a/src/views/dataStatics/dataStatics.vue +++ b/src/views/dataStatics/dataStatics.vue @@ -157,7 +157,7 @@ if (response.data.hasWell) { const defaultBeginTime = getDayTime(new Date().getTime() - 24 * 7 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss') const defaultEndTime = new Date().Format('yyyy-MM-dd hh:mm:ss') - if (this.timeRange.length === 0) { + if (this.timeRange === null || this.timeRange.length === 0) { this.timeRange = [defaultBeginTime, defaultEndTime] } that.listQuery.beginTime = this.timeRange[0] diff --git a/src/views/jobManage/listJobsOverTimeGet.vue b/src/views/jobManage/listJobsOverTimeGet.vue index 746a416..394d869 100644 --- a/src/views/jobManage/listJobsOverTimeGet.vue +++ b/src/views/jobManage/listJobsOverTimeGet.vue @@ -225,7 +225,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/jobManage/listJobsOverTimeHandle.vue b/src/views/jobManage/listJobsOverTimeHandle.vue index b0f2d59..41d629b 100644 --- a/src/views/jobManage/listJobsOverTimeHandle.vue +++ b/src/views/jobManage/listJobsOverTimeHandle.vue @@ -241,7 +241,6 @@ methods: { // 处理显示处理人 formatJobBelongTo(row, value) { - debugger if (row.jobStatusName !== '待处理' && !value) { return '系统' } else { diff --git a/src/views/overview/overview.vue b/src/views/overview/overview.vue index 936577c..b1e9694 100644 --- a/src/views/overview/overview.vue +++ b/src/views/overview/overview.vue @@ -74,10 +74,10 @@ import { getWellList, getWellInfo, getAlarmsNow, getWellAlarms, getWellByCode } from '@/api/overview' import DeptSelect from '../../components/DeptSelect/index' - import 'mars3d/dist/mars3d.css' - import * as mars3d from 'mars3d' - import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 - var Cesium = require('../../../node_modules/cesium/Source/Cesium') + // import 'mars3d/dist/mars3d.css' + // import * as mars3d from 'mars3d' + // import 'cesium/Source/Widgets/widgets.css'// 导入必须的样式表 + // var Cesium = require('../../../node_modules/cesium/Source/Cesium') var rectangle = null var alarmIcons= [] diff --git a/src/views/overview/overviewSmartwell.vue b/src/views/overview/overviewSmartwell.vue new file mode 100644 index 0000000..2fa03d2 --- /dev/null +++ b/src/views/overview/overviewSmartwell.vue @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + 搜索 + + 显示全部井 + + + + + + + + + + + + + + + + + 告警列表 + + + + + + + + + + + {{ scope.row[column.value] }} + + + + + + + + + + + + + + + + + + + diff --git a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue index d89da5f..d8502d1 100644 --- a/src/views/systemConfig/alarmLevel/components/editCOLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editCOLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue index 717c30b..6a7a973 100644 --- a/src/views/systemConfig/alarmLevel/components/editCh4Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editCh4Level.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue index 84271be..1a13bd7 100644 --- a/src/views/systemConfig/alarmLevel/components/editDigLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editDigLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue index b890225..202cc96 100644 --- a/src/views/systemConfig/alarmLevel/components/editGasLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editGasLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue && secondHighValue && firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue index 812966e..13b325f 100644 --- a/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editH2sLevel.vue @@ -114,7 +114,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -195,7 +194,6 @@ const firstHighValue = parseFloat(this.form.firstHighValue) const secondHighValue = parseFloat(this.form.secondHighValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue index 4449430..650adfc 100644 --- a/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editHumiLevel.vue @@ -242,7 +242,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue index ddd9433..6cf9c7e 100644 --- a/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editLiquidLevel.vue @@ -112,7 +112,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } diff --git a/src/views/systemConfig/alarmLevel/components/editO2Level.vue b/src/views/systemConfig/alarmLevel/components/editO2Level.vue index 6879ec5..18766ea 100644 --- a/src/views/systemConfig/alarmLevel/components/editO2Level.vue +++ b/src/views/systemConfig/alarmLevel/components/editO2Level.vue @@ -163,7 +163,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -255,7 +254,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/systemConfig/alarmLevel/components/editTempLevel.vue b/src/views/systemConfig/alarmLevel/components/editTempLevel.vue index 5300bd8..b0ff0ac 100644 --- a/src/views/systemConfig/alarmLevel/components/editTempLevel.vue +++ b/src/views/systemConfig/alarmLevel/components/editTempLevel.vue @@ -162,7 +162,6 @@ }, watch: { 'form.openAlarm': function(val) { - debugger if (val === '0') { this.form.openJob = '0' } @@ -212,7 +211,6 @@ }, // 解析列表数据为单表格 parseListToForm() { - debugger for (const item of this.list) { if (item.level === 1) { this.form.firstHighValue = item.highValue.toString() @@ -255,7 +253,6 @@ const secondLowValue = parseFloat(this.form.secondLowValue) const thirdHighValue = parseFloat(this.form.thirdHighValue) const thirdLowValue = parseFloat(this.form.thirdLowValue) - debugger if (firstHighValue <= secondHighValue) { this.$message.warning('一级告警上限必须大于二级告警上限') return false diff --git a/src/views/wellManage/listWell.vue b/src/views/wellManage/listWell.vue index 743bb64..5347b3c 100644 --- a/src/views/wellManage/listWell.vue +++ b/src/views/wellManage/listWell.vue @@ -434,7 +434,6 @@ // 获取井类型 fetchWellType() { getWellType().then(response => { - debugger this.wellTypeList = [] const wellTypes = this.$store.getters.wellTypes for (const wellType of response.data) { diff --git a/static/project.config.json b/static/project.config.json index 7065584..4b9d91a 100644 --- a/static/project.config.json +++ b/static/project.config.json @@ -1,11 +1,26 @@ { "title": "智能地下管网管理系统", - "baseUrl": "http://223.82.47.232:11401/", + "baseUrl": "http://111.198.10.15:11409/", "mainPage": "http://111.198.10.15:11404/dcms/#", + "baseGisUrl": "http://111.198.10.15:13002", + "gxServerUrl": "/arcgis/rest/services/crgx/MapServer", "singleSys": true, "city":"崇仁县", "mapUrl":"https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=216ee92889e17ab1b083fae665d522b8", "labelUrl":"https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=216ee92889e17ab1b083fae665d522b8", + "satelliteUrl":"http://111.198.10.15:20602/dom005/{z}/{x}/{y}.png", + "layers": [ + { "id": 0, "name": "底图", "type": "map", "domain": [] }, + { "id": 1, "name": "网格", "type": "layer", "domain": [] }, + { "id": 2, "name": "商户", "type": "layer", "domain": [] }, + { "id": 3, "name": "视频监控点", "type": "layer", "domain": [18] }, + { "id": 4, "name": "路灯杆和灯箱", "type": "layer", "domain": [6] }, + { "id": 5, "name": "雨水井盖", "type": "layer", "domain": [13] }, + { "id": 6, "name": "污水井盖", "type": "layer", "domain": [7] }, + { "id": 7, "name": "公共厕所", "type": "layer", "domain": [33], "minZoom": 14 }, + { "id": 8, "name": "垃圾箱", "type": "layer", "domain": [34]}, + { "id": 9, "name": "其他部件", "type": "layer", "domain": [0, 2, 3, 4, 5, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47] } + ], "center":[27.75962, 116.06021], "zoom":13 }