diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..064e9f6
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,11 @@
+# 页面标题
+VUE_APP_TITLE = 北跨泾河-产发工程数字管理平台
+
+# 开发环境配置
+ENV = 'development'
+
+# 北跨泾河-产发工程数字管理平台/开发环境
+VUE_APP_BASE_API = '/jhapi'
+
+# 路由懒加载
+VUE_CLI_BABEL_TRANSPILE_MODULES = true
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..a4d6828
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,8 @@
+# 页面标题
+VUE_APP_TITLE = 北跨泾河-产发工程数字管理平台
+
+# 生产环境配置
+ENV = 'production'
+
+# 北跨泾河-产发工程数字管理平台/生产环境
+VUE_APP_BASE_API = '/jhapi'
diff --git a/.env.staging b/.env.staging
new file mode 100644
index 0000000..8c5c8b2
--- /dev/null
+++ b/.env.staging
@@ -0,0 +1,10 @@
+# 页面标题
+VUE_APP_TITLE = 北跨泾河-产发工程数字管理平台
+
+NODE_ENV = production
+
+# 测试环境配置
+ENV = 'staging'
+
+# 北跨泾河-产发工程数字管理平台/测试环境
+VUE_APP_BASE_API = '/stage-api'
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..ab3b87d
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,6 @@
+/node_modules
+/dist
+/src/*
+/package-lock.json
+.DS_Store
+vue.config.js
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index a19f004..73d4419 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,23 @@
-# ---> Vue
-# gitignore template for Vue.js projects
-#
-# Recommended template: Node.gitignore
+.DS_Store
+node_modules
+/dist
+/doc
-# TODO: where does this rule come from?
-docs/_book
+# local env files
+.env.local
+.env.*.local
-# TODO: where does this rule come from?
-test/
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/README.md b/README.md
index 7cb4267..370dec0 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,24 @@
-# jhbigscreen
+# v3
-jhbigscreen
\ No newline at end of file
+## Project setup
+```
+yarn install
+```
+
+### Compiles and hot-reloads for development
+```
+yarn serve
+```
+
+### Compiles and minifies for production
+```
+yarn build
+```
+
+### Lints and fixes files
+```
+yarn lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..e955840
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ presets: [
+ '@vue/cli-plugin-babel/preset'
+ ]
+}
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..4aafc5f
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "module": "esnext",
+ "baseUrl": "./",
+ "moduleResolution": "node",
+ "paths": {
+ "@/*": [
+ "src/*"
+ ]
+ },
+ "lib": [
+ "esnext",
+ "dom",
+ "dom.iterable",
+ "scripthost"
+ ]
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..dcacb0c
--- /dev/null
+++ b/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "v3",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "serve": "vue-cli-service serve",
+ "build": "vue-cli-service build",
+ "lint": "vue-cli-service lint"
+ },
+ "dependencies": {
+ "axios": "0.24.0",
+ "core-js": "^3.8.3",
+ "dayjs": "^1.11.9",
+ "element-ui": "^2.15.13",
+ "file-saver": "2.0.5",
+ "js-cookie": "^3.0.5",
+ "less": "^4.1.3",
+ "less-loader": "^11.1.3",
+ "vue": "^2.6.14",
+ "vue-router": "^4.2.2"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.12.16",
+ "@babel/eslint-parser": "^7.12.16",
+ "@vue/cli-plugin-babel": "~5.0.0",
+ "@vue/cli-plugin-eslint": "~5.0.0",
+ "@vue/cli-service": "~5.0.0",
+ "eslint": "^7.32.0",
+ "eslint-plugin-vue": "^8.0.3",
+ "vue-template-compiler": "^2.6.14"
+ },
+ "eslintConfig": {
+ "root": true,
+ "env": {
+ "node": true
+ },
+ "extends": [
+ "plugin:vue/essential",
+ "eslint:recommended"
+ ],
+ "parserOptions": {
+ "parser": "@babel/eslint-parser"
+ },
+ "rules": {}
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not dead"
+ ]
+}
diff --git a/public/css/largeScreenLayout.css b/public/css/largeScreenLayout.css
new file mode 100644
index 0000000..cea2b17
--- /dev/null
+++ b/public/css/largeScreenLayout.css
@@ -0,0 +1,148 @@
+.screen-module{
+ padding: 10px;
+}
+.module-title{
+ height: 25px;
+ line-height: 25px;
+ padding-left: 15px;
+ font-size: 16px;
+}
+.module-title-red{
+ padding-left: 40px;
+}
+
+.screen-one-1-1{
+ height: 310px;
+ background: url("../images/one/1x1.png") no-repeat center/100% 100%;
+}
+.screen-one-1-2{
+ height: 310px;
+ background: url("../images/one/1x2.png") no-repeat center/100% 100%;
+}
+.screen-one-1-3{
+ height: 310px;
+ background: url("../images/one/1x3.png") no-repeat center/100% 100%;
+}
+.screen-one-1-4{
+ height: 310px;
+ background: url("../images/one/1x4.png") no-repeat center/100% 100%;
+}
+
+.screen-one-2-1{
+ height: 640px;
+ background: url("../images/one/2x1.png") no-repeat center/100% 100%;
+}
+.screen-one-2-2{
+ height: 640px;
+ background: url("../images/one/2x2.png") no-repeat center/100% 100%;
+}
+.screen-one-2-3{
+ height: 640px;
+ background: url("../images/one/2x3.png") no-repeat center/100% 100%;
+}
+.screen-one-2-4{
+ height: 640px;
+ background: url("../images/one/2x4.png") no-repeat center/100% 100%;
+}
+
+.screen-one-3-1{
+ height: 970px;
+ background: url("../images/one/3x1.png") no-repeat center/100% 100%;
+}
+.screen-one-3-2{
+ height: 970px;
+ background: url("../images/one/3x2.png") no-repeat center/100% 100%;
+}
+.screen-one-3-3{
+ height: 970px;
+ background: url("../images/one/3x3.png") no-repeat center/100% 100%;
+}
+.screen-one-3-4{
+ height: 970px;
+ background: url("../images/one/3x4.png") no-repeat center/100% 100%;
+}
+
+
+
+.screen-two-1-1{
+ height: 290px;
+ background: url("../images/two/1x1.png") no-repeat center/100% 100%;
+}
+.screen-two-1-2{
+ height: 290px;
+ background: url("../images/two/1x2.png") no-repeat center/100% 100%;
+}
+.screen-two-1-3{
+ height: 290px;
+ background: url("../images/two/1x3.png") no-repeat center/100% 100%;
+}
+.screen-two-1-4{
+ height: 290px;
+ background: url("../images/two/1x3.png") no-repeat center/100% 100%;
+}
+
+
+.screen-two-2-1{
+ height: 600px;
+ background: url("../images/two/2x1.png") no-repeat center/100% 100%;
+}
+.screen-two-2-2{
+ height: 600px;
+ background: url("../images/two/2x2.png") no-repeat center/100% 100%;
+}
+.screen-two-2-3{
+ height: 600px;
+ background: url("../images/two/2x3.png") no-repeat center/100% 100%;
+}
+.screen-two-2-4{
+ height: 600px;
+ background: url("../images/two/2x4.png") no-repeat center/100% 100%;
+}
+
+.screen-two-3-1{
+ height: 920px;
+ background: url("../images/two/3x1.png") no-repeat center/100% 100%;
+}
+.screen-two-3-2{
+ height: 920px;
+ background: url("../images/two/3x2.png") no-repeat center/100% 100%;
+}
+.screen-two-3-3{
+ height: 920px;
+ background: url("../images/two/3x3.png") no-repeat center/100% 100%;
+}
+.screen-two-3-4{
+ height: 920px;
+ background: url("../images/two/3x4.png") no-repeat center/100% 100%;
+}
+
+
+
+
+.screen-red-1-1{
+ height: 310px;
+ background: url("../images/red/1x1.png") no-repeat center/100% 100%;
+}
+.screen-red-1-2{
+ height: 310px;
+ background: url("../images/red/1x2.png") no-repeat center/100% 100%;
+}
+.screen-red-2-2{
+ height: 640px;
+ background: url("../images/red/2x2.png") no-repeat center/100% 100%;
+}
+
+
+.screen-big{
+ height: 310px;
+ background: url("../images/red/big_bgd.png") no-repeat center/100% 100%;
+}
+
+.screen-one-0-5{
+ height: 475px;
+ background: url("../images/red/0x5.png") no-repeat center/100% 100%;
+}
+.screen-one-video{
+ height: 970px;
+ background: url("../images/red/video.png") no-repeat center/100% 100%;
+}
\ No newline at end of file
diff --git a/public/css/largeScreenStyle.css b/public/css/largeScreenStyle.css
new file mode 100644
index 0000000..408de3d
--- /dev/null
+++ b/public/css/largeScreenStyle.css
@@ -0,0 +1,3294 @@
+*{
+ margin: 0;
+ padding: 0;
+}
+@font-face {
+ font-family: "title-font";
+ src:url(../fonts/HYLXTJ.eot),url(../fonts/HYLXTJ.svg),url(../fonts/HYLXTJ.ttf),url(../fonts/HYLXTJ.woff),url(../fonts/HYLXTJ.woff2)
+}
+@font-face {
+ font-family: "number-font";
+ src:url(../fonts/PUTHIAfont.eot),url(../fonts/PUTHIAfont.svg),url(../fonts/PUTHIAfont.ttf),url(../fonts/PUTHIAfont.woff),url(../fonts/PUTHIAfont.woff2)
+}
+body{
+ width:1920px;
+ height: 1080px;
+ background:#010117;
+ color: #ffffff;
+ font-size: 16px;
+}
+body::-webkit-scrollbar{
+ width: 0px;
+ height: 0px;
+}
+p,label,ul{
+ margin: 0;
+ font-weight: 400;
+}
+table{
+ width: 100%;
+}
+.anchorBL {
+ display:none;
+}
+[v-cloak] {
+ display: none;
+}
+/*背景视频*/
+.background_video video{
+ width:1920px;
+ height: 1080px;
+ position: absolute;
+}
+.screen-content-max{
+ position: absolute;
+ width:1920px;
+ height: 1080px;
+ top: 0;
+ left: 0;
+ background: rgba(0,0,0,0.5);
+}
+.screen-content{
+ padding: 10px 15px;
+}
+/*head*/
+.head-title{
+ height: 70px;
+ background: url("../images/head_title.png") no-repeat center/100% 65px;
+ display: flex;
+}
+.head-title-label{
+ width: 22%;
+ font-size: 28px;
+ position: relative;
+ padding-left: 15px;
+ padding-top: 15px;
+ font-family: "title-font";
+ background-image:-webkit-linear-gradient(bottom,#3da2ff,#3ea4ff,#96f3ff);
+ -webkit-background-clip:text;
+ -webkit-text-fill-color:transparent;
+}
+.head-title-tab{
+ width: 40% ;
+ padding-top: 23px;
+ display: flex;
+}
+.head-title-select{
+ padding-top: 23px;
+ width: 12% ;
+ position: relative;
+}
+.head-title-date{
+ padding-top: 15px;
+ width: 15% ;
+ display: flex;
+ align-items: center;
+}
+.head-nav{
+ width: 105px;
+ height: 35px;
+ line-height: 35px;
+ text-align: center;
+ color: #6383aa;
+ cursor: pointer;
+ background: url("../images/title_tab.png") no-repeat center/100% 100%;
+}
+.head-nav.active{
+ background: url("../images/title_tab_active.png") no-repeat center/100% 100%;
+ color: #ffffff;
+}
+.head-nav:hover{
+ color: #86b2e3;
+}
+.head-nav.active:hover{
+ color: #ffffff;
+}
+.head-select{
+ height: 35px;
+ padding-left: 25px;
+ padding-right: 30px;
+ background: url("../images/head_select.png") no-repeat center/100% 100%;
+}
+.head-select input{
+ height: 100%;
+ width: 100%;
+ border: 0;
+ outline: 0;
+ background:0;
+ color: #1ce7ff;
+ cursor: pointer;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+}
+.head-select input::-webkit-input-placeholder{
+ color: #6ca5b1;
+}
+.header-screen-ul{
+ list-style: none;
+ width: 90%;
+ position: absolute;
+ max-height: 600px;
+ border: 1px solid #05556b;
+ left: 5%;
+ background: #00092a;
+ overflow: auto;
+ color: #02a6ff;
+ border-radius: 3px;
+ z-index: 99999;
+}
+.header-screen-ul::-webkit-scrollbar {
+ width: 10px;
+ height: 1px;
+}
+.header-screen-ul::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.header-screen-ul::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.header-screen-ul li{
+ padding: 10px;
+ cursor: pointer;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.header-screen-ul li:hover{
+ background: #031348;
+ color: #1ce7ff;
+}
+.head-title-time{
+ width: 45%;
+ text-align: center;
+}
+.head-title-weather{
+ width: 55%;
+ display: flex;
+ align-items: center;
+}
+.head-title-weather img{
+ width: 30px;
+ height: 30px;
+}
+.head-title-weather span{
+ padding: 0 5px;
+}
+.head-title-date-con{
+ font-size: 12px;
+ color: #63baff;
+}
+.head-title-time-con{
+ font-size: 20px;
+ font-weight: bold;
+ color: #63baff;
+}
+/*红色head*/
+.head-title.red-head{
+ background: url("../images/head_title_red.png") no-repeat center/100% 65px;
+}
+.red-head .head-title-label{
+ background-image:-webkit-linear-gradient(bottom,#bc3833,#fb9e97,#ffffff);
+}
+.red-head .head-nav{
+ color: #ff9b96;
+ background: url("../images/title_tab_red.png") no-repeat center/100% 100%;
+}
+.red-head .head-nav.active{
+ background: url("../images/title_tab_active_red.png") no-repeat center/100% 100%;
+ color: #ffffff;
+}
+.red-head .head-nav:hover{
+ color: #fcc0bd;
+}
+.red-head .head-nav.active:hover{
+ color: #ffffff;
+}
+.red-head .head-select{
+ background: url("../images/head_select_red.png") no-repeat center/100% 100%;
+}
+.red-head .head-select input{
+ color: #ffffff;
+}
+.red-head .head-select input::-webkit-input-placeholder{
+ color: #fd7569;
+}
+.red-head .header-screen-ul{
+ border: 1px solid #da8f89;
+ background: #901c14;
+ color: #fbcbc9;
+}
+.red-head .header-screen-ul::-webkit-scrollbar {
+ width: 10px;
+ height: 1px;
+}
+.red-head .header-screen-ul::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #c34a3f;
+}
+.red-head .header-screen-ul::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #901c14;
+}
+.red-head .header-screen-ul li{
+ padding: 10px;
+ cursor: pointer;
+}
+.red-head .header-screen-ul li:hover{
+ background: #9a3b33;
+ color: #ffffff;
+}
+.red-head .head-title-date-con{
+ color: #ffffff;
+}
+.red-head .head-title-time-con{
+ color: #ffffff;
+}
+
+/*设备概况*/
+.survey_title{
+ display: flex;
+ justify-content: space-evenly;
+ align-items: center;
+ padding: 30px 15px;
+}
+.survey_title_btn{
+ position: relative;
+ width: 33.33%;
+ color: #7f9ebd;
+}
+.survey_title_btn_min{
+ width: 100px;
+ height: 30px;
+ text-align: center;
+ line-height: 30px;
+ margin: auto;
+ cursor: pointer;
+ background: url("../images/survey_btn.png") no-repeat center/100% 100%;
+}
+.survey_title_btn_min:hover{
+ color: #ffffff;
+}
+.survey_title_btn_min.active{
+ width: 120px;
+ height: 40px;
+ line-height: 40px;
+ color: #ffffff;
+ background: url("../images/survey_btn_active.png") no-repeat center/100% 100%;
+}
+.survey_content{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.survey_content_img{
+ width: 90px;
+ height: 90px;
+ text-align: center;
+ line-height: 90px;
+ position: relative;
+ background: url("../images/survey_total_icon.png") no-repeat bottom/90px 60px;
+}
+@keyframes icon {
+ 0% {
+ transform: translate(0px, 0px);
+ }
+ 50% {
+ transform: translate(0px, 15px); /* 可配置跳动方向 */
+ }
+ 100% {
+ transform: translate(0px, 0px);
+ }
+}
+.survey_content_img img,.survey_content_img svg{
+ width: 40px;
+ height: 40px;
+ animation: icon 3s infinite;
+ -webkit-animation: icon 3s infinite;
+}
+.survey_content_number{
+ padding-left: 15px;
+ color: #cbdaff;
+ font-size: 16px;
+}
+.survey_content_number p{
+ padding-bottom: 15px;
+}
+.survey_content_value span{
+ font-size: 25px;
+ font-style: italic;
+ font-weight: bold;
+ color: #87e3fa;
+ padding-right: 5px;
+}
+.survey_text{
+ width: 120px;
+ height: 28px;
+ margin: auto;
+ animation:myfirst 2s;
+ -webkit-animation:myfirst 2s infinite; /* Safari and Chrome */
+}
+@keyframes myfirst {
+ 0% {opacity:0.4;}
+ 25% {opacity:0.7;}
+ 50% {opacity:1;}
+ 75% {opacity:0.7;}
+ 100% {opacity:0.4;}
+}
+.survey_text_zy{
+ background: url("../images/survey_bgd_zy.png") no-repeat center/100% 100%;
+}
+.survey_text_zl{
+ background: url("../images/survey_bgd_zy.png") no-repeat center/100% 100%;
+}
+.survey_text_fb{
+ background: url("../images/survey_bgd_zy.png") no-repeat center/100% 100%;
+}
+.survey_text_value{
+ position: absolute;
+ top: 0;
+ height: 28px;
+ color: #cbdaff;
+ line-height: 28px;
+ padding-left: 45px;
+ display: flex;
+ align-items: center;
+}
+.survey_text_value span{
+ color: #00aaff;
+ font-size: 16px;
+ padding-left: 10px;
+ font-weight: bold;
+}
+/*当日预警信息*/
+.warning-info{
+ padding: 0 15px;
+}
+.warning-info-title{
+ padding: 15px 0;
+ display: flex;
+}
+.warning-info-title div{
+ color: #69839e;
+ padding: 0 20px 0 12px;
+ cursor: pointer;
+}
+.warning-info-title .active{
+ color: #51b5ff;
+ background: url("../images/check_icon.png") no-repeat left/8px 15px;
+}
+.warning-info-title div:hover{
+ color: #51b5ff;
+}
+
+/*操作证情况*/
+.czz-number{
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ padding: 30px 10px;
+}
+.czz-number-content{
+ display: flex;
+}
+.czz-number-img{
+ width: 60px;
+ height: 60px;
+ text-align: center;
+ line-height: 80px;
+}
+.czz-number-img-blue{
+ background: url("../images/circle_blue.gif") no-repeat center/100% 100%;
+}
+.czz-number-img-green{
+ background: url("../images/circle_green.gif") no-repeat center/100% 100%;
+}
+.survey_content_value_color_green span{
+ color: #5bf8b5;
+}
+
+/*管理人员情况*/
+.glr-max{
+ padding:30px 10px;
+}
+.glr-min{
+ padding:0 10px;
+}
+.glr-title{
+ background: url("../images/check_icon.png") no-repeat left/10px 20px;
+ padding-left: 15px;
+}
+.people-number-con{
+ padding: 35px 0;
+ display: flex;
+ align-items: center;
+}
+.people-number-con div{
+ width: 30px;
+ height: 45px;
+ background: url("../images/number_bgd.png") no-repeat center/100% 100%;
+ margin-right: 10px;
+ text-align: center;
+ line-height: 45px;
+ font-size: 30px;
+ font-family: 'number-font';
+}
+.glr-login-rate{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 8px 10px 8px 15px;
+ background: url("../images/title_icon.png") no-repeat left/10px 15px;
+ color: #cbdaff;
+}
+.glr-rate-value span{
+ font-size: 18px;
+ color: #ffffff;
+ font-weight: bold;
+}
+.glr-rate-red-value span{
+ color: #f23644;
+}
+.glr-login-number-max{
+ position: relative;
+ padding: 22px 0;
+}
+.glr-login-number-bgd{
+ height: 30px;
+ background: url("../images/text_bgd.png") no-repeat center/100% 30px;
+ animation:myfirst 2s;
+ -webkit-animation:myfirstbgd 2s infinite;
+}
+.glr-login-number-red-bgd{
+ background: url("../images/text_red_bgd.png") no-repeat center/100% 30px;
+}
+@keyframes myfirstbgd {
+ 0% {opacity:0.4;}
+ 25% {opacity:0.7;}
+ 50% {opacity:1;}
+ 75% {opacity:0.7;}
+ 100% {opacity:0.4;}
+}
+.glr-login-number{
+ position: absolute;
+ width: 95%;
+ top: 25px;
+ padding:0 5px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+.glr-login-number img{
+ margin-right: 5px;
+}
+
+/*打卡管控提示*/
+.table-head{
+ text-align: center;
+ color: #45e9ff;
+ height: 40px;
+ line-height: 40px;
+}
+
+.table-body{
+ height: 180px;
+ overflow: auto;
+}
+.table-body::-webkit-scrollbar{
+ width: 0px;
+ height: 0px;
+}
+.table-tr{
+ height: 60px;
+ line-height: 60px;
+ background: url("../images/table_tr.png") no-repeat center/100% 50px;
+}
+.table-td{
+ padding: 0 5px;
+ text-align: center;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ color: #cbdaff;
+}
+
+/*中国地图*/
+
+.indicators-chart{
+ padding: 10px;
+}
+.indicators-chart-max{
+ position: relative;
+}
+.indicators-chart-bgd{
+ background: url("../images/text_bgd.png") no-repeat left/100% 100%;
+ height: 40px;
+ animation:myfirst 2s;
+ -webkit-animation:textbgd 2s infinite;
+}
+@keyframes textbgd {
+ 0% {opacity:0.4;}
+ 25% {opacity:0.7;}
+ 50% {opacity:1;}
+ 75% {opacity:0.7;}
+ 100% {opacity:0.4;}
+}
+.indicators-chart-title{
+ display: flex;
+ align-items: center;
+ padding: 0 15px;
+ width: 100%;
+ position: absolute;
+ top: 9px;
+}
+.indicators-chart-title img{
+ width: 10px;
+ height: 20px;
+}
+.indicators-chart-text{
+ padding: 0 10px;
+ color: #cbdaff;
+}
+.indicators-chart-text span{
+ font-size: 16px;
+ color: #ffffff;
+}
+.indicators-chart-content{
+ display: flex;
+ align-items: center;
+}
+.indicators-chart-min{
+ width: 20%;
+}
+/*设备运行动态*/
+.chart-gif{
+ width: 110px;
+ height: 110px;
+ position: absolute;
+ top: 57px;
+ left: 172px;
+ background: url("../images/run_circle.png") no-repeat center/100% 100%;
+}
+.chart-gif{
+ -webkit-transition-property: -webkit-transform;
+ -webkit-transition-duration: 1s;
+ -moz-transition-property: -moz-transform;
+ -moz-transition-duration: 1s;
+ -webkit-animation: rotate 3s linear infinite;
+ -moz-animation: rotate 3s linear infinite;
+ -o-animation: rotate 3s linear infinite;
+ animation: rotate 3s linear infinite;
+}
+@-webkit-keyframes rotate{from{-webkit-transform: rotate(360deg)}
+ to{-webkit-transform: rotate(0deg)}
+}
+@-moz-keyframes rotate{from{-moz-transform: rotate(359deg)}
+ to{-moz-transform: rotate(0deg)}
+}
+@-o-keyframes rotate{from{-o-transform: rotate(359deg)}
+ to{-o-transform: rotate(0deg)}
+}
+@keyframes rotate{from{transform: rotate(359deg)}
+ to{transform: rotate(0deg)}
+}
+
+
+/*打卡管控提示*/
+.warning-info-table .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.warning-info-table .el-table .cell{
+ padding: 0 5px;
+}
+.warning-info-table .el-table{
+ background: none;
+}
+.warning-info-table .el-table th, .el-table tr{
+ background: none;
+}
+.warning-info-table .el-table th{
+ height: 50px;
+ text-align: center;
+ color: #1ce7ff;
+}
+.warning-info-table .el-table td{
+ height: 60px;
+ text-align: center;
+ padding: 0;
+}
+.warning-info-table .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.warning-info-table .el-table .el-table__row{
+ background: url("../images/text_red_safe_bgd.png") no-repeat center/100% 40px;
+}
+.warning-info-table .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+}
+.warning-info-table .el-table::before{
+ background: none;
+}
+
+/*分类及工时情况*/
+.classify-situation{
+ height: 57px;
+}
+.classify-title{
+ padding-top: 8px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.classify-title-text{
+ color: #a2c8f9;
+}
+.classify-title-text span{
+ background: url("../images/up.png") no-repeat left/10px 8px;
+ padding: 0 12px 0 15px;
+ color: #fcbc02;
+ font-style: italic;
+}
+.classify-value{
+ display: flex;
+ align-items: center;
+}
+.classify-total{
+ padding-right: 10px;
+ color: #a2c8f9;
+}
+.classify-total span{
+ padding-right: 5px;
+ font-weight: bold;
+ font-size: 16px;
+}
+.classify-value-data{
+ color: #a2c8f9;
+}
+.classify-value-data span{
+ font-size: 16px;
+ font-weight: bold;
+ padding: 0 5px;
+}
+.classify-data-1{
+ color: #1ce7ff;
+}
+.classify-data-2{
+ color: #4670fa;
+}
+.classify-chart-max{
+ padding-top: 10px;
+}
+.classify-chart{
+ height: 6px;
+ background: #031f47;
+ display: flex;
+}
+.classify-chart-left{
+ height: 6px;
+ background: #1ce7ff;
+}
+.classify-chart-right{
+ height: 6px;
+ background: #3367df;
+}
+
+/*机械项目级*/
+/*地图滚动条*/
+.china-map::-webkit-scrollbar {
+ width: 10px;
+ height: 1px;
+}
+.china-map::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.china-map::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+
+/*设备概况*/
+.survey-oil-max{
+ padding:0 20px;
+}
+.survey-oil-min{
+ padding: 8px 0;
+}
+.survey-oil-title{
+ position: relative;
+ padding: 20px 0;
+}
+.survey-oil-hr{
+ border-bottom: 1px dashed #1d3d56;
+}
+.survey-oil-text{
+ position: absolute;
+ top: 10px;
+ font-size: 14px;
+ padding: 0 15px;
+ color: #c0dafb;
+ background: #000b25 url("../images/check_icon.png") no-repeat left/8px 15px;
+}
+.survey-oil-data{
+ padding: 10px;
+ color: #a2c8f9;
+}
+.survey-oil-hour{
+ height: 30px;
+ line-height: 30px;
+}
+.survey-oil-hour span{
+ font-size: 20px;
+ color: #52afff;
+ font-weight: bold;
+ padding-right: 5px;
+}
+.survey-oil-label{
+ height: 30px;
+ line-height: 30px;
+ background: url("../images/right.png") no-repeat left/8px 15px;
+ padding-left: 15px;
+}
+.survey-oil-prop{
+ height: 30px;
+ line-height: 30px;
+ text-align: right;
+}
+.survey-oil-prop span{
+ font-weight: bold;
+ font-size: 20px;
+ padding-right: 5px;
+}
+.color-white{
+ color: #ffffff;
+}
+.color-yellow{
+ color: #fde463;
+}
+.color-green{
+ color: #25bb4d;
+}
+/*利用率*/
+.rank-max{
+ padding: 0 20px;
+}
+.rank-min{
+ padding-bottom: 15px;
+}
+.rank-con{
+ background: #01244c;
+ height: 40px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-left: 5px;
+}
+.rank-con-title{
+ display: flex;
+ align-items: center;
+}
+.rank-con-title img{
+ width: 40px;
+ height: 40px;
+ margin-right: 8px;
+}
+.rank-con-try{
+ color: #00f1fc;
+}
+.rank-con-data{
+ width: 100px;
+ height: 40px;
+ background: url("../images/ratio_bgd.png") no-repeat center/100% 100%;
+ text-align: right;
+ line-height: 40px;
+ padding-right: 10px;
+ color: #a2c8f9;
+}
+.rank-con-data span{
+ color: #ffffff;
+ font-size: 18px;
+ font-weight: bold;
+}
+.rank-chart{
+ padding: 0 15px;
+ color: #c0dafb;
+}
+.rank-chart-title{
+ height: 40px;
+ line-height: 40px;
+ padding-left: 35px;
+ background: url("../images/utilization.png") no-repeat left/30px 40px;
+ font-size: 16px;
+ border-bottom: 1px solid #2c4e74;
+}
+/*平均工时*/
+.time-study-max{
+ padding:0 20px;
+}
+.time-study-title{
+ padding: 15px 0;
+}
+.time-study-value{
+ padding:5px 10px;
+ text-align: center;
+}
+.time-study-value p{
+ padding: 15px 0;
+ font-size: 16px;
+}
+.time-study-value-num{
+ color: #a2c8f9;
+}
+.time-study-value-num span{
+ font-size: 22px;
+ color: #59affa;
+ font-weight: bold;
+}
+/*油耗分析*/
+.average-oil label{
+ color: #ffffff;
+}
+.average-oil span{
+ font-size: 16px;
+ color: #59affa;
+ padding: 0 5px;
+ font-weight: bold;
+}
+/*闲置列表*/
+.idle-list{
+ padding:20px 15px;
+}
+.idle-list .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.idle-list .el-table .cell{
+ padding: 0 5px;
+}
+.idle-list .el-table{
+ background: none;
+}
+.idle-list .el-table th, .el-table tr{
+ background: none;
+}
+.idle-list .el-table th{
+ height: 40px;
+ color: #ffffff;
+ background: #193854;
+ padding: 0;
+}
+.idle-list .el-table td{
+ height: 40px;
+ padding: 0;
+ color: #a2c8f9;
+}
+.idle-list .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.idle-list .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+}
+.idle-list .el-table::before{
+ background: none;
+}
+
+.idle-list-color{
+ color: #f05e35;
+}
+
+/*预警分析*/
+.analyse-max{
+ padding: 10px;
+}
+.analyse-min{
+ height: 260px;
+}
+.analyse-title{
+ height: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 20px;
+ background: url("../images/analyse_title.png") no-repeat left/100% 100%;
+}
+.analyse_title_blue{
+ background: url("../images/analyse_title_blue.png") no-repeat left/100% 100%;
+}
+.analyse-text{
+ line-height: 40px;
+ font-size: 16px;
+}
+.analyse-equipment{
+ background: url("../images/analyse_icon.png") no-repeat right/15px 20px;
+ padding-right: 20px;
+ font-size: 20px;
+ letter-spacing: 2px;
+ -webkit-animation: Glow 1s ease infinite alternate;
+ animation: Glow 1s ease infinite alternate;
+}
+@-webkit-keyframes Glow {
+ from {
+ text-shadow: 0 0 10px #097fca,
+ 0 0 20px #097fca,
+ 0 0 30px #097fca,
+ 0 0 40px #097fca,
+ 0 0 70px #097fca,
+ 0 0 80px #097fca,
+ 0 0 100px #097fca,
+ 0 0 150px #097fca;
+ }
+ to {
+ text-shadow: 0 0 5px #097fca,
+ 0 0 10px #097fca,
+ 0 0 15px #097fca,
+ 0 0 20px #097fca,
+ 0 0 35px #097fca,
+ 0 0 40px #097fca,
+ 0 0 50px #097fca,
+ 0 0 75px #097fca;
+ }
+}
+.analyse-num{
+ color: #a2c8f9;
+}
+.analyse-num span{
+ font-size: 25px;
+ color: #f73647;
+ font-weight: bold;
+}
+.analyse-number-max{
+ padding-right: 20px;
+ height: 164px;
+ overflow: auto;
+}
+.analyse-number-max::-webkit-scrollbar {
+ width: 0px;
+ height: 1px;
+}
+.analyse-number-max::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.analyse-number-max::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+
+
+.analyse-num-max{
+ padding: 12px 0;
+}
+.analyse-login-numbe{
+ top: 15px;
+}
+.afoot-content{
+ padding: 15px 15px 0;
+}
+.afoot-overflow{
+ height: 653px;
+ overflow: auto;
+}
+.afoot-overflow::-webkit-scrollbar {
+ width: 0px;
+ height: 1px;
+}
+.afoot-overflow::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.afoot-overflow::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.afoot-con-for{
+ margin-bottom: 20px;
+}
+.afoot-con-for.active{
+ background: url("../images/zzfs_bgf.png") no-repeat center/100% 100%;
+}
+.afoot-machinery-nam{
+ font-size: 16px;
+ font-weight: bold;
+ padding:10px 0 15px;
+}
+.afoot-machinery-info{
+ display: flex;
+ margin-bottom: 10px;
+}
+.afoot-machinery-img{
+ width: 70px;
+ height: 70px;
+ background: url("../images/logo_bgd.png") no-repeat center/100% 100%;
+}
+.afoot-machinery-img img{
+ width: 100%;
+ height: 100%;
+}
+.afoot-machinery-data{
+ padding-left: 15px;
+ width: calc(100% - 90px);
+}
+.afoot-machinery-state{
+ color: #f73647;
+ font-size: 18px;
+ height: 50px;
+ overflow: hidden;
+}
+.afoot-machinery-time{
+ color: #7f99ba;
+}
+.afoot-machinery-project{
+ color: #7f99ba;
+ padding-top: 10px;
+}
+.afoot-machinery-map{
+ margin-top: 15px;
+ height: 200px;
+ border: 1px solid #054e85;
+}
+
+
+/*foot*/
+.foot-max{
+ position: fixed;
+ left: 0;
+ bottom: -90px;
+ width: 100%;
+ height: 115px;
+ z-index: 5;
+ background: url("../images/foot_open.png") no-repeat bottom/100% 100%;
+ transition: bottom 0.2s;
+}
+.foot-min{
+
+}
+.foot-content{
+ width: 75%;
+ margin: auto;
+}
+.foot-mouse{
+ width: 200px;
+ height: 40px;
+ margin: auto;
+}
+.foot-content-left{
+ width: 30px;
+ height: 50px;
+ margin: auto;
+ cursor: pointer;
+ background: url("../images/foot_left.png") no-repeat center/20px 40px;
+}
+.foot-content-right{
+ width: 30px;
+ height: 50px;
+ margin: auto;
+ cursor: pointer;
+ background: url("../images/foot_right.png") no-repeat center/20px 40px;
+}
+.foot-content-tabs{
+ width: 1250px;
+ height: 50px;
+ overflow: auto;
+ margin: auto;
+ position: relative;
+}
+.foot-content-tabs::-webkit-scrollbar{
+ width: 0px;
+ height: 0px;
+}
+.foot-content-tabs-min{
+ display: flex;
+ align-items: center;
+ padding-top: 3px;
+ position: absolute;
+ transition: left 1s;
+}
+.foot-tabs{
+ width: 250px;
+ text-align: center;
+}
+.foot-tabs-bgd{
+ margin: auto;
+ width: 160px;
+ height: 40px;
+ line-height: 40px;
+ color:#a2c8f9;
+ cursor: pointer;
+ background:url("../images/foot_btn.png") no-repeat center/100% 100%;
+}
+.foot-tabs-bgd.active{
+ width: 200px;
+ height: 45px;
+ line-height: 45px;
+ font-size: 16px;
+ color: #ffffff;
+ background:url("../images/foot_btn_active.png") no-repeat center/100% 100%;
+}
+
+/*劳务用工 公司级*/
+
+/*劳务人员概况*/
+.labour-survey_content_number{
+ color: #cbdaff;
+ font-size: 16px;
+ text-align: center;
+ padding-top: 25px;
+ padding-left: 0;
+}
+.labour-survey_content_number p{
+ padding: 15px;
+}
+/*工种占比*/
+.chart-work-gif{
+ width: 110px;
+ height: 110px;
+ position: absolute;
+ top: 85px;
+ left: 48px;
+ background: url("../images/run_circle.png") no-repeat center/100% 100%;
+}
+.labour-education{
+ display: flex;
+ justify-content: space-between;
+}
+.labour-education_bgd{
+ background: url("../images/education_bgd.png") no-repeat bottom/90px 60px;
+}
+/*预警分析*/
+.labour-warning-title{
+ padding: 15px;
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+}
+.labour-warning-img{
+ height: 60px;
+ width: 80px;
+ text-align: center;
+ background: url("../images/labour_warning_bgd.png") no-repeat center/100% 100%;
+}
+.labour-warning-bgd{
+ padding-top: 15px;
+}
+.labour-warning-bgd img{
+ animation: scale 1.5s infinite cubic-bezier(0, 0, .2, .2);
+}
+@keyframes scale {
+ 0% { transform: scale(1); opacity: 0.4 }
+ 25%{ transform: scale(1.25);opacity: 0.7 }
+ 50%{transform: scale(1.5); opacity: 1 }
+ 75%{ transform: scale(1.25);opacity: 0.7 }
+ 100% {transform: scale(1);opacity: 0.4}
+}
+.labour-warning-data{
+ text-align: center;
+ color: #cbdaff;
+ font-size: 16px;
+}
+.labour-warning-number{
+ padding-top: 10px;
+}
+.labour-warning-number span{
+ color: #f73647;
+ font-weight: bold;
+ font-size:25px;
+ font-style:italic
+}
+
+/*劳务 预警分析*/
+.labour-warning-table{
+ padding: 0 10px;
+}
+.labour-warning-table-color{
+ color: #f73647;
+ font-size: 16px;
+ font-weight: bold;
+}
+.labour-warning-table .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.labour-warning-table .el-table .cell{
+ padding: 0 5px;
+}
+.labour-warning-table .el-table{
+ background: none;
+}
+.labour-warning-table .el-table th, .el-table tr{
+ background: none;
+}
+.labour-warning-table .el-table th{
+ height: 35px;
+ text-align: center;
+ color: #cbdaff;
+ padding: 0;
+}
+.labour-warning-table .el-table td{
+ height: 50px;
+ text-align: center;
+ padding: 0;
+ color: #ffffff;
+}
+.labour-warning-table .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.labour-warning-table .el-table .el-table__row{
+ background: url("../images/text_red_bgd.png") no-repeat center/100% 35px;
+}
+.labour-warning-table .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+}
+.labour-warning-table .el-table::before{
+ background: none;
+}
+.return-company-btn{
+ position: absolute;
+ top: 30px;
+ left: 30px;
+ background: url("../images/return_btn_bgd.png") no-repeat center/100% 100%;
+ width: 120px;
+ height: 35px;
+ text-align: center;
+ line-height: 35px;
+ color: #5677a2;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ z-index: 99;
+}
+.return-company-btn:hover{
+ color: #cbdaff;
+ background: url("../images/dangerous_active.png") no-repeat center/100% 100%;
+}
+.return-company-btn:active{
+ color: #5677a2;
+}
+.return-company-btn span{
+ padding-left: 5px;
+}
+
+/*项目概况*/
+.project-number{
+ padding:25px 15px 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-evenly;
+ color: #a2c8f9;
+}
+.project-number span{
+ font-size: 20px;
+ font-weight: bold;
+ font-style: italic;
+ color: #63baff;
+}
+.chart-overview-gif{
+ width: 105px;
+ height: 105px;
+ position: absolute;
+ top: 63px;
+ left:61px;
+ background: url("../images/run_circle.png") no-repeat center/100% 100%;
+}
+
+.project-map-bottom{
+ height: 210px;
+ padding: 0 15px;
+}
+.project-analyse-title{
+ width: 50%;
+}
+.project-expect-max{
+ position: relative;
+ padding-top: 20px;
+}
+.project-expect-left{
+ position: absolute;
+ width: 30px;
+ left: 0;
+ height: 60px;
+ top: 75px;
+ background: url("../images/foot_left.png") no-repeat center/20px 40px;
+}
+.project-expect-right{
+ position: absolute;
+ width: 30px;
+ right: 0;
+ height: 60px;
+ top: 75px;
+ background: url("../images/foot_right.png") no-repeat center/20px 40px;
+}
+.project-expect-middle{
+ width: 810px;
+ margin:auto;
+ overflow: auto;
+ position: relative;
+ height: 150px;
+}
+.project-expect-big{
+ position: absolute;
+ top: 0;
+ transition: left 0.5s;
+}
+.project-expect-middle::-webkit-scrollbar{
+ width: 0px;
+ height: 0px;
+}
+.project-expect-min{
+ padding: 0 10px;
+ float: left;
+}
+.project-expect-list{
+ width: 250px;
+ height: 150px;
+ background: url("../images/expect_list.png") no-repeat center/100% 100%;
+}
+.project-expect-list.active{
+ background: url("../images/expect_list_active.png") no-repeat center/100% 100%;
+}
+
+.project-expect-con{
+ padding: 5px 15px;
+}
+.project-expect-title{
+ display: flex;
+ align-items: center;
+ border-bottom: 1px solid #1c4489;
+ height: 30px;
+}
+.project-expect-title-No{
+ width: 35px;
+ border-bottom: 1px solid #69b9fe;
+ text-align: center;
+ line-height: 30px;
+}
+.project-expect-title-text{
+ color: #68afef;
+ line-height: 30px;
+ height: 30px;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+}
+.project-expect-info{
+ padding: 8px 0;
+ font-size: 12px;
+ color: #c2d5f6;
+ line-height: 20px;
+}
+.project-expect-details{
+ max-height: 40px;
+ overflow: hidden;
+}
+.project-expect-time{
+ color: #6bb8ff;
+}
+.project-expect-state{
+ width: 85px;
+ height: 23px;
+ background: url("../images/expect_list_zc.png") no-repeat center/100% 100%;
+ color: #76fefe;
+ text-align: center;
+ line-height: 23px;
+ font-size: 12px;
+}
+
+.project-expect-state.state-2{
+ color: #05fb05;
+}
+
+.project-expect-list.active .project-expect-title{
+ border-bottom: 1px solid #351e2e;
+}
+.project-expect-list.active .project-expect-title-No{
+ border-bottom: 1px solid #cd4456;
+}
+.project-expect-list.active .project-expect-title-text{
+ color: #ffffff;
+}
+.project-expect-list.active .project-expect-time{
+ color: #cd4456
+}
+.project-expect-list.active .project-expect-state{
+ background: url("../images/expect_list_yc.png") no-repeat center/100% 100%;
+ color: #ffffff;
+}
+
+/*项目概况 项目级*/
+
+/*项目概况*/
+.company-name-max{
+ padding:5px 10px;
+ position: relative;
+}
+.company-project-introduction{
+ position: absolute;
+ display: flex;
+ align-items: center;
+ right: 10px;
+ top: -22px;
+ cursor: pointer;
+ font-size: 14px;
+ color: #c2d5f6;
+}
+.company-project-introduction img{
+ width: 8px;
+ margin-left: 10px;
+}
+.company-name{
+ display: flex;
+ padding:12px 5px;
+}
+.company-img{
+ padding-top: 5px;
+}
+.company-img img{
+ height: 35px;
+ width: 35px;
+}
+.company-info{
+ width: calc(100% - 45px);
+ padding-left: 10px;
+}
+.company-title{
+ color: #c2d5f6;
+ font-size: 14px;
+}
+.company-text{
+ color: #50a2eb;
+ padding: 5px 0;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ font-size: 14px;
+}
+.company-person-info{
+ font-size: 14px;
+ color: #f79d1a;
+}
+
+.popup-project-introduction-max{
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background: rgba(0,0,0,0.5);
+ z-index: 10;
+}
+.popup-project-introduction-min{
+ width: 1000px;
+ height: 600px;
+ margin: auto;
+ background: url("../images/map_sjk_popup_bgd.png") no-repeat center/100% 100%;
+ transform: translateY(30%);
+}
+.popup-project-introduction-con{
+ padding: 20px 10px;
+}
+.popup-project-introduction-title{
+ height: 40px;
+ background: url("../images/map_popup_title.png") no-repeat left/100% 100%;
+ font-size: 18px;
+ display: flex;
+ align-items: center;
+ padding: 0 15px;
+ justify-content: space-between;
+}
+.popup-project-introduction-close{
+ font-size: 25px;
+ width: 30px;
+ height: 30px;
+ text-align: center;
+ line-height: 28px;
+ border-radius: 50%;
+ cursor: pointer;
+}
+.popup-project-introduction-close:hover{
+ background: #37536f;
+}
+.popup-project-introduction-details{
+ padding: 18px;
+}
+.popup-project-introduction-info{
+ height: 500px;
+ overflow: auto;
+}
+.popup-project-introduction-info::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+}
+.popup-project-introduction-info::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.popup-project-introduction-info::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.popup-project-introduction-info p{
+ padding: 8px 5px;
+ line-height: 30px;
+ text-indent: 2em;
+}
+
+.modify-project-amount{
+ display: flex;
+ justify-content: space-between;
+}
+.modify-btn{
+ width: 50px;
+ text-align: center;
+ padding-top: 45px;
+}
+.modify-btn img{
+ cursor: pointer;
+}
+.modify-content{
+ width: 840px;
+ overflow: hidden;
+}
+.modify-content-overflow{
+ display: flex;
+ align-items: center;
+}
+
+
+
+
+.project-introduce{
+ padding: 0 15px;
+}
+.project-introduce-text{
+ padding-left: 20px;
+ color: #c2d5f6;
+ background: url(../images/check_icon.png) no-repeat left/8px 15px;
+}
+.project-introduce-con{
+ height:80px;
+ overflow: hidden;
+ margin-top: 10px;
+ color: #c2d5f6;
+ position: relative;
+}
+.project-introduce-con p{
+ text-indent: 2em;
+ padding: 5px 0;
+ line-height: 25px;
+}
+.project-introduce-con::-webkit-scrollbar{
+ width: 0px;
+ height: 0px;
+}
+.project-introduce-absolute{
+ position: absolute;
+ width: 100%;
+ top: 0;
+ left: 0;
+ transition: top 0.1s;
+}
+.project-amount{
+ padding: 10px;
+}
+.project-amount-bgd{
+ height: 110px;
+ width: 260px;
+ background: url("../images/project_amount_bgd.png") no-repeat center/100% 100%;
+}
+.project-amount-con{
+ padding: 20px 30px;
+ color: #c2d5f6;
+}
+.project-amount-con p{
+ padding-bottom: 15px;
+ font-size: 16px;
+}
+.project-amount-con span{
+ font-size: 25px;
+ color: #64ccff;
+ font-weight: bold;
+ font-style: italic;
+}
+.aerial-view-max{
+ padding: 10px;
+}
+.aerial-view-min{
+ height: 510px;
+}
+.aerial-view-min img{
+ width: 100%;
+ height: 100%;
+}
+
+/*重大节点预期预警*/
+.dangerous-max{
+ padding:10px 30px;
+}
+.dangerous-tab{
+ display: flex;
+ justify-content: right;
+ align-items: center;
+}
+.dangerous-tab div{
+ padding: 8px 20px;
+ background: url("../images/dangerous.png") no-repeat center/100% 100%;
+ margin-left: 15px;
+ cursor: pointer;
+ color: #5388b0;
+}
+.dangerous-tab .active{
+ color: #ffffff;
+ background: url("../images/dangerous_active.png") no-repeat center/100% 100%;
+}
+.dangerous-timeline-max{
+ width: 850px;
+ height: 230px;
+ overflow-y: hidden;
+ overflow-x: auto;
+ position: relative;
+}
+.dangerous-timeline-max::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+}
+.dangerous-timeline-max::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.dangerous-timeline-max::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.dangerous-timeline-min{
+ z-index: 2;
+ position: absolute;
+}
+.dangerous-timeline-con{
+ width: 200px;
+ padding-top: 20px;
+ float: left;
+}
+.strip-max{
+ height: 6px;
+ background: #808992;
+ position: absolute;
+ top: 88px;
+ z-index: 1;
+}
+.strip-min{
+ height: 6px;
+ background: #54acf4;
+}
+.dangerous-text{
+ height: 50px;
+ padding: 0 20px;
+ text-align: center;
+ font-size: 16px;
+ line-height: 25px;
+ overflow: hidden;
+}
+.dangerous-dot{
+ height: 35px;
+ position: relative;
+}
+.dangerous-dot-item{
+ width: 8px;
+ height: 8px;
+ border: 3px solid #ffffff;
+ border-radius: 50%;
+ margin: auto;
+ position: relative;
+ top: 14px;
+}
+.dangerous-time-max{
+ height: 100px;
+ padding: 5px 30px;
+ color: #b9cbe3;
+ position: relative;
+}
+.dangerous-time-min{
+ padding: 5px 0;
+}
+.dangerous-time-nav{
+ margin-top: 8px;
+}
+.dangerous-time-nav.active{
+ color: #eeeeee;
+ background: url("../images/expect_list_yc.png") no-repeat center/100% 100%;
+}
+
+/*智慧党建*/
+.carousel-padding{
+ padding: 10px;
+}
+.carousel-max{
+ position: relative;
+ overflow-x: hidden;
+ overflow-y: hidden;
+ margin: auto;
+}
+.carousel-min{
+ height: 100%;
+ position: absolute;
+ transition: left 0.5s
+}
+.carousel-for{
+ float: left;
+ width: 100%;
+ height: 100%;
+}
+.carousel-for > img{
+ width: 100%;
+ height: 100%;
+}
+.carousel-text{
+ height: 35px;
+ line-height: 35px;
+ text-align: center;
+ width: 100%;
+ position: absolute;
+ bottom: 0;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.5);
+}
+
+.carousel-left {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ user-select: none;
+ cursor: pointer;
+ transition: left 0.1s linear;
+}
+.carousel-right {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ user-select: none;
+ cursor: pointer;
+ transition: right 0.1s linear;
+}
+
+/*党建视频*/
+.carousel-padding video{
+ width: 100%;
+ height: 520px;
+}
+.video-img{
+ width: 100%;
+ height: 520px;
+}
+.video-nav{
+ display: flex;
+ padding:15px 10px;
+}
+.video-nav-btn{
+ background: #420200;
+ padding: 10px 15px;
+ color: #e67b71;
+ margin-right: 15px;
+ cursor: pointer;
+ border-radius: 5px;
+}
+.video-nav-btn.active{
+ background: #b34039;
+ color: #ffffff;
+}
+.video-nav-btn:hover{
+ background: #972321;
+ color: #f1bdb9;
+}
+.video-nav-btn.active:hover{
+ background: #b34039;
+ color: #ffffff;
+}
+
+/*媒体聚焦*/
+.party-list{
+ padding:20px 15px;
+}
+.party-list .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.party-list .el-table .cell{
+ padding: 0 5px;
+}
+.party-list .el-table{
+ background: none;
+}
+.party-list .el-table th, .el-table tr{
+ background: none;
+}
+.party-list .el-table th{
+ height: 50px;
+ color: #ffffff;
+ padding: 0 10px;
+}
+.party-list .el-table td{
+ height: 50px;
+ color: #ffffff;
+ padding: 0;
+}
+.party-list .el-table td .cell{
+ height: 35px;
+ line-height:35px;
+ padding:0 10px;
+ background: rgba(66,0 ,0 ,0.7);
+ letter-spacing: 1px;
+
+}
+.party-list .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.party-list .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+}
+.party-list .el-table::before{
+ background: none;
+}
+.party-list-color{
+ color:#edaa46;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+}
+
+/*安全管理*/
+/*当日预警信息*/
+.safe-day-table .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.safe-day-table .el-table .cell{
+ padding: 0 5px;
+}
+.safe-day-table .el-table{
+ background: none;
+}
+.safe-day-table .el-table th, .el-table tr{
+ background: none;
+}
+.safe-day-table .el-table th{
+ height: 50px;
+ text-align: center;
+ color: #1ce7ff;
+}
+.safe-day-table .el-table td{
+ height: 55px;
+ text-align: center;
+ padding: 0;
+}
+.safe-day-table .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.safe-day-table .el-table .el-table__row{
+ background: url("../images/text_red_safe_bgd.png") no-repeat center/100% 40px;
+}
+.safe-day-table .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+ color: #ffffff;
+}
+.safe-day-table .el-table::before{
+ background: none;
+}
+
+.map-foot-max{
+ height: 150px;
+ display: flex;
+ align-items: center;
+ justify-content: space-evenly;
+}
+.map-foot-min{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.map-foot-con{
+ padding-left: 10px;
+ color:#b9cbe3;
+}
+.map-foot-con p{
+ padding-bottom: 10px;
+}
+.map-foot-num span{
+ font-size: 25px;
+ font-weight: bold;
+ font-style: italic;
+}
+.map-icon-color-1{
+ color: #71b3f0;
+}
+.map-icon-color-2{
+ color: #c1b762 ;
+}
+.map-icon-color-3{
+ color: #7874e3;
+}
+.map-foot-min img{
+ width: 84px;
+ height: 66px;
+ animation: safe 3s infinite;
+ -webkit-animation: safe 3s infinite;
+}
+@keyframes safe {
+ 0% {
+ transform: translate(0px, -10px);
+ }
+ 50% {
+ transform: translate(0px, 10px); /* 可配置跳动方向 */
+ }
+ 100% {
+ transform: translate(0px, -10px);
+ }
+}
+
+/*安全管理 项目级 塔机*/
+
+/*监控列表*/
+.list-max{
+ padding: 10px 0;
+}
+.list-min{
+ height: 630px;
+ overflow: auto;
+ position: relative;
+}
+
+.list-min::-webkit-scrollbar {
+ width: 10px;
+ height: 1px;
+}
+.list-min::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.list-min::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.list-for{
+ padding: 15px 0;
+ border-bottom: 1px dashed #3da2ff;
+}
+.list-con{
+ padding: 15px;
+ cursor: pointer;
+}
+.list-con.active{
+ background: url("../images/list_bgd.png") no-repeat center/100% 100%;
+}
+.list-top{
+ display: flex;
+ align-items: center;
+}
+.list-img{
+ height: 70px;
+ width: 70px;
+ text-align: center;
+ line-height: 70px;
+ background: url("../images/list_img_icon.png") no-repeat bottom/100% 45px;
+}
+.list-img img{
+ animation: listImg 3s infinite;
+ -webkit-animation: listImg 3s infinite;
+}
+@keyframes listImg {
+ 0% {
+ transform: translate(0px, 0px);
+ }
+ 50% {
+ transform: translate(0px, 15px); /* 可配置跳动方向 */
+ }
+ 100% {
+ transform: translate(0px, 0px);
+ }
+}
+.list-info{
+ padding-left: 15px;
+}
+.list-info-name{
+ padding: 7px 0 ;
+ font-size: 16px;
+}
+.list-info-name span{
+ color: #8accff;
+}
+.list-info-name .list-info-state{
+ color: #f3ba4f;
+}
+.list-info-name .list-info-state.active{
+ color: #61f1be;
+}
+.list-bottom{
+ padding: 10px 0;
+ color: #a5d3eb;
+}
+.list-details{
+ padding: 8px 0;
+}
+.list-time{
+ color: #429fff;
+}
+
+.sf-big-title{
+ padding: 15px 20px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.monitor-max{
+ height: 240px;
+ position: relative;
+}
+.sf-speed-data-chart{
+ width: 50px;
+ height: 250px;
+ margin: auto;
+}
+.sf-speed-data-chart div{
+ width: 100%;
+ height: 10px;
+ margin-top: 14px;
+ background: #0b204f;
+ border-radius: 2px;
+}
+.sf-speed-data-chart .activation{
+ background: #2e8cfe;
+}
+.sf-speed-data-chart .warning{
+ background: #fead38;
+}
+.sf-speed-data-chart .police{
+ background: #ff4e4e;
+}
+.monitor-left{
+ position: absolute;
+ height: 240px;
+ width:70px;
+ top: -5px;
+ left: 5px;
+ color: #a1d4e7;
+}
+.monitor-right{
+ position: absolute;
+ height: 250px;
+ top: -10px;
+ left: 140px;
+
+}
+.monitor-police{
+ position: absolute;
+ top: 0;
+ width: 70px;
+ text-align: right;
+}
+.monitor-warning{
+ position: absolute;
+ top: 50px;
+ width: 70px;
+ text-align: right;
+}
+.monitor-zero{
+ position: absolute;
+ bottom: 0;
+ width: 70px;
+ text-align: right;
+}
+.monitor-data{
+ color: #88c9ff;
+ width: 70px;
+ position: absolute;
+ top: 100px;
+ text-align: center;
+}
+.warning-data{
+ color: #fead38;
+}
+.police-data{
+ color: #ff4e4e;
+}
+
+.monitor-data span{
+ font-weight: bold;
+ font-size: 18px;
+}
+
+.safe-height{
+ height:660px;
+}
+.safe-small{
+ height: 120px;
+}
+.safe-small-title{
+ background: url("../images/small_title.png") no-repeat center/100% 100%;
+ padding: 5px 0 5px 20px;
+}
+.safe-small-content{
+ display: flex;
+ align-items: center;
+ justify-content:space-around;
+}
+.safe-small-details{
+ padding: 10px;
+ font-size: 16px;
+}
+.safe-small-details p{
+ color: #429fff;
+ padding: 10px 0 15px;
+}
+.safe-small-details span{
+ color: #8bcdff;
+ font-size: 20px;
+ font-weight: bold;
+}
+.safe-afoot-content{
+ padding:30px 20px;
+}
+.safe-afoot-overflow{
+ height: 200px;
+}
+.safe-afoot-machinery-nam{
+ padding:15px 0 20px;
+}
+/*力矩曲线*/
+.safe-moment{
+ padding: 15px 0;
+}
+
+
+.safe-tower-crane-max{
+ padding: 10px;
+}
+.safe-tower-crane-min{
+
+}
+.safe-tower-left{
+ height: 500px;
+ cursor: pointer;
+ background:url("../images/safe_tower_left.png") no-repeat center/100% 70%;
+}
+.safe-tower-left:hover{
+ background:url("../images/safe_tower_left_a.png") no-repeat center/100% 80%;
+}
+.safe-tower-left:active{
+ background:url("../images/safe_tower_left_a.png") no-repeat center/100% 75%;
+}
+.safe-tower-right{
+ height: 500px;
+ cursor: pointer;
+ background:url("../images/safe_tower_right.png") no-repeat center/100% 70%;
+}
+.safe-tower-right:hover{
+ background:url("../images/safe_tower_right_a.png") no-repeat center/100% 80%;
+}
+.safe-tower-right:active{
+ background:url("../images/safe_tower_right_a.png") no-repeat center/100% 75%;
+}
+.safe-tower-content-max{
+ position: relative;
+ width: 770px;
+ height: 500px;
+ margin: auto;
+ overflow: hidden;
+}
+.safe-tower-content{
+ position: absolute;
+ width: 100%;
+ transition: left 0.5s
+}
+.safe-tower-content-title{
+ text-align: center;
+ padding-top: 20px;
+}
+.safe-tower-content-title span{
+ padding: 10px 35px;
+ font-size: 16px;
+ background: url("../images/safe_tower_name_bgd.png") no-repeat center/100% 100%;
+}
+.safe-tower-content-data{
+ padding: 60px 0;
+}
+.safe-tower-content-data-list{
+ color: #b9cbe3;
+ font-size: 16px;
+ padding: 17px 5px;
+}
+.safe-tower-content-data-list p{
+ padding-bottom: 15px;
+}
+.safe-tower-content-data-list span{
+ color: #429fff;
+ font-weight: bold;
+ font-size: 22px;
+}
+.safe-tower-content-data-list-time span{
+ font-size: 14px;
+}
+.safe-tower-icon{
+ width: 577px;
+ position: relative;
+}
+
+.sf-equipment-overview-bgd{
+ height: 320px;
+ width: 500px;
+ background: url("../images/tower_crane.png") no-repeat center/100% 100%;
+ position: relative;
+ margin: auto;
+}
+.sf-legend{
+ position: absolute;
+ padding: 10px;
+ top: -5px;
+ right: 0;
+ display: flex;
+}
+.sf-legend div{
+ padding:5px 10px;
+}
+.sf-slider-track{
+ position: absolute;
+ z-index: 9;
+}
+.sf-slider-track-min{
+ position: absolute;
+ width: 16px;
+}
+.sf-slider{
+ width: 16px;
+ height: 8px;
+ background:#f0b334;
+ position: absolute;
+}
+.sf-towrope{
+ width: 10px;
+ height:200px;
+ border-left: 2px solid #f0b334;
+ border-right: 2px solid #f0b334;
+ margin: auto;
+}
+.sf-hook{
+ width: 16px;
+ height: 30px;
+ background: url("../images/drag_hook.png") no-repeat center/100% 100%;
+}
+.circular{
+ position: absolute;
+ width: 120px;
+ height: 120px;
+ bottom: 15px;
+ right: 15px;
+ background: url("../images/circular.png") no-repeat center/100% 100%;
+}
+.needle{
+ width: 100%;
+ height: 100%;
+ background: url("../images/needle.png") no-repeat center/100% 100%;
+ transform:rotate(0deg);
+}
+.dot-track{
+ width: 35px;
+ height: 12px;
+ right: 12px;
+ position: absolute;
+ top: 54px;
+}
+.dot{
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ background: #f0b334;
+ position: absolute;
+}
+
+
+
+/*深基坑*/
+.sjk-info{
+ padding:20px 10px;
+ font-size: 14px;
+}
+.company-sjk-name{
+ padding: 20px 0;
+}
+.company-sjk-name img{
+ width: 40px;
+ height: 40px;
+}
+.company-sjk-text{
+ color: #50a2eb;
+}
+.sjk-icon-max{
+ padding: 5px 0 5px;
+ position: relative;
+}
+.sjk-img-min{
+ text-align: center;
+ height: 600px;
+ position: relative;
+}
+.sjk-img img{
+
+}
+.sjk-icon-legend{
+ position: absolute;
+ height: 50px;
+ background: rgba(0,0,0,0.7);
+ width: 99%;
+ bottom: 0;
+ left: 0.5%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.sjk-icon-legend-color{
+ display: flex;
+ align-items: center;
+}
+.sjk-icon-legend-color-list{
+ display: flex;
+ align-items: center;
+ padding: 0 15px;
+ cursor: pointer;
+}
+.sjk-icon-legend-color-list-box{
+ width: 15px;
+ height: 15px;
+ margin-right: 10px;
+}
+.sjk-icon-legend-color-list-text{
+ font-size: 16px;
+}
+.box-green{
+ background: #7dc57b;
+}
+.box-red{
+ background: #d44645;
+}
+.box-orange{
+ background: #eeb532;
+}
+.box-blue{
+ background: #1890ff;
+}
+.box-grey{
+ background: #9da4b4;
+}
+.sjk-icon-legend-right{
+ display: flex;
+ align-items: center;
+ justify-content: right;
+ font-size: 16px;
+}
+.sjk-icon-legend-right img{
+ width: 25px;
+ height: 25px;
+ margin-right: 5px;
+}
+.sjk-icon-legend-right-icon{
+ display: flex;
+ align-items: center;
+ padding:0 15px;
+ cursor: pointer;
+ color: #63c8ff;
+}
+.sjk-legend-filter{
+ filter: grayscale(100%);
+}
+.sjk-icon-spot img{
+ position: absolute;
+ width: 30px;
+ height: 36px;
+}
+.sjk-icon-spot img:hover{
+ width: 40px;
+ height: 48px;
+ z-index: 1;
+}
+
+/*点位图弹窗*/
+.sjk-popup{
+ width: 400px;
+ background: url('../images/map_sjk_popup_bgd.png') no-repeat center/100% 100%;font-size: 14px;
+ position: fixed;
+ z-index: 100;
+}
+.sjk-popup-content{
+ padding: 8px 3px
+}
+.sjk-popup-title{
+ padding: 8px;
+ color: #ffffff;
+ font-size: 16px;
+ background: url('../images/map_popup_title.png') no-repeat left/100% 100%;
+}
+.sjk-popup-time{
+ padding: 10px;
+ color: #3da2ff;
+}
+.sjk-popup-table{
+ text-align: center;
+ padding: 0 8px;
+}
+.sjk-popup-table table{
+ width: 100%;
+}
+.sjk-popup-table table th{
+ background: #193d7d;
+ padding: 5px 0;
+}
+.sjk-popup-table table td{
+ padding: 10px 0;
+ color: #c8dbfc;
+ font-size: 16px;
+}
+.sjk-popup-table table td:nth-child(2){
+ color: #4fb5fd;
+}
+.sjk-popup-table table td:nth-child(3){
+ color: #ff7a00 ;
+}
+.sjk-popup-table table td:nth-child(4){
+ color: #fb3b48;
+}
+.sjk-off-line{
+ height: 150px;
+ line-height: 150px;
+ text-align: center;
+ color: #999999;
+}
+
+
+
+
+
+
+
+
+/*近15天变化趋势*/
+.sjk-chart-line{
+ position: relative;
+}
+.sjk-chart-line-title{
+ display: flex;
+ padding: 15px 20px;
+}
+.sjk-chart-line-title div{
+ padding: 5px 20px;
+ cursor: pointer;
+ margin-right: 20px;
+ background: url("../images/dangerous.png") no-repeat center/100% 100%;
+ color: #5388b0;
+ font-size: 16px;
+}
+.sjk-chart-line-title .active{
+ color: #ffffff;
+ background: url(../images/dangerous_active.png) no-repeat center/100% 100%;
+}
+.sjk-afoot-overflow{
+ height: 325px;
+}
+.sjk-chart-line-legend{
+ width: 80%;
+ position: absolute;
+ top: 5px;
+ right: 0;
+ text-align: right;
+ z-index: 9999;
+}
+.sjk-chart-line-legend button{
+ padding: 5px 15px;
+ background: none;
+ cursor: pointer;
+ border: 0;
+ color: #50a1db;
+ margin: 5px;
+}
+.sjk-chart-line-legend button.active{
+ color: #ffffff;
+}
+.sjk-chart-line-legend label{
+ padding:1px 8px;
+ border-radius: 50%;
+ margin-right: 10px;
+}
+.trend-chart-max{
+ padding: 0 10px;
+}
+
+/*环境管理*/
+.hj-afoot-overflow{
+ height: 590px;
+}
+.equipment-list-max{
+ padding: 20px;
+}
+.equipment-list-min{
+ padding: 25px 0 25px 20px;
+ display: flex;
+ align-items: center;
+}
+.equipment-list-gif{
+ width: 70px;
+ height: 70px;
+ background: url(../images/hj_gif.gif) no-repeat center/100% 100%;
+ text-align: center;
+}
+.equipment-list-gif img{
+ width: 40px;
+ height: 40px;
+ transform: translateY(35%);
+
+}
+.equipment-list-data{
+ padding-left: 15px;
+ color: #c0dafb;
+ font-size: 16px;
+}
+.equipment-list-data div{
+ padding-top: 10px;
+}
+.equipment-list-data span{
+ font-size: 28px;
+ font-weight: bold;
+ padding-right: 5px;
+ color: #82c9ff;
+}
+
+/*环境管理 项目页面*/
+.current-value-max{
+ padding: 20px;
+}
+.current-value-min{
+ padding: 20px;
+}
+.current-value-con{
+ padding: 30px 40px;
+ background: url("../images/current_value_bgd.png") no-repeat center/100% 100%;
+ display: flex;
+ align-items: center;
+}
+.current-value-img{
+ height: 90px;
+ width: 90px;
+ background: url("../images/education_bgd.png") no-repeat center/100% 100%;
+ text-align: center;
+}
+.current-value-img img{
+ width: 50px;
+ height: 50px;
+ -webkit-animation: icon 3s infinite;
+
+}
+.current-value-data{
+ color: #c0dafb;
+ font-size: 18px;
+ padding-left: 40px;
+}
+.current-value-data p{
+ padding-top: 15px;
+ font-size: 28px;
+ font-weight: bold;
+ color: #ffffff;
+}
+.hj-moment-max{
+ padding: 15px;
+}
+.hj-moment-max table{
+ height: 310px;
+}
+.hj-moment-max td{
+ padding: 0 5px;
+ font-size: 16px;
+ color: #aaaaaa;
+}
+.hj-moment-max td:first-child{
+ width: 24%;
+ text-align: right;
+ color: #c0dafb;
+}
+.hj-moment-choice{
+ display: flex;
+ align-items: center;
+}
+.hj-moment-select{
+ width: 70%;
+}
+.hj-moment-state{
+ padding: 0 10px;
+}
+.state-tag{
+ height: 33px;
+ width: 60px;
+ line-height: 33px;
+ text-align: center;
+}
+.state-zx{
+ color: #3eb11e;
+ background: url("../images/state_bgd.png") no-repeat center/100% 100%;
+}
+.state-lx{
+ color: #eeb532;
+ background: url("../images/state_lx_bgd.png") no-repeat center/100% 100%;
+}
+
+.hj-moment-blue{
+ color: #559adf;
+}
+.hj-moment-green{
+ color: #41b026;
+}
+.hj-moment-orange{
+ color: #eeb532;
+}
+
+
+
+
+.select-max{
+ position: relative;
+}
+.select-input{
+ height: 35px;
+ padding-left: 10px;
+ padding-right: 25px;
+ background: url("../images/select_bgd.png") no-repeat center/100% 100%;
+}
+.select-input input{
+ width: 100%;
+ height: 35px;
+ background: 0;
+ border: 0;
+ outline: 0;
+ color: #1ce7ff;
+ cursor: pointer;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ font-size: 16px;
+}
+.select-input input::-webkit-input-placeholder{
+ color: #6ca5b1;
+}
+.select-option{
+ list-style: none;
+ position: absolute;
+}
+.select-option{
+ list-style: none;
+ width: 100%;
+ position: absolute;
+ max-height: 250px;
+ border: 1px solid #05556b;
+ background: #00092a;
+ overflow: auto;
+ color: #02a6ff;
+ border-radius: 3px;
+ z-index: 9999;
+}
+.select-option::-webkit-scrollbar {
+ width: 10px;
+ height: 1px;
+}
+.select-option::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.select-option::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.select-option li{
+ padding:12px 10px;
+ cursor: pointer;
+}
+.select-option li:hover{
+ background: #031348;
+ color: #1ce7ff;
+}
+
+.el-carousel__indicators--horizontal{
+ top: 0;
+}
+.el-carousel__button{
+ width: 15px;
+}
+
+/*视频管理*/
+.video-list-max{
+ padding: 10px;
+}
+.video-list-min{
+ height: 430px;
+ overflow: auto;
+ padding-right: 5px;
+}
+.video-list-min::-webkit-scrollbar {
+ width: 5px;
+ height: 1px;
+}
+.video-list-min::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.video-list-min::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.video-list-for{
+ padding: 5px 0;
+}
+.video-list-title{
+ height: 40px;
+ background: url("../images/video_list_title.png") no-repeat center/100% 100%;
+ line-height: 40px;
+ padding:0 10px;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ cursor: pointer;
+}
+.video-list-ul{
+ list-style: none;
+ padding: 5px 0;
+}
+.video-list-ul li{
+ padding: 10px 0;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ position: relative;
+ cursor: pointer;
+ color: #c0dafb;
+}
+.video-list-ul .active{
+ color: #3da2ff;
+}
+.video-list-ul li:hover{
+ color: #67afee ;
+}
+.video-list-ul .active:hover{
+ color: #3da2ff;
+}
+.video-list-ul li button{
+ padding: 3px;
+ position: relative;
+ top: -5px;
+}
+.video-state-zx{
+ background: #119f1b;
+}
+.video-state-lx{
+ background: #e70b0b;
+}
+.video-enlarge-max{
+ padding: 15px;
+}
+.video-enlarge-title{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 30px;
+ padding:0 10px 0 20px;
+ line-height: 30px;
+ background: url("../images/video_title.png") no-repeat left/180px 22px;
+}
+.video-enlarge-content{
+ margin-top: 15px;
+ background: rgba(0,0,0,0.5);
+}
+.video-enlarge-content video{
+ width: 100%;
+ height: 890px;
+}
+.video-enlarge-content img{
+ width: 100%;
+ height: 890px;
+}
+.video-enlarge-title-right{
+ display: flex;
+ align-items: center;
+}
+.video-enlarge-title-right{
+ display: flex;
+ justify-content: right;
+ align-items: center;
+}
+.video-enlarge-title-right div{
+ padding: 2px 15px;
+ background: url("../images/dangerous.png") no-repeat center/100% 100%;
+ margin-left: 15px;
+ cursor: pointer;
+ color: #5388b0;
+}
+.video-enlarge-title-right .active{
+ color: #ffffff;
+ background: url("../images/dangerous_active.png") no-repeat center/100% 100%;
+}
+.video-vehicle-table{
+ padding: 15px 0;
+}
+.video-vehicle-table .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.video-vehicle-table .el-table .cell{
+ padding: 0 5px;
+}
+.video-vehicle-table .el-table{
+ background: none;
+}
+.video-vehicle-table .el-table th, .el-table tr{
+ background: none;
+}
+.video-vehicle-table .el-table th{
+ color: #67baff;
+ padding:10px 25px ;
+}
+.video-vehicle-table .el-table td{
+ padding:10px 15px;
+ color: #a2c8f9;
+}
+.video-vehicle-table .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.video-vehicle-table .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+}
+.video-vehicle-table .el-table::before{
+ background: none;
+}
+
+.vehicle-number{
+ padding: 8px 15px;
+ background: url("../images/dangerous.png") no-repeat center/100% 100%;
+ width: 90%;
+ margin: auto;
+}
+.vehicle-jin-img-max{
+ padding: 10px;
+}
+.vehicle-jin-img-bgd{
+ width: 180px;
+ height: 180px;
+ background: #062247 url("../images/no_picture.png") no-repeat center/80px 80px;
+ border-radius: 5px;
+}
+.vehicle-jin-img-bgd img{
+ width: 100%;
+ height: 100%;
+}
+.vehicle-time{
+ height: 40px;
+ text-align: center;
+ line-height: 40px;
+}
+.video-vehicle-census{
+ height: 60px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.video-vehicle-census div{
+ padding: 0 20px;
+ color: #c0dafb;
+}
+.video-vehicle-census div span{
+ font-size: 25px;
+ color: #67baff;
+ padding: 0 10px;
+}
+
+/*劳务用工人员定位*/
+.baidu-map{
+ width: 1920px;
+ height: 1080px;
+ background: #3da2ff;
+ position: fixed;
+}
+.people-head{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1920px;
+ z-index: 111;
+}
+.people-left{
+ position: absolute;
+ top: 90px;
+ left: 20px;
+ width: 400px;
+ background: rgba(0,0,0,0.5);
+ z-index: 10;
+ padding: 10px;
+
+}
+.people-right{
+ position: absolute;
+ top: 90px;
+ right: 20px;
+ width: 400px;
+ background: rgba(0,0,0,0.5);
+ z-index: 10;
+ padding: 10px;
+}
+.people-search{
+ padding: 0 15px;
+ height: 45px;
+ background: url("../images/input_search.png") no-repeat center/100% 100%;
+}
+.people-search input{
+ border: 0;
+ outline: 0;
+ background: url("../images/search.png") no-repeat right/20px 20px;
+ width: 100%;
+ height: 100%;
+ color: #3da2ff;
+ font-size: 16px;
+}
+.people-search input::-webkit-input-placeholder{
+ color: #446079;
+}
+.people-list-min{
+ height: 660px;
+}
+.people-list-con{
+ cursor: pointer;
+ padding: 15px 5px;
+}
+.people-list-con.active{
+ background: url("../images/list_bgd.png") no-repeat center/100% 100%;
+}
+.people-list-img{
+ height: 70px;
+ width: 70px;
+ text-align: center;
+ background: url("../images/warning_renyuan.png") no-repeat bottom/100% 100%;
+}
+
+.people-list-img img{
+ width: 100% ;
+ height: 100%;
+}
+.people-list-top{
+ display: flex;
+ align-items: center;
+ padding-bottom: 15px;
+ position: relative;
+ background: url("../images/Line.png") no-repeat bottom/100% 2px;
+}
+.people-list-state{
+ padding: 0 5px;
+ border-radius: 10px 0 10px 0;
+ background: #3eb11e;
+ font-size: 14px;
+ color: #ffffff;
+ position: absolute;
+ right: 15px;
+}
+.baidu-people-list-state{
+ right: 5px;
+ font-size: 12px;
+}
+.people-list-state.active{
+ background: #888888;
+}
+.people-info-name{
+ padding: 7px 0 ;
+ font-size: 16px;
+ display: flex;
+ align-items: center;
+}
+.list-info .people-info-work{
+ color: #3da2ff;
+ font-size: 14px;
+}
+.people-info-name{
+ padding: 7px 0 ;
+ font-size: 16px;
+}
+.people-info-action{
+ color: #3eb11e;
+}
+.people-info-action.active{
+ color: #d7220b;
+}
+.people-battery-max{
+ display: flex;
+ align-items: center;
+}
+.people-battery-bgd{
+ width: 30px;
+ height: 15px;
+ background: url("../images/battery.png") no-repeat center/100% 100%;
+}
+.people-battery-bgd.active{
+ background: url("../images/battery_red.png") no-repeat center/100% 100%;
+}
+.people-battery-padding{
+ width: 24px;
+ height: 11px;
+ padding: 2px 4px 2px 2px;
+}
+.people-battery{
+ background: #3eb11e;
+ height: 100%;
+}
+.people-battery.active{
+ background: #d7220b;
+}
+.people-battery-value{
+ padding:0 10px;
+ color: #3eb11e;
+}
+.people-battery-value.active{
+ color:#d7220b;
+}
+.people-info-address{
+ color: #429fff;
+ background: url("../images/address_dw.png") no-repeat left/14px 16px;
+ padding-left: 18px;
+}
+
+.people-company-btn{
+ position: absolute;
+ top: 100px;
+ left: 470px;
+ background: url("../images/return_btn_bgd.png") no-repeat center/100% 100%;
+ width: 120px;
+ height: 35px;
+ text-align: center;
+ line-height: 35px;
+ color: #5677a2;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ z-index: 99;
+}
+.people-company-btn:hover{
+ color: #cbdaff;
+ background: url("../images/dangerous_active.png") no-repeat center/100% 100%;
+}
+.people-company-btn:active{
+ color: #5677a2;
+}
+.people-company-btn span{
+ padding-left: 5px;
+}
+
+
+/*人员定位弹窗*/
+.popup-people-max{
+ width: 280px;
+ height: 300px;
+ background: url('../images/map_popup_bgd.png') no-repeat center/100% 100%;
+ font-size: 14px;
+}
+.popup-people-max.active{
+ background: url('../images/map_popup_red_bgd.png') no-repeat center/100% 100%;
+}
+.popup-people-min{
+ padding:20px 15px;
+}
+.popup-list-details span{
+ color: #027ae7;
+}
+.popup-list-details{
+ padding: 5px 0;
+ font-size: 14px;
+}
+.popup-people-info-address{
+ background: rgba(2,122,231,0.2);
+ padding: 10px;
+ font-size: 14px;
+}
+.popup-people-info-address.active{
+ background: rgba(243, 3, 3, 0.4);
+}
+.popup-people-info-address.active .people-info-address{
+ color: #ffffff;
+ background: url("../images/address_dw_red.png") no-repeat left/14px 16px;
+}
+.popup-people-info-name{
+ color: #ffffff;
+}
+
+
+/*质量管理公司级*/
+.quality-target-max{
+ padding:15px 10px;
+}
+.quality-target-min{
+ padding:15px 10px;
+ display: flex;
+ align-items: center;
+}
+.quality-target-img{
+ width: 50px;
+ height: 50px;
+}
+.quality-target-img img{
+ width: 100%;
+ height: 100%;
+}
+.quality-target-con{
+ width: calc(100% - 65px);
+ padding-left: 15px;
+}
+.quality-target-title{
+ padding: 3px 0;
+ color: #c0dafb;
+}
+.quality-target-info{
+ padding: 3px 0;
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ color: #50a2eb;
+}
+.quality-target-index{
+ padding: 0px;
+}
+.quality-target-index-min{
+ padding: 15px 0 15px 20px;
+}
+
+.quality-dynamic-max{
+ padding: 10px 10px 0;
+}
+.quality-dynamic-min{
+ padding: 0 5px;
+ height: 655px;
+ overflow: auto;
+}
+.quality-dynamic-min::-webkit-scrollbar {
+ width: 0px;
+ height: 1px;
+}
+.quality-dynamic-min::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ background: #192c64;
+}
+.quality-dynamic-min::-webkit-scrollbar-track {
+ border-radius: 10px;
+ background: #010b2d;
+}
+.quality-dynamic-for{
+ padding: 10px;
+}
+.quality-dynamic-for.active{
+ background: url("../images/zzfs_bgf.png") no-repeat center/100% 100%;
+}
+.quality-dynamic-content{
+ display: flex;
+ align-items: center;
+}
+.quality-dynamic-img{
+ width: 90px;
+ height: 90px;
+ background: url("../images/logo_bgd.png") no-repeat center/100% 100%;
+}
+.quality-dynamic-img img{
+ width: 100%;
+ height: 100%;
+ border-radius: 3px;
+}
+.quality-dynamic-info{
+ padding-left: 20px;
+ width: calc(100% - 110px);
+}
+.quality-dynamic-top{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 7px 0;
+}
+.quality-dynamic-item{
+ overflow: hidden;
+ white-space:nowrap;
+ text-overflow:ellipsis;
+ padding: 7px 0;
+ color: #3da2ff;
+}
+.quality-dynamic-describe{
+ margin-top: 10px;
+ height: 50px;
+ line-height: 25px;
+ overflow: hidden;
+ color: #c0dafb;
+}
+.quality-dynamic-time{
+ color: #999999;
+}
+.quality-dynamic-state{
+ border: 1px solid #44ad1f;
+ padding: 1px 10px;
+ background: rgba(68,173,31,0.3);
+ border-radius: 3px;
+ color: #44ad1f;
+}
+.quality-dynamic-state.active{
+ border: 1px solid #ff9000;
+ padding: 1px 10px;
+ background: rgba(255,144,0,0.3);
+ border-radius: 3px;
+ color: #ff9000;
+}
+.quality-button{
+ justify-content: right;
+}
+.quality-table{
+ padding: 0 15px;
+}
+.quality-table .el-table__body-wrapper::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+.quality-table .el-table .cell{
+ padding: 0 5px;
+}
+.quality-table .el-table{
+ background: none;
+}
+.quality-table .el-table th, .el-table tr{
+ background: none;
+}
+.quality-table .el-table th{
+ height: 35px;
+ text-align: center;
+ color: #cbdaff;
+ padding: 0;
+}
+.quality-table .el-table td{
+ height: 60px;
+ text-align: center;
+ padding: 0;
+ color: #ffffff;
+}
+.quality-table .el-table td, .el-table th.is-leaf{
+ border: 0;
+}
+.quality-table .el-table .el-table__row:nth-child(odd){
+ background: url("../images/long_tr_bgd.png") no-repeat center/100% 55px;
+}
+.quality-table .el-table--enable-row-hover .el-table__body tr:hover>td{
+ background: none !important;
+}
+.quality-table .el-table::before{
+ background: none;
+}
+
+.scroll::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+.scroll::-webkit-scrollbar-thumb {
+ background-color: rgb(1, 169, 255);
+ border-radius: 4px;
+}
\ No newline at end of file
diff --git a/public/css/login.css b/public/css/login.css
new file mode 100644
index 0000000..4248e69
--- /dev/null
+++ b/public/css/login.css
@@ -0,0 +1,176 @@
+*{
+ margin: 0;
+ padding: 0;
+}
+@font-face {
+ font-family: "title-font";
+ src:url(../fonts/HYLXTJ.eot),url(../fonts/HYLXTJ.svg),url(../fonts/HYLXTJ.ttf),url(../fonts/HYLXTJ.woff),url(../fonts/HYLXTJ.woff2)
+}
+@font-face {
+ font-family: "number-font";
+ src:url(../fonts/PUTHIAfont.eot),url(../fonts/PUTHIAfont.svg),url(../fonts/PUTHIAfont.ttf),url(../fonts/PUTHIAfont.woff),url(../fonts/PUTHIAfont.woff2)
+}
+p,label,ul{
+ margin: 0;
+ font-weight: 400;
+}
+table{
+ width: 100%;
+}
+body{
+ min-width: 1500px;
+ min-height: 800px;
+}
+[v-cloak] {
+ display: none;
+}
+#app{
+ height: 100vh;
+ min-height: 800px;
+ width: 100%;
+ position: relative;
+ overflow: auto;
+}
+.login-bgd{
+ position: relative;
+ height: 100%;
+ width:1400px;
+ background: url("../images/login_bgd.png") no-repeat 50%;
+ background-size: cover;
+}
+.login-max{
+ height: 100%;
+ position: relative;
+ display: flex;
+}
+.login-content{
+ width: 520px;
+}
+.login-content-max{
+ padding: 100px 50px;
+}
+.login-logo{
+ text-align: center;
+}
+.login-title{
+ padding: 20px;
+ font-weight: bold;
+ color: #000000;
+ font-size: 28px;
+ text-align: center;
+}
+.login-content-form{
+ padding:30px;
+ position: relative;
+}
+.login-mode-max{
+ display: flex;
+ border-bottom: 1px solid #aaaaaa;
+}
+.login-mode{
+ width: 50%;
+ text-align: center;
+ padding: 15px 0;
+ cursor: pointer;
+ color: #aaaaaa;
+}
+.login-mode.active{
+ color: #0063b1;
+ font-weight: bold;
+}
+.login-mode-hr-max{
+ position: relative;
+ top: -2px;
+}
+.login-mode-hr {
+ border-top: 3px solid #0162b1;
+ width: 50%;
+ position: absolute;
+ left: 0;
+ transition: left 0.3s;
+
+}
+.login-form-fill{
+ padding:0 30px;
+}
+.login-form-text{
+ padding: 15px 0 20px 5px;
+ color: #888888;
+}
+.login-form-fill-min{
+ padding: 10px 0;
+}
+.login-form-fill-min input{
+ height: 50px;
+ font-size: 16px;
+}
+.login-form-state{
+ padding: 15px 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+.login-forgot-password{
+ font-size: 14px;
+ color: #3da2ff;
+ cursor: pointer;
+}
+.login-form-btn{
+ padding: 15px 0;
+}
+.login-tips{
+ height: 40px;
+ color: #ff0000;
+ text-align: center;
+}
+.login-submit-btn{
+ background: #0162b1;
+ text-align: center;
+ height: 45px;
+ line-height: 45px;
+ color: #ffffff;
+ cursor: pointer;
+}
+.login-submit-btn:hover{
+ background: #0274d1;
+}
+.login-submit-btn:active{
+ background: #0162b1;
+}
+.login-form-code{
+ display: flex;
+ align-items: center;
+}
+.login-form-code button{
+ width: 150px;
+ height: 50px;
+ border: 0;
+ background: #0162b1;
+ cursor: pointer;
+ color: #ffffff;
+}
+.login-form-code button:hover{
+ background: #0274d1;
+ }
+.login-form-code button:active{
+ background: #0162b1;
+}
+.left-enter,
+.left-leave-to {
+ opacity: 0;
+ transform: translateX(-100px);
+}
+.left-enter-active,
+.left-leave-active{
+ transition: all 0.5s ease;
+}
+
+.right-enter,
+.right-leave-to {
+ opacity: 0;
+ transform: translateX(100px);
+}
+.right-enter-active,
+.right-leave-active{
+ transition: all 0.5s ease;
+}
diff --git a/public/fonts/HYLXTJ.eot b/public/fonts/HYLXTJ.eot
new file mode 100644
index 0000000..9a573ca
Binary files /dev/null and b/public/fonts/HYLXTJ.eot differ
diff --git a/public/fonts/HYLXTJ.svg b/public/fonts/HYLXTJ.svg
new file mode 100644
index 0000000..967bbca
--- /dev/null
+++ b/public/fonts/HYLXTJ.svg
@@ -0,0 +1,24087 @@
+
+
+
+
+Created by FontForge 20170924 at Mon Aug 28 19:30:50 1995
+ By www-data
+(c) Copyright Beijing HANYI KEYIN Information Technology Co., Ltd. 1994
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/fonts/HYLXTJ.ttf b/public/fonts/HYLXTJ.ttf
new file mode 100644
index 0000000..d5a607f
Binary files /dev/null and b/public/fonts/HYLXTJ.ttf differ
diff --git a/public/fonts/HYLXTJ.woff b/public/fonts/HYLXTJ.woff
new file mode 100644
index 0000000..bfb9001
Binary files /dev/null and b/public/fonts/HYLXTJ.woff differ
diff --git a/public/fonts/HYLXTJ.woff2 b/public/fonts/HYLXTJ.woff2
new file mode 100644
index 0000000..c3210e8
Binary files /dev/null and b/public/fonts/HYLXTJ.woff2 differ
diff --git a/public/fonts/PUTHIAfont.eot b/public/fonts/PUTHIAfont.eot
new file mode 100644
index 0000000..5b974c8
Binary files /dev/null and b/public/fonts/PUTHIAfont.eot differ
diff --git a/public/fonts/PUTHIAfont.svg b/public/fonts/PUTHIAfont.svg
new file mode 100644
index 0000000..83bb72f
--- /dev/null
+++ b/public/fonts/PUTHIAfont.svg
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/fonts/PUTHIAfont.ttf b/public/fonts/PUTHIAfont.ttf
new file mode 100644
index 0000000..f00cfee
Binary files /dev/null and b/public/fonts/PUTHIAfont.ttf differ
diff --git a/public/fonts/PUTHIAfont.woff b/public/fonts/PUTHIAfont.woff
new file mode 100644
index 0000000..dc8d26c
Binary files /dev/null and b/public/fonts/PUTHIAfont.woff differ
diff --git a/public/fonts/PUTHIAfont.woff2 b/public/fonts/PUTHIAfont.woff2
new file mode 100644
index 0000000..4a60355
Binary files /dev/null and b/public/fonts/PUTHIAfont.woff2 differ
diff --git a/public/images/820.jpg b/public/images/820.jpg
new file mode 100644
index 0000000..7de3c81
Binary files /dev/null and b/public/images/820.jpg differ
diff --git a/public/images/821.jpg b/public/images/821.jpg
new file mode 100644
index 0000000..f14908c
Binary files /dev/null and b/public/images/821.jpg differ
diff --git a/public/images/822.jpg b/public/images/822.jpg
new file mode 100644
index 0000000..6835cd4
Binary files /dev/null and b/public/images/822.jpg differ
diff --git a/public/images/830.png b/public/images/830.png
new file mode 100644
index 0000000..ea1196b
Binary files /dev/null and b/public/images/830.png differ
diff --git a/public/images/831.jpg b/public/images/831.jpg
new file mode 100644
index 0000000..fa56955
Binary files /dev/null and b/public/images/831.jpg differ
diff --git a/public/images/832.jpg b/public/images/832.jpg
new file mode 100644
index 0000000..a5bd32a
Binary files /dev/null and b/public/images/832.jpg differ
diff --git a/public/images/840.jpg b/public/images/840.jpg
new file mode 100644
index 0000000..49d05a8
Binary files /dev/null and b/public/images/840.jpg differ
diff --git a/public/images/841.jpg b/public/images/841.jpg
new file mode 100644
index 0000000..7e984cc
Binary files /dev/null and b/public/images/841.jpg differ
diff --git a/public/images/842.jpg b/public/images/842.jpg
new file mode 100644
index 0000000..1c5c882
Binary files /dev/null and b/public/images/842.jpg differ
diff --git a/public/images/843.jpg b/public/images/843.jpg
new file mode 100644
index 0000000..5bfde1b
Binary files /dev/null and b/public/images/843.jpg differ
diff --git a/public/images/850.jpg b/public/images/850.jpg
new file mode 100644
index 0000000..1e04ac9
Binary files /dev/null and b/public/images/850.jpg differ
diff --git a/public/images/851.jpg b/public/images/851.jpg
new file mode 100644
index 0000000..24c79e6
Binary files /dev/null and b/public/images/851.jpg differ
diff --git a/public/images/852.jpg b/public/images/852.jpg
new file mode 100644
index 0000000..11ca732
Binary files /dev/null and b/public/images/852.jpg differ
diff --git a/public/images/853.jpg b/public/images/853.jpg
new file mode 100644
index 0000000..a141ab1
Binary files /dev/null and b/public/images/853.jpg differ
diff --git a/public/images/Line.png b/public/images/Line.png
new file mode 100644
index 0000000..2e9c36f
Binary files /dev/null and b/public/images/Line.png differ
diff --git a/public/images/address_dw.png b/public/images/address_dw.png
new file mode 100644
index 0000000..2f21d53
Binary files /dev/null and b/public/images/address_dw.png differ
diff --git a/public/images/address_dw_red.png b/public/images/address_dw_red.png
new file mode 100644
index 0000000..4bedf27
Binary files /dev/null and b/public/images/address_dw_red.png differ
diff --git a/public/images/aerial_view.png b/public/images/aerial_view.png
new file mode 100644
index 0000000..a0d0223
Binary files /dev/null and b/public/images/aerial_view.png differ
diff --git a/public/images/aerial_view_2.png b/public/images/aerial_view_2.png
new file mode 100644
index 0000000..c032b63
Binary files /dev/null and b/public/images/aerial_view_2.png differ
diff --git a/public/images/aerial_view_3.png b/public/images/aerial_view_3.png
new file mode 100644
index 0000000..8f3ff03
Binary files /dev/null and b/public/images/aerial_view_3.png differ
diff --git a/public/images/analyse_icon.png b/public/images/analyse_icon.png
new file mode 100644
index 0000000..607aed9
Binary files /dev/null and b/public/images/analyse_icon.png differ
diff --git a/public/images/analyse_title.png b/public/images/analyse_title.png
new file mode 100644
index 0000000..1baba6a
Binary files /dev/null and b/public/images/analyse_title.png differ
diff --git a/public/images/analyse_title_blue.png b/public/images/analyse_title_blue.png
new file mode 100644
index 0000000..aa3b297
Binary files /dev/null and b/public/images/analyse_title_blue.png differ
diff --git a/public/images/battery.png b/public/images/battery.png
new file mode 100644
index 0000000..1ba04e2
Binary files /dev/null and b/public/images/battery.png differ
diff --git a/public/images/battery_red.png b/public/images/battery_red.png
new file mode 100644
index 0000000..c081ea2
Binary files /dev/null and b/public/images/battery_red.png differ
diff --git a/public/images/blue.png b/public/images/blue.png
new file mode 100644
index 0000000..960f521
Binary files /dev/null and b/public/images/blue.png differ
diff --git a/public/images/carousel_left.png b/public/images/carousel_left.png
new file mode 100644
index 0000000..a31a9ca
Binary files /dev/null and b/public/images/carousel_left.png differ
diff --git a/public/images/carousel_right.png b/public/images/carousel_right.png
new file mode 100644
index 0000000..f39fa3c
Binary files /dev/null and b/public/images/carousel_right.png differ
diff --git a/public/images/check_icon.png b/public/images/check_icon.png
new file mode 100644
index 0000000..9bc58d0
Binary files /dev/null and b/public/images/check_icon.png differ
diff --git a/public/images/circle_blue.gif b/public/images/circle_blue.gif
new file mode 100644
index 0000000..f694e1c
Binary files /dev/null and b/public/images/circle_blue.gif differ
diff --git a/public/images/circle_blue.png b/public/images/circle_blue.png
new file mode 100644
index 0000000..6d65c3b
Binary files /dev/null and b/public/images/circle_blue.png differ
diff --git a/public/images/circle_green.gif b/public/images/circle_green.gif
new file mode 100644
index 0000000..2081989
Binary files /dev/null and b/public/images/circle_green.gif differ
diff --git a/public/images/circle_green.png b/public/images/circle_green.png
new file mode 100644
index 0000000..697bdc1
Binary files /dev/null and b/public/images/circle_green.png differ
diff --git a/public/images/circle_icon_1.png b/public/images/circle_icon_1.png
new file mode 100644
index 0000000..7f71cf8
Binary files /dev/null and b/public/images/circle_icon_1.png differ
diff --git a/public/images/circle_icon_10.png b/public/images/circle_icon_10.png
new file mode 100644
index 0000000..dd4a2c5
Binary files /dev/null and b/public/images/circle_icon_10.png differ
diff --git a/public/images/circle_icon_11.png b/public/images/circle_icon_11.png
new file mode 100644
index 0000000..cfb9028
Binary files /dev/null and b/public/images/circle_icon_11.png differ
diff --git a/public/images/circle_icon_2.png b/public/images/circle_icon_2.png
new file mode 100644
index 0000000..15fb44a
Binary files /dev/null and b/public/images/circle_icon_2.png differ
diff --git a/public/images/circle_icon_3.png b/public/images/circle_icon_3.png
new file mode 100644
index 0000000..ddc9292
Binary files /dev/null and b/public/images/circle_icon_3.png differ
diff --git a/public/images/circle_icon_4.png b/public/images/circle_icon_4.png
new file mode 100644
index 0000000..8683f37
Binary files /dev/null and b/public/images/circle_icon_4.png differ
diff --git a/public/images/circle_icon_5.png b/public/images/circle_icon_5.png
new file mode 100644
index 0000000..3c74913
Binary files /dev/null and b/public/images/circle_icon_5.png differ
diff --git a/public/images/circle_icon_6.png b/public/images/circle_icon_6.png
new file mode 100644
index 0000000..e40d411
Binary files /dev/null and b/public/images/circle_icon_6.png differ
diff --git a/public/images/circle_icon_7.png b/public/images/circle_icon_7.png
new file mode 100644
index 0000000..fbb7145
Binary files /dev/null and b/public/images/circle_icon_7.png differ
diff --git a/public/images/circle_icon_8.png b/public/images/circle_icon_8.png
new file mode 100644
index 0000000..0b00049
Binary files /dev/null and b/public/images/circle_icon_8.png differ
diff --git a/public/images/circle_icon_9.png b/public/images/circle_icon_9.png
new file mode 100644
index 0000000..8a50b91
Binary files /dev/null and b/public/images/circle_icon_9.png differ
diff --git a/public/images/circular.png b/public/images/circular.png
new file mode 100644
index 0000000..cb0a40c
Binary files /dev/null and b/public/images/circular.png differ
diff --git a/public/images/company_1.png b/public/images/company_1.png
new file mode 100644
index 0000000..6d9cbcf
Binary files /dev/null and b/public/images/company_1.png differ
diff --git a/public/images/company_10.png b/public/images/company_10.png
new file mode 100644
index 0000000..639c891
Binary files /dev/null and b/public/images/company_10.png differ
diff --git a/public/images/company_11.png b/public/images/company_11.png
new file mode 100644
index 0000000..67285f9
Binary files /dev/null and b/public/images/company_11.png differ
diff --git a/public/images/company_12.png b/public/images/company_12.png
new file mode 100644
index 0000000..8d9d664
Binary files /dev/null and b/public/images/company_12.png differ
diff --git a/public/images/company_13.png b/public/images/company_13.png
new file mode 100644
index 0000000..5f697e7
Binary files /dev/null and b/public/images/company_13.png differ
diff --git a/public/images/company_14.png b/public/images/company_14.png
new file mode 100644
index 0000000..7bb4ece
Binary files /dev/null and b/public/images/company_14.png differ
diff --git a/public/images/company_15.png b/public/images/company_15.png
new file mode 100644
index 0000000..3982f38
Binary files /dev/null and b/public/images/company_15.png differ
diff --git a/public/images/company_2.png b/public/images/company_2.png
new file mode 100644
index 0000000..a90ec53
Binary files /dev/null and b/public/images/company_2.png differ
diff --git a/public/images/company_3.png b/public/images/company_3.png
new file mode 100644
index 0000000..2819565
Binary files /dev/null and b/public/images/company_3.png differ
diff --git a/public/images/company_4.png b/public/images/company_4.png
new file mode 100644
index 0000000..278f2ca
Binary files /dev/null and b/public/images/company_4.png differ
diff --git a/public/images/company_5.png b/public/images/company_5.png
new file mode 100644
index 0000000..73389ab
Binary files /dev/null and b/public/images/company_5.png differ
diff --git a/public/images/company_6.png b/public/images/company_6.png
new file mode 100644
index 0000000..0685b85
Binary files /dev/null and b/public/images/company_6.png differ
diff --git a/public/images/company_7.png b/public/images/company_7.png
new file mode 100644
index 0000000..966da8e
Binary files /dev/null and b/public/images/company_7.png differ
diff --git a/public/images/company_8.png b/public/images/company_8.png
new file mode 100644
index 0000000..2e30b3b
Binary files /dev/null and b/public/images/company_8.png differ
diff --git a/public/images/company_9.png b/public/images/company_9.png
new file mode 100644
index 0000000..ce721c6
Binary files /dev/null and b/public/images/company_9.png differ
diff --git a/public/images/current_value_bgd.png b/public/images/current_value_bgd.png
new file mode 100644
index 0000000..78890fe
Binary files /dev/null and b/public/images/current_value_bgd.png differ
diff --git a/public/images/dangerous.png b/public/images/dangerous.png
new file mode 100644
index 0000000..86d7438
Binary files /dev/null and b/public/images/dangerous.png differ
diff --git a/public/images/dangerous_active.png b/public/images/dangerous_active.png
new file mode 100644
index 0000000..5ac3a5b
Binary files /dev/null and b/public/images/dangerous_active.png differ
diff --git a/public/images/drag_hook.png b/public/images/drag_hook.png
new file mode 100644
index 0000000..1536717
Binary files /dev/null and b/public/images/drag_hook.png differ
diff --git a/public/images/education_bgd.png b/public/images/education_bgd.png
new file mode 100644
index 0000000..849a643
Binary files /dev/null and b/public/images/education_bgd.png differ
diff --git a/public/images/education_icon.png b/public/images/education_icon.png
new file mode 100644
index 0000000..71f2248
Binary files /dev/null and b/public/images/education_icon.png differ
diff --git a/public/images/expect_list.png b/public/images/expect_list.png
new file mode 100644
index 0000000..ea917f6
Binary files /dev/null and b/public/images/expect_list.png differ
diff --git a/public/images/expect_list_active.png b/public/images/expect_list_active.png
new file mode 100644
index 0000000..d294b6f
Binary files /dev/null and b/public/images/expect_list_active.png differ
diff --git a/public/images/expect_list_yc.png b/public/images/expect_list_yc.png
new file mode 100644
index 0000000..3af700d
Binary files /dev/null and b/public/images/expect_list_yc.png differ
diff --git a/public/images/expect_list_zc.png b/public/images/expect_list_zc.png
new file mode 100644
index 0000000..8661215
Binary files /dev/null and b/public/images/expect_list_zc.png differ
diff --git a/public/images/field_layout_video.png b/public/images/field_layout_video.png
new file mode 100644
index 0000000..77db04b
Binary files /dev/null and b/public/images/field_layout_video.png differ
diff --git a/public/images/fj_jxzdgz.webp b/public/images/fj_jxzdgz.webp
new file mode 100644
index 0000000..7de3c81
Binary files /dev/null and b/public/images/fj_jxzdgz.webp differ
diff --git a/public/images/foot_1.png b/public/images/foot_1.png
new file mode 100644
index 0000000..83b6afd
Binary files /dev/null and b/public/images/foot_1.png differ
diff --git a/public/images/foot_2.png b/public/images/foot_2.png
new file mode 100644
index 0000000..102e62a
Binary files /dev/null and b/public/images/foot_2.png differ
diff --git a/public/images/foot_3.png b/public/images/foot_3.png
new file mode 100644
index 0000000..4988942
Binary files /dev/null and b/public/images/foot_3.png differ
diff --git a/public/images/foot_btn.png b/public/images/foot_btn.png
new file mode 100644
index 0000000..78ee443
Binary files /dev/null and b/public/images/foot_btn.png differ
diff --git a/public/images/foot_btn_active.png b/public/images/foot_btn_active.png
new file mode 100644
index 0000000..ac473f4
Binary files /dev/null and b/public/images/foot_btn_active.png differ
diff --git a/public/images/foot_left.png b/public/images/foot_left.png
new file mode 100644
index 0000000..074b546
Binary files /dev/null and b/public/images/foot_left.png differ
diff --git a/public/images/foot_open.png b/public/images/foot_open.png
new file mode 100644
index 0000000..2ac0ccb
Binary files /dev/null and b/public/images/foot_open.png differ
diff --git a/public/images/foot_right.png b/public/images/foot_right.png
new file mode 100644
index 0000000..89b34df
Binary files /dev/null and b/public/images/foot_right.png differ
diff --git a/public/images/foot_stow.png b/public/images/foot_stow.png
new file mode 100644
index 0000000..d2347b8
Binary files /dev/null and b/public/images/foot_stow.png differ
diff --git a/public/images/gongdi.jpeg b/public/images/gongdi.jpeg
new file mode 100644
index 0000000..ac78f2d
Binary files /dev/null and b/public/images/gongdi.jpeg differ
diff --git a/public/images/gongdi1.jpeg b/public/images/gongdi1.jpeg
new file mode 100644
index 0000000..f27e8ed
Binary files /dev/null and b/public/images/gongdi1.jpeg differ
diff --git a/public/images/head_select.png b/public/images/head_select.png
new file mode 100644
index 0000000..7564bee
Binary files /dev/null and b/public/images/head_select.png differ
diff --git a/public/images/head_select_red.png b/public/images/head_select_red.png
new file mode 100644
index 0000000..ee462ad
Binary files /dev/null and b/public/images/head_select_red.png differ
diff --git a/public/images/head_title.png b/public/images/head_title.png
new file mode 100644
index 0000000..414fb05
Binary files /dev/null and b/public/images/head_title.png differ
diff --git a/public/images/head_title_red.png b/public/images/head_title_red.png
new file mode 100644
index 0000000..7691dab
Binary files /dev/null and b/public/images/head_title_red.png differ
diff --git a/public/images/high.png b/public/images/high.png
new file mode 100644
index 0000000..866e575
Binary files /dev/null and b/public/images/high.png differ
diff --git a/public/images/hj_PM10.png b/public/images/hj_PM10.png
new file mode 100644
index 0000000..42a7f12
Binary files /dev/null and b/public/images/hj_PM10.png differ
diff --git a/public/images/hj_PM2.5.png b/public/images/hj_PM2.5.png
new file mode 100644
index 0000000..a66bf69
Binary files /dev/null and b/public/images/hj_PM2.5.png differ
diff --git a/public/images/hj_baojingshebei.png b/public/images/hj_baojingshebei.png
new file mode 100644
index 0000000..e702a22
Binary files /dev/null and b/public/images/hj_baojingshebei.png differ
diff --git a/public/images/hj_fengsu.png b/public/images/hj_fengsu.png
new file mode 100644
index 0000000..06d6418
Binary files /dev/null and b/public/images/hj_fengsu.png differ
diff --git a/public/images/hj_gif.gif b/public/images/hj_gif.gif
new file mode 100644
index 0000000..7436fd7
Binary files /dev/null and b/public/images/hj_gif.gif differ
diff --git a/public/images/hj_lixianshebei.png b/public/images/hj_lixianshebei.png
new file mode 100644
index 0000000..65f6b03
Binary files /dev/null and b/public/images/hj_lixianshebei.png differ
diff --git a/public/images/hj_shebeizongshu.png b/public/images/hj_shebeizongshu.png
new file mode 100644
index 0000000..0998ab2
Binary files /dev/null and b/public/images/hj_shebeizongshu.png differ
diff --git a/public/images/hj_shidu.png b/public/images/hj_shidu.png
new file mode 100644
index 0000000..de283dd
Binary files /dev/null and b/public/images/hj_shidu.png differ
diff --git a/public/images/hj_wendu.png b/public/images/hj_wendu.png
new file mode 100644
index 0000000..12b67dd
Binary files /dev/null and b/public/images/hj_wendu.png differ
diff --git a/public/images/hj_zaixianshebei.png b/public/images/hj_zaixianshebei.png
new file mode 100644
index 0000000..83e1b77
Binary files /dev/null and b/public/images/hj_zaixianshebei.png differ
diff --git a/public/images/hj_zaoyin.png b/public/images/hj_zaoyin.png
new file mode 100644
index 0000000..fd6d48f
Binary files /dev/null and b/public/images/hj_zaoyin.png differ
diff --git a/public/images/icon2001.png b/public/images/icon2001.png
new file mode 100644
index 0000000..d8efb90
Binary files /dev/null and b/public/images/icon2001.png differ
diff --git a/public/images/icon_10.png b/public/images/icon_10.png
new file mode 100644
index 0000000..6da06cb
Binary files /dev/null and b/public/images/icon_10.png differ
diff --git a/public/images/icon_5.png b/public/images/icon_5.png
new file mode 100644
index 0000000..eb48d65
Binary files /dev/null and b/public/images/icon_5.png differ
diff --git a/public/images/icon_6.png b/public/images/icon_6.png
new file mode 100644
index 0000000..82a2c97
Binary files /dev/null and b/public/images/icon_6.png differ
diff --git a/public/images/icon_7.png b/public/images/icon_7.png
new file mode 100644
index 0000000..ee2c8d0
Binary files /dev/null and b/public/images/icon_7.png differ
diff --git a/public/images/icon_8.png b/public/images/icon_8.png
new file mode 100644
index 0000000..9cc921b
Binary files /dev/null and b/public/images/icon_8.png differ
diff --git a/public/images/icon_9.png b/public/images/icon_9.png
new file mode 100644
index 0000000..4251f83
Binary files /dev/null and b/public/images/icon_9.png differ
diff --git a/public/images/input_search.png b/public/images/input_search.png
new file mode 100644
index 0000000..b2f0331
Binary files /dev/null and b/public/images/input_search.png differ
diff --git a/public/images/labour_warning_bgd.png b/public/images/labour_warning_bgd.png
new file mode 100644
index 0000000..6eab50a
Binary files /dev/null and b/public/images/labour_warning_bgd.png differ
diff --git a/public/images/labour_warning_icon.png b/public/images/labour_warning_icon.png
new file mode 100644
index 0000000..d8e948e
Binary files /dev/null and b/public/images/labour_warning_icon.png differ
diff --git a/public/images/legend_cexie.png b/public/images/legend_cexie.png
new file mode 100644
index 0000000..2d22f8b
Binary files /dev/null and b/public/images/legend_cexie.png differ
diff --git a/public/images/legend_chenjiang.png b/public/images/legend_chenjiang.png
new file mode 100644
index 0000000..2d227c4
Binary files /dev/null and b/public/images/legend_chenjiang.png differ
diff --git a/public/images/legend_qingxie.png b/public/images/legend_qingxie.png
new file mode 100644
index 0000000..efca1de
Binary files /dev/null and b/public/images/legend_qingxie.png differ
diff --git a/public/images/legend_shuiwei.png b/public/images/legend_shuiwei.png
new file mode 100644
index 0000000..d819d9d
Binary files /dev/null and b/public/images/legend_shuiwei.png differ
diff --git a/public/images/legend_weiyi.png b/public/images/legend_weiyi.png
new file mode 100644
index 0000000..1b2e73e
Binary files /dev/null and b/public/images/legend_weiyi.png differ
diff --git a/public/images/legend_yingli.png b/public/images/legend_yingli.png
new file mode 100644
index 0000000..531af6c
Binary files /dev/null and b/public/images/legend_yingli.png differ
diff --git a/public/images/list_bgd.png b/public/images/list_bgd.png
new file mode 100644
index 0000000..9000400
Binary files /dev/null and b/public/images/list_bgd.png differ
diff --git a/public/images/list_img_icon.png b/public/images/list_img_icon.png
new file mode 100644
index 0000000..cb30274
Binary files /dev/null and b/public/images/list_img_icon.png differ
diff --git a/public/images/list_img_tj.png b/public/images/list_img_tj.png
new file mode 100644
index 0000000..2b65451
Binary files /dev/null and b/public/images/list_img_tj.png differ
diff --git a/public/images/location.png b/public/images/location.png
new file mode 100644
index 0000000..3402822
Binary files /dev/null and b/public/images/location.png differ
diff --git a/public/images/login_bgd.png b/public/images/login_bgd.png
new file mode 100644
index 0000000..f19e233
Binary files /dev/null and b/public/images/login_bgd.png differ
diff --git a/public/images/login_bgd1.jpg b/public/images/login_bgd1.jpg
new file mode 100644
index 0000000..1a4d227
Binary files /dev/null and b/public/images/login_bgd1.jpg differ
diff --git a/public/images/logo.png b/public/images/logo.png
new file mode 100644
index 0000000..0714cb5
Binary files /dev/null and b/public/images/logo.png differ
diff --git a/public/images/logo_bgd.png b/public/images/logo_bgd.png
new file mode 100644
index 0000000..539ee7c
Binary files /dev/null and b/public/images/logo_bgd.png differ
diff --git a/public/images/long_tr_bgd.png b/public/images/long_tr_bgd.png
new file mode 100644
index 0000000..729b72c
Binary files /dev/null and b/public/images/long_tr_bgd.png differ
diff --git a/public/images/low.png b/public/images/low.png
new file mode 100644
index 0000000..0447917
Binary files /dev/null and b/public/images/low.png differ
diff --git a/public/images/machinery_bgd.png b/public/images/machinery_bgd.png
new file mode 100644
index 0000000..191e744
Binary files /dev/null and b/public/images/machinery_bgd.png differ
diff --git a/public/images/map_popup_bgd.png b/public/images/map_popup_bgd.png
new file mode 100644
index 0000000..c8524b8
Binary files /dev/null and b/public/images/map_popup_bgd.png differ
diff --git a/public/images/map_popup_red_bgd.png b/public/images/map_popup_red_bgd.png
new file mode 100644
index 0000000..546d060
Binary files /dev/null and b/public/images/map_popup_red_bgd.png differ
diff --git a/public/images/map_popup_title.png b/public/images/map_popup_title.png
new file mode 100644
index 0000000..be59af0
Binary files /dev/null and b/public/images/map_popup_title.png differ
diff --git a/public/images/map_sjk_popup_bgd.png b/public/images/map_sjk_popup_bgd.png
new file mode 100644
index 0000000..51b7f1f
Binary files /dev/null and b/public/images/map_sjk_popup_bgd.png differ
diff --git a/public/images/needle.png b/public/images/needle.png
new file mode 100644
index 0000000..aea3699
Binary files /dev/null and b/public/images/needle.png differ
diff --git a/public/images/no_picture.png b/public/images/no_picture.png
new file mode 100644
index 0000000..643a917
Binary files /dev/null and b/public/images/no_picture.png differ
diff --git a/public/images/nodata.jpg b/public/images/nodata.jpg
new file mode 100644
index 0000000..de3b3a6
Binary files /dev/null and b/public/images/nodata.jpg differ
diff --git a/public/images/nodata.png b/public/images/nodata.png
new file mode 100644
index 0000000..17d832c
Binary files /dev/null and b/public/images/nodata.png differ
diff --git a/public/images/number_bgd.png b/public/images/number_bgd.png
new file mode 100644
index 0000000..22048d4
Binary files /dev/null and b/public/images/number_bgd.png differ
diff --git a/public/images/one/1x1.png b/public/images/one/1x1.png
new file mode 100644
index 0000000..1ef19cb
Binary files /dev/null and b/public/images/one/1x1.png differ
diff --git a/public/images/one/1x2.png b/public/images/one/1x2.png
new file mode 100644
index 0000000..ce4da6f
Binary files /dev/null and b/public/images/one/1x2.png differ
diff --git a/public/images/one/1x3.png b/public/images/one/1x3.png
new file mode 100644
index 0000000..0772892
Binary files /dev/null and b/public/images/one/1x3.png differ
diff --git a/public/images/one/1x4.png b/public/images/one/1x4.png
new file mode 100644
index 0000000..bbfcb5e
Binary files /dev/null and b/public/images/one/1x4.png differ
diff --git a/public/images/one/2x1.png b/public/images/one/2x1.png
new file mode 100644
index 0000000..187d33d
Binary files /dev/null and b/public/images/one/2x1.png differ
diff --git a/public/images/one/2x2.png b/public/images/one/2x2.png
new file mode 100644
index 0000000..561e42d
Binary files /dev/null and b/public/images/one/2x2.png differ
diff --git a/public/images/one/2x3.png b/public/images/one/2x3.png
new file mode 100644
index 0000000..0ea4281
Binary files /dev/null and b/public/images/one/2x3.png differ
diff --git a/public/images/one/2x4.png b/public/images/one/2x4.png
new file mode 100644
index 0000000..3b33213
Binary files /dev/null and b/public/images/one/2x4.png differ
diff --git a/public/images/one/3x1.png b/public/images/one/3x1.png
new file mode 100644
index 0000000..49f9883
Binary files /dev/null and b/public/images/one/3x1.png differ
diff --git a/public/images/one/3x2.png b/public/images/one/3x2.png
new file mode 100644
index 0000000..c9a7e9d
Binary files /dev/null and b/public/images/one/3x2.png differ
diff --git a/public/images/one/3x3.png b/public/images/one/3x3.png
new file mode 100644
index 0000000..88b9ef7
Binary files /dev/null and b/public/images/one/3x3.png differ
diff --git a/public/images/one/3x4.png b/public/images/one/3x4.png
new file mode 100644
index 0000000..ec50136
Binary files /dev/null and b/public/images/one/3x4.png differ
diff --git a/public/images/place_cexie_blue.png b/public/images/place_cexie_blue.png
new file mode 100644
index 0000000..b3ffbba
Binary files /dev/null and b/public/images/place_cexie_blue.png differ
diff --git a/public/images/place_cexie_green.png b/public/images/place_cexie_green.png
new file mode 100644
index 0000000..492d690
Binary files /dev/null and b/public/images/place_cexie_green.png differ
diff --git a/public/images/place_cexie_grey.png b/public/images/place_cexie_grey.png
new file mode 100644
index 0000000..da73e17
Binary files /dev/null and b/public/images/place_cexie_grey.png differ
diff --git a/public/images/place_cexie_orange.png b/public/images/place_cexie_orange.png
new file mode 100644
index 0000000..266060f
Binary files /dev/null and b/public/images/place_cexie_orange.png differ
diff --git a/public/images/place_cexie_red.png b/public/images/place_cexie_red.png
new file mode 100644
index 0000000..ef78e41
Binary files /dev/null and b/public/images/place_cexie_red.png differ
diff --git a/public/images/place_chenjiang_blue.png b/public/images/place_chenjiang_blue.png
new file mode 100644
index 0000000..ef6f6f6
Binary files /dev/null and b/public/images/place_chenjiang_blue.png differ
diff --git a/public/images/place_chenjiang_green.png b/public/images/place_chenjiang_green.png
new file mode 100644
index 0000000..fdac878
Binary files /dev/null and b/public/images/place_chenjiang_green.png differ
diff --git a/public/images/place_chenjiang_grey.png b/public/images/place_chenjiang_grey.png
new file mode 100644
index 0000000..ede06a1
Binary files /dev/null and b/public/images/place_chenjiang_grey.png differ
diff --git a/public/images/place_chenjiang_orange.png b/public/images/place_chenjiang_orange.png
new file mode 100644
index 0000000..437744b
Binary files /dev/null and b/public/images/place_chenjiang_orange.png differ
diff --git a/public/images/place_chenjiang_red.png b/public/images/place_chenjiang_red.png
new file mode 100644
index 0000000..8d13db2
Binary files /dev/null and b/public/images/place_chenjiang_red.png differ
diff --git a/public/images/place_qingxie_blue.png b/public/images/place_qingxie_blue.png
new file mode 100644
index 0000000..0a11efc
Binary files /dev/null and b/public/images/place_qingxie_blue.png differ
diff --git a/public/images/place_qingxie_green.png b/public/images/place_qingxie_green.png
new file mode 100644
index 0000000..6fe95d1
Binary files /dev/null and b/public/images/place_qingxie_green.png differ
diff --git a/public/images/place_qingxie_grey.png b/public/images/place_qingxie_grey.png
new file mode 100644
index 0000000..5356bdc
Binary files /dev/null and b/public/images/place_qingxie_grey.png differ
diff --git a/public/images/place_qingxie_orange.png b/public/images/place_qingxie_orange.png
new file mode 100644
index 0000000..b8b4774
Binary files /dev/null and b/public/images/place_qingxie_orange.png differ
diff --git a/public/images/place_qingxie_red.png b/public/images/place_qingxie_red.png
new file mode 100644
index 0000000..3782654
Binary files /dev/null and b/public/images/place_qingxie_red.png differ
diff --git a/public/images/place_shuiwei_blue.png b/public/images/place_shuiwei_blue.png
new file mode 100644
index 0000000..af67018
Binary files /dev/null and b/public/images/place_shuiwei_blue.png differ
diff --git a/public/images/place_shuiwei_green.png b/public/images/place_shuiwei_green.png
new file mode 100644
index 0000000..324ed0c
Binary files /dev/null and b/public/images/place_shuiwei_green.png differ
diff --git a/public/images/place_shuiwei_grey.png b/public/images/place_shuiwei_grey.png
new file mode 100644
index 0000000..92b5977
Binary files /dev/null and b/public/images/place_shuiwei_grey.png differ
diff --git a/public/images/place_shuiwei_orange.png b/public/images/place_shuiwei_orange.png
new file mode 100644
index 0000000..8eada45
Binary files /dev/null and b/public/images/place_shuiwei_orange.png differ
diff --git a/public/images/place_shuiwei_red.png b/public/images/place_shuiwei_red.png
new file mode 100644
index 0000000..3fb3fed
Binary files /dev/null and b/public/images/place_shuiwei_red.png differ
diff --git a/public/images/place_weiyi_blue.png b/public/images/place_weiyi_blue.png
new file mode 100644
index 0000000..4b2c09b
Binary files /dev/null and b/public/images/place_weiyi_blue.png differ
diff --git a/public/images/place_weiyi_green.png b/public/images/place_weiyi_green.png
new file mode 100644
index 0000000..4293189
Binary files /dev/null and b/public/images/place_weiyi_green.png differ
diff --git a/public/images/place_weiyi_grey.png b/public/images/place_weiyi_grey.png
new file mode 100644
index 0000000..dc8de3f
Binary files /dev/null and b/public/images/place_weiyi_grey.png differ
diff --git a/public/images/place_weiyi_orange.png b/public/images/place_weiyi_orange.png
new file mode 100644
index 0000000..be5f0c3
Binary files /dev/null and b/public/images/place_weiyi_orange.png differ
diff --git a/public/images/place_weiyi_red.png b/public/images/place_weiyi_red.png
new file mode 100644
index 0000000..7c7ef30
Binary files /dev/null and b/public/images/place_weiyi_red.png differ
diff --git a/public/images/place_yingli_blue.png b/public/images/place_yingli_blue.png
new file mode 100644
index 0000000..a736d54
Binary files /dev/null and b/public/images/place_yingli_blue.png differ
diff --git a/public/images/place_yingli_green.png b/public/images/place_yingli_green.png
new file mode 100644
index 0000000..5c6a1fd
Binary files /dev/null and b/public/images/place_yingli_green.png differ
diff --git a/public/images/place_yingli_grey.png b/public/images/place_yingli_grey.png
new file mode 100644
index 0000000..7c27b34
Binary files /dev/null and b/public/images/place_yingli_grey.png differ
diff --git a/public/images/place_yingli_orange.png b/public/images/place_yingli_orange.png
new file mode 100644
index 0000000..ee9c1b3
Binary files /dev/null and b/public/images/place_yingli_orange.png differ
diff --git a/public/images/place_yingli_red.png b/public/images/place_yingli_red.png
new file mode 100644
index 0000000..443f36f
Binary files /dev/null and b/public/images/place_yingli_red.png differ
diff --git a/public/images/prj1.svg b/public/images/prj1.svg
new file mode 100644
index 0000000..3b5624f
--- /dev/null
+++ b/public/images/prj1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/images/prj2.svg b/public/images/prj2.svg
new file mode 100644
index 0000000..96c4b4e
--- /dev/null
+++ b/public/images/prj2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/images/prj3.svg b/public/images/prj3.svg
new file mode 100644
index 0000000..70547b3
--- /dev/null
+++ b/public/images/prj3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/images/project_amount_bgd.png b/public/images/project_amount_bgd.png
new file mode 100644
index 0000000..611a440
Binary files /dev/null and b/public/images/project_amount_bgd.png differ
diff --git a/public/images/quality_icon_1.png b/public/images/quality_icon_1.png
new file mode 100644
index 0000000..30b9eb5
Binary files /dev/null and b/public/images/quality_icon_1.png differ
diff --git a/public/images/quality_icon_2.png b/public/images/quality_icon_2.png
new file mode 100644
index 0000000..c4ceb70
Binary files /dev/null and b/public/images/quality_icon_2.png differ
diff --git a/public/images/quality_icon_3.png b/public/images/quality_icon_3.png
new file mode 100644
index 0000000..26406f4
Binary files /dev/null and b/public/images/quality_icon_3.png differ
diff --git a/public/images/quality_target_1.png b/public/images/quality_target_1.png
new file mode 100644
index 0000000..6701f9f
Binary files /dev/null and b/public/images/quality_target_1.png differ
diff --git a/public/images/quality_target_2.png b/public/images/quality_target_2.png
new file mode 100644
index 0000000..f615654
Binary files /dev/null and b/public/images/quality_target_2.png differ
diff --git a/public/images/quality_target_3.png b/public/images/quality_target_3.png
new file mode 100644
index 0000000..23c2eb1
Binary files /dev/null and b/public/images/quality_target_3.png differ
diff --git a/public/images/ratio_bgd.png b/public/images/ratio_bgd.png
new file mode 100644
index 0000000..5b5e4e0
Binary files /dev/null and b/public/images/ratio_bgd.png differ
diff --git a/public/images/red/0x5.png b/public/images/red/0x5.png
new file mode 100644
index 0000000..10f4a86
Binary files /dev/null and b/public/images/red/0x5.png differ
diff --git a/public/images/red/1x1.png b/public/images/red/1x1.png
new file mode 100644
index 0000000..c43e3ef
Binary files /dev/null and b/public/images/red/1x1.png differ
diff --git a/public/images/red/1x1_1.png b/public/images/red/1x1_1.png
new file mode 100644
index 0000000..038a4d0
Binary files /dev/null and b/public/images/red/1x1_1.png differ
diff --git a/public/images/red/1x2.png b/public/images/red/1x2.png
new file mode 100644
index 0000000..6bfcf3d
Binary files /dev/null and b/public/images/red/1x2.png differ
diff --git a/public/images/red/1x2_1.png b/public/images/red/1x2_1.png
new file mode 100644
index 0000000..68bcf70
Binary files /dev/null and b/public/images/red/1x2_1.png differ
diff --git a/public/images/red/2x2.png b/public/images/red/2x2.png
new file mode 100644
index 0000000..fefebbe
Binary files /dev/null and b/public/images/red/2x2.png differ
diff --git a/public/images/red/2x2_1.png b/public/images/red/2x2_1.png
new file mode 100644
index 0000000..5f99178
Binary files /dev/null and b/public/images/red/2x2_1.png differ
diff --git a/public/images/red/big_bgd.png b/public/images/red/big_bgd.png
new file mode 100644
index 0000000..cf6c939
Binary files /dev/null and b/public/images/red/big_bgd.png differ
diff --git a/public/images/red/video.png b/public/images/red/video.png
new file mode 100644
index 0000000..a236d33
Binary files /dev/null and b/public/images/red/video.png differ
diff --git a/public/images/return_btn_bgd.png b/public/images/return_btn_bgd.png
new file mode 100644
index 0000000..631c9c4
Binary files /dev/null and b/public/images/return_btn_bgd.png differ
diff --git a/public/images/return_icon.png b/public/images/return_icon.png
new file mode 100644
index 0000000..05d80da
Binary files /dev/null and b/public/images/return_icon.png differ
diff --git a/public/images/right.png b/public/images/right.png
new file mode 100644
index 0000000..59f4efa
Binary files /dev/null and b/public/images/right.png differ
diff --git a/public/images/run_circle.png b/public/images/run_circle.png
new file mode 100644
index 0000000..6aaa112
Binary files /dev/null and b/public/images/run_circle.png differ
diff --git a/public/images/safe_tower_left.png b/public/images/safe_tower_left.png
new file mode 100644
index 0000000..6e045e4
Binary files /dev/null and b/public/images/safe_tower_left.png differ
diff --git a/public/images/safe_tower_left_a.png b/public/images/safe_tower_left_a.png
new file mode 100644
index 0000000..6e045e4
Binary files /dev/null and b/public/images/safe_tower_left_a.png differ
diff --git a/public/images/safe_tower_name_bgd.png b/public/images/safe_tower_name_bgd.png
new file mode 100644
index 0000000..f1757c1
Binary files /dev/null and b/public/images/safe_tower_name_bgd.png differ
diff --git a/public/images/safe_tower_right.png b/public/images/safe_tower_right.png
new file mode 100644
index 0000000..0132caf
Binary files /dev/null and b/public/images/safe_tower_right.png differ
diff --git a/public/images/safe_tower_right_a.png b/public/images/safe_tower_right_a.png
new file mode 100644
index 0000000..9f32662
Binary files /dev/null and b/public/images/safe_tower_right_a.png differ
diff --git a/public/images/search.png b/public/images/search.png
new file mode 100644
index 0000000..d74e8ca
Binary files /dev/null and b/public/images/search.png differ
diff --git a/public/images/select_bgd.png b/public/images/select_bgd.png
new file mode 100644
index 0000000..22f8789
Binary files /dev/null and b/public/images/select_bgd.png differ
diff --git a/public/images/sereen_bgd.png b/public/images/sereen_bgd.png
new file mode 100644
index 0000000..bb68933
Binary files /dev/null and b/public/images/sereen_bgd.png differ
diff --git a/public/images/sjk.jpg b/public/images/sjk.jpg
new file mode 100644
index 0000000..21fb922
Binary files /dev/null and b/public/images/sjk.jpg differ
diff --git a/public/images/sjkcad.png b/public/images/sjkcad.png
new file mode 100644
index 0000000..71e8e22
Binary files /dev/null and b/public/images/sjkcad.png differ
diff --git a/public/images/small_title.png b/public/images/small_title.png
new file mode 100644
index 0000000..9eb3030
Binary files /dev/null and b/public/images/small_title.png differ
diff --git a/public/images/state_bgd.png b/public/images/state_bgd.png
new file mode 100644
index 0000000..fc839e2
Binary files /dev/null and b/public/images/state_bgd.png differ
diff --git a/public/images/state_lx_bgd.png b/public/images/state_lx_bgd.png
new file mode 100644
index 0000000..39f81a5
Binary files /dev/null and b/public/images/state_lx_bgd.png differ
diff --git a/public/images/survey_bgd_fb.png b/public/images/survey_bgd_fb.png
new file mode 100644
index 0000000..1dfa8a9
Binary files /dev/null and b/public/images/survey_bgd_fb.png differ
diff --git a/public/images/survey_bgd_zl.png b/public/images/survey_bgd_zl.png
new file mode 100644
index 0000000..2939da4
Binary files /dev/null and b/public/images/survey_bgd_zl.png differ
diff --git a/public/images/survey_bgd_zy.png b/public/images/survey_bgd_zy.png
new file mode 100644
index 0000000..bc7334c
Binary files /dev/null and b/public/images/survey_bgd_zy.png differ
diff --git a/public/images/survey_btn.png b/public/images/survey_btn.png
new file mode 100644
index 0000000..64fa7ec
Binary files /dev/null and b/public/images/survey_btn.png differ
diff --git a/public/images/survey_btn_active.png b/public/images/survey_btn_active.png
new file mode 100644
index 0000000..4af5922
Binary files /dev/null and b/public/images/survey_btn_active.png differ
diff --git a/public/images/survey_icon_1.png b/public/images/survey_icon_1.png
new file mode 100644
index 0000000..cfe47b2
Binary files /dev/null and b/public/images/survey_icon_1.png differ
diff --git a/public/images/survey_icon_2.png b/public/images/survey_icon_2.png
new file mode 100644
index 0000000..91bdd5e
Binary files /dev/null and b/public/images/survey_icon_2.png differ
diff --git a/public/images/survey_icon_3.png b/public/images/survey_icon_3.png
new file mode 100644
index 0000000..2fa22a2
Binary files /dev/null and b/public/images/survey_icon_3.png differ
diff --git a/public/images/survey_icon_4.png b/public/images/survey_icon_4.png
new file mode 100644
index 0000000..090d535
Binary files /dev/null and b/public/images/survey_icon_4.png differ
diff --git a/public/images/survey_icon_5.png b/public/images/survey_icon_5.png
new file mode 100644
index 0000000..3f60b99
Binary files /dev/null and b/public/images/survey_icon_5.png differ
diff --git a/public/images/survey_icon_6.png b/public/images/survey_icon_6.png
new file mode 100644
index 0000000..87a4525
Binary files /dev/null and b/public/images/survey_icon_6.png differ
diff --git a/public/images/survey_icon_7.png b/public/images/survey_icon_7.png
new file mode 100644
index 0000000..f09aa9a
Binary files /dev/null and b/public/images/survey_icon_7.png differ
diff --git a/public/images/survey_icon_8.png b/public/images/survey_icon_8.png
new file mode 100644
index 0000000..5587d8d
Binary files /dev/null and b/public/images/survey_icon_8.png differ
diff --git a/public/images/survey_total_icon.png b/public/images/survey_total_icon.png
new file mode 100644
index 0000000..4d0472b
Binary files /dev/null and b/public/images/survey_total_icon.png differ
diff --git a/public/images/table_tr.png b/public/images/table_tr.png
new file mode 100644
index 0000000..49897cc
Binary files /dev/null and b/public/images/table_tr.png differ
diff --git a/public/images/text_bgd.png b/public/images/text_bgd.png
new file mode 100644
index 0000000..d812410
Binary files /dev/null and b/public/images/text_bgd.png differ
diff --git a/public/images/text_red_bgd.png b/public/images/text_red_bgd.png
new file mode 100644
index 0000000..2a113bc
Binary files /dev/null and b/public/images/text_red_bgd.png differ
diff --git a/public/images/text_red_safe_bgd.png b/public/images/text_red_safe_bgd.png
new file mode 100644
index 0000000..e4be323
Binary files /dev/null and b/public/images/text_red_safe_bgd.png differ
diff --git a/public/images/text_red_spot.png b/public/images/text_red_spot.png
new file mode 100644
index 0000000..bcf06f5
Binary files /dev/null and b/public/images/text_red_spot.png differ
diff --git a/public/images/text_spot.png b/public/images/text_spot.png
new file mode 100644
index 0000000..9efb7a5
Binary files /dev/null and b/public/images/text_spot.png differ
diff --git a/public/images/title_icon.png b/public/images/title_icon.png
new file mode 100644
index 0000000..7c155e2
Binary files /dev/null and b/public/images/title_icon.png differ
diff --git a/public/images/title_tab.png b/public/images/title_tab.png
new file mode 100644
index 0000000..124daf8
Binary files /dev/null and b/public/images/title_tab.png differ
diff --git a/public/images/title_tab_active.png b/public/images/title_tab_active.png
new file mode 100644
index 0000000..8f8004f
Binary files /dev/null and b/public/images/title_tab_active.png differ
diff --git a/public/images/title_tab_active_red.png b/public/images/title_tab_active_red.png
new file mode 100644
index 0000000..c65f105
Binary files /dev/null and b/public/images/title_tab_active_red.png differ
diff --git a/public/images/title_tab_red.png b/public/images/title_tab_red.png
new file mode 100644
index 0000000..b4601f6
Binary files /dev/null and b/public/images/title_tab_red.png differ
diff --git a/public/images/tower_crane.png b/public/images/tower_crane.png
new file mode 100644
index 0000000..e1af60e
Binary files /dev/null and b/public/images/tower_crane.png differ
diff --git a/public/images/two/1x1.png b/public/images/two/1x1.png
new file mode 100644
index 0000000..edffffb
Binary files /dev/null and b/public/images/two/1x1.png differ
diff --git a/public/images/two/1x2.png b/public/images/two/1x2.png
new file mode 100644
index 0000000..dd88e6f
Binary files /dev/null and b/public/images/two/1x2.png differ
diff --git a/public/images/two/1x3.png b/public/images/two/1x3.png
new file mode 100644
index 0000000..1a7dfb2
Binary files /dev/null and b/public/images/two/1x3.png differ
diff --git a/public/images/two/1x4.png b/public/images/two/1x4.png
new file mode 100644
index 0000000..b6d946f
Binary files /dev/null and b/public/images/two/1x4.png differ
diff --git a/public/images/two/2x1.png b/public/images/two/2x1.png
new file mode 100644
index 0000000..60b941e
Binary files /dev/null and b/public/images/two/2x1.png differ
diff --git a/public/images/two/2x2.png b/public/images/two/2x2.png
new file mode 100644
index 0000000..80f2e25
Binary files /dev/null and b/public/images/two/2x2.png differ
diff --git a/public/images/two/2x3.png b/public/images/two/2x3.png
new file mode 100644
index 0000000..cc113c8
Binary files /dev/null and b/public/images/two/2x3.png differ
diff --git a/public/images/two/2x4.png b/public/images/two/2x4.png
new file mode 100644
index 0000000..159a22f
Binary files /dev/null and b/public/images/two/2x4.png differ
diff --git a/public/images/two/3x1.png b/public/images/two/3x1.png
new file mode 100644
index 0000000..8a9cd18
Binary files /dev/null and b/public/images/two/3x1.png differ
diff --git a/public/images/two/3x2.png b/public/images/two/3x2.png
new file mode 100644
index 0000000..e463c39
Binary files /dev/null and b/public/images/two/3x2.png differ
diff --git a/public/images/two/3x3.png b/public/images/two/3x3.png
new file mode 100644
index 0000000..9e3cc80
Binary files /dev/null and b/public/images/two/3x3.png differ
diff --git a/public/images/two/3x4.png b/public/images/two/3x4.png
new file mode 100644
index 0000000..2330c75
Binary files /dev/null and b/public/images/two/3x4.png differ
diff --git a/public/images/up.png b/public/images/up.png
new file mode 100644
index 0000000..c4b7c42
Binary files /dev/null and b/public/images/up.png differ
diff --git a/public/images/utilization.png b/public/images/utilization.png
new file mode 100644
index 0000000..acd6a50
Binary files /dev/null and b/public/images/utilization.png differ
diff --git a/public/images/vehicle_chu.png b/public/images/vehicle_chu.png
new file mode 100644
index 0000000..79696d5
Binary files /dev/null and b/public/images/vehicle_chu.png differ
diff --git a/public/images/vehicle_jin.png b/public/images/vehicle_jin.png
new file mode 100644
index 0000000..415b634
Binary files /dev/null and b/public/images/vehicle_jin.png differ
diff --git a/public/images/video_1.png b/public/images/video_1.png
new file mode 100644
index 0000000..af94cd4
Binary files /dev/null and b/public/images/video_1.png differ
diff --git a/public/images/video_2.png b/public/images/video_2.png
new file mode 100644
index 0000000..97c91fe
Binary files /dev/null and b/public/images/video_2.png differ
diff --git a/public/images/video_3.png b/public/images/video_3.png
new file mode 100644
index 0000000..fe8645d
Binary files /dev/null and b/public/images/video_3.png differ
diff --git a/public/images/video_4.png b/public/images/video_4.png
new file mode 100644
index 0000000..d0f6a90
Binary files /dev/null and b/public/images/video_4.png differ
diff --git a/public/images/video_list_title.png b/public/images/video_list_title.png
new file mode 100644
index 0000000..9ed5c7a
Binary files /dev/null and b/public/images/video_list_title.png differ
diff --git a/public/images/video_title.png b/public/images/video_title.png
new file mode 100644
index 0000000..9eb3030
Binary files /dev/null and b/public/images/video_title.png differ
diff --git a/public/images/warning_PM10.png b/public/images/warning_PM10.png
new file mode 100644
index 0000000..133fcf2
Binary files /dev/null and b/public/images/warning_PM10.png differ
diff --git a/public/images/warning_PM2.5.png b/public/images/warning_PM2.5.png
new file mode 100644
index 0000000..b8c41d8
Binary files /dev/null and b/public/images/warning_PM2.5.png differ
diff --git a/public/images/warning_cexie.png b/public/images/warning_cexie.png
new file mode 100644
index 0000000..8841b03
Binary files /dev/null and b/public/images/warning_cexie.png differ
diff --git a/public/images/warning_chenjiang.png b/public/images/warning_chenjiang.png
new file mode 100644
index 0000000..ef54622
Binary files /dev/null and b/public/images/warning_chenjiang.png differ
diff --git a/public/images/warning_diaozhong.png b/public/images/warning_diaozhong.png
new file mode 100644
index 0000000..b3b10e6
Binary files /dev/null and b/public/images/warning_diaozhong.png differ
diff --git a/public/images/warning_fengsu.png b/public/images/warning_fengsu.png
new file mode 100644
index 0000000..5e42ed2
Binary files /dev/null and b/public/images/warning_fengsu.png differ
diff --git a/public/images/warning_fudu.png b/public/images/warning_fudu.png
new file mode 100644
index 0000000..c935fc2
Binary files /dev/null and b/public/images/warning_fudu.png differ
diff --git a/public/images/warning_gaodu.png b/public/images/warning_gaodu.png
new file mode 100644
index 0000000..a101e3e
Binary files /dev/null and b/public/images/warning_gaodu.png differ
diff --git a/public/images/warning_jixie.png b/public/images/warning_jixie.png
new file mode 100644
index 0000000..c72e2d5
Binary files /dev/null and b/public/images/warning_jixie.png differ
diff --git a/public/images/warning_qingjiao.png b/public/images/warning_qingjiao.png
new file mode 100644
index 0000000..c606ba6
Binary files /dev/null and b/public/images/warning_qingjiao.png differ
diff --git a/public/images/warning_qingxie.png b/public/images/warning_qingxie.png
new file mode 100644
index 0000000..26f1371
Binary files /dev/null and b/public/images/warning_qingxie.png differ
diff --git a/public/images/warning_renyuan.png b/public/images/warning_renyuan.png
new file mode 100644
index 0000000..99cc8f3
Binary files /dev/null and b/public/images/warning_renyuan.png differ
diff --git a/public/images/warning_shidu.png b/public/images/warning_shidu.png
new file mode 100644
index 0000000..4f90118
Binary files /dev/null and b/public/images/warning_shidu.png differ
diff --git a/public/images/warning_shuiwei.png b/public/images/warning_shuiwei.png
new file mode 100644
index 0000000..38594f0
Binary files /dev/null and b/public/images/warning_shuiwei.png differ
diff --git a/public/images/warning_weiyi.png b/public/images/warning_weiyi.png
new file mode 100644
index 0000000..0410c27
Binary files /dev/null and b/public/images/warning_weiyi.png differ
diff --git a/public/images/warning_wendu.png b/public/images/warning_wendu.png
new file mode 100644
index 0000000..590c441
Binary files /dev/null and b/public/images/warning_wendu.png differ
diff --git a/public/images/warning_yingli.png b/public/images/warning_yingli.png
new file mode 100644
index 0000000..4a4c746
Binary files /dev/null and b/public/images/warning_yingli.png differ
diff --git a/public/images/warning_zaoyin.png b/public/images/warning_zaoyin.png
new file mode 100644
index 0000000..90a6751
Binary files /dev/null and b/public/images/warning_zaoyin.png differ
diff --git a/public/images/warning_zhuanjiao.png b/public/images/warning_zhuanjiao.png
new file mode 100644
index 0000000..6ba38be
Binary files /dev/null and b/public/images/warning_zhuanjiao.png differ
diff --git a/public/images/weather.png b/public/images/weather.png
new file mode 100644
index 0000000..8fa642d
Binary files /dev/null and b/public/images/weather.png differ
diff --git a/public/images/zzfs_bgf.png b/public/images/zzfs_bgf.png
new file mode 100644
index 0000000..cf6d4cf
Binary files /dev/null and b/public/images/zzfs_bgf.png differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..c21a760
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
+
+
+
+
+
diff --git a/public/video.html b/public/video.html
new file mode 100644
index 0000000..5e15ba3
--- /dev/null
+++ b/public/video.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
+
+
+
+
+
diff --git a/src/api/dept/index.js b/src/api/dept/index.js
new file mode 100644
index 0000000..75f4b50
--- /dev/null
+++ b/src/api/dept/index.js
@@ -0,0 +1,14 @@
+
+import request from '@/utils/request'
+
+// 查询流程表单列表
+const list=()=> {
+ return request({
+ url: 'bgscreen/dept/list',
+ method: 'get'
+ })
+}
+
+export default{
+ list
+}
diff --git a/src/api/index.js b/src/api/index.js
new file mode 100644
index 0000000..474bdf5
--- /dev/null
+++ b/src/api/index.js
@@ -0,0 +1,12 @@
+import project from './project/index'
+import dept from './dept/index'
+import schedule from './schedule/index'
+import quarterlyAssess from './quarterlyAssess/index'
+import problemmodify from './problemmodify/index'
+export default {
+ project,
+ dept,
+ schedule,
+ quarterlyAssess,
+ problemmodify
+}
\ No newline at end of file
diff --git a/src/api/problemmodify/index.js b/src/api/problemmodify/index.js
new file mode 100644
index 0000000..372dfde
--- /dev/null
+++ b/src/api/problemmodify/index.js
@@ -0,0 +1,41 @@
+
+import request from '@/utils/request'
+
+
+//质量整改-安全分类汇总(按分类)
+const safetySummary=(deptId,roleType)=>{
+ return request({
+ url: `bgscreen/problemmodify/safetySummary?deptId=${deptId}&roleType=${roleType}`,
+ method: 'get'
+ })
+}
+
+//质量整改-质量分类汇总(按分类)
+const qualitySummary=(deptId,roleType)=>{
+ return request({
+ url: `bgscreen/problemmodify/qualitySummary?deptId=${deptId}&roleType=${roleType}`,
+ method: 'get'
+ })
+}
+
+
+//质量整改-安全分类汇总(按项目)
+const safetySummaryByProject=(deptId,roleType)=>{
+ return request({
+ url: `bgscreen/problemmodify/safetySummaryByProject?deptId=${deptId}&roleType=${roleType}`,
+ method: 'get'
+ })
+}
+
+
+//质量整改-安全分类汇总(按项目)
+const qualitySummaryByProject=(deptId,roleType)=>{
+ return request({
+ url: `bgscreen/problemmodify/qualitySummaryByProject?deptId=${deptId}&roleType=${roleType}`,
+ method: 'get'
+ })
+}
+
+export default{
+ safetySummary,qualitySummary,safetySummaryByProject,qualitySummaryByProject
+}
diff --git a/src/api/project/index.js b/src/api/project/index.js
new file mode 100644
index 0000000..13cc970
--- /dev/null
+++ b/src/api/project/index.js
@@ -0,0 +1,20 @@
+import request from '@/utils/request'
+
+const findProjectByDept=(deptId)=> {
+ return request({
+ url: `bgscreen/project/findProjectByDept?deptId=${deptId}`,
+ method: 'get'
+ })
+}
+
+const getProjectBuildNode=projectId=>{
+ return request({
+ url: `bgscreen/project/getProjectBuildNode?projectId=${projectId}`,
+ method: 'get'
+ })
+}
+
+export default{
+ findProjectByDept,
+ getProjectBuildNode
+}
diff --git a/src/api/quarterlyAssess/index.js b/src/api/quarterlyAssess/index.js
new file mode 100644
index 0000000..a59ecc7
--- /dev/null
+++ b/src/api/quarterlyAssess/index.js
@@ -0,0 +1,14 @@
+
+import request from '@/utils/request'
+
+// 查询流程表单列表
+const currentListByDept=(deptId)=> {
+ return request({
+ url: `bgscreen/asscess/currentListByDept?deptId=${deptId}`,
+ method: 'get'
+ })
+}
+
+export default{
+ currentListByDept
+}
diff --git a/src/api/schedule/index.js b/src/api/schedule/index.js
new file mode 100644
index 0000000..6a8f5b2
--- /dev/null
+++ b/src/api/schedule/index.js
@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+
+const projectConstructionProgress=(projectId)=> {
+ return request({
+ url: `bgscreen/schedule/projectConstructionProgress?projectId=${projectId}`,
+ method: 'get'
+ })
+}
+
+export default{
+ projectConstructionProgress
+}
diff --git a/src/components/amplify/huanjingguanli/amplify-cbcsfb.js b/src/components/amplify/huanjingguanli/amplify-cbcsfb.js
new file mode 100644
index 0000000..e9cfecf
--- /dev/null
+++ b/src/components/amplify/huanjingguanli/amplify-cbcsfb.js
@@ -0,0 +1,336 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-cbcsfb", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ infoNav:0,
+ dayStartTime:'',
+ dayEndTime:'',
+ weekStartTime:'',
+ weekEndTime:'',
+ monthStartTime:'',
+ monthEndTime:'',
+ typeDistributionData:[],
+ text:'累计超标',
+ height:401
+ }
+ },
+ created(){
+ this.getTime()
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getTypeDistributionData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ getTime() {
+ var that = this
+ this.uploadTime = that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date());
+ //今日
+ that.dayStartTime = that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date(new Date().setHours(0,0,0)));
+ that.dayEndTime = that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date(new Date().setHours(23,59,59)));
+ // //本周
+ let now = new Date();
+ let day = now.getDay() || 7;
+ that.weekStartTime = that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date(new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1 - day).setHours(0,0,0)))
+ that.weekEndTime = that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date(new Date(now.getFullYear(), now.getMonth(), now.getDate() + 7 - day).setHours(23,59,59)))
+ // //本月
+ let now2 = new Date();
+ let day1 = new Date(now2.getFullYear(),now2.getMonth()+1,0).getDate();
+ that.monthStartTime= that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date(new Date(now2.getFullYear(), now2.getMonth(), 1).setHours(0,0,0)))
+ that.monthEndTime= that.dateFormat("yyyy-MM-dd HH:mm:ss",new Date(new Date(now2.getFullYear(),now2.getMonth(),day1).setHours(23,59,59)))
+ },
+ dateFormat(fmt, date) {
+ let ret;
+ const opt = {
+ "y+": date.getFullYear().toString(), // 年
+ "M+": (date.getMonth() + 1).toString(), // 月
+ "d+": date.getDate().toString(), // 日
+ "H+": date.getHours().toString(), // 时
+ "m+": date.getMinutes().toString(), // 分
+ "s+": date.getSeconds().toString() // 秒
+ // 有其他格式化字符需求可以继续添加,必须转化成字符串
+ };
+ for (let 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")))
+ };
+ };
+ return fmt;
+ },
+ //当日预警信息
+ onWarningInfoNav(n) {
+ this.infoNav = n
+ this.getTypeDistributionData()
+ },
+ //超标次数分布
+ getTypeDistributionData() {
+ var startTime = this.dayStartTime;
+ var endTime = this.dayEndTime;
+ if (this.infoNav == 0) {
+ startTime = this.dayStartTime;
+ endTime = this.dayEndTime;
+ } else if (this.infoNav == 1) {
+ startTime = this.weekStartTime;
+ endTime = this.weekEndTime;
+ } else if (this.infoNav == 2) {
+ startTime = this.monthStartTime;
+ endTime = this.monthEndTime;
+ }
+ //今日超标次数分布
+ axios.get("/mkl/api/getEnvironmentWaringNumber", {
+ params: {
+ projectId: JSON.parse(localStorage.getItem("data1")).id,
+ startTime: startTime,
+ endTime: endTime
+ }
+ }).then(res => {
+ if (res.data.code == "200") {
+ var tempData = [
+ // { name:'PM2.5', value:'30' },
+ {name: 'PM10', value: '20'},
+ {name: '噪音', value: '20'},
+ // { name:'风速', value:'10' },
+ {name: '温度', value: '10'},
+ {name: '湿度', value: '20'}
+ ]
+ tempData.map(x => {
+ if (x.name == "PM2.5") {
+ x.value = res.data.data.PM25WaringNumber
+ } else if (x.name == "PM10") {
+ x.value = res.data.data.PM10WaringNumber
+ } else if (x.name == "噪音") {
+ x.value = res.data.data.noiseNumber
+ } else if (x.name == "风速") {
+ x.value = res.data.data.windSpeedNumber
+ } else if (x.name == "温度") {
+ x.value = res.data.data.temperatureWaringNumber
+ } else if (x.name == "湿度") {
+ x.value = res.data.data.humidityNumber
+ }
+ })
+ this.typeDistributionData = tempData
+ this.getChartData()
+ }
+ }).catch(err => {
+
+ })
+ },
+ //数据图渲染接口
+ getChartData() {
+ //品类金额占比 饼图
+ var chChartPie = echarts.init(this.$refs.warningPieChart);
+ this.echartPie(chChartPie, this.typeDistributionData)
+ },
+ echartPie(chChart, chartData) {
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var total_datas = 0;
+ var data = [];
+ var legendData = [];
+ var color = ['#4974ff', '#52aef7', '#6863d7', '#1d5d89', '#20e6ff', '#67feef']
+ for (let i = 0; i < chartData.length; i++) {
+ total_datas += Number(chartData[i].value);
+ legendData.push(chartData[i].name)
+ data.push(
+ {
+ value: chartData[i].value,
+ name: chartData[i].name,
+ itemStyle: {
+ normal: {
+ //颜色渐变
+ color: color[i]
+ },
+ },
+ },
+ )
+ }
+ /* let total = chartData.reduce((a, b) => {
+ return a + b.value;
+ }, 0);*/
+
+ let legendOption = {
+ top: "center",
+ orient: "vertical",
+ icon: "circle",
+ itemWidth: 25,
+ itemGap: 16,
+ textStyle: {
+ fontSize: 25,
+ rich: {
+ name: {
+ color: "#c3dbfd",
+ padding: [25, 10, 40, 10],
+ // align: 'right'
+ // width: '300px'
+ fontSize: 25,
+ },
+ percent: {
+ color: "#18DB9F",
+ fontSize: 25,
+ padding: [0, 10, 0, 10],
+ // align: 'right'
+ },
+ },
+ },
+ formatter: function (name) {
+ let res = chartData.filter((v) => v.name === name);
+ let percent = total_datas == 0 ? 0 : (((res[0].value * 100) / total_datas).toFixed(1));
+ return "{name| " + name + "}\n{percent|" + res[0].value + "}{percent|" + percent + "%}";
+ },
+ };
+ this.option = {
+ title: {
+ text: total_datas,
+ subtext: this.text,
+ x: "180",
+ y: "150",
+ textStyle: {
+ color: "#0dd2fd",
+ fontSize: 48,
+ fontWeight: "bold",
+ align: "center",
+ width: "200px",
+ },
+ subtextStyle: {
+ color: "#a5b5f0",
+ fontSize: 25,
+ align: "center",
+ },
+ },
+ tooltip: {
+ show: false,
+ trigger: 'item',
+ formatter: "{b} {c} ({d}%)"
+ },
+ legend: [
+ {
+ right: 20,
+ data: legendData,
+ align: "left",
+ ...legendOption,
+ },
+ ],
+
+ series: [
+ {
+ name: "品类金额占比",
+ type: "pie",
+ center: ["25%", "50%"],
+ radius: ["46%", "63%"],
+ data: data,
+ label: {
+ show: false,
+ },
+ itemStyle: {
+ normal: {
+ borderWidth: 10,
+ borderColor: "#051a36"
+ }
+ },
+
+ },
+ {
+ name: "外边框",
+ type: "pie",
+ clockWise: false, //顺时加载
+ hoverAnimation: false, //鼠标移入变大
+ center: ["25%", "50%"],
+ radius: ["70%", "70%"],
+ label: {
+ normal: {
+ show: false,
+ },
+ },
+ data: [
+ {
+ value: 9,
+ name: "",
+ itemStyle: {
+ normal: {
+ borderWidth: 6,
+ borderColor: "#152c65",
+ },
+ },
+ },
+ ],
+ },
+ ],
+ }
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ for (let i = 0; i < chartData.length; i++) {
+ if (params.name == chartData[i].name) {
+ that.$emit('ledger', chartData[i]);
+ break
+ }
+ }
+ })
+ })
+ },
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/huanjingguanli/amplify-sbqd.js b/src/components/amplify/huanjingguanli/amplify-sbqd.js
new file mode 100644
index 0000000..f732cf2
--- /dev/null
+++ b/src/components/amplify/huanjingguanli/amplify-sbqd.js
@@ -0,0 +1,128 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-sbqd", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
设备总数
+
{{deviceNum}} 个
+
+
+
+
+
+
+
+
+
+
在线设备
+
{{onlineNum}} 个
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
离线设备
+
{{offlineNum}} 个
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ //设备清单
+ deviceNum:0,
+ onlineNum:0,
+ warnNum:0,
+ offlineNum:0,
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getDeviceInfo()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //设备清单
+ getDeviceInfo() {
+ var projectId = JSON.parse(localStorage.getItem("data1")).id
+ if(projectId == 98 || projectId == 132) {
+ this.deviceNum = 1,
+ this.onlineNum = 1,
+ this.warnNum = 0,
+ this.offlineNum = 0
+ this.showDevice = true;
+ this.selectData = [{text:'扬尘监测设备#1',id:1},]
+ } else {
+ this.deviceNum = 0,
+ this.onlineNum = 0,
+ this.warnNum = 0,
+ this.offlineNum = 0
+ this.showDevice = false
+ this.selectData = [{text:'暂无数据',id:1}]
+
+ }
+ },
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/jinduguanli/amplify-gqgk.js b/src/components/amplify/jinduguanli/amplify-gqgk.js
new file mode 100644
index 0000000..71108a1
--- /dev/null
+++ b/src/components/amplify/jinduguanli/amplify-gqgk.js
@@ -0,0 +1,349 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-gqgk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2022-09-01 至 2024-08-21
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ show: false,
+ people: [],
+ number: 720,
+ unit: '天',
+ shiJiPro:0,
+ timePro:0,
+ text:'时间进度',
+ text1:'实际产值进度',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.setData()
+ this.gainProBase()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ setData() {
+ var people = this.number != undefined ? this.number.toString().split('') : 0;
+ this.people = people
+ },
+ //数据接口
+ gainProBase() {
+ axios.post("/api/building/proBaseInfo?projectId=" + this.projectId).then(res => {
+ if(res.data.code == "200") {
+ this.shiJiPro = parseInt((res.data.data.kailei_money / 67640 * 100).toFixed(0))
+ this.timePro = parseInt(((moment().diff(moment(res.data.data.actual_start_date), 'days') / 720) * 100).toFixed(0))
+ }
+ this.getChartData()
+ this.getChartData1()
+ }).catch(err => {
+
+ })
+ },
+ //数据展示图1
+ getChartData(){
+ var chChartBar = echarts.init(this.$refs.chart1);
+ this.echartBar(chChartBar,this.timePro,this.text)
+ },
+ echartBar(chChart,value,text){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var placeHolderStyle = {
+ normal: {
+ label: {
+ show: false,
+ },
+ labelLine: {
+ show: false,
+ },
+ color: "rgba(0,0,0,0)",
+ borderWidth: 0,
+ },
+ emphasis: {
+ color: "rgba(0,0,0,0)",
+ borderWidth: 0,
+ },
+ };
+
+ var dataStyle = {
+
+ };
+ this.option ={
+ title: [
+ {
+ text: value+'%',
+ textAlign: "center",
+ left: "48%",
+ top: "30%",
+ textStyle: {
+ color: "#67abf2",
+ fontSize: 23,
+ },
+ },
+ {
+ text: text,
+ left: "48%",
+ top: "80%",
+ textAlign: "center",
+ textStyle: {
+ color: "#cdd7fa",
+ fontWeight: "normal",
+ fontSize: "16",
+ textAlign: "center",
+ },
+ },
+ ],
+ series: [
+ {
+ type: "pie",
+ hoverAnimation: false,
+ radius: ["60%", "59%"],
+ center: ["50%", "40%"],
+ labelLine: {
+ normal: {
+ show: false,
+ },
+ },
+ label: {
+ normal: {
+ position: "center",
+ },
+ },
+ data: [
+ {
+ value: 100,
+ itemStyle: {
+ normal: {
+ color: "#255788",
+ },
+ },
+ },
+
+ ],
+ },
+ {
+ type: "pie",
+ hoverAnimation: false,
+ radius: ["53%", "60%"],
+ center: ["50%", "40%"],
+ labelLine: {
+ normal: {
+ show: false,
+ },
+ },
+ label: {
+ normal: {
+ position: "center",
+ },
+ },
+ data: [
+ {
+ value: value,
+ itemStyle: {
+ normal: {
+ color: "#68a8f2",
+ },
+ },
+ normal: {
+ show: false,
+ },
+ },
+ {
+ value: 100-value,
+ itemStyle: placeHolderStyle,
+ },
+ ],
+ },
+ ],
+ };
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ //数据展示图2
+ getChartData1(){
+ var chChartBar = echarts.init(this.$refs.chart2);
+ this.echartBar(chChartBar,this.shiJiPro,this.text1)
+ },
+ echartBar(chChart,value,text){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var placeHolderStyle = {
+ normal: {
+ label: {
+ show: false,
+ },
+ labelLine: {
+ show: false,
+ },
+ color: "rgba(0,0,0,0)",
+ borderWidth: 0,
+ },
+ emphasis: {
+ color: "rgba(0,0,0,0)",
+ borderWidth: 0,
+ },
+ };
+
+ var dataStyle = {
+
+ };
+ this.option ={
+ title: [
+ {
+ text: value+'%',
+ textAlign: "center",
+ left: "48%",
+ top: "30%",
+ textStyle: {
+ color: "#67abf2",
+ fontSize: 23,
+ },
+ },
+ {
+ text: text,
+ left: "48%",
+ top: "80%",
+ textAlign: "center",
+ textStyle: {
+ color: "#cdd7fa",
+ fontWeight: "normal",
+ fontSize: "16",
+ textAlign: "center",
+ },
+ },
+ ],
+ series: [
+ {
+ type: "pie",
+ hoverAnimation: false,
+ radius: ["60%", "59%"],
+ center: ["50%", "40%"],
+ labelLine: {
+ normal: {
+ show: false,
+ },
+ },
+ label: {
+ normal: {
+ position: "center",
+ },
+ },
+ data: [
+ {
+ value: 100,
+ itemStyle: {
+ normal: {
+ color: "#255788",
+ },
+ },
+ },
+
+ ],
+ },
+ {
+ type: "pie",
+ hoverAnimation: false,
+ radius: ["53%", "60%"],
+ center: ["50%", "40%"],
+ labelLine: {
+ normal: {
+ show: false,
+ },
+ },
+ label: {
+ normal: {
+ position: "center",
+ },
+ },
+ data: [
+ {
+ value: value,
+ itemStyle: {
+ normal: {
+ color: "#68a8f2",
+ },
+ },
+ normal: {
+ show: false,
+ },
+ },
+ {
+ value: 100-value,
+ itemStyle: placeHolderStyle,
+ },
+ ],
+ },
+ ],
+ };
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+
+ },
+ watch: {},
+
+})
+
+
diff --git a/src/components/amplify/jishuguanli/amplify-bgqr.js b/src/components/amplify/jishuguanli/amplify-bgqr.js
new file mode 100644
index 0000000..3968269
--- /dev/null
+++ b/src/components/amplify/jishuguanli/amplify-bgqr.js
@@ -0,0 +1,256 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-bgqr", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
变更签认({{constructionNum}})
+
工程签认({{alterationNum}})
+
+
+
+
+
+
+ {{scope.row[item.data]}}
+
+
+
+
+
{{scope.row[item.data]}}
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ show: false,
+ schemeNav: 1,
+ constructionNum: 0,
+ alterationNum: 0,
+ height: 395,
+ data: {},
+ rowStyle:{
+ fontSize:'25px',
+ height:'64px'
+ },
+ headerStyle:{
+ fontSize:'22px',
+ padding:'10px'
+ },
+ }
+ },
+ mounted() {
+ this.interval = setInterval(this.scroll, 50);
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getSchemeTableData('0')
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ //变更签认
+ onSchemeBtn(n) {
+ this.schemeNav = n == 0 ? 1 : 2
+ this.getSchemeTableData(n)
+ },
+ getSchemeTableData(type){
+ var data = null;
+ if(type == 0){
+ data = {
+ label: [
+ {
+ label: '序号',
+ width: '100',
+ color:'',
+ isShow:true,
+ type:'',
+ type_color:'',
+ data: 'sort',
+ },
+ /* {
+ label: 'idStr',
+ width: '50',
+ color:'',
+ isShow:false,
+ type:'',
+ type_color:'',
+ data: 'id',
+ },*/
+ {
+ label: '变更名称',
+ width: '',
+ color:'#50a2eb',
+ isShow:true,
+ type:'',
+ type_color:'',
+ data: 'name'
+ },
+ {
+ label: '变更内容',
+ width: '',
+ color:'',
+ isShow:true,
+ type:'',
+ type_color:'',
+ data: 'content'
+ },
+ {
+ label: '业主批复情况',
+ width: '',
+ color:'',
+ isShow:true,
+ type:'state',
+ type_color:'situation_color',
+ data: 'situation'
+ },
+
+ ],
+ data: [],
+ }
+ } else{
+ data = {
+ label: [
+ {
+ label: '序号',
+ width: '50',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'sort',
+ },
+ {
+ label: '工程名称',
+ width: '',
+ color:'#50a2eb',
+ type:'',
+ type_color:'',
+ data: 'name'
+ },
+ {
+ label: '工程内容',
+ width: '',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'content'
+ },
+ {
+ label: '业主批复情况',
+ width: '',
+ color:'',
+ type:'state',
+ type_color:'situation_color',
+ data: 'situation'
+ },
+
+ ],
+ data: [],
+ }
+ }
+ axios.post("/system/alterationEndorseConfig/list1",{pageNum:1,pageSize:9999,projectId:this.projectId}).then(res=>{
+ console.log(res.data)
+ let result = res.data
+ if(result.code == 0){
+ this.constructionNum = result.rows.filter(item=>item.alterationType == 0).length
+ this.alterationNum = result.rows.filter(item=>item.alterationType == 1).length
+
+ data.data = result.rows.filter(item=>{
+ if(item.alterationType == type){
+ return item
+ }
+ }).map((item,index)=>{
+ return {
+ sort: index + 1,
+ id:item.id,
+ name:item.alterationName,
+ content:item.alterationContext,
+ situation: item.alterationStatus == '0' ? "已通过":"未通过",
+ situation_color: item.alterationStatus == '0' ? "#39c30b":"#f73647"
+ }
+ })
+ }
+ if(data.data.length > 3){
+ for (let i = 0; i <3 ; i++) {
+ data.data.push(data.data[i])
+ }
+ }
+ this.data = data
+
+ })
+
+
+ },
+
+ // 表格隔行变色
+
+ //左边信息表
+ scroll() {
+ let maxHeight = this.$refs.pxjy.$el.querySelectorAll('.el-table__body')[0].offsetHeight;
+ let clientHeight = this.$refs.pxjy.bodyWrapper.clientHeight;
+ if (Math.abs(this.$refs.pxjy.bodyWrapper.scrollTop - (maxHeight - clientHeight)) < 5) { //预留5像素误差
+ this.$refs.pxjy.bodyWrapper.scrollTop = 0;
+ } else {
+ this.$refs.pxjy.bodyWrapper.scrollTop += 1;//32是每一行表格的高度,每秒滚一行
+ }
+ }
+ ,
+ MouseEnter() {//鼠标移入停止滚动
+ clearInterval(this.interval);
+ }
+ ,
+ MouseLeave() {//鼠标离开继续滚动
+ this.interval = setInterval(this.scroll, 50);
+ },
+ onClickPoint(n) {
+ this.btnNav = n;
+ },
+ },
+ watch: {
+ data:function () {
+ clearInterval(this.interval);
+ this.interval = setInterval(this.scroll, 50);
+ },
+ },
+
+})
+
+
diff --git a/src/components/amplify/jishuguanli/amplify-gczljdagl.js b/src/components/amplify/jishuguanli/amplify-gczljdagl.js
new file mode 100644
index 0000000..1b4343c
--- /dev/null
+++ b/src/components/amplify/jishuguanli/amplify-gczljdagl.js
@@ -0,0 +1,159 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-gczljdagl", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row[item.data]}}
+
+
+
+
+
{{scope.row[item.data]}}
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ projectId:{
+ type:Number
+ },
+ label:{
+ type:String
+ }
+ },
+ data() {
+ return {
+ projectId:JSON.parse(window.localStorage.getItem("data1")).id,
+ show:false,
+ height:515,
+ data:{
+ label: [
+ {
+ label: '序号',
+ width: '50',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'sort'
+ },
+ {
+ label: '楼号名称',
+ width: '',
+ color:'#50a2eb',
+ type:'',
+ type_color:'',
+ data: 'dict_label'
+ },
+ {
+ label: '检验批类型',
+ width: '',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'batchName'
+ },
+ {
+ label: '检验次数',
+ width: '',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'num'
+ },
+ ],
+ data: [{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13',type:''},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'},{GCsort:'1',GCName:'****名称',GCNum:'2023-05-13'}],
+ },
+ }
+ },
+ mounted(){
+ this.interval = setInterval(this.scroll, 50);
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.gainFloorCheck()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ gainFloorCheck() {
+ this.data.data = []
+ axios.post("/api/building/gainFloorCheck",{projectId:this.projectId}).then(res=>{
+ this.data.data = res.data.data
+ })
+ },
+ //左边信息表
+ scroll() {
+ let maxHeight = this.$refs.pxjy.$el.querySelectorAll('.el-table__body')[0].offsetHeight;
+ let clientHeight = this.$refs.pxjy.bodyWrapper.clientHeight;
+ if (Math.abs(this.$refs.pxjy.bodyWrapper.scrollTop - (maxHeight - clientHeight)) < 5) { //预留5像素误差
+ this.$refs.pxjy.bodyWrapper.scrollTop = 0;
+ } else {
+ this.$refs.pxjy.bodyWrapper.scrollTop += 1;//32是每一行表格的高度,每秒滚一行
+ }
+ }
+ ,
+ MouseEnter() {//鼠标移入停止滚动
+ clearInterval(this.interval);
+ }
+ ,
+ MouseLeave() {//鼠标离开继续滚动
+ this.interval = setInterval(this.scroll, 50);
+ },
+ onClickPoint(n) {
+ this.btnNav = n;
+ },
+ // 表格隔行变色
+ tableRowClassName({row, rowIndex}) {
+ if (rowIndex % 2 === 0) {
+ return 'warning-row' //这是类名
+ } else {
+ return ''
+ }
+ },
+ },
+ watch:{
+ projectId:function (n,o) {
+ this.openAmplify()
+ }
+ },
+
+})
+
+
diff --git a/src/components/amplify/jishuguanli/amplify-jsfh.js b/src/components/amplify/jishuguanli/amplify-jsfh.js
new file mode 100644
index 0000000..2c0722a
--- /dev/null
+++ b/src/components/amplify/jishuguanli/amplify-jsfh.js
@@ -0,0 +1,146 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-jsfh", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ costIndex:0,
+ imgRollInterval:undefined,
+ direction:'left',
+ list:[],
+ number:2,
+ projectId:JSON.parse(window.localStorage.getItem("data1")).id,
+ }
+ },
+ mounted(){
+ // 图片轮播 定时器
+ this.imgRollInterval = setInterval(this.imgRoll,5000);
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getTypeSonListB("11","21")
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ getTypeSonListB(typeMain, typeId) {
+ this.list = []
+ axios.post("/api/building/photoList?projectId=" + this.projectId + "&typeMain=" + typeMain + "&typeId=" + typeId).then(res => {
+ if(res.data.code == "200") {
+ var list = []
+ res.data.data.forEach((item)=>{
+ list.push(item.photo_url)
+ })
+ console.log(list)
+ this.list = list
+ }
+ }).catch(err => {
+
+ })
+ },
+
+ carouselLeft(){
+ this.direction = 'left'
+ this.manufacturingCostRoll()
+ },
+ carouselRight(){
+ this.direction = 'right'
+ this.manufacturingCostRoll()
+ },
+ manufacturingCostRoll(){
+ var width = $(".bzh-content-img").innerWidth()
+ if(this.direction == 'right'){
+ if(this.costIndex == this.list.length - this.number){
+ this.costIndex = 0
+ }else{
+ this.costIndex = this.costIndex + 1
+ }
+ }else{
+ if(this.costIndex == 0){
+ this.costIndex = this.list.length - this.number
+ }else{
+ this.costIndex = this.costIndex - 1
+ }
+ }
+ console.log(this.costIndex)
+ $(this.$refs.rollImgMax).animate({scrollLeft:(this.number*width*this.costIndex)+'px'})
+ this.direction = 'right'
+ },
+
+
+ imgRoll(){
+ var width = $(".bzh-content-img").innerWidth()
+ if(this.costIndex == this.list.length - this.number){
+ this.costIndex = 0
+ }else{
+ this.costIndex = this.costIndex + 1
+ }
+ $(this.$refs.rollImgMax).animate({scrollLeft:(this.number*width*this.costIndex)+'px'})
+ },
+ costMouseover(){
+ clearInterval(this.imgRollInterval);
+ },
+ costMouseout(){
+ this.imgRollInterval=setInterval(this.imgRoll,5000);
+ },
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/jishuguanli/amplify-kjcx.js b/src/components/amplify/jishuguanli/amplify-kjcx.js
new file mode 100644
index 0000000..e0b84e9
--- /dev/null
+++ b/src/components/amplify/jishuguanli/amplify-kjcx.js
@@ -0,0 +1,184 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-kjcx", {
+ template: `
+
+
+
+
+
+
+
+
+
科技创新({{sciencelnnovateDataList.length}})
+
+
+
+
+
+
+
+
+
+
+
+
+
课题名称:
+
{{sciencelnnovateData.name}}
+
+
+
+
+
+ {{item.name}}
+
+
+
{{item.status}}
+
未涉及
+
{{item.status}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ //科技创新
+ sciencelnnovateDataList:[],
+ craftVideoIndex:0,
+ craftInterval:'',
+ }
+ },
+ mounted(){
+ //科技创新 知道滚动
+ this.rollCraftInterval = setInterval(this.rollCraftCarousel,5000);
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.scienceInnovateData()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //科技创新
+ scienceInnovateData(){
+ axios.post("/system/scienceInnovateConfig/list1",{pageNum:1,pageSize:9999,projectId:this.projectId}).then(res=>{
+ let result = res.data
+ let tempData = []
+ this.sciencelnnovateDataList = []
+ let tmp = {}
+ if(result.code == 0){
+ result.rows.forEach(item=>{
+ if(!tmp[item.name]){
+ tmp[item.name] = {
+ name:item.name,
+ context:[]
+ }
+ }
+
+ if(item.type == '0'){
+ name = '研究报告'
+ }else if(item.type == '1'){
+ name = '知识产权'
+ }else if(item.type == '2'){
+ name = '论文'
+ }else{
+ name = '工法'
+ }
+
+ if(item.status =='0'){
+ status = '进行中'
+ }else if(item.status =='1'){
+ status = '已完成'
+ }else if(item.status =='4'){
+ status = ''
+ }else{
+ status = '未开始'
+ }
+ tmp[item.name] .context.push({
+ name,
+ status
+ })
+
+ })
+ for(let k in tmp ){
+ this.sciencelnnovateDataList.push(tmp[k])
+ }
+ console.log(this.sciencelnnovateDataList)
+ }
+ })
+ },
+ craftCarouselLeft(){
+ if(this.craftVideoIndex == 0){
+ this.craftVideoIndex = this.sciencelnnovateDataList.length - 1
+ }else {
+ this.craftVideoIndex = this.craftVideoIndex - 1
+ }
+ $(this.$refs.craftVollVideo).animate({scrollLeft:(760*this.craftVideoIndex)+'px'})
+ },
+ craftCarouselRight(){
+ if(this.craftVideoIndex == this.sciencelnnovateDataList.length - 1){
+ this.craftVideoIndex = 0
+ }else {
+ this.craftVideoIndex = this.craftVideoIndex + 1
+ }
+ $(this.$refs.craftVollVideo).animate({scrollLeft:(760*this.craftVideoIndex)+'px'})
+ },
+ rollCraftCarousel(){
+ if(this.craftDirection == 'right'){
+ if(this.craftVideoIndex == this.sciencelnnovateDataList.length - 1){
+ this.craftVideoIndex = 0
+ }else {
+ this.craftVideoIndex = this.craftVideoIndex + 1
+ }
+ }else{
+ if(this.craftVideoIndex == 0){
+ this.craftVideoIndex = this.sciencelnnovateDataList.length - 1
+ }else {
+ this.craftVideoIndex = this.craftVideoIndex - 1
+ }
+ this.craftDirection = 'right'
+ }
+ $(this.$refs.craftVollVideo).animate({scrollLeft:(760*this.craftVideoIndex)+'px'})
+ },
+
+ craftCostMouseout(){
+ clearInterval(this.rollCraftInterval);
+ },
+ craftCostMouseover(){
+ this.rollCraftInterval = setInterval(this.rollCraftCarousel,5000);
+ },
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/jishuguanli/amplify-sgbzgf.js b/src/components/amplify/jishuguanli/amplify-sgbzgf.js
new file mode 100644
index 0000000..37dbf37
--- /dev/null
+++ b/src/components/amplify/jishuguanli/amplify-sgbzgf.js
@@ -0,0 +1,165 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-sgbzgf", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row[item.data]}}
+
+
+
+
+
{{scope.row[item.data]}}
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ projectId:{
+ type:Number
+ },
+ label:{
+ type:String
+ }
+
+ },
+ data() {
+ return {
+ show:false,
+ height:515,
+ data:{
+ label: [
+ {
+ label: '序号',
+ width: '50',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'sort'
+ },
+ {
+ label: '标准名称',
+ width: '',
+ color:'#50a2eb',
+ type:'',
+ type_color:'',
+ data: 'bianName'
+ },
+ {
+ label: '编号',
+ width: '',
+ color:'',
+ type:'',
+ type_color:'',
+ data: 'bianNum'
+ },
+ ],
+ data: [],
+ },
+ }
+ },
+ mounted(){
+ this.interval = setInterval(this.scroll, 50);
+ },
+ methods: {
+ openAmplify(){
+ console.log(this.projectId)
+ this.show = true
+ this.getBiaoZhun()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //施工标准规范
+ getBiaoZhun() {
+ let that = this
+ axios.post("/system/standardinfo/list?projectId="+this.projectId, {
+ projectId:this.projectId
+ }).then(res => {
+ res = res.data.rows
+ let result = res.map((item,index)=>{
+ return {
+ sort:(index + 1),
+ bianName:item.standardName,
+ bianNum:item.standardNum
+ }
+ })
+
+ that.data.data = result
+ })
+ },
+ //左边信息表
+ scroll() {
+ let maxHeight = this.$refs.pxjy.$el.querySelectorAll('.el-table__body')[0].offsetHeight;
+ let clientHeight = this.$refs.pxjy.bodyWrapper.clientHeight;
+ if (Math.abs(this.$refs.pxjy.bodyWrapper.scrollTop - (maxHeight - clientHeight)) < 5) { //预留5像素误差
+ this.$refs.pxjy.bodyWrapper.scrollTop = 0;
+ } else {
+ this.$refs.pxjy.bodyWrapper.scrollTop += 1;//32是每一行表格的高度,每秒滚一行
+ }
+ }
+ ,
+ MouseEnter() {//鼠标移入停止滚动
+ clearInterval(this.interval);
+ }
+ ,
+ MouseLeave() {//鼠标离开继续滚动
+ this.interval = setInterval(this.scroll, 50);
+ },
+ onClickPoint(n) {
+ this.btnNav = n;
+ },
+ // 表格隔行变色
+ tableRowClassName({row, rowIndex}) {
+ if (rowIndex % 2 === 0) {
+ return 'warning-row' //这是类名
+ } else {
+ return ''
+ }
+ },
+ },
+ watch:{
+ projectId:function (n,o) {
+ this.openAmplify()
+ }
+ },
+
+})
+
+
diff --git a/src/components/amplify/jishuguanli/amplify-sjgk.js b/src/components/amplify/jishuguanli/amplify-sjgk.js
new file mode 100644
index 0000000..273fc67
--- /dev/null
+++ b/src/components/amplify/jishuguanli/amplify-sjgk.js
@@ -0,0 +1,144 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-sjgk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
管理交底
+
{{fourClarificaiton.gljd}}
+
+
+
+
+
+
+
+
+
+
施组交底
+
+ {{fourClarificaiton.szjd}}
+
+
+
+
+
+
+
+
+
+
危大工程交底
+
{{fourClarificaiton.zxfajd}} 次
+
+
+
+
+
+
+
+
+
+
技术交底
+
+ {{fourClarificaiton.jsjd}} 次
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ label:{
+ type:String
+ },
+ projectId:{
+ type:Number
+ }
+ },
+ data() {
+ return {
+ show:false,
+ fourClarificaiton:{
+ }
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getFourData()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //四级交底情况
+ getFourData(){
+ let that = this
+ axios.get("//api-tmp.makalu.cc/szhjzgkpt/four/clarificaiton").then(res => {
+ that.fourClarificaiton = res.data
+ axios.post("/api/project/selectTechnicalDisclosureInformationList",{
+ projectId:this.projectId,
+ }).then(res => {
+ let zx = 0
+ let js = 0
+ that.fourDataList = res.data.data
+ for(let tmp of res.data.data){
+ switch (tmp.type) {
+ case 1:
+ js++
+ tmp.sort = js
+ break
+ case 2:
+ zx++
+ tmp.sort = zx
+ break
+ }
+ }
+ that.fourClarificaiton.zxfajd = zx
+ that.fourClarificaiton.jsjd = js
+ })
+ })
+ },
+
+ },
+ watch:{
+ projectId:function (n,o) {
+ this.openAmplify()
+ }
+ },
+
+})
+
+
diff --git a/src/components/amplify/jixieguanli/amplify-czzqk.js b/src/components/amplify/jixieguanli/amplify-czzqk.js
new file mode 100644
index 0000000..0e602f3
--- /dev/null
+++ b/src/components/amplify/jixieguanli/amplify-czzqk.js
@@ -0,0 +1,224 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-czzqk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
操作证数量
+
{{certInfoData.count}} 个
+
+
+
+
+
+
+
+
已绑定数量
+
{{certInfoData.bindCount}} 台
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ certInfoData:{},
+ //操作证数据
+ certificateData:[
+ {
+ text:"职工",
+ value:0
+ },{
+ text:"劳务派遣",
+ value:0
+ },{
+ text:"其他",
+ value:0
+ },
+ ],
+ show: false,
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getCertInfoData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ //操作证情况统计
+ getCertInfoData(){
+ axios.post(requestUrl+"getCertInfoData?deptId="+deptId+"&projectId="+JSON.parse(localStorage.getItem("data1")).jzgj, {
+ }).then(res => {
+ this.certInfoData = res.data.data;
+ this.certificateData = [{text:"职工",value:res.data.data.zgCount},{text:"劳务派遣",value:res.data.data.lwCount},{text:"其他",value:res.data.data.qtCount}]
+ this.getChartData()
+ }).catch(err => {
+ })
+ },
+ //职工、劳务数据图
+ getChartData() {
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.chart);
+ this.echart(chChart, this.certificateData)
+ },
+ echart(chChart, chartData) {
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var value = []
+ var text = []
+ var total = 0
+ var bgd = []
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgd.push(100)
+ total += chartData[i].value
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ prop.push((value[j] / total * 100).toFixed(1))
+ }
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "-10%",
+ top: "2%",
+ containLabel: true,
+ },
+ xAxis: {
+ show: false,
+ type: "value",
+ },
+ yAxis: [
+ {
+ type: "category",
+ inverse: true,
+ axisLabel: {
+ show: true,
+ textStyle: {
+ color: "#cbdaff",
+ fontSize: "25",
+ },
+ },
+ splitLine: {
+ show: false,
+ },
+ axisTick: {
+ show: false,
+ },
+ axisLine: {
+ show: false,
+ },
+ data: text,
+ },
+ {
+ type: "category",
+ inverse: true,
+ axisTick: "none",
+ axisLine: "none",
+ show: true,
+ axisLabel: {
+ textStyle: {
+ color: "#cbdaff",
+ fontSize: "25",
+ },
+ formatter: function (params, i) {
+ var text = "{a|" + value[i] + "}{a| " + prop[i] + "%}";
+ return text;
+ },
+ rich: {
+ a: {
+ fontSize: '25px',
+ color: "#cbdaff",
+ },
+ },
+ },
+ data: prop,
+ },
+ ],
+ series: [
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 20,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgd,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch: {
+ data: function (n, o) {
+ this.getChartData(this.data)
+ }
+ }
+
+
+
+
+})
+
+
diff --git a/src/components/amplify/jixieguanli/amplify-dkgk.js b/src/components/amplify/jixieguanli/amplify-dkgk.js
new file mode 100644
index 0000000..ac1b999
--- /dev/null
+++ b/src/components/amplify/jixieguanli/amplify-dkgk.js
@@ -0,0 +1,142 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-dkgk", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ //打卡管控提示
+ abnormalNav:0,
+ //打卡管控提示 表格数据
+ interval:'',
+ intervalOne:'',
+ rowStyle:{
+ color:'#ffffff',
+ fontSize:'24px',
+ height:'64px'
+ },
+ tableData:[],
+ tableTile:[],
+ showTableData:[],
+ showTableTile: [],
+ headerRow:{
+ fontSize: '20px'
+ }
+ }
+ },
+ mounted(){
+ // //打卡管控提示 自动滚动
+ this.interval = setInterval(this.scroll,50);
+ },
+ methods: {
+
+ openAmplify(){
+ this.show = true
+ this.getClockInException()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+
+ //打卡管控提示
+ onAbnormalNav(n){
+ this.abnormalNav = n;
+ this.showTableData = this.tableData[n];
+ this.showTableTile = this.tableTile[n];
+ },
+ //打卡管控提示
+ getClockInException(){
+ axios.post(requestUrl+"getClockInException?deptId="+deptId+"&projectId="+JSON.parse(localStorage.getItem("data1")).jzgj+"&pageSize=50", {
+ }).then(res => {
+ this.tableData = [
+ res.data.data.signExceptionList,
+ res.data.data.workTimeExceptionList,
+ res.data.data.certExceptionList
+ ]
+ this.tableTile = [
+ [{name:"项目名称",value:"projectName"},{name:"姓名",value:"userName"},{name:"打卡设备",value:"deviceName"},{name:"打卡时间",value:"dataTime"}],
+ [{name:"项目名称",value:"projectName"},{name:"设备名称",value:"deviceName"},{name:"异常原因",value:"errorReason"},{name:"打卡时间",value:"date"}],
+ [{name:"项目名称",value:"projectAbbreviation"},{name:"姓名",value:"certificateName"},{name:"过期天数",value:"date"},{name:"到期时间",value:"validityDate"}]
+ ];
+ let num = 0;
+ if(res.data.data.signExceptionList.length > 0){
+ num = 0;
+ }else if(res.data.data.workTimeExceptionList.length > 0){
+ num = 1;
+ }else if(res.data.data.certExceptionList.length >0){
+ num = 2
+ }else{
+ num = 0;
+ }
+ this.abnormalNav = num;
+ this.showTableData = this.tableData[num];
+ this.showTableTile = this.tableTile[num];
+ }).catch(err => {
+ })
+ },
+ // 表格滚动 方法 --------- 开始
+ scroll(){
+ let maxHeight=this.$refs.wgzp.$el.querySelectorAll ('.el-table__body')[0].offsetHeight;
+ let clientHeight=this.$refs.wgzp.bodyWrapper.clientHeight;
+ if(Math.abs(this.$refs.wgzp.bodyWrapper.scrollTop-(maxHeight-clientHeight))<5){ //预留5像素误差
+ this.$refs.wgzp.bodyWrapper.scrollTop=0;
+ }else{
+ this.$refs.wgzp.bodyWrapper.scrollTop+= 1;//32是每一行表格的高度,每秒滚一行
+ }
+ },
+ MouseEnter(){//鼠标移入停止滚动
+ clearInterval(this.interval);
+ },
+ MouseLeave(){//鼠标离开继续滚动
+ this.interval=setInterval(this.scroll,30);
+ },
+ // 表格滚动 方法 ------ 结束
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/jixieguanli/amplify-fljgs.js b/src/components/amplify/jixieguanli/amplify-fljgs.js
new file mode 100644
index 0000000..88c2765
--- /dev/null
+++ b/src/components/amplify/jixieguanli/amplify-fljgs.js
@@ -0,0 +1,299 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-fljgs", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ show: false,
+ infoNav: 0,
+ classifyBarData: [],
+ showClassifyBarData: [],
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getClassifyBarData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+
+ //分类及工时情况
+ getClassifyBarData() {
+ axios.post(requestUrl + "getClassifyWorks?deptId=" + deptId + "&pageSize=4&projectId=" + JSON.parse(localStorage.getItem("data1")).jzgj, {}).then(res => {
+ this.classifyBarData = [res.data.data.num, res.data.data.dayWorkTime, res.data.data.monthWorkTime];
+ console.log(this.classifyBarData)
+ this.showClassifyBarData = this.classifyBarData[0];
+ this.getChartData()
+ }).catch(err => {
+ })
+ },
+ //数据图展示
+ getChartData() {
+ //品类金额占比 饼图
+ var chChartPie = echarts.init(this.$refs.chart);
+ this.echartPie(chChartPie, this.showClassifyBarData)
+ },
+ echartPie(chChart, data) {
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ if (data.length > 0) {
+ var max = data[0].total
+ } else {
+ var max = 0
+ }
+ var nameData = [];
+ var totalData = []
+ var background = []
+ var yesMonitor = []
+ var notMonitor = []
+ var yesProp = []
+ var notProp = []
+ var unitData = []
+
+ for (let i = data.length - 1; i >= 0; i--) {
+ nameData.push(data[i].name);
+ totalData.push(data[i].total)
+ unitData.push(data[i].unit)
+ background.push(100);
+ yesMonitor.push(data[i].yesMonitor);
+ notMonitor.push(data[i].notMonitor);
+ yesProp.push((data[i].yesMonitor / max) * 100)
+ notProp.push((data[i].notMonitor / max) * 100)
+ }
+
+ var legend = ["已监控", "未监控"]
+ if (this.legend) {
+ legend = this.legend
+ }
+
+ this.option = {
+ grid: {
+ //图表的位置
+ top: "8%",
+ left: "3%",
+ right: "5%",
+ bottom: "-12%",
+ containLabel: true,
+ },
+ legend: {
+ right: "0",
+ top: "0",
+ //icon: "circle",
+ itemWidth: 22,
+ itemHeight: 20,
+ itemGap: 16,
+ textStyle: {
+ fontSize: 25,
+ color: '#c6d9fa',
+ },
+ data: legend,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {},
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ }, {
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize: '25',
+ },
+ unit: {
+ color: '#6c829a',
+ fontSize: '25',
+ },
+ yes: {
+ color: '#55adf7',
+ fontSize: '25',
+ },
+ not: {
+ color: '#4677fa',
+ fontSize: '25',
+ },
+ index: {
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding: [0, 0, 0, 5],
+ fontSize: '25',
+ },
+ name: {
+ width: 480,
+ color: '#c6d9fa',
+ padding: [0, 0, 0, 10],
+ fontSize: '25',
+ },
+ color: {
+ color: '#8ca2be',
+ fontSize: '20',
+ },
+ arrow: {
+ width: 20,
+ height: 15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function (data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ return '{arrow|}{index|No.' + (nameData.length - data.dataIndex) + '}{name|' + nameData[data.dataIndex] + '}{prop|' + totalData[data.dataIndex] + '}{unit| ' + unitData[data.dataIndex] + '}{prop|(} {yes|' + yesMonitor[data.dataIndex] + '}{unit| ' + unitData[data.dataIndex] + '/}{not|' + notMonitor[data.dataIndex] + '}{unit| ' + unitData[data.dataIndex] + '}{prop|)} ';
+ },
+ }
+ },
+ data: background
+ },
+ {
+ type: 'bar',
+
+ silent: true,
+ yAxisIndex: 1,
+ barWidth: 20,
+ itemStyle: {
+ normal: {
+ color: 'rgba(0,82,198,0.3)'
+ },
+ emphasis: {
+ color: 'rgba(0,82,198,0.3)'
+ }
+ },
+ data: background
+ },
+ {
+ type: 'bar',
+ name: legend[0],
+
+ stack: '1',
+ legendHoverLink: false,
+ barWidth: 20,
+ itemStyle: {
+ normal: {
+ color: '#52adf4'
+ },
+ emphasis: {
+ color: '#52adf4'
+ }
+ },
+ data: yesProp
+ }, {
+ type: 'bar',
+ name: legend[1],
+ stack: '1',
+ legendHoverLink: false,
+ barWidth: 20,
+ itemStyle: {
+ normal: {
+ color: '#4677ff'
+ },
+ emphasis: {
+ color: '#4677ff'
+ }
+ },
+ data: notProp
+ }]
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ //头部切换
+ onWarningInfoNav(n) {
+ this.infoNav = n
+ this.showClassifyBarData = this.classifyBarData[n];
+ this.getChartData()
+ },
+ },
+ watch: {},
+
+})
+
+
diff --git a/src/components/amplify/jixieguanli/amplify-jkycyj.js b/src/components/amplify/jixieguanli/amplify-jkycyj.js
new file mode 100644
index 0000000..7a489a9
--- /dev/null
+++ b/src/components/amplify/jixieguanli/amplify-jkycyj.js
@@ -0,0 +1,125 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-jkycyj", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ //监控异常预警
+ showTableDataOne:[],
+ showTableTileOne: [],
+ rowStyleOne:{
+ color:'#ffffff',
+ fontSize:'24px',
+ height:'64px'
+ },
+ headerRowOne:{
+ fontSize: '20px'
+ }
+ }
+ },
+ mounted(){
+ this.intervalOne = setInterval(this.scrollOne,50);
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getExceptionAlert()
+ this.getDeviceWarnData()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ getExceptionAlert(){
+ axios.get(requestUrl+"getExceptionAlert?deptId="+deptId+"&projectId="+JSON.parse(localStorage.getItem("data1")).jzgj+"&size=10", {
+ }).then(res => {
+ this.showTableDataOne = res.data;
+ this.showTableTileOne = [{name:"归属项目",value:"project_abbreviation"},{name:"机械名称",value:"device_name"},{name:"预警类型",value:"alarm_type_name"},{name:"预警地址",value:"address"}];
+ this.getDeviceWarnData();
+ }).catch(err => {
+ })
+ },
+ getDeviceWarnData(){
+ //安全预警
+ axios.get("https://aqzg.makalu.cc/api/statistics/getDeviceWarnData",{params:{"deptId":131,"projectId":JSON.parse(localStorage.getItem("data1")).aqzg}}
+ ).then(res => {
+ if(res.data.length>0){
+ let objArray = [];
+ for(let i = 0;i {
+ });
+ },
+ //表格滚动
+ scrollOne(){
+ let maxHeight=this.$refs.wgzpOne.$el.querySelectorAll ('.el-table__body')[0].offsetHeight;
+ let clientHeight=this.$refs.wgzpOne.bodyWrapper.clientHeight;
+ if(Math.abs(this.$refs.wgzpOne.bodyWrapper.scrollTop-(maxHeight-clientHeight))<5){ //预留5像素误差
+ this.$refs.wgzpOne.bodyWrapper.scrollTop=0;
+ }else{
+ this.$refs.wgzpOne.bodyWrapper.scrollTop+= 1;//32是每一行表格的高度,每秒滚一行
+ }
+ },
+ MouseEnterOne(){//鼠标移入停止滚动
+ clearInterval(this.intervalOne);
+ },
+ MouseLeaveOne(){//鼠标离开继续滚动
+ this.intervalOne=setInterval(this.scrollOne,50);
+ }
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/jixieguanli/amplify-sbgk.js b/src/components/amplify/jixieguanli/amplify-sbgk.js
new file mode 100644
index 0000000..80eac60
--- /dev/null
+++ b/src/components/amplify/jixieguanli/amplify-sbgk.js
@@ -0,0 +1,166 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-sbgk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{showOverviewLabel}}
+
+ {{showOverviewData.countNum}} 台
+
+
+
+
+
+
+
+
自有
+
{{showOverviewData.zyNum}}
+
+
+
+
+
+
租赁
+
{{showOverviewData.zlNum}}
+
+
+
+
+
+
分包
+
{{showOverviewData.fbNum}}
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ overview: 0,
+ showOverviewLabel:'设备数量',
+ surveyUrlSb: '/images/survey_icon_1.png',
+ overviewInterval: '',
+ overviewData:[],
+ showOverviewData: {},
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ //设备概况点击事件定时器
+ this.overviewInterval = setInterval(this.overviewClick, 5000);
+ this.getOverviewData()
+ },
+ closeAmplify(){
+ this.show = false
+ this.overview = 0
+ this.showOverviewLabel='设备数量'
+ this.surveyUrlSb= '/images/survey_icon_1.png'
+ clearInterval(this.overviewInterval);
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ this.overview = 0
+ this.showOverviewLabel='设备数量'
+ this.surveyUrlSb= '/images/survey_icon_1.png'
+ clearInterval(this.overviewInterval);
+ }
+ },
+ //设备概况点击事件定时器方法
+ overviewClick() {
+ if (this.overview < 2) {
+ this.overview = this.overview + 1
+ } else {
+ this.overview = 0
+ }
+ this.showOverviewData = this.overviewData[this.overview];
+ if (this.overview == 0) {
+ this.showOverviewLabel = '设备数量'
+ this.surveyUrlSb = '/images/survey_icon_1.png'
+ } else if (this.overview == 1) {
+ this.showOverviewLabel = '绑定数量'
+ this.surveyUrlSb = '/images/survey_icon_2.png'
+ } else {
+ this.showOverviewLabel = '监控数量'
+ this.surveyUrlSb = '/images/survey_icon_3.png'
+ }
+ },
+ //设备概况点击事件
+ onClickoOverview(n) {
+ this.overview = n
+ this.showOverviewData = this.overviewData[this.overview];
+ if (this.overview == 0) {
+ this.showOverviewLabel = '设备数量'
+ this.surveyUrlSb = '/images/survey_icon_1.png'
+ } else if (this.overview == 1) {
+ this.showOverviewLabel = '绑定数量'
+ this.surveyUrlSb = '/images/survey_icon_2.png'
+ } else {
+ this.showOverviewLabel = '监控数量'
+ this.surveyUrlSb = '/images/survey_icon_3.png'
+ }
+ },
+ //设备概况数据
+ getOverviewData(){
+ axios.post(requestUrl+"getEquipmentOverview?deptId="+deptId+"&projectId="+JSON.parse(localStorage.getItem("data1")).jzgj, {
+ }).then(res => {
+ this.overviewData = [res.data.data.count,res.data.data.bind,res.data.data.monitor];
+ this.showOverviewData = this.overviewData[0];
+ }).catch(err => {
+ })
+ },
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/jixieguanli/amplify-sbyxzt.js b/src/components/amplify/jixieguanli/amplify-sbyxzt.js
new file mode 100644
index 0000000..f14f032
--- /dev/null
+++ b/src/components/amplify/jixieguanli/amplify-sbyxzt.js
@@ -0,0 +1,326 @@
+import Vue from 'vue'
+
+var vms = Vue.component("amplify-sbyxzt", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ typeDistributionData:[
+ {
+ name:'运行',
+ value:'0'
+ },
+ {
+ name:'静止 ',
+ value:'0'
+ }
+ ],
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getDeviceInfoByProjectId()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //设备信息
+ getDeviceInfoByProjectId(){
+ var that = this;
+ axios.post(requestUrl+"getDeviceInfoByProjectId?projectId="+JSON.parse(localStorage.getItem("data1")).jzgj, {
+ }).then(res => {
+ let runNumber = 0;
+ let notRunNumber = 0;
+ let deviceCount = 0;
+ for(let i = 0;i {
+ let deviceInfo = res.data.deviceInfo;
+ //监控设备
+ if(smartTerminalNumber != ""){
+ //运行、静止设备
+ if(deviceInfo == undefined || deviceInfo.angleData == undefined){
+ notRunNumber ++;
+ }else{
+ runNumber ++;
+ }
+ }
+ if(deviceId == 71259 || smartTerminalNumber == "aqzg-415"){
+ that.oneData={
+ rentalAngleOne:deviceInfo== undefined?0:deviceInfo.angleData,
+ rentalRangeOne:deviceInfo== undefined?0:deviceInfo.ampData,
+ rentalBrachiumOne:deviceInfo== undefined?0:deviceInfo.foreArmLength,
+ deviceNumOne:deviceNum,
+ }
+ }else if(deviceId == 71258 || smartTerminalNumber == "aqzg-411"){
+ that.twoData={
+ rentalAngleTwo:deviceInfo== undefined?0:deviceInfo.angleData,
+ rentalRangeTwo:deviceInfo== undefined?0:deviceInfo.ampData,
+ rentalBrachiumTwo:deviceInfo== undefined?0:deviceInfo.foreArmLength,
+ deviceNumTwo:deviceNum,
+ }
+ }else if(deviceId == 71257 || smartTerminalNumber == "aqzg-412"){
+ that.threeData={
+ rentalAngleThree:deviceInfo== undefined?0:deviceInfo.angleData,
+ rentalRangeThree:deviceInfo== undefined?0:deviceInfo.ampData,
+ rentalBrachiumThree:deviceInfo== undefined?0:deviceInfo.foreArmLength,
+ deviceNumThree:deviceNum,
+ }
+ }else if(deviceId == 71804 || smartTerminalNumber == "aqzg-413"){
+ that.fourData={
+ rentalAngleFour:deviceInfo== undefined?0:deviceInfo.angleData,
+ rentalRangeFour:deviceInfo== undefined?0:deviceInfo.ampData,
+ rentalBrachiumFour:deviceInfo== undefined?0:deviceInfo.foreArmLength,
+ deviceNumFour:deviceNum,
+ }
+ }else if(deviceId == 71803 || smartTerminalNumber == "aqzg-414"){
+ that.fiveData={
+ rentalAngleFive:deviceInfo== undefined?0:deviceInfo.angleData,
+ rentalRangeFive:deviceInfo== undefined?0:deviceInfo.ampData,
+ rentalBrachiumFive:deviceInfo== undefined?0:deviceInfo.foreArmLength,
+ deviceNumFive:deviceNum,
+ }
+ }else if(deviceId == 71802 || smartTerminalNumber == "aqzg-410"){
+ that.sixData={
+ rentalAngleSix:deviceInfo== undefined?0:deviceInfo.angleData,
+ rentalRangeSix:deviceInfo== undefined?0:deviceInfo.ampData,
+ rentalBrachiumSix:deviceInfo== undefined?0:deviceInfo.foreArmLength,
+ deviceNumSix:deviceNum,
+ }
+ }
+ if(parseInt(runNumber)+parseInt(notRunNumber) == deviceCount){
+ that.getTypeDistribution(runNumber,notRunNumber);
+ }
+ }).catch(err => {
+ })
+ }
+ }).catch(err => {
+ console.log(err);
+ })
+
+ },
+ //设备运行状态数据接口
+ getTypeDistribution(runNumber,notRunNumber){
+ var that = this;
+ axios.post(requestUrl+"getRunningDynamics?deptId="+deptId+"&projectId="+JSON.parse(localStorage.getItem("data1")).jzgj, {
+ }).then(res => {
+ let data = res.data.data;
+
+ let array = [];
+ if(data.length > 0) {
+ array = data;
+ } else {
+ array = [{
+ name:'运行',
+ value:'0'
+ },
+ {
+ name:'静止',
+ value:'0'
+ }];
+ }
+ console.log(array)
+ let dataArray = [];
+ for(let i = 0;i {
+ })
+ },
+
+ //数据图
+ getChartData(){
+ //品类金额占比 饼图
+ var chChartPie = echarts.init(this.$refs.warningPieChart);
+ this.echartPie(chChartPie,this.typeDistributionData)
+ },
+ echartPie(chChart,chartData){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var total_datas = 0;
+ var data = [];
+ var legendData = [];
+ var color = ['#4474fa','#52aef7','#2075ae']
+ for (let i = 0; i {
+ return a + b.value;
+ }, 0);*/
+ this.option = {
+ title: {
+ text: total_datas,
+ subtext: "台",
+ x: "center",
+ y: "140",
+ textStyle: {
+ color: "#0dd2fd",
+ fontSize: 42,
+ fontWeight: "normal",
+ align: "center",
+ width: "300px",
+ },
+ subtextStyle: {
+ color: "#a5b5f0",
+ fontSize: 25,
+ fontWeight: "normal",
+ align: "center",
+ },
+ },
+ tooltip: {
+ trigger: 'item',
+ formatter: "{b} {c} ({d}%)"
+ },
+ legend: {
+ width:'100%',
+ left: "center",
+ right: "0",
+ bottom: "5",
+ //icon: "circle",
+ itemWidth: 25,
+ itemGap:52,
+ textStyle: {
+ fontSize: 60,
+ rich: {
+ name: {
+ color: "#c3dbfd",
+ padding: [10, 5, 30, 5],
+ // align: 'right'
+ // width: 60
+ fontSize: 25,
+ },
+ percent: {
+ color: "#18DB9F",
+ fontSize: 16,
+ padding: [0, 5, 0, 5],
+ // align: 'right'
+ fontSize: 25,
+ },
+ },
+ },
+ formatter: function (name) {
+ let res = chartData.filter((v) => v.name === name);
+ let percent = total_datas == 0?0:((res[0].value * 100) / total_datas).toFixed(2);
+ return "{name| " + name + "}\n{percent|" + res[0].value + "}{percent|" + percent + "%}";
+ },
+ },
+ series: [
+ {
+ name: "品类金额占比",
+ type: "pie",
+ center: ["50%", "40%"],
+ radius: ["42%", "60%"],
+ data: data,
+ label: {
+ show: false,
+ },
+ itemStyle: {
+ normal: {
+ borderWidth: 10,
+ borderColor: "#051a36"
+ }
+ },
+
+ },
+ {
+ name: "外边框",
+ type: "pie",
+ clockWise: false, //顺时加载
+ hoverAnimation: false, //鼠标移入变大
+ center: ["50%", "40%"],
+ radius: ["66%", "66%"],
+ label: {
+ normal: {
+ show: false,
+ },
+ },
+ data: [
+ {
+ // value: 9,
+ // name: "",
+ // itemStyle: {
+ // normal: {
+ // borderWidth: 3,
+ // borderColor: "#152c65",
+ // },
+ // },
+ },
+ ],
+ },
+ ],
+ }
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/laowuyonggong/amplify-aqjy.js b/src/components/amplify/laowuyonggong/amplify-aqjy.js
new file mode 100644
index 0000000..90178c9
--- /dev/null
+++ b/src/components/amplify/laowuyonggong/amplify-aqjy.js
@@ -0,0 +1,510 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-aqjy", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ ljaqjy: 0,
+ lsry: 0,
+ show: false,
+ safetyEducationData1: [
+ {text: "接受培训率", value: 0},
+ ],
+ safetyEducationData2: [
+ {text: "接受培训率", value: 0},
+ ],
+ width: 400
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getLWData()
+ this.getLSRYData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ getLWDatas(){
+
+ },
+ getLWData() {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getAllUserData?token=" + JSON.parse(localStorage.getItem("data1")).smz_token
+ + "&deptId=123&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id, {}).then(res => {
+
+
+ if (res.data.code == "-1") {
+
+ this.ljaqjy = 0;
+
+ }
+ this.ljaqjy = res.data.zcrs + '';
+ console.log(res.data.zcrs)
+ var safetyEducationData = [];
+ var safetyEducationData2 = [];
+ // safetyEducationData.push({text:"培训通过率",value:(res.data.jspxrs*res.data.pxtgl/100).toFixed(0)});
+ // safetyEducationData2.push({text:"接受培训率",value:res.data.jspxrs });
+ safetyEducationData.push({text: "接受培训率", value: res.data.zcrs});
+ safetyEducationData2.push({text: "接受培训率", value: res.data.zcrs});
+ this.safetyEducationData1 = safetyEducationData;
+ this.safetyEducationData2 = safetyEducationData2;
+ this.getChartData()
+ this.getChartData1()
+ }).catch(err => {
+ })
+ },
+ getLSRYData() {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getUserInfoTempList?token=" + JSON.parse(localStorage.getItem("data1")).smz_token
+ + "&isWork=1&deptId=123&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id, {}).then(res => {
+ this.lsry = res.data.data.length + '';
+ }).catch(err => {
+ })
+ },
+ getChartData() {
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.charts1);
+ this.echart1(chChart, this.safetyEducationData1)
+ },
+ //出勤情况-灰名单
+ getChartData1() {
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.charts2);
+ this.echart2(chChart, this.safetyEducationData2)
+ },
+ echart1(chChart, chartData) {
+ console.log(chartData)
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ if (this.workMax) {
+ total = this.workMax
+ } else {
+ total += chartData[i].value
+ }
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ if (total == 0) {
+ prop.push(0)
+ } else {
+ prop.push((value[j] / total * 100).toFixed(1))
+ }
+ }
+ var unit = '人'
+ if (this.unit) {
+ unit = this.unit
+ }
+
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {},
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ }, {
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize: '25',
+ },
+ unit: {
+ color: '#6c829a',
+ fontSize: '25',
+ },
+ yes: {
+ color: '#55adf7',
+ fontSize: '25',
+ },
+ not: {
+ color: '#4677fa',
+ fontSize: '25',
+ },
+ index: {
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding: [0, 0, 0, 5],
+ fontSize: '25',
+ },
+ name: {
+ width: this.width,
+ color: '#c6d9fa',
+ padding: [0, 0, 0, 5],
+ fontSize: '25',
+ },
+ color: {
+ color: '#8ca2be',
+ fontSize: '20',
+ },
+ arrow: {
+ width: 20,
+ height: 15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function (data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ // if(that.show == true){
+ // return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'}';
+ // }else{
+ // return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ // }
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| 人} {prop|' + prop[data.dataIndex] + '}{color| %} ';
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 16,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ that.$emit('personnel', params.dataIndex);
+ })
+ })
+ },
+ //出勤情况-灰名单
+ echart2(chChart, chartData) {
+ console.log(chartData)
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ if (this.workMax) {
+ total = this.workMax
+ } else {
+ total += chartData[i].value
+ }
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ console.log(value)
+ if (total == 0) {
+ prop.push(0)
+ } else {
+ prop.push((value[j] / total * 100).toFixed(1))
+ }
+ }
+ console.log(prop)
+ var unit = '人'
+ if (this.unit) {
+ unit = this.unit
+ }
+
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {},
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ }, {
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize: '25',
+ },
+ unit: {
+ color: '#6c829a',
+ fontSize: '25',
+ },
+ yes: {
+ color: '#55adf7',
+ fontSize: '25',
+ },
+ not: {
+ color: '#4677fa',
+ fontSize: '25',
+ },
+ index: {
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding: [0, 0, 0, 5],
+ fontSize: '25',
+ },
+ name: {
+ width: this.width,
+ color: '#c6d9fa',
+ padding: [0, 0, 0, 5],
+ fontSize: '25',
+ },
+ color: {
+ color: '#8ca2be',
+ fontSize: '20',
+ },
+ arrow: {
+ width: 20,
+ height: 15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function (data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ if (that.show == true) {
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| ' + unit + '}';
+ } else {
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| ' + unit + '} {prop|' + prop[data.dataIndex] + '}{color| %} ';
+ }
+
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 16,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ that.$emit('personnel', params.dataIndex);
+ })
+ })
+ },
+
+ },
+ watch: {},
+
+})
+
+
diff --git a/src/components/amplify/laowuyonggong/amplify-cjdwfb.js b/src/components/amplify/laowuyonggong/amplify-cjdwfb.js
new file mode 100644
index 0000000..dbf71d8
--- /dev/null
+++ b/src/components/amplify/laowuyonggong/amplify-cjdwfb.js
@@ -0,0 +1,106 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-cjdwfb", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ //参见单位分布
+ seeUnitData: [],
+ seeUnitInterval: '',
+ show:false,
+ rowStyle: {
+ color: '#B6CFEF',
+ fontSize: '24px',
+ height: '64px'
+ },
+ headerStyle:{
+ color: '#B6CFEF',
+ fontSize: '24px',
+ height: '64px'
+ },
+ showTitle: ""
+ }
+ },
+ mounted(){
+ this.seeUnitInterval = setInterval(this.seeUnitScroll, 50);
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getUnitPeopleNum()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ getUnitPeopleNum() {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getCqUnitPeopleNum?token=" + JSON.parse(localStorage.getItem("data1")).smz_token + "&deptId=123&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id, {}).then(res => {
+ if (res.data.state == "OK") {
+ let n = 0
+ for(let da of res.data.data){
+ n += da.rs
+ }
+ this.showTitle = "人数(" + n +")"
+ this.seeUnitData = res.data.data
+ } else {
+ this.seeUnitData = [];
+ }
+ }).catch(err => {
+ })
+ },
+ seeUnitScroll() {
+ let maxHeight = this.$refs.seeUnit.$el.querySelectorAll('.el-table__body')[0].offsetHeight;
+ let clientHeight = this.$refs.seeUnit.bodyWrapper.clientHeight;
+ if (Math.abs(this.$refs.seeUnit.bodyWrapper.scrollTop - (maxHeight - clientHeight)) < 5) { //预留5像素误差
+ this.$refs.seeUnit.bodyWrapper.scrollTop = 0;
+ } else {
+ this.$refs.seeUnit.bodyWrapper.scrollTop += 1;//32是每一行表格的高度,每秒滚一行
+ }
+ },
+ seeUnitMouseEnter() {//鼠标移入停止滚动
+ clearInterval(this.seeUnitInterval);
+ },
+ seeUnitMouseLeave() {//鼠标离开继续滚动
+ this.seeUnitInterval = setInterval(this.seeUnitScroll, 50);
+ }
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/laowuyonggong/amplify-gzzb.js b/src/components/amplify/laowuyonggong/amplify-gzzb.js
new file mode 100644
index 0000000..b7abbb5
--- /dev/null
+++ b/src/components/amplify/laowuyonggong/amplify-gzzb.js
@@ -0,0 +1,484 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-gzzb", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ show: false,
+ typedata:[],
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getGZData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ getGZData() {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getCqWorkTypeData?token=" + JSON.parse(localStorage.getItem("data1")).smz_token + "&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id, {}).then(res => {
+ var workPropData = [];
+ if (res.data.code != "-1") {
+ var data = res.data.workTypeData;
+ for (let i = 0; i < data.length; i++) {
+ workPropData.push({
+ text: data[i].name,
+ value: data[i].value,
+ prop: data[i].percent,
+ id: data[i].id
+ })
+ }
+ }
+ var workPropDataNew = []
+ var val={
+ id : '',
+ text:'其他工种',
+ prop : 0,
+ value : 0,
+ }
+
+ if(workPropData.length > 0){
+ for (let i = 0; i < workPropData.length ; i++) {
+ if(workPropData[i].text == '其他工种' || workPropData[i].text == '其他'){
+ val.id += workPropData[i].id+','
+ val.prop += Number(workPropData[i].prop)
+ val.value += Number(workPropData[i].value)
+ }else {
+ workPropDataNew.push(workPropData[i])
+ }
+ }
+ }
+ workPropDataNew.push(val)
+ this.typedata = workPropDataNew;
+
+ this.getChartData()
+ this.getChartData1()
+ }).catch(err => {
+ })
+ },
+ //左边圆形图
+ getChartData(){
+ //品类金额占比 饼图
+ var chChartPie = echarts.init(this.$refs.amplifyBox);
+ this.echartPie(chChartPie,this.typedata)
+ },
+ echartPie(chChart,chartData){
+ // console.log(chartData)
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var total_datas = 0;
+ var data = [];
+ var legendData = [];
+ var color = ['#4974ff','#52aef7','#6863d7','#1d5d89','#20e6ff','#67feef']
+ for (let i = 0; i {
+ return a + b.value;
+ }, 0);*/
+ this.option = {
+ title: {
+ text: total_datas,
+ subtext: "总人数",
+ x: "center",
+ y: "143",
+ textStyle: {
+ color: "#0dd2fd",
+ fontSize: 52,
+ fontWeight: "normal",
+ align: "center",
+ width: "200px",
+ },
+ subtextStyle: {
+ color: "#a5b5f0",
+ fontSize: 28,
+ fontWeight: "normal",
+ align: "center",
+ },
+ },
+ tooltip: {
+ trigger: 'item',
+ formatter: "{b} {c} ({d}%)"
+ },
+ series: [
+ {
+ name: "品类金额占比",
+ type: "pie",
+ center: ["50%", "50%"],
+ radius: ["53%", "70%"],
+ data: data,
+ label: {
+ show: false,
+ },
+ itemStyle: {
+ normal: {
+ borderWidth: 10,
+ borderColor: "#051a36"
+ }
+ },
+
+ },
+ {
+ name: "外边框",
+ type: "pie",
+ clockWise: false, //顺时加载
+ hoverAnimation: false, //鼠标移入变大
+ center: ["50%", "50%"],
+ radius: ["78%", "78%"],
+ label: {
+ normal: {
+ show: false,
+ },
+ },
+ data: [
+ {
+ value: 9,
+ name: "",
+ itemStyle: {
+ normal: {
+ borderWidth: 6,
+ borderColor: "#152c65",
+ },
+ },
+ },
+ ],
+ },
+ ],
+ }
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ //右边进度图
+ getChartData1(){
+ var chChartBar = echarts.init(this.$refs.amplifyStyle);
+ this.echartBar(chChartBar,this.typedata)
+ },
+ echartBar(chChart,chartData){
+ console.log(chartData)
+ var that = this
+
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+
+ var value = [];
+ var prop = [];
+ var text = [];
+ var zero = []
+
+ var total = 0
+ for (let i = chartData.length-1; i >=0; i--) {
+ total += chartData[i].value;
+ value.push(chartData[i].value)
+ prop.push(chartData[i].prop)
+ text.push(chartData[i].text)
+ zero.push(0)
+ }
+
+
+ var data = []
+ var data_all = new Array(prop.length)
+ for (let i = 0; i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{lwDataTotal}} 人
+
{{staffText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ nav:1,
+ surveyUrl: '/images/survey_icon_5.png',
+ staffText: '今日出勤',
+ lwDataTotal:0,
+ option:{}
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getLWData(1)
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ onInfoNav(n, text) {
+ this.nav = n
+ this.staffText = text
+ this.getLWData(n)
+ if (n == 0) {
+ this.surveyUrl = '../../images/survey_icon_4.png'
+ } else {
+ this.surveyUrl = '../../images/survey_icon_5.png'
+ }
+ },
+
+ //劳务人员概况
+ getLWData(infoNav) {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getAllUserData?token=" + JSON.parse(localStorage.getItem("data1")).smz_token
+ + "&deptId=123&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id, {}).then(res => {
+ this.lwLoading = false;
+ var laborPersonnelData = [];
+ if (infoNav == 0) {
+ laborPersonnelData.push({text: "特种作业人员", value: res.data.userInfo.specialTotal, type: 2})
+ laborPersonnelData.push({text: "劳务人员(不含特种人员)", value: res.data.userInfo.unSpecialTotal, type: 1})
+ laborPersonnelData.push({text: "管理人员", value: res.data.userInfo.glrs, type: 0})
+ this.lwDataTotal = res.data.zgrs
+ } else {
+ laborPersonnelData.push({text: "特种作业人员", value: res.data.cqUserInfo.specialTotal, type: 2})
+ laborPersonnelData.push({text: "劳务人员(不含特种人员)", value: res.data.cqUserInfo.unSpecialTotal, type: 1})
+ laborPersonnelData.push({text: "管理人员", value: res.data.cqUserInfo.glrs, type: 0})
+ this.lwDataTotal = res.data.rcrs
+ }
+ this.$nextTick(() => {
+ this.echart(laborPersonnelData)
+ })
+ }).catch(err => {
+ })
+
+ },
+
+ echart(chartData){
+ var chChart = echarts.init(this.$refs.chart);
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ total += chartData[i].value
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ if(total == 0){
+ prop.push(0)
+ }else{
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+ }
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [
+ {
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'25',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'25',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'25',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'25',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ name: {
+ width: 350,
+ color: '#c6d9fa',
+ padding:[0,0,0,10],
+ fontSize:'25',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'20',
+
+ },
+ arrow:{
+ width:20,
+ height:15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| 人} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+
+ barWidth: 15,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 15,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch:{
+
+ },
+})
+
+
diff --git a/src/components/amplify/laowuyonggong/amplify-nlhx.js b/src/components/amplify/laowuyonggong/amplify-nlhx.js
new file mode 100644
index 0000000..ab9a494
--- /dev/null
+++ b/src/components/amplify/laowuyonggong/amplify-nlhx.js
@@ -0,0 +1,220 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-nlhx", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ ageStudyData: {},
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getAgeData()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ getAgeData() {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getCqAgeData2?token=" + JSON.parse(localStorage.getItem("data1")).smz_token + "&deptId=123&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id, {}).then(res => {
+ var ageStudyData = {};
+ ageStudyData.xAxis = ["18以下", "18-29", "30-39", "40-49", "50以上"];
+ ageStudyData.seriesName = "年龄分布占比";
+ if (res.data.code != "-1") {
+ var ageData = res.data.ageData;
+ var data = [ageData.shiqizb, ageData.shibazb, ageData.sanshizb, ageData.sishizb, ageData.wushiupzb];
+ ageStudyData.data = data;
+ }
+ this.ageStudyData = ageStudyData;
+ this.getChartData()
+ }).catch(err => {
+ })
+ },
+ // 折线图
+ getChartData(){
+ var chChartBar = echarts.init(this.$refs.chart);
+ this.echartBar(chChartBar,this.ageStudyData)
+ },
+ echartBar(chChart,data){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ this.option = {
+ grid: {
+ top:'10%',
+ left: "2%",
+ right: "0%",
+ bottom: "0%",
+ containLabel: true,
+ },
+ tooltip: {
+ trigger: "axis",
+ formatter: function (params) {
+ return (params[0].seriesName+" "
+ +params[0].name +":"+ params[0].data + "%")
+ },
+ },
+ xAxis: {
+ type: "category",
+ data: data.xAxis,
+ axisLine: {
+ //坐标轴轴线相关设置。数学上的x轴
+ show: true,
+ lineStyle: {
+ color: "#25597e",
+ type: "dashed",
+ },
+ },
+ axisTick: {
+ show: false
+ },
+ rich:{
+ fontSize:25
+ },
+ axisLabel: {
+ //坐标轴刻度标签的相关设置
+ textStyle: {
+ color: "#c5d9fc",
+ margin: 30,
+ fontSize:25
+ },
+
+ },
+ },
+ yAxis: {
+ type: "value",
+ axisLine: {
+ //坐标轴轴线相关设置。数学上的x轴
+ show: false,
+ lineStyle: {
+ color: "#c5d9fc",
+ type: "dashed",
+ },
+ },
+ axisTick: {
+ show: false
+ },
+ rich:{
+ fontSize:25
+ },
+ axisLabel: {
+ show: true,
+ //坐标轴刻度标签的相关设置
+ textStyle: {
+ color: "#c5d9fc",
+ margin: 30,
+ fontSize:25
+ },
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "#25597e",
+ type: "dashed",
+ },
+ },
+ },
+ series: [
+ {
+ name: data.seriesName,
+ type: "pictorialBar",
+ barCategoryGap: "0%",
+ label: {
+ normal: {
+ show: true,
+ position: "top",
+ color:"#fff",
+ fontSize:25
+ },
+ },
+
+ //symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
+ symbol: "path://M0,10 L10,10 C5.5,10 5.5,5 5,0 C4.5,5 4.5,10 0,10 z",
+
+
+ itemStyle: {
+ normal: {
+ color: {
+ type: "linear",
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: [
+ {
+ offset: 0,
+ color: "rgba(15,133,224,0.2)", // 0% 处的颜色
+ },
+ {
+ offset: 0.9,
+ color: "rgba(15,133,224,0.8)", // 100% 处的颜色
+ },
+ ],
+ global: false, // 缺省为 false
+ },
+ },
+ emphasis: {
+ opacity: 1,
+ },
+ },
+ data: data.data,
+ z: 10,
+ },
+ ],
+ };
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+
+
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/laowuyonggong/amplify-rycqfb.js b/src/components/amplify/laowuyonggong/amplify-rycqfb.js
new file mode 100644
index 0000000..77031f7
--- /dev/null
+++ b/src/components/amplify/laowuyonggong/amplify-rycqfb.js
@@ -0,0 +1,920 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-rycqfb", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ width:760,
+ workData_1:[{ text:"白名单(7天出勤人数,包含7天)", value:0 }],
+ //workData_2:[{ text:"灰名单(4-10天内出勤人数)", value:0 }],
+ workData_3:[{ text:"灰名单(超过7天未出勤人数,不包含7天)", value:0 }],
+ workData_4:[{ text:"临时人员(打突击线上教育人员)", value:0 }],
+ workData_5:[{ text:"退场人员", value:0 }],
+ workMax: 0,
+ show:false,
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ }
+ },
+ mounted(){
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getActivePeopleNum1()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //人员出勤分布接口
+ getActivePeopleNum1(){
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getUnCqUserList?token="+JSON.parse(localStorage.getItem("data1")).smz_token+"&maxDay=6&deptId=123&typtDeptId="+JSON.parse(localStorage.getItem("data1")).dept_id+"&typtProjectId="+JSON.parse(localStorage.getItem("data1")).id, {
+ }).then(res => {
+ if(res.data.state == "OK"){
+ var max = this.workMax;
+ if(res.data.data.length > max){
+ this.workMax = res.data.data.length;
+ }
+
+ this.workData_1 = [{ text:"白名单(7天出勤人数,包含7天)", value:res.data.data.length }];
+ }else{
+ this.workData_1 = [{ text:"白名单(7天出勤人数,包含7天)", value:0 }];
+ }
+ this.getChartData()
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getUnCqUserList?token="+JSON.parse(localStorage.getItem("data1")).smz_token+"&dayNum=7&deptId=123&typtDeptId="+JSON.parse(localStorage.getItem("data1")).dept_id+"&typtProjectId="+JSON.parse(localStorage.getItem("data1")).id, {
+ }).then(res => {
+ if(res.data.state == "OK"){
+ var max = this.workMax;
+ if(res.data.data.length > max){
+ this.workMax = res.data.data.length;
+ }
+ this.workData_3 = [{ text:"灰名单(超过7天未出勤人数,不包含7天)", value:res.data.data.length }];
+ }else{
+ this.workData_3 = [{ text:"灰名单(超过7天未出勤人数,不包含7天)", value:0 }];
+ }
+ this.getChartData1()
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getUserInfoTempList?token="+JSON.parse(localStorage.getItem("data1")).smz_token+"&isWork=1&deptId=123&typtDeptId="+JSON.parse(localStorage.getItem("data1")).dept_id+"&typtProjectId="+JSON.parse(localStorage.getItem("data1")).id, {
+ }).then(res => {
+ if(res.data.state == "OK"){
+ var max = this.workMax;
+ if(res.data.data.length > max){
+ this.workMax = res.data.data.length;
+ }
+ this.workData_4 = [{ text:"临时人员(打突击线上教育人员)", value:res.data.data.length}];
+ }else{
+ this.workData_4 = [{ text:"临时人员(打突击线上教育人员)", value:0 }];
+ }
+ this.getChartData2()
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getUserInfoList?token="+JSON.parse(localStorage.getItem("data1")).smz_token+"&isWork=2&deptId=123&typtDeptId="+JSON.parse(localStorage.getItem("data1")).dept_id+"&typtProjectId="+JSON.parse(localStorage.getItem("data1")).id, {
+ }).then(res => {
+ if(res.data.state == "OK"){
+ var max = this.workMax;
+ if(res.data.data.length > max){
+ this.workMax = res.data.data.length;
+ }
+ this.workData_5 = [{ text:"退场人员", value:res.data.data.length }];
+ }else{
+ this.workData_5 = [{ text:"退场人员", value:0 }];
+ }
+ this.getChartData3()
+ }).catch(err => {
+ })
+ }).catch(err => {
+ })
+ }).catch(err => {
+ })
+ }).catch(err => {
+ })
+
+
+
+ },
+ //出勤情况-白名单
+ getChartData(){
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.anlifychart);
+ this.echart1(chChart,this.workData_1)
+ },
+ //出勤情况-灰名单
+ getChartData1(){
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.anlifychart1);
+ this.echart2(chChart,this.workData_3)
+ },
+ //出勤情况-临时人员
+ getChartData2(){
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.anlifychart2);
+ this.echart3(chChart,this.workData_4)
+ },
+ //出勤情况-在线人员
+ getChartData3(){
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.anlifychart3);
+ this.echart4(chChart,this.workData_5)
+ },
+ //出勤情况-白名单
+ echart1(chChart,chartData){
+ console.log(chartData)
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ if(this.workMax){
+ total = this.workMax
+ }else{
+ total += chartData[i].value
+ }
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ if(total == 0){
+ prop.push(0)
+ }else{
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+ }
+ var unit = '人'
+ if(this.unit){
+ unit = this.unit
+ }
+
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'25',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'25',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'25',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'25',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ name: {
+ width: this.width,
+ color: '#c6d9fa',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'20',
+ },
+ arrow:{
+ width:20,
+ height:15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ if(that.show == true){
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'}';
+ }else{
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ }
+
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 20,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ that.$emit('personnel',params.dataIndex);
+ })
+ })
+ },
+ //出勤情况-灰名单
+ echart2(chChart,chartData){
+ console.log(chartData)
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ if(this.workMax){
+ total = this.workMax
+ }else{
+ total += chartData[i].value
+ }
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ console.log(value)
+ if(total == 0){
+ prop.push(0)
+ }else{
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+ }
+ console.log(prop)
+ var unit = '人'
+ if(this.unit){
+ unit = this.unit
+ }
+
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'25',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'25',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'25',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'25',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ name: {
+ width: this.width,
+ color: '#c6d9fa',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'20',
+ },
+ arrow:{
+ width:20,
+ height:15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ if(that.show == true){
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'}';
+ }else{
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ }
+
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 20,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ that.$emit('personnel',params.dataIndex);
+ })
+ })
+ },
+ //出勤情况-临时人员
+ echart3(chChart,chartData){
+ console.log(chartData)
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ if(this.workMax){
+ total = this.workMax
+ }else{
+ total += chartData[i].value
+ }
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ if(total == 0){
+ prop.push(0)
+ }else{
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+ }
+ var unit = '人'
+ if(this.unit){
+ unit = this.unit
+ }
+
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'25',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'25',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'25',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'25',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ name: {
+ width: this.width,
+ color: '#c6d9fa',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'20',
+ },
+ arrow:{
+ width:20,
+ height:15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ if(that.show == true){
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'}';
+ }else{
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ }
+
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 20,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ that.$emit('personnel',params.dataIndex);
+ })
+ })
+ },
+ //出勤情况-在线人员
+ echart4(chChart,chartData){
+ console.log(chartData)
+ var that = this
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ if(this.workMax){
+ total = this.workMax
+ }else{
+ total += chartData[i].value
+ }
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ if(total == 0){
+ prop.push(0)
+ }else{
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+ }
+ var unit = '人'
+ if(this.unit){
+ unit = this.unit
+ }
+
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'25',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'25',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'25',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'25',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ name: {
+ width: this.width,
+ color: '#c6d9fa',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'20',
+ },
+ arrow:{
+ width:20,
+ height:15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ if(that.show == true){
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'}';
+ }else{
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| '+unit+'} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ }
+
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 20,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 20,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+
+ chChart.off('click')
+
+ chChart.on('click', function (params) {
+ that.$emit('personnel',params.dataIndex);
+ })
+ })
+ },
+
+ },
+ watch:{
+ data: function (n,o) {
+ this.getChartData()
+ this.getChartData1()
+ this.getChartData2()
+ this.getChartData3()
+ },
+ max: function (n,o) {
+ this.getChartData()
+ this.getChartData1()
+ this.getChartData2()
+ this.getChartData3()
+ }
+ }
+})
+
+
diff --git a/src/components/amplify/shipinguanli/amplify-spjk.js b/src/components/amplify/shipinguanli/amplify-spjk.js
new file mode 100644
index 0000000..f4fb334
--- /dev/null
+++ b/src/components/amplify/shipinguanli/amplify-spjk.js
@@ -0,0 +1,154 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-spjk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
离线视频
+
{{offLineNum}} 个
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ cqNum:0,
+ dgNum:0,
+ aiNum:0,
+ offLineNum:0
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getVideoOverview()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ },
+ //视频概况
+ getVideoOverview() {
+ axios.get("https://video.makalu.cc/mkl/api/getVideoOverview?projectId="+JSON.parse(localStorage.getItem("data1")).spgk).then(res => {
+ if(res.data != {}) {
+
+ this.cqNum = res.data.data.cqNum;
+ this.dgNum = res.data.data.dgNum;
+ this.aiNum = res.data.data.aiNum;
+ this.offLineNum = res.data.data.offLineNum;
+
+ var data = [];
+ var allVideoList = res.data.data.allVideoList;
+ if(allVideoList){
+ for(let i = 0;i < allVideoList.length;i++){
+ var obj = {};
+ obj.x = allVideoList[i].x
+ obj.y = allVideoList[i].y
+ obj.angle = allVideoList[i].angle
+ obj.title = allVideoList[i].title
+ obj.state = allVideoList[i].state
+ obj.token = allVideoList[i].token
+ if(allVideoList[i].videoSource == 1){
+ obj.videoType = 'h5s'
+ }else if(allVideoList[i].videoSource == 2){
+ obj.videoType = 'hk'
+ }else if(allVideoList[i].videoSource == 3){
+ obj.videoType = 'hzhk'
+ }
+ data.push(obj)
+ }
+ }
+
+ var token = this.videoListData[0].videoList[0].token
+
+ console.log(token)
+ for (let i=0 ;i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ modeltitle:{
+ type:String
+ },
+ },
+ data() {
+ return {
+ show: false,
+ height: 510,
+ width: 910,
+ forData: [],
+ arrowLeft: -45,
+ arrowRight:-45,
+ interval:undefined,
+ left:0,
+ direction:'left',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ datas:[]
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ // 调用接口
+ getData() {
+ let that = this
+ axios.get("/api/building/info?project_id=" + this.projectId).then(res => {
+ let data = res.data.data
+ let type = {}
+ for (let info of data) {
+ if (!type[info.sub_type]) {
+ type[info.sub_type] = new Array()
+ }
+ info.url = (info.file_path.indexOf("https") != -1) ? info.file_path : info.file_src
+ info.text = info.file_name
+ type[info.sub_type].push(info)
+ }
+ that.forData = type[3];
+ console.log(type)
+ console.log(that.forData)
+ that.forData.map(item=>this.datas.push(item.url))
+ }).catch(err => {
+
+ })
+ },
+ carouselMouseover() {
+ this.arrowLeft = 10
+ this.arrowRight = 10
+ clearInterval(this.interval);
+ },
+ carouselMouseout() {
+ this.arrowLeft = -30
+ this.arrowRight = -30
+ this.direction = 'left'
+ this.interval = setInterval(this.timer, 3000);
+ },
+ clickCtrl(direction) {
+ this.direction = direction
+ this.timer()
+ },
+ timer() {
+ if (this.direction == 'left') {
+ this.left = this.left - this.width
+ if (this.left == -((this.forData.length) * this.width)) {
+ this.left = 0
+ }
+ } else {
+ if (this.left == 0) {
+ this.left = -((this.forData.length - 1) * this.width)
+ } else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch: {}
+
+
+})
+
+
diff --git a/src/components/amplify/tesedangjian/amplify-jdsl.js b/src/components/amplify/tesedangjian/amplify-jdsl.js
new file mode 100644
index 0000000..0c49a2c
--- /dev/null
+++ b/src/components/amplify/tesedangjian/amplify-jdsl.js
@@ -0,0 +1,139 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-jdsl", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ modeltitle:{
+ type:String
+ },
+ },
+ data() {
+ return {
+ show: false,
+ height: 510,
+ width: 910,
+ forData: [],
+ arrowLeft: -45,
+ arrowRight:-45,
+ interval:undefined,
+ left:0,
+ direction:'left',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ datas:[]
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ // 调用接口
+ getData() {
+ let that = this
+ axios.get("/api/building/info?project_id=" + this.projectId).then(res => {
+ let data = res.data.data
+ let type = {}
+ for (let info of data) {
+ if (!type[info.sub_type]) {
+ type[info.sub_type] = new Array()
+ }
+ info.url = (info.file_path.indexOf("https") != -1) ? info.file_path : info.file_src
+ info.text = info.file_name
+ type[info.sub_type].push(info)
+ }
+ that.forData = type[4];
+ console.log(type)
+ // console.log(that.forData)
+ that.forData.map(item=>this.datas.push(item.url))
+ }).catch(err => {
+
+ })
+ },
+ carouselMouseover() {
+ this.arrowLeft = 10
+ this.arrowRight = 10
+ clearInterval(this.interval);
+ },
+ carouselMouseout() {
+ this.arrowLeft = -30
+ this.arrowRight = -30
+ this.direction = 'left'
+ this.interval = setInterval(this.timer, 3000);
+ },
+ clickCtrl(direction) {
+ this.direction = direction
+ this.timer()
+ },
+ timer() {
+ if (this.direction == 'left') {
+ this.left = this.left - this.width
+ if (this.left == -((this.forData.length) * this.width)) {
+ this.left = 0
+ }
+ } else {
+ if (this.left == 0) {
+ this.left = -((this.forData.length - 1) * this.width)
+ } else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch: {}
+
+
+})
+
+
diff --git a/src/components/amplify/tesedangjian/amplify-lzgcjs.js b/src/components/amplify/tesedangjian/amplify-lzgcjs.js
new file mode 100644
index 0000000..6ed7ac8
--- /dev/null
+++ b/src/components/amplify/tesedangjian/amplify-lzgcjs.js
@@ -0,0 +1,139 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-lzgcjs", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ modeltitle:{
+ type:String
+ },
+ },
+ data() {
+ return {
+ show: false,
+ height: 510,
+ width: 910,
+ forData: [],
+ arrowLeft: -45,
+ arrowRight:-45,
+ interval:undefined,
+ left:0,
+ direction:'left',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ datas:[]
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ // 调用接口
+ getData() {
+ let that = this
+ axios.get("/api/building/info?project_id=" + this.projectId).then(res => {
+ let data = res.data.data
+ let type = {}
+ for (let info of data) {
+ if (!type[info.sub_type]) {
+ type[info.sub_type] = new Array()
+ }
+ info.url = (info.file_path.indexOf("https") != -1) ? info.file_path : info.file_src
+ info.text = info.file_name
+ type[info.sub_type].push(info)
+ }
+ that.forData = type[5];
+ console.log(type)
+ // console.log(that.forData)
+ that.forData.map(item=>this.datas.push(item.url))
+ }).catch(err => {
+
+ })
+ },
+ carouselMouseover() {
+ this.arrowLeft = 10
+ this.arrowRight = 10
+ clearInterval(this.interval);
+ },
+ carouselMouseout() {
+ this.arrowLeft = -30
+ this.arrowRight = -30
+ this.direction = 'left'
+ this.interval = setInterval(this.timer, 3000);
+ },
+ clickCtrl(direction) {
+ this.direction = direction
+ this.timer()
+ },
+ timer() {
+ if (this.direction == 'left') {
+ this.left = this.left - this.width
+ if (this.left == -((this.forData.length) * this.width)) {
+ this.left = 0
+ }
+ } else {
+ if (this.left == 0) {
+ this.left = -((this.forData.length - 1) * this.width)
+ } else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch: {}
+
+
+})
+
+
diff --git a/src/components/amplify/tesedangjian/amplify-sxzzjs.js b/src/components/amplify/tesedangjian/amplify-sxzzjs.js
new file mode 100644
index 0000000..177746d
--- /dev/null
+++ b/src/components/amplify/tesedangjian/amplify-sxzzjs.js
@@ -0,0 +1,139 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-sxzzjs", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ modeltitle:{
+ type:String
+ },
+ },
+ data() {
+ return {
+ show: false,
+ height: 510,
+ width: 910,
+ forData: [],
+ arrowLeft: -45,
+ arrowRight:-45,
+ interval:undefined,
+ left:0,
+ direction:'left',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ datas:[]
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ // 调用接口
+ getData() {
+ let that = this
+ axios.get("/api/building/info?project_id=" + this.projectId).then(res => {
+ let data = res.data.data
+ let type = {}
+ for (let info of data) {
+ if (!type[info.sub_type]) {
+ type[info.sub_type] = new Array()
+ }
+ info.url = (info.file_path.indexOf("https") != -1) ? info.file_path : info.file_src
+ info.text = info.file_name
+ type[info.sub_type].push(info)
+ }
+ that.forData = type[1];
+ console.log(type)
+ // console.log(that.forData)
+ that.forData.map(item=>this.datas.push(item.url))
+ }).catch(err => {
+
+ })
+ },
+ carouselMouseover() {
+ this.arrowLeft = 10
+ this.arrowRight = 10
+ clearInterval(this.interval);
+ },
+ carouselMouseout() {
+ this.arrowLeft = -30
+ this.arrowRight = -30
+ this.direction = 'left'
+ this.interval = setInterval(this.timer, 3000);
+ },
+ clickCtrl(direction) {
+ this.direction = direction
+ this.timer()
+ },
+ timer() {
+ if (this.direction == 'left') {
+ this.left = this.left - this.width
+ if (this.left == -((this.forData.length) * this.width)) {
+ this.left = 0
+ }
+ } else {
+ if (this.left == 0) {
+ this.left = -((this.forData.length - 1) * this.width)
+ } else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch: {}
+
+
+})
+
+
diff --git a/src/components/amplify/tesedangjian/amplify-tdjs.js b/src/components/amplify/tesedangjian/amplify-tdjs.js
new file mode 100644
index 0000000..38a4078
--- /dev/null
+++ b/src/components/amplify/tesedangjian/amplify-tdjs.js
@@ -0,0 +1,139 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-tdjs", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ modeltitle:{
+ type:String
+ },
+ },
+ data() {
+ return {
+ show: false,
+ height: 510,
+ width: 910,
+ forData: [],
+ arrowLeft: -45,
+ arrowRight:-45,
+ interval:undefined,
+ left:0,
+ direction:'left',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ datas:[]
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ // 调用接口
+ getData() {
+ let that = this
+ axios.get("/api/building/info?project_id=" + this.projectId).then(res => {
+ let data = res.data.data
+ let type = {}
+ for (let info of data) {
+ if (!type[info.sub_type]) {
+ type[info.sub_type] = new Array()
+ }
+ info.url = (info.file_path.indexOf("https") != -1) ? info.file_path : info.file_src
+ info.text = info.file_name
+ type[info.sub_type].push(info)
+ }
+ that.forData = type[2];
+ console.log(type)
+ // console.log(that.forData)
+ that.forData.map(item=>this.datas.push(item.url))
+ }).catch(err => {
+
+ })
+ },
+ carouselMouseover() {
+ this.arrowLeft = 10
+ this.arrowRight = 10
+ clearInterval(this.interval);
+ },
+ carouselMouseout() {
+ this.arrowLeft = -30
+ this.arrowRight = -30
+ this.direction = 'left'
+ this.interval = setInterval(this.timer, 3000);
+ },
+ clickCtrl(direction) {
+ this.direction = direction
+ this.timer()
+ },
+ timer() {
+ if (this.direction == 'left') {
+ this.left = this.left - this.width
+ if (this.left == -((this.forData.length) * this.width)) {
+ this.left = 0
+ }
+ } else {
+ if (this.left == 0) {
+ this.left = -((this.forData.length - 1) * this.width)
+ } else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch: {}
+
+
+})
+
+
diff --git a/src/components/amplify/tesedangjian/amplify-xmdt.js b/src/components/amplify/tesedangjian/amplify-xmdt.js
new file mode 100644
index 0000000..6dd8bc1
--- /dev/null
+++ b/src/components/amplify/tesedangjian/amplify-xmdt.js
@@ -0,0 +1,141 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-xmdt", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+ modeltitle:{
+ type:String
+ },
+ },
+ data() {
+ return {
+ show: false,
+ height: 510,
+ width: 910,
+ forData: [],
+ arrowLeft: -45,
+ arrowRight:-45,
+ interval:undefined,
+ left:0,
+ direction:'left',
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ datas:[]
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ openAmplify() {
+ console.log(this.modeltitle)
+ this.show = true
+ this.getData()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ // 调用接口
+ getData() {
+ let that = this
+ axios.get("/api/building/info?project_id=" + this.projectId).then(res => {
+ let data = res.data.data
+ let type = {}
+ for (let info of data) {
+ if (!type[info.sub_type]) {
+ type[info.sub_type] = new Array()
+ }
+ info.url = (info.file_path.indexOf("https") != -1) ? info.file_path : info.file_src
+ info.text = info.file_name
+ type[info.sub_type].push(info)
+ }
+ that.forData = type[0];
+ console.log(type)
+ console.log(that.forData)
+ that.forData.map(item=>this.datas.push(item.url))
+ }).catch(err => {
+
+ })
+ },
+ carouselMouseover() {
+ this.arrowLeft = 10
+ this.arrowRight = 10
+ clearInterval(this.interval);
+ },
+ carouselMouseout() {
+ this.arrowLeft = -30
+ this.arrowRight = -30
+ this.direction = 'left'
+ this.interval = setInterval(this.timer, 3000);
+ },
+ clickCtrl(direction) {
+ this.direction = direction
+ this.timer()
+ },
+ timer() {
+ if (this.direction == 'left') {
+ this.left = this.left - this.width
+ if (this.left == -((this.forData.length) * this.width)) {
+ this.left = 0
+ }
+ } else {
+ if (this.left == 0) {
+ this.left = -((this.forData.length - 1) * this.width)
+ } else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch: {}
+
+
+})
+
+
diff --git a/src/components/amplify/xiangmugaikuang/amplify-lwrygk.js b/src/components/amplify/xiangmugaikuang/amplify-lwrygk.js
new file mode 100644
index 0000000..8e5b487
--- /dev/null
+++ b/src/components/amplify/xiangmugaikuang/amplify-lwrygk.js
@@ -0,0 +1,286 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-lwrygk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{lwDataTotal}} 人
+
{{staffText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ nav:1,
+ surveyUrl: '/images/survey_icon_5.png',
+ staffText: '今日出勤',
+ lwDataTotal:0,
+ option:{}
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ this.getLWData(1)
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ },
+ onInfoNav(n, text) {
+ this.nav = n
+ this.staffText = text
+ this.getLWData(n)
+ if (n == 0) {
+ this.surveyUrl = '../../images/survey_icon_4.png'
+ } else {
+ this.surveyUrl = '../../images/survey_icon_5.png'
+ }
+ },
+
+ //劳务人员概况
+ getLWData(infoNav) {
+ axios.post("https://smz.makalu.cc/mkl/screenApi/getAllUserData?token=" + JSON.parse(localStorage.getItem("data1")).smz_token + "&deptId=131&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id + "&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id, {}).then(res => {
+ this.lwLoading = false;
+ var laborPersonnelData = [];
+ if (infoNav == 0) {
+ laborPersonnelData.push({text: "特种作业人员", value: res.data.userInfo.specialTotal, type: 2})
+ laborPersonnelData.push({text: "劳务人员(不含特种人员)", value: res.data.userInfo.unSpecialTotal, type: 1})
+ laborPersonnelData.push({text: "管理人员", value: res.data.userInfo.glrs, type: 0})
+ this.lwDataTotal = res.data.zgrs
+ } else {
+ laborPersonnelData.push({text: "特种作业人员", value: res.data.cqUserInfo.specialTotal, type: 2})
+ laborPersonnelData.push({text: "劳务人员(不含特种人员)", value: res.data.cqUserInfo.unSpecialTotal, type: 1})
+ laborPersonnelData.push({text: "管理人员", value: res.data.cqUserInfo.glrs, type: 0})
+ this.lwDataTotal = res.data.rcrs
+ }
+ this.$nextTick(() => {
+ this.echart(laborPersonnelData)
+ })
+ }).catch(err => {
+ })
+
+ },
+
+ echart(chartData){
+ var chChart = echarts.init(this.$refs.chart);
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var value = []
+ var text = []
+ var bgData = []
+ var total = 0
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgData.push(100)
+ total += chartData[i].value
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ if(total == 0){
+ prop.push(0)
+ }else{
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+ }
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "0%",
+ top: "0%",
+ containLabel: true,
+ },
+ xAxis: [
+ {
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '20', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-40'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'25',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'25',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'25',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'25',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'25',
+ },
+ name: {
+ width: 350,
+ color: '#c6d9fa',
+ padding:[0,0,0,10],
+ fontSize:'25',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'20',
+
+ },
+ arrow:{
+ width:20,
+ height:15,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ return '{arrow|}{name|' + text[data.dataIndex] + '}{prop|' + value[data.dataIndex] + '}{color| 人} {prop|'+prop[data.dataIndex]+'}{color| %} ';
+ },
+ }
+ },
+ data: bgData,
+ },
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 15,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 15,
+ barGap: "-100%",
+ data: bgData,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch:{
+
+ },
+})
+
+
diff --git a/src/components/amplify/xiangmugaikuang/amplify-sbgk.js b/src/components/amplify/xiangmugaikuang/amplify-sbgk.js
new file mode 100644
index 0000000..fec96e6
--- /dev/null
+++ b/src/components/amplify/xiangmugaikuang/amplify-sbgk.js
@@ -0,0 +1,163 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-sbgk", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{showOverviewLabel}}
+
+ {{showOverviewData.countNum}} 台
+
+
+
+
+
+
+
+
自有
+
{{showOverviewData.zyNum}}
+
+
+
+
+
+
租赁
+
{{showOverviewData.zlNum}}
+
+
+
+
+
+
分包
+
{{showOverviewData.fbNum}}
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ overview: 0,
+ showOverviewLabel:'设备数量',
+ surveyUrlSb: '/images/survey_icon_1.png',
+ overviewInterval: '',
+ overviewData:[],
+ showOverviewData: {},
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ //设备概况点击事件定时器
+ this.overviewInterval = setInterval(this.overviewClick, 5000);
+ this.getOverviewData()
+ },
+ closeAmplify(){
+ this.show = false
+ this.overview = 0
+ this.showOverviewLabel='设备数量'
+ this.surveyUrlSb= '/images/survey_icon_1.png'
+ clearInterval(this.overviewInterval);
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ this.overview = 0
+ this.showOverviewLabel='设备数量'
+ this.surveyUrlSb= '/images/survey_icon_1.png'
+ clearInterval(this.overviewInterval);
+ }
+ },
+ //设备概况点击事件定时器方法
+ overviewClick() {
+ if (this.overview < 2) {
+ this.overview = this.overview + 1
+ } else {
+ this.overview = 0
+ }
+ this.showOverviewData = this.overviewData[this.overview];
+ if (this.overview == 0) {
+ this.showOverviewLabel = '设备数量'
+ this.surveyUrlSb = '/images/survey_icon_1.png'
+ } else if (this.overview == 1) {
+ this.showOverviewLabel = '绑定数量'
+ this.surveyUrlSb = '/images/survey_icon_2.png'
+ } else {
+ this.showOverviewLabel = '监控数量'
+ this.surveyUrlSb = '/images/survey_icon_3.png'
+ }
+ },
+ //设备概况点击事件
+ onClickoOverview(n) {
+ this.overview = n
+ this.showOverviewData = this.overviewData[this.overview];
+ if (this.overview == 0) {
+ this.showOverviewLabel = '设备数量'
+ this.surveyUrlSb = '/images/survey_icon_1.png'
+ } else if (this.overview == 1) {
+ this.showOverviewLabel = '绑定数量'
+ this.surveyUrlSb = '/images/survey_icon_2.png'
+ } else {
+ this.showOverviewLabel = '监控数量'
+ this.surveyUrlSb = '/images/survey_icon_3.png'
+ }
+ },
+ //设备概况数据
+ getOverviewData() {
+ axios.post(requestUrl + "getEquipmentOverview?deptId=" + deptId + "&projectId=" + JSON.parse(localStorage.getItem("data1")).jzgj + "&typtProjectId=" + JSON.parse(localStorage.getItem("data1")).id + "&typtDeptId=" + JSON.parse(localStorage.getItem("data1")).dept_id, {}).then(res => {
+ this.overviewData = [res.data.data.count, res.data.data.bind, res.data.data.monitor];
+ this.showOverviewData = this.overviewData[0];
+ }).catch(err => {
+ })
+ },
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/xiangmugaikuang/amplify-xmkg.js b/src/components/amplify/xiangmugaikuang/amplify-xmkg.js
new file mode 100644
index 0000000..359c039
--- /dev/null
+++ b/src/components/amplify/xiangmugaikuang/amplify-xmkg.js
@@ -0,0 +1,132 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-xmkg", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
建设单位
+
{{companyData.build_unit}}
+
{{companyData.build_unit_manager_name}} {{companyData.phone_show == 0 ? companyData.build_unit_manager_phone : ''}}
+
+
+
+
+
+
+
+
设计单位
+
{{companyData.design_unit}}
+
{{companyData.design_unit_manager_name}} {{companyData.phone_show == 0 ? companyData.design_unit_manager_phone : ''}}
+
+
+
+
+
+
+
+
总包单位
+
{{companyData.all_unit}}
+
{{companyData.all_unit_manager_name}} {{companyData.phone_show == 0 ? companyData.all_unit_manager_phone : ''}}
+
+
+
+
+
+
+
+
监理单位
+
{{companyData.supervisor_unit}}
+
{{companyData.supervisor_unit_manager_name}} {{companyData.phone_show == 0 ? companyData.supervisor_unit_manager_phone : ''}}
+
+
+
+
+
+
+
+
检测机构
+
{{companyData.testing_unit}}
+
{{companyData.testing_unit_manager_name}} {{companyData.phone_show == 0 ? companyData.testing_unit_manager_phone : ''}}
+
+
+
+
+
+
+
+
勘察单位
+
{{companyData.survey_unit}}
+
{{companyData.survey_unit_manager_name}} {{companyData.phone_show == 0 ? companyData.survey_unit_manager_phone : ''}}
+
+
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ projectId:JSON.parse(localStorage.getItem("data1")).id,
+ companyData:{}
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getProject()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ getProject() {
+ axios({
+ method: 'post',
+ url: "/api/project/info",
+ data: {
+ "project_id":this.projectId
+ }
+ }).then(res => {
+ this.companyData = res.data.data
+ }).catch(err => {
+
+ })
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ }
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/xiangmugaikuang/组件模板.js b/src/components/amplify/xiangmugaikuang/组件模板.js
new file mode 100644
index 0000000..4d98973
--- /dev/null
+++ b/src/components/amplify/xiangmugaikuang/组件模板.js
@@ -0,0 +1,55 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-sbgk", {
+ template: `
+
+
+
+
+
+
+
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+ show:false,
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ openAmplify(){
+ this.show = true
+ this.getProject()
+ },
+ closeAmplify(){
+ this.show = false
+ },
+ closeAmplifyAll(e){
+ if(e.target.className == 'amplify-fixed'){
+ this.show = false
+ }
+ }
+
+ },
+ watch:{
+
+ },
+
+})
+
+
diff --git a/src/components/amplify/zhiliangguanli/amplify-qysj.js b/src/components/amplify/zhiliangguanli/amplify-qysj.js
new file mode 100644
index 0000000..a2778dd
--- /dev/null
+++ b/src/components/amplify/zhiliangguanli/amplify-qysj.js
@@ -0,0 +1,76 @@
+import Vue from 'vue'
+var vms = Vue.component("amplify-qysj", {
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{item.title}}
+
{{item.text}}
+
+
+
+
+
+
+
+
+ `,
+ props: {},
+ data() {
+ return {
+ show: false,
+ //质量目标
+ qualityTargetData:[
+ {
+ title:'创优目标',
+ text:'获得陕西省“双优”工地,创AAA级国家安全文明标准化工地',
+ images:'/images/quality_target_1.png',
+ }
+ ],
+ }
+ },
+ mounted() {
+ let that = this
+ let url1 = "http://127.0.0.1:9004/system/qualityTarget/list1"
+ let url2 = "https://szh.makalu.cc/system/qualityTarget/list1"
+ $.post(url2,{},res => {
+ that.qualityTargetData = res[JSON.parse(localStorage.getItem("data1")).id]
+ console.log(that.qualityTargetData[JSON.parse(localStorage.getItem("data1")).id]);
+ })
+ },
+ methods: {
+ openAmplify() {
+ this.show = true
+ // this.getProject()
+ },
+ closeAmplify() {
+ this.show = false
+ },
+ closeAmplifyAll(e) {
+ if (e.target.className == 'amplify-fixed') {
+ this.show = false
+ }
+ }
+
+ },
+ watch: {},
+
+})
+
+
diff --git a/src/components/background_video.js b/src/components/background_video.js
new file mode 100644
index 0000000..b8cb722
--- /dev/null
+++ b/src/components/background_video.js
@@ -0,0 +1,123 @@
+/**
+ * 顶部header
+ */
+import Vue from 'vue'
+Vue.component("background-video", {
+ template: `
+
+ `,
+ props: {
+ url:{
+ type:String
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ mounted(){
+ var canvas = document.getElementById('canvas'),
+ ctx = canvas.getContext('2d'),
+ w = canvas.width = window.innerWidth,
+ h = canvas.height = window.innerHeight,
+
+ hue = 217,
+ stars = [],
+ count = 0,
+ maxStars = 1200;
+
+var canvas2 = document.createElement('canvas'),
+ ctx2 = canvas2.getContext('2d');
+canvas2.width = 100;
+canvas2.height = 100;
+var half = canvas2.width / 2,
+ gradient2 = ctx2.createRadialGradient(half, half, 0, half, half, half);
+gradient2.addColorStop(0.025, '#fff');
+gradient2.addColorStop(0.1, 'hsl(' + hue + ', 61%, 33%)');
+gradient2.addColorStop(0.25, 'hsl(' + hue + ', 64%, 6%)');
+gradient2.addColorStop(1, 'transparent');
+
+ctx2.fillStyle = gradient2;
+ctx2.beginPath();
+ctx2.arc(half, half, half, 0, Math.PI * 2);
+ctx2.fill();
+
+// End cache
+
+function random(min, max) {
+ if (arguments.length < 2) {
+ max = min;
+ min = 0;
+ }
+
+ if (min > max) {
+ var hold = max;
+ max = min;
+ min = hold;
+ }
+
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+function maxOrbit(x, y) {
+ var max = Math.max(x, y),
+ diameter = Math.round(Math.sqrt(max * max + max * max));
+ return diameter / 2;
+}
+
+var Star = function() {
+
+ this.orbitRadius = random(maxOrbit(w, h));
+ this.radius = random(60, this.orbitRadius) / 5;
+ this.orbitX = w / 2;
+ this.orbitY = h / 2;
+ this.timePassed = random(0, maxStars);
+ this.speed = random(this.orbitRadius) / 900000;
+ this.alpha = random(2, 10) / 10;
+
+ count++;
+ stars[count] = this;
+}
+
+Star.prototype.draw = function() {
+ var x = Math.sin(this.timePassed) * this.orbitRadius + this.orbitX,
+ y = Math.cos(this.timePassed) * this.orbitRadius + this.orbitY,
+ twinkle = random(10);
+
+ if (twinkle === 1 && this.alpha > 0) {
+ this.alpha -= 0.05;
+ } else if (twinkle === 2 && this.alpha < 1) {
+ this.alpha += 0.05;
+ }
+
+ ctx.globalAlpha = this.alpha;
+ ctx.drawImage(canvas2, x - this.radius / 2, y - this.radius / 2, this.radius, this.radius);
+ this.timePassed += this.speed;
+}
+
+for (var i = 0; i < maxStars; i++) {
+ new Star();
+}
+
+function animation() {
+ ctx.globalCompositeOperation = 'source-over';
+ ctx.globalAlpha = 0.8;
+ ctx.fillStyle = 'hsla(' + hue + ', 64%, 6%, 1)';
+ ctx.fillRect(0, 0, w, h)
+
+ ctx.globalCompositeOperation = 'lighter';
+ for (var i = 1, l = stars.length; i < l; i++) {
+ stars[i].draw();
+ };
+
+ window.requestAnimationFrame(animation);
+}
+
+animation();
+ },
+ methods: {
+
+ }
+
+})
diff --git a/src/components/baidu-maps.js b/src/components/baidu-maps.js
new file mode 100644
index 0000000..f158b43
--- /dev/null
+++ b/src/components/baidu-maps.js
@@ -0,0 +1,1858 @@
+import Vue from 'vue'
+Vue.component("baidu-maps", {
+ template: `
+
+ `,
+ props: {
+ data:{
+ type:Array
+ }
+ },
+ data() {
+ return {
+ skyMap:'',
+ key:0,
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+ this.initMap()
+ this.getIconMap()
+ this.setMapStyle()
+ },
+ initMap(){
+ // GL版命名空间为BMapGL
+ var map = new BMapGL.Map(this.$refs.allMap); // 创建Map实例,
+ map.centerAndZoom(new BMapGL.Point(104.509823,35.09362), 6); // 初始化地图,设置中心点坐标和地图级别
+ map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
+ this.skyMap = map;
+ },
+ getIconMap(){
+ var map = this.skyMap
+ map.clearOverlays();
+ var pointArray =new Array()
+ for(let i = 0; i img').hide();
+ // })
+ },
+ setMapStyle(){
+ var map = this.skyMap
+ //百度地图背景色
+ var styleJson=[
+ {
+ "featureType": "land",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#00092aff"
+ }
+ }, {
+ "featureType": "water",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#033a58ff"
+ }
+ }, {
+ "featureType": "green",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#0e1b30ff"
+ }
+ }, {
+ "featureType": "building",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "building",
+ "elementType": "geometry.topfill",
+ "stylers": {
+ "color": "#113549ff"
+ }
+ }, {
+ "featureType": "building",
+ "elementType": "geometry.sidefill",
+ "stylers": {
+ "color": "#143e56ff"
+ }
+ }, {
+ "featureType": "building",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#dadada00"
+ }
+ }, {
+ "featureType": "subwaystation",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#113549B2"
+ }
+ }, {
+ "featureType": "education",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "medical",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "scenicspots",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "4"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#fed66900"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "arterial",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "2"
+ }
+ }, {
+ "featureType": "arterial",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "arterial",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffeebb00"
+ }
+ }, {
+ "featureType": "arterial",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "arterial",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "arterial",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "local",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "1"
+ }
+ }, {
+ "featureType": "local",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "local",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "local",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "local",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#979c9aff"
+ }
+ }, {
+ "featureType": "local",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+ }, {
+ "featureType": "railway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "subway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": "1"
+ }
+ }, {
+ "featureType": "subway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#d8d8d8ff"
+ }
+ }, {
+ "featureType": "subway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "subway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "subway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#979c9aff"
+ }
+ }, {
+ "featureType": "subway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+ }, {
+ "featureType": "continent",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "continent",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "continent",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "continent",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "city",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "city",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "city",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "town",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "town",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "town",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#91aeb9ff"
+ }
+ }, {
+ "featureType": "town",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "road",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "poilabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "districtlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "road",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "road",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "road",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "district",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "poilabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "poilabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "poilabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "manmade",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "entertainment",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "shopping",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-9"
+ }
+ }, {
+ "featureType": "subwaylabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "subwaylabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "tertiarywaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "tertiarywaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "provincialwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "provincialwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "nationalwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "nationalwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "highwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "highwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "village",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "district",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "20"
+ }
+ }, {
+ "featureType": "district",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "district",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "country",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+ }, {
+ "featureType": "country",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "water",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "water",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "tertiaryway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "tertiaryway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff10"
+ }
+ }, {
+ "featureType": "provincialway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "provincialway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "highway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "20"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "nationalway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "20"
+ }
+ }, {
+ "featureType": "provincialway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "provincialway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "provincialway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "20"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "20"
+ }
+ }, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "estate",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "tertiaryway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "tertiaryway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "fourlevelway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "fourlevelway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "scenicspotsway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "scenicspotsway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "universityway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "universityway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "vacationway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "vacationway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "fourlevelway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "fourlevelway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ }, {
+ "featureType": "fourlevelway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "transportationlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "educationlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "educationlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "educationlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "educationlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "transportation",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#113549ff"
+ }
+ }, {
+ "featureType": "airportlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "airportlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "medicallabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "medicallabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "medicallabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "airportlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "entertainmentlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "entertainmentlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "entertainmentlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "estatelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "estatelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "estatelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "companylabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "companylabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "companylabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "governmentlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "governmentlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "governmentlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "hotellabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "hotellabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "hotellabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "financelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "financelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "financelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "otherlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "otherlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "otherlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "manmade",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "manmade",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "transportation",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "transportation",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "education",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "education",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "medical",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "medical",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "scenicspots",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ }, {
+ "featureType": "scenicspots",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off"
+ }
+ }, {
+ "featureType": "country",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ }, {
+ "featureType": "districtlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#00ebcaff"
+ }
+ }, {
+ "featureType": "districtlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ }, {
+ "featureType": "districtlabel",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 25
+ }
+ }, {
+ "featureType": "country",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 30
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "5"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "6"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "7"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "8"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "9"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "10"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "11"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "12"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "13"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "14"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "15"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "16"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "17"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "18"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "19"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "20"
+ }
+ }, {
+ "featureType": "boundary",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "21"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "5"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "6"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "7"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "8"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "9"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "10"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "11"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "12"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "13"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "14"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "15"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "16"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "17"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "18"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "19"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "20"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "5,21",
+ "level": "21"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "3"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "4"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "5"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "6"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "7"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "8"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "9"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "10"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "11"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "12"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "13"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "14"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "15"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "16"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "17"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "18"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "19"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "20"
+ }
+ }, {
+ "featureType": "boundary",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "1",
+ "curZoomRegion": "3,21",
+ "level": "21"
+ }
+ }]
+
+ map.setMapStyleV2({styleJson:styleJson});
+ }
+ },
+ watch:{
+ /*data: function (n,o) {
+ this.init()
+ }*/
+ }
+
+})
diff --git a/src/components/carousel-element.js b/src/components/carousel-element.js
new file mode 100644
index 0000000..d4c859c
--- /dev/null
+++ b/src/components/carousel-element.js
@@ -0,0 +1,40 @@
+import Vue from 'vue'
+Vue.component("carousel-element", {
+ template: `
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+ `,
+ props: {
+ data:{
+ type:Array
+ },
+ height:{
+ type: Number
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+
+ },
+ },
+ watch:{
+
+ }
+
+})
diff --git a/src/components/carousel.js b/src/components/carousel.js
new file mode 100644
index 0000000..384a889
--- /dev/null
+++ b/src/components/carousel.js
@@ -0,0 +1,82 @@
+import Vue from 'vue'
+Vue.component("carousel", {
+ template: `
+
+
+
+
+
{{item.text}}
+
+
+
+
+
+
+ `,
+ props: {
+ height:{
+ type:Number
+ },
+ width:{
+ type:Number
+ },
+ data:{
+ type:Array
+ }
+ },
+ data() {
+ return {
+ interval:undefined,
+ left:0,
+ direction:'left',
+ forData:[],
+ arrowLeft: -30,
+ arrowRight:-30,
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+ this.forData = this.data
+ this.interval = setInterval(this.timer, 3000);
+ },
+ carouselMouseover(){
+ this.arrowLeft =10
+ this.arrowRight =10
+ clearInterval(this.interval);
+ },
+ carouselMouseout(){
+ this.arrowLeft = -30
+ this.arrowRight =-30
+ this.direction = 'left'
+ this.interval=setInterval(this.timer,3000);
+ },
+ clickCtrl(direction){
+ this.direction = direction
+ this.timer()
+ },
+ timer(){
+ if(this.direction == 'left'){
+ this.left = this.left - this.width
+ if(this.left == -((this.forData.length) * this.width)){
+ this.left = 0
+ }
+ }else{
+ if(this.left == 0){
+ this.left = -((this.forData.length-1) * this.width)
+ }else {
+ this.left = this.left + this.width
+ }
+ }
+ },
+ },
+ watch:{
+
+ }
+
+})
diff --git a/src/components/certificate-bar-chart.js b/src/components/certificate-bar-chart.js
new file mode 100644
index 0000000..32d0ab4
--- /dev/null
+++ b/src/components/certificate-bar-chart.js
@@ -0,0 +1,150 @@
+import Vue from 'vue'
+Vue.component("certificate-bar-chart", {
+ template: `
+
+ `,
+ props: {
+ data:{
+ type:Array
+ },
+ height:{
+ type:Number
+ }
+ },
+ data() {
+ return {
+ option:{},
+
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+ this.getChartData()
+ },
+ getChartData(){
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.chart);
+ this.echart(chChart,this.data)
+ },
+ echart(chChart,chartData){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var value = []
+ var text = []
+ var total = 0
+ var bgd = []
+ for (let i = 0; i < chartData.length; i++) {
+ value.push(chartData[i].value)
+ text.push(chartData[i].text)
+ bgd.push(100)
+ total += chartData[i].value
+ }
+
+ var prop = []
+ for (let j = 0; j < value.length; j++) {
+ prop.push((value[j]/total * 100).toFixed(1))
+ }
+
+ this.option = {
+ grid: {
+ left: "5%",
+ right: "5%",
+ bottom: "-10%",
+ top: "2%",
+ containLabel: true,
+ },
+ xAxis: {
+ show: false,
+ type: "value",
+ },
+ yAxis: [
+ {
+ type: "category",
+ inverse: true,
+ axisLabel: {
+ show: true,
+ textStyle: {
+ color: "#cbdaff",
+ fontSize: "14",
+ },
+ },
+ splitLine: {
+ show: false,
+ },
+ axisTick: {
+ show: false,
+ },
+ axisLine: {
+ show: false,
+ },
+ data: text,
+ },
+ {
+ type: "category",
+ inverse: true,
+ axisTick: "none",
+ axisLine: "none",
+ show: true,
+ axisLabel: {
+ textStyle: {
+ color: "#cbdaff",
+ fontSize: "16",
+ },
+ formatter: function(params,i){
+ var text = "{a|" + value[i] + "}{a| "+ prop[i]+ "%}";
+ return text;
+ },
+ rich: {
+ a: {
+ fontSize: '16px',
+ color: "#cbdaff",
+ },
+ },
+ },
+ data: prop,
+ },
+ ],
+ series: [
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: "#6ab9fe",
+ },
+ },
+ barWidth: 8,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 8,
+ barGap: "-100%",
+ data: bgd,
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,1)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch:{
+ data: function (n,o) {
+ this.getChartData(this.data)
+ }
+ }
+
+})
diff --git a/src/components/china-map.js b/src/components/china-map.js
new file mode 100644
index 0000000..631d724
--- /dev/null
+++ b/src/components/china-map.js
@@ -0,0 +1,233 @@
+import Vue from 'vue'
+Vue.component("china-map", {
+ template: `
+
+ `,
+ props: {
+ data:{
+ type:Array
+ },
+ height:{
+ type:Number
+ }
+ },
+ data() {
+ return {
+ option:{}
+ }
+ },
+ mounted(){
+ this.loadMap(this.data)
+ window.chartClick = this.chartClick;
+ },
+ methods: {
+ chartClick(id){
+ this.$emit('projectid',id)
+ },
+ loadMap(outdata) {
+ var myChart = echarts.init(this.$refs.map);
+ var max =1000,
+ min = 1;
+ var maxSize4Pin = 100,
+ minSize4Pin = 20;
+ var geoCoordMap = {};
+ /*获取地图数据*/
+ var mapFeatures = echarts.getMap('china').geoJson.features;
+ // console.log(mapFeatures)
+ mapFeatures.forEach(function(v) {
+ // 地区名称
+ var name = v.properties.name;
+ // 地区经纬度
+ geoCoordMap[name] = v.properties.cp;
+ });
+
+ var convertData = function(outdata) {
+ var res = [];
+ for (var i = 0; i < outdata.length; i++) {
+ var geoCoord = geoCoordMap[outdata[i].name];
+ if (geoCoord) {
+ res.push({
+ name: outdata[i].name,
+ value: geoCoord.concat(outdata[i].count),
+ items: outdata[i].items,
+ });
+ }
+ }
+ return res;
+ };
+
+ this.option = {
+ tooltip: {
+ show: true,
+ trigger: "item",
+ enterable: true,
+ showContent: true,
+ padding:0,
+ triggerOn:'click',
+ formatter: function(params) {
+ var tipHtml = ''
+ if(params.data){
+ tipHtml += ''
+ +'
'+''+' '
+ +''+params.data.name+' (项目总数:'+params.data.value[2]+')'+' '+'
'
+ +'
'
+ for(var i=0;i
'+params.data.items[i].projectName+''
+ }
+ tipHtml += ' '
+ +'
';
+ return tipHtml
+ }
+ },
+ },
+ geo: {
+ map: 'china',
+ show: true,
+ roam: false,
+ zoom: 1.17,
+ label: {
+ emphasis: {
+ show: false,
+ }
+ },
+ layoutSize: "100%",
+ itemStyle: {
+ // normal: {
+ // areaColor: '#000', //背景颜色
+ // borderColor: '#8ac2fb', //省划分边线
+ // borderWidth: 10, //边线的粗细
+ // },
+ // emphasis: {
+ // areaColor: '#002d90' , //指上背景限色
+ // },
+ areaColor: "#86c2f8",
+ borderColor: "#86c2f8",
+ shadowColor: "#86c2f8",
+ shadowBlur: 25,
+ borderWidth: 5,
+ },
+ },
+ series: [{
+ type: 'map',
+ roam: false,
+ zoom: 1.15,
+ map: 'china', //使用
+ label: {
+ normal: {
+ show: true,
+ fontSize:14, //省会字体大小
+ textStyle: {
+ color: '#ffffff',
+ }
+ },
+ emphasis: {
+ show: false,
+ color: '#ffffff', //指上省会字体颜色
+ }
+ },
+ itemStyle: {
+ normal: {
+ areaColor: {
+ type: "radial",
+ x: 0.5,
+ y: 0.5,
+ r: 0.8,
+ colorStops: [
+ {
+ offset: 0,
+ color: "#1c2a4c", // 0% 处的颜色
+ },
+ {
+ offset: 1,
+ color: "#1f335e", // 100% 处的颜色
+ },
+ ],
+ globalCoord: true, // 缺省为 false
+ },
+ shadowColor: "rgb(58,115,192)",
+ borderColor: '#8ac2fb'
+ },
+ // normal: {
+ // areaColor: '#141e37', //背景颜色
+ // borderColor: '#8ac2fb', //省划分边线
+ // borderWidth: 1, //边线的粗细
+ // },
+ emphasis: {
+ areaColor: '#22578b' , //指上背景限色
+ textStyle: {
+ color: '#ffffff',
+
+ }
+ }
+ },
+ },
+ {
+ type: 'effectScatter',
+ coordinateSystem: 'geo',
+ rippleEffect: {
+ brushType: 'stroke'
+ },
+ showEffectOn: 'render',
+ itemStyle: {
+ normal: {
+ show: true,
+ color: {
+ type: 'radial',
+ x: 0.5,
+ y: 0.5,
+ r: 0.5,
+ colorStops: [{
+ offset: 0,
+ color: 'rgba(129,229,255,1)'
+ }, {
+ offset: 0.8,
+ color: 'rgba(129,229,255,1)'
+ }, {
+ offset: 1,
+ color: 'rgba(129,229,255,1)'
+ }],
+ global: false // 缺省为 false
+ },
+ }
+ },
+ label: {
+ normal: {
+ show: true,
+ color: '#fff',
+ fontWeight: 'bold',
+ position: 'inside',
+ formatter: function(para) {
+ return '{cnNum|' + para.data.value[2] + '}'
+ },
+ rich: {
+ cnNum: {
+ fontSize: 16,
+ color: '#000000',
+ fontWeight:'bold',
+ }
+ }
+ },
+ },
+ symbol: 'circle',
+ data: convertData(outdata),
+ zlevel: 1,
+ symbolSize: function(val) {
+ if (val[2] === 0) {
+ return 0;
+ }
+ var a = (maxSize4Pin - minSize4Pin) / (max - min);
+ var b = maxSize4Pin - a * max;
+ return a * val[2] + b * 1.2;
+ },
+ }]
+ };
+ myChart.setOption(this.option);
+ }
+ },
+ watch:{
+ data: function (n,o) {
+ this.loadMap(this.data)
+ }
+ }
+
+})
diff --git a/src/components/classify-bar.js b/src/components/classify-bar.js
new file mode 100644
index 0000000..377456b
--- /dev/null
+++ b/src/components/classify-bar.js
@@ -0,0 +1,254 @@
+import Vue from 'vue'
+Vue.component("classify-bar", {
+ template: `
+
+
+
+ `,
+ props: {
+ data:{
+ type:Array
+ },
+ height:{
+ type:Number
+ },
+ legend:{
+ type:Array
+ },
+ },
+ data() {
+ return {
+ classData:[],
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+ this.getChartData()
+ },
+ getChartData(){
+ //品类金额占比 饼图
+ var chChartPie = echarts.init(this.$refs.chart);
+ this.echartPie(chChartPie,this.data)
+ },
+ echartPie(chChart,data){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var max = data[0].total
+ var nameData = [];
+ var totalData = []
+ var background = []
+ var yesMonitor = []
+ var notMonitor = []
+ var yesProp = []
+ var notProp = []
+ var unitData = []
+
+ for (let i = data.length-1; i >=0 ; i--) {
+ nameData.push(data[i].name);
+ totalData.push(data[i].total)
+ unitData.push(data[i].unit)
+ background.push(100);
+ yesMonitor.push(data[i].yesMonitor);
+ notMonitor.push(data[i].notMonitor);
+ yesProp.push((data[i].yesMonitor/max)*100)
+ notProp.push((data[i].notMonitor/max)*100)
+ }
+
+ var legend = ["已监控", "未监控"]
+ if(this.legend){
+ legend = this.legend
+ }
+
+ this.option = {
+ grid: {
+ //图表的位置
+ top: "8%",
+ left: "3%",
+ right: "5%",
+ bottom: "-12%",
+ containLabel: true,
+ },
+ legend: {
+ right: "0",
+ top: "0",
+ //icon: "circle",
+ itemWidth: 15,
+ itemHeight:10,
+ itemGap: 8,
+ textStyle: {
+ fontSize: 12,
+ color:'#c6d9fa'
+ },
+ data: legend,
+ },
+ xAxis: [{
+ show: false,
+ },
+ //由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
+ {
+ show: false,
+ }
+ ],
+ yAxis: [
+ {
+ type: 'category',
+ axisLabel: {
+ show: false, //让Y轴数据不显示
+ },
+ itemStyle: {
+
+ },
+ axisTick: {
+ show: false, //隐藏Y轴刻度
+ },
+ axisLine: {
+ show: false, //隐藏Y轴线段
+ },
+ data: [],
+ },{
+ show: false,
+ data: [],
+ axisLine: {
+ show: false
+ }
+ }],
+ series: [
+ //数据条--------------------我是分割线君------------------------------//
+ {
+ show: true,
+ type: 'bar',
+ xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
+ barGap: '-100%',
+ barWidth: '6', //统计条宽度
+ itemStyle: {
+ normal: {
+ color: 'rgba(22,203,115,0.05)'
+ },
+ },
+ label: {
+ normal: {
+ show: true,
+ //label 的position位置可以是top bottom left,right,也可以是固定值
+ //在这里需要上下统一对齐,所以用固定值
+ position: [0, '-25'],
+ rich: { //富文本
+ prop: { //自定义颜色
+ color: '#c6d9fa',
+ fontSize:'14',
+ },
+ unit:{
+ color: '#6c829a',
+ fontSize:'12',
+ },
+ yes:{
+ color: '#55adf7',
+ fontSize:'14',
+ },
+ not:{
+ color: '#4677fa',
+ fontSize:'14',
+ },
+ index:{
+ color: '#fcbc02',
+ fontStyle: 'italic',
+ padding:[0,0,0,5],
+ fontSize:'14',
+ },
+ name: {
+ width: 200,
+ color: '#c6d9fa',
+ padding:[0,0,0,10],
+ fontSize:'14',
+ },
+ color:{
+ color: '#8ca2be',
+ fontSize:'14',
+ },
+ arrow:{
+ width:12,
+ height:8,
+ backgroundColor: {
+ image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
+ },
+ },
+
+ },
+ formatter: function(data) {
+ //富文本固定格式{colorName|这里填你想要写的内容}
+ //return '{arrow|}'
+ return '{arrow|}{index|No.'+(nameData.length-data.dataIndex)+'}{name|' + nameData[data.dataIndex] + '}{prop|' + totalData[data.dataIndex] + '}{unit| '+unitData[data.dataIndex]+'}{prop|(} {yes|'+yesMonitor[data.dataIndex]+'}{unit| '+unitData[data.dataIndex]+'/}{not|'+notMonitor[data.dataIndex]+'}{unit| '+unitData[data.dataIndex]+'}{prop|)} ';
+ },
+ }
+ },
+ data: background
+ },
+ {
+ type: 'bar',
+
+ silent: true,
+ yAxisIndex: 1,
+ barWidth: 6,
+ itemStyle: {
+ normal: {
+ color: 'rgba(0,82,198,0.3)'
+ },
+ emphasis: {
+ color: 'rgba(0,82,198,0.3)'
+ }
+ },
+ data: background
+ },
+ {
+ type: 'bar',
+ name:legend[0],
+
+ stack: '1',
+ legendHoverLink: false,
+ barWidth: 6,
+ itemStyle: {
+ normal: {
+ color: '#52adf4'
+ },
+ emphasis: {
+ color: '#52adf4'
+ }
+ },
+ data: yesProp
+ }, {
+ type: 'bar',
+ name:legend[1],
+ stack: '1',
+ legendHoverLink: false,
+ barWidth: 6,
+ itemStyle: {
+ normal: {
+ color: '#4677ff'
+ },
+ emphasis: {
+ color: '#4677ff'
+ }
+ },
+ data: notProp
+ }]
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch:{
+ data: function (n,o) {
+ this.getChartData()
+ }
+ }
+
+})
diff --git a/src/components/cz-screen.js b/src/components/cz-screen.js
new file mode 100644
index 0000000..91c7618
--- /dev/null
+++ b/src/components/cz-screen.js
@@ -0,0 +1,24 @@
+import Vue from 'vue'
+Vue.component("cz-screen", {
+ template: `
+
+ `,
+ props: {
+
+ },
+ data() {
+ return {
+
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+
+ },
+ watch:{
+
+ }
+
+})
diff --git a/src/components/environment-line-chart.js b/src/components/environment-line-chart.js
new file mode 100644
index 0000000..6803e5e
--- /dev/null
+++ b/src/components/environment-line-chart.js
@@ -0,0 +1,181 @@
+import Vue from 'vue'
+Vue.component("environment-line-chart", {
+ template: `
+
+
+
+ `,
+ props: {
+ height:{
+ type:Number
+ },
+ data:{
+ type:Array
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+ this.getChartData()
+ },
+ getChartData(){
+ //品类金额占比 饼图
+ var myChart = echarts.init(this.$refs.chart);
+ this.echartPie(myChart,this.data)
+ },
+ echartPie(myChart,datas){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+
+ var data = datas[0]
+
+ var unit = ''
+ if(data.unit){
+ unit = '单位:'+data.unit
+ }
+
+ this.option = {
+ color : data.color,
+ tooltip: {
+ trigger: "axis",
+ axisPointer: {
+ lineStyle: {
+ color: "#57617B",
+ },
+ },
+ },
+ grid: {
+ top:'15%',
+ left: "1%",
+ right: "3%",
+ bottom: "1%",
+ containLabel: true,
+ },
+ xAxis: {
+ type: "category",
+ boundaryGap: false,
+ data: data.text,
+ axisLine: {
+ //坐标轴轴线相关设置。数学上的x轴
+ show: true,
+ lineStyle: {
+ color: "#25597e",
+ type: "dashed",
+ },
+ },
+ axisTick: {
+ show: false
+ },
+
+ axisLabel: {
+ //坐标轴刻度标签的相关设置
+ textStyle: {
+ color: "#c5d9fc",
+ margin: 20,
+ fontSize:16
+ },
+ },
+ },
+ yAxis: {
+ name:unit,
+ nameTextStyle: {
+ color: '#fff',
+ fontSize: 14,
+ },
+ type: "value",
+ axisLine: {
+ //坐标轴轴线相关设置。数学上的x轴
+ show: false,
+ lineStyle: {
+ color: "#c5d9fc",
+ type: "dashed",
+ },
+ },
+ axisTick: {
+ show: false
+ },
+ axisLabel: {
+ show: true,
+ //坐标轴刻度标签的相关设置
+ textStyle: {
+ color: "#c5d9fc",
+ margin: 20,
+ fontSize:16
+ },
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "#25597e",
+ type: "dashed",
+ },
+ },
+ },
+ series: [
+ {
+ type: "line",
+ smooth: true,
+ symbol: "circle",
+ symbolSize: 5,
+ showSymbol: true,
+ lineStyle: {
+ normal: {
+ width: 2,
+ },
+ },
+ areaStyle: {
+ normal: {
+ color: new echarts.graphic.LinearGradient(
+ 0,
+ 0,
+ 0,
+ 1,
+ [
+ {
+ offset: 0,
+ color: "rgba(0,142,252, 0.3)",
+ },
+ {
+ offset: 0.8,
+ color: "rgba(0,142,252, 0)",
+ },
+ ],
+ false
+ ),
+ shadowColor: "rgba(0, 0, 0, 0.1)",
+ shadowBlur: 10,
+ },
+ },
+ itemStyle: {
+ normal: {
+ color: "rgb(0,142,252)",
+ borderColor: "rgba(0,142,252,0.27)",
+ borderWidth: 12,
+ },
+ },
+ data: data.data,
+ },
+ ]
+ };
+ myChart.setOption(this.option,true);
+ window.onresize = myChart.resize;
+ })
+ },
+ },
+ watch:{
+ data: function (val, oldVal){
+ this.init()
+ }
+ }
+
+})
diff --git a/src/components/header-btn.js b/src/components/header-btn.js
new file mode 100644
index 0000000..90a6336
--- /dev/null
+++ b/src/components/header-btn.js
@@ -0,0 +1,201 @@
+import Vue from 'vue'
+Vue.component("header-btn", {
+ template: `
+
+ `,
+ props: {
+ red:{
+ type:String
+ },
+ menu:{
+ type: Object
+ },
+ index:{
+ type: Number
+ },
+ label: {
+ type: String
+ },
+ nav: {
+ type: Number
+ },
+ list: {
+ type: Array
+ },
+ type:{
+ type:String
+ }
+ },
+ data() {
+ return {
+ show: false,
+ widths: 0,
+ btnNav: -1,
+ chooseMenu: {},
+ localStorage:{},
+ sonMenuList: []
+ }
+ },
+ mounted() {
+ this.localStorage=JSON.parse(localStorage.getItem("data1"))
+ this.filterList()
+ this.init()
+ console.log(this.red)
+ },
+ methods: {
+ init() {
+ this.width()
+ this.chooseMenu = localStorage.getItem("chooseMenu");
+ if (!this.chooseMenu) {
+ this.chooseMenu = {}
+ } else {
+ this.chooseMenu = JSON.parse(localStorage.getItem("chooseMenu"))
+ }
+
+ },
+ filterList(){
+ for(let l of this.list){
+ if(this.localStorage.type == 1 && l.menuDeptUrl){
+ this.sonMenuList.push(l)
+ }
+ if(this.localStorage.type != 1 && l.menuProjectUrl){
+ this.sonMenuList.push(l)
+ }
+ }
+ },
+ width() {
+ if (this.sonMenuList) {
+ if (this.list.length > 4) {
+ this.widths = 536
+ } else {
+ this.widths = this.sonMenuList.length * 130 + 16
+ }
+ }
+
+ },
+ buttonClick(i, item) {
+
+ this.btnNav = i
+ localStorage.setItem("chooseProcessControlMenu", i)
+/*
+ switch (item.text) {
+ case "原材料进场":
+ localStorage.setItem("chooseProcessControlMenu", 0)
+ break
+ case "标养室监测":
+ localStorage.setItem("chooseProcessControlMenu", 1)
+ break
+ case "过程验收":
+ localStorage.setItem("chooseProcessControlMenu", 2)
+ break
+ case "举牌验收":
+ localStorage.setItem("chooseProcessControlMenu", 3)
+ break
+ }*/
+ if(this.localStorage.type == 1){
+ if (item.menuDeptUrl) {
+ this.chooseMenu = {
+ mainMenu: this.nav,
+ itemMenu: i,
+ }
+ localStorage.setItem("chooseMenu", JSON.stringify(this.chooseMenu));
+ location.href = item.menuDeptUrl
+ }/* else {
+ this.$notify({
+ title: '提示',
+ message: '页面开发中,敬请期待!',
+ type: 'warning'
+ });
+ }*/
+ }else{
+ if (item.menuProjectUrl) {
+ this.chooseMenu = {
+ mainMenu: this.nav,
+ itemMenu: i,
+ }
+ localStorage.setItem("chooseMenu", JSON.stringify(this.chooseMenu));
+ location.href = item.menuProjectUrl
+ }/* else {
+ this.$notify({
+ title: '提示',
+ message: '页面开发中,敬请期待!',
+ type: 'warning'
+ });
+ }*/
+ }
+
+
+ },
+ mouseenterBtn() {
+ this.show = true
+ this.$emit('showsmallui',{"flag":true,"data":this.list,"label":this.label,"index":this.index});
+ },
+ mouseleaveBtn() {
+ this.show = false
+ this.$emit('showsmallui',{"flag":false,"data":this.list,"label":this.label,"index":this.index});
+ },
+ //页面条状
+ pageJump(n,url,itemurl){
+ // if(url){
+ // let chooseMenu = {
+ // mainMenu:n,
+ // }
+ // localStorage.setItem("chooseMenu",JSON.stringify(chooseMenu));
+ // location.href = url
+ // }
+ if(this.localStorage.type == 1){
+ if(url){
+ let chooseMenu = {
+ mainMenu:n,
+ }
+ localStorage.setItem("chooseMenu",JSON.stringify(chooseMenu));
+ location.href = url
+ }/*else{
+ this.$notify({
+ title: '提示',
+ message: '功能升级中,敬请期待!',
+ type: 'warning'
+ });
+ }*/
+ }else{
+ if(itemurl){
+ this.chooseMenu = {
+ mainMenu:n
+ }
+ localStorage.setItem("chooseMenu",JSON.stringify(this.chooseMenu));
+ location.href = itemurl
+ }/*else{
+ this.$notify({
+ title: '提示',
+ message: '功能升级中,敬请期待!',
+ type: 'warning'
+ });
+ }*/
+ }
+ },
+ },
+ watch: {
+ list: function () {
+ this.width()
+ }
+ },
+
+})
diff --git a/src/components/header.js b/src/components/header.js
new file mode 100644
index 0000000..46145c0
--- /dev/null
+++ b/src/components/header.js
@@ -0,0 +1,231 @@
+/**
+ * 顶部header
+ */
+import Vue from 'vue'
+Vue.component("screen-header", {
+ template: `
+
+
+ 北跨泾河-产发工程数字管理平台
+
+
+
项目概况
+
项目详情
+
安全管理
+
质量管理
+
进度管理
+
视频管理
+
技术管理
+
+
+
+
+
+
+
+
晴
+
11~25℃
+
+
+
+
+ `,
+ props: {
+ nav:{
+ type:Number
+ },
+ red:{
+ type:String
+ },
+ item:{
+ type:Number
+ },
+ },
+ data() {
+ return {
+ dept1:'',
+ dept2:'',
+ showSel1:false,
+ showSel2:false,
+ data:[],
+ depts:[],
+ timerID:undefined,
+ time: '',
+ date: '',
+ week:'',
+ selDept:'',
+ localStorage1: JSON.parse(localStorage.getItem("data1")),
+ localStorage2: JSON.parse(localStorage.getItem("data2")),
+ }
+ },
+ mounted(){
+ this.timerID = setInterval(this.updateTime, 1000);
+ this.updateTime();
+ this.init()
+ this.$api.dept.list().then(d=>{
+ this.depts=[{text:'产发集团',id:0},...(d?.data||[]).map(it=>{
+ it.text=it.deptName;
+ it.id=it.deptId;
+ return it;
+ })]
+ this.deptChange();
+ });
+
+ },
+ methods: {
+ init(){
+ try{
+ this.localStorage1=JSON.parse(localStorage.getItem("data1"))
+ this.localStorage2=JSON.parse(localStorage.getItem("data2"))
+ }catch(e){
+
+ }
+ if(!this.localStorage1){
+ this.localStorage1={
+
+ }
+ }
+ if(!this.localStorage2){
+ this.localStorage2={}
+ }
+ this.dept1=this.localStorage1?.text||'';
+ this.dept2=this.localStorage2?.text||'';
+ if(this.dept1){
+ this.loadProject(true);
+ }
+ },
+ deptChange(){
+ let tmps=this.depts.filter(d=>d.text==this.dept1);
+ if(tmps.length>0){
+ this.$bus.$emit("deptChange",tmps[0])
+ }
+ },
+ //页面条状
+ pageJump(n,url,itemurl){
+ if(n != this.nav){
+ if(this.localStorage1.type == 1){
+ if(url){
+ location.href = url
+ }else{
+ this.$notify({
+ title: '提示',
+ message: '页面开发中,敬请期待!',
+ type: 'warning'
+ });
+ }
+ }else{
+ if(n==5){
+ location.href = url
+ }else{
+ if(itemurl){
+ location.href = itemurl
+ }else{
+ this.$notify({
+ title: '提示',
+ message: '页面开发中,敬请期待!',
+ type: 'warning'
+ });
+ }
+ }
+ }
+ }
+
+ },
+
+
+ showScreenUlSel1(){
+ this.showSel1 = true
+
+ },
+ showScreenUlSel2(){
+ this.showSel2 = true
+
+ },
+ hideScreenUlSel1(){
+ this.showSel1 = false
+ },
+ hideScreenUlSel2(){
+ this.showSel2 = false
+ },
+ setScreenLiSel1(item){
+ localStorage.setItem("data1",JSON.stringify(item))
+ this.localStorage1=JSON.parse(localStorage.getItem("data1"))
+ this.$emit('itemdata',item);
+ this.showSel1 = false
+ this.dept1=item.text;
+ this.deptChange();
+ this.loadProject();
+ },
+ loadProject(init){
+ this.$api.project.findProjectByDept( this.localStorage1.id).then(d=>{
+ this.data=(d?.data||[]).map(it=>{
+ it.text=it.projectName;
+ return it;
+ });
+ this.$bus.$emit("loadProjects",this.data);
+ if(this.data.length>0){
+ this.setScreenLiSel2(this.data[0],init);
+ }else{
+ this.setScreenLiSel2(null);
+ }
+ });
+ },
+ setScreenLiSel2(item,init){
+ if(item){
+ this.showSel2 = false;
+ if(!init){
+ localStorage.setItem("data2",JSON.stringify(item))
+ this.localStorage2=JSON.parse(localStorage.getItem("data2"))
+ this.$emit('itemdata',item);
+ this.dept2=item.text;
+ }
+ this.$bus.$emit("projectChange",this.localStorage2);
+ }else{
+ localStorage.removeItem("data2");
+ this.localStorage2={};
+ this.showSel2 = false;
+ this.dept2='';
+ }
+ },
+
+ //时间方法
+ updateTime(){
+ var cd = new Date();
+ this.time = this.zeroPadding(cd.getHours(), 2) + ':' + this.zeroPadding(cd.getMinutes(), 2) + ':' + this.zeroPadding(cd.getSeconds(), 2);
+ this.date = this.zeroPadding(cd.getFullYear(), 4) + '年' + this.zeroPadding(cd.getMonth()+1, 2) + '月' + this.zeroPadding(cd.getDate(), 2)+'日';
+ },
+ zeroPadding(num, digit) {
+ var zero = '';
+ for(var i = 0; i < digit; i++) {
+ zero += '0';
+ }
+ return (zero + num).slice(-digit);
+ }
+
+ },
+ watch:{
+
+ }
+
+})
diff --git a/src/components/idle-list-chart.js b/src/components/idle-list-chart.js
new file mode 100644
index 0000000..568a0ff
--- /dev/null
+++ b/src/components/idle-list-chart.js
@@ -0,0 +1,133 @@
+import Vue from 'vue'
+Vue.component("idle-list-chart", {
+ template: `
+
+ `,
+ props: {
+ prop:{
+ type:Number
+ },
+ color:{
+ type:String
+ },
+ width:{
+ type:Number,
+ default:175
+ }
+ },
+ data() {
+ return {
+ option:{},
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ methods: {
+ init(){
+ this.getChartData()
+ },
+ getChartData(){
+ //品类金额占比 饼图
+ var chChart = echarts.init(this.$refs.chart);
+ this.echart(chChart,this.prop,this.color)
+ },
+ echart(chChart,data,color){
+ let newPromise = new Promise((resolve) => {
+ resolve()
+ })
+ //然后异步执行echarts的初始化函数
+ newPromise.then(() => {
+ var prop = []
+ prop.push(data)
+ this.option = {
+ grid: {
+ left: "1%",
+ right: "0%",
+ bottom: "0%",
+ top: "25",
+ containLabel: true,
+ },
+ xAxis: {
+ show: false,
+ type: "value",
+ },
+ yAxis: [
+ {
+ type: "category",
+ inverse: true,
+ axisLabel: {
+ show: false,
+ },
+ splitLine: {
+ show: false,
+ },
+ axisTick: {
+ show: false,
+ },
+ axisLine: {
+ show: false,
+ },
+ },
+ {
+ type: "category",
+ inverse: true,
+ axisTick: "none",
+ axisLine: "none",
+ show: true,
+ axisLabel: {
+ textStyle: {
+ color: "#cbdaff",
+ fontSize: "16",
+ },
+ formatter: function(params,i){
+ var text = "{a| "+ prop[i]+ "%}";
+ return text;
+ },
+ rich: {
+ a: {
+ fontSize: '14',
+ color: color,
+ },
+ },
+ },
+ data: prop,
+ },
+ ],
+ series: [
+ {
+ type: "bar",
+ zlevel: 1,
+ itemStyle: {
+ normal: {
+ color: color,
+ },
+ },
+ barWidth:8,
+ data: prop,
+ },
+ {
+ type: "bar",
+ barWidth: 10,
+ barGap: "-100%",
+ data: [100],
+ itemStyle: {
+ normal: {
+ color: "rgba(24,31,68,0.8)",
+ },
+ },
+ },
+ ],
+ };
+
+ chChart.setOption(this.option);
+ window.onresize = chChart.resize;
+ })
+ },
+ },
+ watch:{
+ prop: function (n,o) {
+ this.init()
+ }
+ }
+})
diff --git a/src/components/labour-china-map.js b/src/components/labour-china-map.js
new file mode 100644
index 0000000..9816be3
--- /dev/null
+++ b/src/components/labour-china-map.js
@@ -0,0 +1,183 @@
+import Vue from 'vue'
+Vue.component("labour-china-map", {
+ template: `
+
+ `,
+ props: {
+ data:{
+ type:Array
+ },
+ tooltip:{
+ type:Array
+ },
+ height:{
+ type:Number
+ }
+ },
+ data() {
+ return {
+ option:{},
+
+ }
+ },
+ mounted(){
+ this.loadMap(this.data,this.tooltip)
+ window.chartClick = this.chartClick;
+ },
+ methods: {
+ chartClick(id){
+ this.$emit('projectid',id)
+ },
+ loadMap(outdata,tooltip) {
+ var iconGD = "image://http://fileimg.makalu.cc/WEB_0EE6DA50925A4C27A126669209F1A5E2.png";
+ var myChart = echarts.init(this.$refs.map);
+ var geoCoordMap = {};
+ /*获取地图数据*/
+ var mapFeatures = echarts.getMap('china').geoJson.features;
+ // console.log(mapFeatures)
+ mapFeatures.forEach(function(v) {
+ // 地区名称
+ var name = v.properties.name;
+ // 地区经纬度
+ geoCoordMap[name] = v.properties.cp;
+ });
+ this.option = {
+ tooltip: {
+ show: true,
+ trigger: "item",
+ enterable: true,
+ showContent: true,
+ padding:0,
+ triggerOn:'click',
+ formatter: function(params) {
+ var tipHtml = ''
+ console.log(params.dataIndex)
+ if(params.data){
+ tipHtml = tooltip[params.dataIndex]
+ return tipHtml
+ }
+ },
+ },
+ geo: {
+ map: 'china',
+ show: true,
+ roam: true,
+ zoom: 1.17,
+ label: {
+ emphasis: {
+ show: false,
+ }
+ },
+ layoutSize: "100%",
+ itemStyle: {
+ // normal: {
+ // areaColor: '#000', //背景颜色
+ // borderColor: '#8ac2fb', //省划分边线
+ // borderWidth: 10, //边线的粗细
+ // },
+ // emphasis: {
+ // areaColor: '#002d90' , //指上背景限色
+ // },
+ areaColor: "#86c2f8",
+ borderColor: "#86c2f8",
+ shadowColor: "#86c2f8",
+ shadowBlur: 25,
+ borderWidth: 5,
+ },
+ },
+ series: [{
+ type: 'map',
+ roam: true,
+ zoom: 1.15,
+ map: 'china', //使用
+ label: {
+ normal: {
+ show: true,
+ fontSize:14, //省会字体大小
+ textStyle: {
+ color: '#ffffff',
+ }
+ },
+ emphasis: {
+ show: false,
+ color: '#ffffff', //指上省会字体颜色
+ }
+ },
+ itemStyle: {
+ normal: {
+ areaColor: {
+ type: "radial",
+ x: 0.5,
+ y: 0.5,
+ r: 0.8,
+ colorStops: [
+ {
+ offset: 0,
+ color: "#1c2a4c", // 0% 处的颜色
+ },
+ {
+ offset: 1,
+ color: "#1f335e", // 100% 处的颜色
+ },
+ ],
+ globalCoord: true, // 缺省为 false
+ },
+ shadowColor: "rgb(58,115,192)",
+ borderColor: '#8ac2fb'
+ },
+ // normal: {
+ // areaColor: '#141e37', //背景颜色
+ // borderColor: '#8ac2fb', //省划分边线
+ // borderWidth: 1, //边线的粗细
+ // },
+ emphasis: {
+ areaColor: '#22578b' , //指上背景限色
+ textStyle: {
+ color: '#ffffff',
+
+ }
+ }
+ },
+ },
+ {
+ type: 'scatter', //effectScatter 水波纹效果 scatter 无效果
+ coordinateSystem: 'geo',
+ rippleEffect: {
+ brushType: 'stroke'
+ },
+ showEffectOn: 'render',
+ itemStyle: {
+ normal: {
+ show: false,
+
+ }
+ },
+ symbolSize: 35,
+ symbol: iconGD,
+ data: outdata,
+ zlevel: 1,
+
+ }]
+ };
+ myChart.setOption(this.option);
+
+ myChart.on('georoam', function(params) {
+ var option = myChart.getOption(); //获得option对象
+ if (params.zoom != null && params.zoom != undefined) { //捕捉到缩放时
+ option.geo[0].zoom = option.series[0].zoom+0.02; //下层geo的缩放等级跟着上层的geo一起改变
+ option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
+ } else { //捕捉到拖曳时
+ option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
+ }
+ myChart.setOption(option); //设置option
+ });
+ },
+
+ },
+ watch: {
+ data: function (n,o) {
+ this.loadMap(this.data,this.tooltip)
+ window.chartClick = this.chartClick;
+ }
+ },
+})
diff --git a/src/components/labour-migrate-china-map.js b/src/components/labour-migrate-china-map.js
new file mode 100644
index 0000000..1dbe364
--- /dev/null
+++ b/src/components/labour-migrate-china-map.js
@@ -0,0 +1,311 @@
+import Vue from 'vue'
+Vue.component("labour-migrate-china-map", {
+ template: `
+
+ `,
+ props: {
+ data:{
+ type:Object
+ },
+ height:{
+ type:Number
+ }
+ },
+ data() {
+ return {
+ option:{},
+
+ }
+ },
+ mounted(){
+ this.loadMap(this.data)
+ },
+ methods: {
+ loadMap(outdata) {
+ /**
+ * Created by User on 2020/2/24.
+ */
+ var province = {
+ '黑龙江': [127.9688, 45.368],
+ '内蒙古': [110.3467, 41.4899],
+ "吉林": [125.8154, 44.2584],
+ '北京市': [116.4551, 40.2539],
+ "辽宁": [123.1238, 42.1216],
+ "河北": [114.4995, 38.1006],
+ "天津": [117.4219, 39.4189],
+ "山西": [112.3352, 37.9413],
+ "陕西": [109.1162, 34.2004],
+ "甘肃": [103.5901, 36.3043],
+ "宁夏": [106.3586, 38.1775],
+ "青海": [101.4038, 36.8207],
+ "新疆": [87.9236, 43.5883],
+ "西藏": [91.11, 29.97],
+ "四川": [103.9526, 30.7617],
+ "重庆": [108.384366, 30.439702],
+ "山东": [117.1582, 36.8701],
+ "河南": [113.4668, 34.6234],
+ "江苏": [118.8062, 31.9208],
+ "安徽": [117.29, 32.0581],
+ "湖北": [114.3896, 30.6628],
+ "浙江": [119.5313, 29.8773],
+ "福建": [119.4543, 25.9222],
+ "江西": [116.0046, 28.6633],
+ "湖南": [113.0823, 28.2568],
+ "贵州": [106.6992, 26.7682],
+ "云南": [102.9199, 25.4663],
+ "广东": [113.12244, 23.009505],
+ "广西": [108.479, 23.1152],
+ "海南": [110.3893, 19.8516],
+ '上海': [121.4648, 31.2891]
+ };
+
+ var points = []
+ var jionData=[]
+ var valueData = []
+ var names = []
+ for (let i = 0; i < outdata.chinaDatas.length; i++) {
+ var name = outdata.chinaDatas[i][0].name
+ valueData.push(outdata.chinaDatas[i][0].value)
+ names.push(outdata.chinaDatas[i][0].name)
+ points.push({
+ value:province[name],
+ })
+ jionData.push(
+ {
+ name:outdata.chinaDatas[i][0].name,
+ data:outdata.chinaDatas[i][0].value,
+ attacked:outdata.toCity,
+ coords: [
+ province[name],
+ outdata.toCityJW,
+ ],
+
+ },
+ )
+ }
+ points.push({
+ name:outdata.toCity,
+ value:outdata.toCityJW,
+ itemStyle: {
+ color: "#db8f08", //被攻击点的颜色
+ },
+ })
+
+ var myChart = echarts.init(this.$refs.map);
+ echarts.getMap('china').geoJson.features;
+ this.option = {
+ tooltip: {
+ trigger: 'item',
+ borderColor: '#FFFFCC',
+ showDelay: 0,
+ hideDelay: 0,
+ enterable: true,
+ transitionDuration: 0,
+ extraCssText: 'z-index:100',
+ formatter: function(params, ticket, callback) {
+
+ var res = "";
+ if(params.componentSubType=="effectScatter") {
+ var name = names[params.dataIndex];
+ var value = valueData[params.dataIndex];
+ if(points[points.length-1].name != params.name){
+ res = "地址:" + name+" 人数:"+value+"(人)
";
+ }else {
+ res = "地址:" + points[points.length-1].name+"
";
+ }
+ return res;
+ }else if(params.componentSubType=="lines"){
+ var name = params.data.name;
+ var value = params.data.data;
+ var toname =params.data.attacked
+ res = "地址:" + name+">"+toname+" 人数:"+value+"(人)
";
+ return res;
+ }
+ // else{
+ // var name = params.name;
+ // return name;
+ // }
+ //根据业务自己拓展要显示的内容
+ }
+ },
+ geo: {
+ map: 'china',
+ show: true,
+ roam: false,
+ zoom: 1.17,
+ label: {
+ emphasis: {
+ show: false,
+ }
+ },
+ layoutSize: "100%",
+ itemStyle: {
+ // normal: {
+ // areaColor: '#000', //背景颜色
+ // borderColor: '#8ac2fb', //省划分边线
+ // borderWidth: 10, //边线的粗细
+ // },
+ // emphasis: {
+ // areaColor: '#002d90' , //指上背景限色
+ // },
+ areaColor: "#86c2f8",
+ borderColor: "#86c2f8",
+ shadowColor: "#86c2f8",
+ shadowBlur: 25,
+ borderWidth: 5,
+ },
+ },
+ series: [
+ {
+ type: "lines",
+ zlevel: 2,
+ effect: {
+ show: true,
+ period: 4, //箭头指向速度,值越小速度越快
+ trailLength: 0.4, //特效尾迹长度[0,1]值越大,尾迹越长重
+ symbol: "arrow", //箭头图标
+ symbolSize: 10, //图标大小
+ },
+ lineStyle: {
+ normal: {
+ color: "#db8f08", //攻击线条的颜色
+ /* function (value){ //随机颜色
+
+ ['#f21347','#f3243e','#f33736','#f34131','#f34e2b',
+ '#f56321','#f56f1c','#f58414','#f58f0e','#f5a305',
+ '#e7ab0b','#dfae10','#d5b314','#c1bb1f','#b9be23',
+ '#a6c62c','#96cc34','#89d23b','#7ed741','#77d64c',
+ '#71d162','#6bcc75','#65c78b','#5fc2a0','#5abead',
+ '#52b9c7','#4fb6d2','#4ab2e5']
+ return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6);
+ }*/
+ width: 2, //线条宽度
+ opacity: 0.1, //尾迹线条透明度
+ curveness: 0.3, //尾迹线条曲直度
+ },
+ },
+ data: jionData
+ },
+ {
+ type: 'map',
+ roam: false,
+ zoom: 1.15,
+ map: 'china', //使用
+ label: {
+ normal: {
+ show: true,
+ fontSize:14, //省会字体大小
+ textStyle: {
+ color: '#eeeeee',
+ }
+ },
+ emphasis: {
+ show: false,
+ color: '#ffffff', //指上省会字体颜色
+ }
+ },
+ itemStyle: {
+ normal: {
+ areaColor: {
+ type: "radial",
+ x: 0.5,
+ y: 0.5,
+ r: 0.8,
+ colorStops: [
+ {
+ offset: 0,
+ color: "#1c2a4c", // 0% 处的颜色
+ },
+ {
+ offset: 1,
+ color: "#1f335e", // 100% 处的颜色
+ },
+ ],
+ globalCoord: true, // 缺省为 false
+ },
+ shadowColor: "rgb(58,115,192)",
+ borderColor: '#8ac2fb'
+ },
+ // normal: {
+ // areaColor: '#141e37', //背景颜色
+ // borderColor: '#8ac2fb', //省划分边线
+ // borderWidth: 1, //边线的粗细
+ // },
+ emphasis: {
+ areaColor: '#22578b' , //指上背景限色
+ textStyle: {
+ color: '#ffffff',
+
+ }
+ }
+ },
+ // points.push({
+ // name:outdata.toCity,
+ data: jionData.map(function(dataItem) {
+ return {
+ name: dataItem.name,
+ value: dataItem.data,
+ seriesName:points[points.length-1].name
+ };
+ }),
+ },
+ {
+ type: "effectScatter",
+ coordinateSystem: "geo",
+ showEffectOn: "render",
+ zlevel: 1,
+ rippleEffect: {
+ period: 15,
+ scale: 4,
+ brushType: "fill",
+ },
+ hoverAnimation: true,
+ label: {
+ normal: {
+ formatter: "{b}",
+ position: "right",
+ offset: [15, 0],
+ color: "#4575ff",
+ show: true,
+ },
+ },
+ itemStyle: {
+ normal: {
+ color: "#4575ff",
+ /* function (value){ //随机颜色
+ return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6);
+ }*/
+ shadowBlur: 10,
+ shadowColor: "#333",
+ },
+ },
+ symbolSize: 12,
+ data: points,
+ }, //地图线的动画效果
+
+
+ ],
+ };
+ myChart.setOption(this.option, true);
+
+ var currentIndex = -1;
+ var timeTicket = setInterval(function() {
+ var dataLen = jionData.length;
+ currentIndex = (currentIndex + 1) % dataLen;
+ // 显示 tooltip
+ myChart.dispatchAction({
+ type: 'showTip',
+ seriesIndex: 2,
+ dataIndex: currentIndex
+ });
+ }, 3000);
+
+ },
+
+ },
+ watch: {
+ data:function () {
+ this.loadMap(this.data)
+ }
+ },
+})
diff --git a/src/components/list-menu.js b/src/components/list-menu.js
new file mode 100644
index 0000000..9d469a2
--- /dev/null
+++ b/src/components/list-menu.js
@@ -0,0 +1,80 @@
+import Vue from 'vue'
+Vue.component("list-menu", {
+ template: `
+
+
+
+
{{item.project_abbreviation}}
+
+
+
+
+
+
+ `,
+ props: {
+ data:{
+ type:Array
+ }
+ },
+ data() {
+ return {
+ videoListData:[]
+ }
+ },
+ mounted(){
+ this.init()
+
+ },
+ methods: {
+ init(){
+ this.videoListData = this.data
+ },
+ onVideoListFor(id,item){
+ var data = this.videoListData
+ for (let i = 0; i < data.length ; i++) {
+ if(data[i].id == id){ //data[i].type == false
+ data[i].type = true
+ for (let j = 0; j