├── .env.development
├── .env.production
├── .env.test
├── .gitignore
├── README.md
├── babel.config.js
├── package.json
├── public
├── css
│ ├── MarkerCluster.Default.css
│ ├── MarkerCluster.css
│ ├── leaflet-vector-scalar.css
│ └── leaflet.css
├── favicon.ico
├── index.html
├── js
│ ├── chinaProvider.js
│ ├── geojson.js
│ ├── leaflet-typhoon.min.js
│ ├── leaflet-vector-scalar.js
│ ├── leaflet.js
│ ├── leaflet.latlng-graticule.js
│ ├── leaflet.markercluster-src.js
│ ├── leaflet.motion.min.js
│ └── turf.min.js
├── logo.png
└── logo
│ └── TB.png
├── src
├── App.vue
├── assets
│ ├── arrow.svg
│ ├── arrowOrange.png
│ ├── arrowOrange.svg
│ ├── arrowRed.png
│ ├── arrowRed.svg
│ ├── arrowWhite.png
│ ├── arrowWhite.svg
│ ├── arrowYellow.png
│ ├── arrowYellow.svg
│ ├── chuan.png
│ ├── chuanLight.png
│ ├── closedhand.cur
│ ├── common.css
│ ├── control-panel.png
│ ├── distance-logo.png
│ ├── draw.png
│ ├── eye-close.png
│ ├── influence-logo.png
│ ├── logo.png
│ ├── logo1.png
│ ├── map
│ │ ├── arrowRed.png
│ │ ├── 仓库.png
│ │ ├── 作业区.png
│ │ ├── 加号.png
│ │ ├── 平台.png
│ │ ├── 播放.png
│ │ ├── 暂停.png
│ │ ├── 气压.png
│ │ ├── 油气田平台.png
│ │ ├── 洋流.png
│ │ ├── 海浪.png
│ │ ├── 温度.png
│ │ ├── 港口.png
│ │ ├── 港口码头.png
│ │ ├── 盐度.png
│ │ ├── 管线.png
│ │ ├── 管线1.png
│ │ ├── 管线2.png
│ │ ├── 管线3.png
│ │ ├── 经纬网格.png
│ │ ├── 船舶.png
│ │ ├── 船舶聚合.png
│ │ ├── 警戒线.png
│ │ ├── 设备库.png
│ │ ├── 进水温度.png
│ │ └── 风场.png
│ ├── openhand.cur
│ ├── platformLogo.png
│ ├── sea-risk-legend.png
│ ├── setting.png
│ ├── shipLogo.png
│ ├── shipLogo1.png
│ ├── tool
│ │ ├── area.png
│ │ ├── arrow.ico
│ │ ├── circle.png
│ │ ├── clear.png
│ │ ├── dashed.png
│ │ ├── del.png
│ │ ├── distance.png
│ │ ├── distance1.png
│ │ ├── edit.png
│ │ ├── flag_icon.png
│ │ ├── font.png
│ │ ├── icon_marker.png
│ │ ├── line.png
│ │ ├── line_marker.png
│ │ ├── location_icon.png
│ │ ├── more.png
│ │ ├── polygon.png
│ │ ├── position.png
│ │ ├── screenshot.png
│ │ ├── shape_marker.png
│ │ ├── sight_icon.png
│ │ ├── sign.png
│ │ ├── square.png
│ │ └── star_icon.png
│ ├── typhoon-legend.png
│ ├── typhoon-logo-white.png
│ ├── typhoon-logo.gif
│ ├── typhoon-logo.png
│ ├── upload.png
│ ├── xiangliang.png
│ └── 油气田平台.png
├── components
│ ├── map
│ │ ├── LeafletMap.vue
│ │ └── MapLayerControl.vue
│ ├── progress
│ │ └── Progress.vue
│ └── zTree
│ │ ├── ZTree.vue
│ │ └── ZTreeMobile.vue
├── config
│ └── index.js
├── http
│ ├── events.js
│ ├── field-info.js
│ ├── index.js
│ ├── mapLayer.js
│ ├── platform-info.js
│ ├── platform.js
│ ├── riskEstimate.js
│ ├── ship.js
│ ├── system.js
│ ├── typhoon.js
│ ├── typhoonConfig.js
│ └── user.js
├── main.js
├── mock
│ ├── china.js
│ ├── data
│ │ ├── deviceData.js
│ │ ├── index.js
│ │ ├── portData.js
│ │ ├── pressure.js
│ │ ├── salinit.js
│ │ ├── sea-wave.js
│ │ ├── seaCurrentData.js
│ │ ├── temperature.js
│ │ └── windData.js
│ ├── testData.js
│ ├── windData.js
│ └── world.js
├── plugins
│ ├── vant.js
│ └── zTree
│ │ ├── css
│ │ ├── awesomeStyle
│ │ │ ├── awesome.css
│ │ │ ├── awesome.less
│ │ │ ├── fa.less
│ │ │ └── img
│ │ │ │ └── loading.gif
│ │ ├── demo.css
│ │ ├── metroStyle
│ │ │ ├── img
│ │ │ │ ├── line_conn.png
│ │ │ │ ├── loading.gif
│ │ │ │ ├── metro.gif
│ │ │ │ └── metro.png
│ │ │ └── metroStyle.css
│ │ └── zTreeStyle
│ │ │ ├── img
│ │ │ ├── diy
│ │ │ │ ├── 1_close.png
│ │ │ │ ├── 1_open.png
│ │ │ │ ├── 2.png
│ │ │ │ ├── 3.png
│ │ │ │ ├── 4.png
│ │ │ │ ├── 5.png
│ │ │ │ ├── 6.png
│ │ │ │ ├── 7.png
│ │ │ │ ├── 8.png
│ │ │ │ └── 9.png
│ │ │ ├── line_conn.gif
│ │ │ ├── loading.gif
│ │ │ ├── zTreeStandard.gif
│ │ │ └── zTreeStandard.png
│ │ │ └── zTreeStyle.css
│ │ └── js
│ │ ├── jquery-1.4.4.min.js
│ │ ├── jquery.ztree.all.js
│ │ ├── jquery.ztree.all.min.js
│ │ ├── jquery.ztree.core.js
│ │ ├── jquery.ztree.core.min.js
│ │ ├── jquery.ztree.excheck.js
│ │ ├── jquery.ztree.excheck.min.js
│ │ ├── jquery.ztree.exedit.js
│ │ ├── jquery.ztree.exedit.min.js
│ │ ├── jquery.ztree.exhide.js
│ │ └── jquery.ztree.exhide.min.js
├── registerServiceWorker.js
├── router
│ └── index.js
├── store
│ ├── index.js
│ └── modules
│ │ ├── moduleHome.js
│ │ └── moduleMap.js
├── utils
│ ├── Token.js
│ ├── dialogDrag.js
│ └── util.js
└── views
│ ├── 404.vue
│ └── Home.vue
└── vue.config.js
/.env.development:
--------------------------------------------------------------------------------
1 | NODE_ENV = 'development'
2 | VUE_APP_MODE = 'development'
3 | VUE_APP_SERVER_URL = 'http://web.dev.ops.com:8088'
4 | VUE_APP_BASE_URL = 'http://api.dev.ops.com:7000/typhoon'
5 | VUE_APP_AUTH_URL = 'http://api.dev.ops.com:7000/ops-upms'
--------------------------------------------------------------------------------
/.env.production:
--------------------------------------------------------------------------------
1 | NODE_ENV = 'production'
2 | VUE_APP_MODE = 'production'
3 | outputDir = 'dist'
4 | VUE_APP_SERVER_URL = 'http://phoon.opstest.qdptzn.com'
5 | VUE_APP_BASE_URL = 'http://api.opstest.qdptzn.com/typhoon'
6 | VUE_APP_AUTH_URL = 'http://api.opstest.qdptzn.com/ops-upms'
7 |
--------------------------------------------------------------------------------
/.env.test:
--------------------------------------------------------------------------------
1 | NODE_ENV = 'production'
2 | VUE_APP_MODE = 'test'
3 | outputDir = 'test'
4 | VUE_APP_SERVER_URL = 'http://phoon.opstest.qdptzn.com'
5 | VUE_APP_BASE_URL = 'http://api.opstest.qdptzn.com/typhoon'
6 | VUE_APP_AUTH_URL = 'http://api.opstest.qdptzn.com/ops-upms'
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | yarn.lock
14 | package-lock.json
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 | .history/
25 | /test/
26 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # leaflet-vector-scalar-js
2 |
3 | 基于leaflet.js实现的矢量、标量数据可视化Demo。
4 | 包含风场、海浪、洋流、气压、温度等矢量或标量气象数据的可视化展示。
5 |
6 | ## Demo 视频
7 |
8 | [Leaflet动态显示--风场、海浪、洋流、气压、温度等矢量、标量数据](https://v.youku.com/v_show/id_XNDg0OTMzNzUxNg==.html)
9 |
10 | ## 依赖安装
11 | ```
12 | npm install
13 | ```
14 |
15 | ### 本地开发调试
16 | ```
17 | npm run serve
18 | ```
19 | ### 参考项目
20 |
21 | + [leaflet-velocity](https://github.com/danwild/leaflet-velocity)
22 |
23 | + [earth](https://github.com/cambecc/earth)
24 |
25 | ### Demo核心
26 |
27 | leaflet-vector-scalar.js 是Demo的核心文件。是基于leaflet-velocity(矢量部分) 同时参考 earth(标量部分) 项目来完成的。
28 | 代码还不是很完善,近期可能没有太多时间去修改。
29 |
30 | ### License
31 | MIT License (MIT)
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wind-demo",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint",
9 | "test": "vue-cli-service build --mode test",
10 | "publish": "vue-cli-service build && vue-cli-service build --mode test"
11 | },
12 | "dependencies": {
13 | "@vant/touch-emulator": "^1.2.0",
14 | "axios": "^0.19.2",
15 | "core-js": "^3.6.4",
16 | "dateformat": "^3.0.3",
17 | "echarts": "^4.6.0",
18 | "element-ui": "^2.13.0",
19 | "heatmap.js": "^2.0.5",
20 | "html2canvas": "^1.0.0-rc.5",
21 | "leaflet": "^1.6.0",
22 | "leaflet-draw": "^1.0.4",
23 | "leaflet-echarts": "^0.2.1",
24 | "leaflet.motion": "^0.1.5",
25 | "moment": "^2.24.0",
26 | "qs": "^6.9.1",
27 | "register-service-worker": "^1.6.2",
28 | "store2": "^2.10.0",
29 | "vant": "^2.5.9",
30 | "view-design": "^4.1.3",
31 | "vue": "^2.6.11",
32 | "vue-echarts": "^4.1.0",
33 | "vue-router": "^3.1.5",
34 | "vue2-leaflet": "^2.5.2",
35 | "vuex": "^3.1.2"
36 | },
37 | "devDependencies": {
38 | "@vue/cli-plugin-babel": "^4.2.0",
39 | "@vue/cli-plugin-eslint": "^4.2.0",
40 | "@vue/cli-plugin-pwa": "^4.2.0",
41 | "@vue/cli-service": "^4.2.0",
42 | "babel-eslint": "^10.0.3",
43 | "css-loader": "^3.4.2",
44 | "eslint": "^6.7.2",
45 | "eslint-plugin-vue": "^6.1.2",
46 | "less": "^2.7.3",
47 | "less-loader": "^4.1.0",
48 | "vue-template-compiler": "^2.6.11"
49 | },
50 | "eslintConfig": {
51 | "root": true,
52 | "env": {
53 | "node": true
54 | },
55 | "extends": [
56 | "plugin:vue/essential",
57 | "eslint:recommended"
58 | ],
59 | "parserOptions": {
60 | "parser": "babel-eslint"
61 | },
62 | "rules": {}
63 | },
64 | "browserslist": [
65 | "> 1%",
66 | "last 2 versions"
67 | ]
68 | }
69 |
--------------------------------------------------------------------------------
/public/css/MarkerCluster.Default.css:
--------------------------------------------------------------------------------
1 | .marker-cluster-small {
2 | background-color: rgba(181, 226, 140, 0.6);
3 | }
4 | .marker-cluster-small div {
5 | background-color: rgba(110, 204, 57, 0.6);
6 | }
7 |
8 | .marker-cluster-medium {
9 | background-color: rgba(241, 211, 87, 0.6);
10 | }
11 | .marker-cluster-medium div {
12 | background-color: rgba(240, 194, 12, 0.6);
13 | }
14 |
15 | .marker-cluster-large {
16 | background-color: rgba(253, 156, 115, 0.6);
17 | }
18 | .marker-cluster-large div {
19 | background-color: rgba(241, 128, 23, 0.6);
20 | }
21 |
22 | /* IE 6-8 fallback colors */
23 | .leaflet-oldie .marker-cluster-small {
24 | background-color: rgb(181, 226, 140);
25 | }
26 | .leaflet-oldie .marker-cluster-small div {
27 | background-color: rgb(110, 204, 57);
28 | }
29 |
30 | .leaflet-oldie .marker-cluster-medium {
31 | background-color: rgb(241, 211, 87);
32 | }
33 | .leaflet-oldie .marker-cluster-medium div {
34 | background-color: rgb(240, 194, 12);
35 | }
36 |
37 | .leaflet-oldie .marker-cluster-large {
38 | background-color: rgb(253, 156, 115);
39 | }
40 | .leaflet-oldie .marker-cluster-large div {
41 | background-color: rgb(241, 128, 23);
42 | }
43 |
44 | .marker-cluster {
45 | background-clip: padding-box;
46 | border-radius: 20px;
47 | }
48 | .marker-cluster div {
49 | width: 30px;
50 | height: 30px;
51 | margin-left: 5px;
52 | margin-top: 5px;
53 |
54 | text-align: center;
55 | border-radius: 15px;
56 | font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
57 | }
58 | .marker-cluster span {
59 | line-height: 30px;
60 | }
--------------------------------------------------------------------------------
/public/css/MarkerCluster.css:
--------------------------------------------------------------------------------
1 | .leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
2 | -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
3 | -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
4 | -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
5 | transition: transform 0.3s ease-out, opacity 0.3s ease-in;
6 | }
7 |
8 | .leaflet-cluster-spider-leg {
9 | /* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
10 | -webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
11 | -moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
12 | -o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
13 | transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
14 | }
15 |
--------------------------------------------------------------------------------
/public/css/leaflet-vector-scalar.css:
--------------------------------------------------------------------------------
1 | .leaflet-control-velocity {
2 | background-color: rgba(255, 255, 255, 0.7);
3 | padding: 0 5px;
4 | margin: 0 !important;
5 | color: #333;
6 | font: 11px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
7 | }
8 |
9 | .velocity-overlay {
10 | position: absolute;
11 | z-index: 1;
12 | }
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 气象数据可视化
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/public/js/chinaProvider.js:
--------------------------------------------------------------------------------
1 | L.TileLayer.ChinaProvider = L.TileLayer.extend({
2 |
3 | initialize: function(type, options) { // (type, Object)
4 | var providers = L.TileLayer.ChinaProvider.providers;
5 |
6 | var parts = type.split('.');
7 |
8 | var providerName = parts[0];
9 | var mapName = parts[1];
10 | var mapType = parts[2];
11 |
12 | var url = providers[providerName][mapName][mapType];
13 | options.subdomains = providers[providerName].Subdomains;
14 | options.key = options.key || providers[providerName].key;
15 | L.TileLayer.prototype.initialize.call(this, url, options);
16 | }
17 | });
18 |
19 | L.TileLayer.ChinaProvider.providers = {
20 | TianDiTu: {
21 | Normal: {
22 | Map: "http://t{s}.tianditu.com/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk={key}",
23 | Annotion: "http://t{s}.tianditu.com/DataServer?T=cva_w&X={x}&Y={y}&L={z}&tk={key}"
24 | },
25 | Satellite: {
26 | Map: "http://t{s}.tianditu.com/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk={key}",
27 | Annotion: "http://t{s}.tianditu.com/DataServer?T=cia_w&X={x}&Y={y}&L={z}&tk={key}"
28 | },
29 | Terrain: {
30 | Map: "http://t{s}.tianditu.com/DataServer?T=ter_w&X={x}&Y={y}&L={z}&tk={key}",
31 | Annotion: "http://t{s}.tianditu.com/DataServer?T=cta_w&X={x}&Y={y}&L={z}&tk={key}"
32 | },
33 | Subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
34 | key: "174705aebfe31b79b3587279e211cb9a"
35 | },
36 |
37 | GaoDe: {
38 | Normal: {
39 | Map: 'http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'
40 | },
41 | Satellite: {
42 | Map: 'http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
43 | Annotion: 'http://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}'
44 | },
45 | Subdomains: ["1", "2", "3", "4"]
46 | },
47 |
48 | Google: {
49 | Normal: {
50 | Map: "http://www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}"
51 | },
52 | Satellite: {
53 | Map: "http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}",
54 | Annotion:"https://ditu.google.cn/maps/vt?pb=!1m5!1m4!1i{z}!2i{x}!3i{y}!4i256!2m3!1e0!2sm!3i413113259!3m12!2szh-CN!3sCN!5e18!12m4!1e68!2m2!1sset!2sRoadmapSatellite!12m3!1e37!2m1!1ssmartmaps!4e0!23i1301875&token=59227"
55 | },
56 | Subdomains: []
57 | },
58 |
59 | Geoq: {
60 | Normal: {
61 | Map: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
62 | PurplishBlue: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
63 | Gray: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}",
64 | Warm: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}",
65 | },
66 | Theme: {
67 | Hydro: "http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}"
68 | },
69 | Subdomains: []
70 | },
71 |
72 | OSM: {
73 | Normal: {
74 | Map: "http://{s}.tile.osm.org/{z}/{x}/{y}.png",
75 | },
76 | Subdomains: ['a', 'b', 'c']
77 | }
78 |
79 | };
80 |
81 | L.tileLayer.chinaProvider = function(type, options) {
82 | return new L.TileLayer.ChinaProvider(type, options);
83 | };
--------------------------------------------------------------------------------
/public/js/leaflet-typhoon.min.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | L.Typhoon = L.Polygon.extend({
3 | initialize: function (t, e, i) {
4 | L.Polygon.prototype.initialize.call(this, e), this._latlng = L.latLng(t), this._circle = e,this._style = i;
5 | },
6 | options: {fill: !0},
7 | projectLatlngs: function () {
8 | try {
9 | var e = this._latlng;
10 | this._point = this._map.latLngToLayerPoint(e);
11 | var t_northeast = this._getLngRadius(this._getLatRadius(this._circle.ne * 1000)),
12 | i_northeast = this._map.latLngToLayerPoint([e.lat, e.lng - t_northeast]);
13 | this._radius_northeast = Math.max(this._point.x - i_northeast.x, 1);
14 | var t_southeast = this._getLngRadius(this._getLatRadius(this._circle.se * 1000)),
15 | i_southeast = this._map.latLngToLayerPoint([e.lat, e.lng - t_southeast]);
16 | this._radius_southeast = Math.max(this._point.x - i_southeast.x, 1);
17 | var t_southwest = this._getLngRadius(this._getLatRadius(this._circle.sw * 1000)),
18 | i_southwest = this._map.latLngToLayerPoint([e.lat, e.lng - t_southwest]);
19 | this._radius_southwest = Math.max(this._point.x - i_southwest.x, 1);
20 | var t_northwest = this._getLngRadius(this._getLatRadius(this._circle.nw * 1000)),
21 | i_northwest = this._map.latLngToLayerPoint([e.lat, e.lng - t_northwest]);
22 | this._radius_northwest = Math.max(this._point.x - i_northwest.x, 1)
23 | } catch (e) {
24 | this._radius_northeast = null;
25 | this._radius_southeast = null;
26 | this._radius_southwest = null;
27 | this._radius_northwest = null
28 | }
29 | },
30 | getTyphoonPath: function () {
31 | if (this._radius_northeast && this._radius_southeast && this._radius_southwest && this._radius_northwest) {
32 | var t = this._point;
33 | var e_northeast = this._radius_northeast;
34 | var path_svg = "M" + t.x + "," + (t.y - e_northeast);
35 | var path_vml = "M" + t.x + "," + (t.y - e_northeast);
36 | path_svg += "A" + e_northeast + "," + e_northeast + ",0,0,1," + (t.x + e_northeast) + "," + t.y;
37 | path_vml += " ae " + t.x + "," + t.y + " " + e_northeast + "," + e_northeast + " " + 65535 * 450 + "," + -5898150;
38 | var e_southeast = this._radius_southeast;
39 | path_svg += "L" + (t.x + e_southeast) + "," + t.y;
40 | path_svg += "A" + e_southeast + "," + e_southeast + ",0,0,1," + t.x + "," + (t.y + e_southeast);
41 | path_vml += " ae " + t.x + "," + t.y + " " + e_southeast + "," + e_southeast + " " + 65535 * 360 + "," + -5898150;
42 | var e_southwest = this._radius_southwest;
43 | path_svg += "L" + t.x + "," + (t.y + e_southwest);
44 | path_svg += "A" + e_southwest + "," + e_southwest + ",0,0,1," + (t.x - e_southwest) + "," + t.y;
45 | path_vml += " ae " + t.x + "," + t.y + " " + e_southwest + "," + e_southwest + " " + 65535 * 270 + "," + -5898150;
46 | var e_northwest = this._radius_northwest;
47 | path_svg += "L" + (t.x - e_northwest) + "," + t.y;
48 | path_svg += "A" + e_northwest + "," + e_northwest + ",0,0,1," + t.x + "," + (t.y - e_northwest) + "z";
49 | path_vml += " ae " + t.x + "," + t.y + " " + e_northwest + "," + e_northwest + " " + 65535 * 180 + "," + -5898150 + "X";
50 | this.svgPath = L.Browser.svg ? path_svg : path_vml
51 | return L.Browser.svg ? path_svg : path_vml
52 | }
53 | return ""
54 | },
55 | beforeAdd: function (map) {
56 | // Renderer is set here because we need to call renderer.getEvents
57 | // before this.getEvents.
58 | this._renderer = map.getRenderer(this);
59 | },
60 |
61 | onAdd: function (map) {
62 | this.projectLatlngs();
63 | this.getTyphoonPath();
64 | this._renderer._initPath(this);
65 | this._reset();
66 | this._path.setAttribute('d',this.svgPath);
67 | this._renderer._addPath(this);
68 | this._setStyle(this._style);
69 | },
70 |
71 | _setStyle: function (style) {
72 | L.setOptions(this, style);
73 | if (this._renderer) {
74 | this._renderer._updateStyle(this);
75 | }
76 | return this;
77 | },
78 | _getLatRadius: function (r) {
79 | return r / 40075017 * 360
80 | },
81 | _getLngRadius: function (lr) {
82 | return lr / Math.cos(Math.PI / 180 * this._latlng.lat)
83 | }
84 | });
85 |
86 | L.typhoon = function (t, e, i) {
87 | return new L.Typhoon(t, e, i)
88 | }
89 |
90 | })();
--------------------------------------------------------------------------------
/public/js/leaflet.motion.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | *
3 | * leaflet.motion - v0.1.5 (https://github.com/Igor-Vladyka/leaflet.motion#readme)
4 | * Animation plugin for Leaflet.js
5 | *
6 | * MIT (http://www.opensource.org/licenses/mit-license.php)
7 | * (c) 2019 Igor Vladyka (https://github.com/Igor-Vladyka/)
8 | *
9 | */!function(t){var n={};function e(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=t,e.c=n,e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:i})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(e.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(i,o,function(n){return t[n]}.bind(null,o));return i},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=6)}([function(t,n){L.Motion.Seq=L.Motion.Group.extend({_activeLayer:null,motionStart:function(){var t=this.getFirstLayer();return t&&(this.__prepareStart(),t.motionStart(),this.fire(L.Motion.Event.Started,{layer:this},!1)),this},motionStop:function(){return this.invoke("motionStop"),this._activeLayer=null,this.fire(L.Motion.Event.Ended,{layer:this},!1),this},motionPause:function(){return this._activeLayer&&(this._activeLayer.motionPause(),this.fire(L.Motion.Event.Paused,{layer:this},!1)),this},motionResume:function(){return this._activeLayer&&(this._activeLayer.motionResume(),this.fire(L.Motion.Event.Resumed,{layer:this},!1)),this},motionToggle:function(){return this._activeLayer?this.motionPause():this.motionResume(),this},getFirstLayer:function(){var t=this.getLayers();return t.length?t[0]:null},__prepareStart:function(){var t=this;this.getLayers().forEach(function(n){n.off(L.Motion.Event.Ended,t.__clearActiveLayer__,t),n.on(L.Motion.Event.Ended,t.__clearActiveLayer__,t),n.off(L.Motion.Event.Started,t.__putActiveLayer__,t),n.on(L.Motion.Event.Started,t.__putActiveLayer__,t)})},__clearActiveLayer__:function(t){this._activeLayer=null;var n=this.getLayers(),e=t.layer._leaflet_id,i=n.filter(function(t){return t._leaflet_id==e})[0],o=n.indexOf(i)+1;n.length>o?n[o].motionStart():this.fire(L.Motion.Event.Ended,{layer:this},!1)},__putActiveLayer__:function(t){this._activeLayer=t.layer,this.fire(L.Motion.Event.Section,{layer:this._activeLayer},!1)}}),L.motion.seq=function(t,n){return new L.Motion.Seq(t,n)}},function(t,n){L.Motion.Group=L.FeatureGroup.extend({options:{pane:L.Motion.Animate.options.pane,attribution:L.Motion.Animate.options.attribution},motionStart:function(){return this.invoke("motionStart"),this.fire(L.Motion.Event.Started,{layer:this},!1),this},motionStop:function(){return this.invoke("motionStop"),this.fire(L.Motion.Event.Ended,{layer:this},!1),this},motionPause:function(){return this.invoke("motionPause"),this.fire(L.Motion.Event.Paused,{layer:this},!1),this},motionResume:function(){return this.invoke("motionResume"),this.fire(L.Motion.Event.Resumed,{layer:this},!1),this},motionToggle:function(){return this.invoke("motionToggle"),this},getMarkers:function(){return this.getLayers().map(function(t){return t.getMarkers()})}}),L.motion.group=function(t,n){return new L.Motion.Group(t,n)}},function(t,n){L.Motion.Polyline=L.Polyline.extend(L.Motion.Animate),L.motion.polyline=function(t,n,e,i){return new L.Motion.Polyline(t,n,e,i)}},function(t,n){L.Motion.Ease={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},easeInQuad:function(t,n,e,i,o){return i*(n/=o)*n+e},easeOutQuad:function(t,n,e,i,o){return-i*(n/=o)*(n-2)+e},easeInOutQuad:function(t,n,e,i,o){return(n/=o/2)<1?i/2*n*n+e:-i/2*(--n*(n-2)-1)+e},easeInCubic:function(t,n,e,i,o){return i*(n/=o)*n*n+e},easeOutCubic:function(t,n,e,i,o){return i*((n=n/o-1)*n*n+1)+e},easeInOutCubic:function(t,n,e,i,o){return(n/=o/2)<1?i/2*n*n*n+e:i/2*((n-=2)*n*n+2)+e},easeInQuart:function(t,n,e,i,o){return i*(n/=o)*n*n*n+e},easeOutQuart:function(t,n,e,i,o){return-i*((n=n/o-1)*n*n*n-1)+e},easeInOutQuart:function(t,n,e,i,o){return(n/=o/2)<1?i/2*n*n*n*n+e:-i/2*((n-=2)*n*n*n-2)+e},easeInQuint:function(t,n,e,i,o){return i*(n/=o)*n*n*n*n+e},easeOutQuint:function(t,n,e,i,o){return i*((n=n/o-1)*n*n*n*n+1)+e},easeInOutQuint:function(t,n,e,i,o){return(n/=o/2)<1?i/2*n*n*n*n*n+e:i/2*((n-=2)*n*n*n*n+2)+e},easeInSine:function(t,n,e,i,o){return-i*Math.cos(n/o*(Math.PI/2))+i+e},easeOutSine:function(t,n,e,i,o){return i*Math.sin(n/o*(Math.PI/2))+e},easeInOutSine:function(t,n,e,i,o){return-i/2*(Math.cos(Math.PI*n/o)-1)+e},easeInExpo:function(t,n,e,i,o){return 0==n?e:i*Math.pow(2,10*(n/o-1))+e},easeOutExpo:function(t,n,e,i,o){return n==o?e+i:i*(1-Math.pow(2,-10*n/o))+e},easeInOutExpo:function(t,n,e,i,o){return 0==n?e:n==o?e+i:(n/=o/2)<1?i/2*Math.pow(2,10*(n-1))+e:i/2*(2-Math.pow(2,-10*--n))+e},easeInCirc:function(t,n,e,i,o){return-i*(Math.sqrt(1-(n/=o)*n)-1)+e},easeOutCirc:function(t,n,e,i,o){return i*Math.sqrt(1-(n=n/o-1)*n)+e},easeInOutCirc:function(t,n,e,i,o){return(n/=o/2)<1?-i/2*(Math.sqrt(1-n*n)-1)+e:i/2*(Math.sqrt(1-(n-=2)*n)+1)+e},easeInElastic:function(t,n,e,i,o){var r=1.70158,a=0,s=i;if(0==n)return e;if(1==(n/=o))return e+i;if(a||(a=.3*o),s0&&(a+=r[s-1].distanceTo(r[s]));var u=a*e,h=0,l=0;for(s=0;l
2 |
3 |
4 |
5 |
6 |
48 |
70 |
171 |
174 |
--------------------------------------------------------------------------------
/src/assets/arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/arrowOrange.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/arrowOrange.png
--------------------------------------------------------------------------------
/src/assets/arrowOrange.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/arrowRed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/arrowRed.png
--------------------------------------------------------------------------------
/src/assets/arrowRed.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/arrowWhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/arrowWhite.png
--------------------------------------------------------------------------------
/src/assets/arrowWhite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/arrowYellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/arrowYellow.png
--------------------------------------------------------------------------------
/src/assets/arrowYellow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/chuan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/chuan.png
--------------------------------------------------------------------------------
/src/assets/chuanLight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/chuanLight.png
--------------------------------------------------------------------------------
/src/assets/closedhand.cur:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/closedhand.cur
--------------------------------------------------------------------------------
/src/assets/common.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: 0 none;
5 | list-style: none;
6 | text-decoration: none;
7 | }
8 |
9 |
10 | ::-webkit-scrollbar {
11 | width: 5px;
12 | /*height: 5px;*/
13 | }
14 |
15 | /* 滚动槽 */
16 |
17 | ::-webkit-scrollbar-track {
18 | -webkit-box-shadow: inset 0 0 5px rgba(244, 255, 239, 0.8);
19 | border-radius: 0;
20 | background: rgba(0, 60, 56, 0.1);
21 | }
22 |
23 | /* 滚动条滑块 */
24 |
25 | ::-webkit-scrollbar-thumb {
26 | border-radius: 10px;
27 | -webkit-box-shadow: inset 0 0 5px rgb(156, 156, 156);
28 | background: rgba(255, 255, 255, 0.66);
29 | }
30 |
31 | body {
32 | width: 100%;
33 | overflow: hidden;
34 | font-family: "Microsoft YaHei", "微软雅黑";
35 | -webkit-font-smoothing: antialiased;
36 | -moz-osx-font-smoothing: grayscale;
37 | }
38 |
39 | hr {
40 | border-bottom: 1px solid #FFF;
41 | margin: 0 10px;
42 | }
43 |
44 | .clear {
45 | clear: both;
46 | }
47 |
48 | .collTitle {
49 | width: 100%
50 | }
51 | .f-12{
52 | font-size: 12px;
53 | }
54 | .collLine {
55 | float: left;
56 | height: 18px;
57 | border-left: 2px solid #FFF;
58 | border-right: 2px solid #FFF;
59 | border-radius: 2px;
60 | margin-left: 10px;
61 | margin-top: 10px;
62 | }
63 |
64 | .collText {
65 | text-align: left;
66 | padding-left: 20px;
67 | font-size: 14px;
68 | }
69 |
70 | .centerText {
71 | text-align: center;
72 | }
73 |
74 | .white {
75 | color: white;
76 | }
77 |
--------------------------------------------------------------------------------
/src/assets/control-panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/control-panel.png
--------------------------------------------------------------------------------
/src/assets/distance-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/distance-logo.png
--------------------------------------------------------------------------------
/src/assets/draw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/draw.png
--------------------------------------------------------------------------------
/src/assets/eye-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/eye-close.png
--------------------------------------------------------------------------------
/src/assets/influence-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/influence-logo.png
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/logo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/logo1.png
--------------------------------------------------------------------------------
/src/assets/map/arrowRed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/arrowRed.png
--------------------------------------------------------------------------------
/src/assets/map/仓库.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/仓库.png
--------------------------------------------------------------------------------
/src/assets/map/作业区.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/作业区.png
--------------------------------------------------------------------------------
/src/assets/map/加号.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/加号.png
--------------------------------------------------------------------------------
/src/assets/map/平台.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/平台.png
--------------------------------------------------------------------------------
/src/assets/map/播放.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/播放.png
--------------------------------------------------------------------------------
/src/assets/map/暂停.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/暂停.png
--------------------------------------------------------------------------------
/src/assets/map/气压.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/气压.png
--------------------------------------------------------------------------------
/src/assets/map/油气田平台.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/油气田平台.png
--------------------------------------------------------------------------------
/src/assets/map/洋流.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/洋流.png
--------------------------------------------------------------------------------
/src/assets/map/海浪.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/海浪.png
--------------------------------------------------------------------------------
/src/assets/map/温度.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/温度.png
--------------------------------------------------------------------------------
/src/assets/map/港口.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/港口.png
--------------------------------------------------------------------------------
/src/assets/map/港口码头.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/港口码头.png
--------------------------------------------------------------------------------
/src/assets/map/盐度.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/盐度.png
--------------------------------------------------------------------------------
/src/assets/map/管线.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/管线.png
--------------------------------------------------------------------------------
/src/assets/map/管线1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/管线1.png
--------------------------------------------------------------------------------
/src/assets/map/管线2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/管线2.png
--------------------------------------------------------------------------------
/src/assets/map/管线3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/管线3.png
--------------------------------------------------------------------------------
/src/assets/map/经纬网格.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/经纬网格.png
--------------------------------------------------------------------------------
/src/assets/map/船舶.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/船舶.png
--------------------------------------------------------------------------------
/src/assets/map/船舶聚合.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/船舶聚合.png
--------------------------------------------------------------------------------
/src/assets/map/警戒线.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/警戒线.png
--------------------------------------------------------------------------------
/src/assets/map/设备库.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/设备库.png
--------------------------------------------------------------------------------
/src/assets/map/进水温度.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/进水温度.png
--------------------------------------------------------------------------------
/src/assets/map/风场.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/map/风场.png
--------------------------------------------------------------------------------
/src/assets/openhand.cur:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/openhand.cur
--------------------------------------------------------------------------------
/src/assets/platformLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/platformLogo.png
--------------------------------------------------------------------------------
/src/assets/sea-risk-legend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/sea-risk-legend.png
--------------------------------------------------------------------------------
/src/assets/setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/setting.png
--------------------------------------------------------------------------------
/src/assets/shipLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/shipLogo.png
--------------------------------------------------------------------------------
/src/assets/shipLogo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/shipLogo1.png
--------------------------------------------------------------------------------
/src/assets/tool/area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/area.png
--------------------------------------------------------------------------------
/src/assets/tool/arrow.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/arrow.ico
--------------------------------------------------------------------------------
/src/assets/tool/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/circle.png
--------------------------------------------------------------------------------
/src/assets/tool/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/clear.png
--------------------------------------------------------------------------------
/src/assets/tool/dashed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/dashed.png
--------------------------------------------------------------------------------
/src/assets/tool/del.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/del.png
--------------------------------------------------------------------------------
/src/assets/tool/distance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/distance.png
--------------------------------------------------------------------------------
/src/assets/tool/distance1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/distance1.png
--------------------------------------------------------------------------------
/src/assets/tool/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/edit.png
--------------------------------------------------------------------------------
/src/assets/tool/flag_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/flag_icon.png
--------------------------------------------------------------------------------
/src/assets/tool/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/font.png
--------------------------------------------------------------------------------
/src/assets/tool/icon_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/icon_marker.png
--------------------------------------------------------------------------------
/src/assets/tool/line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/line.png
--------------------------------------------------------------------------------
/src/assets/tool/line_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/line_marker.png
--------------------------------------------------------------------------------
/src/assets/tool/location_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/location_icon.png
--------------------------------------------------------------------------------
/src/assets/tool/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/more.png
--------------------------------------------------------------------------------
/src/assets/tool/polygon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/polygon.png
--------------------------------------------------------------------------------
/src/assets/tool/position.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/position.png
--------------------------------------------------------------------------------
/src/assets/tool/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/screenshot.png
--------------------------------------------------------------------------------
/src/assets/tool/shape_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/shape_marker.png
--------------------------------------------------------------------------------
/src/assets/tool/sight_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/sight_icon.png
--------------------------------------------------------------------------------
/src/assets/tool/sign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/sign.png
--------------------------------------------------------------------------------
/src/assets/tool/square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/square.png
--------------------------------------------------------------------------------
/src/assets/tool/star_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/tool/star_icon.png
--------------------------------------------------------------------------------
/src/assets/typhoon-legend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/typhoon-legend.png
--------------------------------------------------------------------------------
/src/assets/typhoon-logo-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/typhoon-logo-white.png
--------------------------------------------------------------------------------
/src/assets/typhoon-logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/typhoon-logo.gif
--------------------------------------------------------------------------------
/src/assets/typhoon-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/typhoon-logo.png
--------------------------------------------------------------------------------
/src/assets/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/upload.png
--------------------------------------------------------------------------------
/src/assets/xiangliang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/xiangliang.png
--------------------------------------------------------------------------------
/src/assets/油气田平台.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/assets/油气田平台.png
--------------------------------------------------------------------------------
/src/components/progress/Progress.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
数据加载中...{{`(${proBar}%)`}}
9 |
10 |
11 |
12 |
13 |
14 |
71 |
89 |
--------------------------------------------------------------------------------
/src/components/zTree/ZTree.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
236 |
237 |
252 |
260 |
--------------------------------------------------------------------------------
/src/components/zTree/ZTreeMobile.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
233 |
234 |
249 |
281 |
--------------------------------------------------------------------------------
/src/config/index.js:
--------------------------------------------------------------------------------
1 | import Store from 'store2';
2 |
3 | /**
4 | * 常量配置项
5 | */
6 |
7 | // 天地图 底图
8 | const TDT = [
9 | ['vec_w','vec','w'],
10 | ['cva_w','cva','w'],
11 | ['img_w','img','w'],
12 | ['cia_w','cia','w'],
13 | ['cta_w','cta','w'],
14 | ['ibo_w','ibo','w'],
15 | ['eia_w','eia','w'],
16 | ['eva_w','eva','w'],
17 | ['cva_w','cva','w'],
18 | ]
19 | // 天地图 底图 随机数
20 | // const Num = Math.floor(Math.random() * 8)
21 | const Num = 2;
22 |
23 | export default {
24 | /**
25 | *
26 | * 项目 请求及跳转时 所用地址 开始
27 | * 开发环境对应文件 .env.development
28 | * 测试环境对应文件 .env.test
29 | * 生产环境对应文件 .env.production
30 | * ==== 测试环境及生产环境文件在开发过程中 请勿改动 !!! ===
31 | */
32 |
33 | // server url
34 | serverUrl:process.env.VUE_APP_SERVER_URL,
35 | // url
36 | baseURL: process.env.VUE_APP_BASE_URL ,
37 | // Ops Service类接口地址
38 | authURL: process.env.VUE_APP_AUTH_URL ,
39 |
40 | /**
41 | * 项目 请求及跳转时 所用地址 结束
42 | */
43 |
44 | // 请求的失效时间
45 | httpTimeout: 60000,
46 | // 用户信息
47 | setUserInfo: function(userInfo) {
48 | Store.session('userInfo', userInfo)
49 | },
50 | getUserInfo: function() {
51 | return Store.session('userInfo')
52 | // return {username: 'admin'}
53 | },
54 | getLn: function() {
55 | return this.getCookie('ln')
56 | },
57 | getCookie: function(cookieName) {
58 | if (document.cookie.length > 0) {
59 | let start = document.cookie.indexOf(cookieName + '=')
60 | if (start !== -1) {
61 | start = start + cookieName.length + 1
62 | let end = document.cookie.indexOf(';', start)
63 | if (end === -1) end = document.cookie.length
64 | return document.cookie.substring(start, end)
65 | }
66 | }
67 | return null
68 | },
69 |
70 | // ==== leaflet map=====
71 | map:{
72 |
73 | // 地图底图
74 | mapSource:{
75 | A:"http://{s}.tile.osm.org/{z}/{x}/{y}.png",
76 | B:'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
77 | C:'http://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
78 | blue:'http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}',
79 | almap:"http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}", // 高德底图
80 | esri:'http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', // 高德底图
81 | TianDiTu:`http://t0.tianditu.gov.cn/${TDT[Num][0]}/wmts?layer=${TDT[Num][1]}&style=default&tilematrixset=${TDT[Num][2]}&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=099824dfa2a57512929e6b9d3c6b0eaa`,
82 | },
83 | zoom:5, //默认缩放
84 | minZoom: 4, //最小绽放层级
85 | maxZoom: 20,//最大绽放层级z
86 | center:[ 30.56226095049944, 108.14941406250001], // 默认地图中心
87 | heatmapConfg:{ // 热力图配置
88 | 'radius': 0.4,
89 | 'maxOpacity': 0.75,
90 | "minOpacity":0,
91 | 'scaleRadius': true,
92 | 'useLocalExtrema': false,
93 | 'blur':1,
94 | latField: 'a',
95 | lngField: 'o',
96 | valueField: 'v',
97 | gradient: {
98 | "0": "rgba(90,86,143,1)",
99 | "0.1": "rgba(72,104,181,1)",
100 | "0.2": "rgba(69,151,168,1)",
101 | "0.3": "rgba(81,180,98,1)",
102 | "0.4": "rgba(106,192,82,1)", // 颜色过渡
103 | "0.5": "rgba(177,209,67,1)", // 颜色过渡
104 | "0.6": "rgba(215,206,60,1)", // 颜色过渡
105 | "0.7": "rgba(214,172,64,1)", // 颜色过渡
106 | "0.8": "rgba(213,137,72,1)", // 颜色过渡
107 | "0.85": "rgba(205,94,93,1)", // 颜色过渡
108 | "0.9": "rgba(144,28,79,1)", // 颜色过渡
109 | "0.99": "rgba(43,0,1,1)" // 颜色过渡
110 | }
111 | },
112 | customIcon:{
113 | iconSize:[20,20],
114 | iconAnchor:[10,10]
115 | }
116 | },
117 | typhoon: {
118 | legendList: [{color: '#00fedf', name: '热带低压(TD)', type: 'fill'}, {color: '#fff45c', name: '热带风暴(TS)', type: 'fill'}, {color: '#fe902c', name: '强热带风暴(STS)', type: 'fill'}, {color: '#fe0404', name: '台风(TY)', type: 'fill'}, {color: '#fe3aa3', name: '强台风(STY)', type: 'fill'}, {color: '#ae00d9', name: '超强台风(Super TY)', type: 'fill'}, {color: '174, 0, 217', name: '12级风圈', type: 'noFill'}, {color: '254, 144, 44', name: '10级风圈', type: 'noFill'}, {color: '255, 244, 92', name: '7级风圈', type: 'noFill'}]
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/http/events.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 风险分析事件库
3 | */
4 | const uri = '/v1/typhoon-case-info'
5 | const uri1 = '/v1/typhoon-case-report'
6 |
7 | export const getPageAnalysis = uri + "/page_analysis";
8 | export const getPageRisk = uri + "/page_assessment";
9 | export const saveStorageEvents = uri + "/save_storage_events";
10 | export const deleteById = uri + "/";
11 | export const downloadById = uri1 + "/download";
12 | export const shareTo = uri1 + "/forward";
13 | export const checkExist = uri1 + "/whether/";
14 | export const importEvents = uri + "/read_events/";
15 |
--------------------------------------------------------------------------------
/src/http/field-info.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 相关
3 | */
4 | const uri = '/v1/typhoon-oil-field'
5 | export const page = uri + '/page';
6 | export const add = uri;
7 | export const edit = uri;
8 | export const deleteById = uri;
9 | export const getById = uri + '/';
10 | export const getFieldList = uri + '/list';
11 |
--------------------------------------------------------------------------------
/src/http/index.js:
--------------------------------------------------------------------------------
1 | import config from '../config'
2 | import axios from 'axios'
3 | import Qs from 'qs'
4 | import {Message,MessageBox} from 'element-ui'
5 | import router from '@/router'
6 | import store from '@/store'
7 | import Store from 'store2'
8 |
9 | axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
10 | axios.defaults.crossDomain = true;
11 | axios.defaults.withCredentials = true; //设置cross跨域 并设置访问权限 允许跨域携带cookie信息
12 | axios.defaults.headers.common['Authorization'] = ''; // 设置请求头为 Authorization
13 | axios.defaults.timeout = config.httpTimeout; // 请求的失效时间
14 |
15 |
16 | // http response 拦截器
17 | axios.interceptors.response.use(
18 | (response) => {
19 | //拦截响应,做统一处理
20 | if (response.data.code > -1) {
21 | if (response.data.data == [] && response.data.data == ''){
22 | // Message({
23 | // type:'warning',
24 | // message:'数据获取失败,请稍后重试',
25 | // center:true,
26 | // offset:300
27 | // })
28 | return Promise.resolve(response)
29 | }else{
30 | return Promise.resolve(response)
31 | }
32 | }else {
33 | if (response.data.code == -2) {
34 | MessageBox.confirm('您未登录!请先登录后,再进行操作。是否登录?', '提示', {
35 | confirmButtonText: '登录',
36 | cancelButtonText: '取消',
37 | type: 'warning',
38 | center: true
39 | }).then(() => {
40 | store.commit('moduleSystem/SHOW_LOGIN_REGISTER')
41 | }).catch((e) => {
42 | console.log(e);
43 | });
44 | return Promise.resolve(response)
45 | } else if (response.data.code == -1) {
46 | // Message.error('未查询到数据,请重新选择时间',{
47 | // center:true,
48 | // top:500
49 | // })
50 | return Promise.resolve(response)
51 | } else {
52 | return Promise.resolve(response)
53 | }
54 | }
55 | store.commit('moduleMap/SET_LAYER_FLAG',true)
56 | },
57 | //接口错误状态处理,也就是说无响应时的处理
58 | (error) => {
59 | return Promise.reject(error.response.status) // 返回接口返回的错误信息
60 | })
61 |
62 |
63 |
64 | // 重写 get post fromData
65 | export default {
66 | /**
67 | * get方法,对应get请求
68 | * @param {String} url [请求的url地址]
69 | * @param {Object} params [请求时携带的参数]
70 | */
71 | get(url, params) {
72 | axios.defaults.baseURL = config.baseURL;
73 | try {
74 | return new Promise((resolve, reject) => {
75 | axios.get(url, {
76 | params: params
77 | }).then((d) => {
78 | // console.log('get===>',d)
79 | resolve(d.data)
80 | }).catch(err => {
81 | reject(err)
82 | })
83 | })
84 | }
85 | catch (e) {
86 | console.log(e)
87 | }
88 | },
89 | /**
90 | * delete方法,对应delete请求
91 | * @param {String} url [请求的url地址]
92 | * @param {Object} params [请求时携带的参数]
93 | */
94 | delete(url, params) {
95 | axios.defaults.baseURL = config.baseURL;
96 | return new Promise((resolve, reject) => {
97 | axios.delete(url, {
98 | params: params
99 | }).then(res => {
100 | // console.log('get===>',res)
101 | resolve(res.data)
102 | }).catch(err => {
103 | reject(err)
104 | })
105 | }).catch((e) => {})
106 | },
107 | /**
108 | * post方法,对应post请求
109 | * @param {String} url [请求的url地址]
110 | * @param {Object} params [请求时携带的参数]
111 | */
112 | post(url, params) {
113 | axios.defaults.baseURL = config.baseURL;
114 | return new Promise((resolve, reject) => {
115 | axios.post(url, Qs.stringify(params))
116 | .then(res => {
117 | resolve(res.data)
118 | })
119 | .catch(err => {
120 | reject(err)
121 | })
122 | }).catch((e) => {})
123 | },
124 | listPost(url, params) {
125 | axios.defaults.baseURL = config.baseURL;
126 | return new Promise((resolve, reject) => {
127 | axios.post(url, params)
128 | .then(res => {
129 | resolve(res.data)
130 | })
131 | .catch(err => {
132 | reject(err)
133 | })
134 | }).catch((e) => {})
135 | },
136 | /**
137 | * formData,对应post请求,用来提交文件+数据
138 | * @param {String} url [请求的url地址]
139 | * @param {Object} params [请求时携带的参数]
140 | */
141 | formData(url, params) {
142 | axios.defaults.baseURL = config.baseURL;
143 | return new Promise((resolve, reject) => {
144 | axios({
145 | headers: {
146 | 'Content-Type': 'multipart/form-data'// ;boundary=----WebKitFormBoundaryQ6d2Qh69dv9wad2u
147 | },
148 | transformRequest: [function (data) { // 在请求之前对data传参进行格式转换
149 | const formData = new FormData()
150 | Object.keys(data).forEach(key => {
151 | formData.append(key, data[key])
152 | })
153 | return formData
154 | }],
155 | url,
156 | method: 'post',
157 | data: params
158 | }).then(res => {
159 | resolve(res.data)
160 | }).catch(err => {
161 | reject(err)
162 | })
163 | }).catch((e) => {})
164 | },
165 | /**
166 | * formData,对应post请求,用来提交文件+数据
167 | * @param {String} url [请求的url地址]
168 | * @param {Object} params [请求时携带的参数]
169 | */
170 | formDataAuth(url, params) {
171 | axios.defaults.baseURL = config.authURL;
172 | return new Promise((resolve, reject) => {
173 | axios({
174 | headers: {
175 | 'Content-Type': 'multipart/form-data'// ;boundary=----WebKitFormBoundaryQ6d2Qh69dv9wad2u
176 | },
177 | transformRequest: [function (data) { // 在请求之前对data传参进行格式转换
178 | const formData = new FormData()
179 | Object.keys(data).forEach(key => {
180 | formData.append(key, data[key])
181 | })
182 | return formData
183 | }],
184 | url,
185 | method: 'post',
186 | data: params
187 | }).then(res => {
188 | resolve(res.data)
189 | }).catch(err => {
190 | reject(err)
191 | })
192 | }).catch((e) => {})
193 | },
194 | /**
195 | * post方法,对应post请求,用于系统类接口使用
196 | * @param {String} url [请求的url地址]
197 | * @param {Object} params [请求时携带的参数]
198 | */
199 | systemPost(url, params) {
200 | axios.defaults.baseURL = config.authURL
201 | return new Promise((resolve, reject) => {
202 | axios.post(url, Qs.stringify(params))
203 | .then(res => {
204 | resolve(res.data)
205 | })
206 | .catch(err => {
207 | reject(err)
208 | })
209 | }).catch((e) => {})
210 | },
211 | /**
212 | * post方法,对应post请求,用于系统类接口使用
213 | * @param {String} url [请求的url地址]
214 | * @param {Object} params [请求时携带的参数]
215 | */
216 | systemGet(url, params) {
217 | axios.defaults.baseURL = config.authURL;
218 | return new Promise((resolve, reject) => {
219 | axios.get(url, {
220 | params: params
221 | }).then(res => {
222 | resolve(res.data)
223 | }).catch(err => {
224 | reject(err)
225 | })
226 | }).catch((e) => {})
227 | },
228 | /**
229 | * formData,对应post请求,用于系统类接口使用
230 | * @param {String} url [请求的url地址]
231 | * @param {Object} params [请求时携带的参数]
232 | */
233 | systemForm(url, params) {
234 | axios.defaults.baseURL = config.authURL
235 | return new Promise((resolve, reject) => {
236 | axios({
237 | headers: {
238 | 'Content-Type': 'multipart/form-data'// ;boundary=----WebKitFormBoundaryQ6d2Qh69dv9wad2u
239 | },
240 | transformRequest: [function (data) { // 在请求之前对data传参进行格式转换
241 | const formData = new FormData()
242 | Object.keys(data).forEach(key => {
243 | formData.append(key, data[key])
244 | })
245 | return formData
246 | }],
247 | url,
248 | method: 'post',
249 | data: params
250 | }).then(res => {
251 | resolve(res.data)
252 | }).catch(err => {
253 | reject(err)
254 | })
255 | }).catch((e) => {})
256 | },
257 | /**
258 | * systemPut,对应Put请求,用于系统类接口使用
259 | * @param {String} url [请求的url地址]
260 | * @param {Object} params [请求时携带的参数]
261 | */
262 | systemPut(url, params) {
263 | axios.defaults.baseURL = config.authURL
264 | return new Promise((resolve, reject) => {
265 | axios({
266 | headers: {
267 | 'Content-Type': 'multipart/form-data'// ;boundary=----WebKitFormBoundaryQ6d2Qh69dv9wad2u
268 | },
269 | transformRequest: [function (data) { // 在请求之前对data传参进行格式转换
270 | const formData = new FormData()
271 | Object.keys(data).forEach(key => {
272 | formData.append(key, data[key])
273 | })
274 | return formData
275 | }],
276 | url,
277 | method: 'put',
278 | data: params
279 | }).then(res => {
280 | resolve(res.data)
281 | }).catch(err => {
282 | reject(err)
283 | })
284 | }).catch((e) => {})
285 | },
286 | /**
287 | * put方法,对应put请求
288 | * @param {String} url [请求的url地址]
289 | * @param {Object} params [请求时携带的参数]
290 | */
291 | put(url, params) {
292 | axios.defaults.baseURL = config.baseURL;
293 | return new Promise((resolve, reject) => {
294 | axios({
295 | headers: {
296 | 'Content-Type': 'multipart/form-data'// ;boundary=----WebKitFormBoundaryQ6d2Qh69dv9wad2u
297 | },
298 | transformRequest: [function (data) { // 在请求之前对data传参进行格式转换
299 | const formData = new FormData()
300 | Object.keys(data).forEach(key => {
301 | formData.append(key, data[key])
302 | })
303 | return formData
304 | }],
305 | url,
306 | method: 'put',
307 | data: params
308 | }).then(res => {
309 | resolve(res.data)
310 | }).catch(err => {
311 | reject(err)
312 | })
313 | }).catch((e) => {})
314 | },
315 | }
316 |
--------------------------------------------------------------------------------
/src/http/mapLayer.js:
--------------------------------------------------------------------------------
1 | /**
2 | * api 请求url
3 | * import {test} from '../api'
4 | * this.$http(test,{...obj}).then()
5 | */
6 |
7 |
8 | // 例子
9 | export const test = "/api/test";
10 |
11 |
12 | export const getWindInfo = "/v1/typhoon-wind-field/getWindInfo"; // 风场数据接口
13 | export const getWindHotInfo = "/v1/typhoon-wind-field/getWindHotInfo"; // 风场热力数据接口
14 | export const getWaterDeptInfo = "/v1/typhoon-water-depth/getWaterDeptInfo"; // 水深接口
15 | export const getPlatCordonInfo = "/v1/typhoon-config/getPlatCordonInfo"; // 油汽平台接口
16 | export const getPipeLineList = "/v1/typhoon-pipeline/list"; // 管线平台接口
17 | export const getPortList = "/v1/typhoon-harbor/list"; // 港口平台接口
18 | export const getDeviceList = "/v1/typhoon-equipment-library/list"; // 应急设备接口
19 | export const getCurrentInfo = "/v1/typhoon-current/getCurrentInfo"; // 洋流数据接口
20 | export const getCurrentHotInfo = "/v1/typhoon-current/getCurrentHotInfo"; // 洋流热力数据接口
21 | export const getSaltInfo = "/v1/typhoon-salt-info/getSaltInfo"; // 盐度数据接口
22 | // export const getSaltInfo = "/v1/typhoon-salt-month/getSaltInfo"; // 盐度数据接口
23 | export const getAirTemperature = "/v1/typhoon-sea-temperature/getSeaTemperature"; // 气温数据接口
24 | export const getSeaTemperature = "/v1/typhoon-air-temperature/getAirTemperature"; // 海温数据接口
25 | export const getWaveInfo = "/v1/typhoon-wave-field/getWaveInfo"; // 海浪数据接口
26 | export const getWaveHotInfo = "/v1/typhoon-wave-field/getWaveHotInfo"; // 海浪热力数据接口
27 | export const getAirPressure = "/v1/typhoon-pressure/getPressureInfo"; // 气压数据接口
28 |
29 | export const getEarthWindInfo = "/v1/typhoon-earth-wind-filed/getInfo"; // 全球风场接口
30 | export const getEarthPressureInfo = "/v1/typhoon-earth-pressure-filed/getInfo"; // 全球气压接口
31 | export const getEarthCurrentInfo = "/v1/typhoon-earth-current-filed/getInfo"; // 全球洋流接口
32 | export const getEarthWaveInfo = "/v1/typhoon-earth-wave-hot-filed/getInfo"; // 全球海浪热力接口
33 | export const getEarthSeaTempInfo = "/v1/typhoon-earth-sea-temperature-filed/getInfo"; // 全球海温接口
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/http/platform-info.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 平台相关
3 | */
4 |
5 | const uri = '/v1/typhoon-oil-platform'
6 |
7 | export const add = uri;
8 | export const page = uri + '/page';
9 | export const deleteById = uri;
10 | export const edit = uri;
11 | export const getById = uri + '/info/';
12 |
--------------------------------------------------------------------------------
/src/http/platform.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 平台
3 | */
4 |
5 | const uri = '/v1/typhoon-oil-platform'
6 |
7 | export const list = uri + "/get_list";
8 |
--------------------------------------------------------------------------------
/src/http/riskEstimate.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 风险评估
3 | */
4 |
5 | const uri = '/v1/typhoon-route-info'
6 | const uri1 = '/v1/typhoon-sea-risk'
7 | const uri2 = '/v1/typhoon-sea-risk-info'
8 |
9 | export const add = uri;
10 | export const page = uri + '/page';
11 | export const deleteById = uri;
12 | export const edit = uri;
13 | export const download = uri + '/export';
14 | export const downloadModel = uri + '/download';
15 | export const uploadById = uri + '/import';
16 | export const uploadNoId = uri + '/upload';
17 | export const getAirLineList = uri + '/list';
18 | export const getRouteAssessment = uri + '/route_assessment';
19 | export const reGetRouteAssessment = uri + '/recalculate_route';
20 | export const saveRouteEvent = uri + '/save_route_event';
21 | export const getRouteInfo = uri + '/route_info';
22 | export const getIntelligentRouteInfo = uri + '/intelligent_route';
23 | export const seaRiskBigData = uri1 + '/list';
24 | export const pointRiskEstimateDetail = uri2 + '/getRiskInfo';
25 |
--------------------------------------------------------------------------------
/src/http/ship.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 船舶
3 | */
4 | const uri = '/v1/typhoon-ship-type'
5 | const uri1 = '/v1/typhoon-ais-base'
6 |
7 | export const list = uri + "/list";
8 | export const getCompany = uri1 + "/get_company_name";
9 | export const getShipType = uri1 + "/get_types";
10 | export const getShipList = uri1 + "/list";
11 | export const getDetailById = uri1;
12 |
--------------------------------------------------------------------------------
/src/http/system.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 系统
3 | */
4 |
5 | const uri = '/v1/auth'
6 | const uri1 = '/v1/sso'
7 | const uri2 = '/v1/sms/send-'
8 | const email = '/v1/email'
9 |
10 | export const login = uri + "/login";
11 | export const loginApp = uri1 + "/app-login";
12 | export const register = uri1 + "/external-register";
13 | export const sendMsg = uri2;
14 | export const logout = uri1 + '/logout';
15 | export const sendEmailCode = email + '/send';
16 | export const emailBind = email + '/bind-';
17 | export const typhoon = `/v1/typhoon-feedback`
18 |
19 |
--------------------------------------------------------------------------------
/src/http/typhoon.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 台风
3 | */
4 |
5 | const uri = '/v1/typhoon'
6 |
7 | export const list = uri + "/list/"; //台风列表
8 | export const getDetailById = uri; // 台风详情
9 | export const getRiskStatistics = uri + '/impact_risk_statistics/';
10 | export const getSpacingDistancePlatform = uri + '/spacing_distance_platform'; // 台风间距 平台
11 | export const getSpacingDistanceArea = uri + '/spacing_distance_field'; // 台风间距 作业区
12 | export const getSpacingDistanceShip = uri + '/spacing_distance_ship'; // 台风间距 船舶
13 | export const downloadModel = uri + '/json_templates'; // 台风模板下载
14 | export const uploadNoId = uri + '/upload_custom_typhoon'; // 自定义台风上传
15 | export const getListCustom = uri + '/list_custom'; // 获取自定义台风列表
16 | export const getTyphoonUpdateTime = uri + '/get_latest_typhoon'; // 获取自定义台风列表
17 |
--------------------------------------------------------------------------------
/src/http/typhoonConfig.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 台风
3 | */
4 |
5 | const uri = '/v1/typhoon-config'
6 |
7 | export const getPlatCordonInfo = uri + "/getConfigInfo";
8 | export const updataConfig = uri;
9 |
--------------------------------------------------------------------------------
/src/http/user.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 系统
3 | */
4 |
5 | const uri = '/v1/user'
6 |
7 | export const userInfo = uri + "/info";
8 | export const changePassword = uri + '/password'
9 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | // 引入elementui
4 | import ElementUI from 'element-ui'
5 | import 'element-ui/lib/theme-chalk/index.css'
6 | // 引入iview
7 | import ViewUI from 'view-design';
8 | import 'view-design/dist/styles/iview.css';
9 | // 引入主题
10 | import router from './router'
11 | import store from './store'
12 | import http from './http'
13 | // import * as L from 'leaflet'
14 | import global from './config/index'
15 | // import 'leaflet/dist/leaflet.css';
16 | import './assets/common.css';
17 | import './registerServiceWorker'
18 | // 引入echarts
19 | import echarts from 'echarts'
20 | // 引入vue-echarts
21 | import ECharts from 'vue-echarts'
22 | import 'echarts/lib/component/tooltip'
23 | // 引入zTree
24 | import "./plugins/zTree/js/jquery-1.4.4.min.js";
25 | import "./plugins/zTree/js/jquery.ztree.core.min.js";
26 | import "./plugins/zTree/js/jquery.ztree.excheck.min.js";
27 | import "./plugins/zTree/js/jquery.ztree.exhide.min.js";
28 | // 引入leaflet.draw
29 | import 'leaflet-draw'
30 | import 'leaflet-draw/dist/leaflet.draw.css'
31 | // el-dialog 拖拽
32 | import './utils/dialogDrag'
33 | import vant from './plugins/vant'
34 |
35 |
36 | Vue.component('v-chart', ECharts)
37 |
38 | Vue.use(ElementUI);
39 | Vue.use(ViewUI);
40 | Vue.use(vant);
41 |
42 | Vue.config.productionTip = false;
43 | Vue.prototype.Global = global;
44 | // Vue.L = Vue.prototype.$L = L; // 全局注册leaflet
45 | Vue.prototype.$http = http; // 全局注册$http --> this.$http
46 | Vue.prototype.$echarts = echarts; // 全局注册echarts
47 |
48 |
49 | /*leaflet draw tooltips*/
50 | L.drawLocal = {
51 | draw: {
52 | toolbar: {actions: { title: '取消绘制', text: '取消' }, finish: { title: '完成绘制', text: '完成' }, undo: { title: '删除最后绘制的点', text: '删除最后一点' }, buttons: { polyline: '画线', polygon: '画多边形', rectangle: '画矩形', circle: '画圆', marker: '画标记', circlemarker: '画圆形标记' } },
53 | handlers: {circle: {tooltip: {start: '单击并拖动可绘制圆'}, radius: '半径'}, circlemarker: {tooltip: {start: '点击地图放置圆形标记'}}, marker: {tooltip: {start: '点击地图放置标记'}}, polygon: {tooltip: {start: '单击开始绘制多边形', cont: '单击以继续绘制多边形', end: '双击可完成多形形绘制'}}, polyline: {error: '异常: 形状边缘不能交叉!', tooltip: {start: '点击开始画线', cont: '单击以继续绘制线条', end: '双击完成线条绘制'}}, rectangle: {tooltip: {start: '单击并拖动以绘制矩形'}}, simpleshape: {tooltip: {end: '释放鼠标完成绘图'}}}
54 | },
55 | edit: {
56 | toolbar: {actions: {save: {title: '保存改动', text: '保存'}, cancel: {title: '取消编辑,丢弃所有更改', text: '取消'}, clearAll: {title: '清除所有标记', text: '清除所有'}}, buttons: {edit: '编辑图层', editDisabled: '不需要编辑图层', remove: '删除图层', removeDisabled: '没有要删除的图层'}},
57 | handlers: {edit: {tooltip: {text: '拖动节点或标记来编辑图形', subtext: '单击“取消”撤消更改'}}, remove: {tooltip: {text: '单击某个标记进行删除'}}}}
58 | };
59 |
60 |
61 |
62 |
63 | /* leaflet icon */
64 | delete L.Icon.Default.prototype._getIconUrl;
65 | L.Icon.Default.mergeOptions({
66 | iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
67 | iconUrl: require('leaflet/dist/images/marker-icon.png'),
68 | shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
69 | });
70 |
71 | console.log(process.env)
72 |
73 | new Vue({
74 | router,
75 | store,
76 | render: h => h(App)
77 | }).$mount('#app');
78 |
--------------------------------------------------------------------------------
/src/mock/data/deviceData.js:
--------------------------------------------------------------------------------
1 | export default{
2 | "code": 0,
3 | "data": [
4 | {
5 | "id": "1",
6 | "code": "LIBR0190201151250236X9V",
7 | "name": "天津联众修船工程有限公司应急仓库",
8 | "longitude": "117.43591",
9 | "latitude": "38.58864"
10 | },
11 | {
12 | "id": "30",
13 | "code": "LIBR0190214110438073Q67",
14 | "name": "滚装溢油应急库",
15 | "longitude": "117.4702",
16 | "latitude": "38.5914"
17 | },
18 | {
19 | "id": "3",
20 | "code": "LIBR0190131092820782BY4",
21 | "name": "456库",
22 | "longitude": "113.492",
23 | "latitude": "33.55191"
24 | },
25 | {
26 | "id": "4",
27 | "code": "LIBR0190130160704167YSM",
28 | "name": "123设备库",
29 | "longitude": "114.492",
30 | "latitude": "38.95191"
31 | },
32 | {
33 | "id": "5",
34 | "code": "LIBR0190202150736181ZFT",
35 | "name": "天津港轮驳有限公司东突堤",
36 | "longitude": "117.47207",
37 | "latitude": "38.582982"
38 | },
39 | {
40 | "id": "6",
41 | "code": "LIBR01902021350171435RZ",
42 | "name": "孚宝码头",
43 | "longitude": "117.4508",
44 | "latitude": "38.57"
45 | },
46 | {
47 | "id": "7",
48 | "code": "LIBR0190202082214150MLF",
49 | "name": "天津南港工业区港务有限公司码头厂房材料设备库",
50 | "longitude": "117.3548",
51 | "latitude": "38.4522"
52 | },
53 | {
54 | "id": "8",
55 | "code": "LIBR0190201133415972L15",
56 | "name": "天津汉海环保设备有限公司",
57 | "longitude": "117.46271",
58 | "latitude": "39.1249"
59 | },
60 | {
61 | "id": "10",
62 | "code": "LIBR01902131125105833EN",
63 | "name": "应急集装箱",
64 | "longitude": "117.471857",
65 | "latitude": "38.5828"
66 | },
67 | {
68 | "id": "12",
69 | "code": "LIBR0190211102440947SDE",
70 | "name": "PPE应急库",
71 | "longitude": "117.423",
72 | "latitude": "38.5948"
73 | },
74 | {
75 | "id": "13",
76 | "code": "LIBR0190202105221916NER",
77 | "name": "天津汉海环保设备有限公司",
78 | "longitude": "117.461542",
79 | "latitude": "39.122839"
80 | },
81 | {
82 | "id": "14",
83 | "code": "LIBR01902011007492586S3",
84 | "name": "仓库",
85 | "longitude": "117.4141",
86 | "latitude": "38.5946"
87 | },
88 | {
89 | "id": "15",
90 | "code": "LIBR0190201141536302CK7",
91 | "name": "天津盛灏海洋环保应急仓库",
92 | "longitude": "117.6321",
93 | "latitude": "31.2533"
94 | },
95 | {
96 | "id": "16",
97 | "code": "LIBR0190214130457631ADK",
98 | "name": "公司应急库",
99 | "longitude": "117.454",
100 | "latitude": "38.598"
101 | },
102 | {
103 | "id": "17",
104 | "code": "LIBR0190214102504594LMY",
105 | "name": "应急物资集装箱2",
106 | "longitude": "117.461189",
107 | "latitude": "38.595026"
108 | },
109 | {
110 | "id": "18",
111 | "code": "LIBR0190214102007760HBA",
112 | "name": "应急物资集装箱1",
113 | "longitude": "117.4631",
114 | "latitude": "38.5924"
115 | },
116 | {
117 | "id": "19",
118 | "code": "LIBR0190214102609358FYC",
119 | "name": "沙箱存放点",
120 | "longitude": "117.461248",
121 | "latitude": "38.593785"
122 | },
123 | {
124 | "id": "20",
125 | "code": "LIBR0190214095138227KRT",
126 | "name": "南疆工作船码头(南疆港区)仓库",
127 | "longitude": "117.45044",
128 | "latitude": "38.5836"
129 | },
130 | {
131 | "id": "21",
132 | "code": "LIBR019021409431977712J",
133 | "name": "船舶分公司工作船码头(海河)仓库",
134 | "longitude": "117.42208",
135 | "latitude": "38.59889"
136 | },
137 | {
138 | "id": "22",
139 | "code": "LIBR0190214100626812TQ3",
140 | "name": "东疆工作船码头(东疆)仓库",
141 | "longitude": "117.47705",
142 | "latitude": "38.59064"
143 | },
144 | {
145 | "id": "23",
146 | "code": "LIBR0190131092820782BY4",
147 | "name": "456库",
148 | "longitude": "114.492",
149 | "latitude": "38.5836"
150 | },
151 | {
152 | "id": "24",
153 | "code": "LIBR0190130160704167YSM",
154 | "name": "123设备库",
155 | "longitude": "114.492",
156 | "latitude": "38.5836"
157 | },
158 | {
159 | "id": "25",
160 | "code": "LIBR0190212121953868TN2",
161 | "name": "燃供南疆防污染应急库",
162 | "longitude": "117.451775",
163 | "latitude": "38.573509"
164 | },
165 | {
166 | "id": "26",
167 | "code": "LIBR0190212121543996RYU",
168 | "name": "燃供北疆防污染应急物资库",
169 | "longitude": "117.452279",
170 | "latitude": "38.584787"
171 | },
172 | {
173 | "id": "27",
174 | "code": "LIBR0190212121953868TN2",
175 | "name": "燃供南疆防污染应急库",
176 | "longitude": "117.451775",
177 | "latitude": "38.573509"
178 | },
179 | {
180 | "id": "28",
181 | "code": "LIBR0190212121543996RYU",
182 | "name": "燃供北疆防污染应急物资库",
183 | "longitude": "117.452279",
184 | "latitude": "38.584787"
185 | },
186 | {
187 | "id": "29",
188 | "code": "LIBR0190215150812803TRW",
189 | "name": "应急物资库",
190 | "longitude": "117.492",
191 | "latitude": "38.55191"
192 | },
193 | {
194 | "id": "31",
195 | "code": "LIBR0190218085101642QG0",
196 | "name": "溢油应急库",
197 | "longitude": "117.52354",
198 | "latitude": "38.535981"
199 | },
200 | {
201 | "id": "32",
202 | "code": "LIBR0190215141439412ASW",
203 | "name": "中交博迈科应急设备仓库",
204 | "longitude": "117.43513",
205 | "latitude": "38.59497"
206 | },
207 | {
208 | "id": "33",
209 | "code": "LIBR0190213155138209Z59",
210 | "name": "应急集装箱",
211 | "longitude": "117.455671",
212 | "latitude": "39.02327"
213 | },
214 | {
215 | "id": "34",
216 | "code": "LIBR0190218114028749EE0",
217 | "name": "天津中心渔港临时溢油应急设备库",
218 | "longitude": "117.5112",
219 | "latitude": "39.104"
220 | },
221 | {
222 | "id": "35",
223 | "code": "LIBR0190212134625943R8A",
224 | "name": "天津港高沙岭港区溢油应急设备库",
225 | "longitude": "117.35719",
226 | "latitude": "38.45415"
227 | },
228 | {
229 | "id": "36",
230 | "code": "LIBR0190212135224606LYG",
231 | "name": "大沽口溢油应急设备库",
232 | "longitude": "117.4326",
233 | "latitude": "38.5732"
234 | },
235 | {
236 | "id": "37",
237 | "code": "LIBR01902121355007102QT",
238 | "name": "南港工业区海上溢油应急设备库",
239 | "longitude": "117.35719",
240 | "latitude": "38.45415"
241 | },
242 | {
243 | "id": "38",
244 | "code": "LIBR0190211134709613756",
245 | "name": "应急物资库",
246 | "longitude": "117.4521",
247 | "latitude": "38.5652"
248 | },
249 | {
250 | "id": "39",
251 | "code": "LIBR01902121320014091RG",
252 | "name": "东方海陆应急物资库",
253 | "longitude": "117.787772",
254 | "latitude": "38.98725"
255 | },
256 | {
257 | "id": "40",
258 | "code": "LIBR01902130937554892CR",
259 | "name": "滨海石化库房",
260 | "longitude": "117.624",
261 | "latitude": "39.029"
262 | },
263 | {
264 | "id": "41",
265 | "code": "LIBR01902151436304191QN",
266 | "name": "叉车队南库",
267 | "longitude": "117.4345",
268 | "latitude": "38.5913"
269 | },
270 | {
271 | "id": "42",
272 | "code": "LIBR0190215143110590ESN",
273 | "name": "叉车队北库",
274 | "longitude": "117.4345",
275 | "latitude": "38.5913"
276 | },
277 | {
278 | "id": "43",
279 | "code": "LIBR0190215141543142HS2",
280 | "name": "自有设备库",
281 | "longitude": "117.4122",
282 | "latitude": "38.4522"
283 | },
284 | {
285 | "id": "53",
286 | "code": "LIBR01902151418579245UN",
287 | "name": "沧州渤海新区航泰船舶服务有限公司",
288 | "longitude": "117.749947",
289 | "latitude": "38.304164"
290 | },
291 | {
292 | "id": "63",
293 | "code": "LIBR01902131654434635XB",
294 | "name": "威海江海缘溢油应急设备库",
295 | "longitude": "122.0836",
296 | "latitude": "37.242"
297 | },
298 | {
299 | "id": "65",
300 | "code": "LIBR01902151833136188X1",
301 | "name": "东港应急仓库",
302 | "longitude": "118.5306",
303 | "latitude": "37.1612"
304 | },
305 | {
306 | "id": "66",
307 | "code": "LIBR0181229103922830PLB",
308 | "name": "澜筹船务应急仓库",
309 | "longitude": "119.11622",
310 | "latitude": "37.14867"
311 | },
312 | {
313 | "id": "67",
314 | "code": "LIBR01812291123570614XR",
315 | "name": "森达美西港仓库",
316 | "longitude": "119.10499",
317 | "latitude": "37.15183"
318 | },
319 | {
320 | "id": "68",
321 | "code": "LIBR0190104141055873X44",
322 | "name": "汇海危废仓库",
323 | "longitude": "119.041608",
324 | "latitude": "37.063059"
325 | },
326 | {
327 | "id": "69",
328 | "code": "LIBR0181229112603104YJM",
329 | "name": "山东高速应急仓库",
330 | "longitude": "119.9395",
331 | "latitude": "37.1403"
332 | },
333 | {
334 | "id": "70",
335 | "code": "LIBR0181229112746893N56",
336 | "name": "森达美液化品应急仓库",
337 | "longitude": "119.11753",
338 | "latitude": "37.165"
339 | },
340 | {
341 | "id": "71",
342 | "code": "LIBR0190103153327326NNQ",
343 | "name": "光明协议仓库",
344 | "longitude": "120.458127",
345 | "latitude": "36.173168"
346 | },
347 | {
348 | "id": "72",
349 | "code": "LIBR0190104113412334URC",
350 | "name": "森达美东港仓库",
351 | "longitude": "119.11514",
352 | "latitude": "37.1463"
353 | },
354 | {
355 | "id": "73",
356 | "code": "LIBR0181229113037170HA4",
357 | "name": "寿光港应急仓库",
358 | "longitude": "118.52662",
359 | "latitude": "37.16144"
360 | },
361 | {
362 | "id": "75",
363 | "code": "LIBR0190213183714663JNE",
364 | "name": "应急设备库二号",
365 | "longitude": "118.562286",
366 | "latitude": "38.05026"
367 | },
368 | {
369 | "id": "76",
370 | "code": "LIBR0190213183746507UJP",
371 | "name": "应急设备库三号",
372 | "longitude": "118.562286",
373 | "latitude": "38.05026"
374 | },
375 | {
376 | "id": "77",
377 | "code": "LIBR0190213183357350V19",
378 | "name": "应急设备库一号",
379 | "longitude": "118.562286",
380 | "latitude": "38.050206"
381 | },
382 | {
383 | "id": "78",
384 | "code": "LIBR0190213183810493WLU",
385 | "name": "应急设备库四号",
386 | "longitude": "118.562286",
387 | "latitude": "38.05026"
388 | },
389 | {
390 | "id": "79",
391 | "code": "LIBR0190218143856539ES2",
392 | "name": "码头公司应急设备库",
393 | "longitude": "118.5936",
394 | "latitude": "37.2297"
395 | },
396 | {
397 | "id": "80",
398 | "code": "LIBR0190214090910306J5A",
399 | "name": "应急设备库",
400 | "longitude": "118.56593",
401 | "latitude": "38.05202"
402 | },
403 | {
404 | "id": "82",
405 | "code": "LIBR01902151027216839HG",
406 | "name": "溢油应急设备库",
407 | "longitude": "122.04858",
408 | "latitude": "40.14356"
409 | },
410 | {
411 | "id": "83",
412 | "code": "LIBR0190213145620203W75",
413 | "name": "防污器材库",
414 | "longitude": "120.6396",
415 | "latitude": "37.7786"
416 | },
417 | {
418 | "id": "86",
419 | "code": "LIBR01902141033355063LJ",
420 | "name": "华电莱州港务有限公司防溢油物资库",
421 | "longitude": "120.01172",
422 | "latitude": "37.26566"
423 | },
424 | {
425 | "id": "87",
426 | "code": "LIBR0190215155427581VJ8",
427 | "name": "山东牧源发展有限公司溢油应急设备库",
428 | "longitude": "120.19159",
429 | "latitude": "37.40887"
430 | },
431 | {
432 | "id": "88",
433 | "code": "LIBR0190218153503015F83",
434 | "name": "隆海造船仓库",
435 | "longitude": "121.2516",
436 | "latitude": "37.356"
437 | },
438 | {
439 | "id": "89",
440 | "code": "LIBR0190211115032588P6W",
441 | "name": "烟台远洲船务溢油应急设备库",
442 | "longitude": "119.947",
443 | "latitude": "37.412"
444 | },
445 | {
446 | "id": "1132234933880123393",
447 | "code": "12345689",
448 | "name": "wode",
449 | "longitude": "112.245519",
450 | "latitude": "30.340843"
451 | },
452 | {
453 | "id": "1149593538710642689",
454 | "code": "10085",
455 | "name": "测试仓库",
456 | "longitude": "120.402529",
457 | "latitude": "36.312885"
458 | }
459 | ],
460 | "msg": "执行成功"
461 | }
462 |
--------------------------------------------------------------------------------
/src/mock/data/index.js:
--------------------------------------------------------------------------------
1 | import windData from "./windData"
2 | import portData from "./portData"
3 | import seaCurrentData from "./seaCurrentData"
4 | import seaWaveData from "./sea-wave"
5 | import salinityData from "./salinit"
6 | import pressureData from "./pressure"
7 | import deviceData from "./deviceData"
8 | import temperatureData from "./temperature"
9 |
10 | export default {
11 | windData: windData,
12 | PORT_FLAG: portData,
13 | seaCurrentData: seaCurrentData,
14 | seaWaveData: seaWaveData,
15 | salinityData: salinityData,
16 | pressureData: pressureData,
17 | temperatureData: temperatureData,
18 | DEVICE_FLAG: deviceData
19 | }
20 |
--------------------------------------------------------------------------------
/src/mock/testData.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 测试用数据
3 | */
4 |
5 | // 热力图
6 | export const testHeatmapData = {
7 | // max: 100,
8 | data: [{a: 36.6408, o: 120.7728, v: 3},
9 | {a: 36.12341, o: 120.55, v: 1},
10 | {a: 36.12341, o: 120.55, v: 9},
11 | {a: 36.12341, o: 120.55, v: 8},
12 | {a: 36.12341, o: 120.55, v: 7},
13 | {a: 36.12341, o: 120.55, v: 6},
14 | {a: 36.12341, o: 120.55, v: 5}
15 | ]
16 | }
17 |
18 |
19 | // 热力图
20 | export const testDeviceData = {
21 | // max: 100,
22 | data: [{lat: 35.51823901412712, lng: 119.63287353515625},
23 | {lat: 35.61425872774833, lng: 119.68917846679689},
24 | {lat: 35.644380711936954, lng: 119.94735717773439},]
25 | }
26 |
27 | // 热力图
28 | export const testPortData = {
29 | // max: 100,
30 | data: [{lat: 36.197924226939875, lng: 120.14099121093751},
31 | {lat: 36.120351096926775, lng: 120.09704589843751},
32 | {lat: 36.07155157154837, lng: 120.14923095703126},
33 | ]
34 | }
35 |
36 |
37 | // 热力图
38 | export const testPipeLineData = {
39 | // max: 100,
40 | data: [{
41 | pipelineType:'1',
42 | pipelineRoute:[['36.197924226939875','120.14099121093751'],['36.120351096926775','120.09704589843751'],['36.07155157154837','120.14923095703126']]
43 | }
44 | ]
45 | }
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/src/plugins/vant.js:
--------------------------------------------------------------------------------
1 | import 'vant/lib/index.css'
2 | import { ImagePreview, DatetimePicker, Button, Field, Cell, RadioGroup, Radio,
3 | CellGroup, Toast, Tabbar, TabbarItem, PullRefresh, List, Dialog, Row, Col } from 'vant'
4 | export default {
5 | install (Vue) {
6 | Vue.use(Button)
7 | .use(Field)
8 | .use(Cell)
9 | .use(CellGroup)
10 | .use(Toast)
11 | .use(Tabbar)
12 | .use(TabbarItem)
13 | .use(PullRefresh)
14 | .use(List)
15 | .use(Dialog)
16 | .use(DatetimePicker)
17 | .use(ImagePreview)
18 | .use(RadioGroup)
19 | .use(Radio)
20 | .use(Row)
21 | .use(Col)
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/plugins/zTree/css/awesomeStyle/awesome.css:
--------------------------------------------------------------------------------
1 | /*-------------------------------------
2 | zTree Style using fontawesome instead of images
3 |
4 | version: 1.1
5 | author: Mike King
6 | email: mikkelking @ hotmail . com
7 | website: http://code.google.com/p/jquerytree/
8 |
9 | -------------------------------------*/
10 | /* Definitions ----------------------*/
11 | /* End of Definitions ---------------*/
12 | /* Imports -------------------------*/
13 | /* End of Imports ------------------*/
14 | .ztree * {
15 | padding: 0;
16 | margin: 0;
17 | font-size: 12px;
18 | font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif;
19 | background-color: #af0000;
20 | }
21 | .ztree {
22 | margin: 0;
23 | padding: 5px;
24 | color: #ffffff;
25 | background-color: #af0000;
26 | }
27 | .ztree li {
28 | padding: 0;
29 | margin: 0;
30 | list-style: none;
31 | line-height: 17px;
32 | text-align: left;
33 | white-space: nowrap;
34 | outline: 0;
35 | }
36 | .ztree li ul {
37 | margin: 0px;
38 | padding: 0 0 0 18px;
39 | }
40 | .ztree li a {
41 | padding-right: 3px;
42 | margin: 0;
43 | cursor: pointer;
44 | height: 17px;
45 | color: #ffffff;
46 | background-color: transparent;
47 | text-decoration: none;
48 | vertical-align: top;
49 | display: inline-block;
50 | }
51 | .ztree li a input.rename {
52 | height: 14px;
53 | width: 80px;
54 | padding: 0;
55 | margin: 0;
56 | color: #af0000;
57 | background-color: #ffffff;
58 | font-size: 12px;
59 | border: 1px #585956 solid;
60 | *border: 0px;
61 | }
62 | .ztree li a:hover {
63 | text-decoration: underline;
64 | }
65 | .ztree li a.curSelectedNode {
66 | padding-top: 0px;
67 | background-color: #af4040;
68 | color: #ffff00;
69 | height: 17px;
70 | opacity: 0.8;
71 | }
72 | .ztree li a.curSelectedNode_Edit {
73 | padding-top: 0px;
74 | background-color: transparent;
75 | color: #ffff00;
76 | height: 17px;
77 | border: 1px #666 solid;
78 | opacity: 0.8;
79 | }
80 | .ztree li a.tmpTargetNode_inner {
81 | padding-top: 0px;
82 | background-color: #aaa;
83 | color: #ffff00;
84 | height: 17px;
85 | border: 1px #666 solid;
86 | opacity: 0.8;
87 | filter: alpha(opacity=80);
88 | }
89 | .ztree li span {
90 | line-height: 17px;
91 | margin-right: 2px;
92 | background-color: transparent;
93 | }
94 | .ztree li span.button {
95 | line-height: 0;
96 | margin: 0;
97 | padding: 0;
98 | width: 15px;
99 | height: 17px;
100 | display: inline-block;
101 | vertical-align: top;
102 | border: 0px solid;
103 | cursor: pointer;
104 | outline: none;
105 | background-color: transparent;
106 | background-repeat: no-repeat;
107 | background-attachment: scroll;
108 | }
109 | .ztree li span.button::before {
110 | color: #ffffff;
111 | font-family: FontAwesome;
112 | padding-top: 10px;
113 | }
114 | .ztree li span.button.chk {
115 | margin: 0px;
116 | cursor: auto;
117 | width: 12px;
118 | display: inline-block;
119 | padding-top: 10px;
120 | padding-left: 2px;
121 | }
122 | .ztree li span.button.chk.checkbox_false_full::before {
123 | content: "\f096";
124 | }
125 | .ztree li span.button.chk.checkbox_false_full_focus::before {
126 | content: "\f096";
127 | color: #ffff00;
128 | }
129 | .ztree li span.button.chk.checkbox_false_part::before {
130 | content: "\f096";
131 | color: #aaaaaa;
132 | }
133 | .ztree li span.button.chk.checkbox_false_part_focus::before {
134 | content: "\f096";
135 | color: #cad96c;
136 | }
137 | .ztree li span.button.chk.checkbox_false_disable::before {
138 | content: "\f096";
139 | color: #808080;
140 | }
141 | .ztree li span.button.chk.checkbox_true_full::before {
142 | content: "\f046";
143 | }
144 | .ztree li span.button.chk.checkbox_true_full_focus::before {
145 | content: "\f046";
146 | }
147 | .ztree li span.button.chk.checkbox_true_part::before {
148 | content: "\f14a";
149 | }
150 | .ztree li span.button.chk.checkbox_true_part_focus::before {
151 | content: "\f14a";
152 | color: #ffff00;
153 | }
154 | .ztree li span.button.chk.checkbox_true_full_focus::before {
155 | content: "\f046";
156 | color: #ffff00;
157 | }
158 | .ztree li span.button.chk.checkbox_true_part::before {
159 | content: "\f046";
160 | color: #aaaaaa;
161 | }
162 | .ztree li span.button.chk.checkbox_true_part_focus::before {
163 | content: "\f046";
164 | color: #cad96c;
165 | }
166 | .ztree li span.button.chk.checkbox_true_disable::before {
167 | content: "\f046";
168 | color: #808080;
169 | }
170 | .ztree li span.button.chk.radio_false_full::before {
171 | content: "\f10c";
172 | }
173 | .ztree li span.button.chk.radio_false_full_focus::before {
174 | content: "\f10c";
175 | color: #ffff00;
176 | }
177 | .ztree li span.button.chk.radio_false_part::before {
178 | content: "\f10c";
179 | color: #aaaaaa;
180 | }
181 | .ztree li span.button.chk.radio_false_part_focus::before {
182 | content: "\f10c";
183 | color: #ffff00;
184 | }
185 | .ztree li span.button.chk.radio_false_disable::before {
186 | content: "\f1db";
187 | color: #808080;
188 | }
189 | .ztree li span.button.chk.radio_true_full::before {
190 | content: "\f192";
191 | }
192 | .ztree li span.button.chk.radio_true_full_focus::before {
193 | content: "\f192";
194 | color: #ffff00;
195 | }
196 | .ztree li span.button.chk.radio_true_part::before {
197 | content: "\f192";
198 | color: #aaaaaa;
199 | }
200 | .ztree li span.button.chk.radio_true_part_focus::before {
201 | content: "\f192";
202 | color: #aaaaaa;
203 | }
204 | .ztree li span.button.chk.radio_true_disable::before {
205 | content: "\f1db";
206 | color: #808080;
207 | }
208 | .ztree li span.button.switch {
209 | width: 15px;
210 | height: 17px;
211 | }
212 | .ztree li span.button.root_open::before {
213 | content: "\f078";
214 | padding-top: 10px;
215 | padding-left: 2px;
216 | display: inline-block;
217 | }
218 | .ztree li span.button.root_close::before {
219 | content: "\f054";
220 | padding-top: 10px;
221 | padding-left: 2px;
222 | display: inline-block;
223 | }
224 | .ztree li span.button.roots_open::before {
225 | content: "\f078";
226 | padding-top: 10px;
227 | padding-left: 2px;
228 | display: inline-block;
229 | }
230 | .ztree li span.button.roots_close::before {
231 | content: "\f054";
232 | padding-top: 10px;
233 | padding-left: 2px;
234 | display: inline-block;
235 | }
236 | .ztree li span.button.center_open::before {
237 | content: "\f078";
238 | padding-top: 10px;
239 | padding-left: 2px;
240 | display: inline-block;
241 | }
242 | .ztree li span.button.center_close::before {
243 | content: "\f054";
244 | padding-top: 10px;
245 | padding-left: 2px;
246 | display: inline-block;
247 | }
248 | .ztree li span.button.bottom_open::before {
249 | content: "\f078";
250 | padding-top: 10px;
251 | padding-left: 2px;
252 | display: inline-block;
253 | }
254 | .ztree li span.button.bottom_close::before {
255 | content: "\f054";
256 | padding-top: 10px;
257 | padding-left: 2px;
258 | display: inline-block;
259 | }
260 | .ztree li span.button.root_docu {
261 | background: none;
262 | }
263 | .ztree li span.button.roots_docu::before {
264 | content: "\f022";
265 | padding-left: 2px;
266 | display: inline-block;
267 | color: #ffffff;
268 | }
269 | .ztree li span.button.center_docu::before {
270 | padding-top: 10px;
271 | padding-left: 2px;
272 | display: inline-block;
273 | color: #ffffff;
274 | }
275 | .ztree li span.button.bottom_docu::before {
276 | padding-top: 10px;
277 | padding-left: 2px;
278 | display: inline-block;
279 | color: #ffffff;
280 | }
281 | .ztree li span.button.noline_docu {
282 | background: none;
283 | }
284 | .ztree li span.button.ico_open::before {
285 | content: "\f115";
286 | font-family: FontAwesome;
287 | padding-top: 10px;
288 | padding-left: 2px;
289 | display: inline-block;
290 | color: #ffffff;
291 | }
292 | .ztree li span.button.ico_close::before {
293 | content: "\f114";
294 | font-family: FontAwesome;
295 | padding-top: 10px;
296 | padding-left: 2px;
297 | display: inline-block;
298 | color: #ffffff;
299 | }
300 | .ztree li span.button.ico_docu::before {
301 | content: "\f022";
302 | font-family: FontAwesome;
303 | padding-top: 10px;
304 | padding-left: 2px;
305 | display: inline-block;
306 | color: #ffffff;
307 | }
308 | .ztree li span.button.edit {
309 | margin-left: 4px;
310 | margin-right: -1px;
311 | vertical-align: top;
312 | *vertical-align: middle;
313 | padding-top: 10px;
314 | }
315 | .ztree li span.button.edit::before {
316 | content: "\f044";
317 | font-family: FontAwesome;
318 | }
319 | .ztree li span.button.remove {
320 | margin-left: 4px;
321 | margin-right: -1px;
322 | vertical-align: top;
323 | *vertical-align: middle;
324 | padding-top: 10px;
325 | }
326 | .ztree li span.button.remove::before {
327 | content: "\f1f8";
328 | font-family: FontAwesome;
329 | }
330 | .ztree li span.button.add {
331 | margin-left: 4px;
332 | margin-right: -1px;
333 | vertical-align: top;
334 | *vertical-align: middle;
335 | padding-top: 10px;
336 | }
337 | .ztree li span.button.add::before {
338 | content: "\f067";
339 | font-family: FontAwesome;
340 | }
341 | .ztree li span.button.ico_loading {
342 | margin-right: 2px;
343 | background: url(./img/loading.gif) no-repeat scroll 0 0 transparent;
344 | vertical-align: top;
345 | *vertical-align: middle;
346 | }
347 | ul.tmpTargetzTree {
348 | background-color: #FFE6B0;
349 | opacity: 0.8;
350 | filter: alpha(opacity=80);
351 | }
352 | span.tmpzTreeMove_arrow {
353 | width: 16px;
354 | height: 17px;
355 | display: inline-block;
356 | padding: 0;
357 | margin: 2px 0 0 1px;
358 | border: 0 none;
359 | position: absolute;
360 | background-color: transparent;
361 | background-attachment: scroll;
362 | }
363 | span.tmpzTreeMove_arrow::before {
364 | content: "\f04b";
365 | font-family: FontAwesome;
366 | color: #ffff00;
367 | }
368 | ul.ztree.zTreeDragUL {
369 | margin: 0;
370 | padding: 0;
371 | position: absolute;
372 | width: auto;
373 | height: auto;
374 | overflow: hidden;
375 | background-color: #cfcfcf;
376 | border: 1px #ffff00 dotted;
377 | opacity: 0.8;
378 | filter: alpha(opacity=80);
379 | }
380 | .ztreeMask {
381 | z-index: 10000;
382 | background-color: #cfcfcf;
383 | opacity: 0.0;
384 | filter: alpha(opacity=0);
385 | position: absolute;
386 | }
387 |
--------------------------------------------------------------------------------
/src/plugins/zTree/css/awesomeStyle/awesome.less:
--------------------------------------------------------------------------------
1 | /*-------------------------------------
2 | zTree Style using fontawesome instead of images
3 |
4 | version: 1.1
5 | author: Mike King
6 | email: mikkelking @ hotmail . com
7 | website: http://code.google.com/p/jquerytree/
8 |
9 | -------------------------------------*/
10 |
11 | /* Definitions ----------------------*/
12 | @font-size: 12px;
13 | // Regular icon and text color is white, which suits any medium -> dark background
14 | @color-normal: white;
15 | // Background color
16 | @color-bg: #af0000;
17 | // Highlight color
18 | @color-highlight: yellow;
19 | // Partially selected (checkboxes, radio buttons)
20 | @color-partial: #aaaaaa;
21 | // Partially selected and focused (checkboxes, radio buttons)
22 | @color-partfocus: #cad96c;
23 | // Disabled altogether
24 | @color-disabled: #808080;
25 | // Editing color
26 | @color-edit: yellow;
27 | @w: 15px;
28 | @h: 17px;
29 | @pad-left: 2px;
30 | @pad-top: 10px;
31 | /* End of Definitions ---------------*/
32 |
33 | /* Imports -------------------------*/
34 | @import "fa.less";
35 | /* End of Imports ------------------*/
36 |
37 | .ztree * {padding:0; margin:0; font-size:@font-size; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif; background-color: @color-bg;}
38 | .ztree {
39 | margin:0; padding:5px; color:@color-normal; background-color: @color-bg;
40 | li {
41 | padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0;
42 | ul {
43 | margin: 0px; padding:0 0 0 18px;
44 | }
45 | ul.line { }
46 | a {padding-right:3px; margin:0; cursor:pointer; height:@h; color:@color-normal; background-color: transparent;
47 | text-decoration:none; vertical-align:top; display: inline-block;
48 | input.rename {height:14px; width:80px; padding:0; margin:0;
49 | color: @color-bg; background-color: @color-normal;
50 | font-size:@font-size; border:1px #585956 solid; *border:0px}
51 | }
52 | a:hover {text-decoration:underline}
53 | a.curSelectedNode {padding-top:0px; background-color:#af4040; color:@color-highlight; height:@h; opacity:0.8;}
54 | a.curSelectedNode_Edit {padding-top:0px; background-color:transparent; color:@color-highlight; height:@h; border:1px #666 solid; opacity:0.8;}
55 | a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:@color-highlight; height:@h; border:1px #666 solid;
56 | opacity:0.8; filter:alpha(opacity=80)}
57 | a.tmpTargetNode_prev {}
58 | a.tmpTargetNode_next {}
59 | span {line-height:@h; margin-right:2px; background-color:transparent;}
60 | span.button {line-height:0; margin:0; padding: 0; width:@w; height:@h; display: inline-block; vertical-align:top;
61 | border:0px solid; cursor: pointer;outline:none;
62 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
63 |
64 | &::before{color: @color-normal; font-family: FontAwesome; padding-top:@pad-top;}
65 | &.chk { margin:0px; cursor: auto; width: 12px;
66 | display: inline-block;padding-top:@pad-top;padding-left:@pad-left;
67 |
68 | &.checkbox_false_full::before {content: @fa-square-o;}
69 | &.checkbox_false_full_focus::before {content: @fa-square-o; color:@color-highlight;}
70 | &.checkbox_false_part::before {content: @fa-square-o;color: @color-partial;}
71 | &.checkbox_false_part_focus::before {content: @fa-square-o; color:@color-partfocus;}
72 | &.checkbox_false_disable::before {content: @fa-square-o; color:@color-disabled;}
73 | &.checkbox_true_full::before {content: @fa-check-square-o;}
74 | &.checkbox_true_full_focus::before {content: @fa-check-square-o;}
75 | &.checkbox_true_part::before {content: @fa-check-square;}
76 | &.checkbox_true_part_focus::before {content: @fa-check-square; color: @color-highlight}
77 | &.checkbox_true_full_focus::before {content: @fa-check-square-o; color: @color-highlight}
78 | &.checkbox_true_part::before {content: @fa-check-square-o;color: @color-partial}
79 | &.checkbox_true_part_focus::before {content: @fa-check-square-o;color: @color-partfocus;}
80 | &.checkbox_true_disable::before {content: @fa-check-square-o;color: @color-disabled}
81 |
82 | &.radio_false_full::before {content: @fa-circle-o;}
83 | &.radio_false_full_focus::before {content: @fa-circle-o;color: @color-highlight}
84 | &.radio_false_part::before {content: @fa-circle-o;color: @color-partial}
85 | &.radio_false_part_focus::before {content: @fa-circle-o;color: @color-highlight}
86 | &.radio_false_disable::before {content: @fa-circle-thin;color: @color-disabled}
87 | &.radio_true_full::before {content: @fa-dot-circle-o;}
88 | &.radio_true_full_focus::before {content: @fa-dot-circle-o;color: @color-highlight}
89 | &.radio_true_part::before {content: @fa-dot-circle-o;color: @color-partial}
90 | &.radio_true_part_focus::before {content: @fa-dot-circle-o;color: @color-partial;}
91 | &.radio_true_disable::before {content: @fa-circle-thin;color: @color-disabled}
92 |
93 | }
94 | &.switch {width:@w; height:@h}
95 | &.root_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
96 | &.root_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
97 | &.roots_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
98 | &.roots_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
99 | &.center_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
100 | &.center_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
101 | &.bottom_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
102 | &.bottom_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
103 | &.noline_open{}
104 | &.noline_close{}
105 | &.root_docu{ background:none;}
106 | &.roots_docu::before{content: @fa-list-alt;padding-left:@pad-left;display: inline-block;color:@color-normal;}
107 | &.center_docu::before{padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
108 | &.bottom_docu::before{padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
109 | &.noline_docu{ background:none;}
110 |
111 | &.ico_open::before {content: @fa-folder-open-o;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
112 | &.ico_close::before {content: @fa-folder-o;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
113 | &.ico_docu::before{content: @fa-list-alt;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
114 |
115 | &.edit {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;}
116 | &.edit::before{content: @fa-pencil-square-o;font-family: FontAwesome;}
117 |
118 | &.remove {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;}
119 | &.remove::before{content: @fa-trash;font-family: FontAwesome;}
120 |
121 |
122 | &.add {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;}
123 | &.add::before{content: @fa-plus;font-family: FontAwesome;}
124 |
125 | &.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
126 | }
127 |
128 | }
129 | }
130 |
131 |
132 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
133 |
134 | // this is the arrow that moves
135 | span.tmpzTreeMove_arrow{width:16px; height:@h; display: inline-block;
136 | padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
137 | background-color:transparent; background-attachment: scroll;
138 | }
139 | span.tmpzTreeMove_arrow::before{content: @fa-play;font-family: FontAwesome;color: @color-highlight;
140 | }
141 | // outline
142 |
143 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden;
144 | background-color:#cfcfcf; border:1px @color-highlight dotted; opacity:0.8; filter:alpha(opacity=80)}
145 | .ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
146 |
147 |
--------------------------------------------------------------------------------
/src/plugins/zTree/css/awesomeStyle/fa.less:
--------------------------------------------------------------------------------
1 | @fa-glass: "\f000";
2 | @fa-music: "\f001";
3 | @fa-search: "\f002";
4 | @fa-envelope-o: "\f003";
5 | @fa-heart: "\f004";
6 | @fa-star: "\f005";
7 | @fa-star-o: "\f006";
8 | @fa-user: "\f007";
9 | @fa-film: "\f008";
10 | @fa-th-large: "\f009";
11 | @fa-th: "\f00a";
12 | @fa-th-list: "\f00b";
13 | @fa-check: "\f00c";
14 | @fa-times: "\f00d";
15 | @fa-search-plus: "\f00e";
16 | @fa-search-minus: "\f010";
17 | @fa-power-off: "\f011";
18 | @fa-signal: "\f012";
19 | @fa-cog: "\f013";
20 | @fa-trash-o: "\f014";
21 | @fa-home: "\f015";
22 | @fa-file-o: "\f016";
23 | @fa-clock-o: "\f017";
24 | @fa-road: "\f018";
25 | @fa-download: "\f019";
26 | @fa-arrow-circle-o-down: "\f01a";
27 | @fa-arrow-circle-o-up: "\f01b";
28 | @fa-inbox: "\f01c";
29 | @fa-play-circle-o: "\f01d";
30 | @fa-repeat: "\f01e";
31 | @fa-refresh: "\f021";
32 | @fa-list-alt: "\f022";
33 | @fa-lock: "\f023";
34 | @fa-flag: "\f024";
35 | @fa-headphones: "\f025";
36 | @fa-volume-off: "\f026";
37 | @fa-volume-down: "\f027";
38 | @fa-volume-up: "\f028";
39 | @fa-qrcode: "\f029";
40 | @fa-barcode: "\f02a";
41 | @fa-tag: "\f02b";
42 | @fa-tags: "\f02c";
43 | @fa-book: "\f02d";
44 | @fa-bookmark: "\f02e";
45 | @fa-print: "\f02f";
46 | @fa-camera: "\f030";
47 | @fa-font: "\f031";
48 | @fa-bold: "\f032";
49 | @fa-italic: "\f033";
50 | @fa-text-height: "\f034";
51 | @fa-text-width: "\f035";
52 | @fa-align-left: "\f036";
53 | @fa-align-center: "\f037";
54 | @fa-align-right: "\f038";
55 | @fa-align-justify: "\f039";
56 | @fa-list: "\f03a";
57 | @fa-outdent: "\f03b";
58 | @fa-indent: "\f03c";
59 | @fa-video-camera: "\f03d";
60 | @fa-picture-o: "\f03e";
61 | @fa-pencil: "\f040";
62 | @fa-map-marker: "\f041";
63 | @fa-adjust: "\f042";
64 | @fa-tint: "\f043";
65 | @fa-pencil-square-o: "\f044";
66 | @fa-share-square-o: "\f045";
67 | @fa-check-square-o: "\f046";
68 | @fa-arrows: "\f047";
69 | @fa-step-backward: "\f048";
70 | @fa-fast-backward: "\f049";
71 | @fa-backward: "\f04a";
72 | @fa-play: "\f04b";
73 | @fa-pause: "\f04c";
74 | @fa-stop: "\f04d";
75 | @fa-forward: "\f04e";
76 | @fa-fast-forward: "\f050";
77 | @fa-step-forward: "\f051";
78 | @fa-eject: "\f052";
79 | @fa-chevron-left: "\f053";
80 | @fa-chevron-right: "\f054";
81 | @fa-plus-circle: "\f055";
82 | @fa-minus-circle: "\f056";
83 | @fa-times-circle: "\f057";
84 | @fa-check-circle: "\f058";
85 | @fa-question-circle: "\f059";
86 | @fa-info-circle: "\f05a";
87 | @fa-crosshairs: "\f05b";
88 | @fa-times-circle-o: "\f05c";
89 | @fa-check-circle-o: "\f05d";
90 | @fa-ban: "\f05e";
91 | @fa-arrow-left: "\f060";
92 | @fa-arrow-right: "\f061";
93 | @fa-arrow-up: "\f062";
94 | @fa-arrow-down: "\f063";
95 | @fa-share: "\f064";
96 | @fa-expand: "\f065";
97 | @fa-compress: "\f066";
98 | @fa-plus: "\f067";
99 | @fa-minus: "\f068";
100 | @fa-asterisk: "\f069";
101 | @fa-exclamation-circle: "\f06a";
102 | @fa-gift: "\f06b";
103 | @fa-leaf: "\f06c";
104 | @fa-fire: "\f06d";
105 | @fa-eye: "\f06e";
106 | @fa-eye-slash: "\f070";
107 | @fa-exclamation-triangle: "\f071";
108 | @fa-plane: "\f072";
109 | @fa-calendar: "\f073";
110 | @fa-random: "\f074";
111 | @fa-comment: "\f075";
112 | @fa-magnet: "\f076";
113 | @fa-chevron-up: "\f077";
114 | @fa-chevron-down: "\f078";
115 | @fa-retweet: "\f079";
116 | @fa-shopping-cart: "\f07a";
117 | @fa-folder: "\f07b";
118 | @fa-folder-open: "\f07c";
119 | @fa-arrows-v: "\f07d";
120 | @fa-arrows-h: "\f07e";
121 | @fa-bar-chart: "\f080";
122 | @fa-twitter-square: "\f081";
123 | @fa-facebook-square: "\f082";
124 | @fa-camera-retro: "\f083";
125 | @fa-key: "\f084";
126 | @fa-cogs: "\f085";
127 | @fa-comments: "\f086";
128 | @fa-thumbs-o-up: "\f087";
129 | @fa-thumbs-o-down: "\f088";
130 | @fa-star-half: "\f089";
131 | @fa-heart-o: "\f08a";
132 | @fa-sign-out: "\f08b";
133 | @fa-linkedin-square: "\f08c";
134 | @fa-thumb-tack: "\f08d";
135 | @fa-external-link: "\f08e";
136 | @fa-sign-in: "\f090";
137 | @fa-trophy: "\f091";
138 | @fa-github-square: "\f092";
139 | @fa-upload: "\f093";
140 | @fa-lemon-o: "\f094";
141 | @fa-phone: "\f095";
142 | @fa-square-o: "\f096";
143 | @fa-bookmark-o: "\f097";
144 | @fa-phone-square: "\f098";
145 | @fa-twitter: "\f099";
146 | @fa-facebook: "\f09a";
147 | @fa-github: "\f09b";
148 | @fa-unlock: "\f09c";
149 | @fa-credit-card: "\f09d";
150 | @fa-rss: "\f09e";
151 | @fa-hdd-o: "\f0a0";
152 | @fa-bullhorn: "\f0a1";
153 | @fa-bell: "\f0f3";
154 | @fa-certificate: "\f0a3";
155 | @fa-hand-o-right: "\f0a4";
156 | @fa-hand-o-left: "\f0a5";
157 | @fa-hand-o-up: "\f0a6";
158 | @fa-hand-o-down: "\f0a7";
159 | @fa-arrow-circle-left: "\f0a8";
160 | @fa-arrow-circle-right: "\f0a9";
161 | @fa-arrow-circle-up: "\f0aa";
162 | @fa-arrow-circle-down: "\f0ab";
163 | @fa-globe: "\f0ac";
164 | @fa-wrench: "\f0ad";
165 | @fa-tasks: "\f0ae";
166 | @fa-filter: "\f0b0";
167 | @fa-briefcase: "\f0b1";
168 | @fa-arrows-alt: "\f0b2";
169 | @fa-users: "\f0c0";
170 | @fa-link: "\f0c1";
171 | @fa-cloud: "\f0c2";
172 | @fa-flask: "\f0c3";
173 | @fa-scissors: "\f0c4";
174 | @fa-files-o: "\f0c5";
175 | @fa-paperclip: "\f0c6";
176 | @fa-floppy-o: "\f0c7";
177 | @fa-square: "\f0c8";
178 | @fa-bars: "\f0c9";
179 | @fa-list-ul: "\f0ca";
180 | @fa-list-ol: "\f0cb";
181 | @fa-strikethrough: "\f0cc";
182 | @fa-underline: "\f0cd";
183 | @fa-table: "\f0ce";
184 | @fa-magic: "\f0d0";
185 | @fa-truck: "\f0d1";
186 | @fa-pinterest: "\f0d2";
187 | @fa-pinterest-square: "\f0d3";
188 | @fa-google-plus-square: "\f0d4";
189 | @fa-google-plus: "\f0d5";
190 | @fa-money: "\f0d6";
191 | @fa-caret-down: "\f0d7";
192 | @fa-caret-up: "\f0d8";
193 | @fa-caret-left: "\f0d9";
194 | @fa-caret-right: "\f0da";
195 | @fa-columns: "\f0db";
196 | @fa-sort: "\f0dc";
197 | @fa-sort-desc: "\f0dd";
198 | @fa-sort-asc: "\f0de";
199 | @fa-envelope: "\f0e0";
200 | @fa-linkedin: "\f0e1";
201 | @fa-undo: "\f0e2";
202 | @fa-gavel: "\f0e3";
203 | @fa-tachometer: "\f0e4";
204 | @fa-comment-o: "\f0e5";
205 | @fa-comments-o: "\f0e6";
206 | @fa-bolt: "\f0e7";
207 | @fa-sitemap: "\f0e8";
208 | @fa-umbrella: "\f0e9";
209 | @fa-clipboard: "\f0ea";
210 | @fa-lightbulb-o: "\f0eb";
211 | @fa-exchange: "\f0ec";
212 | @fa-cloud-download: "\f0ed";
213 | @fa-cloud-upload: "\f0ee";
214 | @fa-user-md: "\f0f0";
215 | @fa-stethoscope: "\f0f1";
216 | @fa-suitcase: "\f0f2";
217 | @fa-bell-o: "\f0a2";
218 | @fa-coffee: "\f0f4";
219 | @fa-cutlery: "\f0f5";
220 | @fa-file-text-o: "\f0f6";
221 | @fa-building-o: "\f0f7";
222 | @fa-hospital-o: "\f0f8";
223 | @fa-ambulance: "\f0f9";
224 | @fa-medkit: "\f0fa";
225 | @fa-fighter-jet: "\f0fb";
226 | @fa-beer: "\f0fc";
227 | @fa-h-square: "\f0fd";
228 | @fa-plus-square: "\f0fe";
229 | @fa-angle-double-left: "\f100";
230 | @fa-angle-double-right: "\f101";
231 | @fa-angle-double-up: "\f102";
232 | @fa-angle-double-down: "\f103";
233 | @fa-angle-left: "\f104";
234 | @fa-angle-right: "\f105";
235 | @fa-angle-up: "\f106";
236 | @fa-angle-down: "\f107";
237 | @fa-desktop: "\f108";
238 | @fa-laptop: "\f109";
239 | @fa-tablet: "\f10a";
240 | @fa-mobile: "\f10b";
241 | @fa-circle-o: "\f10c";
242 | @fa-quote-left: "\f10d";
243 | @fa-quote-right: "\f10e";
244 | @fa-spinner: "\f110";
245 | @fa-circle: "\f111";
246 | @fa-reply: "\f112";
247 | @fa-github-alt: "\f113";
248 | @fa-folder-o: "\f114";
249 | @fa-folder-open-o: "\f115";
250 | @fa-smile-o: "\f118";
251 | @fa-frown-o: "\f119";
252 | @fa-meh-o: "\f11a";
253 | @fa-gamepad: "\f11b";
254 | @fa-keyboard-o: "\f11c";
255 | @fa-flag-o: "\f11d";
256 | @fa-flag-checkered: "\f11e";
257 | @fa-terminal: "\f120";
258 | @fa-code: "\f121";
259 | @fa-reply-all: "\f122";
260 | @fa-star-half-o: "\f123";
261 | @fa-location-arrow: "\f124";
262 | @fa-crop: "\f125";
263 | @fa-code-fork: "\f126";
264 | @fa-chain-broken: "\f127";
265 | @fa-question: "\f128";
266 | @fa-info: "\f129";
267 | @fa-exclamation: "\f12a";
268 | @fa-superscript: "\f12b";
269 | @fa-subscript: "\f12c";
270 | @fa-eraser: "\f12d";
271 | @fa-puzzle-piece: "\f12e";
272 | @fa-microphone: "\f130";
273 | @fa-microphone-slash: "\f131";
274 | @fa-shield: "\f132";
275 | @fa-calendar-o: "\f133";
276 | @fa-fire-extinguisher: "\f134";
277 | @fa-rocket: "\f135";
278 | @fa-maxcdn: "\f136";
279 | @fa-chevron-circle-left: "\f137";
280 | @fa-chevron-circle-right: "\f138";
281 | @fa-chevron-circle-up: "\f139";
282 | @fa-chevron-circle-down: "\f13a";
283 | @fa-html5: "\f13b";
284 | @fa-css3: "\f13c";
285 | @fa-anchor: "\f13d";
286 | @fa-unlock-alt: "\f13e";
287 | @fa-bullseye: "\f140";
288 | @fa-ellipsis-h: "\f141";
289 | @fa-ellipsis-v: "\f142";
290 | @fa-rss-square: "\f143";
291 | @fa-play-circle: "\f144";
292 | @fa-ticket: "\f145";
293 | @fa-minus-square: "\f146";
294 | @fa-minus-square-o: "\f147";
295 | @fa-level-up: "\f148";
296 | @fa-level-down: "\f149";
297 | @fa-check-square: "\f14a";
298 | @fa-pencil-square: "\f14b";
299 | @fa-external-link-square: "\f14c";
300 | @fa-share-square: "\f14d";
301 | @fa-compass: "\f14e";
302 | @fa-caret-square-o-down: "\f150";
303 | @fa-caret-square-o-up: "\f151";
304 | @fa-caret-square-o-right: "\f152";
305 | @fa-eur: "\f153";
306 | @fa-gbp: "\f154";
307 | @fa-usd: "\f155";
308 | @fa-inr: "\f156";
309 | @fa-jpy: "\f157";
310 | @fa-rub: "\f158";
311 | @fa-krw: "\f159";
312 | @fa-btc: "\f15a";
313 | @fa-file: "\f15b";
314 | @fa-file-text: "\f15c";
315 | @fa-sort-alpha-asc: "\f15d";
316 | @fa-sort-alpha-desc: "\f15e";
317 | @fa-sort-amount-asc: "\f160";
318 | @fa-sort-amount-desc: "\f161";
319 | @fa-sort-numeric-asc: "\f162";
320 | @fa-sort-numeric-desc: "\f163";
321 | @fa-thumbs-up: "\f164";
322 | @fa-thumbs-down: "\f165";
323 | @fa-youtube-square: "\f166";
324 | @fa-youtube: "\f167";
325 | @fa-xing: "\f168";
326 | @fa-xing-square: "\f169";
327 | @fa-youtube-play: "\f16a";
328 | @fa-dropbox: "\f16b";
329 | @fa-stack-overflow: "\f16c";
330 | @fa-instagram: "\f16d";
331 | @fa-flickr: "\f16e";
332 | @fa-adn: "\f170";
333 | @fa-bitbucket: "\f171";
334 | @fa-bitbucket-square: "\f172";
335 | @fa-tumblr: "\f173";
336 | @fa-tumblr-square: "\f174";
337 | @fa-long-arrow-down: "\f175";
338 | @fa-long-arrow-up: "\f176";
339 | @fa-long-arrow-left: "\f177";
340 | @fa-long-arrow-right: "\f178";
341 | @fa-apple: "\f179";
342 | @fa-windows: "\f17a";
343 | @fa-android: "\f17b";
344 | @fa-linux: "\f17c";
345 | @fa-dribbble: "\f17d";
346 | @fa-skype: "\f17e";
347 | @fa-foursquare: "\f180";
348 | @fa-trello: "\f181";
349 | @fa-female: "\f182";
350 | @fa-male: "\f183";
351 | @fa-gittip: "\f184";
352 | @fa-sun-o: "\f185";
353 | @fa-moon-o: "\f186";
354 | @fa-archive: "\f187";
355 | @fa-bug: "\f188";
356 | @fa-vk: "\f189";
357 | @fa-weibo: "\f18a";
358 | @fa-renren: "\f18b";
359 | @fa-pagelines: "\f18c";
360 | @fa-stack-exchange: "\f18d";
361 | @fa-arrow-circle-o-right: "\f18e";
362 | @fa-arrow-circle-o-left: "\f190";
363 | @fa-caret-square-o-left: "\f191";
364 | @fa-dot-circle-o: "\f192";
365 | @fa-wheelchair: "\f193";
366 | @fa-vimeo-square: "\f194";
367 | @fa-try: "\f195";
368 | @fa-plus-square-o: "\f196";
369 | @fa-space-shuttle: "\f197";
370 | @fa-slack: "\f198";
371 | @fa-envelope-square: "\f199";
372 | @fa-wordpress: "\f19a";
373 | @fa-openid: "\f19b";
374 | @fa-university: "\f19c";
375 | @fa-graduation-cap: "\f19d";
376 | @fa-yahoo: "\f19e";
377 | @fa-google: "\f1a0";
378 | @fa-reddit: "\f1a1";
379 | @fa-reddit-square: "\f1a2";
380 | @fa-stumbleupon-circle: "\f1a3";
381 | @fa-stumbleupon: "\f1a4";
382 | @fa-delicious: "\f1a5";
383 | @fa-digg: "\f1a6";
384 | @fa-pied-piper: "\f1a7";
385 | @fa-pied-piper-alt: "\f1a8";
386 | @fa-drupal: "\f1a9";
387 | @fa-joomla: "\f1aa";
388 | @fa-language: "\f1ab";
389 | @fa-fax: "\f1ac";
390 | @fa-building: "\f1ad";
391 | @fa-child: "\f1ae";
392 | @fa-paw: "\f1b0";
393 | @fa-spoon: "\f1b1";
394 | @fa-cube: "\f1b2";
395 | @fa-cubes: "\f1b3";
396 | @fa-behance: "\f1b4";
397 | @fa-behance-square: "\f1b5";
398 | @fa-steam: "\f1b6";
399 | @fa-steam-square: "\f1b7";
400 | @fa-recycle: "\f1b8";
401 | @fa-car: "\f1b9";
402 | @fa-taxi: "\f1ba";
403 | @fa-tree: "\f1bb";
404 | @fa-spotify: "\f1bc";
405 | @fa-deviantart: "\f1bd";
406 | @fa-soundcloud: "\f1be";
407 | @fa-database: "\f1c0";
408 | @fa-file-pdf-o: "\f1c1";
409 | @fa-file-word-o: "\f1c2";
410 | @fa-file-excel-o: "\f1c3";
411 | @fa-file-powerpoint-o: "\f1c4";
412 | @fa-file-image-o: "\f1c5";
413 | @fa-file-archive-o: "\f1c6";
414 | @fa-file-audio-o: "\f1c7";
415 | @fa-file-video-o: "\f1c8";
416 | @fa-file-code-o: "\f1c9";
417 | @fa-vine: "\f1ca";
418 | @fa-codepen: "\f1cb";
419 | @fa-jsfiddle: "\f1cc";
420 | @fa-life-ring: "\f1cd";
421 | @fa-circle-o-notch: "\f1ce";
422 | @fa-rebel: "\f1d0";
423 | @fa-empire: "\f1d1";
424 | @fa-git-square: "\f1d2";
425 | @fa-git: "\f1d3";
426 | @fa-hacker-news: "\f1d4";
427 | @fa-tencent-weibo: "\f1d5";
428 | @fa-qq: "\f1d6";
429 | @fa-weixin: "\f1d7";
430 | @fa-paper-plane: "\f1d8";
431 | @fa-paper-plane-o: "\f1d9";
432 | @fa-history: "\f1da";
433 | @fa-circle-thin: "\f1db";
434 | @fa-header: "\f1dc";
435 | @fa-paragraph: "\f1dd";
436 | @fa-sliders: "\f1de";
437 | @fa-share-alt: "\f1e0";
438 | @fa-share-alt-square: "\f1e1";
439 | @fa-bomb: "\f1e2";
440 | @fa-futbol-o: "\f1e3";
441 | @fa-tty: "\f1e4";
442 | @fa-binoculars: "\f1e5";
443 | @fa-plug: "\f1e6";
444 | @fa-slideshare: "\f1e7";
445 | @fa-twitch: "\f1e8";
446 | @fa-yelp: "\f1e9";
447 | @fa-newspaper-o: "\f1ea";
448 | @fa-wifi: "\f1eb";
449 | @fa-calculator: "\f1ec";
450 | @fa-paypal: "\f1ed";
451 | @fa-google-wallet: "\f1ee";
452 | @fa-cc-visa: "\f1f0";
453 | @fa-cc-mastercard: "\f1f1";
454 | @fa-cc-discover: "\f1f2";
455 | @fa-cc-amex: "\f1f3";
456 | @fa-cc-paypal: "\f1f4";
457 | @fa-cc-stripe: "\f1f5";
458 | @fa-bell-slash: "\f1f6";
459 | @fa-bell-slash-o: "\f1f7";
460 | @fa-trash: "\f1f8";
461 | @fa-copyright: "\f1f9";
462 | @fa-at: "\f1fa";
463 | @fa-eyedropper: "\f1fb";
464 | @fa-paint-brush: "\f1fc";
465 | @fa-birthday-cake: "\f1fd";
466 | @fa-area-chart: "\f1fe";
467 | @fa-pie-chart: "\f200";
468 | @fa-line-chart: "\f201";
469 | @fa-lastfm: "\f202";
470 | @fa-lastfm-square: "\f203";
471 | @fa-toggle-off: "\f204";
472 | @fa-toggle-on: "\f205";
473 | @fa-bicycle: "\f206";
474 | @fa-bus: "\f207";
475 | @fa-ioxhost: "\f208";
476 | @fa-angellist: "\f209";
477 | @fa-cc: "\f20a";
478 | @fa-ils: "\f20b";
479 | @fa-meanpath: "\f20c";
480 |
481 |
--------------------------------------------------------------------------------
/src/plugins/zTree/css/awesomeStyle/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/awesomeStyle/img/loading.gif
--------------------------------------------------------------------------------
/src/plugins/zTree/css/demo.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
2 | margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
3 | body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #f0f6e4 \9;}
4 | h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, sans-serif;padding-bottom: 5px;}
5 | h1 {font-size: 24px;line-height: 34px;text-align: center;}
6 | h2 {font-size: 14px;line-height: 24px;padding-top: 5px;}
7 | h6 {font-weight: normal;font-size: 12px;letter-spacing: 1px;line-height: 24px;text-align: center;}
8 | a {color:#3C6E31;text-decoration: underline;}
9 | a:hover {background-color:#3C6E31;color:white;}
10 | input.radio {margin: 0 2px 0 8px;}
11 | input.radio.first {margin-left:0;}
12 | input.empty {color: lightgray;}
13 | code {color: #2f332a;}
14 | .highlight_red {color:#A60000;}
15 | .highlight_green {color:#A7F43D;}
16 | li {list-style: circle;font-size: 12px;}
17 | li.title {list-style: none;}
18 | ul.list {margin-left: 17px;}
19 |
20 | div.content_wrap {width: 600px;height:380px;}
21 | div.content_wrap div.left{float: left;width: 250px;}
22 | div.content_wrap div.right{float: right;width: 340px;}
23 | div.zTreeDemoBackground {width:250px;height:362px;text-align:left;}
24 |
25 | ul.ztree {margin-top: 10px;border: 1px solid #617775;background: #f0f6e4;width:220px;height:360px;overflow-y:scroll;overflow-x:auto;}
26 | ul.log {border: 1px solid #617775;background: #f0f6e4;width:300px;height:170px;overflow: hidden;}
27 | ul.log.small {height:45px;}
28 | ul.log li {color: #666666;list-style: none;padding-left: 10px;}
29 | ul.log li.dark {background-color: #E3E3E3;}
30 |
31 | /* ruler */
32 | div.ruler {height:20px; width:220px; background-color:#f0f6e4;border: 1px solid #333; margin-bottom: 5px; cursor: pointer}
33 | div.ruler div.cursor {height:20px; width:30px; background-color:#3C6E31; color:white; text-align: right; padding-right: 5px; cursor: pointer}
--------------------------------------------------------------------------------
/src/plugins/zTree/css/metroStyle/img/line_conn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/metroStyle/img/line_conn.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/metroStyle/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/metroStyle/img/loading.gif
--------------------------------------------------------------------------------
/src/plugins/zTree/css/metroStyle/img/metro.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/metroStyle/img/metro.gif
--------------------------------------------------------------------------------
/src/plugins/zTree/css/metroStyle/img/metro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/metroStyle/img/metro.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/metroStyle/metroStyle.css:
--------------------------------------------------------------------------------
1 | /*-------------------------------------
2 | zTree Style
3 |
4 | version: 3.4
5 | author: Hunter.z
6 | email: hunter.z@263.net
7 | website: http://code.google.com/p/jquerytree/
8 |
9 | -------------------------------------*/
10 |
11 | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
12 | .ztree {margin:0; padding:5px; color:#333}
13 | .ztree li{padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0}
14 | .ztree li ul{ margin:0; padding:0 0 0 18px}
15 | .ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;}
16 |
17 | .ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; vertical-align:top; display: inline-block}
18 | .ztree li a:hover {text-decoration:underline}
19 | .ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; opacity:0.8;}
20 | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; border:1px #666 solid; opacity:0.8;}
21 | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid;
22 | opacity:0.8; filter:alpha(opacity=80)}
23 | .ztree li a.tmpTargetNode_prev {}
24 | .ztree li a.tmpTargetNode_next {}
25 | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
26 | font-size:12px; border:1px #585956 solid; *border:0px}
27 | .ztree li span {line-height:21px; margin-right:2px}
28 | .ztree li span.button {line-height:0; margin:0; padding: 0; width:21px; height:21px; display: inline-block; vertical-align:middle;
29 | border:0 none; cursor: pointer;outline:none;
30 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
31 | background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
32 |
33 | .ztree li span.button.chk {width:13px; height:13px; margin:0 2px; cursor: auto}
34 | .ztree li span.button.chk.checkbox_false_full {background-position: -5px -5px;}
35 | .ztree li span.button.chk.checkbox_false_full_focus {background-position: -5px -26px;}
36 | .ztree li span.button.chk.checkbox_false_part {background-position: -5px -48px;}
37 | .ztree li span.button.chk.checkbox_false_part_focus {background-position: -5px -68px;}
38 | .ztree li span.button.chk.checkbox_false_disable {background-position: -5px -89px;}
39 | .ztree li span.button.chk.checkbox_true_full {background-position: -26px -5px;}
40 | .ztree li span.button.chk.checkbox_true_full_focus {background-position: -26px -26px;}
41 | .ztree li span.button.chk.checkbox_true_part {background-position: -26px -48px;}
42 | .ztree li span.button.chk.checkbox_true_part_focus {background-position: -26px -68px;}
43 | .ztree li span.button.chk.checkbox_true_disable {background-position: -26px -89px;}
44 | .ztree li span.button.chk.radio_false_full {background-position: -47px -5px;}
45 | .ztree li span.button.chk.radio_false_full_focus {background-position: -47px -26px;}
46 | .ztree li span.button.chk.radio_false_part {background-position: -47px -47px;}
47 | .ztree li span.button.chk.radio_false_part_focus {background-position: -47px -68px;}
48 | .ztree li span.button.chk.radio_false_disable {background-position: -47px -89px;}
49 | .ztree li span.button.chk.radio_true_full {background-position: -68px -5px;}
50 | .ztree li span.button.chk.radio_true_full_focus {background-position: -68px -26px;}
51 | .ztree li span.button.chk.radio_true_part {background-position: -68px -47px;}
52 | .ztree li span.button.chk.radio_true_part_focus {background-position: -68px -68px;}
53 | .ztree li span.button.chk.radio_true_disable {background-position: -68px -89px;}
54 |
55 | .ztree li span.button.switch {width:21px; height:21px}
56 | .ztree li span.button.root_open{background-position:-105px -63px}
57 | .ztree li span.button.root_close{background-position:-126px -63px}
58 | .ztree li span.button.roots_open{background-position: -105px 0;}
59 | .ztree li span.button.roots_close{background-position: -126px 0;}
60 | .ztree li span.button.center_open{background-position: -105px -21px;}
61 | .ztree li span.button.center_close{background-position: -126px -21px;}
62 | .ztree li span.button.bottom_open{background-position: -105px -42px;}
63 | .ztree li span.button.bottom_close{background-position: -126px -42px;}
64 | .ztree li span.button.noline_open{background-position: -105px -84px;}
65 | .ztree li span.button.noline_close{background-position: -126px -84px;}
66 | .ztree li span.button.root_docu{ background:none;}
67 | .ztree li span.button.roots_docu{background-position: -84px 0;}
68 | .ztree li span.button.center_docu{background-position: -84px -21px;}
69 | .ztree li span.button.bottom_docu{background-position: -84px -42px;}
70 | .ztree li span.button.noline_docu{ background:none;}
71 |
72 | .ztree li span.button.ico_open{margin-right:2px; background-position: -147px -21px; vertical-align:top; *vertical-align:middle}
73 | .ztree li span.button.ico_close{margin-right:2px; margin-right:2px; background-position: -147px 0; vertical-align:top; *vertical-align:middle}
74 | .ztree li span.button.ico_docu{margin-right:2px; background-position: -147px -42px; vertical-align:top; *vertical-align:middle}
75 | .ztree li span.button.edit {margin-left:2px; margin-right: -1px; background-position: -189px -21px; vertical-align:top; *vertical-align:middle}
76 | .ztree li span.button.edit:hover {
77 | background-position: -168px -21px;
78 | }
79 | .ztree li span.button.remove {margin-left:2px; margin-right: -1px; background-position: -189px -42px; vertical-align:top; *vertical-align:middle}
80 | .ztree li span.button.remove:hover {
81 | background-position: -168px -42px;
82 | }
83 | .ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position: -189px 0; vertical-align:top; *vertical-align:middle}
84 | .ztree li span.button.add:hover {
85 | background-position: -168px 0;
86 | }
87 | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
88 |
89 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
90 |
91 | span.tmpzTreeMove_arrow {width:16px; height:21px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
92 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
93 | background-position:-168px -84px; background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
94 |
95 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
96 | .ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
97 |
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/1_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/1_close.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/1_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/1_open.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/2.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/3.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/4.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/5.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/6.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/7.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/8.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/diy/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/diy/9.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/line_conn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/line_conn.gif
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/loading.gif
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/zTreeStandard.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/zTreeStandard.gif
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/img/zTreeStandard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AmarsDing/leaflet-vector-scalar-js/71916f0e2dc7204888882430d1c5f47be379da4f/src/plugins/zTree/css/zTreeStyle/img/zTreeStandard.png
--------------------------------------------------------------------------------
/src/plugins/zTree/css/zTreeStyle/zTreeStyle.css:
--------------------------------------------------------------------------------
1 | /*-------------------------------------
2 | zTree Style
3 |
4 | version: 3.5.19
5 | author: Hunter.z
6 | email: hunter.z@263.net
7 | website: http://code.google.com/p/jquerytree/
8 |
9 | -------------------------------------*/
10 |
11 | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
12 | .ztree {margin:0; padding:5px; color:#333}
13 | .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
14 | .ztree li ul{ margin:0; padding:0 0 0 18px}
15 | .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
16 |
17 | .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
18 | text-decoration:none; vertical-align:top; display: inline-block}
19 | .ztree li a:hover {text-decoration:underline}
20 | .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
21 | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
22 | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
23 | opacity:0.8; filter:alpha(opacity=80)}
24 | .ztree li a.tmpTargetNode_prev {}
25 | .ztree li a.tmpTargetNode_next {}
26 | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
27 | font-size:12px; border:1px #7EC4CC solid; *border:0px}
28 | .ztree li span {line-height:16px; margin-right:2px}
29 | .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
30 | border:0 none; cursor: pointer;outline:none;
31 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
32 | background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
33 |
34 | .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
35 | .ztree li span.button.chk.checkbox_false_full {background-position:0 0}
36 | .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
37 | .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
38 | .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
39 | .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
40 | .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
41 | .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
42 | .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
43 | .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
44 | .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
45 | .ztree li span.button.chk.radio_false_full {background-position:-28px 0}
46 | .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
47 | .ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
48 | .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
49 | .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
50 | .ztree li span.button.chk.radio_true_full {background-position:-42px 0}
51 | .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
52 | .ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
53 | .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
54 | .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
55 |
56 | .ztree li span.button.switch {width:18px; height:18px}
57 | .ztree li span.button.root_open{background-position:-92px -54px}
58 | .ztree li span.button.root_close{background-position:-74px -54px}
59 | .ztree li span.button.roots_open{background-position:-92px 0}
60 | .ztree li span.button.roots_close{background-position:-74px 0}
61 | .ztree li span.button.center_open{background-position:-92px -18px}
62 | .ztree li span.button.center_close{background-position:-74px -18px}
63 | .ztree li span.button.bottom_open{background-position:-92px -36px}
64 | .ztree li span.button.bottom_close{background-position:-74px -36px}
65 | .ztree li span.button.noline_open{background-position:-92px -72px}
66 | .ztree li span.button.noline_close{background-position:-74px -72px}
67 | .ztree li span.button.root_docu{ background:none;}
68 | .ztree li span.button.roots_docu{background-position:-56px 0}
69 | .ztree li span.button.center_docu{background-position:-56px -18px}
70 | .ztree li span.button.bottom_docu{background-position:-56px -36px}
71 | .ztree li span.button.noline_docu{ background:none;}
72 |
73 | .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
74 | .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
75 | .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
76 | .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
77 | .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
78 |
79 | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
80 |
81 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
82 |
83 | span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
84 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
85 | background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
86 |
87 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
88 | .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
89 |
90 | /* level style*/
91 | /*.ztree li span.button.level0 {
92 | display:none;
93 | }
94 | .ztree li ul.level0 {
95 | padding:0;
96 | background:none;
97 | }*/
--------------------------------------------------------------------------------
/src/plugins/zTree/js/jquery.ztree.excheck.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},c={check:{enable:!1,autoCheckTrigger:!1,chkStyle:t.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:t.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}},r={onCheckNode:function(e,t){if(!0===t.chkDisabled)return!1;var c=C.getSetting(e.data.treeId);if(0==o.apply(c.callback.beforeCheck,[c.treeId,t],!0))return!0;var h=C.nodeChecked(c,t);C.nodeChecked(c,t,!h),l.checkNodeRelation(c,t);var a=f(t,s.id.CHECK,c);return l.setChkClass(c,a,t),l.repairParentChkClassWithSelf(c,t),c.treeObj.trigger(s.event.CHECK,[e,c.treeId,t]),!0},onMouseoverCheck:function(e,t){if(!0===t.chkDisabled)return!1;var c=C.getSetting(e.data.treeId),h=f(t,s.id.CHECK,c);return t.check_Focus=!0,l.setChkClass(c,h,t),!0},onMouseoutCheck:function(e,t){if(!0===t.chkDisabled)return!1;var c=C.getSetting(e.data.treeId),h=f(t,s.id.CHECK,c);return t.check_Focus=!1,l.setChkClass(c,h,t),!0}},h={tools:{},view:{checkNodeRelation:function(e,t){var c,h,a,n=s.radio,i=C.nodeChecked(e,t);if(e.check.chkStyle==n.STYLE){var r=C.getRadioCheckedList(e);if(i)if(e.check.radioType==n.TYPE_ALL){for(h=r.length-1;0<=h;h--){c=r[h],C.nodeChecked(e,c)&&c!=t&&(C.nodeChecked(e,c,!1),r.splice(h,1),l.setChkClass(e,f(c,s.id.CHECK,e),c),c.parentTId!=t.parentTId&&l.repairParentChkClassWithSelf(e,c))}r.push(t)}else{var o=t.parentTId?t.getParentNode():C.getRoot(e);for(h=0,a=(d=C.nodeChildren(e,o)).length;h"))}),C.addZTreeTools(function(i,h){h.checkNode=function(e,t,c,h){var a=C.nodeChecked(i,e);if(!0!==e.chkDisabled&&(!0!==t&&!1!==t&&(t=!a),h=!!h,(a!==t||c)&&(!h||0!=o.apply(this.setting.callback.beforeCheck,[this.setting.treeId,e],!0))&&o.uCanDo(this.setting)&&this.setting.check.enable&&!0!==e.nocheck)){C.nodeChecked(i,e,t);var n=f(e,s.id.CHECK,this.setting);!c&&this.setting.check.chkStyle!==s.radio.STYLE||l.checkNodeRelation(this.setting,e),l.setChkClass(this.setting,n,e),l.repairParentChkClassWithSelf(this.setting,e),h&&this.setting.treeObj.trigger(s.event.CHECK,[null,this.setting.treeId,e])}},h.checkAllNodes=function(e){l.repairAllChk(this.setting,!!e)},h.getCheckedNodes=function(e){e=!1!==e;var t=C.nodeChildren(i,C.getRoot(this.setting));return C.getTreeCheckedNodes(this.setting,t,e)},h.getChangeCheckedNodes=function(){var e=C.nodeChildren(i,C.getRoot(this.setting));return C.getTreeChangeCheckedNodes(this.setting,e)},h.setChkDisabled=function(e,t,c,h){t=!!t,c=!!c,h=!!h,l.repairSonChkDisabled(this.setting,e,t,h),l.repairParentChkDisabled(this.setting,e.getParentNode(),t,c)};var a=h.updateNode;h.updateNode=function(e,t){if((a&&a.apply(h,arguments),e&&this.setting.check.enable)&&(f(e,this.setting).get(0)&&o.uCanDo(this.setting))){var c=f(e,s.id.CHECK,this.setting);1!=t&&this.setting.check.chkStyle!==s.radio.STYLE||l.checkNodeRelation(this.setting,e),l.setChkClass(this.setting,c,e),l.repairParentChkClassWithSelf(this.setting,e)}}});var n=l.createNodes;l.createNodes=function(e,t,c,h,a){n&&n.apply(l,arguments),c&&l.repairParentChkClassWithSelf(e,h)};var i=l.removeNode;l.removeNode=function(e,t){var c=t.getParentNode();i&&i.apply(l,arguments),t&&c&&(l.repairChkClass(e,c),l.repairParentChkClass(e,c))};var d=l.appendNodes;l.appendNodes=function(e,t,c,h,a,n,i){var r="";return d&&(r=d.apply(l,arguments)),h&&C.makeChkFlag(e,h),r}}(jQuery);
--------------------------------------------------------------------------------
/src/plugins/zTree/js/jquery.ztree.exhide.js:
--------------------------------------------------------------------------------
1 | /*
2 | * JQuery zTree exHideNodes
3 | * v3.5.42
4 | * http://treejs.cn/
5 | *
6 | * Copyright (c) 2010 Hunter.z
7 | *
8 | * Licensed same as jquery - MIT License
9 | * http://www.opensource.org/licenses/mit-license.php
10 | *
11 | * Date: 2020-01-19
12 | */
13 |
14 | (function ($) {
15 | var _setting = {
16 | data: {
17 | key: {
18 | isHidden: "isHidden"
19 | }
20 | }
21 | };
22 | //default init node of exLib
23 | var _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
24 | var isHidden = data.isHidden(setting, n);
25 | data.isHidden(setting, n, isHidden);
26 | data.initHideForExCheck(setting, n);
27 | },
28 | //add dom for check
29 | _beforeA = function (setting, node, html) {
30 | },
31 | //update zTreeObj, add method of exLib
32 | _zTreeTools = function (setting, zTreeTools) {
33 | zTreeTools.showNodes = function (nodes, options) {
34 | view.showNodes(setting, nodes, options);
35 | }
36 | zTreeTools.showNode = function (node, options) {
37 | if (!node) {
38 | return;
39 | }
40 | view.showNodes(setting, [node], options);
41 | }
42 | zTreeTools.hideNodes = function (nodes, options) {
43 | view.hideNodes(setting, nodes, options);
44 | }
45 | zTreeTools.hideNode = function (node, options) {
46 | if (!node) {
47 | return;
48 | }
49 | view.hideNodes(setting, [node], options);
50 | }
51 |
52 | var _checkNode = zTreeTools.checkNode;
53 | if (_checkNode) {
54 | zTreeTools.checkNode = function (node, checked, checkTypeFlag, callbackFlag) {
55 | if (!!node && !!data.isHidden(setting, node)) {
56 | return;
57 | }
58 | _checkNode.apply(zTreeTools, arguments);
59 | }
60 | }
61 | },
62 | //method of operate data
63 | _data = {
64 | initHideForExCheck: function (setting, n) {
65 | var isHidden = data.isHidden(setting, n);
66 | if (isHidden && setting.check && setting.check.enable) {
67 | if (typeof n._nocheck == "undefined") {
68 | n._nocheck = !!n.nocheck
69 | n.nocheck = true;
70 | }
71 | n.check_Child_State = -1;
72 | if (view.repairParentChkClassWithSelf) {
73 | view.repairParentChkClassWithSelf(setting, n);
74 | }
75 | }
76 | },
77 | initShowForExCheck: function (setting, n) {
78 | var isHidden = data.isHidden(setting, n);
79 | if (!isHidden && setting.check && setting.check.enable) {
80 | if (typeof n._nocheck != "undefined") {
81 | n.nocheck = n._nocheck;
82 | delete n._nocheck;
83 | }
84 | if (view.setChkClass) {
85 | var checkObj = $$(n, consts.id.CHECK, setting);
86 | view.setChkClass(setting, checkObj, n);
87 | }
88 | if (view.repairParentChkClassWithSelf) {
89 | view.repairParentChkClassWithSelf(setting, n);
90 | }
91 | }
92 | }
93 | },
94 | //method of operate ztree dom
95 | _view = {
96 | clearOldFirstNode: function (setting, node) {
97 | var n = node.getNextNode();
98 | while (!!n) {
99 | if (n.isFirstNode) {
100 | n.isFirstNode = false;
101 | view.setNodeLineIcos(setting, n);
102 | break;
103 | }
104 | if (n.isLastNode) {
105 | break;
106 | }
107 | n = n.getNextNode();
108 | }
109 | },
110 | clearOldLastNode: function (setting, node, openFlag) {
111 | var n = node.getPreNode();
112 | while (!!n) {
113 | if (n.isLastNode) {
114 | n.isLastNode = false;
115 | if (openFlag) {
116 | view.setNodeLineIcos(setting, n);
117 | }
118 | break;
119 | }
120 | if (n.isFirstNode) {
121 | break;
122 | }
123 | n = n.getPreNode();
124 | }
125 | },
126 | makeDOMNodeMainBefore: function (html, setting, node) {
127 | var isHidden = data.isHidden(setting, node);
128 | html.push("");
129 | },
130 | showNode: function (setting, node, options) {
131 | data.isHidden(setting, node, false);
132 | data.initShowForExCheck(setting, node);
133 | $$(node, setting).show();
134 | },
135 | showNodes: function (setting, nodes, options) {
136 | if (!nodes || nodes.length == 0) {
137 | return;
138 | }
139 | var pList = {}, i, j;
140 | for (i = 0, j = nodes.length; i < j; i++) {
141 | var n = nodes[i];
142 | if (!pList[n.parentTId]) {
143 | var pn = n.getParentNode();
144 | pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
145 | }
146 | view.showNode(setting, n, options);
147 | }
148 | for (var tId in pList) {
149 | var children = data.nodeChildren(setting, pList[tId]);
150 | view.setFirstNodeForShow(setting, children);
151 | view.setLastNodeForShow(setting, children);
152 | }
153 | },
154 | hideNode: function (setting, node, options) {
155 | data.isHidden(setting, node, true);
156 | node.isFirstNode = false;
157 | node.isLastNode = false;
158 | data.initHideForExCheck(setting, node);
159 | view.cancelPreSelectedNode(setting, node);
160 | $$(node, setting).hide();
161 | },
162 | hideNodes: function (setting, nodes, options) {
163 | if (!nodes || nodes.length == 0) {
164 | return;
165 | }
166 | var pList = {}, i, j;
167 | for (i = 0, j = nodes.length; i < j; i++) {
168 | var n = nodes[i];
169 | if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) {
170 | var pn = n.getParentNode();
171 | pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
172 | }
173 | view.hideNode(setting, n, options);
174 | }
175 | for (var tId in pList) {
176 | var children = data.nodeChildren(setting, pList[tId]);
177 | view.setFirstNodeForHide(setting, children);
178 | view.setLastNodeForHide(setting, children);
179 | }
180 | },
181 | setFirstNode: function (setting, parentNode) {
182 | var children = data.nodeChildren(setting, parentNode);
183 | var isHidden = data.isHidden(setting, children[0], false);
184 | if (children.length > 0 && !isHidden) {
185 | children[0].isFirstNode = true;
186 | } else if (children.length > 0) {
187 | view.setFirstNodeForHide(setting, children);
188 | }
189 | },
190 | setLastNode: function (setting, parentNode) {
191 | var children = data.nodeChildren(setting, parentNode);
192 | var isHidden = data.isHidden(setting, children[0]);
193 | if (children.length > 0 && !isHidden) {
194 | children[children.length - 1].isLastNode = true;
195 | } else if (children.length > 0) {
196 | view.setLastNodeForHide(setting, children);
197 | }
198 | },
199 | setFirstNodeForHide: function (setting, nodes) {
200 | var n, i, j;
201 | for (i = 0, j = nodes.length; i < j; i++) {
202 | n = nodes[i];
203 | if (n.isFirstNode) {
204 | break;
205 | }
206 | var isHidden = data.isHidden(setting, n);
207 | if (!isHidden && !n.isFirstNode) {
208 | n.isFirstNode = true;
209 | view.setNodeLineIcos(setting, n);
210 | break;
211 | } else {
212 | n = null;
213 | }
214 | }
215 | return n;
216 | },
217 | setFirstNodeForShow: function (setting, nodes) {
218 | var n, i, j, first, old;
219 | for (i = 0, j = nodes.length; i < j; i++) {
220 | n = nodes[i];
221 | var isHidden = data.isHidden(setting, n);
222 | if (!first && !isHidden && n.isFirstNode) {
223 | first = n;
224 | break;
225 | } else if (!first && !isHidden && !n.isFirstNode) {
226 | n.isFirstNode = true;
227 | first = n;
228 | view.setNodeLineIcos(setting, n);
229 | } else if (first && n.isFirstNode) {
230 | n.isFirstNode = false;
231 | old = n;
232 | view.setNodeLineIcos(setting, n);
233 | break;
234 | } else {
235 | n = null;
236 | }
237 | }
238 | return {"new": first, "old": old};
239 | },
240 | setLastNodeForHide: function (setting, nodes) {
241 | var n, i;
242 | for (i = nodes.length - 1; i >= 0; i--) {
243 | n = nodes[i];
244 | if (n.isLastNode) {
245 | break;
246 | }
247 | var isHidden = data.isHidden(setting, n);
248 | if (!isHidden && !n.isLastNode) {
249 | n.isLastNode = true;
250 | view.setNodeLineIcos(setting, n);
251 | break;
252 | } else {
253 | n = null;
254 | }
255 | }
256 | return n;
257 | },
258 | setLastNodeForShow: function (setting, nodes) {
259 | var n, i, j, last, old;
260 | for (i = nodes.length - 1; i >= 0; i--) {
261 | n = nodes[i];
262 | var isHidden = data.isHidden(setting, n);
263 | if (!last && !isHidden && n.isLastNode) {
264 | last = n;
265 | break;
266 | } else if (!last && !isHidden && !n.isLastNode) {
267 | n.isLastNode = true;
268 | last = n;
269 | view.setNodeLineIcos(setting, n);
270 | } else if (last && n.isLastNode) {
271 | n.isLastNode = false;
272 | old = n;
273 | view.setNodeLineIcos(setting, n);
274 | break;
275 | } else {
276 | n = null;
277 | }
278 | }
279 | return {"new": last, "old": old};
280 | }
281 | },
282 |
283 | _z = {
284 | view: _view,
285 | data: _data
286 | };
287 | $.extend(true, $.fn.zTree._z, _z);
288 |
289 | var zt = $.fn.zTree,
290 | tools = zt._z.tools,
291 | consts = zt.consts,
292 | view = zt._z.view,
293 | data = zt._z.data,
294 | event = zt._z.event,
295 | $$ = tools.$;
296 |
297 | data.isHidden = function (setting, node, newIsHidden) {
298 | if (!node) {
299 | return false;
300 | }
301 | var key = setting.data.key.isHidden;
302 | if (typeof newIsHidden !== 'undefined') {
303 | if (typeof newIsHidden === "string") {
304 | newIsHidden = tools.eqs(newIsHidden, "true");
305 | }
306 | newIsHidden = !!newIsHidden;
307 | node[key] = newIsHidden;
308 | } else if (typeof node[key] == "string"){
309 | node[key] = tools.eqs(node[key], "true");
310 | } else {
311 | node[key] = !!node[key];
312 | }
313 | return node[key];
314 | };
315 |
316 | data.exSetting(_setting);
317 | data.addInitNode(_initNode);
318 | data.addBeforeA(_beforeA);
319 | data.addZTreeTools(_zTreeTools);
320 |
321 | // Override method in core
322 | var _dInitNode = data.initNode;
323 | data.initNode = function (setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) {
324 | var tmpPNode = (parentNode) ? parentNode : data.getRoot(setting),
325 | children = tmpPNode[setting.data.key.children];
326 | data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children);
327 | data.tmpHideLastNode = view.setLastNodeForHide(setting, children);
328 | if (openFlag) {
329 | view.setNodeLineIcos(setting, data.tmpHideFirstNode);
330 | view.setNodeLineIcos(setting, data.tmpHideLastNode);
331 | }
332 | isFirstNode = (data.tmpHideFirstNode === node);
333 | isLastNode = (data.tmpHideLastNode === node);
334 | if (_dInitNode) _dInitNode.apply(data, arguments);
335 | if (openFlag && isLastNode) {
336 | view.clearOldLastNode(setting, node, openFlag);
337 | }
338 | };
339 |
340 | var _makeChkFlag = data.makeChkFlag;
341 | if (!!_makeChkFlag) {
342 | data.makeChkFlag = function (setting, node) {
343 | if (!!node && !!data.isHidden(setting, node)) {
344 | return;
345 | }
346 | _makeChkFlag.apply(data, arguments);
347 | }
348 | }
349 |
350 | var _getTreeCheckedNodes = data.getTreeCheckedNodes;
351 | if (!!_getTreeCheckedNodes) {
352 | data.getTreeCheckedNodes = function (setting, nodes, checked, results) {
353 | if (!!nodes && nodes.length > 0) {
354 | var p = nodes[0].getParentNode();
355 | if (!!p && !!data.isHidden(setting, p)) {
356 | return [];
357 | }
358 | }
359 | return _getTreeCheckedNodes.apply(data, arguments);
360 | }
361 | }
362 |
363 | var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes;
364 | if (!!_getTreeChangeCheckedNodes) {
365 | data.getTreeChangeCheckedNodes = function (setting, nodes, results) {
366 | if (!!nodes && nodes.length > 0) {
367 | var p = nodes[0].getParentNode();
368 | if (!!p && !!data.isHidden(setting, p)) {
369 | return [];
370 | }
371 | }
372 | return _getTreeChangeCheckedNodes.apply(data, arguments);
373 | }
374 | }
375 |
376 | var _expandCollapseSonNode = view.expandCollapseSonNode;
377 | if (!!_expandCollapseSonNode) {
378 | view.expandCollapseSonNode = function (setting, node, expandFlag, animateFlag, callback) {
379 | if (!!node && !!data.isHidden(setting, node)) {
380 | return;
381 | }
382 | _expandCollapseSonNode.apply(view, arguments);
383 | }
384 | }
385 |
386 | var _setSonNodeCheckBox = view.setSonNodeCheckBox;
387 | if (!!_setSonNodeCheckBox) {
388 | view.setSonNodeCheckBox = function (setting, node, value, srcNode) {
389 | if (!!node && !!data.isHidden(setting, node)) {
390 | return;
391 | }
392 | _setSonNodeCheckBox.apply(view, arguments);
393 | }
394 | }
395 |
396 | var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf;
397 | if (!!_repairParentChkClassWithSelf) {
398 | view.repairParentChkClassWithSelf = function (setting, node) {
399 | if (!!node && !!data.isHidden(setting, node)) {
400 | return;
401 | }
402 | _repairParentChkClassWithSelf.apply(view, arguments);
403 | }
404 | }
405 | })(jQuery);
--------------------------------------------------------------------------------
/src/plugins/zTree/js/jquery.ztree.exhide.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var i={view:{clearOldFirstNode:function(e,i){for(var o=i.getNextNode();o;){if(o.isFirstNode){o.isFirstNode=!1,c.setNodeLineIcos(e,o);break}if(o.isLastNode)break;o=o.getNextNode()}},clearOldLastNode:function(e,i,o){for(var d=i.getPreNode();d;){if(d.isLastNode){d.isLastNode=!1,o&&c.setNodeLineIcos(e,d);break}if(d.isFirstNode)break;d=d.getPreNode()}},makeDOMNodeMainBefore:function(e,i,o){var d=h.isHidden(i,o);e.push("")},showNode:function(e,i,o){h.isHidden(e,i,!1),h.initShowForExCheck(e,i),d(i,e).show()},showNodes:function(e,i,o){if(i&&0!=i.length){var d,t,n={};for(d=0,t=i.length;d import(/* webpackChunkName: "about" */ '../components/map/LeafletMap.vue')
15 | },
16 | {
17 | path: '/leaflet',
18 | name: 'LeafletMap',
19 | component: () => import(/* webpackChunkName: "about" */ '../components/map/LeafletMap.vue')
20 | },
21 | // ==========不能在 path: '*' 此路由下添加路由表!!! ==================
22 | {
23 | path: '*',
24 | name: '404',
25 | component: () => import(/* webpackChunkName: "404" */ '../views/404.vue')
26 | }
27 | ]
28 |
29 | const router = new VueRouter({
30 | routes
31 | })
32 | // 重写 router push
33 | const routerPush = VueRouter.prototype.push
34 | VueRouter.prototype.push = function push(location) {
35 | return routerPush.call(this, location).catch(error=> error)
36 | }
37 |
38 |
39 | export default router
40 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | import moduleMap from "./modules/moduleMap"
5 | import moduleHome from "./modules/moduleHome"
6 |
7 |
8 | Vue.use(Vuex)
9 |
10 | export default new Vuex.Store({
11 | state: {
12 | },
13 | mutations: {
14 | },
15 | actions: {
16 | },
17 | modules: {
18 | moduleMap:moduleMap,
19 | moduleHome:moduleHome,
20 | // moduleToolbar:moduleToolbar,
21 | }
22 | })
23 |
--------------------------------------------------------------------------------
/src/store/modules/moduleHome.js:
--------------------------------------------------------------------------------
1 |
2 | // home state
3 |
4 |
5 | const TOGGLE_LEFT_SHOW = 'TOGGLE_LEFT_SHOW';
6 | const TOGGLE_RIGHT_SHOW = 'TOGGLE_RIGHT_SHOW';
7 |
8 |
9 |
10 |
11 | export default {
12 | namespaced:true,
13 | state: {
14 | leftShow: true, // 边框左
15 | rightShow: false // 边框右
16 | },
17 | mutations: {
18 | TOGGLE_LEFT_SHOW(state, payload) {
19 | state.leftShow = !state.leftShow
20 | // console.log(state)
21 | },
22 | TOGGLE_RIGHT_SHOW(state, payload) {
23 | state.rightShow = !state.rightShow
24 | // console.log(state)
25 | },
26 | 'TOGGLE_RIGHT_SHOW_FALSE'(state, payload) {
27 | state.rightShow = false
28 | }
29 | },
30 | actions: {
31 | },
32 | modules: {
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/utils/Token.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Token
3 | *
4 | */
5 |
6 | export const Token = ''
7 |
8 | export function setToken(value) {
9 | window.localStorage.setItem('TYPHOON_SYS_TOKEN', value);
10 | }
11 | export function getToken(value) {
12 | return window.localStorage.getItem('TYPHOON_SYS_TOKEN') + ''
13 | }
14 | export function removeToken() {
15 | window.localStorage.removeItem('TYPHOON_SYS_TOKEN')
16 | }
17 |
--------------------------------------------------------------------------------
/src/utils/dialogDrag.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | // v-dialogDrag: 弹窗拖拽
4 | Vue.directive('dialogDrag', {
5 | bind(el, binding, vnode, oldVnode) {
6 | const dialogHeaderEl = el.querySelector('.el-dialog__header')
7 | const dragDom = el.querySelector('.el-dialog')
8 | dialogHeaderEl.style.cursor = 'move'
9 |
10 | // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
11 | const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
12 |
13 | dialogHeaderEl.onmousedown = (e) => {
14 | // 鼠标按下,计算当前元素距离可视区的距离
15 | const disX = e.clientX - dialogHeaderEl.offsetLeft
16 | const disY = e.clientY - dialogHeaderEl.offsetTop
17 |
18 | // 获取到的值带px 正则匹配替换
19 | let styL, styT
20 |
21 | // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
22 | if (sty.left.includes('%')) {
23 | styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
24 | styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
25 | } else {
26 | styL = +sty.left.replace(/px/g, '')
27 | styT = +sty.top.replace(/px/g, '')
28 | }
29 |
30 | document.onmousemove = function(e) {
31 | // 通过事件委托,计算移动的距离
32 | const l = e.clientX - disX
33 | const t = e.clientY - disY
34 |
35 | // 移动当前元素
36 | dragDom.style.left = `${l + styL}px`
37 | dragDom.style.top = `${t + styT}px`
38 |
39 | // 将此时的位置传出去
40 | // binding.value({x:e.pageX,y:e.pageY})
41 | }
42 |
43 | document.onmouseup = function(e) {
44 | document.onmousemove = null
45 | document.onmouseup = null
46 | }
47 | }
48 | }
49 | })
--------------------------------------------------------------------------------
/src/utils/util.js:
--------------------------------------------------------------------------------
1 | import moment from 'moment'
2 | import html2canvas from 'html2canvas'
3 | /**
4 | *
5 | * 公用方法
6 | */
7 |
8 | const WEEKS = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'] // 星期表
9 | const OBJECT_CONSTRUCOTR_NAME = ['Array','String','Object','Number','Function','Date','RegExp','Symbol','Boolean','Math']
10 |
11 | // 判断 对象是否为原生 类型
12 | export const checkNavtiveClass = (obj) =>{
13 | let name = obj.constructor.name;
14 | return OBJECT_CONSTRUCOTR_NAME.includes(name)
15 | }
16 |
17 |
18 |
19 |
20 | // 格式化管线 经纬 数据
21 | export const formatPipeLine = (data) =>{
22 | let list = data.split(';');
23 | let arr = []
24 | list.forEach((v,i) =>{
25 | let item = v.split(',');
26 | if (item instanceof Array && item.length == 2){
27 | arr.push(item);
28 | }
29 | })
30 | return arr;
31 | }
32 |
33 |
34 | // 格式化 时间轴 小时 和 星期
35 |
36 | export const formatDateForTimeline = (date,t) => {
37 | const n = t || 24 * 7
38 | const D = date || '2018/03/01'
39 | const D1 = moment(new Date()).add('year',0).format("YYYY/MM/DD")
40 | let arr = {},arr1 = {},arr2 = []
41 | let d = new Date(new Date(D).toLocaleDateString()).getTime();
42 | let d1 = new Date(new Date(D1).toLocaleDateString()).getTime();
43 | for (let i = 0; i <= n; i++) {
44 | // let obj = {};
45 | arr[i] = d.toString();
46 | arr1[i] = d1.toString();
47 | if(i != 0 && i % 23 == 0){
48 | arr2.push(moment(new Date(+arr[i])).format('MM/DD')) // 显示年月日
49 | // arr2.push(WEEKS[new Date(d).getDay()])
50 | }
51 | d += 3600000;
52 | d1 += 3600000;
53 | }
54 | return {
55 | time:arr, // 最小时间间隔
56 | time1: arr1,
57 | week:arr2 // 星期几
58 | }
59 | }
60 |
61 | // 海区风险时间轴
62 | export const formatDateForRiskTimeline = (start, end) => {
63 | console.log('时间格式化:')
64 | let arr = {}, allDats = [], i = 0
65 | const startTime = getDate(start);
66 | const endTime = getDate(end);
67 | while((endTime.getTime()-startTime.getTime())>=0){
68 | const year = startTime.getFullYear();
69 | const month = (startTime.getMonth()+1).toString().length==1?"0"+(startTime.getMonth()+1).toString():(startTime.getMonth()+1).toString();
70 | const day = startTime.getDate().toString().length==1?"0"+startTime.getDate():startTime.getDate();
71 | const hour = startTime.getHours().toString().length==1?"0"+startTime.getHours():startTime.getHours();
72 | allDats[i]=year+"/"+month+"/"+day;
73 | startTime.setDate(startTime.getDate()+1);
74 | i+=1;
75 | }
76 | const days = getDays(allDats)
77 | console.log('days', days)
78 | const n = allDats.length * 24
79 | let d = new Date(new Date(start).toLocaleDateString()).getTime();
80 | for (let i = 0; i <= n; i++) {
81 | arr[i] = d.toString();
82 | d += 3600000;
83 | }
84 | return {
85 | time:arr, // 最小时间间隔
86 | days:days, // 日期
87 | max: n
88 | }
89 | }
90 | // 航线风险时间轴
91 | export const formatDateForLineRiskTimeline = (start, days) => {
92 | const n = days.length
93 | let arr = {}, formdays = []
94 | let d = moment(start).valueOf()
95 |
96 | for (let i = 0; i < n; i++) {
97 | arr[i] = moment(days[i]+':00:00').valueOf()
98 | formdays.push(moment(days[i]+':00:00').format("MM/DD HH"))
99 | }
100 | // console.log('=-======', arr)
101 | const newDays = getDays(formdays)
102 | // console.log('newDays', newDays)
103 | return {
104 | time:arr, // 最小时间间隔
105 | days:newDays, // 日期
106 | max: n
107 | }
108 | }
109 | // 均等分时间轴日期数
110 | const getDays = (arr) => {
111 | let newArr = [], step = Math.round(arr.length / 7)
112 | for (let i = 0; i < 7; i++) {
113 | if (i === 6) {
114 | newArr.push(arr[arr.length - 1])
115 | } else {
116 | let index = i * step
117 | newArr.push(arr[index])
118 | }
119 | }
120 | return newArr
121 | }
122 | const getDate = (datestr) =>{
123 | const temp = datestr.split("-");
124 | return new Date(temp[0],temp[1]-1,temp[2]);
125 | }
126 | //经纬度转换成度分秒
127 |
128 | export const latlngChangeToDMS = (value) => {
129 | if (value == ''){
130 | return ['','','']
131 | }else{
132 | if(!isNaN(Number(value))){
133 | value = Math.abs(value);
134 | var v1 = Math.floor(value);//度
135 | var v2 = Math.floor((value - v1) * 60);//分
136 | var v3 = Math.round((value - v1) * 3600 % 60);//秒
137 | return [v1 ,v2, v3 ];
138 | }
139 | }
140 |
141 | }
142 | // 度分秒转为经纬度
143 | export const DMSChangetoLatlng = (value) =>{
144 | if (value instanceof Array){
145 | if (value[0] == '' && value[1] == '' && value[2] == 0){
146 | return ''
147 | }else{
148 | return Math.abs(value[0]) + (Math.abs(value[1])/60 + Math.abs(value[2])/3600);
149 | }
150 | }
151 | }
152 |
153 | // 获取台风-平台所需枚举名
154 | export const getPlatforEnum = (tPosition, aPosition) => {
155 | let str = ""
156 | if (tPosition === 'center') {
157 | if (aPosition === '1') {
158 | str = 'TYPHOON_CENTER_PLATFORM_ONE'
159 | } else if (aPosition === '2') {
160 | str = 'TYPHOON_CENTER_PLATFORM_TWO'
161 | } else if (aPosition === '3') {
162 | str = 'TYPHOON_CENTER_PLATFORM_THREE'
163 | } else {
164 | str = 'TYPHOON_CENTER_PLATFORM_CENTER'
165 | }
166 | } else if (tPosition === '7') {
167 | if (aPosition === '1') {
168 | str = 'TYPHOON_CENTER_SEVEN_PLATFORM_ONE'
169 | } else if (aPosition === '2') {
170 | str = 'TYPHOON_CENTER_SEVEN_PLATFORM_TWO'
171 | } else if (aPosition === '3') {
172 | str = 'TYPHOON_CENTER_SEVEN_PLATFORM_THREE'
173 | } else {
174 | str = 'TYPHOON_CENTER_SEVEN_PLATFORM_CENTER'
175 | }
176 | } else if (tPosition === '10') {
177 | if (aPosition === '1') {
178 | str = 'TYPHOON_CENTER_TEN_PLATFORM_ONE'
179 | } else if (aPosition === '2') {
180 | str = 'TYPHOON_CENTER_TEN_PLATFORM_TWO'
181 | } else if (aPosition === '3') {
182 | str = 'TYPHOON_CENTER_TEN_PLATFORM_THREE'
183 | } else {
184 | str = 'TYPHOON_CENTER_TEN_PLATFORM_CENTER'
185 | }
186 | } else if (tPosition === '12') {
187 | if (aPosition === '1') {
188 | str = 'TYPHOON_CENTER_TWELVE_PLATFORM_ONE'
189 | } else if (aPosition === '2') {
190 | str = 'TYPHOON_CENTER_TWELVE_PLATFORM_TWO'
191 | } else if (aPosition === '3') {
192 | str = 'TYPHOON_CENTER_TWELVE_PLATFORM_THREE'
193 | } else {
194 | str = 'TYPHOON_CENTER_TWELVE_PLATFORM_CENTER'
195 | }
196 | }
197 | return str
198 | }
199 | // 获取台风-作业区所需枚举名
200 | export const getFieldEnum = (tPosition, aPosition) => {
201 | let str = ""
202 | if (tPosition === 'center') {
203 | if (aPosition === '1') {
204 | str = 'TYPHOON_CENTER_FIELD_ONE'
205 | } else if (aPosition === '2') {
206 | str = 'TYPHOON_CENTER_FIELD_TWO'
207 | } else if (aPosition === '3') {
208 | str = 'TYPHOON_CENTER_FIELD_THREE'
209 | } else {
210 | str = 'TYPHOON_CENTER_FIELD_CENTER'
211 | }
212 | } else if (tPosition === '7') {
213 | if (aPosition === '1') {
214 | str = 'TYPHOON_CENTER_SEVEN_FIELD_ONE'
215 | } else if (aPosition === '2') {
216 | str = 'TYPHOON_CENTER_SEVEN_FIELD_TWO'
217 | } else if (aPosition === '3') {
218 | str = 'TYPHOON_CENTER_SEVEN_FIELD_THREE'
219 | } else {
220 | str = 'TYPHOON_CENTER_SEVEN_FIELD_CENTER'
221 | }
222 | } else if (tPosition === '10') {
223 | if (aPosition === '1') {
224 | str = 'TYPHOON_CENTER_TEN_FIELD_ONE'
225 | } else if (aPosition === '2') {
226 | str = 'TYPHOON_CENTER_TEN_FIELD_TWO'
227 | } else if (aPosition === '3') {
228 | str = 'TYPHOON_CENTER_TEN_FIELD_THREE'
229 | } else {
230 | str = 'TYPHOON_CENTER_TEN_FIELD_CENTER'
231 | }
232 | } else if (tPosition === '12') {
233 | if (aPosition === '1') {
234 | str = 'TYPHOON_CENTER_TWELVE_FIELD_ONE'
235 | } else if (aPosition === '2') {
236 | str = 'TYPHOON_CENTER_TWELVE_FIELD_TWO'
237 | } else if (aPosition === '3') {
238 | str = 'TYPHOON_CENTER_TWELVE_FIELD_THREE'
239 | } else {
240 | str = 'TYPHOON_CENTER_TWELVE_FIELD_CENTER'
241 | }
242 | }
243 | return str
244 | }
245 | // 获取台风-船舶所需枚举名
246 | export const getShipEnum = (tPosition) => {
247 | let str = ""
248 | if (tPosition === 'center') {
249 | str = "TYPHOON_CENTER_SHIP_CENTER"
250 | } else if (tPosition === '7') {
251 | str = "TYPHOON_CENTER_SEVEN_SHIP_CENTER"
252 | } else if (tPosition === '10') {
253 | str = "TYPHOON_CENTER_TEN_SHIP_CENTER"
254 | } else if (tPosition === '12') {
255 | str = "TYPHOON_CENTER_TWELVE_SHIP_CENTER"
256 | }
257 | return str
258 | }
259 | // 获取台风风险统计详情总的枚举名
260 | export const getTyphoonRiskDetailEnum = (tPosition) => {
261 | let str = ""
262 | if (tPosition === '7级风圈') {
263 | str = "TYPHOON_CENTER_SEVEN"
264 | } else if (tPosition === '10级风圈') {
265 | str = "TYPHOON_CENTER_TEN"
266 | } else if (tPosition === '12级风圈') {
267 | str = "TYPHOON_CENTER_TWELVE"
268 | }
269 | return str
270 | }
271 |
272 | // 判断是否为移动端
273 | export const isMobile = () => {
274 | return navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
275 | }
276 |
277 |
278 | // 判断返回 data是否有值
279 | export const checkResponseData = (data) =>{
280 | let flag = true;
281 | if (data instanceof Array){
282 | for (let i = 0; i < data.length; i++) {
283 | if (!(data[i].data) || data[i].data == [] ){
284 | flag = false;
285 | break;
286 | }
287 | }
288 | }else{
289 | if (!(data.data) || data.data == []){
290 | flag = false;
291 | }
292 | }
293 | return flag
294 | }
295 |
296 | // 截图
297 | export const handleGetReport = () => {
298 | html2canvas(document.getElementById('map'),{
299 | useCORS:true // 底图跨域 必须!!
300 | }).then(function(canvas) {
301 | const url = canvas.toDataURL("image/png")
302 | console.log('截图url:', url)
303 | return url
304 | });
305 | }
306 | export const fakeTime =(t) =>{
307 | console.log(t)
308 | let m = new Date(t).getMonth() + 1,d = new Date(t).getDay();
309 | let test = '2018/' + m +'/' + d
310 | return new Date(test).getTime()
311 | }
--------------------------------------------------------------------------------
/src/views/404.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
404
4 |
5 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
36 |
41 |
48 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 |
3 |
4 | function resolve(dir) {
5 | return path.join(__dirname, dir);
6 | }
7 |
8 | module.exports = {
9 | //部署应用包时的基本 URL
10 | publicPath:'./',
11 | //运行 vue-cli-service build 时生成的生产环境构建文件的目录
12 | outputDir:process.env.outputDir,
13 | //放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
14 | assetsDir:'',
15 | indexPath:'index.html',
16 | pages: {
17 | index: {
18 | // page 的入口
19 | entry: 'src/main.js',
20 | // 模板来源
21 | template: 'public/index.html',
22 | // 在 dist/index.html 的输出
23 | filename: 'index.html',
24 | // 当使用 title 选项时,
25 | // template 中的 title 标签需要是 <%= htmlWebpackPlugin.options.title %>
26 | // title: 'Index Page',
27 | // 在这个页面中包含的块,默认情况下会包含
28 | // 提取出来的通用 chunk 和 vendor chunk。
29 | chunks: ['chunk-vendors', 'chunk-common', 'index']
30 | },
31 | // 当使用只有入口的字符串格式时,
32 | // 模板会被推导为 `public/subpage.html`
33 | // 并且如果找不到的话,就回退到 `public/index.html`。
34 | // 输出文件名会被推导为 `subpage.html`。
35 | // subpage: 'src/subpage/main.js'
36 | },
37 | devServer: {
38 | host:'localhost',
39 | port:'8088',
40 | disableHostCheck: true,
41 | proxy: {
42 | '/':{
43 | target:'http://api.dev.ops.com:7000/typhoon',
44 | changeOrigin:true,
45 | },
46 | }
47 | },
48 | lintOnSave: process.env.NODE_ENV !== 'production',
49 | productionSourceMap:true, // 生产环境是否需要sourceMap
50 |
51 | chainWebpack: (config) => {
52 |
53 | config.resolve.alias
54 | .set("@", resolve("src"))
55 | .set("~", resolve(__dirname, "node_modules"))
56 |
57 | // .set("assets", resolve("src/assets"))
58 | //
59 | // .set("components", resolve("src/components"))
60 | //
61 | // .set("base", resolve("baseConfig"))
62 | //
63 | // .set("public", resolve("public"));
64 |
65 | },
66 | // css: {
67 | // loaderOptions: {
68 | // less:{
69 | //
70 | // },
71 | // css: {
72 | // // 这里的选项会传递给 css-loader
73 | // },
74 | // postcss: {
75 | // // 这里的选项会传递给 postcss-loader
76 | // }
77 | // }
78 | // },
79 | transpileDependencies: [
80 | 'vue-echarts',
81 | 'resize-detector'
82 | ]
83 | }
84 |
--------------------------------------------------------------------------------