From f74222e571d9164a59e01194f35ff1e34f10a423 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Fri, 15 Dec 2023 17:12:33 +0800
Subject: [PATCH] fix:热力图播放
---
src/views/hotMap/components/img/icon-pause.png | 0
src/views/toCarryOutLegislativeReforms/components/locationMap.vue | 119 +++
src/views/hotMap/components/colorList.json | 0
package-lock.json | 555 ++++++++++++++
public/index.html | 125 +-
src/views/hotMap/index.vue | 445 ++++++++++++
.vscode/settings.json | 4
src/views/hotMap/components/img/round.png | 0
src/router/dynamicRouter.js | 12
src/views/toCarryOutLegislativeReforms/reform/index.vue | 26
src/assets/images/pointMap.png | 0
src/views/hotMap/components/timeLinePlay.vue | 347 +++++++++
.eslintrc.js | 60 -
src/main.js | 88 +-
src/components/Cascader/regionCity.vue | 35
package.json | 7
src/views/hotMap/components/formatdate.js | 127 +++
cmsdist/index.html | 4
src/views/hotMap/components/img/icon-play.png | 0
src/views/hotMap/components/selectHour.vue | 102 ++
20 files changed, 1,874 insertions(+), 182 deletions(-)
diff --git a/.eslintrc.js b/.eslintrc.js
index 853e4dd..752d712 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -3,7 +3,7 @@
browser: true,
es2021: true
},
- extends: ['eslint:recommended', 'standard'],
+ extends: ['standard', 'plugin:vue/recommended'],
overrides: [
{
env: {
@@ -16,48 +16,28 @@
}
],
parserOptions: {
- ecmaVersion: '12',
- sourceType: 'module'
+ ecmaVersion: 2021,
+ sourceType: 'module',
+ parser: 'babel-eslint',
+ ecmaFeatures: {
+ // ��� react ������������ jsx ������������,��������� true
+ jsx: false
+ }
+ },
+ globals: {
+ AMap: true,
+ AMapUI: true
},
plugins: ['vue'],
rules: {
- eqeqeq: ['error', 'always'], // ���������������������������
- semi: 2, // ���������������������������������
- 'no-use-before-define': [1, 'nofunc'], // ������������������������
- 'max-lines': ['error', { max: 2000, skipBlankLines: true }],
- 'no-mixed-spaces-and-tabs': 'warn', // ���������������������tab������������
- 'newline-per-chained-call': ['error', { ignoreChainWithDepth: 1 }], // promise ������ ���������������������������������������
- 'vue/attribute-hyphenation': ['error', 'always'], // prop������������������������������������������������������������������������������������prop���������������������������������������
- 'vue/html-indent': [
- 'warn',
- 2,
- {
- attribute: 1,
- baseIndent: 1,
- closeBracket: 0,
- alignAttributesVertically: true
- }
- ],
- curly: 2, // ������������ if(){} ������{}
- 'vue/prop-name-casing': ['warn', 'camelCase'], //������������������������
- 'vue/this-in-template': ['error', 'never'], //������������template������������this
- 'no-trailing-spaces': 1, //���������������������������������
- 'vue/max-attributes-per-line': [
- // template���������������������������prop������,������3������������3���������������������������prop���������������������
- 'warn',
- {
- singleline: 3,
- multiline: {
- max: 1,
- allowFirstLine: false
- }
- }
- ],
- 'no-catch-shadow': 'error', //������catch������������������������������������������
- 'vue/v-bind-style': ['error', 'shorthand'], // ������������:���������
- 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', // ���������������������������������debugger
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
- 'no-unused-vars': 0, // ���������������������������������
- 'spaced-comment': 0 // ������������������ // ��� /* ���������������������
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+ camelcase: 'off',
+ 'comma-dangle': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/camelcase': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+ 'lines-between-class-members': 'off',
+ '@typescript-eslint/no-this-alias': 'off'
}
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 59d224c..022f2c6 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,7 +4,7 @@
// -------------------- ������eslint --------------------
//autoFixedOnSave ���������������������������������������������������(>1.41.0)������
"editor.codeActionsOnSave": {
- "source.fixAll.eslint": true
+ "source.fixAll.eslint": "explicit"
},
"eslint.format.enable": true,
//autoFix������������������������������������������������
@@ -38,7 +38,7 @@
// -------------------- vetur ������ --------------------
// vue������������������������������vetur
"[vue]": {
- "editor.defaultFormatter": "octref.vetur"
+ "editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
// ���������������������������������
"vetur.format.defaultFormatter.html": "js-beautify-html",
diff --git a/cmsdist/index.html b/cmsdist/index.html
index 195d728..e56cb39 100644
--- a/cmsdist/index.html
+++ b/cmsdist/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/LOGO.ico><script src="https://webapi.amap.com/maps?v=1.4.15&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script><script src="https://webapi.amap.com/loca?v=1.3.2&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script><script src="http://api.map.baidu.com/api?type=webgl&v=2.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script><script src="http://api.map.baidu.com/api?v=3.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script><script src=https://mapv.baidu.com/build/mapv.min.js></script><script src=https://mapv.baidu.com/gl/examples/static/common.js></script><script src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js?v=1598903772045"></script><script src=https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.97/dist/mapvgl.min.js></script><title>������������������������</title><style>body {
+<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/LOGO.ico><script src="https://webapi.amap.com/maps?v=1.4.15&key=c4e73f2c6972766d6a54dffd2f501cac&plugin=AMap.MarkerClusterer"></script><script src="https://webapi.amap.com/loca?v=1.3.2&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script><script src="http://api.map.baidu.com/api?type=webgl&v=2.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script><script src="http://api.map.baidu.com/api?v=3.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script><script src=https://mapv.baidu.com/build/mapv.min.js></script><script src=https://mapv.baidu.com/gl/examples/static/common.js></script><script src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js?v=1598903772045"></script><script src=https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.97/dist/mapvgl.min.js></script><title>������������������������</title><style>body {
margin: 0px;
padding: 0px;
height: 100%;
@@ -16,4 +16,4 @@
docEl.style.fontSize = docEl.clientWidth / 100 + 'px';
};
window.addEventListener(resizeEvt, recalc, false);
- document.addEventListener('DOMContentLoaded', recalc, false);</script></html>
\ No newline at end of file
+ document.addEventListener('DOMContentLoaded', recalc, false);</script></html>
diff --git a/package-lock.json b/package-lock.json
index 39b2c00..fef7c7d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1013,6 +1013,26 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "requires": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
+ }
+ }
+ },
+ "@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA=="
+ },
"@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -1310,11 +1330,36 @@
}
}
},
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ }
+ }
+ },
"@nodelib/fs.stat": {
"version": "1.1.3",
"resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz?cache=0&sync_timestamp=1609074523193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz",
"integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
"dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
},
"@pawelgalazka/cli": {
"version": "2.0.3",
@@ -1449,6 +1494,11 @@
"integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=",
"dev": true
},
+ "@types/semver": {
+ "version": "7.5.6",
+ "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.6.tgz",
+ "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A=="
+ },
"@types/stack-utils": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz",
@@ -1481,6 +1531,331 @@
"resolved": "https://registry.npm.taobao.org/@types/yargs-parser/download/@types/yargs-parser-20.2.0.tgz",
"integrity": "sha1-3T5mmboyN/A0jNCF5GmHgCBIQvk=",
"dev": true
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz",
+ "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==",
+ "requires": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.13.2",
+ "@typescript-eslint/type-utils": "6.13.2",
+ "@typescript-eslint/utils": "6.13.2",
+ "@typescript-eslint/visitor-keys": "6.13.2",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ignore": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg=="
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.13.2.tgz",
+ "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "6.13.2",
+ "@typescript-eslint/types": "6.13.2",
+ "@typescript-eslint/typescript-estree": "6.13.2",
+ "@typescript-eslint/visitor-keys": "6.13.2",
+ "debug": "^4.3.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz",
+ "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==",
+ "requires": {
+ "@typescript-eslint/types": "6.13.2",
+ "@typescript-eslint/visitor-keys": "6.13.2"
+ }
+ },
+ "@typescript-eslint/type-utils": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz",
+ "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==",
+ "requires": {
+ "@typescript-eslint/typescript-estree": "6.13.2",
+ "@typescript-eslint/utils": "6.13.2",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.13.2.tgz",
+ "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg=="
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz",
+ "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==",
+ "requires": {
+ "@typescript-eslint/types": "6.13.2",
+ "@typescript-eslint/visitor-keys": "6.13.2",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "ignore": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg=="
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "@typescript-eslint/utils": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.13.2.tgz",
+ "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==",
+ "requires": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.13.2",
+ "@typescript-eslint/types": "6.13.2",
+ "@typescript-eslint/typescript-estree": "6.13.2",
+ "semver": "^7.5.4"
+ },
+ "dependencies": {
+ "@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "6.13.2",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz",
+ "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==",
+ "requires": {
+ "@typescript-eslint/types": "6.13.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
+ }
+ }
},
"@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.2.1",
@@ -1721,6 +2096,23 @@
"optional": true,
"requires": {
"vue-eslint-parser": "^2.0.3"
+ },
+ "dependencies": {
+ "vue-eslint-parser": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
+ "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^3.1.0",
+ "eslint-scope": "^3.7.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^3.5.2",
+ "esquery": "^1.0.0",
+ "lodash": "^4.17.4"
+ }
+ }
}
},
"eslint-scope": {
@@ -3797,8 +4189,8 @@
},
"babel-eslint": {
"version": "10.0.1",
- "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.0.1.tgz",
- "integrity": "sha1-kZaB3AmWFM19MdRciQhpUJKh+u0=",
+ "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.0.1.tgz",
+ "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -3811,8 +4203,8 @@
"dependencies": {
"eslint-scope": {
"version": "3.7.1",
- "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.1.tgz?cache=0&sync_timestamp=1600070417656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-3.7.1.tgz",
- "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha512-ivpbtpUgg9SJS4TLjK7KdcDhqc/E3CGItsvQbBNLkNGUeMhd5qnJcryba/brESS+dg3vrLqPuc/UcS7jRJdN5A==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
@@ -6102,6 +6494,11 @@
}
}
},
+ "dayjs": {
+ "version": "1.11.10",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz",
+ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ },
"de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
@@ -7965,7 +8362,6 @@
"version": "1.4.0",
"resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz?cache=0&sync_timestamp=1612565616129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesquery%2Fdownload%2Fesquery-1.4.0.tgz",
"integrity": "sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=",
- "dev": true,
"requires": {
"estraverse": "^5.1.0"
},
@@ -7973,8 +8369,7 @@
"estraverse": {
"version": "5.2.0",
"resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596642941915&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz",
- "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
- "dev": true
+ "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA="
}
}
},
@@ -8448,6 +8843,14 @@
"resolved": "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz",
"integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=",
"dev": true
+ },
+ "fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
},
"faye-websocket": {
"version": "0.11.3",
@@ -9196,7 +9599,6 @@
"version": "5.1.2",
"resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.2.tgz",
"integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=",
- "dev": true,
"requires": {
"is-glob": "^4.0.1"
}
@@ -9309,6 +9711,11 @@
"version": "4.2.6",
"resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.6.tgz",
"integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4="
+ },
+ "graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
},
"growly": {
"version": "1.3.0",
@@ -10386,8 +10793,7 @@
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
"is-finite": {
"version": "1.1.0",
@@ -10409,7 +10815,6 @@
"version": "4.0.1",
"resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
"integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
- "dev": true,
"requires": {
"is-extglob": "^2.1.1"
}
@@ -12731,8 +13136,7 @@
"merge2": {
"version": "1.4.1",
"resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz",
- "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=",
- "dev": true
+ "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4="
},
"methods": {
"version": "1.1.2",
@@ -13031,8 +13435,7 @@
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
},
"needle": {
"version": "2.9.0",
@@ -17251,6 +17654,11 @@
"inherits": "~2.0.3"
}
},
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
"randomatic": {
"version": "3.1.1",
"resolved": "https://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz",
@@ -17744,6 +18152,11 @@
"integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
"dev": true
},
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+ },
"rgb-regex": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
@@ -17786,6 +18199,14 @@
"integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=",
"dev": true,
"optional": true
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
},
"run-queue": {
"version": "1.0.3",
@@ -20280,6 +20701,11 @@
"integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=",
"dev": true
},
+ "ts-api-utils": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
+ "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg=="
+ },
"tsconfig": {
"version": "7.0.0",
"resolved": "https://registry.npm.taobao.org/tsconfig/download/tsconfig-7.0.0.tgz",
@@ -20854,30 +21280,86 @@
}
},
"vue-eslint-parser": {
- "version": "2.0.3",
- "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz?cache=0&sync_timestamp=1614679548045&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-2.0.3.tgz",
- "integrity": "sha1-wmjJbG2Uz+PZOKX3WTlZsMozYNE=",
- "dev": true,
- "optional": true,
+ "version": "9.3.2",
+ "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz",
+ "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==",
"requires": {
- "debug": "^3.1.0",
- "eslint-scope": "^3.7.1",
- "eslint-visitor-keys": "^1.0.0",
- "espree": "^3.5.2",
- "esquery": "^1.0.0",
- "lodash": "^4.17.4"
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
},
"dependencies": {
- "eslint-scope": {
- "version": "3.7.3",
- "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz?cache=0&sync_timestamp=1600070417656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-3.7.3.tgz",
- "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=",
- "dev": true,
- "optional": true,
+ "acorn": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w=="
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
+ "ms": "2.1.2"
}
+ },
+ "eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
+ },
+ "espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "requires": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ }
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
@@ -21033,6 +21515,11 @@
"integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
"dev": true
},
+ "vue-time-slider": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/vue-time-slider/-/vue-time-slider-1.0.5.tgz",
+ "integrity": "sha512-ApKBsxbLyFWqZWriYeTdTXKS6qkxNO/dJ1j9MvWGbYx5sX+Sq+4GrrQ5n/r04Kun1uHyLWi7DyB1bf+btzfpbA=="
+ },
"vuex": {
"version": "3.1.0",
"resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.0.tgz?cache=0&sync_timestamp=1612277384353&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.1.0.tgz",
diff --git a/package.json b/package.json
index 656292a..34f39b3 100644
--- a/package.json
+++ b/package.json
@@ -16,10 +16,12 @@
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
},
"dependencies": {
+ "@typescript-eslint/eslint-plugin": "^6.13.2",
"angular-expressions": "^1.1.5",
"axios": "0.18.0",
"clipboard": "^2.0.10",
"crypto-js": "^4.0.0",
+ "dayjs": "^1.11.10",
"docxtemplater": "^3.32.4",
"docxtemplater-image-module-free": "^1.1.1",
"echarts": "^5.2.2",
@@ -52,10 +54,12 @@
"vue-amap": "^0.5.10",
"vue-amp": "^0.0.1",
"vue-baidu-map": "^0.21.22",
+ "vue-eslint-parser": "^9.3.2",
"vue-json-excel": "^0.3.0",
"vue-mapvgl": "^0.0.32",
"vue-router": "3.0.6",
"vue-seamless-scroll": "^1.1.23",
+ "vue-time-slider": "^1.0.5",
"vuex": "3.1.0",
"xlsx": "^0.16.9",
"xlsx-style": "^0.8.13"
@@ -65,6 +69,7 @@
"@babel/eslint-parser": "^7.16.5",
"@babel/plugin-proposal-optional-chaining": "^7.21.0",
"@babel/register": "7.0.0",
+ "@typescript-eslint/parser": "^6.13.2",
"@vue/cli-plugin-babel": "3.6.0",
"@vue/cli-plugin-eslint": "3.6.0",
"@vue/cli-plugin-unit-jest": "3.6.3",
@@ -72,7 +77,7 @@
"@vue/test-utils": "1.0.0-beta.29",
"autoprefixer": "^9.5.1",
"babel-core": "7.0.0-bridge.0",
- "babel-eslint": "10.0.1",
+ "babel-eslint": "^10.0.1",
"babel-jest": "23.6.0",
"chalk": "2.4.2",
"connect": "3.6.6",
diff --git a/public/index.html b/public/index.html
index 6215bc1..427dccd 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,64 +1,71 @@
-<!DOCTYPE html>
+<!doctype html>
<html>
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
- <link rel="icon" href="<%= BASE_URL %>LOGO.ico">
- <!-- <script src="https://webapi.amap.com/maps?v=1.4.15&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script> -->
- <!-- <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" /> -->
- <script
- src="https://webapi.amap.com/maps?v=1.4.15&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script>
- <script
- src="https://webapi.amap.com/loca?v=1.3.2&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script>
- <!-- <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />-->
- <!-- <script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script>-->
- <script type="text/javascript"
- src="https://api.map.baidu.com/api?type=webgl&v=2.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script>
- <script src="https://api.map.baidu.com/api?v=3.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script>
- <script src="https://mapv.baidu.com/build/mapv.min.js"></script>
- <script type="text/javascript" src="https://mapv.baidu.com/gl/examples/static/common.js"></script>
- <!-- <script src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js?v=1598903772045"></script> -->
- <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.97/dist/mapvgl.min.js"></script>
- <!-- <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->
- <!-- <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.min.js"></script> -->
+ <head>
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+ <meta
+ name="viewport"
+ content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
+ />
+ <link rel="icon" href="<%= BASE_URL %>LOGO.ico" />
+ <!-- <script src="https://webapi.amap.com/maps?v=1.4.15&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script> -->
+ <!-- <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" /> -->
+ <script>
+ window._AMapSecurityConfig = {
+ securityJsCode: '20fcbbc1782d2853f433831e61fab769'
+ }
+ </script>
+ <script src="https://webapi.amap.com/maps?v=1.4.15&key=c4e73f2c6972766d6a54dffd2f501cac&plugin=AMap.MarkerClusterer"></script>
+ <script src="https://webapi.amap.com/loca?v=1.3.2&key=c4e73f2c6972766d6a54dffd2f501cac&plugin=AMap.MarkerClusterer"></script>
+ <!-- <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />-->
+ <!-- <script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script>-->
+ <script
+ type="text/javascript"
+ src="https://api.map.baidu.com/api?type=webgl&v=2.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"
+ ></script>
+ <script src="https://api.map.baidu.com/api?v=3.0&ak=U2SoSp52BoVW6bAEMsxQ7Zfe0tuB6VDp"></script>
+ <script src="https://mapv.baidu.com/build/mapv.min.js"></script>
+ <script
+ type="text/javascript"
+ src="https://mapv.baidu.com/gl/examples/static/common.js"
+ ></script>
+ <!-- <script src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js?v=1598903772045"></script> -->
+ <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.97/dist/mapvgl.min.js"></script>
+ <!-- <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->
+ <!-- <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.min.js"></script> -->
- <title>
- <%= webpackConfig.name %>
- </title>
- <style>
- body {
- margin: 0px;
- padding: 0px;
- height: 100%;
- }
+ <title><%= webpackConfig.name %></title>
+ <style>
+ body {
+ margin: 0px;
+ padding: 0px;
+ height: 100%;
+ }
- html {
- overflow-y: hidden;
- }
- </style>
-</head>
+ html {
+ overflow-y: hidden;
+ }
+ </style>
+ </head>
-<body>
- <noscript>
- <strong>
- <%= webpackConfig.name %> ������������javaScript������
- </strong>
- </noscript>
- <div id="app"></div>
-</body>
-<script>
- var docEl = document.documentElement,
- //���������������������������������������������������������������������������������������������������
- //���������������������������������orientationChange������������������������������resize ���������
- //���������������������������������������������������������������������������������������������������
- resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
- recalc = function () {
- //���������������������1:50���������375������������������������������������������������������������
- docEl.style.fontSize = docEl.clientWidth / 100 + 'px';
- };
- window.addEventListener(resizeEvt, recalc, false);
- document.addEventListener('DOMContentLoaded', recalc, false);
-</script>
-
+ <body>
+ <noscript>
+ <strong> <%= webpackConfig.name %> ������������javaScript������ </strong>
+ </noscript>
+ <div id="app"></div>
+ </body>
+ <script>
+ var docEl = document.documentElement,
+ //���������������������������������������������������������������������������������������������������
+ //���������������������������������orientationChange������������������������������resize ���������
+ //���������������������������������������������������������������������������������������������������
+ resizeEvt =
+ 'orientationchange' in window ? 'orientationchange' : 'resize',
+ recalc = function () {
+ //���������������������1:50���������375������������������������������������������������������������
+ docEl.style.fontSize = docEl.clientWidth / 100 + 'px'
+ }
+ window.addEventListener(resizeEvt, recalc, false)
+ document.addEventListener('DOMContentLoaded', recalc, false)
+ </script>
</html>
diff --git a/src/assets/images/pointMap.png b/src/assets/images/pointMap.png
new file mode 100644
index 0000000..805bb56
--- /dev/null
+++ b/src/assets/images/pointMap.png
Binary files differ
diff --git a/src/components/Cascader/regionCity.vue b/src/components/Cascader/regionCity.vue
index 2b39be2..93bc792 100644
--- a/src/components/Cascader/regionCity.vue
+++ b/src/components/Cascader/regionCity.vue
@@ -1,18 +1,27 @@
<template>
<div>
<el-cascader
+ ref="myCascader"
v-model="newRegion"
placeholder="���������/���"
:options="options"
+ :size="selectSize"
clearable
style="flex:1"
+ @change="getvalue"
/>
</div>
</template>
<script>
export default {
- data() {
+ props: {
+ selectSize: {
+ type: String,
+ default: 'medium '
+ },
+ },
+ data () {
return {
form: {
name: '',
@@ -25,15 +34,17 @@
desc: ''
},
options: [],
- newRegion: []
+ newRegion: [],
+ form1: {}
}
},
watch: {
- newRegion(n, o) {
+ newRegion (n, o) {
+ console.log(n, o)
this.$emit('regionCode', n[this.newRegion.length - 1])
}
},
- created() {
+ created () {
const runAsync = new Promise((resolve, reject) => {
this.$request({
url: '/organization/getMapPath',
@@ -68,7 +79,22 @@
runAsync.then(() => {
this.newRegion = [Number(this.$store.state.regionCode.toString().substr(0, 2) + '0000'),
Number(this.$store.state.regionCode.toString().substr(0, 4) + '00')]
+ this.$nextTick(() => {
+ this.getvalue()
+ })
})
+ },
+ methods: {
+ getvalue () {
+ if (this.newRegion.length > 0) { // ������������������������������change������������������������������������������������������������������������������
+ const { label: org, value: orgid } =
+ this.$refs.myCascader.getCheckedNodes()[0]
+ this.form1 = { org, orgid }
+ } else {
+ this.form1 = {}
+ }
+ this.$emit('regionForm', this.form1)
+ },
}
}
</script>
@@ -78,4 +104,3 @@
text-align: center;
}
</style>
-
diff --git a/src/main.js b/src/main.js
index db2981c..d4f3b30 100644
--- a/src/main.js
+++ b/src/main.js
@@ -20,31 +20,15 @@
import '@/permission' // permission control
// clipboard������������������������������������������������JS������
import clipboard from 'clipboard'
-// ���������vue���������
-Vue.prototype.$clipboard = clipboard
// ������������
import AMap from 'vue-amap'
-Vue.use(AMap)
-AMap.initAMapApiLoader({
- key: 'be57d4add7dc10fb7f7924763a2179ae',
- plugin: ['AMap.moveAnimation', 'AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale',
- 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor',
- 'AMap.DistrictSearch'],
- // ������������ sdk ��������� 1.4.4
- v: '1.4.4'
-})
-
-Vue.prototype.$AMap = AMap
// crypto������
import { Encrypt } from '@/utils/AES.js'
import { getToken } from '@/utils/auth'
import request from '@/utils/request'
-
-Vue.prototype.$request = request.service
-Vue.prototype.$axiosRequest = request.reqServe
// Vue.prototype.$postRequest=request.reqServe1
/**
* If you don't want to use mock-server
@@ -55,11 +39,40 @@
* please remove it before going online! ! !
*/
import { mockXHR } from '../mock'
+
+import echarts from 'echarts'
+
+import JsonExcel from 'vue-json-excel'
+// ���������vue���������
+Vue.prototype.$clipboard = clipboard
+Vue.use(AMap)
+AMap.initAMapApiLoader({
+ key: 'c4e73f2c6972766d6a54dffd2f501cac',
+ plugin: [
+ 'AMap.moveAnimation',
+ 'AMap.Autocomplete',
+ 'AMap.PlaceSearch',
+ 'AMap.Scale',
+ 'AMap.OverView',
+ 'AMap.ToolBar',
+ 'AMap.MapType',
+ 'AMap.PolyEditor',
+ 'AMap.CircleEditor',
+ 'AMap.DistrictSearch'
+ ],
+ // ������������ sdk ��������� 1.4.4
+ v: '1.4.4'
+})
+window._AMapSecurityConfig = {
+ securityJsCode: '20fcbbc1782d2853f433831e61fab769'
+}
+Vue.prototype.$AMap = AMap
+
+Vue.prototype.$request = request.service
+Vue.prototype.$axiosRequest = request.reqServe
if (process.env.NODE_ENV === 'production') {
mockXHR()
}
-
-import echarts from 'echarts'
Vue.prototype.$Cookies = Cookies
@@ -72,25 +85,26 @@
Vue.config.productionTip = false
Vue.prototype.$axios = axios
Vue.prototype.$Bus = Bus
-
-import JsonExcel from 'vue-json-excel'
-Vue.component('downloadExcel', JsonExcel)
+Vue.component('DownloadExcel', JsonExcel)
function getServerConfig() {
return new Promise((resolve, reject) => {
- axios.get('/serverConfig.json').then((result) => {
- // console.log(result) // ������������������������
- const config = result.data
- for (const key in config) {
- Vue.prototype[key] = config[key]
- }
- // ������������������������������������Vue���
- // console.log(Vue.prototype.BASE_ADDR)
- resolve()
- }).catch((error) => {
- console.log(error)
- reject()
- })
+ axios
+ .get('/serverConfig.json')
+ .then(result => {
+ // console.log(result) // ������������������������
+ const config = result.data
+ for (const key in config) {
+ Vue.prototype[key] = config[key]
+ }
+ // ������������������������������������Vue���
+ // console.log(Vue.prototype.BASE_ADDR)
+ resolve()
+ })
+ .catch(error => {
+ console.log(error)
+ reject()
+ })
})
}
@@ -118,11 +132,13 @@
for (const k in opt) {
ret = new RegExp('(' + k + ')').exec(fmt)
if (ret) {
- fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
+ fmt = fmt.replace(
+ ret[1],
+ ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
+ )
}
}
return fmt
}
-
init()
diff --git a/src/router/dynamicRouter.js b/src/router/dynamicRouter.js
index 5358aeb..b84d58a 100644
--- a/src/router/dynamicRouter.js
+++ b/src/router/dynamicRouter.js
@@ -79,6 +79,12 @@
component: () => import('@/views/airPollutionCalendar/index'),
meta: { title: '������������������������', icon: 'example' }
}
+const heatMap = {
+ path: 'charts/heatMap',
+ name: 'heatMap',
+ component: () => import('@/views/hotMap/index'),
+ meta: { title: '���������������', icon: 'example' }
+}
// const PM5PM10ForecastChart = {
// path: 'charts/PM5PM10ForecastChart',
@@ -200,7 +206,8 @@
const summaryPage = {
path: 'toCarryOutLegislativeReforms/summaryPage',
name: 'summaryPage',
- component: () => import('@/views/toCarryOutLegislativeReforms/summaryPage/index'),
+ component: () =>
+ import('@/views/toCarryOutLegislativeReforms/summaryPage/index'),
meta: { title: '������������', icon: 'example' }
}
const reform = {
@@ -232,6 +239,7 @@
heatmap: heatmap,
hexagon: hexagon,
airPollutionCalendar: airPollutionCalendar,
+ heatMap: heatMap,
averageContrast: averageContrast,
industryContributionRate,
regionalContributionRate,
@@ -263,7 +271,7 @@
export function routerMenus() {
const routersMenu = JSON.parse(store.state.user.menus)
// ��������������������������������� ���������������������������
- console.log('routersMenu',routersMenu)
+ console.log('routersMenu', routersMenu)
const currentRoutes = router.options.routes
if (routersMenu.length > 0) {
routersMenu.forEach(item => {
diff --git a/src/views/hotMap/components/colorList.json b/src/views/hotMap/components/colorList.json
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/hotMap/components/colorList.json
diff --git a/src/views/hotMap/components/formatdate.js b/src/views/hotMap/components/formatdate.js
new file mode 100644
index 0000000..a647d01
--- /dev/null
+++ b/src/views/hotMap/components/formatdate.js
@@ -0,0 +1,127 @@
+/**
+ * @name: ���������������
+ * @msg: ��� Date ��������������� Date ������������������������ String
+ * ���(M)������(d)���12������(h)���24������(H)������(m)������(s)������(E)���������(q) ��������� 1-2 ������������
+ * ���(y)��������� 1-4 ���������������������(S)��������� 1 ������������(��� 1-3 ������������)
+ * eg:
+ * dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
+ * dateFormat(new Date(), "yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 ��� 20:09:04
+ * dateFormat(new Date(), "yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 ������ 08:09:04
+ * dateFormat(new Date(), "yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 ��������� 08:09:04
+ * dateFormat(new Date(), "yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
+ *
+ * @param {*} date
+ * @param {*} format
+ * @return {*}
+ */
+export function dateFormat(date, format) {
+ let iDate = null
+ if (typeof date === 'number') {
+ iDate = new Date(date)
+ } else if (typeof date === 'string') {
+ date = date.replace(/-/g, '/')
+ if (date.indexOf('T') > -1) {
+ const dotIndex = date.indexOf('.')
+ date = date.substr(0, dotIndex)
+ date = date.replace('T', ' ')
+ date = new Date(date).getTime()
+ }
+
+ if (!isNaN(Number(date))) {
+ date = Number(date)
+ }
+
+ iDate = new Date(date)
+ } else if (date instanceof Date) {
+ iDate = date
+ } else {
+ return false
+ }
+
+ // ������
+ // let timestamp = iDate.getTime()/1000 - 8 * 60 * 60;
+ // iDate = new Date(timestamp*1000);
+
+ const o = {
+ 'M+': iDate.getMonth() + 1, // ������
+ 'd+': iDate.getDate(), // ���
+ 'h+': iDate.getHours() % 24 === 0 ? '00' : iDate.getHours() % 24, // ������
+ 'H+': iDate.getHours(), // ������
+ 'm+': iDate.getMinutes(), // ���
+ 's+': iDate.getSeconds(), // ���
+ 'q+': Math.floor((iDate.getMonth() + 3) / 3), // ������
+ S: iDate.getMilliseconds() // ������
+ }
+
+ if (!format) {
+ format = 'yyyy-MM-dd hh:mm:ss'
+ }
+ const week = {
+ 0: '\u65e5',
+ 1: '\u4e00',
+ 2: '\u4e8c',
+ 3: '\u4e09',
+ 4: '\u56db',
+ 5: '\u4e94',
+ 6: '\u516d'
+ }
+ if (/(y+)/.test(format)) {
+ format = format.replace(
+ RegExp.$1,
+ (iDate.getFullYear() + '').substr(4 - RegExp.$1.length)
+ )
+ }
+ if (/(E+)/.test(format)) {
+ format = format.replace(
+ RegExp.$1,
+ (RegExp.$1.length > 1
+ ? RegExp.$1.length > 2
+ ? '\u661f\u671f'
+ : '\u5468'
+ : '') + week[iDate.getDay() + '']
+ )
+ }
+ for (const k in o) {
+ if (new RegExp('(' + k + ')').test(format)) {
+ format = format.replace(
+ RegExp.$1,
+ RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
+ )
+ }
+ }
+
+ return format
+}
+
+/**
+ * @name: ������������������������������
+ * @param {*} count ������
+ * @param {*} type ���������������������������before������������������
+ */
+export function getDays(count, type) {
+ const list = []
+ if (type && type === 'before') {
+ for (let i = 0; i < count; i++) {
+ list.unshift(
+ dateFormat(
+ new Date(
+ new Date().setDate(new Date().getDate() - i)
+ ).toLocaleDateString(),
+ 'MM-dd'
+ )
+ )
+ }
+ } else {
+ for (let i = 0; i < count; i++) {
+ list.push(
+ dateFormat(
+ new Date(
+ new Date().setDate(new Date().getDate() + i)
+ ).toLocaleDateString(),
+ 'MM-dd'
+ )
+ )
+ }
+ }
+ return list
+}
diff --git a/src/views/hotMap/components/img/icon-pause.png b/src/views/hotMap/components/img/icon-pause.png
new file mode 100644
index 0000000..831d4c2
--- /dev/null
+++ b/src/views/hotMap/components/img/icon-pause.png
Binary files differ
diff --git a/src/views/hotMap/components/img/icon-play.png b/src/views/hotMap/components/img/icon-play.png
new file mode 100644
index 0000000..a2ef607
--- /dev/null
+++ b/src/views/hotMap/components/img/icon-play.png
Binary files differ
diff --git a/src/views/hotMap/components/img/round.png b/src/views/hotMap/components/img/round.png
new file mode 100644
index 0000000..8ebbab3
--- /dev/null
+++ b/src/views/hotMap/components/img/round.png
Binary files differ
diff --git a/src/views/hotMap/components/selectHour.vue b/src/views/hotMap/components/selectHour.vue
new file mode 100644
index 0000000..13839ff
--- /dev/null
+++ b/src/views/hotMap/components/selectHour.vue
@@ -0,0 +1,102 @@
+<template>
+ <el-date-picker
+ ref="timeBox"
+ :key="dataType"
+ v-model="value1"
+ class="box"
+ size="small"
+ :type="dataType"
+ range-separator="���"
+ :start-placeholder="startPlaceholderData"
+ :end-placeholder="endPlaceholderData"
+ popper-class="tpc"
+ :format="format"
+ :append-to-body="true"
+ :default-value="new Date()"
+ :value-format="valueFormat"
+ :picker-options="pickerOptions"
+ />
+</template>
+
+<script>
+// ���������������������������������������������������������js������������������js���json������������������������������
+// ���������import������������������from'������������������';
+
+export default {
+// import ���������������������������������������������������
+ components: {},
+ props: {
+ dataType: {
+ type: String,
+ default: 'datetimerange'
+ },
+ },
+ data () {
+ // ������������������
+ return {
+ newValue1: [],
+ value1: [],
+ format: 'yyyy-MM-dd HH',
+ valueFormat: 'yyyy-MM-dd HH',
+ startPlaceholderData: '������������������',
+ endPlaceholderData: '������������������',
+ pickerOptions: {
+ disabledDate: (time) => {
+ return time.getTime() > new Date()
+ },
+ },
+ }
+ },
+ // ������������ ���������data������
+ computed: {},
+ // ������data������������������
+ watch: {
+ value1 (nv, ov) {
+ console.log(nv, ov)
+ this.newValue1 = nv
+ this.sendPicker()
+ },
+ dataType (nv, ov) {
+ this.value1 = []
+ if (nv === 'datetimerange') {
+ this.startPlaceholderData = '������������������'
+ this.endPlaceholderData = '������������������'
+ this.format = 'yyyy-MM-dd HH'
+ this.valueFormat = 'yyyy-MM-dd HH'
+ } else if (nv === 'daterange') {
+ this.startPlaceholderData = '������������'
+ this.endPlaceholderData = '������������'
+ this.format = 'yyyy-MM-dd'
+ this.valueFormat = 'yyyy-MM-dd'
+ } else if (nv === 'monthrange') {
+ this.format = 'yyyy-MM'
+ this.valueFormat = 'yyyy-MM'
+ this.startPlaceholderData = '������������'
+ this.endPlaceholderData = '������������'
+ }
+ }
+ },
+ // ������������ - ��������������������������������� this ���������
+ created () {
+ // this.currentHour()
+ },
+ methods: {
+ sendPicker () {
+ this.$emit('selectHourData', this.newValue1)
+ }
+ } // ���������������keep-alive������������������������������������
+}
+</script>
+<style lang="scss">
+ /* ������������ ������������ */
+ .box .el-range-separator{
+ width: 20px !important;
+ }
+ /* ������������ ��������� */
+ .tpc .el-time-spinner__wrapper {
+ width:100% !important;
+ }
+ .tpc .el-scrollbar:nth-of-type(2) {
+ display: none !important;
+ }
+</style>
diff --git a/src/views/hotMap/components/timeLinePlay.vue b/src/views/hotMap/components/timeLinePlay.vue
new file mode 100644
index 0000000..d9c0622
--- /dev/null
+++ b/src/views/hotMap/components/timeLinePlay.vue
@@ -0,0 +1,347 @@
+<template>
+ <div class="timeLineBox">
+ <div class="iconePlay">
+ <i
+ class="menu-icon"
+ :class="{'icon-play': !playing, 'icon-pause': playing}"
+ @click="togglePlay"
+ />
+ </div>
+ <div class="dayDataList">
+ <div class="oneDayData">
+ <div
+ v-for="item in dataFormList"
+ :key="item.id"
+ class="oneDataBox"
+ :class="{'minWdth': dateType==='hour'}"
+ >
+ <div
+ class="lineBox"
+ :class="{'borLeft': dateType!=='hour','activeBg': (activeIndex > item.id )&&(dateType!=='hour')}"
+ @click="changeActiveIndex(item.id,item)"
+ >
+ <!-- ������ -->
+ <div
+ v-if="dateType==='hour'"
+ class="hourData"
+ >
+ <el-tooltip
+ v-for="val in item.hourListTime"
+ :key="val.value"
+ transition=""
+ :open-delay="450"
+ popper-class="tooltip-style"
+ effect="dark"
+ :content="val.name"
+ :disabled="val.isShow"
+ placement="top"
+ >
+ <div
+ class="oneHourData"
+ :class="{'cursorNot': val.isShow}"
+ @click.stop="changeActiveIndex(val.id,val)"
+ >
+ <div
+ class="hourLineBox"
+ :class="{'activeBg': activeIndex > val.id,'activeIhShow': val.isShow}"
+ />
+ <div v-if="((parseInt(val.name, 10) % 3)===0)&&val.name!=='9999'">
+ {{ val.name }}
+ </div>
+ </div>
+ </el-tooltip>
+ </div>
+ </div>
+ <div
+ class="dataFont"
+ :class="{'mgTop': dateType==='hour'}"
+ >
+ {{ item.name }}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+// ���������������������������������������������������������js������������������js���json������������������������������
+// ���������import������������������from'������������������';
+import _ from 'lodash'
+export default {
+// import ���������������������������������������������������
+ components: {},
+ props: {
+ options: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ dateTimes: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ // ���������������
+ dateType: {
+ type: String,
+ default () {
+ return ''
+ }
+ }
+ },
+ data () {
+ // ������������������
+ return {
+ intervalTimer: null, // ���������
+ playing: false,
+ activeIndex: 0,
+ activeItem: {},
+ timeLineData: [ // ������������
+ {
+ id: 0,
+ name: '2019-01-01',
+ index: 1,
+ hourList: [
+ {
+ name: '00:00',
+ value: 0,
+ isShow: false
+ }
+ ]
+ },
+
+ ],
+ }
+ },
+ // ������������ ���������data������
+ computed: {
+ dataFormList () {
+ let dataList = _.cloneDeep(this.dateTimes)
+ let hourListTime = dataList[dataList.length - 1].hourListTime
+ if (hourListTime.length < 24 && this.dateType === 'hour') {
+ const newArr = hourListTime.concat(Array(24 - hourListTime.length).fill({
+ id: 9999,
+ name: '9999',
+ isShow: true
+ }))
+ console.log('newArr', newArr)
+ dataList[dataList.length - 1].hourListTime = newArr
+ }
+ return dataList
+ }
+ },
+ // ������data������������������
+ watch: {
+ dateTimes: {
+ handler (newVal, oldVal) {
+ this.activeIndex = 0
+ this.playing = false
+ console.log('newVal', newVal)
+ },
+ deep: true
+ },
+
+ playing () {
+ if (this.playing) {
+ console.log('������������', this.dataFormList)
+ console.log('this.activeIndex', this.activeIndex)
+ clearInterval(this.intervalTimer)
+ if (this.dateType === 'hour' && this.activeIndex === this.dataFormList[0].idLength) {
+ this.activeIndex = 1
+ } else if (this.dateType !== 'hour' && this.activeIndex === this.dataFormList.length) {
+ this.activeIndex = 1
+ } else {
+ this.activeIndex = (this.activeIndex + 1)
+ }
+ this.intervalTimer = setInterval(() => {
+ if (this.dateType === 'hour' && this.activeIndex === this.dataFormList[0].idLength) {
+ // this.activeIndex = 1
+ this.playing = false
+ } else if (this.dateType !== 'hour' && this.activeIndex === this.dataFormList.length) {
+ // this.activeIndex = 1
+ this.playing = false
+ } else {
+ this.activeIndex = (this.activeIndex + 1)
+ }
+ console.log('this.activeIndex', this.activeIndex)
+ }, this.options.speed * 1000)
+ } else {
+ console.log('������������')
+ if (this.intervalTimer) {
+ clearInterval(this.intervalTimer)
+ this.intervalTimer = null
+ }
+ }
+ },
+ activeIndex () {
+ let activeItem = {}
+ if ((this.activeIndex > this.dataFormList.length) && this.dateType !== 'hour') {
+ this.playing = false
+ this.activeIndex = this.dataFormList.length
+ } else if (this.activeIndex > this.dataFormList[0].idLength && this.dateType === 'hour') {
+ this.playing = false
+ this.activeIndex = this.dataFormList[0].idLength
+ }
+
+ if (this.dateType === 'hour') {
+ this.dataFormList.forEach(element => {
+ element.hourListTime.forEach(item => {
+ if (item.id === (this.activeIndex - 1)) {
+ activeItem = {
+ id: item.id,
+ name: `${element.name} ${item.name}`,
+ }
+ }
+ })
+ })
+ } else {
+ activeItem = this.dataFormList[this.activeIndex - 1]
+ }
+ console.log('activeItem', activeItem, this.activeIndex)
+ this.$emit('getDateFun', activeItem)
+ }
+ },
+ // ������������ - ��������������������������������� this ���������
+ created () {
+ },
+ methods: {
+ changeActiveIndex (data, item) {
+ if (item.isShow && this.dateType === 'hour') {
+ return
+ }
+ this.activeItem = item
+ this.activeIndex = data + 1
+ console.log('changeActiveIndex', data, item)
+ if (this.playing) {
+ this.playing = false
+ }
+ },
+ /**
+ * @name: ���������������
+ */
+ togglePlay () {
+ this.playing = !this.playing
+ },
+ } // ���������������keep-alive������������������������������������
+}
+</script>
+<style scoped lang="scss">
+.timeLineBox{
+ background: hsla(0,0%,80%,.8);
+ width:100%;
+ box-shadow: 1px 1px 5px #666;
+ cursor: pointer;
+ padding: 10px;
+ padding-bottom: 5px;
+ padding-top: 10px;
+ display: flex;
+ align-items: center;
+ .dayDataList{
+ width: calc(100% - 60px);
+ overflow: auto;
+ .oneDayData{
+ display: flex;
+ // justify-content: space-around;
+ .oneDataBox{
+ font-size: 16px;
+ flex: 1;
+ text-align: center;
+ min-width: 100px;
+ border-left: 1px solid #fff;
+ .lineBox{
+ width: 100%;
+ height: 10px;
+ background-color: rgba(0, 0, 0, 0.3);
+ .hourData{
+ display: flex;
+ width:100%;
+ justify-content: space-around;
+ .oneHourData{
+ flex: 1;
+ text-align: center;
+ min-width: 20px;
+ .hourLineBox{
+ width: 100%;
+ height: 10px;
+ // border-left: 1px solid #fff;
+ border-right: 1px solid #fff;
+ }
+ }
+ }
+ }
+ .dataFont{
+ margin-top: 5px;
+ padding-top: 5px;
+ border-top: 1px solid #fff;
+ // border-top: 1px solid #fff;
+ }
+ }
+ }
+ }
+
+}
+.minWdth{
+ min-width: 500px!important;
+}
+.iconePlay{
+ margin-right: 10px;
+ width: 50px;
+ text-align: center;
+}
+.menu-icon {
+ font-size: 20px;
+ width: 43px;
+ height: 43px;
+ background-size: cover;
+ background-repeat: no-repeat;
+ display: inline-block;
+ &.icon-play {
+ background-image: url('./img/icon-play.png');
+ }
+
+ &.icon-pause {
+ background-image: url('./img/icon-pause.png');
+ }
+ &.menu-icon-disabled {
+ cursor: no-drop;
+ opacity: 0.5;
+ }
+}
+.textCenter{
+ text-align: center;
+}
+.activeBg{
+ background: green !important;
+}
+.activeIhShow{
+ border: none!important;
+ background: #fff !important;
+ pointer-events:none;
+}
+.mgTop{
+ margin-top: 20px!important;
+}
+.borLeft{
+ // border-left:1px solid #fff;
+}
+.cursorNot{
+ cursor: not-allowed;
+}
+</style>
+<style>
+ .tooltip-style.el-tooltip__popper {
+ background: green;
+ }
+ .tooltip-style.el-tooltip__popper.is-dark {
+ background: green;
+ }
+.tooltip-style.el-tooltip__popper[x-placement^='top'] .popper__arrow:after{
+ border-top-color:green;
+}
+.el-tooltip__popper[x-placement^='top'] .popper__arrow{
+ border-top-color:green;
+}
+</style>
diff --git a/src/views/hotMap/index.vue b/src/views/hotMap/index.vue
new file mode 100644
index 0000000..9d5c190
--- /dev/null
+++ b/src/views/hotMap/index.vue
@@ -0,0 +1,445 @@
+<template>
+ <div class="content">
+ <div class="formInBox ">
+ <el-form
+ :inline="true"
+ :model="formInline"
+ >
+ <el-form-item>
+ <el-radio-group
+ v-model="formInline.pollutant"
+ size="small"
+ @input="getPollutant"
+ >
+ <el-radio-button
+ v-for="item in sensorArr"
+ :key="item.code"
+ :label="item.name"
+ />
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item>
+ <RegionCity
+ :select-size="'small'"
+ @regionForm="regionData"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-radio-group
+ v-model="formInline.dateRadio"
+ size="small"
+ >
+ <el-radio-button label="������" />
+ <el-radio-button label="���" />
+ <el-radio-button label="���" />
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item>
+ <selectHour
+ :data-type="dataType"
+ @selectHourData="selectHourData"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ type="primary"
+ size="small"
+ @click="onSubmit"
+ >
+ ������
+ </el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <div id="mapd" />
+ <div class="timeLine">
+ <Main
+ v-if="dateTimes.length > 0&&formInline.city!==''"
+ :options="options"
+ :date-times="dateTimes"
+ :date-type="formInline.dayType"
+ @getDateFun="getDateFun"
+ />
+ </div>
+ </div>
+</template>
+
+<script>
+import _ from 'lodash'
+import RegionCity from '@/components/Cascader/regionCity'
+import selectHour from './components/selectHour.vue'
+import Main from './components/timeLinePlay.vue'
+export default {
+ components: { RegionCity, selectHour, Main },
+ data () {
+ return {
+ map: null,
+ heatmap: null,
+ markerClusterer: null,
+ city: '������',
+ formInline: {
+ city: '',
+ cityCode: '',
+ dayType: 'hour',
+ starTime: '',
+ endTime: '',
+ dateRadio: '������',
+ pollutant: 'PM10',
+ },
+ selectSensor: {code: 'a34002', name: 'PM10', maxNumber: 500},
+ sensorArr: [
+ { code: 'a34002', name: 'PM10', maxNumber: 500 },
+ { code: 'a34004', name: 'PM2.5', maxNumber: 350 },
+ { code: 'a21026', name: 'SO2', maxNumber: 2100 },
+ { code: 'a21004', name: 'NO2', maxNumber: 750 },
+ { code: 'a21005', name: 'CO', maxNumber: 48 },
+ { code: 'a05024', name: 'O3', maxNumber: 1000 },
+ { code: 'a99054', name: 'TVOC', maxNumber: 4 }
+ ],
+ heatMapData: [],
+ dataType: 'datetimerange',
+ options: {
+ speed: 2
+ },
+ polygon: null,
+ dateTimes: [],
+ activeItem: {},
+ markerList: []
+ }
+ },
+ watch: {
+ 'formInline.dateRadio': {
+ handler: function (newVal, oldVal) {
+ if (newVal === '������') {
+ this.dataType = 'datetimerange'
+ this.formInline.dayType = 'hour'
+ this.dateTimes = []
+ } else if (newVal === '���') {
+ this.dataType = 'daterange'
+ this.dateTimes = []
+ this.formInline.dayType = 'day'
+ } else if (newVal === '���') {
+ this.dataType = 'monthrange'
+ this.dateTimes = []
+ this.formInline.dayType = 'month'
+ }
+ },
+ deep: true
+ },
+ 'formInline.city': {
+ handler: function (newVal, oldVal) {
+ console.log('newVal', newVal === '')
+ if (newVal !== '') {
+ this.map.clearMap()
+ this.init1()
+ this.map.setCity(newVal)
+ if (!!this.formInline.starTime && !!this.formInline.endTime) {
+ this.onSubmit()
+ }
+ }
+ },
+ deep: true
+ },
+ activeItem: {
+ handler (newVal, oldVal) {
+ if (this.markerList.length > 0) {
+ console.log('2222', this.map.getAllOverlays('marker'))
+ this.map.remove(this.markerList)
+ this.map.clearMap()
+ this.markerList = []
+ // this.markerClusterer = null
+ }
+ this.getData(newVal.name)
+ },
+ deep: true
+ }
+ },
+ mounted () {
+ this.$nextTick(() => {
+ this.initMap()
+ this.createHeatMap()
+ })
+ },
+
+ destroyed () {
+ if (this.map) {
+ this.map.destroy()
+ }
+ },
+ methods: {
+ getDateFun (item) {
+ console.log(item)
+ this.activeItem = item
+ },
+ getPollutant (data) {
+ this.selectSensor = _.find(this.sensorArr, { name: data })
+ console.log(this.selectSensor)
+ },
+ // ���������������
+ initMap () {
+ var map = new AMap.Map('mapd', {
+ resizeEnable: true,
+ zooms: [3, 18],
+ zoom: 11,
+ })
+ this.map = map
+ // let that = this
+ },
+ init1 () { // ������������
+ var that = this
+ if (that.polygon) {
+ that.map.remove(that.polygon)
+ }
+ AMap.plugin('AMap.DistrictSearch', function () {
+ new AMap.DistrictSearch({
+ extensions: 'all',
+ subdistrict: 0
+ }).search(that.formInline.city, function (status, result) { // ���������������������������������������������������
+ var outer = [
+ new AMap.LngLat(-360, 90, true),
+ new AMap.LngLat(-360, -90, true),
+ new AMap.LngLat(360, -90, true),
+ new AMap.LngLat(360, 90, true)
+ ]
+ var holes = result.districtList[0].boundaries
+ var pathArray = [outer]
+ pathArray.push.apply(pathArray, holes)
+ that.polygon = new AMap.Polygon({
+ pathL: pathArray,
+ strokeColor: 'red', // ������������������
+ strokeWeight: 3,
+ fillColor: '#FFF', // ���������������������
+ fillOpacity: 1
+ })
+ that.polygon.setPath(pathArray)
+ that.map.add(that.polygon)
+ })
+ })
+ },
+ getData (newVal) {
+ this.$request({
+ url: '/heatMap/query',
+ method: 'get',
+ params: {
+ code: this.formInline.cityCode,
+ startTime: newVal,
+ type: this.selectSensor.code,
+ form: this.formInline.dayType
+ }
+ })
+ .then(res => {
+ if (res.data !== '0') {
+ if (this.heatmap === null) {
+ this.createHeatMap()
+ }
+ this.map.clearMap()
+ this.heatMapData = res.data
+ this.heatmap.setDataSet({
+ data: this.heatMapData,
+ max: this.selectSensor.maxNumber
+ })
+ // let zoomLevel = this.map.getZoom()
+ //
+ this.setMarkers(this.heatMapData)
+ } else {
+ this.heatmap = null
+ }
+ })
+ .catch(err => {
+ console.log(err)
+ })
+ },
+
+ setMarkers (curData) {
+ curData.forEach((item, index) => {
+ let div = document.createElement('div')
+ let bgColor = 'hsla(180, 100%, 50%, 0.7)'
+ let fontColor = '#000'
+ let borderColor = 'hsl(180, 100%, 40%)'
+ let shadowColor = 'hsl(180, 100%, 50%)'
+ div.id = 'pint' + index
+ div.style.backgroundColor = bgColor
+ let size = 40
+ div.style.width = div.style.height = size + 'px'
+ div.style.border = 'solid 1px ' + borderColor
+ div.style.borderRadius = size / 2 + 'px'
+ div.style.boxShadow = '0 0 1px ' + shadowColor
+ div.innerHTML = Math.floor(Number(item.count))
+ div.style.lineHeight = size + 'px'
+ div.style.color = fontColor
+ div.style.fontSize = '14px'
+ div.style.textAlign = 'center'
+ let marker = new AMap.Marker({
+ position: [item.lng, item.lat],
+ title: item.name,
+ extData: Math.floor(Number(item.count)),
+ anchor: 'center',
+ // ��� html ������ content
+ content: div,
+ // ��� icon ��� [center bottom] ���������
+ offset: new AMap.Pixel(3, 10)
+ })
+ this.markerList.push(marker)
+ })
+ this.map.add(this.markerList)
+ var count = this.markerList.length
+ // eslint-disable-next-line no-new
+ if (this.markerClusterer) {
+ this.markerClusterer.clearMarkers()
+ }
+ let that = this
+ AMap.plugin('AMap.MarkerClusterer', function () {
+ that.markerClusterer = new AMap.MarkerClusterer(that.map, that.markerList, {
+ gridSize: 100,
+ renderClusterMarker: function (context) {
+ let contNumber = 0
+ context.markers.forEach(item => {
+ contNumber += item.getExtData()
+ })
+ let factor = Math.pow(context.count / count, 1 / 18)
+ let div = document.createElement('div')
+ let Hue = 180 - factor * 180
+ let bgColor = 'hsla(' + Hue + ',100%,50%,0.7)'
+ let fontColor = 'hsla(' + Hue + ',100%,20%,1)'
+ let borderColor = 'hsla(' + Hue + ',100%,40%,1)'
+ let shadowColor = 'hsla(' + Hue + ',100%,50%,1)'
+ div.style.backgroundColor = bgColor
+ let size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20)
+ div.style.width = div.style.height = size + 'px'
+ div.style.border = 'solid 1px ' + borderColor
+ div.style.borderRadius = size / 2 + 'px'
+ div.style.boxShadow = '0 0 1px ' + shadowColor
+ div.innerHTML = contNumber
+ div.style.lineHeight = size + 'px'
+ div.style.color = fontColor
+ div.style.fontSize = '14px'
+ div.style.textAlign = 'center'
+ context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2))
+ context.marker.setContent(div)
+ }
+ })
+ })
+ },
+ getDayListData () {
+ this.$request({
+ url: '/heatMap/queryTime',
+ method: 'get',
+ params: {
+ type: this.formInline.dayType,
+ startTime: this.formInline.starTime,
+ endTime: this.formInline.endTime,
+ }
+ })
+ .then(res => {
+ this.dateTimes = res.data
+ })
+ .catch(err => {
+ console.log(err)
+ })
+ },
+ createHeatMap () {
+ let that = this
+ this.map.plugin(['AMap.Heatmap'], function () {
+ // ���������heatmap������
+ that.heatmap = new AMap.Heatmap(that.map, {
+ radius: 100, // ������������
+ opacity: [0.2, 0.8],
+ gradient: {
+ '0': '#d81e06',
+ '0.2': '#ea9518',
+ '0.4': '#fd8200',
+ '0.6': '#fd0001',
+ '0.8': '#95014b',
+ '1': '#7e0226'
+ }
+ })
+ })
+ },
+
+ onSubmit () {
+ if (!!this.formInline.city && !!this.formInline.starTime && !!this.formInline.endTime) {
+ this.getDayListData()
+ this.getData(this.formInline.starTime)
+ this.map.setZoom(12)
+ } else {
+ this.$message({
+ showClose: true,
+ duration: 2000,
+ message: '������������������������������',
+ type: 'error'
+ })
+ }
+ },
+ regionData (city) {
+ console.log(city)
+ if (city.org) {
+ this.formInline.city = city.org
+ this.formInline.cityCode = city.orgid
+ } else {
+ this.formInline.city = ''
+ this.formInline.cityCode = ''
+ }
+ },
+ selectHourData (data) {
+ if (data) {
+ this.formInline.starTime = data[0]
+ this.formInline.endTime = data[1]
+ } else {
+ this.formInline.starTime = ''
+ this.formInline.endTime = ''
+ }
+ },
+ }
+}
+</script>
+
+<style scoped lang="scss">
+.content{
+ width: 100%;
+ height: 100%;
+ position: relative;
+ .formInBox{
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ position: absolute;
+ padding: 5px 10px;
+ width: 100%;
+ z-index: 999;
+ background: rgba(204,204,204,0.5);
+ /deep/.el-form-item{
+ margin-bottom: 0px;
+ }
+ }
+}
+#mapd {
+ width: 100%;
+ height: 100%;
+ resize: both;
+ z-index: 0;
+}
+.timeLine{
+ position: absolute;
+ padding: 5px 10px;
+ bottom: 15px;
+ width: 100%;
+ z-index: 999;
+}
+/deep/.menu-icon {
+ font-size: 20px;
+ width: 30px;
+ height: 30px;
+ background-size: cover;
+ background-repeat: no-repeat;
+ display: inline-block;
+ background-image: url('./components/img/round.png');
+}
+/deep/.menu-font{
+ font-size: 16px;
+ text-align: center;
+ max-width: 120px;
+}
+/deep/.amap-logo,/deep/.amap-copyright{
+ display: none!important;
+}
+</style>
diff --git a/src/views/toCarryOutLegislativeReforms/components/locationMap.vue b/src/views/toCarryOutLegislativeReforms/components/locationMap.vue
new file mode 100644
index 0000000..847753a
--- /dev/null
+++ b/src/views/toCarryOutLegislativeReforms/components/locationMap.vue
@@ -0,0 +1,119 @@
+<template>
+ <div>
+ <el-dialog
+ :title="title"
+ :visible.sync="visible"
+ top="30px"
+ width="1000px"
+ center
+ :before-close="close"
+ >
+ <div class="searchBox">
+ <el-input
+ v-model="placeSearch"
+ placeholder="���������������"
+ class="input-with-select"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="search"
+ />
+ </el-input>
+ </div>
+ <div id="panel" />
+ <div
+ v-if="visible"
+ class="mapBox"
+ >
+ <div id="mapd" />
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ visible: { type: Boolean, required: true }
+ },
+ data () {
+ return {
+ title: '������������',
+ map: null,
+ placeSearch: null
+ }
+ },
+ mounted () {
+ this.$nextTick(() => {
+ this.initMap()
+ })
+ },
+ destroyed () {
+ if (this.map) {
+ this.map.destroy()
+ }
+ },
+ methods: {
+ // ���������������
+ initMap () {
+ let map = new AMap.Map('mapd', {
+ resizeEnable: true,
+ zooms: [3, 18],
+ zoom: 15,
+ center: [120.9781494, 31.4265156]
+ })
+ this.map = map
+
+ const lnglat = new AMap.LngLat('120.9781494', '31.4265156')
+ const marker = new AMap.Marker({
+ position: lnglat
+ })
+
+ // ������������������������������������������������������
+ marker.setAnimation('AMAP_ANIMATION_BOUNCE')
+ marker.setMap(this.map)
+ AMap.service(['AMap.PlaceSearch'], function () {
+ // ���������������������
+ var placeSearch = new AMap.PlaceSearch({
+ pageSize: 5, // ������������������������
+ pageIndex: 1, // ������
+ city: '010', // ���������������
+ citylimit: true, // ���������������������������������������������
+ map: map, // ���������������������������
+ panel: 'panel', // ���������������������������������������������
+ autoFitView: true // ������������������������������������������ Marker���������������������������������
+ })
+ // ���������������
+ placeSearch.search('������������')
+ })
+ },
+ search () {
+ let this_ = this
+ },
+ close () {
+ this.$emit('update:visible', false)
+ }
+ }
+}
+</script>
+
+<style scoped lang="scss">
+/deep/.el-dialog__body {
+ height: 600px;
+ .searchBox {
+ margin-bottom: 10px;
+ }
+ .mapBox {
+ width: 100%;
+ height: 100%;
+ padding-bottom: 30px;
+ }
+}
+#mapd {
+ width: 100%;
+ height: 100%;
+ resize: both;
+ z-index: 0;
+}
+</style>
diff --git a/src/views/toCarryOutLegislativeReforms/reform/index.vue b/src/views/toCarryOutLegislativeReforms/reform/index.vue
index b12d231..5f05f20 100644
--- a/src/views/toCarryOutLegislativeReforms/reform/index.vue
+++ b/src/views/toCarryOutLegislativeReforms/reform/index.vue
@@ -2,7 +2,7 @@
<div v-loading="loading" class="main">
<div>
<searchBar v-if="searchType" :search-type="'reform'" @handleSearch="handleSearchBut" @handleAdd="handleOpenDialog(null, 'add')" />
- <newWorkOrder v-if="centerDialogVisible" ref="newWorkOrder" :parent-form-data="parentFormData" :title="title" :page-state="pageState" :visible.sync="centerDialogVisible" @handleSubmit="newHandleSubmit" />
+ <newWorkOrder v-if="centerDialogVisible" ref="newWorkOrder" :isToMap.sync='isToMap' :parent-form-data="parentFormData" :title="title" :page-state="pageState" :visible.sync="centerDialogVisible" @handleSubmit="newHandleSubmit" />
<!-- <el-divider></el-divider> -->
<div class="tab">
<div class="exportBox">
@@ -229,6 +229,7 @@
<el-button type="primary" @click="handleEditChange">��� ���</el-button>
</span>
</el-dialog>
+ <mapContainer :visible.sync="isToMap" v-if="isToMap"></mapContainer>
</div>
</template>
@@ -238,18 +239,21 @@
import _ from 'lodash'
import qs from 'qs'
import searchBar from '@/views/toCarryOutLegislativeReforms/components/queryForm'
+import mapContainer from '@/views/toCarryOutLegislativeReforms/components/locationMap'
import newWorkOrder from '@/views/toCarryOutLegislativeReforms/components/newWorkOrder'
import workOrderInformation from '@/views/toCarryOutLegislativeReforms/components/workOrderInformation'
export default {
components: {
searchBar,
newWorkOrder,
+ mapContainer,
workOrderInformation
},
// mixins: [mixins],
data() {
return {
loading: false,
+ isToMap: false,
selectionRows: [],
errorClass: 'errorClass',
searchType: 'reform',
@@ -295,6 +299,11 @@
sealList: []
}
},
+ watch: {
+ isToMap(newVal, oldVal) {
+ this.isToMap = newVal
+ }
+ },
computed: {
updataEscalationUnitIdFormatter: function () {
const data = this.unitList.find(
@@ -322,8 +331,23 @@
this.handleSearch({ isInvalid: 0, state: [9, 20, 30] })
this.getUnitList()
this.getContaminateList()
+ if (navigator.geolocation) {
+ navigator.geolocation.getCurrentPosition(
+ this.successCallback,
+ this.errorCallback
+ )
+ } else {
+ alert('���������������������������������������������')
+ }
},
methods: {
+ successCallback(position) {
+ const latitude = position.coords.latitude // ������
+ const longitude = position.coords.longitude // ������
+ console.log('���������' + longitude)
+ console.log('���������' + latitude)
+ },
+ errorCallback() {},
handleSelectionChange(rows) {
console.log(rows)
this.selectionRows = rows
--
Gitblit v1.8.0