10 files added
10 files modified
| | |
| | | browser: true, |
| | | es2021: true |
| | | }, |
| | | extends: ['eslint:recommended', 'standard'], |
| | | extends: ['standard', 'plugin:vue/recommended'], |
| | | overrides: [ |
| | | { |
| | | env: { |
| | |
| | | } |
| | | ], |
| | | 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' |
| | | } |
| | | } |
| | |
| | | // -------------------- 配置eslint -------------------- |
| | | //autoFixedOnSave 设置已废弃,采用如下新的设置,新版(>1.41.0)配置 |
| | | "editor.codeActionsOnSave": { |
| | | "source.fixAll.eslint": true |
| | | "source.fixAll.eslint": "explicit" |
| | | }, |
| | | "eslint.format.enable": true, |
| | | //autoFix默认开启,只需输入字符串数组即可 |
| | |
| | | // -------------------- vetur 配置 -------------------- |
| | | // vue文件默认格式化工具:vetur |
| | | "[vue]": { |
| | | "editor.defaultFormatter": "octref.vetur" |
| | | "editor.defaultFormatter": "dbaeumer.vscode-eslint" |
| | | }, |
| | | // 这个按用户自身习惯选择 |
| | | "vetur.format.defaultFormatter.html": "js-beautify-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=/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%; |
| | |
| | | "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", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "@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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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": { |
| | |
| | | }, |
| | | "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", |
| | |
| | | "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", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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", |
| | |
| | | "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" |
| | | }, |
| | |
| | | "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=" |
| | | } |
| | | } |
| | | }, |
| | |
| | | "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", |
| | |
| | | "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" |
| | | } |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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" |
| | | } |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | } |
| | | }, |
| | | "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==" |
| | | } |
| | | } |
| | | }, |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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" |
| | |
| | | "@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", |
| | |
| | | "@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", |
| | |
| | | <!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"> |
| | | <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> |
| | | <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 |
| | | 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 |
| | | 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> |
| | | <title><%= webpackConfig.name %></title> |
| | | <style> |
| | | body { |
| | | margin: 0px; |
| | |
| | | |
| | | <body> |
| | | <noscript> |
| | | <strong> |
| | | <%= webpackConfig.name %> 不支持无javaScript环境 |
| | | </strong> |
| | | <strong> <%= webpackConfig.name %> 不支持无javaScript环境 </strong> |
| | | </noscript> |
| | | <div id="app"></div> |
| | | </body> |
| | |
| | | //当设备的方向变化(设备横向持或纵向持)此事件被触发。绑定此事件时, |
| | | //注意现在当浏览器不支持orientationChange事件的时候我们绑定了resize 事件。 |
| | | //总来的来就是监听当前窗口的变化,一旦有变化就需要重新设置根字体的值 |
| | | resizeEvt = 'orientationchange' in window ? '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); |
| | | docEl.style.fontSize = docEl.clientWidth / 100 + 'px' |
| | | } |
| | | window.addEventListener(resizeEvt, recalc, false) |
| | | document.addEventListener('DOMContentLoaded', recalc, false) |
| | | </script> |
| | | |
| | | </html> |
| | |
| | | <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 { |
| | | props: { |
| | | selectSize: { |
| | | type: String, |
| | | default: 'medium ' |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | |
| | | desc: '' |
| | | }, |
| | | options: [], |
| | | newRegion: [] |
| | | newRegion: [], |
| | | form1: {} |
| | | } |
| | | }, |
| | | watch: { |
| | | newRegion(n, o) { |
| | | console.log(n, o) |
| | | this.$emit('regionCode', n[this.newRegion.length - 1]) |
| | | } |
| | | }, |
| | |
| | | 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> |
| | |
| | | text-align: center; |
| | | } |
| | | </style> |
| | | |
| | |
| | | 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 |
| | |
| | | * 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 |
| | | |
| | |
| | | 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) => { |
| | | axios |
| | | .get('/serverConfig.json') |
| | | .then(result => { |
| | | // console.log(result) // 看打印出来的结果 |
| | | const config = result.data |
| | | for (const key in config) { |
| | |
| | | // 验证是否已经把属性挂在了Vue上 |
| | | // console.log(Vue.prototype.BASE_ADDR) |
| | | resolve() |
| | | }).catch((error) => { |
| | | }) |
| | | .catch(error => { |
| | | console.log(error) |
| | | reject() |
| | | }) |
| | |
| | | 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() |
| | |
| | | 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', |
| | |
| | | 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 = { |
| | |
| | | heatmap: heatmap, |
| | | hexagon: hexagon, |
| | | airPollutionCalendar: airPollutionCalendar, |
| | | heatMap: heatMap, |
| | | averageContrast: averageContrast, |
| | | industryContributionRate, |
| | | regionalContributionRate, |
New file |
| | |
| | | /** |
| | | * @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 |
| | | } |
New file |
| | |
| | | <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> |
New file |
| | |
| | | <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> |
New file |
| | |
| | | <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> |
New file |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <el-button type="primary" @click="handleEditChange">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <mapContainer :visible.sync="isToMap" v-if="isToMap"></mapContainer> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | 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', |
| | |
| | | sealList: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | isToMap(newVal, oldVal) { |
| | | this.isToMap = newVal |
| | | } |
| | | }, |
| | | computed: { |
| | | updataEscalationUnitIdFormatter: function () { |
| | | const data = this.unitList.find( |
| | |
| | | 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 |